24 const word functionName)
34 mesh.time().timeName(),
37 IOobject::AUTO_WRITE),
39 dimensionedScalar(
"wallHeatFlux", dimensionSet(0, 0, 0, 0, 0, 0, 0), 0.0),
47 FatalErrorIn(
" ") <<
"wallDistanceMethod: "
49 <<
" Options are: default and daCustom."
62 IOdictionary transportProperties(
64 "transportProperties",
65 mesh.time().constant(),
73 Cp_ = readScalar(transportProperties.lookup(
"Cp"));
76 wallHeatFlux_.dimensions().reset(dimensionSet(1, -2, 1, 1, 0, 0, 0));
80 wallHeatFlux_.dimensions().reset(dimensionSet(1, 0, -3, 0, 0, 0, 0));
86 IOdictionary solidProperties(
89 mesh.time().constant(),
97 k_ = readScalar(solidProperties.lookup(
"k"));
100 wallHeatFlux_.dimensions().reset(dimensionSet(1, -2, 1, 1, 0, 0, 0));
132 scalar functionValue = 0.0;
134 volScalarField::Boundary& wallHeatFluxBf =
wallHeatFlux_.boundaryFieldRef();
145 const objectRegistry& db =
mesh_.thisDb();
146 const volScalarField&
T = db.lookupObject<volScalarField>(
"T");
148 const volScalarField::Boundary& TBf =
T.boundaryField();
149 const volScalarField::Boundary& alphaEffBf =
alphaEff.boundaryField();
151 forAll(wallHeatFluxBf, patchI)
153 if (!wallHeatFluxBf[patchI].coupled())
158 wallHeatFluxBf[patchI] =
Cp_ * alphaEffBf[patchI] * TBf[patchI].snGrad();
163 forAll(wallHeatFluxBf[patchI], faceI)
165 scalar T2 = TBf[patchI][faceI];
166 label nearWallCellIndex =
mesh_.boundaryMesh()[patchI].faceCells()[faceI];
167 scalar T1 =
T[nearWallCellIndex];
168 vector c1 =
mesh_.Cf().boundaryField()[patchI][faceI];
169 vector c2 =
mesh_.C()[nearWallCellIndex];
170 scalar d = mag(c1 - c2);
171 scalar dTdz = (T2 - T1) / d;
172 wallHeatFluxBf[patchI][faceI] =
Cp_ * alphaEffBf[patchI][faceI] * dTdz;
181 fluidThermo&
thermo =
const_cast<fluidThermo&
>(
182 mesh_.thisDb().lookupObject<fluidThermo>(
"thermophysicalProperties"));
184 const volScalarField::Boundary& heBf =
he.boundaryField();
186 const volScalarField::Boundary& alphaEffBf =
alphaEff.boundaryField();
188 forAll(wallHeatFluxBf, patchI)
190 if (!wallHeatFluxBf[patchI].coupled())
195 wallHeatFluxBf[patchI] = alphaEffBf[patchI] * heBf[patchI].snGrad();
200 forAll(wallHeatFluxBf[patchI], faceI)
202 scalar He2 = heBf[patchI][faceI];
203 label nearWallCellIndex =
mesh_.boundaryMesh()[patchI].faceCells()[faceI];
204 scalar He1 =
he[nearWallCellIndex];
205 vector c1 =
mesh_.Cf().boundaryField()[patchI][faceI];
206 vector c2 =
mesh_.C()[nearWallCellIndex];
207 scalar d = mag(c1 - c2);
208 scalar dHedz = (He2 - He1) / d;
209 wallHeatFluxBf[patchI][faceI] = alphaEffBf[patchI][faceI] * dHedz;
220 const objectRegistry& db =
mesh_.thisDb();
221 const volScalarField&
T = db.lookupObject<volScalarField>(
"T");
222 const volScalarField::Boundary& TBf =
T.boundaryField();
224 forAll(wallHeatFluxBf, patchI)
226 if (!wallHeatFluxBf[patchI].coupled())
232 wallHeatFluxBf[patchI] =
k_ * TBf[patchI].snGrad();
237 forAll(wallHeatFluxBf[patchI], faceI)
239 scalar T2 = TBf[patchI][faceI];
240 label nearWallCellIndex =
mesh_.boundaryMesh()[patchI].faceCells()[faceI];
241 scalar T1 =
T[nearWallCellIndex];
242 vector c1 =
mesh_.Cf().boundaryField()[patchI][faceI];
243 vector c2 =
mesh_.C()[nearWallCellIndex];
244 scalar d = mag(c1 - c2);
245 scalar dTdz = (T2 - T1) / d;
246 wallHeatFluxBf[patchI][faceI] =
k_ * dTdz;
261 scalar area =
mesh_.magSf().boundaryField()[patchI][faceI];
271 val =
scale_ * wallHeatFluxBf[patchI][faceI] * area;
276 FatalErrorIn(
" ") <<
"byUnitArea: "
278 <<
" Options are: True (default) and False."
279 << abort(FatalError);
283 functionValue += val;
287 reduce(functionValue, sumOp<scalar>());
292 return functionValue;