141 const fvPatch& patch = omegab.patch();
144 const label patchi = patch.index();
161 return tzeroFirstCell;
169 word scheme(
"coeffsDiff");
187 const scalarField kSnGrad(
k().boundaryField()[pI].snGrad());
190 omega().boundaryField()[pI].snGrad()
194 const vectorField USnGrad(
U.boundaryField()[pI].snGrad());
202 -
ka()[cI]*akb[fI]*kSnGrad[fI]
203 - (Ua[cI] & (USnGrad[fI] + (
dev2(gradUb[fI]) & nf[fI])));
262 - scalar(2)*arg2*(1 -
F2*
F2)*
287 case_2_nut*scalar(2)*arg2*(1 -
F2*
F2)
321 word scheme(
"coeffsDiff");
334 typedef fixedValueFvPatchScalarField fixedValue;
335 typedef zeroGradientFvPatchScalarField zeroGrad;
382 dRdF1b = dRdF1b.patchInternalField();
386 dRdF1 += dR_dF1_coeffs;
597 const word& schemeName
632 const word& schemeName
654 flux.boundaryFieldRef()[pI] =
Zero;
667 const word& schemeName
686 flux.boundaryFieldRef()[pI] =
Zero;
703 fluxTranspose.boundaryFieldRef()[pI] = Uai*Sfb;
707 const DimensionedField<scalar, volMesh>&
V =
mesh_.V();
716 dev2(
gradU_.boundaryField()[pI].patchInternalField())
722 const label celli = faceCells[fI];
723 M[celli] -= ((Uai[fI] & dev2GradU[fI]) & Sfb[fI])/V[celli];
727 M.correctBoundaryConditions();
820 flux.boundaryFieldRef()[pI] =
822 & GbyNuMult().boundaryField()[pI].patchInternalField();
850 flux.boundaryFieldRef()[pI] =
852 *divUMult().boundaryField()[pI].patchInternalField();
903 M.correctBoundaryConditions();
923 &
M.boundaryField()[pI].patchInternalField();
965 const scalar Cmu = wallCoeffs.
Cmu();
966 const scalar kappa = wallCoeffs.
kappa();
967 const scalar E = wallCoeffs.
E();
968 const scalar yPlusLam = wallCoeffs.
yPlusLam();
970 const scalar Cmu25 =
pow025(Cmu);
974 dR_dnut.boundaryField()[patchi];
976 bool addTermsFromOmegaWallFuction
986 const scalar sqrtkCell(
sqrt(
k[celli]));
987 const scalar
yPlus = Cmu25*
y[facei]*sqrtkCell/nuw[facei];
988 const scalar logEyPlus =
log(E*
yPlus);
989 const scalar dnut_dyPlus =
990 nuw[facei]*kappa*(logEyPlus - 1)/
sqr(logEyPlus);
991 const scalar dyPlus_dk =
992 Cmu25*
y[facei]/(2*nuw[facei]*sqrtkCell);
993 const scalar
dnut_dk = dnut_dyPlus*dyPlus_dk;
995 if (yPlusLam <
yPlus)
998 source[celli] -= dR_dnutw[facei]*
dnut_dk*magSf[facei];
1000 if (addTermsFromOmegaWallFuction)
1002 const scalar denom(Cmu25*kappa*
y[facei]);
1003 const scalar omegaLog(sqrtkCell/denom);
1006 wa[celli]*omegaLog/
omega[celli]
1007 /(2*sqrtkCell*denom);
1013 (nutWall[facei] + nuw[facei])
1016 /(2.0*sqrtkCell*kappa*
y[facei])
1019 if (yPlusLam <
yPlus)
1039 Info<<
"Updating primal-based fields of the adjoint turbulence "
1040 <<
"model ..." <<
endl;
1065 mesh_.time().timeName(),
1184 word divEntry(
"div(" + phiInst.
name() +
',' + varName +
')');
1188 word discarded(divScheme);
1189 if (discarded ==
"bounded")
1191 discarded =
word(divScheme);
1199adjointkOmegaSST::adjointkOmegaSST
1204 const word& adjointTurbulenceModelName,
1205 const word& modelName
1214 adjointTurbulenceModelName
1344 y_(primalVars_.RASModelVariables()().d()),
1364 "rasModel::gradOmega",
1417 "adjointRASModel::GbyNu0",
1692 zeroFirstCell_(zeroFirstCell()),
1907 "adjointMeanFlowSource" +
type(),
1935 twoSymmGradU.clear();
1961 nutMeanFlowSourceMult,
1988 const scalar Cmu = wallCoeffs.
Cmu();
1989 const scalar kappa = wallCoeffs.
kappa();
1990 const scalar Cmu25 =
pow025(Cmu);
1997 const scalarField& deltaCoeffs = patch.deltaCoeffs();
2002 meanFlowSource[celli] +=
2004 *(nutw[facei] + nuw[facei])
2005 *snGradUw[facei].normalise()
2006 *Cmu25*
sqrt(
k()[celli])
2012 return tmeanFlowSource;
2021 tmp<volScalarField> S2
2082 return dnut_domega(
F2, S, case_1_nut, case_2_nut, case_3_nut);
2113 alphaK_.boundaryField()[patchI]*
nutRef().boundaryField()[patchI]
2114 +
nu()().boundaryField()[patchI]
2124 +
nu()().boundaryField()[patchI]
2170 waEqn.ref().relax();
2176 waEqn.ref().solve();
2195 kaEqn.ref().
relax();
2202 kaEqn.ref().
solve();
2228 wallShapeSens[patchi] = nf & FITerm.boundaryField()[patchi];
2230 return wallShapeSens;
2246 "adjointEikonalSource" +
type(),
2290 type() +
"FISensTerm",
2347 const word& designVarsName
2355 (
k().primitiveField()*
ka().primitiveField());
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
static tmp< GeometricField< scalar, fvPatchField, volMesh > > New(const word &name, IOobjectOption::registerOption regOpt, const Mesh &mesh, const dimensionSet &dims, const word &patchFieldType=fvPatchField< scalar >::calculatedType())
DimensionedField< scalar, volMesh > Internal
Boundary & boundaryFieldRef(const bool updateAccessTime=true)
Return a reference to the boundary field.
const Internal::FieldType & primitiveField() const noexcept
Return a const-reference to the internal field values.
void correctBoundaryConditions()
Correct boundary field.
const Boundary & boundaryField() const noexcept
Return const-reference to the boundary field.
@ NO_REGISTER
Do not request registration (bool: false).
@ NO_READ
Nothing to be read.
@ NO_WRITE
Ignore writing from objectRegistry::writeObject().
Defines the attributes of an object for which implicit objectRegistry management is supported,...
const word & name() const noexcept
Return the object name.
static word scopedName(const std::string &scope, const word &name)
Create scope:name or scope_name string.
An input stream of tokens.
void setSize(label n)
Alias for resize().
void resize(const label len)
Adjust allocated size of list.
A simple wrapper around bool so that it can be read as a word: true/false, on/off,...
bool readIfPresent(const word &key, const dictionary &dict)
Update the value of the Switch if it is found in the dictionary.
static word timeName(const scalar t, const int precision=precision_)
Return a time name for the given scalar time value formatted with the given precision.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
const word & name() const
Name function is needed to disambiguate those inherited from regIOobject and dictionary.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
dictionary()
Default construct, a top-level empty dictionary.
Generic dimensioned Type class.
bool readIfPresent(const dictionary &dict)
Update the value of dimensioned<Type> if found in the dictionary, lookup in dictionary with the name(...
const Type & value() const noexcept
Return const reference to value.
Smooth ATC in cells next to a set of patches supplied by type.
void relax(const scalar alpha)
Relax matrix (for steady-state solution).
SolverPerformance< Type > solve(const dictionary &)
Solve returning the solution statistics.
void boundaryManipulate(typename GeometricField< Type, fvPatchField, volMesh >::Boundary &values)
Manipulate based on a boundary field.
Field< Type > & source() noexcept
const DimensionedField< scalar, volMesh > & V() const
Return cell volumes.
const Time & time() const
Return the top-level database.
const surfaceVectorField & Sf() const
Return cell face area vectors.
const fvBoundaryMesh & boundary() const noexcept
Return reference to boundary mesh.
const surfaceScalarField & magSf() const
Return cell face area magnitudes.
static const word & zeroGradientType() noexcept
The type name for zeroGradient patch fields.
virtual tmp< Field< Type > > patchInternalField() const
Return internal field next to patch.
virtual tmp< Field< Type > > snGrad() const
Return patch-normal gradient.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Finite-volume options, which is an IOdictionary of values and a fv::optionList.
static options & New(const fvMesh &mesh)
Construct fvOptions and register to database if not present otherwise lookup and return.
Manages the adjoint mean flow fields and their mean values.
const volVectorField & UaInst() const
Return const reference to velocity.
const solverControl & getSolverControl() const
Return const reference to solverControl.
Abstract base class for incompressible turbulence models.
dictionary coeffDict_
Model coefficients dictionary.
bool includeDistance_
Does the turbulence model include distances and should the adjoint to the distance field be computed.
autoPtr< boundaryVectorField > wallShapeSensitivitiesPtr_
Wall sensitivity term for shape optimisation.
virtual void correct()
Solve the adjoint turbulence equations.
Switch adjointTurbulence_
Turbulence on/off flag.
bool changedPrimalSolution_
Has the primal solution changed?
autoPtr< boundaryVectorField > adjMomentumBCSourcePtr_
Source to the adjoint momentum BC emerging from differentiating the turbulence model.
const nearWallDist & y() const
Return the near wall distances.
autoPtr< volScalarField > adjointTMVariable1Ptr_
Adjoint turbulence model variable 1.
autoPtr< volScalarField > adjointTMVariable2Ptr_
Adjoint turbulence model variable 2.
objectiveManager & objectiveManager_
Reference to the objectiveManager.
wordList adjointTMVariablesBaseNames_
Base names of the adjoint fields.
autoPtr< boundaryVectorField > wallFloCoSensitivitiesPtr_
Wall sensitivity term for flow control optimisation.
const dictionary & coeffDict() const
Const access to the coefficients dictionary.
void setMeanFields()
Set mean fields.
virtual bool read()
Read adjointRASProperties dictionary.
Continuous adjoint to the kOmegaSST turbulence model for incompressible flows.
virtual tmp< fvVectorMatrix > divDevReff(volVectorField &U) const
Return the transpose part of the adjoint momentum stresses.
virtual tmp< scalarField > diffusionCoeffVar1(label patchI) const
Diffusion coeff at the boundary for k.
virtual tmp< volScalarField > nutJacobianTMVar2() const
Jacobian of nut wrt to omega.
tmp< volScalarField > dGPrime_domega() const
GbyNu Jacobian wrt omega.
tmp< volVectorField > GMeanFlowSource(tmp< volSymmTensorField > &GbyNuMult) const
Contributions from the G.
virtual tmp< volTensorField > FISensitivityTerm()
Sensitivity derivative contributions when using the FI approach.
tmp< volVectorField > dF1_dGradK(const volScalarField &arg1) const
F1 Jacobian wrt grad(k).
volScalarField case_1_F1_
tmp< volScalarField > dR_dF1() const
Derivative of the primal equations wrt F1.
tmp< volScalarField > dF1_dk(const volScalarField &arg1) const
F1 Jacobian wrt k (no contributions from grad(k)).
tmp< volScalarField > dGPrime_dk() const
GbyNu Jacobian wrt k.
tmp< volVectorField > convectionMeanFlowSource(const volScalarField &primalField, const volScalarField &adjointField) const
Contributions from the turbulence model convection terms.
Switch F3_
Flag to include the F3 term.
tmp< surfaceInterpolationScheme< Type > > interpolationScheme(const word &schemeName) const
Return the requested interpolation scheme if it exists, otherwise return a reverseLinear scheme.
tmp< volScalarField > dF2_dk(const volScalarField &F2, const volScalarField &case_2_nut) const
F2 Jacobian wrt k.
dimensionedScalar alphaOmega2_
virtual void correct()
Solve the adjoint turbulence equations.
volScalarField DkEff_
Diffusivity of the k equation.
virtual tmp< volScalarField > F2() const
dimensionedScalar gamma2_
volScalarField S2_
Primal cached fields involved in the solution of the.
tmp< volScalarField > dNutdbMult(const volScalarField &primalField, const volScalarField &adjointField, const volScalarField &coeffField, const volScalarField &bcField, const word &schemeName) const
Term multiplying dnut/db, coming from the turbulence model.
volScalarField case_2_nut_
tmp< fvScalarMatrix > waEqnSourceFromCDkOmega() const
Source to waEqn from the differentiation of CDkOmega.
volScalarField alphaOmega_
tmp< volScalarField > kaEqnSourceFromF1() const
Source to kaEqn from the differentiation of F1.
tmp< volScalarField > dR_dnut()
Derivative of the primal equations wrt nut.
virtual tmp< volScalarField > F1() const
void updatePrimalRelatedFields()
Update of the primal cached fields.
virtual const boundaryVectorField & adjointMomentumBCSource() const
Source for the outlet adjoint momentum BC coming from differentiating the turbulence model.
tmp< surfaceInterpolationScheme< scalar > > convectionScheme(const word &varName) const
Return the interpolation scheme used by the primal convection term of the equation corresponding to t...
virtual tmp< volSymmTensorField > devReff() const
Return the effective stress tensor including the laminar stress.
volScalarField case_3_nut_
virtual void nullify()
Nullify all adjoint turbulence model fields and their old times.
volScalarField CDkOmegaPlus_
volScalarField zeroFirstCell_
virtual tmp< volScalarField > nutJacobianTMVar1() const
Jacobian of nut wrt to k.
tmp< volScalarField > dnut_dk(const volScalarField &F2, const volScalarField &S, const volScalarField &case_2_nut) const
Nut Jacobian wrt k.
tmp< volScalarField > zeroFirstCell()
volTensorField gradU_
Cached primal gradient fields.
volScalarField case_3_F1_
volScalarField DOmegaEff_
Diffusivity of the omega equation.
virtual tmp< volScalarField > GbyNu(const volScalarField &GbyNu0, const volScalarField &F2, const volScalarField &S2) const
const volScalarField & k() const
tmp< volScalarField > alphaK(const volScalarField &F1) const
tmp< volScalarField > diffusionNutMeanFlowMult(const volScalarField &primalField, const volScalarField &adjointField, const volScalarField &coeffField) const
Contributions from nut(U), in the diffusion coefficients of the turbulence model.
virtual const boundaryVectorField & wallShapeSensitivities()
Sensitivity derivative contributions when using the (E)SI approach.
tmp< volVectorField > nutMeanFlowSource(tmp< volScalarField > &mult, const volScalarField &F2, const volScalarField &S, const volScalarField &case_1_nut, const volTensorField &gradU) const
Contributions from nut(U).
dimensionedScalar alphaK2_
const volScalarField & y_
Wall distance.
tmp< volScalarField > DomegaEff(const volScalarField &F1) const
Return the effective diffusivity for omega.
volScalarField case_2_F1_
tmp< volScalarField > alphaOmega(const volScalarField &F1) const
void addWallFunctionTerms(fvScalarMatrix &kaEqn, const volScalarField &dR_dnut)
Contributions from the differentiation of k existing in nutkWallFunction.
tmp< volScalarField > waEqnSourceFromF1() const
Source to waEqn from the differentiation of F1.
volScalarField case_1_GPrime_
virtual tmp< volVectorField > adjointMeanFlowSource()
Source term added to the adjoint mean flow due to the differentiation of the turbulence model.
volScalarField case_1_Pk_
Switch fields for the production in the k Eqn.
tmp< volScalarField::Internal > beta(const volScalarField::Internal &F1) const
virtual const boundaryVectorField & wallFloCoSensitivities()
Sensitivity terms for flow control, emerging from the turbulence model differentiation.
virtual tmp< volVectorField > nonConservativeMomentumSource() const
Non-conservative part of the terms added to the mean flow equations.
volScalarField case_2_Pk_
dimensionedScalar alphaK1_
volScalarField dnut_domega_
Nut Jacobian w.r.t. omega.
tmp< volScalarField > kaEqnSourceFromCDkOmega() const
Source to kaEqn from the differentiation of CDkOmega.
tmp< volScalarField > coeffsDifferentiation(const volScalarField &primalField, const volScalarField &adjointField, const word &schemeName) const
Differentiation of the turbulence model diffusion coefficients.
virtual tmp< volScalarField > distanceSensitivities()
Contributions to the adjoint eikonal equation (zero for now).
volScalarField case_4_F1_
dimensionedScalar alphaOmega1_
virtual tmp< volVectorField > nutJacobianU(tmp< volScalarField > &dNutdUMult) const
Jacobian of nut wrt the flow velocity.
const volScalarField & nutRef() const
virtual tmp< scalarField > diffusionCoeffVar2(label patchI) const
Diffusion coeff at the boundary for omega.
volScalarField dnut_dk_
Nut Jacobian w.r.t. k.
tmp< volVectorField > divUMeanFlowSource(tmp< volScalarField > &divUMult) const
Contributions from the divU.
dimensionedScalar gamma1_
volScalarField case_2_GPrime_
tmp< volVectorField > dF1_dGradOmega(const volScalarField &arg1) const
F1 Jacobian wrt grad(omega).
volScalarField case_3_Pk_
tmp< volScalarField > dnut_domega(const volScalarField &F2, const volScalarField &S, const volScalarField &case_1_nut, const volScalarField &case_2_nut, const volScalarField &case_3_nut) const
Nut Jacobian wrt omega.
virtual tmp< scalarField > topologySensitivities(const word &designVarsName) const
Term contributing to the computation of topology optimisation sensitivities.
volVectorField gradOmega_
volScalarField case_1_nut_
tmp< volScalarField > DkEff(const volScalarField &F1) const
Return the effective diffusivity for k.
dimensionedScalar betaStar_
tmp< volScalarField > dF1_domega(const volScalarField &arg1) const
F1 Jacobian wrt omega (no contributions from grad(omega)).
virtual bool read()
Read adjointRASProperties dictionary.
const volScalarField & omega() const
tmp< volScalarField > dF2_domega(const volScalarField &F2, const volScalarField &case_2_nut, const volScalarField &case_3_nut) const
F2 Jacobian wrt omega.
virtual tmp< volScalarField > nuEff() const
Return the effective viscosity.
incompressibleAdjointMeanFlowVars & adjointVars_
tmp< volScalarField > nu() const
Return the laminar viscosity.
virtual const tmp< volScalarField > nut() const
Return the turbulence viscosity.
incompressibleVars & primalVars_
Base class for solution control classes.
const volVectorField & U() const
Return const reference to velocity.
const surfaceScalarField & phi() const
Return const reference to volume flux.
const surfaceScalarField & phiInst() const
Return const reference to volume flux.
const autoPtr< incompressible::turbulenceModel > & turbulence() const
Return const reference to the turbulence model.
const autoPtr< incompressible::RASModelVariables > & RASModelVariables() const
Return const reference to the turbulence model variables.
Central-differencing interpolation scheme class.
The class nutWallFunction is an abstract base class that hosts calculation methods and common functi...
const wallFunctionCoefficients & wallCoeffs() const noexcept
Return wallFunctionCoefficients.
Class for managing objective functions.
virtual void addSource(fvVectorMatrix &matrix)
Add contribution to adjoint momentum PDEs.
This boundary condition provides a wall function for the specific dissipation rate (i....
A class representing the concept of 1 (one) that can be used to avoid manipulating objects known to b...
label nCells() const noexcept
Number of mesh cells.
Inversed weight central-differencing interpolation scheme class.
ITstream & divScheme(const word &name) const
Get div scheme for given name, or default.
static void postProcessSens(scalarField &sens, scalarField &auxSens, fv::options &fvOptions, const word &fieldName, const word &designVariablesName)
Add part of the sensitivities coming from fvOptions.
bool printMaxMags() const
Print max mags of solver fields.
static tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > interpolate(const GeometricField< Type, fvPatchField, volMesh > &, const tmp< surfaceScalarField > &, const tmp< surfaceScalarField > &)
Return the face-interpolate of the given cell field.
static tmp< surfaceInterpolationScheme< Type > > New(const fvMesh &mesh, Istream &schemeData)
Return new tmp interpolation scheme.
A class for managing temporary objects.
void clear() const noexcept
If object pointer points to valid object: delete object and set pointer to nullptr.
static tmp< T > New(Args &&... args)
Construct tmp with forwarding arguments.
T & ref() const
Return non-const reference to the contents of a non-null managed pointer.
static void setField(autoPtr< GeometricField< Type, fvPatchField, volMesh > > &fieldPtr, const fvMesh &mesh, const word &baseName, const word &solverName, const bool useSolverNameForFields)
Read vol fields.
const word & solverName() const
Return solver name.
bool useSolverNameForFields() const
Append solver name to fields?
static void nullifyField(GeometricField< Type, PatchField, GeoMesh > &fieldPtr)
Nullify field and old times, if present.
Class to host the wall-function coefficients being used in the wall function boundary conditions.
scalar kappa() const noexcept
Return the object: kappa.
scalar E() const noexcept
Return the object: E.
scalar yPlusLam() const noexcept
Return the object: yPlusLam.
scalar Cmu() const noexcept
Return the object: Cmu.
A class for handling words, derived from Foam::string.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
const expr V(m.psi().mesh().V())
const dimensionedScalar G
Newtonian constant of gravitation.
tmp< GeometricField< typename outerProduct< vector, Type >::type, fvPatchField, volMesh > > grad(const GeometricField< Type, fvsPatchField, surfaceMesh > &ssf)
tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > snGrad(const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
tmp< GeometricField< Type, fvPatchField, volMesh > > div(const GeometricField< Type, fvsPatchField, surfaceMesh > &ssf)
tmp< surfaceScalarField > absolute(const tmp< surfaceScalarField > &tphi, const volVectorField &U)
Return the given relative flux in absolute form.
tmp< fvMatrix< Type > > laplacian(const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
tmp< fvMatrix< Type > > div(const surfaceScalarField &flux, const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
zeroField SuSp(const Foam::zero, const GeometricField< Type, fvPatchField, volMesh > &)
A no-op source.
zeroField Sp(const Foam::zero, const GeometricField< Type, fvPatchField, volMesh > &)
A no-op source.
Namespace for incompressible adjoint turbulence models.
dimensionedSymmTensor dev2(const dimensionedSymmTensor &dt)
GeometricField< vector, fvsPatchField, surfaceMesh > surfaceVectorField
dimensionedSymmTensor dev(const dimensionedSymmTensor &dt)
dimensionedScalar pos(const dimensionedScalar &ds)
Type & refCast(U &obj)
A dynamic_cast (for references) to Type reference.
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
dimensionedSymmTensor symm(const dimensionedSymmTensor &dt)
GeometricField< vector, fvPatchField, volMesh > volVectorField
const dimensionSet dimless
Dimensionless.
dimensionedScalar pos0(const dimensionedScalar &ds)
dimensionedSymmTensor sqr(const dimensionedVector &dv)
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
dimensionedScalar pow3(const dimensionedScalar &ds)
fvMatrix< scalar > fvScalarMatrix
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
GeometricField< scalar, fvPatchField, volMesh > volScalarField
SymmTensor< Cmpt > devTwoSymm(const SymmTensor< Cmpt > &st)
Return the deviatoric part of twice the symmetric part of a SymmTensor.
const dimensionSet dimArea(sqr(dimLength))
dimensionedSymmTensor twoSymm(const dimensionedSymmTensor &dt)
const dimensionSet dimVelocity
dimensionedScalar tanh(const dimensionedScalar &ds)
messageStream Info
Information stream (stdout output on master, null elsewhere).
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
fvPatchField< tensor > fvPatchTensorField
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
dimensionedScalar log(const dimensionedScalar &ds)
Ostream & endl(Ostream &os)
Add newline and flush stream.
GeometricField< tensor, fvPatchField, volMesh > volTensorField
dimensionedScalar sqrt(const dimensionedScalar &ds)
const Type * isA(const U &obj)
Attempt dynamic_cast to Type.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
GeometricField< tensor, fvsPatchField, surfaceMesh > surfaceTensorField
label min(const labelHashSet &set, label minValue=labelMax)
Find the min value in labelHashSet, optionally limited by second argument.
dimensionedScalar pow4(const dimensionedScalar &ds)
Field< vector > vectorField
Specialisation of Field<T> for vector.
GeometricField< symmTensor, fvPatchField, volMesh > volSymmTensorField
dimensionedScalar neg(const dimensionedScalar &ds)
static constexpr const zero Zero
Global zero (0).
bool interpolate(const vector &p1, const vector &p2, const vector &o, vector &n, scalar l)
Field< tensor > tensorField
Specialisation of Field<T> for tensor.
dimensionedScalar neg0(const dimensionedScalar &ds)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
volVectorField::Boundary boundaryVectorField
UList< label > labelUList
A UList of labels.
dimensioned< typename typeOfMag< Type >::type > magSqr(const dimensioned< Type > &dt)
fvPatchField< vector > fvPatchVectorField
dimensioned< tensor > dimensionedTensor
Dimensioned tensor obtained from generic dimensioned type.
dimensioned< vector > dimensionedVector
Dimensioned vector obtained from generic dimensioned type.
fvPatchField< scalar > fvPatchScalarField
dimensionedScalar pow025(const dimensionedScalar &ds)
Calculation of adjoint based sensitivities for topology optimisation. This returns just the field par...
Us boundaryFieldRef().evaluateCoupled< coupledFaPatch >()
#define forAll(list, i)
Loop across all elements in list.