39namespace incompressible
64 sens_(Bezier_.nBezier(),
Zero),
65 flowSens_(Bezier_.nBezier(),
Zero),
66 dSdbSens_(Bezier_.nBezier(),
Zero),
67 dndbSens_(Bezier_.nBezier(),
Zero),
68 dxdbDirectSens_(Bezier_.nBezier(),
Zero),
69 bcSens_(Bezier_.nBezier(),
Zero),
70 derivativesFolder_(
"optimisation"/
type() +
"Derivatives")
91 for (
const label patchI : sensitivityPatchIDs_)
148 if (confineXmovement[cpI])
157 if (confineYmovement[cpI])
166 if (confineZmovement[cpI])
194 Info<<
"Writing control point sensitivities to file" <<
endl;
208 <<
setw(widthDV) <<
"#dv" <<
" "
209 <<
setw(width) <<
"total" <<
" "
210 <<
setw(width) <<
"flow" <<
" "
211 <<
setw(width) <<
"dSdb" <<
" "
212 <<
setw(width) <<
"dndb" <<
" "
213 <<
setw(width) <<
"dxdbDirect" <<
" "
218 label lastActive(-1);
219 for (label iDV = 0; iDV < nDV; iDV++)
221 label iCP = iDV%nBezier;
222 label idir = iDV/nBezier;
223 if (!confineMovement[idir][iCP])
225 if (iDV!=lastActive + 1) derivFile <<
"\n";
228 <<
setw(widthDV) << iDV <<
" "
Istream and Ostream manipulators taking arguments.
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
label nBezier() const
Number of Bezier control points.
const boolList & confineZmovement() const
Confine z movement.
const boolList & confineYmovement() const
Confine y movement.
const boolListList & confineMovement() const
Info about confining movement in all directions.
const boolList & confineXmovement() const
Confine x movement.
tmp< tensorField > dxdbFace(const label patchI, const label cpI, bool useChainRule=true) const
dxdb tensor for a Bezier parameterized patch
tmp< tensorField > dndbBasedSensitivities(const label patchI, const label cpI, bool returnDimensionedNormalSens=true) const
tmp< Field< cmptType > > component(const direction) const
Return a component field of the field.
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
static unsigned int defaultPrecision() noexcept
Return the default precision.
Output to file stream, using an OSstream.
static word timeName(const scalar t, const int precision=precision_)
void size(const label n)
Older name for setAddressableSize.
Base class for adjoint solvers.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
virtual bool write()
Write the output fields.
Mesh data needed to do the Finite Volume discretisation.
const Time & time() const
Return the top-level database.
Base class for incompressibleAdjoint solvers.
Base class for Surface Integral-based sensitivity derivatives.
virtual void clearSensitivities()
Zero sensitivity fields and their constituents.
sensitivitySurface surfaceSensitivity_
Surface sensitivities.
bool includeObjective_
Whether to include direct sensitivities or not.
Abstract base class for adjoint-based sensitivities in incompressible flows.
incompressibleAdjointVars & adjointVars_
Calculation of adjoint based sensitivities for Bezier control points.
virtual void clearSensitivities()
Zero sensitivity fields and their constituents.
vectorField dxdbDirectSens_
virtual void assembleSensitivities()
Assemble sensitivities.
fileName derivativesFolder_
virtual void assembleSensitivities()
Assemble sensitivities.
autoPtr< boundaryVectorField > dxdbDirectMult_
autoPtr< boundaryVectorField > bcDxDbMult_
autoPtr< boundaryVectorField > dnfdbMult_
autoPtr< boundaryVectorField > dSfdbMult_
Fields related to direct sensitivities.
splitCell * master() const
A class for managing temporary objects.
const word & solverName() const
Return solver name.
A class for handling words, derived from Foam::string.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
Type gSum(const FieldField< Field, Type > &f)
bool mkDir(const fileName &pathName, mode_t mode=0777)
Make a directory and return an error if it could not be created.
messageStream Info
Information stream (stdout output on master, null elsewhere)
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
Omanip< int > setw(const int i)
Ostream & endl(Ostream &os)
Add newline and flush stream.
static constexpr const zero Zero
Global zero (0)
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
#define forAll(list, i)
Loop across all elements in list.