diff --git a/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/cylindrical/NURBS3DVolumeCylindrical.C b/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/cylindrical/NURBS3DVolumeCylindrical.C index f87ea8c195..c132d15c3e 100644 --- a/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/cylindrical/NURBS3DVolumeCylindrical.C +++ b/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/cylindrical/NURBS3DVolumeCylindrical.C @@ -61,6 +61,7 @@ Foam::vector Foam::NURBS3DVolumeCylindrical::transformPointToCartesian localSystemCoordinates.x()*sin(localSystemCoordinates.y()), localSystemCoordinates.z() ); + cartesianCoors += origin_; return cartesianCoors; } @@ -90,11 +91,11 @@ void Foam::NURBS3DVolumeCylindrical::updateLocalCoordinateSystem { forAll(cartesianPoints, pI) { - const vector& point = cartesianPoints[pI]; + const vector point(cartesianPoints[pI] - origin_); vector cylindricalCoors(Zero); - scalar R = Foam::sqrt(sqr(point.x()) + sqr(point.y())); - scalar theta = atan2(point.y(), point.x()); + const scalar R(Foam::sqrt(sqr(point.x()) + sqr(point.y()))); + const scalar theta(atan2(point.y(), point.x())); cylindricalCoors.x() = R; cylindricalCoors.y() = theta; cylindricalCoors.z() = cartesianPoints[pI].z(); @@ -105,7 +106,7 @@ void Foam::NURBS3DVolumeCylindrical::updateLocalCoordinateSystem ( IOobject ( - "cylindricalCoors", + "cylindricalCoors" + name_, mesh_.time().timeName(), mesh_, IOobject::NO_READ, @@ -128,7 +129,8 @@ Foam::NURBS3DVolumeCylindrical::NURBS3DVolumeCylindrical bool computeParamCoors ) : - NURBS3DVolume(dict, mesh, computeParamCoors) + NURBS3DVolume(dict, mesh, computeParamCoors), + origin_(dict.get("origin")) { updateLocalCoordinateSystem(mesh.points()); writeCps("cpsBsplines" + mesh_.time().timeName()); diff --git a/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/cylindrical/NURBS3DVolumeCylindrical.H b/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/cylindrical/NURBS3DVolumeCylindrical.H index dd59428032..7996c65584 100644 --- a/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/cylindrical/NURBS3DVolumeCylindrical.H +++ b/src/optimisation/adjointOptimisation/adjoint/parameterization/NURBS/NURBS3DVolume/cylindrical/NURBS3DVolumeCylindrical.H @@ -57,7 +57,13 @@ class NURBS3DVolumeCylindrical { protected: - // Protected data + // Protected Data + + //- Translation vector + vector origin_; + + + // Protected Member Functions //- Transform a point from its coordinate system to a cartesian system vector transformPointToCartesian(const vector& localCoordinates) const;