Abstract base class for adjoint-based sensitivities. More...
#include <adjointSensitivity.H>


Public Member Functions | |
| TypeName ("adjointSensitivity") | |
| Runtime type information. | |
| declareRunTimeSelectionTable (autoPtr, adjointSensitivity, dictionary,(const fvMesh &mesh, const dictionary &dict, adjointSolver &adjointSolver),(mesh, dict, adjointSolver)) | |
| adjointSensitivity (const fvMesh &mesh, const dictionary &dict, adjointSolver &adjointSolver) | |
| Construct from components. | |
| virtual | ~adjointSensitivity ()=default |
| Destructor. | |
| virtual bool | readDict (const dictionary &dict) |
| Read dictionary if changed. | |
| const adjointSolver & | getAdjointSolver () const |
| Const access to adjoint solver. | |
| adjointSolver & | getAdjointSolver () |
| Non-const access to adjoint solver. | |
| bool | includeDistance () const |
| Should the adjoint eikonal PDE should be solved. | |
| autoPtr< adjointEikonalSolver > & | getAdjointEikonalSolver () |
| Return the adjoint eikonal solver. | |
| autoPtr< adjointMeshMovementSolver > & | getAdjointMeshMovementSolver () |
| Return the adjoint eikonal solver. | |
| void | setSuffix (const word &suffix) |
| Set suffix. | |
| const word & | getSuffix () const |
| Get suffix. | |
| virtual bool | computeDxDbInternalField () const |
| Should the parameterization compute the internalField of dxdb. | |
| virtual void | accumulateIntegrand (const scalar dt)=0 |
| Accumulate sensitivity integrands. | |
| virtual void | assembleSensitivities (autoPtr< designVariables > &designVars) |
| Assemble sensitivities. | |
| virtual const scalarField & | calculateSensitivities (autoPtr< designVariables > &designVars) |
| Calculates and returns sensitivity fields. | |
| const scalarField & | getSensitivities () const |
| Returns the sensitivity fields. | |
| virtual void | clearSensitivities () |
| Zero sensitivity fields and their constituents. | |
| virtual void | write (const word &baseName=word::null) |
| Write sensitivity fields. | |
| const autoPtr< volTensorField > & | gradDxDbMult () const |
| autoPtr< volTensorField > & | gradDxDbMult () |
| const autoPtr< scalarField > & | divDxDbMult () const |
| const autoPtr< boundaryVectorField > & | dxdbMult () const |
| const autoPtr< boundaryVectorField > & | dSfdbMult () const |
| const autoPtr< boundaryVectorField > & | dnfdbMult () const |
| const autoPtr< boundaryVectorField > & | dxdbDirectMult () const |
| const autoPtr< pointBoundaryVectorField > & | pointDxDbDirectMult () const |
| const autoPtr< boundaryVectorField > & | bcDxDbMult () const |
| const autoPtr< vectorField > & | optionsDxDbMult () const |
| Public Member Functions inherited from sensitivity | |
| TypeName ("sensitivity") | |
| Runtime type information. | |
| sensitivity (const fvMesh &mesh, const dictionary &dict) | |
| Construct from components. | |
| virtual | ~sensitivity ()=default |
| Destructor. | |
| const fvMesh & | mesh () const |
| Return reference to mesh. | |
| const dictionary & | dict () const |
| Return the construction dictionary. | |
| const autoPtr< volScalarField > & | fieldSensPtr () const |
| Get the fieldSensPtr. | |
Static Public Member Functions | |
| static autoPtr< adjointSensitivity > | New (const fvMesh &mesh, const dictionary &dict, adjointSolver &adjointSolver) |
| Return a reference to the selected turbulence model. | |
Protected Attributes | |
| adjointSolver & | adjointSolver_ |
| Reference to the underlaying adjoint solver. | |
| scalarField | derivatives_ |
| The sensitivity derivative values. | |
| word | suffix_ |
| Append this word to files related to the sensitivities. | |
| bool | includeDistance_ |
| Include distance variation in sensitivity computations. | |
| autoPtr< adjointEikonalSolver > | eikonalSolver_ |
| Adjoint eikonal equation solver. | |
| autoPtr< adjointMeshMovementSolver > | adjointMeshMovementSolver_ |
| Adjoint grid displacement solver. | |
| autoPtr< volTensorField > | gradDxDbMult_ |
| Multiplier of grad(dx/b). | |
| autoPtr< scalarField > | divDxDbMult_ |
| Multiplier of div(dx/db). | |
| autoPtr< boundaryVectorField > | dxdbMult_ |
| Multiplier of face dx/db. | |
| autoPtr< boundaryVectorField > | dSfdbMult_ |
| Multiplier of dSf/db. | |
| autoPtr< boundaryVectorField > | dnfdbMult_ |
| Multiplier of dnf/db. | |
| autoPtr< boundaryVectorField > | dxdbDirectMult_ |
| Multiplier of dCf/db, found in the objective function. | |
| autoPtr< pointBoundaryVectorField > | pointDxDbDirectMult_ |
| Multiplier of dx/db computed at points, found in the objective function. | |
| autoPtr< boundaryVectorField > | bcDxDbMult_ |
| Multiplier of dx/db, coming from boundary conditions that depend on the geometry, like rotatingWallVelocity. | |
| autoPtr< vectorField > | optionsDxDbMult_ |
| dx/db multiplier coming from fvOptions | |
| Protected Attributes inherited from sensitivity | |
| const fvMesh & | mesh_ |
| dictionary | dict_ |
| bool | writeFieldSens_ |
| autoPtr< volScalarField > | fieldSensPtr_ |
Abstract base class for adjoint-based sensitivities.
Definition at line 56 of file adjointSensitivity.H.
| adjointSensitivity | ( | const fvMesh & | mesh, |
| const dictionary & | dict, | ||
| adjointSolver & | adjointSolver ) |
Construct from components.
Definition at line 45 of file adjointSensitivity.C.
References adjointSolver_, bcDxDbMult_, derivatives_, sensitivity::dict(), divDxDbMult_, dnfdbMult_, dSfdbMult_, dxdbDirectMult_, dxdbMult_, eikonalSolver_, gradDxDbMult_, includeDistance(), includeDistance_, sensitivity::mesh(), optionsDxDbMult_, pointDxDbDirectMult_, and suffix_.

|
virtualdefault |
| TypeName | ( | "adjointSensitivity" | ) |
Runtime type information.
| declareRunTimeSelectionTable | ( | autoPtr | , |
| adjointSensitivity | , | ||
| dictionary | , | ||
| (const fvMesh &mesh, const dictionary &dict, adjointSolver &adjointSolver) | , | ||
| (mesh, dict, adjointSolver) | ) |
|
static |
Return a reference to the selected turbulence model.
Definition at line 79 of file adjointSensitivity.C.
References sensitivity::dict(), Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInLookup, Foam::Info, and sensitivity::mesh().
Referenced by adjointSolver::allocateSensitivities(), and sensitivityMultiple::sensitivityMultiple().


|
virtual |
Read dictionary if changed.
Reimplemented from sensitivity.
Reimplemented in sensitivityMultiple, sensitivityShapeESI, sensitivitySurfacePoints, sensitivityTopO, and ShapeSensitivitiesBase.
Definition at line 113 of file adjointSensitivity.C.
References adjointSolver_, sensitivity::dict(), dictionary::getOrDefault(), includeDistance_, and sensitivity::readDict().
Referenced by sensitivityMultiple::readDict(), sensitivityTopO::readDict(), and ShapeSensitivitiesBase::readDict().


|
inline |
Const access to adjoint solver.
Definition at line 234 of file adjointSensitivity.H.
References adjointSolver_.
Referenced by levelSetDesignVariables::assembleSensitivities(), topODesignVariables::assembleSensitivities(), volumetricBSplinesDesignVariables::assembleSensitivities(), and shapeDesignVariables::writeSensitivities().

|
inline |
Non-const access to adjoint solver.
Definition at line 242 of file adjointSensitivity.H.
References adjointSolver_.
|
inline |
Should the adjoint eikonal PDE should be solved.
Definition at line 250 of file adjointSensitivity.H.
References includeDistance_.
Referenced by adjointSensitivity(), and shapeDesignVariables::assembleSensitivities().

|
inline |
Return the adjoint eikonal solver.
Definition at line 258 of file adjointSensitivity.H.
References eikonalSolver_.
Referenced by shapeDesignVariables::assembleSensitivities().

|
inline |
Return the adjoint eikonal solver.
Definition at line 267 of file adjointSensitivity.H.
References adjointMeshMovementSolver_.
|
inline |
Set suffix.
Definition at line 275 of file adjointSensitivity.H.
References suffix_.
Referenced by sensitivitySurfacePoints::setSuffixName().

|
inline |
Get suffix.
Definition at line 283 of file adjointSensitivity.H.
References suffix_.
Referenced by shapeDesignVariables::writeSensitivities().

|
virtual |
Should the parameterization compute the internalField of dxdb.
Reimplemented in sensitivityShapeFI.
Definition at line 133 of file adjointSensitivity.C.
Referenced by shapeDesignVariables::assembleSensitivities().

|
pure virtual |
Accumulate sensitivity integrands.
Corresponds to the flow and adjoint part of the sensitivities
Implemented in sensitivityMultiple, sensitivityTopO, and ShapeSensitivitiesBase.
References word::null.
|
virtual |
Assemble sensitivities.
Adds the geometric part of the sensitivities
Reimplemented in sensitivityMultiple, sensitivityShapeESI, sensitivityShapeFI, sensitivitySurface, sensitivitySurfacePoints, and sensitivityTopO.
Definition at line 139 of file adjointSensitivity.C.
References derivatives_.
Referenced by sensitivityShapeESI::assembleSensitivities(), sensitivityShapeFI::assembleSensitivities(), sensitivitySurfacePoints::assembleSensitivities(), sensitivityTopO::assembleSensitivities(), and calculateSensitivities().

|
virtual |
Calculates and returns sensitivity fields.
Used with optimisation libraries
Implements sensitivity.
Reimplemented in sensitivityMultiple.
Definition at line 148 of file adjointSensitivity.C.
References assembleSensitivities(), derivatives_, Foam::type(), and write().

| const scalarField & getSensitivities | ( | ) | const |
Returns the sensitivity fields.
Assumes it has already been updated/computed
Definition at line 159 of file adjointSensitivity.C.
References derivatives_.
|
virtual |
Zero sensitivity fields and their constituents.
Reimplemented in sensitivityMultiple, and ShapeSensitivitiesBase.
Definition at line 165 of file adjointSensitivity.C.
References adjointMeshMovementSolver_, derivatives_, eikonalSolver_, sensitivity::fieldSensPtr_, and Foam::Zero.
Referenced by ShapeSensitivitiesBase::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 sensitivityMultiple, sensitivitySurfacePoints, and ShapeSensitivitiesBase.
Definition at line 183 of file adjointSensitivity.C.
References sensitivity::write().
Referenced by sensitivitySurfacePoints::write(), and ShapeSensitivitiesBase::write().


|
inline |
Definition at line 25 of file adjointSensitivityI.H.
References gradDxDbMult_.
Referenced by shapeDesignVariables::assembleSensitivities().

|
inline |
Definition at line 32 of file adjointSensitivityI.H.
References gradDxDbMult_.
|
inline |
Definition at line 38 of file adjointSensitivityI.H.
References divDxDbMult_.
Referenced by shapeDesignVariables::assembleSensitivities().

|
inline |
Definition at line 45 of file adjointSensitivityI.H.
References dxdbMult_.
Referenced by shapeDesignVariables::assembleSensitivities().

|
inline |
Definition at line 52 of file adjointSensitivityI.H.
References dSfdbMult_.
Referenced by shapeDesignVariables::assembleSensitivities().

|
inline |
Definition at line 58 of file adjointSensitivityI.H.
References dnfdbMult_.
Referenced by shapeDesignVariables::assembleSensitivities().

|
inline |
Definition at line 64 of file adjointSensitivityI.H.
References dxdbDirectMult_.
Referenced by shapeDesignVariables::assembleSensitivities().

|
inline |
Definition at line 70 of file adjointSensitivityI.H.
References pointDxDbDirectMult_.
|
inline |
Definition at line 76 of file adjointSensitivityI.H.
References bcDxDbMult_.
Referenced by shapeDesignVariables::assembleSensitivities().

|
inline |
Definition at line 82 of file adjointSensitivityI.H.
References optionsDxDbMult_.
Referenced by shapeDesignVariables::assembleSensitivities().

|
protected |
Reference to the underlaying adjoint solver.
Definition at line 68 of file adjointSensitivity.H.
Referenced by sensitivityTopO::accumulateIntegrand(), ShapeSensitivitiesBase::accumulateIntegrand(), adjointSensitivity(), ShapeSensitivitiesBase::allocateEikonalSolver(), sensitivityShapeESI::computeDxDbMult(), getAdjointSolver(), getAdjointSolver(), ShapeSensitivitiesBase::hasMultiplier(), readDict(), sensitivityTopO::readDict(), and sensitivitySurfacePoints::setSuffixName().
|
protected |
The sensitivity derivative values.
Definition at line 73 of file adjointSensitivity.H.
Referenced by adjointSensitivity(), assembleSensitivities(), sensitivitySurface::assembleSensitivities(), sensitivitySurfacePoints::assembleSensitivities(), calculateSensitivities(), sensitivityMultiple::calculateSensitivities(), clearSensitivities(), sensitivitySurfacePoints::computePointDerivativesSize(), getSensitivities(), sensitivitySurface::sensitivitySurface(), and sensitivityTopO::sensitivityTopO().
|
protected |
Append this word to files related to the sensitivities.
Definition at line 78 of file adjointSensitivity.H.
Referenced by adjointSensitivity(), getSuffix(), ShapeSensitivitiesBase::getWallFaceSensNormal(), ShapeSensitivitiesBase::getWallFaceSensNormalVec(), ShapeSensitivitiesBase::getWallFaceSensVec(), setSuffix(), sensitivitySurface::smoothSensitivities(), ShapeSensitivitiesBase::writeFaceBasedSens(), and ShapeSensitivitiesBase::writePointBasedSens().
|
protected |
Include distance variation in sensitivity computations.
Definition at line 83 of file adjointSensitivity.H.
Referenced by adjointSensitivity(), ShapeSensitivitiesBase::allocateEikonalSolver(), includeDistance(), readDict(), sensitivityTopO::readDict(), ShapeSensitivitiesBase::readDict(), and sensitivityTopO::sensitivityTopO().
|
protected |
Adjoint eikonal equation solver.
Definition at line 88 of file adjointSensitivity.H.
Referenced by sensitivityTopO::accumulateIntegrand(), ShapeSensitivitiesBase::accumulateIntegrand(), adjointSensitivity(), ShapeSensitivitiesBase::allocateEikonalSolver(), sensitivityShapeFI::assembleSensitivities(), sensitivityTopO::assembleSensitivities(), ShapeSensitivitiesBase::clearMultipliers(), clearSensitivities(), sensitivityShapeESI::computeDxDbMult(), getAdjointEikonalSolver(), sensitivityTopO::readDict(), ShapeSensitivitiesBase::readDict(), and sensitivityTopO::sensitivityTopO().
|
protected |
Adjoint grid displacement solver.
Definition at line 93 of file adjointSensitivity.H.
Referenced by clearSensitivities(), sensitivityShapeESI::computeDxDbMult(), getAdjointMeshMovementSolver(), sensitivityShapeESI::readDict(), and sensitivitySurfacePoints::setSuffixName().
|
protected |
Multiplier of grad(dx/b).
Definition at line 102 of file adjointSensitivity.H.
Referenced by ShapeSensitivitiesBase::accumulateIntegrand(), adjointSensitivity(), ShapeSensitivitiesBase::allocateMultipliers(), ShapeSensitivitiesBase::clearMultipliers(), sensitivityShapeESI::computeDxDbMult(), gradDxDbMult(), and gradDxDbMult().
|
protected |
Multiplier of div(dx/db).
Definition at line 107 of file adjointSensitivity.H.
Referenced by ShapeSensitivitiesBase::accumulateIntegrand(), adjointSensitivity(), ShapeSensitivitiesBase::allocateMultipliers(), ShapeSensitivitiesBase::clearMultipliers(), and divDxDbMult().
|
protected |
Multiplier of face dx/db.
The term that multiplies the adjoint-related part of the sensitivities in the (E)SI approach
Definition at line 115 of file adjointSensitivity.H.
Referenced by adjointSensitivity(), ShapeSensitivitiesBase::clearMultipliers(), sensitivityShapeESI::computeDxDbMult(), dxdbMult(), sensitivitySurfacePoints::finalisePointSensitivities(), and sensitivityShapeESI::sensitivityShapeESI().
|
protected |
Multiplier of dSf/db.
Definition at line 120 of file adjointSensitivity.H.
Referenced by ShapeSensitivitiesBase::accumulateIntegrand(), adjointSensitivity(), ShapeSensitivitiesBase::allocateMultipliers(), ShapeSensitivitiesBase::clearMultipliers(), dSfdbMult(), and sensitivitySurfacePoints::finalisePointSensitivities().
|
protected |
Multiplier of dnf/db.
Definition at line 125 of file adjointSensitivity.H.
Referenced by ShapeSensitivitiesBase::accumulateIntegrand(), adjointSensitivity(), ShapeSensitivitiesBase::allocateMultipliers(), ShapeSensitivitiesBase::clearMultipliers(), dnfdbMult(), and sensitivitySurfacePoints::finalisePointSensitivities().
|
protected |
Multiplier of dCf/db, found in the objective function.
Definition at line 130 of file adjointSensitivity.H.
Referenced by ShapeSensitivitiesBase::accumulateIntegrand(), adjointSensitivity(), ShapeSensitivitiesBase::allocateMultipliers(), ShapeSensitivitiesBase::clearMultipliers(), sensitivityShapeESI::computeDxDbMult(), dxdbDirectMult(), sensitivitySurfacePoints::finalisePointSensitivities(), and sensitivityShapeESI::sensitivityShapeESI().
|
protected |
Multiplier of dx/db computed at points, found in the objective function.
Definition at line 136 of file adjointSensitivity.H.
Referenced by ShapeSensitivitiesBase::accumulateIntegrand(), adjointSensitivity(), ShapeSensitivitiesBase::clearMultipliers(), and pointDxDbDirectMult().
|
protected |
Multiplier of dx/db, coming from boundary conditions that depend on the geometry, like rotatingWallVelocity.
Definition at line 142 of file adjointSensitivity.H.
Referenced by ShapeSensitivitiesBase::accumulateIntegrand(), adjointSensitivity(), ShapeSensitivitiesBase::allocateMultipliers(), bcDxDbMult(), ShapeSensitivitiesBase::clearMultipliers(), and sensitivitySurfacePoints::finalisePointSensitivities().
|
protected |
dx/db multiplier coming from fvOptions
Definition at line 147 of file adjointSensitivity.H.
Referenced by ShapeSensitivitiesBase::accumulateIntegrand(), adjointSensitivity(), ShapeSensitivitiesBase::allocateMultipliers(), ShapeSensitivitiesBase::clearMultipliers(), and optionsDxDbMult().