46 const word& managerType,
48 const word& primalSolverName
52 primalSolverName_(primalSolverName),
58 dict.subDict(
"objectives"),
63 sensitivities_(nullptr),
66 dict.getOrDefault<
bool>(
"computeSensitivities", true)
68 isConstraint_(
dict.getOrDefault<
bool>(
"isConstraint", false))
81 const word& managerType,
83 const word& primalSolverName
88 auto* ctorPtr = adjointSolverConstructorTable(solverType);
97 *adjointSolverConstructorTablePtr_
103 ctorPtr(
mesh, managerType,
dict, primalSolverName)
112 return mesh_.lookupObject<
primalSolver>(primalSolverName_);
128 if (solver::readDict(
dict))
130 computeSensitivities_ =
133 objectiveManagerPtr_->readDict(
dict.
subDict(
"objectives"));
144 return objectiveManagerPtr_();
150 return objectiveManagerPtr_();
157 computeObjectiveSensitivities();
167 return isConstraint_;
173 sensitivities_.clear();
185 if (sensitivities_.valid())
187 sensitivities_().writeEntry(
"sensitivities",
os);
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
static autoPtr< Time > New()
Construct (dummy) Time - no functionObjects or libraries.
Base class for adjoint solvers.
virtual void clearSensitivities()
Clears the sensitivity field known by the adjoint solver.
autoPtr< objectiveManager > objectiveManagerPtr_
Object to manage objective functions.
virtual bool writeData(Ostream &os) const
Write the sensitivity derivatives.
virtual bool readDict(const dictionary &dict)
const primalSolver & getPrimalSolver() const
virtual void updatePrimalBasedQuantities()
virtual bool isConstraint()
Is the solving referring to a constraint.
virtual void postLoop()
Functions to be called after loop.
const objectiveManager & getObjectiveManager() const
Return a const reference to the objective manager.
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
const dictionary & subDict(const word &keyword, enum keyType::option matchOpt=keyType::REGEX) const
Find and return a sub-dictionary.
T getOrDefault(const word &keyword, const T &deflt, enum keyType::option matchOpt=keyType::REGEX) const
virtual bool write()
Write the output fields.
Mesh data needed to do the Finite Volume discretisation.
class for managing incompressible objective functions.
Base class for primal solvers.
Base class for solution control classes.
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.
OBJstream os(runTime.globalPath()/outputName)
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh > > &tdf1, const word &name, const dimensionSet &dimensions)
Global function forwards to reuseTmpDimensionedField::New.
errorManipArg< error, int > exit(error &err, const int errNo=1)
#define addProfiling(name, descr)
Define profiling trigger with specified name and description string.
#define defineRunTimeSelectionTable(baseType, argNames)
Define run-time selection table.