Abstract base class for adjoint-based sensitivities in incompressible flows. More...
Public Member Functions | |
TypeName ("adjointSensitivity") | |
Runtime type information. More... | |
declareRunTimeSelectionTable (autoPtr, adjointSensitivity, dictionary,(const fvMesh &mesh, const dictionary &dict, incompressibleAdjointSolver &adjointSolver),(mesh, dict, adjointSolver)) | |
adjointSensitivity (const fvMesh &mesh, const dictionary &dict, incompressibleAdjointSolver &adjointSolver) | |
Construct from components. More... | |
virtual | ~adjointSensitivity ()=default |
Destructor. More... | |
const incompressibleVars & | primalVars () const |
Get primal variables. More... | |
const incompressibleAdjointVars & | adjointVars () const |
Get adjoint variables. More... | |
const incompressibleAdjointSolver & | adjointSolver () const |
Get adjoint solver. More... | |
virtual void | accumulateIntegrand (const scalar dt)=0 |
Accumulate sensitivity integrands. More... | |
virtual void | assembleSensitivities ()=0 |
Assemble sensitivities. More... | |
virtual const scalarField & | calculateSensitivities () |
Calculates and returns sensitivity fields. More... | |
const scalarField & | getSensitivities () const |
Returns the sensitivity fields. More... | |
virtual void | clearSensitivities () |
Zero sensitivity fields and their constituents. More... | |
virtual void | write (const word &baseName=word::null) |
Write sensitivity fields. More... | |
tmp< volTensorField > | computeGradDxDbMultiplier () |
tmp< volVectorField > | adjointMeshMovementSource () |
Compute source term for adjoint mesh movement equation. More... | |
Public Member Functions inherited from sensitivity | |
TypeName ("sensitivity") | |
Runtime type information. More... | |
sensitivity (const fvMesh &mesh, const dictionary &dict) | |
Construct from components. More... | |
virtual | ~sensitivity ()=default |
Destructor. More... | |
const dictionary & | dict () const |
Return the construction dictionary. More... | |
virtual bool | readDict (const dictionary &dict) |
Read dictionary if changed. More... | |
virtual void | computeDerivativesSize () |
Compute design variables number. Does nothing in the base. More... | |
virtual const scalarField & | calculateSensitivities ()=0 |
Calculates and returns sensitivity fields. More... | |
virtual void | write (const word &baseName=word::null) |
Write sensitivity fields. More... | |
Static Public Member Functions | |
static autoPtr< adjointSensitivity > | New (const fvMesh &mesh, const dictionary &dict, incompressibleAdjointSolver &adjointSolver) |
Return a reference to the selected turbulence model. More... | |
Protected Attributes | |
scalarField | derivatives_ |
incompressibleAdjointSolver & | adjointSolver_ |
const incompressibleVars & | primalVars_ |
incompressibleAdjointVars & | adjointVars_ |
objectiveManager & | objectiveManager_ |
Protected Attributes inherited from sensitivity | |
const fvMesh & | mesh_ |
dictionary | dict_ |
autoPtr< volScalarField > | fieldSensPtr_ |
Abstract base class for adjoint-based sensitivities in incompressible flows.
Reference:
For the FI and ESI formulations 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 For the SI formulation Papoutsis-Kiachagias, E. M., & Giannakoglou, K. C. (2014). Continuous Adjoint Methods for Turbulent Flows, Applied to Shape and Topology Optimization: Industrial Applications. Archives of Computational Methods in Engineering, 23(2), 255–299. http://doi.org/10.1007/s11831-014-9141-9
Definition at line 78 of file adjointSensitivityIncompressible.H.
adjointSensitivity | ( | const fvMesh & | mesh, |
const dictionary & | dict, | ||
incompressibleAdjointSolver & | adjointSolver | ||
) |
Construct from components.
Definition at line 52 of file adjointSensitivityIncompressible.C.
|
virtualdefault |
Destructor.
TypeName | ( | "adjointSensitivity" | ) |
Runtime type information.
declareRunTimeSelectionTable | ( | autoPtr | , |
adjointSensitivity | , | ||
dictionary | , | ||
(const fvMesh &mesh, const dictionary &dict, incompressibleAdjointSolver &adjointSolver) | , | ||
(mesh, dict, adjointSolver) | |||
) |
|
static |
Return a reference to the selected turbulence model.
Definition at line 70 of file adjointSensitivityIncompressible.C.
References sensitivity::dict(), Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInLookup, dictionary::get(), Foam::Info, and mesh.
|
inline |
Get primal variables.
Definition at line 158 of file adjointSensitivityIncompressible.H.
References adjointSensitivity::primalVars_.
|
inline |
Get adjoint variables.
Definition at line 164 of file adjointSensitivityIncompressible.H.
References adjointSensitivity::adjointVars_.
|
inline |
Get adjoint solver.
Definition at line 170 of file adjointSensitivityIncompressible.H.
References adjointSensitivity::adjointSolver_.
|
pure virtual |
Accumulate sensitivity integrands.
Corresponds to the flow and adjoint part of the sensitivities
Implemented in FIBase, sensitivityMultiple, sensitivitySurface, sensitivitySurfacePoints, SIBase, and shapeSensitivities.
|
pure virtual |
Assemble sensitivities.
Adds the geometric part of the sensitivities
Implemented in sensitivityBezier, sensitivityBezierFI, sensitivityMultiple, sensitivitySurface, sensitivitySurfacePoints, sensitivityVolBSplines, sensitivityVolBSplinesFI, FIBase, shapeSensitivities, and SIBase.
Referenced by adjointSensitivity::calculateSensitivities().
|
virtual |
Calculates and returns sensitivity fields.
Used with optimisation libraries
Implements sensitivity.
Reimplemented in sensitivityMultiple.
Definition at line 103 of file adjointSensitivityIncompressible.C.
References adjointSensitivity::assembleSensitivities(), adjointSensitivity::derivatives_, Foam::type(), and write().
const scalarField & getSensitivities | ( | ) | const |
Returns the sensitivity fields.
Assumes it has already been updated/computed
Definition at line 111 of file adjointSensitivityIncompressible.C.
References adjointSensitivity::derivatives_.
|
virtual |
Zero sensitivity fields and their constituents.
Reimplemented in FIBase, sensitivityBezier, sensitivityBezierFI, sensitivityMultiple, sensitivitySurface, sensitivitySurfacePoints, sensitivityVolBSplines, sensitivityVolBSplinesFI, shapeSensitivities, and SIBase.
Definition at line 117 of file adjointSensitivityIncompressible.C.
References adjointSensitivity::derivatives_, and sensitivity::fieldSensPtr_.
Referenced by sensitivitySurface::clearSensitivities(), sensitivitySurfacePoints::clearSensitivities(), and shapeSensitivities::clearSensitivities().
|
virtual |
Write sensitivity fields.
If valid, copies boundaryFields to volFields and writes them. Virtual to be reimplemented by control points-based methods (Bezier, RBF) which do not need to write fields
Reimplemented from sensitivity.
Reimplemented in sensitivityBezier, sensitivityBezierFI, sensitivityMultiple, sensitivitySurface, sensitivitySurfacePoints, sensitivityVolBSplines, sensitivityVolBSplinesFI, shapeSensitivities, and SIBase.
Definition at line 127 of file adjointSensitivityIncompressible.C.
References ObukhovLength::write().
tmp< volTensorField > computeGradDxDbMultiplier | ( | ) |
Compute the volTensorField multiplying grad(dxdb) for the volume-based approach to compute shape sensitivity derivatives
Definition at line 133 of file adjointSensitivityIncompressible.C.
References adjointSensitivity::adjointSolver_, and incompressibleAdjointSolver::computeGradDxDbMultiplier().
Referenced by FIBase::accumulateIntegrand(), and adjointSensitivity::adjointMeshMovementSource().
tmp< volVectorField > adjointMeshMovementSource | ( | ) |
Compute source term for adjoint mesh movement equation.
Definition at line 139 of file adjointSensitivityIncompressible.C.
References adjointSensitivity::adjointVars_, adjointSensitivity::computeGradDxDbMultiplier(), DimensionedField< Type, GeoMesh >::dimensions(), Foam::dimLength, Foam::fvc::div(), sensitivity::mesh_, Time::New(), IOobject::NO_READ, IOobject::NO_WRITE, GeometricField< Type, PatchField, GeoMesh >::primitiveFieldRef(), tmp< T >::ref(), variablesSet::solverName(), GeometricField< Type, PatchField, GeoMesh >::T(), fvMesh::time(), Time::timeName(), and Foam::Zero.
Referenced by adjointMeshMovementSolver::accumulateIntegrand().
|
protected |
Definition at line 86 of file adjointSensitivityIncompressible.H.
Referenced by sensitivityBezier::assembleSensitivities(), sensitivityBezierFI::assembleSensitivities(), sensitivitySurface::assembleSensitivities(), sensitivitySurfacePoints::assembleSensitivities(), sensitivityVolBSplines::assembleSensitivities(), sensitivityVolBSplinesFI::assembleSensitivities(), adjointSensitivity::calculateSensitivities(), sensitivityMultiple::calculateSensitivities(), adjointSensitivity::clearSensitivities(), sensitivitySurface::computeDerivativesSize(), adjointSensitivity::getSensitivities(), sensitivityBezier::sensitivityBezier(), sensitivityBezierFI::sensitivityBezierFI(), sensitivitySurfacePoints::sensitivitySurfacePoints(), sensitivityVolBSplines::sensitivityVolBSplines(), sensitivityVolBSplinesFI::sensitivityVolBSplinesFI(), sensitivityBezier::write(), sensitivityBezierFI::write(), sensitivityVolBSplines::write(), and sensitivityVolBSplinesFI::write().
|
protected |
Definition at line 87 of file adjointSensitivityIncompressible.H.
Referenced by sensitivitySurface::accumulateIntegrand(), sensitivitySurfacePoints::accumulateIntegrand(), adjointSensitivity::adjointSolver(), and adjointSensitivity::computeGradDxDbMultiplier().
|
protected |
Definition at line 88 of file adjointSensitivityIncompressible.H.
Referenced by sensitivitySurface::accumulateIntegrand(), sensitivitySurfacePoints::accumulateIntegrand(), shapeSensitivities::dvdbMult(), adjointSensitivity::primalVars(), FIBase::read(), sensitivitySurface::read(), and sensitivitySurfacePoints::read().
|
protected |
Definition at line 89 of file adjointSensitivityIncompressible.H.
Referenced by shapeSensitivities::accumulateBCSensitivityIntegrand(), FIBase::accumulateIntegrand(), sensitivitySurface::accumulateIntegrand(), sensitivitySurfacePoints::accumulateIntegrand(), adjointSensitivity::adjointMeshMovementSource(), adjointSensitivity::adjointVars(), shapeSensitivities::dvdbMult(), FIBase::read(), sensitivitySurface::read(), sensitivitySurfacePoints::read(), sensitivitySurface::setSuffixName(), sensitivitySurfacePoints::setSuffixName(), sensitivityBezier::write(), sensitivityBezierFI::write(), sensitivityVolBSplines::write(), and sensitivityVolBSplinesFI::write().
|
protected |
Definition at line 90 of file adjointSensitivityIncompressible.H.
Referenced by shapeSensitivities::accumulateDirectSensitivityIntegrand(), FIBase::accumulateIntegrand(), sensitivitySurface::accumulateIntegrand(), sensitivitySurfacePoints::accumulateIntegrand(), and sensitivitySurface::addGeometricSens().