Go to the documentation of this file.
40 optMeshMovementVolumetricBSplinesExternalMotionSolver,
46 optMeshMovementVolumetricBSplinesExternalMotionSolver,
64 for (label iCP = 0; iCP < nCPs; iCP++)
79 const label nb = boxes[iNURB].getControlPoints().size();
80 for (label cpI = 0; cpI < nb; ++cpI)
82 const label globalCP = passedCPs + cpI;
88 boxes[iNURB].patchDxDb(patchI, cpI)
107 Foam::optMeshMovementVolumetricBSplinesExternalMotionSolver::
108 optMeshMovementVolumetricBSplinesExternalMotionSolver
134 cpMovement_(volBSplinesBase_.getTotalControlPointsNumber(),
Zero)
143 computeBoundaryMovement(correction_);
146 displMethodPtr_->setMotionField(dx_);
151 volBSplinesBase_.moveControlPoints(cpMovement_);
154 volBSplinesBase_.writeControlPoints();
170 scalar maxDisplacement =
gMax(
mag(dx_.primitiveField()));
173 Info<<
"maxAllowedDisplacement/maxDisplacement \t"
174 << getMaxAllowedDisplacement() <<
"/" << maxDisplacement <<
endl;
175 scalar eta = getMaxAllowedDisplacement() / maxDisplacement;
186 return volBSplinesBase_.getActiveDesignVariables();
addToRunTimeSelectionTable(decompositionMethod, kahipDecomp, dictionary)
Defines the attributes of an object for which implicit objectRegistry management is supported,...
autoPtr< displacementMethod > displMethodPtr_
Class constructing a number of volumetric B-Splines boxes, read from dynamicMeshDict....
static constexpr const zero Zero
Ostream & endl(Ostream &os)
tmp< fvMatrix< Type > > correction(const fvMatrix< Type > &)
void moveControlPoints(const vectorField &controlPointsMovement)
Field< vector > vectorField
Specialisation of Field<T> for vector.
virtual scalar computeEta(const scalarField &correction)
virtual labelList getActiveDesignVariables() const
Generic templated field type.
label getTotalControlPointsNumber() const
void boundControlPointMovement(vectorField &controlPointsMovement)
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers....
PtrList< NURBS3DVolume > & boxesRef()
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Macros for easy insertion into run-time selection tables.
volBSplinesBase & volBSplinesBase_
Generic dimensioned Type class.
Mesh data needed to do the Finite Volume discretisation.
Mesh representing a set of points created from polyMesh.
Internal::FieldType & primitiveFieldRef(const bool updateAccessTime=true)
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh >> &tdf1, const word &name, const dimensionSet &dimensions)
void computeBoundaryMovement(const scalarField &correction)
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
Abstract base class for translating an update of the design variables into mesh movement.
defineTypeNameAndDebug(combustionModel, 0)
Type gMax(const FieldField< Field, Type > &f)
const Boundary & boundaryField() const
const dimensionSet dimless
void writeControlPoints() const