179 void operator=(
const objective&) =
delete;
201 const word& adjointSolverName,
202 const word& primalSolverName
204 (
mesh,
dict, adjointSolverName, primalSolverName)
215 const word& adjointSolverName,
216 const word& primalSolverName
227 const word& objectiveType,
228 const word& adjointSolverName,
229 const word& primalSolverName
242 virtual scalar
J() = 0;
321 virtual void update() = 0;
364 virtual bool write(
const bool valid =
true)
const;
Useful typenames for fields defined only at the boundaries.
Generic GeometricBoundaryField class.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
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,...
A class for handling file names.
Mesh data needed to do the Finite Volume discretisation.
localIOdictionary is derived from IOdictionary but excludes parallel master reading.
Abstract base class for objective functions. No point in making this runTime selectable since its chi...
virtual void writeInstantaneousSeparator() const
virtual void writeInstantaneousValue() const
Write objective function history at each primal solver iteration.
virtual void update_dxdbMultiplier()
Update d (x) / db multiplier. Surface-based sensitivity term.
autoPtr< OFstream > instantValueFilePtr_
virtual void update_gradDxDbMultiplier()
Update grad( dx/db multiplier). Volume-based sensitivity term.
autoPtr< boundaryVectorField > bdJdbPtr_
Term from material derivative.
const boundaryVectorField & dSdbMultiplier()
Multiplier of delta(n dS)/delta b for all patches.
virtual void update_dxdbDirectMultiplier()
const volTensorField & gradDxDbMultiplier()
Multiplier of grad( delta(x)/delta b) for volume-based sensitivities.
void accumulateJMean()
Accumulate contribution for the mean objective value.
scalar JMean_
Average objective value.
autoPtr< boundaryVectorField > bdSdbMultPtr_
Term multiplying delta(n dS)/delta b.
const word objectiveName_
bool hasBoundaryEdgeContribution() const
bool hasGradDxDbMult() const
static autoPtr< objective > New(const fvMesh &mesh, const dictionary &dict, const word &objectiveType, const word &adjointSolverName, const word &primalSolverName)
Return a reference to the selected turbulence model.
void setMeanValueFilePtr() const
Set the output file ptr for the mean value.
virtual void writeMeanValue() const
Write mean objective function history.
autoPtr< OFstream > objFunctionFilePtr_
File to keep the objective values after the end of the primal solver.
autoPtr< OFstream > meanValueFilePtr_
virtual void update_divDxDbMultiplier()
Update div( dx/db multiplier). Volume-based sensitivity term.
virtual void addHeaderColumns() const
Write headers for additional columns.
scalar weight() const
Return the objective function weight.
virtual bool writeData(Ostream &os) const
Write averaged objective for continuation.
autoPtr< boundaryVectorField > bdxdbDirectMultPtr_
virtual void update_boundarydJdb()
Update objective function derivative term.
bool hasIntegrationStartTime() const
declareRunTimeNewSelectionTable(autoPtr, objective, objective,(const fvMesh &mesh, const dictionary &dict, const word &adjointSolverName, const word &primalSolverName),(mesh, dict, adjointSolverName, primalSolverName))
virtual void nullify()
Nullify adjoint contributions.
autoPtr< scalar > integrationStartTimePtr_
Objective integration start and end times (for unsteady flows)
const word & objectiveName() const
Return the objective name.
const boundaryVectorField & boundarydJdb()
Contribution to surface sensitivities for all patches.
void setObjectiveFilePtr() const
Set the output file ptr.
autoPtr< volScalarField > dJdbPtr_
Contribution to field sensitivity derivatives.
autoPtr< scalar > normFactor_
Normalization factor.
scalar weight_
Objective weight.
virtual bool readDict(const dictionary &dict)
const volScalarField & divDxDbMultiplier()
Multiplier of grad( delta(x)/delta b) for volume-based sensitivities.
const boundaryVectorField & dxdbDirectMultiplier()
Multiplier of delta(x)/delta b for all patches.
unsigned int width_
Default width of entries when writing in the objective files.
virtual scalar J()=0
Return the instantaneous objective function value.
autoPtr< scalar > integrationEndTimePtr_
virtual void update_dSdbMultiplier()
Update d (normal dS) / db multiplier. Surface-based sensitivity term.
virtual void addHeaderInfo() const
Write any information that needs to go the header of the file.
virtual void update_dndbMultiplier()
Update d (normal) / db multiplier. Surface-based sensitivity term.
bool hasDivDxDbMult() const
autoPtr< volScalarField > divDxDbMultPtr_
Multiplier of d(Volume)/db.
virtual void update()=0
Update objective function derivatives.
const boundaryVectorField & dndbMultiplier()
Multiplier of delta(n dS)/delta b for all patches.
scalar J_
Objective function value and weight.
virtual ~objective()=default
Destructor.
TypeName("objective")
Runtime type information.
bool hasdxdbDirectMult() const
void setInstantValueFilePtr() const
Set the output file ptr for the instantaneous value.
void incrementIntegrationTimes(const scalar timeSpan)
Increment integration times.
virtual void doNormalization()
Normalize all fields allocated by the objective.
bool normalize() const
Is the objective normalized.
const dictionary & dict() const
Return objective dictionary.
const volScalarField & dJdb()
Contribution to field sensitivities.
const word primalSolverName_
bool hasBoundarydJdb() const
bool hasIntegrationEndTime() const
virtual void updateNormalizationFactor()
fileName objFunctionFolder_
Output file variables.
autoPtr< scalar > target_
Target value, in case the objective is used as a constraint.
autoPtr< boundaryVectorField > bdndbMultPtr_
Term multiplying delta(n)/delta b.
virtual void update_boundaryEdgeContribution()
Update boundary edge contributions.
autoPtr< boundaryVectorField > bdxdbMultPtr_
Term multiplying delta(x)/delta b at the boundary.
const word adjointSolverName_
const boundaryVectorField & dxdbMultiplier()
Multiplier of delta(x)/delta b for all patches.
virtual void addColumnValues() const
Write information to additional columns.
const vectorField3 & boundaryEdgeMultiplier()
Multiplier located at patch boundary edges.
bool isWithinIntegrationTime() const
Check whether this is an objective integration time.
autoPtr< vectorField3 > bEdgeContribution_
autoPtr< volTensorField > gradDxDbMultPtr_
Emerging from volume objectives that include spatial derivatives.
Base class for solver control classes.
A class for handling words, derived from Foam::string.
OBJstream os(runTime.globalPath()/outputName)
Macros to ease declaration of run-time selection tables.
#define declareRunTimeNewSelectionTable(ptrWrapper, baseType, argNames, argList, parList)
Declare a run-time selection for derived classes.
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.