35 #include "volFields.H"
36 #include "fixedValueFvsPatchFields.H"
40 Foam::MRFZoneListDF::MRFZoneListDF(
42 const dictionary& dict)
64 a = a || this->operator[](i).active();
67 if (warn && this->size() && !a)
69 Info <<
" No MRF zones active" << endl;
78 for (
const entry& dEntry : dict)
89 for (
const entry& dEntry : dict)
93 const word& name = dEntry.keyword();
94 const dictionary& modelDict = dEntry.dict();
96 Info <<
" creating MRF zone: " << name << endl;
121 const volVectorField&
U)
const
123 tmp<volVectorField> tacceleration(
126 "MRFZoneListDF:acceleration",
127 U.mesh().time().timeName(),
130 dimensionedVector(
U.dimensions() / dimTime, Zero)));
131 volVectorField& acceleration = tacceleration.ref();
135 operator[](i).addCoriolis(
U, acceleration);
138 return tacceleration;
142 const volScalarField&
rho,
143 const volVectorField&
U)
const
152 operator[](i).makeRelative(
U);
160 operator[](i).makeRelative(
phi);
165 const tmp<surfaceScalarField>& tphi)
const
169 <<
"This is unexpected!"
171 return tmp<surfaceScalarField>(tphi,
true);
174 Foam::tmp<Foam::FieldField<Foam::fvsPatchField, Foam::scalar>>
176 const tmp<FieldField<fvsPatchField, scalar>>& tphi)
const
180 <<
"This is unexpected!"
182 return tmp<FieldField<fvsPatchField, scalar>>(tphi,
true);
185 Foam::tmp<Foam::Field<Foam::scalar>>
187 const tmp<Field<scalar>>& tphi,
188 const label patchi)
const
192 <<
"This is unexpected!"
194 return tmp<Field<scalar>>(tphi,
true);
198 const surfaceScalarField&
rho,
199 surfaceScalarField&
phi)
const
203 operator[](i).makeRelative(
rho,
phi);
211 operator[](i).correctBoundaryVelocity(
U);
226 <<
"Do not support more than one MRF zones!"
230 return operator[](0).getOmegaRef();