126#ifndef adjointEikonalSolver_H
127#define adjointEikonalSolver_H
148class adjointEikonalSolver
155 adjointEikonalSolver(
const adjointEikonalSolver&) =
delete;
158 void operator=(
const adjointEikonalSolver&) =
delete;
Useful typenames for fields defined only at the boundaries.
tmp< volVectorField > gradEikonal()
Return the gradient of the eikonal equation.
boundaryVectorField & distanceSensitivities()
Return the sensitivity term depending on da.
const volScalarField & da()
Return the adjoint distance field.
autoPtr< boundaryVectorField > distanceSensPtr_
Wall face sens w.r.t. (x,y.z).
tmp< surfaceScalarField > computeYPhi()
Compute convecting velocity.
const volScalarField & d()
Return the distance field.
adjointSolver & adjointSolver_
labelHashSet wallPatchIDs_
virtual bool readDict(const dictionary &dict)
Read dict if changed.
virtual ~adjointEikonalSolver()=default
const labelHashSet & sensitivityPatchIDs_
tmp< volTensorField > getFISensitivityTerm() const
Return the volume-based sensitivity term depending on da.
void read()
Read options each time a new solution is found.
void accumulateIntegrand(const scalar dt)
Accumulate source term.
TypeName("adjointEikonalSolver")
Runtime type information.
void reset()
Reset source term.
tmp< scalarField > topologySensitivities(const word &designVarsName) const
Return sensitivity contribution to topology optimisation.
wordList patchTypes() const
Return the boundary condition types for da.
void solve()
Calculate the adjoint distance field.
Base class for adjoint solvers.
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,...
Mesh data needed to do the Finite Volume discretisation.
A class for managing temporary objects.
A class for handling words, derived from Foam::string.
List< word > wordList
List of word.
HashSet< label, Hash< label > > labelHashSet
A HashSet of labels, uses label hasher.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
volVectorField::Boundary boundaryVectorField
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Forwards and collection of common volume field types.