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, fv::optionAdjointList &fvOptionsAdjoint),(mesh, dict, primalVars, adjointVars, objectiveManager, fvOptionsAdjoint)) | |
adjointSensitivity (const fvMesh &mesh, const dictionary &dict, incompressibleVars &primalVars, incompressibleAdjointVars &adjointVars, objectiveManager &objectiveManager, fv::optionAdjointList &fvOptionsAdjoint) | |
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, fv::optionAdjointList &fvOptionsAdjoint) |
Return a reference to the selected turbulence model. More... | |
Protected Attributes | |
scalarField | derivatives_ |
incompressibleVars & | primalVars_ |
incompressibleAdjointVars & | adjointVars_ |
objectiveManager & | objectiveManager_ |
fv::optionAdjointList & | fvOptionsAdjoint_ |
![]() | |
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 76 of file adjointSensitivityIncompressible.H.
adjointSensitivity | ( | const fvMesh & | mesh, |
const dictionary & | dict, | ||
incompressibleVars & | primalVars, | ||
incompressibleAdjointVars & | adjointVars, | ||
objectiveManager & | objectiveManager, | ||
fv::optionAdjointList & | fvOptionsAdjoint | ||
) |
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, incompressibleVars &primalVars, incompressibleAdjointVars &adjointVars, objectiveManager &objectiveManager, fv::optionAdjointList &fvOptionsAdjoint) | , | ||
(mesh, dict, primalVars, adjointVars, objectiveManager, fvOptionsAdjoint) | |||
) |
|
static |
Return a reference to the selected turbulence model.
Definition at line 73 of file adjointSensitivityIncompressible.C.
References dict, Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInLookup, fvOptionsAdjoint(), 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, sensitivitySurfacePoints, sensitivitySurface, FIBase, SIBase, and sensitivityMultiple.
|
pure virtual |
Assemble sensitivities.
Adds the geometric part of the sensitivities
Implemented in FIBase, SIBase, shapeSensitivities, sensitivitySurfacePoints, sensitivitySurface, 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 116 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 124 of file adjointSensitivityIncompressible.C.
References adjointSensitivity::derivatives_.
|
virtual |
Zero sensitivity fields and their constituents.
Reimplemented in sensitivitySurfacePoints, sensitivitySurface, sensitivityBezierFI, sensitivityVolBSplinesFI, FIBase, sensitivityVolBSplines, SIBase, shapeSensitivities, sensitivityBezier, and sensitivityMultiple.
Definition at line 130 of file adjointSensitivityIncompressible.C.
References adjointSensitivity::derivatives_, and sensitivity::fieldSensPtr_.
Referenced by shapeSensitivities::clearSensitivities(), sensitivitySurface::clearSensitivities(), and sensitivitySurfacePoints::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 sensitivitySurfacePoints, sensitivitySurface, sensitivityBezierFI, sensitivityVolBSplinesFI, sensitivityVolBSplines, SIBase, shapeSensitivities, sensitivityBezier, and sensitivityMultiple.
Definition at line 140 of file adjointSensitivityIncompressible.C.
References sensitivity::write().
Referenced by adjointSensitivity::calculateSensitivities(), shapeSensitivities::write(), sensitivitySurface::write(), and sensitivitySurfacePoints::write().
tmp< volTensorField > computeGradDxDbMultiplier | ( | ) |
Compute the volTensorField multiplying grad(dxdb) for the volume-based approach to compute shape sensitivity derivatives
Definition at line 146 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 310 of file adjointSensitivityIncompressible.C.
References adjointSensitivity::adjointVars_, adjointSensitivity::computeGradDxDbMultiplier(), Foam::dimLength, Foam::fvc::div(), forAll, adjointSensitivity::fvOptionsAdjoint_, sensitivity::mesh_, IOobject::NO_READ, IOobject::NO_WRITE, tmp< T >::ref(), GeometricField< Type, PatchField, GeoMesh >::ref(), GeometricField< Type, PatchField, GeoMesh >::T(), fvMesh::time(), Time::timeName(), and Foam::Zero.
Referenced by adjointMeshMovementSolver::accumulateIntegrand().
|
protected |
Definition at line 84 of file adjointSensitivityIncompressible.H.
Referenced by sensitivityBezier::assembleSensitivities(), sensitivityVolBSplines::assembleSensitivities(), sensitivityVolBSplinesFI::assembleSensitivities(), sensitivityBezierFI::assembleSensitivities(), sensitivitySurface::assembleSensitivities(), sensitivitySurfacePoints::assembleSensitivities(), sensitivityMultiple::calculateSensitivities(), adjointSensitivity::calculateSensitivities(), adjointSensitivity::clearSensitivities(), sensitivitySurface::computeDerivativesSize(), adjointSensitivity::getSensitivities(), sensitivityBezier::write(), sensitivityVolBSplines::write(), sensitivityVolBSplinesFI::write(), and sensitivityBezierFI::write().
|
protected |
Definition at line 85 of file adjointSensitivityIncompressible.H.
Referenced by sensitivitySurface::accumulateIntegrand(), sensitivitySurfacePoints::accumulateIntegrand(), adjointSensitivity::computeGradDxDbMultiplier(), shapeSensitivities::dvdbMult(), FIBase::read(), sensitivitySurfacePoints::read(), and sensitivitySurface::read().
|
protected |
Definition at line 86 of file adjointSensitivityIncompressible.H.
Referenced by shapeSensitivities::accumulateBCSensitivityIntegrand(), FIBase::accumulateIntegrand(), sensitivitySurface::accumulateIntegrand(), sensitivitySurfacePoints::accumulateIntegrand(), adjointSensitivity::adjointMeshMovementSource(), adjointSensitivity::computeGradDxDbMultiplier(), shapeSensitivities::dvdbMult(), FIBase::read(), sensitivitySurfacePoints::read(), sensitivitySurface::read(), sensitivitySurface::setSuffixName(), sensitivitySurfacePoints::setSuffixName(), sensitivityBezier::write(), sensitivityVolBSplines::write(), sensitivityVolBSplinesFI::write(), and sensitivityBezierFI::write().
|
protected |
Definition at line 87 of file adjointSensitivityIncompressible.H.
Referenced by shapeSensitivities::accumulateDirectSensitivityIntegrand(), FIBase::accumulateIntegrand(), sensitivitySurface::accumulateIntegrand(), sensitivitySurfacePoints::accumulateIntegrand(), sensitivitySurface::addGeometricSens(), and adjointSensitivity::computeGradDxDbMultiplier().
|
protected |
Definition at line 88 of file adjointSensitivityIncompressible.H.
Referenced by FIBase::accumulateIntegrand(), and adjointSensitivity::adjointMeshMovementSource().