Class solving the adjoint grid dispalcement PDEs. Assumes the primal grid displacement PDE is a Laplace one with uniform diffusivity. More...
Public Member Functions | |
TypeName ("adjointMeshMovementSolver") | |
Runtime type information. More... | |
adjointMeshMovementSolver (const fvMesh &mesh, const dictionary &dict, ShapeSensitivitiesBase &adjointSensitivity) | |
Construct from components. More... | |
virtual | ~adjointMeshMovementSolver ()=default |
virtual bool | readDict (const dictionary &dict) |
Read dict if changed. More... | |
virtual void | solve () |
Calculate the adjoint distance field. More... | |
void | reset () |
Reset the source term. More... | |
boundaryVectorField & | meshMovementSensitivities () |
Return the sensitivity term depending on ma. More... | |
const volVectorField & | ma () const |
Return the adjoint distance field. More... | |
Protected Member Functions | |
void | read () |
Read options each time a new solution is found. More... | |
void | setSource () |
Set the source term of the PDE. More... | |
Protected Attributes | |
const fvMesh & | mesh_ |
Reference to mesh. More... | |
dictionary | dict_ |
Dictionary containing solution controls. More... | |
autoPtr< boundaryVectorField > | meshMovementSensPtr_ |
Part of sensitivity derivatives coming from the adjoint grid displacement PDE. More... | |
ShapeSensitivitiesBase & | adjointSensitivity_ |
volVectorField | ma_ |
Adjoint grid displacement field. More... | |
volVectorField | source_ |
Source term of the adjoint grid displacement PDEs. More... | |
label | iters_ |
Solution controls. More... | |
scalar | tolerance_ |
Class solving the adjoint grid dispalcement PDEs. Assumes the primal grid displacement PDE is a Laplace one with uniform diffusivity.
For the derivation of the adjoint grid displacement PDEs, see Kavvadias, I., Papoutsis-Kiachagias, E., & Giannakoglou, K. (2015). On the proper treatment of grid sensitivities in continuous adjoint methods for shape optimization. Journal of Computational Physics, 301, 1–18. http://doi.org/10.1016/j.jcp.2015.08.012
Definition at line 66 of file adjointMeshMovementSolver.H.
adjointMeshMovementSolver | ( | const fvMesh & | mesh, |
const dictionary & | dict, | ||
ShapeSensitivitiesBase & | adjointSensitivity | ||
) |
Construct from components.
Definition at line 87 of file adjointMeshMovementSolver.C.
References Foam::read().
|
virtualdefault |
|
protected |
Read options each time a new solution is found.
Definition at line 41 of file adjointMeshMovementSolver.C.
References adjointMeshMovementSolver::dict_, dictionary::getOrDefault(), adjointMeshMovementSolver::iters_, and adjointMeshMovementSolver::tolerance_.
|
protected |
Set the source term of the PDE.
Definition at line 48 of file adjointMeshMovementSolver.C.
References adjointMeshMovementSolver::adjointSensitivity_, Foam::fvc::div(), adjointSensitivity::getAdjointEikonalSolver(), adjointSensitivity::getAdjointSolver(), adjointSolver::getObjectiveManager(), Foam::fvc::grad(), adjointSensitivity::gradDxDbMult(), Foam::interpolate(), adjointMeshMovementSolver::mesh_, adjointSensitivity::optionsDxDbMult(), GeometricField< Type, PatchField, GeoMesh >::primitiveFieldRef(), fvMesh::Sf(), and adjointMeshMovementSolver::source_.
Referenced by adjointMeshMovementSolver::solve().
TypeName | ( | "adjointMeshMovementSolver" | ) |
Runtime type information.
|
virtual |
Read dict if changed.
Definition at line 135 of file adjointMeshMovementSolver.C.
References dict, Foam::read(), and dictionary::subOrEmptyDict().
|
virtual |
Calculate the adjoint distance field.
Definition at line 146 of file adjointMeshMovementSolver.C.
References GeometricField< Type, PatchField, GeoMesh >::boundaryFieldRef(), fvMatrix< Type >::boundaryManipulate(), Foam::endl(), Foam::gMax(), Foam::Info, adjointMeshMovementSolver::iters_, Foam::fvm::laplacian(), adjointMeshMovementSolver::ma_, Foam::mag(), adjointMeshMovementSolver::mesh_, Time::printExecutionTime(), adjointMeshMovementSolver::setSource(), Foam::solve(), solution::solverDict(), adjointMeshMovementSolver::source_, fvMesh::time(), adjointMeshMovementSolver::tolerance_, and regIOobject::write().
void reset | ( | ) |
Reset the source term.
Definition at line 181 of file adjointMeshMovementSolver.C.
References DimensionedField< Type, GeoMesh >::dimensions(), adjointMeshMovementSolver::meshMovementSensPtr_, adjointMeshMovementSolver::source_, and Foam::Zero.
boundaryVectorField & meshMovementSensitivities | ( | ) |
Return the sensitivity term depending on ma.
Definition at line 188 of file adjointMeshMovementSolver.C.
References adjointMeshMovementSolver::adjointSensitivity_, GeometricField< Type, PatchField, GeoMesh >::boundaryField(), ShapeSensitivitiesBase::geometryVariationIntegrationPatches(), adjointMeshMovementSolver::ma_, and adjointMeshMovementSolver::meshMovementSensPtr_.
|
inline |
Return the adjoint distance field.
Definition at line 186 of file adjointMeshMovementSolver.H.
References adjointMeshMovementSolver::ma_.
|
protected |
Reference to mesh.
Definition at line 75 of file adjointMeshMovementSolver.H.
Referenced by adjointMeshMovementSolver::setSource(), and adjointMeshMovementSolver::solve().
|
protected |
Dictionary containing solution controls.
Definition at line 80 of file adjointMeshMovementSolver.H.
Referenced by adjointMeshMovementSolver::read().
|
protected |
Part of sensitivity derivatives coming from the adjoint grid displacement PDE.
Definition at line 86 of file adjointMeshMovementSolver.H.
Referenced by adjointMeshMovementSolver::meshMovementSensitivities(), and adjointMeshMovementSolver::reset().
|
protected |
Definition at line 89 of file adjointMeshMovementSolver.H.
Referenced by adjointMeshMovementSolver::meshMovementSensitivities(), and adjointMeshMovementSolver::setSource().
|
protected |
Adjoint grid displacement field.
Definition at line 94 of file adjointMeshMovementSolver.H.
Referenced by adjointMeshMovementSolver::ma(), adjointMeshMovementSolver::meshMovementSensitivities(), and adjointMeshMovementSolver::solve().
|
protected |
Source term of the adjoint grid displacement PDEs.
Definition at line 99 of file adjointMeshMovementSolver.H.
Referenced by adjointMeshMovementSolver::reset(), adjointMeshMovementSolver::setSource(), and adjointMeshMovementSolver::solve().
|
protected |
Solution controls.
Definition at line 104 of file adjointMeshMovementSolver.H.
Referenced by adjointMeshMovementSolver::read(), and adjointMeshMovementSolver::solve().
|
protected |
Definition at line 105 of file adjointMeshMovementSolver.H.
Referenced by adjointMeshMovementSolver::read(), and adjointMeshMovementSolver::solve().