57 const word& adjointSolverName,
58 const word& primalSolverName
77 dJdTMvar1Ptr_(nullptr),
78 dJdTMvar2Ptr_(nullptr),
86 bdJdTMvar1Ptr_(nullptr),
87 bdJdTMvar2Ptr_(nullptr),
89 bdJdGradUPtr_(nullptr)
102 const word& adjointSolverName,
103 const word& primalSolverName
109 <<
" of type " << modelType <<
endl;
111 auto* ctorPtr = dictionaryConstructorTable(modelType);
118 "objectiveIncompressible",
120 *dictionaryConstructorTablePtr_
126 ctorPtr(
mesh,
dict, adjointSolverName, primalSolverName)
141 dJdvPtr_().primitiveFieldRef() *= oneOverNorm;
145 dJdpPtr_().primitiveFieldRef() *= oneOverNorm;
149 dJdTPtr_().primitiveFieldRef() *= oneOverNorm;
209 createZeroFieldPtr<vector>
228 createZeroFieldPtr<scalar>
247 createZeroFieldPtr<scalar>
266 createZeroFieldPtr<scalar>
269 (
"dJdTMvar1_"+
type()),
285 createZeroFieldPtr<scalar>
288 (
"dJdTMvar2_"+
type()),
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
Generic GeometricBoundaryField class.
static autoPtr< Time > New()
Construct (dummy) Time - no functionObjects or libraries.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
T get(const word &keyword, enum keyType::option matchOpt=keyType::REGEX) const
word dictName() const
The local dictionary name (final part of scoped name)
Dimension set for the base types, which can be used to implement rigorous dimension checking for alge...
virtual bool write()
Write the output fields.
Mesh data needed to do the Finite Volume discretisation.
Base class for primal incompressible solvers.
void computeMeanFields()
Compute mean fields on the fly.
Abstract base class for objective functions in incompressible flows.
const boundaryVectorField & boundarydJdp()
Objective partial deriv wrt pressure (times normal) for all patches.
bool hasBoundarydJdvn() const
autoPtr< volScalarField > dJdTMvar2Ptr_
Second turbulence model variable.
virtual void update_dxdbMultiplier()
Update d (x) / db multiplier. Surface-based sensitivity term.
virtual void update_boundarydJdTMvar2()
virtual void update_gradDxDbMultiplier()
Update grad( dx/db multiplier). Volume-based sensitivity term.
const volScalarField & dJdTMvar1()
Contribution to field adjoint turbulence model variable 1.
bool hasBoundarydJdp() const
const boundaryScalarField & boundarydJdTMvar1()
Objective partial deriv wrt turbulence model var 1 for all patches.
virtual void update_dxdbDirectMultiplier()
const boundaryScalarField & boundarydJdT()
Objective partial deriv wrt temperature for all patches.
virtual void update_dJdTMvar1()
autoPtr< boundaryTensorField > bdJdGradUPtr_
Term multiplying gradU variations.
autoPtr< boundaryScalarField > bdJdTMvar2Ptr_
Adjoint outlet turbulence model var 2.
virtual void update_boundarydJdvt()
autoPtr< volScalarField > dJdpPtr_
bool hasBoundarydJdT() const
const boundaryTensorField & boundarydJdGradU()
Objective partial deriv wrt gradU.
bool hasBoundarydJdvt() const
const volScalarField & dJdT()
Contribution to field adjoint energy eq.
virtual void update_divDxDbMultiplier()
Update div( dx/db multiplier). Volume-based sensitivity term.
virtual void update_boundarydJdb()
Update objective function derivative term.
const boundaryScalarField & boundarydJdnut()
Objective partial deriv wrt nut for all patches.
virtual void update_dJdTMvar2()
virtual void update_dJdv()
Update vol and boundary fields and derivatives.
virtual void nullify()
Update objective function derivatives.
const boundaryVectorField & boundarydJdv()
Objective partial deriv wrt velocity for all patches.
virtual void update_boundarydJdp()
virtual void update_meanValues()
autoPtr< volScalarField > dJdTMvar1Ptr_
First turbulence model variable.
autoPtr< boundaryScalarField > bdJdTMvar1Ptr_
Adjoint outlet turbulence model var 1.
bool hasBoundarydJdnut() const
const boundaryScalarField & boundarydJdvn()
Objective partial deriv wrt normal velocity for all patches.
virtual scalar J()=0
Return the objective function value.
virtual void update_dSdbMultiplier()
Update d (normal dS) / db multiplier. Surface-based sensitivity term.
virtual void update_boundarydJdTMvar1()
virtual void update_dndbMultiplier()
Update d (normal) / db multiplier. Surface-based sensitivity term.
autoPtr< boundaryScalarField > bdJdnutPtr_
Jacobian wrt to nut.
autoPtr< boundaryScalarField > bdJdTPtr_
Adjoint outlet temperature.
bool hasBoundarydJdv() const
autoPtr< boundaryScalarField > bdJdvnPtr_
Adjoint outlet pressure.
virtual void update_boundarydJdGradU()
autoPtr< volScalarField > dJdTPtr_
const boundaryVectorField & boundarydJdvt()
Objective partial deriv wrt tangent velocity for all patches.
const volScalarField & dJdp()
Contribution to field adjoint continuity eq.
const volScalarField & dJdTMvar2()
Contribution to field adjoint turbulence model variable 2.
autoPtr< boundaryVectorField > bdJdpPtr_
Adjoint (intlet,wall) velocity.
virtual void doNormalization()
Normalize all fields allocated by the objective.
virtual void update_boundarydJdnut()
virtual void update()
Update objective function derivatives.
bool hasBoundarydJdTMVar1() const
bool hasdJdv() const
Inline functions for checking whether pointers are set or not.
bool hasBoundarydJdGradU() const
virtual void update_boundarydJdv()
const volVectorField & dJdv()
Contribution to field adjoint momentum eqs.
virtual void update_dJdT()
autoPtr< boundaryVectorField > bdJdvtPtr_
Adjoint outlet velocity.
const incompressibleVars & vars_
const boundaryScalarField & boundarydJdTMvar2()
Objective partial deriv wrt turbulence model var 2 for all patches.
virtual void update_dJdb()
bool hasdJdTMVar1() const
virtual void update_boundarydJdvn()
autoPtr< boundaryVectorField > bdJdvPtr_
bool hasBoundarydJdTMVar2() const
bool hasdJdTMVar2() const
virtual void update_boundarydJdT()
virtual void update_dJdp()
autoPtr< volVectorField > dJdvPtr_
Abstract base class for objective functions. No point in making this runTime selectable since its chi...
virtual void nullify()
Nullify adjoint contributions.
autoPtr< scalar > normFactor_
Normalization factor.
scalar weight_
Objective weight.
virtual void doNormalization()
Normalize all fields allocated by the objective.
const dictionary & dict() const
Return objective dictionary.
virtual void update_boundaryEdgeContribution()
Update boundary edge contributions.
A class for handling words, derived from Foam::string.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
#define FatalIOErrorInLookup(ios, lookupTag, lookupName, lookupTable)
Report an error message using Foam::FatalIOError.
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
messageStream Info
Information stream (stdout output on master, null elsewhere)
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
Ostream & endl(Ostream &os)
Add newline and flush stream.
dimensioned< vector > dimensionedVector
Dimensioned vector obtained from generic dimensioned type.
static constexpr const zero Zero
Global zero (0)
errorManipArg< error, int > exit(error &err, const int errNo=1)
#define defineRunTimeSelectionTable(baseType, argNames)
Define run-time selection table.
A non-counting (dummy) refCount.