From 6a5d5e903e68f288261ae60a410305f8fbd26f96 Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Fri, 15 Apr 2016 11:27:18 +0100 Subject: [PATCH] septernion: Changed definition of the forward transformation for consistency with spatialTransform inline Foam::vector Foam::septernion::transformPoint(const vector& v) const { return r().transform(v - t()); } Now there is a 1:1 correspondence between septernion and spatialTransform and a septernion constructor from spatialTransform provided. Additionally "septernion::transform" has been renamed "septernion::transformPoint" to clarify that it transforms coordinate points rather than displacements or other relative vectors. --- .../test/quaternion/Test-quaternion.C | 20 +++++++---- .../Fields/transformField/transformField.C | 36 ++++++++----------- .../Fields/transformField/transformField.H | 12 +++---- .../primitives/septernion/septernion.C | 4 +-- .../primitives/septernion/septernion.H | 15 ++++---- .../primitives/septernion/septernionI.H | 32 +++++++++++------ .../spatialTransform/spatialTransform.H | 4 +++ .../spatialTransform/spatialTransformI.H | 11 +++++- .../multiSolidBodyMotionFvMesh.C | 4 +-- ...yMotionDisplacementPointPatchVectorField.C | 10 +++--- .../solidBodyMotionFunctions/SDA/SDA.C | 4 +-- .../axisRotationMotion/axisRotationMotion.C | 4 +-- .../linearMotion/linearMotion.C | 4 +-- .../multiMotion/multiMotion.C | 2 +- .../oscillatingLinearMotion.C | 4 +-- .../oscillatingRotatingMotion.C | 4 +-- .../rotatingMotion/rotatingMotion.C | 4 +-- .../solidBodyMotionFunction.C | 7 ++-- .../tabulated6DoFMotion/tabulated6DoFMotion.C | 4 +-- .../solidBodyMotionFvMesh.C | 6 ++-- 20 files changed, 108 insertions(+), 83 deletions(-) diff --git a/applications/test/quaternion/Test-quaternion.C b/applications/test/quaternion/Test-quaternion.C index 31a6d3ff46..4d657fb818 100644 --- a/applications/test/quaternion/Test-quaternion.C +++ b/applications/test/quaternion/Test-quaternion.C @@ -39,10 +39,10 @@ using namespace Foam; int main(int argc, char *argv[]) { - quaternion q(vector(1, 0, 0), 0.7853981); + quaternion q(vector(1, 2, 3), 0.7853981); Info<< "q " << q << endl; - vector v(0, 1, 0); + vector v(0.1, 0.4, 2.1); Info<< "v " << v << endl; Info<< "inv(q)*q " << inv(q)*q << endl; @@ -50,8 +50,11 @@ int main(int argc, char *argv[]) Info<< "q*quaternion(0, v)*conjugate(q) " << q*quaternion(0, v)*conjugate(q) << endl; + Info<< "q.R() " << q.R() << endl; Info<< "q.transform(v) " << q.transform(v) << endl; Info<< "q.R() & v " << (q.R() & v) << endl; + Info<< "quaternion(q.R()).transform(v) " + << (quaternion(q.R()).transform(v)) << endl; Info<< "q.invTransform(v) " << q.invTransform(v) << endl; @@ -60,13 +63,16 @@ int main(int argc, char *argv[]) Info<< "inv(tr)*tr " << inv(tr)*tr << endl; - Info<< "tr.transform(v) " << tr.transform(v) << endl; + Info<< "tr.transform(v) " << tr.transformPoint(v) << endl; - Info<< "(septernion(vector(0, -1, 0))*q*septernion(vector(0, 1, 0)))" + vector origin(1, 2, 4); + + Info<< "(septernion(-origin)*q*septernion(origin))" << ".transform(v) " - << (septernion(vector(0, -1, 0)) - *q - *septernion(vector(0, 1, 0))).transform(v) + << (septernion(-origin)*q*septernion(origin)).transformPoint(v) + << " " + << septernion(-origin) + .transformPoint(q.transform(septernion(origin).transformPoint(v))) << endl; Info<< "Test conversion from and to Euler-angles" << endl; diff --git a/src/OpenFOAM/fields/Fields/transformField/transformField.C b/src/OpenFOAM/fields/Fields/transformField/transformField.C index 4d35792d73..564632e1c1 100644 --- a/src/OpenFOAM/fields/Fields/transformField/transformField.C +++ b/src/OpenFOAM/fields/Fields/transformField/transformField.C @@ -66,7 +66,7 @@ Foam::tmp Foam::transform } -void Foam::transform +void Foam::transformPoints ( vectorField& rtf, const septernion& tr, @@ -75,50 +75,44 @@ void Foam::transform { vector T = tr.t(); - // Check if any rotation - if (mag(tr.r().R() - I) > SMALL) + // Check if any translation + if (mag(T) > VSMALL) { - transform(rtf, tr.r(), tf); - - if (mag(T) > VSMALL) - { - rtf += T; - } + TFOR_ALL_F_OP_F_OP_S(vector, rtf, =, vector, tf, -, vector, T); } else { - if (mag(T) > VSMALL) - { - TFOR_ALL_F_OP_S_OP_F(vector, rtf, =, vector, T, +, vector, tf); - } - else - { - rtf = tf; - } + rtf = tf; + } + + // Check if any rotation + if (mag(tr.r().R() - I) > SMALL) + { + transform(rtf, tr.r(), rtf); } } -Foam::tmp Foam::transform +Foam::tmp Foam::transformPoints ( const septernion& tr, const vectorField& tf ) { tmp tranf(new vectorField(tf.size())); - transform(tranf.ref(), tr, tf); + transformPoints(tranf.ref(), tr, tf); return tranf; } -Foam::tmp Foam::transform +Foam::tmp Foam::transformPoints ( const septernion& tr, const tmp& ttf ) { tmp tranf = New(ttf); - transform(tranf.ref(), tr, ttf()); + transformPoints(tranf.ref(), tr, ttf()); ttf.clear(); return tranf; } diff --git a/src/OpenFOAM/fields/Fields/transformField/transformField.H b/src/OpenFOAM/fields/Fields/transformField/transformField.H index efef059d9e..e466ab2021 100644 --- a/src/OpenFOAM/fields/Fields/transformField/transformField.H +++ b/src/OpenFOAM/fields/Fields/transformField/transformField.H @@ -117,14 +117,14 @@ tmp transform(const quaternion&, const vectorField&); tmp transform(const quaternion&, const tmp&); -//- Transform given vectorField with the given septernion -void transform(vectorField&, const septernion&, const vectorField&); +//- Transform given vectorField of coordinates with the given septernion +void transformPoints(vectorField&, const septernion&, const vectorField&); -//- Transform given vectorField with the given septernion -tmp transform(const septernion&, const vectorField&); +//- Transform given vectorField of coordinates with the given septernion +tmp transformPoints(const septernion&, const vectorField&); -//- Transform given tmp with the given septernion -tmp transform(const septernion&, const tmp&); +//- Transform given tmp of coordinates with the given septernion +tmp transformPoints(const septernion&, const tmp&); // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/septernion/septernion.C b/src/OpenFOAM/primitives/septernion/septernion.C index 67cae051fd..0dd3718a45 100644 --- a/src/OpenFOAM/primitives/septernion/septernion.C +++ b/src/OpenFOAM/primitives/septernion/septernion.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -66,7 +66,7 @@ Foam::septernion Foam::slerp const scalar t ) { - return septernion((1.0-t)*qa.t()+t*qb.t(), slerp(qa.r(), qb.r(), t)); + return septernion((1 - t)*qa.t() + t*qb.t(), slerp(qa.r(), qb.r(), t)); } diff --git a/src/OpenFOAM/primitives/septernion/septernion.H b/src/OpenFOAM/primitives/septernion/septernion.H index b6a672f3ec..c6bccca2eb 100644 --- a/src/OpenFOAM/primitives/septernion/septernion.H +++ b/src/OpenFOAM/primitives/septernion/septernion.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,6 +43,7 @@ SourceFiles #include "vector.H" #include "quaternion.H" +#include "spatialTransform.H" #include "word.H" #include "contiguous.H" @@ -97,6 +98,9 @@ public: //- Construct a pure rotation septernion given a rotation quaternion inline explicit septernion(const quaternion& r); + //- Construct a general septernion from the given spatialTransform + inline explicit septernion(const spatialTransform& st); + //- Construct from Istream septernion(Istream&); @@ -117,11 +121,11 @@ public: // Transform - //- Transform the given vector - inline vector transform(const vector& v) const; + //- Transform the given coordinate point + inline vector transformPoint(const vector& v) const; - //- Inverse Transform the given vector - inline vector invTransform(const vector& v) const; + //- Inverse Transform the given coordinate point + inline vector invTransformPoint(const vector& v) const; // Member operators @@ -153,7 +157,6 @@ public: //- Return the inverse of the given septernion inline septernion inv(const septernion& tr); - //- Return a string representation of a septernion word name(const septernion&); diff --git a/src/OpenFOAM/primitives/septernion/septernionI.H b/src/OpenFOAM/primitives/septernion/septernionI.H index d4a6a61789..8acf2b51e9 100644 --- a/src/OpenFOAM/primitives/septernion/septernionI.H +++ b/src/OpenFOAM/primitives/septernion/septernionI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -42,10 +42,16 @@ inline Foam::septernion::septernion(const vector& t) inline Foam::septernion::septernion(const quaternion& r) : - t_(vector::zero), + t_(Zero), r_(r) {} +inline Foam::septernion::septernion(const spatialTransform& st) +: + t_(st.r()), + r_(st.E()) +{} + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -73,15 +79,15 @@ inline Foam::quaternion& Foam::septernion::r() } -inline Foam::vector Foam::septernion::transform(const vector& v) const +inline Foam::vector Foam::septernion::transformPoint(const vector& v) const { - return t() + r().transform(v); + return r().transform(v - t()); } -inline Foam::vector Foam::septernion::invTransform(const vector& v) const +inline Foam::vector Foam::septernion::invTransformPoint(const vector& v) const { - return r().invTransform(v - t()); + return t() + r().invTransform(v); } @@ -95,7 +101,7 @@ inline void Foam::septernion::operator=(const septernion& tr) inline void Foam::septernion::operator*=(const septernion& tr) { - t_ += r().transform(tr.t()); + t_ = tr.t() + tr.r().invTransform(t_); r_ *= tr.r(); } @@ -103,6 +109,7 @@ inline void Foam::septernion::operator*=(const septernion& tr) inline void Foam::septernion::operator=(const vector& t) { t_ = t; + r_ = quaternion::I; } inline void Foam::septernion::operator+=(const vector& t) @@ -118,16 +125,19 @@ inline void Foam::septernion::operator-=(const vector& t) inline void Foam::septernion::operator=(const quaternion& r) { + t_ = Zero; r_ = r; } inline void Foam::septernion::operator*=(const quaternion& r) { + t_ = r.invTransform(t_); r_ *= r; } inline void Foam::septernion::operator/=(const quaternion& r) { + t_ = r.transform(t_); r_ /= r; } @@ -149,7 +159,7 @@ inline void Foam::septernion::operator/=(const scalar s) inline Foam::septernion Foam::inv(const septernion& tr) { - return septernion(-tr.r().invTransform(tr.t()), conjugate(tr.r())); + return septernion(-tr.r().transform(tr.t()), conjugate(tr.r())); } @@ -213,7 +223,7 @@ inline Foam::septernion Foam::operator* const quaternion& r ) { - return septernion(tr.t(), tr.r()*r); + return septernion(r.invTransform(tr.t()), tr.r()*r); } @@ -223,7 +233,7 @@ inline Foam::septernion Foam::operator/ const quaternion& r ) { - return septernion(tr.t(), tr.r()/r); + return septernion(r.transform(tr.t()), tr.r()/r); } @@ -235,7 +245,7 @@ inline Foam::septernion Foam::operator* { return septernion ( - tr1.t() + tr1.r().transform(tr2.t()), + tr2.r().invTransform(tr1.t()) + tr2.t(), tr1.r().transform(tr2.r()) ); } diff --git a/src/OpenFOAM/primitives/spatialVectorAlgebra/spatialTransform/spatialTransform.H b/src/OpenFOAM/primitives/spatialVectorAlgebra/spatialTransform/spatialTransform.H index 42eec8fcb8..475b03f9bb 100644 --- a/src/OpenFOAM/primitives/spatialVectorAlgebra/spatialTransform/spatialTransform.H +++ b/src/OpenFOAM/primitives/spatialVectorAlgebra/spatialTransform/spatialTransform.H @@ -178,6 +178,10 @@ public: // X.v = (E . vw, E . (vl - r^vw)) inline spatialVector operator&(const spatialVector& v) const; + //- Transform position p + // X:p = E . (pl - r) + inline vector transformPoint(const vector& p) const; + //- Transform position p // X:p = (E . pw, E . (vl - r)) inline spatialVector operator&&(const spatialVector& v) const; diff --git a/src/OpenFOAM/primitives/spatialVectorAlgebra/spatialTransform/spatialTransformI.H b/src/OpenFOAM/primitives/spatialVectorAlgebra/spatialTransform/spatialTransformI.H index 83f40bb4a8..ab1dcaaec9 100644 --- a/src/OpenFOAM/primitives/spatialVectorAlgebra/spatialTransform/spatialTransformI.H +++ b/src/OpenFOAM/primitives/spatialVectorAlgebra/spatialTransform/spatialTransformI.H @@ -128,7 +128,7 @@ inline Foam::spatialTransform::operator spatialTensor() const inline void Foam::spatialTransform::operator&=(const spatialTransform& X) { E_ &= X.E_; - r_ = X.r_ + (r_ & X.E_.T()); + r_ = X.r_ + (r_ & X.E_); } @@ -167,6 +167,15 @@ inline Foam::spatialVector Foam::spatialTransform::operator&& } +inline Foam::vector Foam::spatialTransform::transformPoint +( + const vector& p +) const +{ + return E_ & (p - r_); +} + + inline Foam::spatialTransform::transpose::operator spatialTensor() const { return spatialTensor diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/multiSolidBodyMotionFvMesh.C b/src/dynamicFvMesh/solidBodyMotionFvMesh/multiSolidBodyMotionFvMesh.C index 4051f7a7ea..3e6d98ea8e 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/multiSolidBodyMotionFvMesh.C +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/multiSolidBodyMotionFvMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -185,7 +185,7 @@ bool Foam::multiSolidBodyMotionFvMesh::update() const labelList& zonePoints = pointIDs_[i]; UIndirectList(transformedPts, zonePoints) = - transform + transformPoints ( SBMFs_[i].transformation(), pointField(transformedPts, zonePoints) diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C b/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C index f925d3a20b..7f3b08d1e9 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -63,7 +63,7 @@ solidBodyMotionDisplacementPointPatchVectorField // Determine current local points and offset fixedValuePointPatchVectorField::operator== ( - transform(SBMFPtr_().transformation(), localPoints0()) + transformPoints(SBMFPtr_().transformation(), localPoints0()) -localPoints0() ); } @@ -86,7 +86,7 @@ solidBodyMotionDisplacementPointPatchVectorField fixedValuePointPatchVectorField::operator== ( - transform(SBMFPtr_().transformation(), localPoints0()) + transformPoints(SBMFPtr_().transformation(), localPoints0()) -localPoints0() ); } @@ -117,7 +117,7 @@ solidBodyMotionDisplacementPointPatchVectorField fixedValuePointPatchVectorField::operator== ( - transform(SBMFPtr_().transformation(), localPoints0()) + transformPoints(SBMFPtr_().transformation(), localPoints0()) -localPoints0() ); } @@ -160,7 +160,7 @@ void solidBodyMotionDisplacementPointPatchVectorField::updateCoeffs() // Determine current local points and offset fixedValuePointPatchVectorField::operator== ( - transform(SBMFPtr_().transformation(), localPoints0()) + transformPoints(SBMFPtr_().transformation(), localPoints0()) -localPoints0() ); diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/SDA/SDA.C b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/SDA/SDA.C index cb8ac12385..4c9dbed484 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/SDA/SDA.C +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/SDA/SDA.C @@ -91,9 +91,9 @@ Foam::septernion Foam::solidBodyMotionFunctions::SDA::transformation() const heaveA_*(sin(wr*time + phh) - sin(phh)) ); quaternion R(quaternion::XYZ, vector(rollA*sin(wr*time + phr), 0, 0)); - septernion TR(septernion(CofG_ + T)*R*septernion(-CofG_)); + septernion TR(septernion(-CofG_ - T)*R*septernion(CofG_)); - InfoInFunction << "Time = " << time << " transformation: " << TR << endl; + DebugInFunction << "Time = " << time << " transformation: " << TR << endl; return TR; } diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.C b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.C index ede53f4cb7..fb5d430704 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.C +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.C @@ -83,9 +83,9 @@ Foam::solidBodyMotionFunctions::axisRotationMotion::transformation() const scalar magOmega = mag(omega); quaternion R(omega/magOmega, magOmega); - septernion TR(septernion(origin_)*R*septernion(-origin_)); + septernion TR(septernion(-origin_)*R*septernion(origin_)); - InfoInFunction << "Time = " << t << " transformation: " << TR << endl; + DebugInFunction << "Time = " << t << " transformation: " << TR << endl; return TR; } diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/linearMotion/linearMotion.C b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/linearMotion/linearMotion.C index a3be9a8f83..a382d19063 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/linearMotion/linearMotion.C +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/linearMotion/linearMotion.C @@ -74,9 +74,9 @@ Foam::solidBodyMotionFunctions::linearMotion::transformation() const const vector displacement = velocity_*t; quaternion R(1); - septernion TR(septernion(displacement)*R); + septernion TR(septernion(-displacement)*R); - InfoInFunction << "Time = " << t << " transformation: " << TR << endl; + DebugInFunction << "Time = " << t << " transformation: " << TR << endl; return TR; } diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/multiMotion/multiMotion.C b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/multiMotion/multiMotion.C index a88c1d9e9f..313b20b506 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/multiMotion/multiMotion.C +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/multiMotion/multiMotion.C @@ -77,7 +77,7 @@ Foam::solidBodyMotionFunctions::multiMotion::transformation() const TR *= SBMFs_[i].transformation(); } - InfoInFunction << "Time = " << t << " transformation: " << TR << endl; + DebugInFunction << "Time = " << t << " transformation: " << TR << endl; return TR; } diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.C b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.C index 9e03d3b93f..3b46909015 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.C +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.C @@ -74,9 +74,9 @@ Foam::solidBodyMotionFunctions::oscillatingLinearMotion::transformation() const const vector displacement = amplitude_*sin(omega_*t); quaternion R(1); - septernion TR(septernion(displacement)*R); + septernion TR(septernion(-displacement)*R); - InfoInFunction << "Time = " << t << " transformation: " << TR << endl; + DebugInFunction << "Time = " << t << " transformation: " << TR << endl; return TR; } diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.C b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.C index fcceb2f0e4..eff5e30fc2 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.C +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.C @@ -82,9 +82,9 @@ transformation() const eulerAngles *= pi/180.0; quaternion R(quaternion::XYZ, eulerAngles); - septernion TR(septernion(origin_)*R*septernion(-origin_)); + septernion TR(septernion(-origin_)*R*septernion(origin_)); - InfoInFunction << "Time = " << t << " transformation: " << TR << endl; + DebugInFunction << "Time = " << t << " transformation: " << TR << endl; return TR; } diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.C b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.C index d4a6470249..b246dd9cc1 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.C +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.C @@ -78,9 +78,9 @@ Foam::solidBodyMotionFunctions::rotatingMotion::transformation() const scalar angle = omega_->integrate(0, t); quaternion R(axis_, angle); - septernion TR(septernion(origin_)*R*septernion(-origin_)); + septernion TR(septernion(-origin_)*R*septernion(origin_)); - InfoInFunction << "Time = " << t << " transformation: " << TR << endl; + DebugInFunction << "Time = " << t << " transformation: " << TR << endl; return TR; } diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C index 214ac972a1..fd2fb3a9d2 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,9 +29,8 @@ License namespace Foam { -defineTypeNameAndDebug(solidBodyMotionFunction, 0); - -defineRunTimeSelectionTable(solidBodyMotionFunction, dictionary); + defineTypeNameAndDebug(solidBodyMotionFunction, 0); + defineRunTimeSelectionTable(solidBodyMotionFunction, dictionary); } diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.C b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.C index 356d2a8266..f185693c85 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.C +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.C @@ -105,9 +105,9 @@ Foam::solidBodyMotionFunctions::tabulated6DoFMotion::transformation() const TRV[1] *= pi/180.0; quaternion R(quaternion::XYZ, TRV[1]); - septernion TR(septernion(CofG_ + TRV[0])*R*septernion(-CofG_)); + septernion TR(septernion(-CofG_ + -TRV[0])*R*septernion(CofG_)); - InfoInFunction << "Time = " << t << " transformation: " << TR << endl; + DebugInFunction << "Time = " << t << " transformation: " << TR << endl; return TR; } diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFvMesh.C b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFvMesh.C index b12b241429..4271a89430 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFvMesh.C +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFvMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -193,7 +193,7 @@ bool Foam::solidBodyMotionFvMesh::update() { fvMesh::movePoints ( - transform + transformPoints ( SBMFPtr_().transformation(), undisplacedPoints_ @@ -205,7 +205,7 @@ bool Foam::solidBodyMotionFvMesh::update() pointField transformedPts(undisplacedPoints_); UIndirectList(transformedPts, pointIDs_) = - transform + transformPoints ( SBMFPtr_().transformation(), pointField(transformedPts, pointIDs_)