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 () |
Compute the volTensorField multiplying grad(dxdb) for the volume-based approach to compute shape sensitivity derivatives. More... | |
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... | |
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.
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 74 of file adjointSensitivityIncompressible.H.
adjointSensitivity | ( | const fvMesh & | mesh, |
const dictionary & | dict, | ||
incompressibleAdjointSolver & | adjointSolver | ||
) |
Construct from components.
Definition at line 46 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 64 of file adjointSensitivityIncompressible.C.
References dict, Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInLookup, Foam::Info, and mesh.
Referenced by adjointSimple::adjointSimple(), and sensitivityMultiple::sensitivityMultiple().
|
inline |
Get primal variables.
Definition at line 168 of file adjointSensitivityIncompressible.H.
References adjointSensitivity::primalVars_.
|
inline |
Get adjoint variables.
Definition at line 176 of file adjointSensitivityIncompressible.H.
References adjointSensitivity::adjointVars_.
|
inline |
Get adjoint solver.
Definition at line 184 of file adjointSensitivityIncompressible.H.
References adjointSensitivity::adjointSolver_.
|
pure virtual |
Accumulate sensitivity integrands.
Corresponds to the flow and adjoint part of the sensitivities
Implemented in sensitivitySurface, sensitivitySurfacePoints, FIBase, SIBase, shapeSensitivities, and sensitivityMultiple.
|
pure virtual |
Assemble sensitivities.
Adds the geometric part of the sensitivities
Implemented in sensitivitySurface, sensitivitySurfacePoints, sensitivityBezierFI, sensitivityVolBSplinesFI, FIBase, sensitivityVolBSplines, SIBase, shapeSensitivities, 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 96 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 104 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 110 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, SIBase, sensitivityVolBSplines, shapeSensitivities, sensitivityBezier, and sensitivityMultiple.
Definition at line 120 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 126 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 132 of file adjointSensitivityIncompressible.C.
References adjointSensitivity::adjointVars_, adjointSensitivity::computeGradDxDbMultiplier(), DimensionedField< Type, GeoMesh >::dimensions(), Foam::dimLength, Foam::fvc::div(), sensitivity::mesh_, options::New(), IOobjectOption::NO_READ, IOobjectOption::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 82 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 83 of file adjointSensitivityIncompressible.H.
Referenced by sensitivitySurfacePoints::accumulateIntegrand(), sensitivitySurface::accumulateIntegrand(), adjointSensitivity::adjointSolver(), and adjointSensitivity::computeGradDxDbMultiplier().
|
protected |
Definition at line 84 of file adjointSensitivityIncompressible.H.
Referenced by sensitivitySurfacePoints::accumulateIntegrand(), sensitivitySurface::accumulateIntegrand(), shapeSensitivities::dvdbMult(), adjointSensitivity::primalVars(), 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::adjointVars(), 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(), and sensitivitySurface::addGeometricSens().
Copyright © 2011-2018 OpenFOAM | OPENFOAM® is a registered trademark of OpenCFD Ltd.