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 "phaseModel.H"
00027 #include <finiteVolume/fixedValueFvPatchFields.H>
00028 #include <finiteVolume/surfaceInterpolate.H>
00029
00030
00031
00032 Foam::phaseModel::phaseModel
00033 (
00034 const fvMesh& mesh,
00035 const dictionary& transportProperties,
00036 const word& phaseName
00037 )
00038 :
00039 dict_
00040 (
00041 transportProperties.subDict("phase" + phaseName)
00042 ),
00043 name_(phaseName),
00044 d_
00045 (
00046 dict_.lookup("d")
00047 ),
00048 nu_
00049 (
00050 dict_.lookup("nu")
00051 ),
00052 rho_
00053 (
00054 dict_.lookup("rho")
00055 ),
00056 U_
00057 (
00058 IOobject
00059 (
00060 "U" + phaseName,
00061 mesh.time().timeName(),
00062 mesh,
00063 IOobject::MUST_READ,
00064 IOobject::AUTO_WRITE
00065 ),
00066 mesh
00067 )
00068 {
00069 const word phiName = "phi" + phaseName;
00070
00071 IOobject phiHeader
00072 (
00073 phiName,
00074 mesh.time().timeName(),
00075 mesh,
00076 IOobject::NO_READ
00077 );
00078
00079 if (phiHeader.headerOk())
00080 {
00081 Info<< "Reading face flux field " << phiName << endl;
00082
00083 phiPtr_.reset
00084 (
00085 new surfaceScalarField
00086 (
00087 IOobject
00088 (
00089 phiName,
00090 mesh.time().timeName(),
00091 mesh,
00092 IOobject::MUST_READ,
00093 IOobject::AUTO_WRITE
00094 ),
00095 mesh
00096 )
00097 );
00098 }
00099 else
00100 {
00101 Info<< "Calculating face flux field " << phiName << endl;
00102
00103 wordList phiTypes
00104 (
00105 U_.boundaryField().size(),
00106 calculatedFvPatchScalarField::typeName
00107 );
00108
00109 for (label i=0; i<U_.boundaryField().size(); i++)
00110 {
00111 if (isA<fixedValueFvPatchVectorField>(U_.boundaryField()[i]))
00112 {
00113 phiTypes[i] = fixedValueFvPatchScalarField::typeName;
00114 }
00115 }
00116
00117 phiPtr_.reset
00118 (
00119 new surfaceScalarField
00120 (
00121 IOobject
00122 (
00123 phiName,
00124 mesh.time().timeName(),
00125 mesh,
00126 IOobject::NO_READ,
00127 IOobject::AUTO_WRITE
00128 ),
00129 fvc::interpolate(U_) & mesh.Sf(),
00130 phiTypes
00131 )
00132 );
00133 }
00134 }
00135
00136
00137 Foam::autoPtr<Foam::phaseModel> Foam::phaseModel::New
00138 (
00139 const fvMesh& mesh,
00140 const dictionary& transportProperties,
00141 const word& phaseName
00142 )
00143 {
00144 return autoPtr<phaseModel>
00145 (
00146 new phaseModel(mesh, transportProperties, phaseName)
00147 );
00148 }
00149
00150
00151
00152
00153 Foam::phaseModel::~phaseModel()
00154 {}
00155
00156
00157