From 5ffda9b52b5446f38488a185664a92a04e6e17c2 Mon Sep 17 00:00:00 2001 From: Henry <Henry> Date: Sun, 8 Dec 2013 21:59:40 +0000 Subject: [PATCH] sixDoFRigidBodyMotion: Created separate library Added sixDoFRigidBodyMotionSolver using septernion interpolation for mesh-morphing --- .../functionObjects/forces/Make/files | 29 --- src/sixDoFRigidBodyMotion/Make/files | 30 +++ src/sixDoFRigidBodyMotion/Make/options | 12 ++ ...gidBodyDisplacementPointPatchVectorField.C | 7 +- ...gidBodyDisplacementPointPatchVectorField.H | 0 ...gidBodyDisplacementPointPatchVectorField.C | 0 ...gidBodyDisplacementPointPatchVectorField.H | 0 .../sixDoFRigidBodyMotion.C | 44 +++++ .../sixDoFRigidBodyMotion.H | 13 +- .../fixedAxis/fixedAxis.C | 0 .../fixedAxis/fixedAxis.H | 0 .../fixedLine/fixedLine.C | 0 .../fixedLine/fixedLine.H | 0 .../fixedOrientation/fixedOrientation.C | 0 .../fixedOrientation/fixedOrientation.H | 0 .../fixedPlane/fixedPlane.C | 0 .../fixedPlane/fixedPlane.H | 0 .../fixedPoint/fixedPoint.C | 0 .../fixedPoint/fixedPoint.H | 0 .../sixDoFRigidBodyMotionConstraint.C | 0 .../sixDoFRigidBodyMotionConstraint.H | 0 .../sixDoFRigidBodyMotionConstraintNew.C | 0 .../sixDoFRigidBodyMotionI.H | 15 +- .../sixDoFRigidBodyMotionIO.C | 0 .../linearAxialAngularSpring.C | 0 .../linearAxialAngularSpring.H | 0 .../linearSpring/linearSpring.C | 0 .../linearSpring/linearSpring.H | 0 .../sixDoFRigidBodyMotionRestraint.C | 0 .../sixDoFRigidBodyMotionRestraint.H | 0 .../sixDoFRigidBodyMotionRestraintNew.C | 0 .../sphericalAngularSpring.C | 0 .../sphericalAngularSpring.H | 0 .../tabulatedAxialAngularSpring.C | 0 .../tabulatedAxialAngularSpring.H | 0 .../sixDoFRigidBodyMotionState.C | 0 .../sixDoFRigidBodyMotionState.H | 0 .../sixDoFRigidBodyMotionStateI.H | 0 .../sixDoFRigidBodyMotionStateIO.C | 0 .../sixDoFRigidBodyMotionSolver.C | 186 ++++++++++++++++++ .../sixDoFRigidBodyMotionSolver.H | 136 +++++++++++++ .../floatingObject/constant/dynamicMeshDict | 2 +- .../ras/floatingObject/system/controlDict | 8 - 43 files changed, 425 insertions(+), 57 deletions(-) create mode 100644 src/sixDoFRigidBodyMotion/Make/files create mode 100644 src/sixDoFRigidBodyMotion/Make/options rename src/{postProcessing/functionObjects/forces => sixDoFRigidBodyMotion}/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C (97%) rename src/{postProcessing/functionObjects/forces => sixDoFRigidBodyMotion}/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H (100%) rename src/{postProcessing/functionObjects/forces => sixDoFRigidBodyMotion}/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C (100%) rename src/{postProcessing/functionObjects/forces => sixDoFRigidBodyMotion}/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C (93%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H (97%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H (95%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H (100%) rename src/{postProcessing/functionObjects/forces/pointPatchFields/derived => sixDoFRigidBodyMotion}/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C (100%) create mode 100644 src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C create mode 100644 src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H diff --git a/src/postProcessing/functionObjects/forces/Make/files b/src/postProcessing/functionObjects/forces/Make/files index 4f9cf092148..8b91d909222 100644 --- a/src/postProcessing/functionObjects/forces/Make/files +++ b/src/postProcessing/functionObjects/forces/Make/files @@ -4,33 +4,4 @@ forces/forcesFunctionObject.C forceCoeffs/forceCoeffs.C forceCoeffs/forceCoeffsFunctionObject.C -sDoFRBM = pointPatchFields/derived/sixDoFRigidBodyMotion - -$(sDoFRBM)/sixDoFRigidBodyMotion.C -$(sDoFRBM)/sixDoFRigidBodyMotionIO.C -$(sDoFRBM)/sixDoFRigidBodyMotionState.C -$(sDoFRBM)/sixDoFRigidBodyMotionStateIO.C - -sDoFRBMR = $(sDoFRBM)/sixDoFRigidBodyMotionRestraint - -$(sDoFRBMR)/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C -$(sDoFRBMR)/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C -$(sDoFRBMR)/linearAxialAngularSpring/linearAxialAngularSpring.C -$(sDoFRBMR)/linearSpring/linearSpring.C -$(sDoFRBMR)/sphericalAngularSpring/sphericalAngularSpring.C -$(sDoFRBMR)/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C - -sDoFRBMC = $(sDoFRBM)/sixDoFRigidBodyMotionConstraint - -$(sDoFRBMC)/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C -$(sDoFRBMC)/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C -$(sDoFRBMC)/fixedAxis/fixedAxis.C -$(sDoFRBMC)/fixedLine/fixedLine.C -$(sDoFRBMC)/fixedOrientation/fixedOrientation.C -$(sDoFRBMC)/fixedPlane/fixedPlane.C -$(sDoFRBMC)/fixedPoint/fixedPoint.C - -pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C -pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C - LIB = $(FOAM_LIBBIN)/libforces diff --git a/src/sixDoFRigidBodyMotion/Make/files b/src/sixDoFRigidBodyMotion/Make/files new file mode 100644 index 00000000000..7ceb41d544e --- /dev/null +++ b/src/sixDoFRigidBodyMotion/Make/files @@ -0,0 +1,30 @@ +sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C +sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C +sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C +sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C + +restraints = sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint + +$(restraints)/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C +$(restraints)/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C +$(restraints)/linearAxialAngularSpring/linearAxialAngularSpring.C +$(restraints)/linearSpring/linearSpring.C +$(restraints)/sphericalAngularSpring/sphericalAngularSpring.C +$(restraints)/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C + +constraints = sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint + +$(constraints)/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C +$(constraints)/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C +$(constraints)/fixedAxis/fixedAxis.C +$(constraints)/fixedLine/fixedLine.C +$(constraints)/fixedOrientation/fixedOrientation.C +$(constraints)/fixedPlane/fixedPlane.C +$(constraints)/fixedPoint/fixedPoint.C + +pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C +pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C + +sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C + +LIB = $(FOAM_LIBBIN)/libsixDoFRigidBodyMotion diff --git a/src/sixDoFRigidBodyMotion/Make/options b/src/sixDoFRigidBodyMotion/Make/options new file mode 100644 index 00000000000..f2367d2e1d4 --- /dev/null +++ b/src/sixDoFRigidBodyMotion/Make/options @@ -0,0 +1,12 @@ +EXE_INC = \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/postProcessing/functionObjects/forces/lnInclude \ + -I$(LIB_SRC)/fileFormats/lnInclude \ + -I$(LIB_SRC)/dynamicMesh/lnInclude + +LIB_LIBS = \ + -lforces \ + -lmeshTools \ + -lfileFormats \ + -ldynamicMesh diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C similarity index 97% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C rename to src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C index 30452824470..75af41d304a 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C +++ b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C @@ -238,10 +238,13 @@ void sixDoFRigidBodyDisplacementPointPatchVectorField::updateCoeffs() g_ = g.value(); } + // scalar ramp = min(max((this->db().time().value() - 5)/10, 0), 1); + scalar ramp = 1.0; + motion_.updateAcceleration ( - f.forceEff() + g_*motion_.mass(), - f.momentEff(), + ramp*(f.forceEff() + g_*motion_.mass()), + ramp*(f.momentEff()), t.deltaTValue() ); diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H rename to src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C rename to src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H rename to src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C similarity index 93% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C index 7f6c58b150b..492b88752c0 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C @@ -24,6 +24,7 @@ License \*---------------------------------------------------------------------------*/ #include "sixDoFRigidBodyMotion.H" +#include "septernion.H" // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // @@ -533,4 +534,47 @@ void Foam::sixDoFRigidBodyMotion::status() const } +Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::currentPosition +( + const pointField& initialPoints +) const +{ + return + ( + centreOfMass() + + (Q() & initialQ_.T() & (initialPoints - initialCentreOfMass_)) + ); +} + + +Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition +( + const pointField& initialPoints, + const scalarField& scale +) const +{ + // Calculate the transformation septerion from the initial state + septernion s + ( + centreOfMass() - initialCentreOfMass(), + quaternion(Q() & initialQ().T()) + ); + + tmp<pointField> tpoints(new pointField(initialPoints)); + pointField& points = tpoints(); + + forAll(points, pointi) + { + //- Slerp septernion + septernion ss(slerp(septernion::I, s, scale[pointi])); + + points[pointi] = + initialCentreOfMass() + + ss.transform(initialPoints[pointi] - initialCentreOfMass()); + } + + return tpoints; +} + + // ************************************************************************* // diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H similarity index 97% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H index 2a9d6dcfa19..c75e0719642 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H @@ -325,14 +325,19 @@ public: //- Transform the given initial state pointField by the current // motion state - inline tmp<pointField> currentPosition + tmp<pointField> currentPosition(const pointField& initialPoints) const; + + //- Transform the given initial state pointField by the current + // motion state + tmp<pointField> scaledPosition ( - const pointField& pInitial + const pointField& initialPoints, + const scalarField& scale ) const; //- Transform the given initial state point by the current motion // state - inline point currentPosition(const point& pInitial) const; + inline point currentPosition(const point& initialPoints) const; //- Transform the given initial state direction by the current // motion state @@ -348,7 +353,7 @@ public: // additional supplied force and moment point predictedPosition ( - const point& pInitial, + const point& initialPoints, const vector& deltaForce, const vector& deltaMoment, scalar deltaT diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H similarity index 95% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H index 5c1eb5e7ebe..e64e1677fcb 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H @@ -255,26 +255,15 @@ inline Foam::vector& Foam::sixDoFRigidBodyMotion::tau() // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -inline Foam::tmp<Foam::pointField> -Foam::sixDoFRigidBodyMotion::currentPosition(const pointField& pInitial) const -{ - return - ( - centreOfMass() - + (Q() & initialQ_.T() & (pInitial - initialCentreOfMass_))) - ; -} - - inline Foam::point Foam::sixDoFRigidBodyMotion::currentPosition ( - const point& pInitial + const point& initialPoints ) const { return ( centreOfMass() - + (Q() & initialQ_.T() & (pInitial - initialCentreOfMass_)) + + (Q() & initialQ_.T() & (initialPoints - initialCentreOfMass_)) ); } diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C new file mode 100644 index 00000000000..ca303bbeca1 --- /dev/null +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C @@ -0,0 +1,186 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "sixDoFRigidBodyMotionSolver.H" +#include "addToRunTimeSelectionTable.H" +#include "polyMesh.H" +#include "patchDist.H" +#include "volPointInterpolation.H" +#include "uniformDimensionedFields.H" +#include "forces.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(sixDoFRigidBodyMotionSolver, 0); + + addToRunTimeSelectionTable + ( + motionSolver, + sixDoFRigidBodyMotionSolver, + dictionary + ); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::sixDoFRigidBodyMotionSolver::sixDoFRigidBodyMotionSolver +( + const polyMesh& mesh, + const IOdictionary& dict +) +: + displacementMotionSolver(mesh, dict, typeName), + motion_(coeffDict()), + patches_(wordReList(coeffDict().lookup("patches"))), + patchSet_(mesh.boundaryMesh().patchSet(patches_)), + distance_(readScalar(coeffDict().lookup("distance"))), + rhoInf_(1.0), + rhoName_(coeffDict().lookupOrDefault<word>("rhoName", "rho")), + scale_ + ( + IOobject + ( + "scale", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + pointMesh::New(mesh), + dimensionedScalar("zero", dimless, 0.0) + ), + curTimeIndex_(-1) +{ + const fvMesh& fMesh = dynamic_cast<const fvMesh&>(mesh); + + if (rhoName_ == "rhoInf") + { + rhoInf_ = readScalar(dict.lookup("rhoInf")); + } + + // Calculate scaling factor everywhere + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + { + patchDist dist(fMesh, patchSet_); + + // Update distance to object + pointScalarField pDist + ( + volPointInterpolation::New + ( + fMesh + ).interpolate(dist) + ); + + // Scaling. 1 at patches, 0 at distance_ away from patches + scale_.internalField() = 1 - min(1.0, pDist.internalField()/distance_); + scale_.correctBoundaryConditions(); + scale_.write(); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::sixDoFRigidBodyMotionSolver::~sixDoFRigidBodyMotionSolver() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::pointField> +Foam::sixDoFRigidBodyMotionSolver::curPoints() const +{ + return points0() + pointDisplacement_.internalField(); +} + + +void Foam::sixDoFRigidBodyMotionSolver::solve() +{ + const Time& t = mesh().time(); + + if (mesh().nPoints() != points0().size()) + { + FatalErrorIn + ( + "sixDoFRigidBodyMotionSolver::curPoints() const" + ) << "The number of points in the mesh seems to have changed." << endl + << "In constant/polyMesh there are " << points0().size() + << " points; in the current mesh there are " << mesh().nPoints() + << " points." << exit(FatalError); + } + + // Store the motion state at the beginning of the time-step + if (curTimeIndex_ != this->db().time().timeIndex()) + { + motion_.newTime(); + curTimeIndex_ = this->db().time().timeIndex(); + } + + // Patch force data is valid for the current positions, so + // calculate the forces on the motion object from this data, then + // update the positions + + motion_.updatePosition(t.deltaTValue(), t.deltaT0Value()); + + dictionary forcesDict; + + forcesDict.add("type", forces::typeName); + forcesDict.add("patches", patches_); + forcesDict.add("rhoInf", rhoInf_); + forcesDict.add("rhoName", rhoName_); + forcesDict.add("CofR", motion_.centreOfMass()); + + forces f("forces", db(), forcesDict); + + f.calcForcesMoment(); + + uniformDimensionedVectorField g = + db().lookupObject<uniformDimensionedVectorField>("g"); + + // scalar ramp = min(max((this->db().time().value() - 5)/10, 0), 1); + scalar ramp = 1.0; + + motion_.updateAcceleration + ( + ramp*(f.forceEff() + g.value()*motion_.mass()), + ramp*(f.momentEff()), + t.deltaTValue() + ); + + // Update the displacements + pointDisplacement_.internalField() = + motion_.scaledPosition(points0(), scale_) - points0(); + + pointDisplacement_.correctBoundaryConditions(); +} + + +// ************************************************************************* // diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H new file mode 100644 index 00000000000..1d1e72263c8 --- /dev/null +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H @@ -0,0 +1,136 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::sixDoFRigidBodyMotionSolver + +Description + 6-DoF solid-body mesh motion solver for an fvMesh. + + Applies SLERP interpolation of movement as function of distance to + the object surface. + +SourceFiles + sixDoFRigidBodyMotionSolver.C + +\*---------------------------------------------------------------------------*/ + +#ifndef sixDoFRigidBodyMotionSolver_H +#define sixDoFRigidBodyMotionSolver_H + +#include "displacementMotionSolver.H" +#include "sixDoFRigidBodyMotion.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class sixDoFRigidBodyMotionSolver Declaration +\*---------------------------------------------------------------------------*/ + +class sixDoFRigidBodyMotionSolver +: + public displacementMotionSolver +{ + // Private data + + //- Six dof motion object + sixDoFRigidBodyMotion motion_; + + wordReList patches_; + + //- Patches to integrate forces + const labelHashSet patchSet_; + + //- Morphing distance + const scalar distance_; + + //- Reference density required by the forces object for + // incompressible calculations, required if rhoName == rhoInf + scalar rhoInf_; + + //- Name of density field, optional unless used for an + // incompressible simulation, when this needs to be specified + // as rhoInf + word rhoName_; + + //- Current interpolation scale (1 at patches, 0 at distance_) + pointScalarField scale_; + + //- Current time index (used for updating) + label curTimeIndex_; + + + // Private Member Functions + + //- Disallow default bitwise copy construct + sixDoFRigidBodyMotionSolver + ( + const sixDoFRigidBodyMotionSolver& + ); + + //- Disallow default bitwise assignment + void operator=(const sixDoFRigidBodyMotionSolver&); + + +public: + + //- Runtime type information + TypeName("sixDoFRigidBodyMotion"); + + + // Constructors + + //- Construct from polyMesh and IOdictionary + sixDoFRigidBodyMotionSolver + ( + const polyMesh&, + const IOdictionary& dict + ); + + + //- Destructor + ~sixDoFRigidBodyMotionSolver(); + + + // Member Functions + + //- Return point location obtained from the current motion field + virtual tmp<pointField> curPoints() const; + + //- Solve for motion + virtual void solve(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict index 8001efbebcf..b350585fe9e 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict @@ -16,7 +16,7 @@ FoamFile dynamicFvMesh dynamicMotionSolverFvMesh; -motionSolverLibs ("libfvMotionSolvers.so"); +motionSolverLibs ("libfvMotionSolvers.so" "libsixDoFRigidBodyMotion.so"); solver displacementLaplacian; diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict index 2a0a90efa67..d51c2fd31ed 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict @@ -51,12 +51,4 @@ maxCo 5; maxAlphaCo 5; maxDeltaT 1; -libs -( - "libOpenFOAM.so" - "libincompressibleRASModels.so" - "libfvMotionSolvers.so" - "libforces.so" -); - // ************************************************************************* // -- GitLab