38#ifndef BezierDesignVariables_H
39#define BezierDesignVariables_H
53class BezierDesignVariables
55 public shapeDesignVariables
88 void decomposeVarID(label& cpI, label& dir,
const label varID)
const;
96 BezierDesignVariables(
const BezierDesignVariables&) =
delete;
99 void operator=(
const BezierDesignVariables&) =
delete;
111 BezierDesignVariables
virtual tmp< vectorField > dSdb(const label patchI, const label varID) const
Get dSdb for given design variable and patch.
virtual scalar computeEta(scalarField &correction)
Compute eta if not set in the first step.
Bezier bezier_
The Bezier control points and auxiliary functions.
virtual ~BezierDesignVariables()=default
Destructor.
void decomposeVarID(label &cpI, label &dir, const label varID) const
Decompose varID to cpID and direction.
void readBounds(autoPtr< scalar > lowerBoundPtr=nullptr, autoPtr< scalar > upperBoundPtr=nullptr)
Read bounds for design variables, if present.
TypeName("Bezier")
Runtime type information.
virtual bool globalSum() const
Whether to use global sum when computing matrix-vector products.
pointVectorField dx_
Boundary movement due to the change in Bezier control points.
tmp< vectorField > computeBoundaryDisplacement(const scalarField &correction)
Transform the correction of design variables to control points' movement.
void setBounds(autoPtr< scalarField > &bounds, const vector &cpBounds)
Set uniform bounds for all control points.
virtual tmp< vectorField > dxdbFace(const label patchI, const label varID) const
Get dxdb for given design variable and patch.
virtual tmp< vectorField > dndb(const label patchI, const label varID) const
Get dndb for given design variable and patch.
virtual tmp< volVectorField > dCdb(const label varID) const
Get dCdb for given design variable.
Calculation of adjoint based sensitivities for Bezier control points.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Mesh data needed to do the Finite Volume discretisation.
A class for managing temporary objects.
Namespace for bounding specifications. At the moment, mostly for tables.
GeometricField< vector, pointPatchField, pointMesh > pointVectorField
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
tmp< fvMatrix< Type > > correction(const fvMatrix< Type > &)
Return the correction form of the given matrix by subtracting the matrix multiplied by the current fi...
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.