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 #ifndef averagingModel_H
00033 #define averagingModel_H
00034
00035 #include "fvCFD.H"
00036 #include "cfdemCloud.H"
00037 #include "dataExchangeModel.H"
00038
00039
00040 namespace Foam
00041 {
00042
00043
00044
00045
00046
00047 class averagingModel
00048 {
00049
00050 protected:
00051
00052
00053 const dictionary& dict_;
00054
00055 cfdemCloud& particleCloud_;
00056
00057 mutable volScalarField UsWeightField_;
00058
00059 mutable volVectorField UsPrev_;
00060
00061 mutable volVectorField UsNext_;
00062
00063
00064
00065 public:
00066
00067
00068 TypeName("averagingModel");
00069
00070
00071
00072 declareRunTimeSelectionTable
00073 (
00074 autoPtr,
00075 averagingModel,
00076 dictionary,
00077 (
00078 const dictionary& dict,
00079 cfdemCloud& sm
00080 ),
00081 (dict,sm)
00082 );
00083
00084
00085
00086
00087
00088 averagingModel
00089 (
00090 const dictionary& dict,
00091 cfdemCloud& sm
00092 );
00093
00094
00095
00096
00097 virtual ~averagingModel();
00098
00099
00100
00101
00102 static autoPtr<averagingModel> New
00103 (
00104 const dictionary& dict,
00105 cfdemCloud& sm
00106 );
00107
00108
00109
00110 virtual void setScalarAverage
00111 (
00112 volScalarField& field,
00113 double**& value,
00114 double**& weight,
00115 volScalarField& weightField,
00116 double**const& mask
00117 ) const = 0;
00118
00119 virtual void setVectorAverage
00120 (
00121 volVectorField& field,
00122 double**& value,
00123 double**& weight,
00124 volScalarField& weightField,
00125 double**const& mask
00126 ) const = 0;
00127
00128 void undoVectorAverage
00129 (
00130 volVectorField& fieldPrev,
00131 volVectorField& fieldNext,
00132 volScalarField& weightField,
00133 double** const& value,
00134 double** const& weight,
00135 double**const& mask,
00136 bool single=false
00137 ) const;
00138
00139 void undoVectorSum
00140 (
00141 volVectorField& field,
00142 double** const& value,
00143 double** const& weight,
00144 double**const& mask
00145 ) const;
00146
00147
00148 void setVectorSum
00149 (
00150 volVectorField& field,
00151 double**& value,
00152 double**& weight,
00153 double**const& mask
00154 ) const;
00155
00156 void setScalarSum
00157 (
00158 volScalarField& field,
00159 double**& value,
00160 double**const& weight,
00161 double**const& mask
00162 ) const;
00163
00164 void resetVectorAverage(volVectorField& prev,volVectorField& next,bool single=false) const;
00165
00166 void resetWeightFields() const;
00167
00168 void undoWeightFields(double**const&) const;
00169
00170 tmp<volVectorField> UsInterp() const;
00171
00172
00173 inline volVectorField& UsPrev() const {return UsPrev_;};
00174
00175 inline volVectorField& UsNext() const {return UsNext_;};
00176
00177 inline volScalarField& UsWeightField() const {return UsWeightField_;};
00178
00179 };
00180
00181
00182
00183
00184 }
00185
00186
00187
00188 #endif
00189
00190