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
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef blended_H
00036 #define blended_H
00037
00038 #include <finiteVolume/limitedSurfaceInterpolationScheme.H>
00039
00040
00041
00042 namespace Foam
00043 {
00044
00045
00046
00047
00048
00049 template<class Type>
00050 class blended
00051 :
00052 public limitedSurfaceInterpolationScheme<Type>
00053 {
00054
00055
00056 const scalar blendingFactor_;
00057
00058
00059
00060
00061
00062 blended(const blended&);
00063
00064
00065 void operator=(const blended&);
00066
00067
00068 public:
00069
00070
00071 TypeName("blended");
00072
00073
00074
00075
00076
00077 blended
00078 (
00079 const fvMesh& mesh,
00080 const surfaceScalarField& faceFlux,
00081 const scalar blendingFactor
00082 )
00083 :
00084 limitedSurfaceInterpolationScheme<Type>(mesh, faceFlux),
00085 blendingFactor_(blendingFactor)
00086 {}
00087
00088
00089
00090
00091 blended
00092 (
00093 const fvMesh& mesh,
00094 Istream& is
00095 )
00096 :
00097 limitedSurfaceInterpolationScheme<Type>(mesh, is),
00098 blendingFactor_(readScalar(is))
00099 {}
00100
00101
00102 blended
00103 (
00104 const fvMesh& mesh,
00105 const surfaceScalarField& faceFlux,
00106 Istream& is
00107 )
00108 :
00109 limitedSurfaceInterpolationScheme<Type>(mesh, faceFlux),
00110 blendingFactor_(readScalar(is))
00111 {}
00112
00113
00114
00115
00116
00117 virtual tmp<surfaceScalarField> limiter
00118 (
00119 const GeometricField<Type, fvPatchField, volMesh>&
00120 ) const
00121 {
00122 return tmp<surfaceScalarField>
00123 (
00124 new surfaceScalarField
00125 (
00126 IOobject
00127 (
00128 "blendedLimiter",
00129 this->mesh().time().timeName(),
00130 this->mesh()
00131 ),
00132 this->mesh(),
00133 dimensionedScalar
00134 (
00135 "blendedLimiter",
00136 dimless,
00137 1 - blendingFactor_
00138 )
00139 )
00140 );
00141 }
00142
00143
00144 virtual tmp<surfaceScalarField> weights
00145 (
00146 const GeometricField<Type, fvPatchField, volMesh>& vf
00147 ) const
00148 {
00149 return
00150 blendingFactor_*this->mesh().surfaceInterpolation::weights()
00151 + (1 - blendingFactor_)*pos(this->faceFlux_);
00152 }
00153 };
00154
00155
00156
00157
00158 }
00159
00160
00161
00162 #endif
00163
00164