sensitivitySurfacePoints Class Reference

Calculation of adjoint-based sensitivities at wall points using the E-SI formulation. More...

Inheritance diagram for sensitivitySurfacePoints:
Collaboration diagram for sensitivitySurfacePoints:

Public Member Functions

 TypeName ("surfacePoints")
 Runtime type information. More...
 
 sensitivitySurfacePoints (const fvMesh &mesh, const dictionary &dict, adjointSolver &adjointSolver)
 Construct from components. More...
 
virtual ~sensitivitySurfacePoints ()=default
 Destructor. More...
 
void read ()
 Read controls and update solver pointers if necessary. More...
 
virtual bool readDict (const dictionary &dict)
 Read dict if changed. More...
 
virtual const labelHashSetgeometryVariationIntegrationPatches () const
 Return set of patches on which to compute direct sensitivities. More...
 
virtual void assembleSensitivities (autoPtr< designVariables > &designVars)
 Assemble sensitivities. More...
 
virtual void write (const word &baseName=word::null)
 Write sensitivity fields. More...
 
- Public Member Functions inherited from sensitivityShapeESI
 TypeName ("shapeESI")
 Runtime type information. More...
 
 sensitivityShapeESI (const fvMesh &mesh, const dictionary &dict, adjointSolver &adjointSolver)
 Construct from components. More...
 
virtual ~sensitivityShapeESI ()=default
 Destructor. More...
 
- Public Member Functions inherited from ShapeSensitivitiesBase
 TypeName ("ShapeSensitivitiesBase")
 Runtime type information. More...
 
 ShapeSensitivitiesBase (const fvMesh &mesh, const dictionary &dict, adjointSolver &adjointSolver)
 Construct from components. More...
 
virtual ~ShapeSensitivitiesBase ()=default
 Destructor. More...
 
const labelHashSetsensitivityPatchIDs () const
 Get patch IDs on which sensitivities are computed. More...
 
void setSensitivityPatchIDs (const labelHashSet &sensPatchIDs)
 Overwrite sensitivityPatchIDs. More...
 
virtual void accumulateIntegrand (const scalar dt)
 Accumulate sensitivity integrands. More...
 
void clearSensitivities ()
 Zero sensitivity fields and their constituents. More...
 
tmp< volVectorFieldgetWallFaceSensVec ()
 Get wall face sensitivity vectors field. More...
 
tmp< volScalarFieldgetWallFaceSensNormal ()
 Get wall face sensitivity projected to normal field. More...
 
tmp< volVectorFieldgetWallFaceSensNormalVec ()
 Get wall face normal sens as vectors field. More...
 
tmp< pointVectorFieldgetWallPointSensVec ()
 Get wall point sensitivity vectors field. More...
 
tmp< pointScalarFieldgetWallPointSensNormal ()
 Get wall point sensitivity projected to normal field. More...
 
tmp< pointVectorFieldgetWallPointSensNormalVec ()
 Get wall point sens as vectors field. More...
 
virtual const boundaryVectorFieldgetWallFaceSensVecBoundary () const
 Get wall face sensitivity vectors field. More...
 
virtual const boundaryScalarFieldgetWallFaceSensNormalBoundary () const
 Get wall face sensitivity projected to normal field. More...
 
virtual const boundaryVectorFieldgetWallFaceSensNormalVecBoundary () const
 Get wall face normal sens as vectors field. More...
 
- Public Member Functions inherited from adjointSensitivity
 TypeName ("adjointSensitivity")
 Runtime type information. More...
 
 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. More...
 
virtual ~adjointSensitivity ()=default
 Destructor. More...
 
const adjointSolvergetAdjointSolver () const
 Const access to adjoint solver. More...
 
adjointSolvergetAdjointSolver ()
 Non-const access to adjoint solver. More...
 
bool includeDistance () const
 Should the adjoint eikonal PDE should be solved. More...
 
autoPtr< adjointEikonalSolver > & getAdjointEikonalSolver ()
 Return the adjoint eikonal solver. More...
 
autoPtr< adjointMeshMovementSolver > & getAdjointMeshMovementSolver ()
 Return the adjoint eikonal solver. More...
 
void setSuffix (const word &suffix)
 Set suffix. More...
 
const wordgetSuffix () const
 Get suffix. More...
 
virtual bool computeDxDbInternalField () const
 Should the parameterization compute the internalField of dxdb. More...
 
virtual const scalarFieldcalculateSensitivities (autoPtr< designVariables > &designVars)
 Calculates and returns sensitivity fields. More...
 
const scalarFieldgetSensitivities () const
 Returns the sensitivity fields. More...
 
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. More...
 
 sensitivity (const fvMesh &mesh, const dictionary &dict)
 Construct from components. More...
 
virtual ~sensitivity ()=default
 Destructor. More...
 
const fvMeshmesh () const
 Return reference to mesh. More...
 
const dictionarydict () const
 Return the construction dictionary. More...
 
const autoPtr< volScalarField > & fieldSensPtr () const
 Get the fieldSensPtr. More...
 

Protected Member Functions

labelHashSet populateExtendedIDs () const
 Set suffix name for sensitivity fields. More...
 
void finalisePointSensitivities ()
 Converts face sensitivities to point sensitivities and adds the ones directly computed in points (i.e. dSf/db and dnf/db). More...
 
void constructGlobalPointNormalsAndAreas (vectorField &pointNormals, scalarField &pointMagSf)
 Construct globally correct point normals and point areas. More...
 
void setSuffixName ()
 Set suffix name for sensitivity fields. More...
 
void computePointDerivativesSize ()
 Allocate the proper size for the point-based sensitivities. More...
 
- Protected Member Functions inherited from sensitivityShapeESI
void computeDxDbMult ()
 Compute dxdbMult from its various components. More...
 
- Protected Member Functions inherited from ShapeSensitivitiesBase
void allocateEikonalSolver ()
 Allocate the adjoint eikonal solver. More...
 
bool hasMultiplier (bool(objective::*hasFunction)() const)
 Check if any of the available objective has a certain multiplier, provided through a function object. More...
 
template<class Type >
void constructAndWriteSensitivityField (const autoPtr< typename GeometricField< Type, fvPatchField, volMesh >::Boundary > &sensFieldPtr, const word &name) const
 Constructs volField based on boundaryField and writes it. More...
 
template<class Type >
void constructAndWriteSensitivtyPointField (const autoPtr< List< Field< Type >>> &sensFieldPtr, const word &name) const
 Constructs pointField based on boundaryField and writes it. More...
 
template<class Type >
tmp< GeometricField< Type, fvPatchField, volMesh > > constructVolSensitivtyField (const autoPtr< typename GeometricField< Type, fvPatchField, volMesh >::Boundary > &sensFieldPtr, const word &name) const
 Constructs volField based on boundaryField and writes it. More...
 
void writeFaceBasedSens () const
 Write face-based sensitivities, if present. More...
 
void writePointBasedSens () const
 Write point-based sensitivities, if present. More...
 
void clearSurfaceFields ()
 Clear surface/point fields. More...
 
void allocateMultipliers ()
 Allocate multiplier fields. More...
 
void clearMultipliers ()
 Clear multipliers. More...
 

Protected Attributes

bool writeGeometricInfo_
 Write geometric info for use by external programs. More...
 
bool includeSurfaceArea_
 Include surface area in sens computation. More...
 
boolList isSymmetryPoint_
 Is point belonging to a symmetry{Plane}. More...
 
vectorField symmPointNormal_
 Local point normal per symmetry point. More...
 
labelHashSet extendedPatchIDs_
 Extended patchIDs. More...
 
- Protected Attributes inherited from ShapeSensitivitiesBase
labelHashSet sensitivityPatchIDs_
 Patches on which to compute shape sensitivities. More...
 
bool writeAllSurfaceFiles_
 Whether to write all surface sensitivity fields. More...
 
autoPtr< boundaryVectorFieldwallFaceSensVecPtr_
 Wall face sens w.r.t. (x,y.z) More...
 
autoPtr< boundaryScalarFieldwallFaceSensNormalPtr_
 Wall face sens projected to normal. More...
 
autoPtr< boundaryVectorFieldwallFaceSensNormalVecPtr_
 Normal sens as vectors. More...
 
autoPtr< pointBoundaryVectorFieldwallPointSensVecPtr_
 Wall point sens w.r.t. (x,y.z) More...
 
autoPtr< pointBoundaryScalarFieldwallPointSensNormalPtr_
 Wall point sens projected to normal. More...
 
autoPtr< pointBoundaryVectorFieldwallPointSensNormalVecPtr_
 Normal sens as vectors. More...
 
- Protected Attributes inherited from adjointSensitivity
adjointSolveradjointSolver_
 Reference to the underlaying adjoint solver. More...
 
scalarField derivatives_
 The sensitivity derivative values. More...
 
word suffix_
 Append this word to files related to the sensitivities. More...
 
bool includeDistance_
 Include distance variation in sensitivity computations. More...
 
autoPtr< adjointEikonalSolvereikonalSolver_
 Adjoint eikonal equation solver. More...
 
autoPtr< adjointMeshMovementSolveradjointMeshMovementSolver_
 Adjoint grid displacement solver. More...
 
autoPtr< volTensorFieldgradDxDbMult_
 Multiplier of grad(dx/b) More...
 
autoPtr< scalarFielddivDxDbMult_
 Multiplier of div(dx/db) More...
 
autoPtr< boundaryVectorFielddxdbMult_
 Multiplier of face dx/db. More...
 
autoPtr< boundaryVectorFielddSfdbMult_
 Multiplier of dSf/db. More...
 
autoPtr< boundaryVectorFielddnfdbMult_
 Multiplier of dnf/db. More...
 
autoPtr< boundaryVectorFielddxdbDirectMult_
 Multiplier of dCf/db, found in the objective function. More...
 
autoPtr< pointBoundaryVectorFieldpointDxDbDirectMult_
 Multiplier of dx/db computed at points, found in the objective function. More...
 
autoPtr< boundaryVectorFieldbcDxDbMult_
 Multiplier of dx/db, coming from boundary conditions that depend on the geometry, like rotatingWallVelocity. More...
 
autoPtr< vectorFieldoptionsDxDbMult_
 dx/db multiplier coming from fvOptions More...
 
- Protected Attributes inherited from sensitivity
const fvMeshmesh_
 
dictionary dict_
 
bool writeFieldSens_
 
autoPtr< volScalarFieldfieldSensPtr_
 

Additional Inherited Members

- Static Public Member Functions inherited from adjointSensitivity
static autoPtr< adjointSensitivityNew (const fvMesh &mesh, const dictionary &dict, adjointSolver &adjointSolver)
 Return a reference to the selected turbulence model. More...
 

Detailed Description

Calculation of adjoint-based sensitivities at wall points using the E-SI formulation.

Source files

Definition at line 49 of file sensitivitySurfacePoints.H.

Constructor & Destructor Documentation

◆ sensitivitySurfacePoints()

sensitivitySurfacePoints ( const fvMesh mesh,
const dictionary dict,
adjointSolver adjointSolver 
)

◆ ~sensitivitySurfacePoints()

virtual ~sensitivitySurfacePoints ( )
virtualdefault

Destructor.

Member Function Documentation

◆ populateExtendedIDs()

labelHashSet populateExtendedIDs ( ) const
protected

Set suffix name for sensitivity fields.

Definition at line 48 of file sensitivitySurfacePoints.C.

References fvMesh::boundary(), forAll, sensitivity::mesh_, pp(), and UPtrList< T >::size().

Here is the call graph for this function:

◆ finalisePointSensitivities()

◆ constructGlobalPointNormalsAndAreas()

void constructGlobalPointNormalsAndAreas ( vectorField pointNormals,
scalarField pointMagSf 
)
protected

◆ setSuffixName()

void setSuffixName ( )
protected

Set suffix name for sensitivity fields.

Definition at line 68 of file sensitivitySurfacePoints.C.

References adjointSensitivity::adjointMeshMovementSolver_, adjointSensitivity::adjointSolver_, sensitivity::dict(), word::null, adjointSensitivity::setSuffix(), and solver::solverName().

Here is the call graph for this function:

◆ computePointDerivativesSize()

void computePointDerivativesSize ( )
protected

Allocate the proper size for the point-based sensitivities.

Definition at line 260 of file sensitivitySurfacePoints.C.

References polyMesh::boundaryMesh(), adjointSensitivity::derivatives_, sensitivity::mesh_, ShapeSensitivitiesBase::sensitivityPatchIDs_, and Foam::Zero.

Here is the call graph for this function:

◆ TypeName()

TypeName ( "surfacePoints"  )

Runtime type information.

◆ read()

void read ( )

Read controls and update solver pointers if necessary.

Definition at line 337 of file sensitivitySurfacePoints.C.

References sensitivity::dict(), dictionary::getOrDefault(), sensitivitySurfacePoints::includeSurfaceArea_, and sensitivitySurfacePoints::writeGeometricInfo_.

Referenced by sensitivitySurface::read(), and sensitivitySurfacePoints::readDict().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ readDict()

bool readDict ( const dictionary dict)
virtual

Read dict if changed.

Reimplemented from sensitivityShapeESI.

Definition at line 347 of file sensitivitySurfacePoints.C.

References sensitivity::dict(), sensitivitySurfacePoints::read(), and sensitivityShapeESI::readDict().

Here is the call graph for this function:

◆ geometryVariationIntegrationPatches()

const Foam::labelHashSet & geometryVariationIntegrationPatches ( ) const
virtual

Return set of patches on which to compute direct sensitivities.

Reimplemented from ShapeSensitivitiesBase.

Definition at line 360 of file sensitivitySurfacePoints.C.

◆ assembleSensitivities()

void assembleSensitivities ( autoPtr< designVariables > &  designVars)
virtual

Assemble sensitivities.

Reimplemented from sensitivityShapeESI.

Reimplemented in sensitivitySurface.

Definition at line 367 of file sensitivitySurfacePoints.C.

References adjointSensitivity::assembleSensitivities(), forAll, Field< Type >::normalise(), Foam::foamVersion::patch, Foam::constant::mathematical::pi(), syncTools::syncPointList(), Foam::vtk::write(), and Foam::Zero.

Referenced by sensitivitySurface::assembleSensitivities().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ write()

Member Data Documentation

◆ writeGeometricInfo_

bool writeGeometricInfo_
protected

Write geometric info for use by external programs.

Definition at line 60 of file sensitivitySurfacePoints.H.

Referenced by sensitivitySurfacePoints::read(), and sensitivitySurfacePoints::write().

◆ includeSurfaceArea_

bool includeSurfaceArea_
protected

Include surface area in sens computation.

Definition at line 65 of file sensitivitySurfacePoints.H.

Referenced by sensitivitySurfacePoints::read().

◆ isSymmetryPoint_

boolList isSymmetryPoint_
protected

Is point belonging to a symmetry{Plane}.

Definition at line 70 of file sensitivitySurfacePoints.H.

Referenced by sensitivitySurfacePoints::finalisePointSensitivities().

◆ symmPointNormal_

vectorField symmPointNormal_
protected

Local point normal per symmetry point.

Definition at line 75 of file sensitivitySurfacePoints.H.

Referenced by sensitivitySurfacePoints::finalisePointSensitivities().

◆ extendedPatchIDs_

labelHashSet extendedPatchIDs_
protected

Extended patchIDs.

Sensitivities from patches adjacent to the sensitivityPatchIDs_ should also be taken into consideration in order to compute the correct values at points in their interfaces

Definition at line 75 of file sensitivitySurfacePoints.H.

Referenced by sensitivitySurfacePoints::finalisePointSensitivities().


The documentation for this class was generated from the following files: