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 "cellMotionFvPatchField.H"
00027 #include <finiteVolume/fvMesh.H>
00028 #include <finiteVolume/volMesh.H>
00029 #include <OpenFOAM/pointFields.H>
00030
00031
00032
00033 namespace Foam
00034 {
00035
00036
00037
00038 template<class Type>
00039 cellMotionFvPatchField<Type>::cellMotionFvPatchField
00040 (
00041 const fvPatch& p,
00042 const DimensionedField<Type, volMesh>& iF
00043 )
00044 :
00045 fixedValueFvPatchField<Type>(p, iF)
00046 {}
00047
00048
00049 template<class Type>
00050 cellMotionFvPatchField<Type>::cellMotionFvPatchField
00051 (
00052 const cellMotionFvPatchField<Type>& ptf,
00053 const fvPatch& p,
00054 const DimensionedField<Type, volMesh>& iF,
00055 const fvPatchFieldMapper& mapper
00056 )
00057 :
00058 fixedValueFvPatchField<Type>(ptf, p, iF, mapper)
00059 {}
00060
00061
00062 template<class Type>
00063 cellMotionFvPatchField<Type>::cellMotionFvPatchField
00064 (
00065 const fvPatch& p,
00066 const DimensionedField<Type, volMesh>& iF,
00067 const dictionary& dict
00068 )
00069 :
00070 fixedValueFvPatchField<Type>(p, iF)
00071 {
00072 fvPatchField<Type>::operator=(Field<Type>("value", dict, p.size()));
00073 }
00074
00075
00076 template<class Type>
00077 cellMotionFvPatchField<Type>::cellMotionFvPatchField
00078 (
00079 const cellMotionFvPatchField<Type>& ptf
00080 )
00081 :
00082 fixedValueFvPatchField<Type>(ptf)
00083 {}
00084
00085
00086 template<class Type>
00087 cellMotionFvPatchField<Type>::cellMotionFvPatchField
00088 (
00089 const cellMotionFvPatchField<Type>& ptf,
00090 const DimensionedField<Type, volMesh>& iF
00091 )
00092 :
00093 fixedValueFvPatchField<Type>(ptf, iF)
00094 {}
00095
00096
00097
00098
00099 template<class Type>
00100 void cellMotionFvPatchField<Type>::updateCoeffs()
00101 {
00102 if (this->updated())
00103 {
00104 return;
00105 }
00106
00107 const fvPatch& p = this->patch();
00108 const polyPatch& pp = p.patch();
00109 const fvMesh& mesh = this->dimensionedInternalField().mesh();
00110 const pointField& points = mesh.points();
00111
00112 word pfName = this->dimensionedInternalField().name();
00113 pfName.replace("cell", "point");
00114
00115 const GeometricField<Type, pointPatchField, pointMesh>& pointMotion =
00116 this->db().objectRegistry::
lookupObject<GeometricField<Type, pointPatchField, pointMesh> >
00117 (
00118 pfName
00119 );
00120
00121 forAll(p, i)
00122 {
00123 this->operator[](i) = pp[i].average(points, pointMotion);
00124 }
00125
00126 fixedValueFvPatchField<Type>::updateCoeffs();
00127 }
00128
00129
00130 template<class Type>
00131 void cellMotionFvPatchField<Type>::write(Ostream& os) const
00132 {
00133 fvPatchField<Type>::write(os);
00134 this->writeEntry("value", os);
00135 }
00136
00137
00138
00139
00140 }
00141
00142
00143