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
00036
00037 #ifndef CrankNicholsonFaDdtScheme_H
00038 #define CrankNicholsonFaDdtScheme_H
00039
00040 #include "faDdtScheme.H"
00041
00042
00043
00044 namespace Foam
00045 {
00046
00047
00048
00049 namespace fa
00050 {
00051
00052
00053
00054
00055
00056 template<class Type>
00057 class CrankNicholsonFaDdtScheme
00058 :
00059 public fa::faDdtScheme<Type>
00060 {
00061
00062
00063
00064 CrankNicholsonFaDdtScheme(const CrankNicholsonFaDdtScheme&);
00065
00066
00067 void operator=(const CrankNicholsonFaDdtScheme&);
00068
00069 template<class GeoMesh>
00070 GeometricField<Type, faPatchField, GeoMesh>& ddt0_
00071 (
00072 const word& name,
00073 const dimensionSet& dims
00074 );
00075
00076 template<class GeoMesh>
00077 bool evaluate
00078 (
00079 const GeometricField<Type, faPatchField, GeoMesh>& ddt0
00080 ) const;
00081
00082 template<class GeoMesh>
00083 dimensionedScalar rDeltaT_
00084 (
00085 const GeometricField<Type, faPatchField, GeoMesh>& ddt0
00086 ) const;
00087
00088 template<class GeoMesh>
00089 dimensionedScalar rDeltaT0_
00090 (
00091 const GeometricField<Type, faPatchField, GeoMesh>& ddt0
00092 ) const;
00093
00094
00095 public:
00096
00097
00098 TypeName("CrankNicholson");
00099
00100
00101
00102
00103
00104 CrankNicholsonFaDdtScheme(const faMesh& mesh)
00105 :
00106 faDdtScheme<Type>(mesh)
00107 {}
00108
00109
00110 CrankNicholsonFaDdtScheme(const faMesh& mesh, Istream& is)
00111 :
00112 faDdtScheme<Type>(mesh, is)
00113 {}
00114
00115
00116
00117
00118
00119 const faMesh& mesh() const
00120 {
00121 return fa::faDdtScheme<Type>::mesh();
00122 }
00123
00124 tmp<GeometricField<Type, faPatchField, areaMesh> > facDdt
00125 (
00126 const dimensioned<Type>
00127 );
00128
00129 tmp<GeometricField<Type, faPatchField, areaMesh> > facDdt0
00130 (
00131 const dimensioned<Type>
00132 );
00133
00134 tmp<GeometricField<Type, faPatchField, areaMesh> > facDdt
00135 (
00136 const GeometricField<Type, faPatchField, areaMesh>&
00137 );
00138
00139 tmp<GeometricField<Type, faPatchField, areaMesh> > facDdt0
00140 (
00141 const GeometricField<Type, faPatchField, areaMesh>&
00142 );
00143
00144 tmp<GeometricField<Type, faPatchField, edgeMesh> > facDdt0
00145 (
00146 const GeometricField<Type, faPatchField, edgeMesh>&
00147 );
00148
00149 tmp<GeometricField<Type, faPatchField, areaMesh> > facDdt
00150 (
00151 const dimensionedScalar&,
00152 const GeometricField<Type, faPatchField, areaMesh>&
00153 );
00154
00155 tmp<GeometricField<Type, faPatchField, areaMesh> > facDdt0
00156 (
00157 const dimensionedScalar&,
00158 const GeometricField<Type, faPatchField, areaMesh>&
00159 );
00160
00161 tmp<GeometricField<Type, faPatchField, areaMesh> > facDdt
00162 (
00163 const areaScalarField&,
00164 const GeometricField<Type, faPatchField, areaMesh>&
00165 );
00166
00167 tmp<GeometricField<Type, faPatchField, areaMesh> > facDdt0
00168 (
00169 const areaScalarField&,
00170 const GeometricField<Type, faPatchField, areaMesh>&
00171 );
00172
00173 tmp<faMatrix<Type> > famDdt
00174 (
00175 GeometricField<Type, faPatchField, areaMesh>&
00176 );
00177
00178 tmp<faMatrix<Type> > famDdt
00179 (
00180 const dimensionedScalar&,
00181 GeometricField<Type, faPatchField, areaMesh>&
00182 );
00183
00184 tmp<faMatrix<Type> > famDdt
00185 (
00186 const areaScalarField&,
00187 GeometricField<Type, faPatchField, areaMesh>&
00188 );
00189 };
00190
00191
00192
00193
00194 }
00195
00196
00197
00198 }
00199
00200
00201
00202 #ifdef NoRepository
00203 # include "CrankNicholsonFaDdtScheme.C"
00204 #endif
00205
00206
00207
00208 #endif
00209
00210