Go to the documentation of this file.
43 volBSplinesBase::volBSplinesBase
50 activeDesignVariables_(0)
65 ).
subDict(
"volumetricBSplinesMotionSolverCoeffs")
68 wordList controlBoxes(NURBSdict.toc());
69 volume_.
setSize(controlBoxes.size());
73 for (
const word& boxName : controlBoxes)
75 if (NURBSdict.isDict(boxName))
82 NURBSdict.subDict(boxName),
87 volume_[iBox].write();
91 volume_.setSize(iBox);
94 activeDesignVariables_.setSize(3*getTotalControlPointsNumber(), -1);
96 const labelList startCpID(getStartCpID());
100 const boolList& isActiveVar = volume_[boxI].getActiveDesignVariables();
103 if (isActiveVar[varI])
105 activeDesignVariables_[iActive++] =
start + varI;
109 activeDesignVariables_.setSize(iActive);
141 return volume_[iNURB].getControlPoints();
162 nCPs += volume_[iNURB].getControlPoints().size();
171 return volume_.size();
183 startID[iNURB] +
volume_[iNURB].getControlPoints().size();
202 scalar maxDisplacement(0);
203 label pastControlPoints(0);
206 const label nb = volume_[iNURB].getControlPoints().size();
210 forAll(localControlPointsMovement, iCPM)
212 localControlPointsMovement[iCPM] =
213 controlPointsMovement[pastControlPoints + iCPM];
216 maxDisplacement =
max
219 volume_[iNURB].computeMaxBoundaryDisplacement
221 localControlPointsMovement,
226 pastControlPoints += nb;
229 return maxDisplacement;
238 label pastControlPoints(0);
241 label nb = volume_[iNURB].getControlPoints().size();
245 forAll (localControlPointsMovement, iCPM)
247 localControlPointsMovement[iCPM] =
248 controlPointsMovement[pastControlPoints + iCPM];
251 volume_[iNURB].boundControlPointMovement(localControlPointsMovement);
254 forAll(localControlPointsMovement, iCPM)
256 controlPointsMovement[pastControlPoints + iCPM] =
257 localControlPointsMovement[iCPM];
260 pastControlPoints += nb;
270 label pastControlPoints(0);
273 const label nb = volume_[iNURB].getControlPoints().size();
277 forAll (localControlPointsMovement, iCPM)
279 localControlPointsMovement[iCPM] =
280 controlPointsMovement[pastControlPoints + iCPM];
285 volume_[iNURB].getControlPoints()
286 + localControlPointsMovement
289 volume_[iNURB].setControlPoints(newCps);
291 pastControlPoints += nb;
300 box.writeCps(
"cpsBsplines"+mesh_.time().timeName());
301 box.writeCpsInDict();
labelList activeDesignVariables_
Active design variables numbering for all boxes.
virtual bool movePoints()
Dummy function required by MeshObject.
NURBS3DVolume & boxRef(const label boxI)
Get non-const reference to a specific box.
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
Defines the attributes of an object for which implicit objectRegistry management is supported,...
A class for handling words, derived from Foam::string.
static constexpr const zero Zero
Global zero.
vectorField getAllControlPoints() const
Get control points from all boxes.
NURBS3DVolume morpher. Includes support functions for gradient computations Base class providing supp...
const NURBS3DVolume & box(const label boxI) const
Get const reference to a specific box.
const labelList & getActiveDesignVariables() const
Get active design variables.
void moveControlPoints(const vectorField &controlPointsMovement)
Move control points. No effect on mesh.
const PtrList< NURBS3DVolume > & boxes() const
Get const reference to the vol. B-splines boxes.
#define forAll(list, i)
Loop across all elements in list.
void boundControlPointsMovement(vectorField &controlPointsMovement)
Bound control points movement.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
label getTotalControlPointsNumber() const
Get cumulative number of control points from all boxes.
const vectorField & getControlPoints(const label &iNURB) const
Get reference to control points.
const dictionary & subDict(const word &keyword, enum keyType::option matchOpt=keyType::REGEX) const
Find and return a sub-dictionary.
label getNumberOfBoxes() const
Get number of boxes.
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers....
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
PtrList< NURBS3DVolume > & boxesRef()
Get non-const reference to the vol. B-splines boxes.
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.
PtrList< NURBS3DVolume > volume_
List with volumetric B-splines boxes.
scalar computeMaxBoundaryDisplacement(const vectorField &controlPointsMovement, const labelList &patchesToBeMoved)
labelList getStartCpID() const
Get start CP ID for each box.
label ListType::const_reference const label start
virtual void updateMesh(const mapPolyMesh &)
Dummy function required by MeshObject.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
static autoPtr< NURBS3DVolume > New(const dictionary &dict, const fvMesh &mesh, bool computeParamCoors=true)
Return a reference to the selected NURBS model.
const Time & time() const
Return the top-level database.
void setSize(const label newSize)
Alias for resize(const label)
const word & constant() const
Return constant name.
defineTypeNameAndDebug(combustionModel, 0)
void writeControlPoints() const
Write control points to constant and optimisation folders.