Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "rotatingWallVelocityFvPatchVectorField.H"
00027 #include <OpenFOAM/addToRunTimeSelectionTable.H>
00028 #include <finiteVolume/volFields.H>
00029 #include <finiteVolume/surfaceFields.H>
00030
00031
00032
00033 namespace Foam
00034 {
00035
00036
00037
00038 rotatingWallVelocityFvPatchVectorField::rotatingWallVelocityFvPatchVectorField
00039 (
00040 const fvPatch& p,
00041 const DimensionedField<vector, volMesh>& iF
00042 )
00043 :
00044 fixedValueFvPatchField<vector>(p, iF),
00045 origin_(vector::zero),
00046 axis_(vector::zero),
00047 omega_(0)
00048 {}
00049
00050
00051 rotatingWallVelocityFvPatchVectorField::rotatingWallVelocityFvPatchVectorField
00052 (
00053 const rotatingWallVelocityFvPatchVectorField& ptf,
00054 const fvPatch& p,
00055 const DimensionedField<vector, volMesh>& iF,
00056 const fvPatchFieldMapper& mapper
00057 )
00058 :
00059 fixedValueFvPatchField<vector>(ptf, p, iF, mapper),
00060 origin_(ptf.origin_),
00061 axis_(ptf.axis_),
00062 omega_(ptf.omega_)
00063 {}
00064
00065
00066 rotatingWallVelocityFvPatchVectorField::rotatingWallVelocityFvPatchVectorField
00067 (
00068 const fvPatch& p,
00069 const DimensionedField<vector, volMesh>& iF,
00070 const dictionary& dict
00071 )
00072 :
00073 fixedValueFvPatchField<vector>(p, iF),
00074 origin_(dict.lookup("origin")),
00075 axis_(dict.lookup("axis")),
00076 omega_(readScalar(dict.lookup("omega")))
00077 {
00078
00079 updateCoeffs();
00080 }
00081
00082
00083 rotatingWallVelocityFvPatchVectorField::rotatingWallVelocityFvPatchVectorField
00084 (
00085 const rotatingWallVelocityFvPatchVectorField& pivpvf
00086 )
00087 :
00088 fixedValueFvPatchField<vector>(pivpvf),
00089 origin_(pivpvf.origin_),
00090 axis_(pivpvf.axis_),
00091 omega_(pivpvf.omega_)
00092 {}
00093
00094
00095 rotatingWallVelocityFvPatchVectorField::rotatingWallVelocityFvPatchVectorField
00096 (
00097 const rotatingWallVelocityFvPatchVectorField& pivpvf,
00098 const DimensionedField<vector, volMesh>& iF
00099 )
00100 :
00101 fixedValueFvPatchField<vector>(pivpvf, iF),
00102 origin_(pivpvf.origin_),
00103 axis_(pivpvf.axis_),
00104 omega_(pivpvf.omega_)
00105 {}
00106
00107
00108
00109
00110 void rotatingWallVelocityFvPatchVectorField::updateCoeffs()
00111 {
00112 if (updated())
00113 {
00114 return;
00115 }
00116
00117
00118 vectorField Up = (-omega_)*((patch().Cf() - origin_) ^ (axis_/mag(axis_)));
00119
00120
00121
00122 vectorField n = patch().nf();
00123 vectorField::operator=(Up - n*(n & Up));
00124
00125 fixedValueFvPatchVectorField::updateCoeffs();
00126 }
00127
00128
00129 void rotatingWallVelocityFvPatchVectorField::write(Ostream& os) const
00130 {
00131 fvPatchVectorField::write(os);
00132 os.writeKeyword("origin") << origin_ << token::END_STATEMENT << nl;
00133 os.writeKeyword("axis") << axis_ << token::END_STATEMENT << nl;
00134 os.writeKeyword("omega") << omega_ << token::END_STATEMENT << nl;
00135 writeEntry("value", os);
00136 }
00137
00138
00139
00140
00141 makePatchTypeField
00142 (
00143 fvPatchVectorField,
00144 rotatingWallVelocityFvPatchVectorField
00145 );
00146
00147
00148
00149
00150 }
00151
00152