Go to the documentation of this file.
39 namespace incompressible
54 sensitivityBezier::sensitivityBezier
73 sens_(Bezier_.nBezier(),
Zero),
74 flowSens_(Bezier_.nBezier(),
Zero),
75 dSdbSens_(Bezier_.nBezier(),
Zero),
76 dndbSens_(Bezier_.nBezier(),
Zero),
77 dxdbDirectSens_(Bezier_.nBezier(),
Zero),
78 bcSens_(Bezier_.nBezier(),
Zero),
79 derivativesFolder_(
"optimisation"/
type() +
"Derivatives")
83 mkDir(derivativesFolder_);
100 for (
const label patchI : sensitivityPatchIDs_)
157 if (confineXmovement[cpI])
166 if (confineYmovement[cpI])
175 if (confineZmovement[cpI])
203 Info<<
"Writing control point sensitivities to file" <<
endl;
214 unsigned int widthDV =
max(
int(
name(
sens_.size()).size()),
int(3));
217 <<
setw(widthDV) <<
"#dv" <<
" "
218 <<
setw(width) <<
"total" <<
" "
219 <<
setw(width) <<
"flow" <<
" "
220 <<
setw(width) <<
"dSdb" <<
" "
221 <<
setw(width) <<
"dndb" <<
" "
222 <<
setw(width) <<
"dxdbDirect" <<
" "
227 label lastActive(-1);
228 for (label iDV = 0; iDV < nDV; iDV++)
230 label iCP = iDV%nBezier;
231 label idir = iDV/nBezier;
232 if (!confineMovement[idir][iCP])
234 if (iDV!=lastActive + 1) derivFile <<
"\n";
237 <<
setw(widthDV) << iDV <<
" "
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
class for managing incompressible objective functions.
virtual void assembleSensitivities()
Assemble sensitivities.
const word & solverName() const
Return solver name.
autoPtr< boundaryVectorField > bcDxDbMult_
const boolList & confineXmovement() const
Confine x movement.
A class for handling words, derived from Foam::string.
virtual void clearSensitivities()
Zero sensitivity fields and their constituents.
defineTypeNameAndDebug(adjointEikonalSolver, 0)
A class for managing temporary objects.
static constexpr const zero Zero
Global zero (0)
static word timeName(const scalar t, const int precision=precision_)
Base class for Surface Integral-based sensitivity derivatives.
virtual void write(const word &baseName=word::null)
Write sensitivities to file.
static bool master(const label communicator=worldComm)
Am I the master process.
Ostream & endl(Ostream &os)
Add newline and flush stream.
sensitivitySurface surfaceSensitivity_
Surface sensitivities.
Type gSum(const FieldField< Field, Type > &f)
const boolList & confineZmovement() const
Confine z movement.
Class including all adjoint fields for incompressible flows.
virtual void assembleSensitivities()
Assemble sensitivities.
#define forAll(list, i)
Loop across all elements in list.
virtual void clearSensitivities()
Zero sensitivity fields and their constituents.
label nBezier() const
Number of Bezier control points.
autoPtr< boundaryVectorField > dSfdbMult_
Fields related to direct sensitivities.
addToRunTimeSelectionTable(adjointSensitivity, sensitivityBezier, dictionary)
messageStream Info
Information stream (stdout output on master, null elsewhere)
virtual void write(const word &baseName=word::null)
Write sensitivity map.
Istream and Ostream manipulators taking arguments.
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
tmp< tensorField > dxdbFace(const label patchI, const label cpI, bool useChainRule=true) const
dxdb tensor for a Bezier parameterized patch
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
autoPtr< boundaryVectorField > dxdbDirectMult_
Macros for easy insertion into run-time selection tables.
incompressibleAdjointVars & adjointVars_
Mesh data needed to do the Finite Volume discretisation.
Omanip< int > setw(const int i)
tmp< Field< cmptType > > component(const direction) const
Return a component field of the field.
Output to file stream, using an OSstream.
bool includeObjective_
Whether to include direct sensitivities or not.
static unsigned int defaultPrecision() noexcept
Return the default precision.
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
const Time & time() const
Return the top-level database.
const boolList & confineYmovement() const
Confine y movement.
const boolListList & confineMovement() const
Info about confining movement in all directions.
autoPtr< boundaryVectorField > dnfdbMult_
bool mkDir(const fileName &pathName, mode_t mode=0777)
Make a directory and return an error if it could not be created.
Base class for solution control classes.
vectorField dxdbDirectSens_
fileName derivativesFolder_
tmp< tensorField > dndbBasedSensitivities(const label patchI, const label cpI, bool returnDimensionedNormalSens=true) const