ENH: NURBS3DVolumeCylindrical: added an origin vector

to parameterize regions not centered in (0,0,0)
This commit is contained in:
Vaggelis Papoutsis
2019-12-13 20:32:03 +02:00
committed by Andrew Heather
parent c9aec64fb9
commit 22ac759d12
2 changed files with 14 additions and 6 deletions

View File

@ -61,6 +61,7 @@ Foam::vector Foam::NURBS3DVolumeCylindrical::transformPointToCartesian
localSystemCoordinates.x()*sin(localSystemCoordinates.y()), localSystemCoordinates.x()*sin(localSystemCoordinates.y()),
localSystemCoordinates.z() localSystemCoordinates.z()
); );
cartesianCoors += origin_;
return cartesianCoors; return cartesianCoors;
} }
@ -90,11 +91,11 @@ void Foam::NURBS3DVolumeCylindrical::updateLocalCoordinateSystem
{ {
forAll(cartesianPoints, pI) forAll(cartesianPoints, pI)
{ {
const vector& point = cartesianPoints[pI]; const vector point(cartesianPoints[pI] - origin_);
vector cylindricalCoors(Zero); vector cylindricalCoors(Zero);
scalar R = Foam::sqrt(sqr(point.x()) + sqr(point.y())); const scalar R(Foam::sqrt(sqr(point.x()) + sqr(point.y())));
scalar theta = atan2(point.y(), point.x()); const scalar theta(atan2(point.y(), point.x()));
cylindricalCoors.x() = R; cylindricalCoors.x() = R;
cylindricalCoors.y() = theta; cylindricalCoors.y() = theta;
cylindricalCoors.z() = cartesianPoints[pI].z(); cylindricalCoors.z() = cartesianPoints[pI].z();
@ -105,7 +106,7 @@ void Foam::NURBS3DVolumeCylindrical::updateLocalCoordinateSystem
( (
IOobject IOobject
( (
"cylindricalCoors", "cylindricalCoors" + name_,
mesh_.time().timeName(), mesh_.time().timeName(),
mesh_, mesh_,
IOobject::NO_READ, IOobject::NO_READ,
@ -128,7 +129,8 @@ Foam::NURBS3DVolumeCylindrical::NURBS3DVolumeCylindrical
bool computeParamCoors bool computeParamCoors
) )
: :
NURBS3DVolume(dict, mesh, computeParamCoors) NURBS3DVolume(dict, mesh, computeParamCoors),
origin_(dict.get<vector>("origin"))
{ {
updateLocalCoordinateSystem(mesh.points()); updateLocalCoordinateSystem(mesh.points());
writeCps("cpsBsplines" + mesh_.time().timeName()); writeCps("cpsBsplines" + mesh_.time().timeName());

View File

@ -57,7 +57,13 @@ class NURBS3DVolumeCylindrical
{ {
protected: protected:
// Protected data // Protected Data
//- Translation vector
vector origin_;
// Protected Member Functions
//- Transform a point from its coordinate system to a cartesian system //- Transform a point from its coordinate system to a cartesian system
vector transformPointToCartesian(const vector& localCoordinates) const; vector transformPointToCartesian(const vector& localCoordinates) const;