43 fixedValueFvPatchScalarField(
p, iF),
46 supplyMassFlowRate_(1.0),
47 supplyTotalTemperature_(300.0),
50 plenumDensityOld_(1.0),
51 plenumTemperature_(300.0),
52 plenumTemperatureOld_(300.0),
56 inletDischargeCoefficient_(1.0),
71 fixedValueFvPatchScalarField(
p, iF,
dict),
72 gamma_(
dict.
get<scalar>(
"gamma")),
74 supplyMassFlowRate_(
dict.
get<scalar>(
"supplyMassFlowRate")),
75 supplyTotalTemperature_(
dict.
get<scalar>(
"supplyTotalTemperature")),
76 plenumVolume_(
dict.
get<scalar>(
"plenumVolume")),
77 plenumDensity_(
dict.
get<scalar>(
"plenumDensity")),
78 plenumTemperature_(
dict.
get<scalar>(
"plenumTemperature")),
81 inletAreaRatio_(
dict.
get<scalar>(
"inletAreaRatio")),
82 inletDischargeCoefficient_(
dict.
get<scalar>(
"inletDischargeCoefficient")),
83 timeScale_(
dict.getOrDefault<scalar>(
"timeScale", 0)),
84 phiName_(
dict.getOrDefault<
word>(
"phi",
"phi")),
87 hasRho_ =
dict.readIfPresent(
"rho", rho_);
99 fixedValueFvPatchScalarField(ptf,
p, iF, mapper),
102 supplyMassFlowRate_(ptf.supplyMassFlowRate_),
103 supplyTotalTemperature_(ptf.supplyTotalTemperature_),
104 plenumVolume_(ptf.plenumVolume_),
105 plenumDensity_(ptf.plenumDensity_),
106 plenumTemperature_(ptf.plenumTemperature_),
108 hasRho_(ptf.hasRho_),
109 inletAreaRatio_(ptf.inletAreaRatio_),
110 inletDischargeCoefficient_(ptf.inletDischargeCoefficient_),
111 timeScale_(ptf.timeScale_),
112 phiName_(ptf.phiName_),
122 fixedValueFvPatchScalarField(tppsf),
123 gamma_(tppsf.gamma_),
125 supplyMassFlowRate_(tppsf.supplyMassFlowRate_),
126 supplyTotalTemperature_(tppsf.supplyTotalTemperature_),
127 plenumVolume_(tppsf.plenumVolume_),
128 plenumDensity_(tppsf.plenumDensity_),
129 plenumTemperature_(tppsf.plenumTemperature_),
131 hasRho_(tppsf.hasRho_),
132 inletAreaRatio_(tppsf.inletAreaRatio_),
133 inletDischargeCoefficient_(tppsf.inletDischargeCoefficient_),
134 timeScale_(tppsf.timeScale_),
135 phiName_(tppsf.phiName_),
146 fixedValueFvPatchScalarField(tppsf, iF),
147 gamma_(tppsf.gamma_),
149 supplyMassFlowRate_(tppsf.supplyMassFlowRate_),
150 supplyTotalTemperature_(tppsf.supplyTotalTemperature_),
151 plenumVolume_(tppsf.plenumVolume_),
152 plenumDensity_(tppsf.plenumDensity_),
153 plenumTemperature_(tppsf.plenumTemperature_),
155 hasRho_(tppsf.hasRho_),
156 inletAreaRatio_(tppsf.inletAreaRatio_),
157 inletDischargeCoefficient_(tppsf.inletDischargeCoefficient_),
158 timeScale_(tppsf.timeScale_),
159 phiName_(tppsf.phiName_),
174 const fvPatchField<scalar>&
p = *
this;
175 const fvPatchField<scalar>& p_old =
178 internalField().name()
180 const fvPatchField<vector>&
U =
182 const fvsPatchField<scalar>&
phi =
186 const scalar dt = db().time().deltaTValue();
190 if (timeIndex_ != db().time().
timeIndex())
192 timeIndex_ = db().time().timeIndex();
193 plenumDensityOld_ = plenumDensity_;
194 plenumTemperatureOld_ = plenumTemperature_;
198 scalar massFlowRate(1.0);
203 massFlowRate = -
gSum(rho_*
phi);
208 <<
"The density must be specified when using a volumetric flux."
214 phi.internalField().dimensions()
221 <<
"The density must be not specified when using a mass flux."
232 <<
"dimensions of phi are not correct"
233 <<
"\n on patch " <<
patch().name()
234 <<
" of field " << internalField().name()
235 <<
" in file " << internalField().objectPath() <<
nl
240 const scalar cv = R_/(gamma_ - 1),
cp = R_*gamma_/(gamma_ - 1);
245 + (dt/plenumVolume_)*(supplyMassFlowRate_ - massFlowRate);
247 plenumTemperatureOld_
248 + (dt/(plenumDensity_*cv*plenumVolume_))
251 *(
cp*supplyTotalTemperature_ - cv*plenumTemperature_)
252 - massFlowRate*R_*plenumTemperature_
254 const scalar plenumPressure = plenumDensity_*R_*plenumTemperature_;
262 1.0 - (gamma_ - 1.0)*U_e/(2.0*gamma_*R_*plenumTemperature_)
268 (1.0 - r)/(r*r*inletDischargeCoefficient_*inletDischargeCoefficient_)
284 const scalar oneByFraction = timeScale_/dt;
285 const scalar fraction = oneByFraction < 1.0 ? 1.0 : 1.0/oneByFraction;
288 operator==((1.0 - fraction)*p_old + fraction*p_new);
289 fixedValueFvPatchScalarField::updateCoeffs();
298 os.
writeEntry(
"supplyMassFlowRate", supplyMassFlowRate_);
299 os.
writeEntry(
"supplyTotalTemperature", supplyTotalTemperature_);
308 os.
writeEntry(
"inletDischargeCoefficient", inletDischargeCoefficient_);
312 writeEntry(
"value",
os);
323 plenumPressureFvPatchScalarField