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, incompressibleVars &primalVars, incompressibleAdjointVars &adjointVars, objectiveManager &objectiveManager),(mesh, dict, primalVars, adjointVars, objectiveManager)) | |
adjointSensitivity (const fvMesh &mesh, const dictionary &dict, incompressibleVars &primalVars, incompressibleAdjointVars &adjointVars, objectiveManager &objectiveManager) | |
Construct from components. More... | |
virtual | ~adjointSensitivity ()=default |
Destructor. 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... | |
![]() | |
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... | |
Static Public Member Functions | |
static autoPtr< adjointSensitivity > | New (const fvMesh &mesh, const dictionary &dict, incompressibleVars &primalVars, incompressibleAdjointVars &adjointVars, objectiveManager &objectiveManager) |
Return a reference to the selected turbulence model. More... | |
Protected Attributes | |
scalarField | derivatives_ |
incompressibleVars & | primalVars_ |
incompressibleAdjointVars & | adjointVars_ |
objectiveManager & | objectiveManager_ |
![]() | |
const fvMesh & | mesh_ |
dictionary | dict_ |
autoPtr< volScalarField > | fieldSensPtr_ |
Abstract base class for adjoint-based sensitivities in incompressible flows.
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 75 of file adjointSensitivityIncompressible.H.
adjointSensitivity | ( | const fvMesh & | mesh, |
const dictionary & | dict, | ||
incompressibleVars & | primalVars, | ||
incompressibleAdjointVars & | adjointVars, | ||
objectiveManager & | objectiveManager | ||
) |
Construct from components.
Definition at line 53 of file adjointSensitivityIncompressible.C.
|
virtualdefault |
Destructor.
TypeName | ( | "adjointSensitivity" | ) |
Runtime type information.
declareRunTimeSelectionTable | ( | autoPtr | , |
adjointSensitivity | , | ||
dictionary | , | ||
(const fvMesh &mesh, const dictionary &dict, incompressibleVars &primalVars, incompressibleAdjointVars &adjointVars, objectiveManager &objectiveManager) | , | ||
(mesh, dict, primalVars, adjointVars, objectiveManager) | |||
) |
|
static |
Return a reference to the selected turbulence model.
Definition at line 72 of file adjointSensitivityIncompressible.C.
References dict, Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInLookup, Foam::Info, and mesh.
Referenced by adjointSimple::adjointSimple(), and sensitivityMultiple::sensitivityMultiple().
|
pure virtual |
Accumulate sensitivity integrands.
Corresponds to the flow and adjoint part of the sensitivities
Implemented in shapeSensitivities, sensitivitySurface, sensitivitySurfacePoints, FIBase, SIBase, and sensitivityMultiple.
|
pure virtual |
Assemble sensitivities.
Adds the geometric part of the sensitivities
Implemented in FIBase, SIBase, shapeSensitivities, sensitivitySurface, sensitivitySurfacePoints, sensitivityBezierFI, sensitivityVolBSplinesFI, sensitivityVolBSplines, sensitivityBezier, and sensitivityMultiple.
Referenced by adjointSensitivity::calculateSensitivities().
|
virtual |
Calculates and returns sensitivity fields.
Used with optimisation libraries
Implements sensitivity.
Reimplemented in sensitivityMultiple.
Definition at line 113 of file adjointSensitivityIncompressible.C.
References adjointSensitivity::assembleSensitivities(), adjointSensitivity::derivatives_, Foam::type(), and adjointSensitivity::write().
const scalarField & getSensitivities | ( | ) | const |
Returns the sensitivity fields.
Assumes it has already been updated/computed
Definition at line 121 of file adjointSensitivityIncompressible.C.
References adjointSensitivity::derivatives_.
|
virtual |
Zero sensitivity fields and their constituents.
Reimplemented in sensitivitySurface, sensitivitySurfacePoints, sensitivityBezierFI, sensitivityVolBSplinesFI, FIBase, sensitivityVolBSplines, SIBase, shapeSensitivities, sensitivityBezier, and sensitivityMultiple.
Definition at line 127 of file adjointSensitivityIncompressible.C.
References adjointSensitivity::derivatives_, and sensitivity::fieldSensPtr_.
Referenced by shapeSensitivities::clearSensitivities(), sensitivitySurfacePoints::clearSensitivities(), and sensitivitySurface::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 sensitivitySurface, sensitivitySurfacePoints, sensitivityBezierFI, sensitivityVolBSplinesFI, sensitivityVolBSplines, SIBase, shapeSensitivities, sensitivityBezier, and sensitivityMultiple.
Definition at line 137 of file adjointSensitivityIncompressible.C.
References sensitivity::write().
Referenced by adjointSensitivity::calculateSensitivities(), shapeSensitivities::write(), sensitivitySurfacePoints::write(), and sensitivitySurface::write().
tmp< volTensorField > computeGradDxDbMultiplier | ( | ) |
Compute the volTensorField multiplying grad(dxdb) for the volume-based approach to compute shape sensitivity derivatives
Definition at line 143 of file adjointSensitivityIncompressible.C.
References objectiveManager::adjointSolverName(), incompressibleAdjointVars::adjointTurbulence(), adjointSensitivity::adjointVars_, fvMesh::boundary(), GeometricField< Type, PatchField, GeoMesh >::boundaryField(), GeometricField< Type, PatchField, GeoMesh >::boundaryFieldRef(), GeometricField< Type, PatchField, GeoMesh >::component(), Foam::dimLength, Foam::dimTime, forAll, ATCModel::getFISensitivityTerm(), objectiveManager::getObjectiveFunctions(), Foam::fvc::grad(), objectRegistry::lookupObject(), sensitivity::mesh_, IOobject::NO_READ, IOobject::NO_WRITE, adjointSensitivity::objectiveManager_, p, incompressibleVars::p(), incompressibleAdjointMeanFlowVars::pa(), Foam::foamVersion::patch, Foam::pow3(), adjointSensitivity::primalVars_, GeometricField< Type, PatchField, GeoMesh >::ref(), Foam::sqr(), Foam::T(), fvMesh::time(), Time::timeName(), U, incompressibleVars::U(), incompressibleAdjointMeanFlowVars::Ua(), and Foam::Zero.
Referenced by FIBase::accumulateIntegrand(), and adjointSensitivity::adjointMeshMovementSource().
tmp< volVectorField > adjointMeshMovementSource | ( | ) |
Compute source term for adjoint mesh movement equation.
Definition at line 307 of file adjointSensitivityIncompressible.C.
References adjointSensitivity::adjointVars_, adjointSensitivity::computeGradDxDbMultiplier(), Foam::dimLength, Foam::fvc::div(), sensitivity::mesh_, options::New(), IOobject::NO_READ, IOobject::NO_WRITE, optionList::postProcessSens(), tmp< T >::ref(), GeometricField< Type, PatchField, GeoMesh >::ref(), variablesSet::solverName(), GeometricField< Type, PatchField, GeoMesh >::T(), fvMesh::time(), Time::timeName(), and Foam::Zero.
Referenced by adjointMeshMovementSolver::accumulateIntegrand().
|
protected |
Definition at line 83 of file adjointSensitivityIncompressible.H.
Referenced by sensitivityBezier::assembleSensitivities(), sensitivityVolBSplines::assembleSensitivities(), sensitivityVolBSplinesFI::assembleSensitivities(), sensitivityBezierFI::assembleSensitivities(), sensitivitySurfacePoints::assembleSensitivities(), sensitivitySurface::assembleSensitivities(), sensitivityMultiple::calculateSensitivities(), adjointSensitivity::calculateSensitivities(), adjointSensitivity::clearSensitivities(), sensitivitySurface::computeDerivativesSize(), adjointSensitivity::getSensitivities(), sensitivityBezier::write(), sensitivityVolBSplines::write(), sensitivityVolBSplinesFI::write(), and sensitivityBezierFI::write().
|
protected |
Definition at line 84 of file adjointSensitivityIncompressible.H.
Referenced by sensitivitySurfacePoints::accumulateIntegrand(), sensitivitySurface::accumulateIntegrand(), adjointSensitivity::computeGradDxDbMultiplier(), shapeSensitivities::dvdbMult(), FIBase::read(), sensitivitySurfacePoints::read(), and sensitivitySurface::read().
|
protected |
Definition at line 85 of file adjointSensitivityIncompressible.H.
Referenced by shapeSensitivities::accumulateBCSensitivityIntegrand(), FIBase::accumulateIntegrand(), sensitivitySurfacePoints::accumulateIntegrand(), sensitivitySurface::accumulateIntegrand(), adjointSensitivity::adjointMeshMovementSource(), adjointSensitivity::computeGradDxDbMultiplier(), shapeSensitivities::dvdbMult(), FIBase::read(), sensitivitySurfacePoints::read(), sensitivitySurface::read(), sensitivitySurfacePoints::setSuffixName(), sensitivitySurface::setSuffixName(), sensitivityBezier::write(), sensitivityVolBSplines::write(), sensitivityVolBSplinesFI::write(), and sensitivityBezierFI::write().
|
protected |
Definition at line 86 of file adjointSensitivityIncompressible.H.
Referenced by shapeSensitivities::accumulateDirectSensitivityIntegrand(), FIBase::accumulateIntegrand(), sensitivitySurfacePoints::accumulateIntegrand(), sensitivitySurface::accumulateIntegrand(), sensitivitySurface::addGeometricSens(), and adjointSensitivity::computeGradDxDbMultiplier().