From d49889402f9ac63950b2d2bec546e8e9c2d8eda8 Mon Sep 17 00:00:00 2001 From: Henry <Henry> Date: Fri, 16 May 2014 15:35:11 +0100 Subject: [PATCH] sixDoFRigidBodyMotion: Add support to specify the centre for rotation independent of the centre of mass via the point, line or plane constraints. --- ...gidBodyDisplacementPointPatchVectorField.C | 10 +- ...gidBodyDisplacementPointPatchVectorField.C | 4 +- .../sixDoFRigidBodyMotionAxisConstraint.C | 5 +- .../sixDoFRigidBodyMotionAxisConstraint.H | 9 +- .../sixDoFRigidBodyMotionLineConstraint.C | 35 ++- .../sixDoFRigidBodyMotionLineConstraint.H | 21 +- ...xDoFRigidBodyMotionOrientationConstraint.C | 7 +- ...xDoFRigidBodyMotionOrientationConstraint.H | 8 +- .../sixDoFRigidBodyMotionPlaneConstraint.C | 27 +- .../sixDoFRigidBodyMotionPlaneConstraint.H | 19 +- .../sixDoFRigidBodyMotionPointConstraint.C | 28 +- .../sixDoFRigidBodyMotionPointConstraint.H | 21 +- .../sixDoFRigidBodyMotionConstraint.C | 8 +- .../sixDoFRigidBodyMotionConstraint.H | 24 +- .../sixDoFRigidBodyMotionConstraintNew.C | 9 +- .../linearAxialAngularSpring.C | 6 +- .../restraints/linearSpring/linearSpring.C | 6 +- .../sphericalAngularSpring.C | 6 +- .../tabulatedAxialAngularSpring.C | 6 +- .../sixDoFRigidBodyMotion.C | 223 ++++----------- .../sixDoFRigidBodyMotion.H | 260 +++++++----------- .../sixDoFRigidBodyMotionI.H | 118 ++++---- .../sixDoFRigidBodyMotionIO.C | 66 ++--- .../sixDoFRigidBodyMotionState.C | 34 +-- .../sixDoFRigidBodyMotionState.H | 19 +- .../sixDoFRigidBodyMotionStateI.H | 11 +- .../sixDoFRigidBodyMotionStateIO.C | 12 +- .../sixDoFRigidBodyMotionSolver.C | 8 +- .../wingMotion2D_pimpleDyMFoam/0.org/U | 2 +- .../0.org/include/fixedInlet | 2 +- .../0.org/include/frontBackTopBottomPatches | 2 +- .../0.org/include/initialConditions | 2 +- .../wingMotion2D_pimpleDyMFoam/0.org/k | 2 +- .../wingMotion2D_pimpleDyMFoam/0.org/nut | 2 +- .../wingMotion2D_pimpleDyMFoam/0.org/omega | 2 +- .../wingMotion2D_pimpleDyMFoam/0.org/p | 2 +- .../0.org/pointDisplacement | 2 +- .../constant/RASProperties | 2 +- .../constant/dynamicMeshDict | 7 +- .../constant/polyMesh/boundary | 2 +- .../constant/transportProperties | 2 +- .../constant/turbulenceProperties | 2 +- .../system/controlDict | 6 +- .../system/decomposeParDict | 2 +- .../system/fvSchemes | 2 +- .../system/fvSolution | 2 +- .../wingMotion2D_simpleFoam/0.org/U | 2 +- .../0.org/include/fixedInlet | 2 +- .../0.org/include/frontBackTopBottomPatches | 2 +- .../0.org/include/initialConditions | 2 +- .../wingMotion2D_simpleFoam/0.org/k | 2 +- .../wingMotion2D_simpleFoam/0.org/nut | 2 +- .../wingMotion2D_simpleFoam/0.org/omega | 2 +- .../wingMotion2D_simpleFoam/0.org/p | 2 +- .../constant/RASProperties | 2 +- .../constant/polyMesh/boundary | 2 +- .../constant/transportProperties | 2 +- .../system/controlDict | 2 +- .../system/createPatchDict | 2 +- .../system/extrudeMeshDict | 2 +- .../wingMotion2D_simpleFoam/system/fvSchemes | 2 +- .../wingMotion2D_simpleFoam/system/fvSolution | 2 +- .../constant/polyMesh/blockMeshDict | 2 +- .../system/controlDict | 2 +- .../system/decomposeParDict | 2 +- .../wingMotion_snappyHexMesh/system/fvSchemes | 2 +- .../system/fvSolution | 2 +- .../system/snappyHexMeshDict | 2 +- .../interDyMFoam/ras/floatingObject/0.org/U | 2 +- .../ras/floatingObject/0.org/alpha.water | 2 +- .../ras/floatingObject/0.org/epsilon | 2 +- .../interDyMFoam/ras/floatingObject/0.org/k | 2 +- .../interDyMFoam/ras/floatingObject/0.org/nut | 2 +- .../ras/floatingObject/0.org/p_rgh | 2 +- .../floatingObject/0.org/pointDisplacement | 2 +- .../ras/floatingObject/constant/RASProperties | 2 +- .../floatingObject/constant/dynamicMeshDict | 61 +++- .../ras/floatingObject/constant/g | 2 +- .../constant/polyMesh/blockMeshDict | 4 +- .../floatingObject/constant/polyMesh/boundary | 14 +- .../constant/transportProperties | 2 +- .../constant/turbulenceProperties | 2 +- .../ras/floatingObject/system/controlDict | 2 +- .../floatingObject/system/decomposeParDict | 2 +- .../ras/floatingObject/system/fvSchemes | 2 +- .../ras/floatingObject/system/fvSolution | 2 +- .../ras/floatingObject/system/setFieldsDict | 2 +- .../ras/floatingObject/system/topoSetDict | 4 +- 88 files changed, 568 insertions(+), 646 deletions(-) diff --git a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C index 3a6db808399..dc731f060a3 100644 --- a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C +++ b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -222,7 +222,7 @@ void sixDoFRigidBodyDisplacementPointPatchVectorField::updateCoeffs() forcesDict.add("patches", wordList(1, ptPatch.name())); forcesDict.add("rhoInf", rhoInf_); forcesDict.add("rhoName", rhoName_); - forcesDict.add("CofR", motion_.centreOfMass()); + forcesDict.add("CofR", motion_.centreOfRotation()); forces f("forces", db(), forcesDict); @@ -243,14 +243,14 @@ void sixDoFRigidBodyDisplacementPointPatchVectorField::updateCoeffs() motion_.updateAcceleration ( - ramp*(f.forceEff() + g_*motion_.mass()), - ramp*(f.momentEff()), + ramp*(f.forceEff() + motion_.mass()*g_), + ramp*(f.momentEff() + motion_.mass()*(motion_.momentArm() ^ g_)), t.deltaTValue() ); Field<vector>::operator= ( - motion_.currentPosition(initialPoints_) - initialPoints_ + motion_.transform(initialPoints_) - initialPoints_ ); fixedValuePointPatchField<vector>::updateCoeffs(); diff --git a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C index bb66a5fb14b..fb832ca6c80 100644 --- a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C +++ b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -180,7 +180,7 @@ void uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField::updateCoeffs() Field<vector>::operator= ( - motion_.currentPosition(initialPoints_) - initialPoints_ + motion_.transform(initialPoints_) - initialPoints_ ); fixedValuePointPatchField<vector>::updateCoeffs(); diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.C index c577954a364..91fa9908f6d 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.C @@ -50,10 +50,11 @@ namespace sixDoFRigidBodyMotionConstraints Foam::sixDoFRigidBodyMotionConstraints::axis::axis ( const word& name, - const dictionary& sDoFRBMCDict + const dictionary& sDoFRBMCDict, + const sixDoFRigidBodyMotion& motion ) : - sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict), + sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict, motion), axis_() { read(sDoFRBMCDict); diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.H index 291c3421f86..6ddf4f8b9a6 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,8 +25,8 @@ Class Foam::sixDoFRigidBodyMotionConstraints::axis Description - sixDoFRigidBodyMotionConstraint. Body may only rotate around - an axis fixed in global space. + Orientation constraint: + may only rotate around a fixed axis. SourceFiles sixDoFRigidBodyMotionAxisConstraint.C @@ -73,7 +73,8 @@ public: axis ( const word& name, - const dictionary& sDoFRBMCDict + const dictionary& sDoFRBMCDict, + const sixDoFRigidBodyMotion& motion ); //- Construct and return a clone diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.C index ff056c25916..ed527a60364 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -50,11 +50,11 @@ namespace sixDoFRigidBodyMotionConstraints Foam::sixDoFRigidBodyMotionConstraints::line::line ( const word& name, - const dictionary& sDoFRBMCDict + const dictionary& sDoFRBMCDict, + const sixDoFRigidBodyMotion& motion ) : - sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict), - dir_() + sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict, motion) { read(sDoFRBMCDict); } @@ -68,12 +68,21 @@ Foam::sixDoFRigidBodyMotionConstraints::line::~line() // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // +void Foam::sixDoFRigidBodyMotionConstraints::line::setCentreOfRotation +( + point& CofR +) const +{ + CofR = centreOfRotation_; +} + + void Foam::sixDoFRigidBodyMotionConstraints::line::constrainTranslation ( pointConstraint& pc ) const { - pc.combine(pointConstraint(Tuple2<label, vector>(2, dir_))); + pc.combine(pointConstraint(Tuple2<label, vector>(2, direction_))); } @@ -91,13 +100,19 @@ bool Foam::sixDoFRigidBodyMotionConstraints::line::read { sixDoFRigidBodyMotionConstraint::read(sDoFRBMCDict); - sDoFRBMCCoeffs_.lookup("direction") >> dir_; + centreOfRotation_ = sDoFRBMCCoeffs_.lookupOrDefault + ( + "centreOfRotation", + motion_.initialCentreOfMass() + ); + + sDoFRBMCCoeffs_.lookup("direction") >> direction_; - scalar magDir(mag(dir_)); + scalar magDir(mag(direction_)); if (magDir > VSMALL) { - dir_ /= magDir; + direction_ /= magDir; } else { @@ -121,8 +136,10 @@ void Foam::sixDoFRigidBodyMotionConstraints::line::write Ostream& os ) const { + os.writeKeyword("centreOfRotation") + << centreOfRotation_ << token::END_STATEMENT << nl; os.writeKeyword("direction") - << dir_ << token::END_STATEMENT << nl; + << direction_ << token::END_STATEMENT << nl; } // ************************************************************************* // diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.H index 7d491907202..1f7e68ec102 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,8 +25,11 @@ Class Foam::sixDoFRigidBodyMotionConstraints::line Description - sixDoFRigidBodyMotionConstraint. Reference point may only move - along a line. + Translation constraint on the centre of rotation: + may only move along a line. + + If 'centreOfRotation' is not provided in the dictionary the centre of mass + is used. SourceFiles sixDoFRigidBodyMotionLineConstraint.C @@ -56,8 +59,11 @@ class line { // Private data + //- Centre of rotation on line + point centreOfRotation_; + //- Direction of the constraining line - vector dir_; + vector direction_; public: @@ -72,7 +78,8 @@ public: line ( const word& name, - const dictionary& sDoFRBMCDict + const dictionary& sDoFRBMCDict, + const sixDoFRigidBodyMotion& motion ); //- Construct and return a clone @@ -91,6 +98,10 @@ public: // Member Functions + //- Set the centre of rotation to the projection of the + // centre of mass onto the line + virtual void setCentreOfRotation(point&) const; + //- Apply and accumulate translational constraints virtual void constrainTranslation(pointConstraint&) const; diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.C index 28bf1c48117..6652cf7623f 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -50,10 +50,11 @@ namespace sixDoFRigidBodyMotionConstraints Foam::sixDoFRigidBodyMotionConstraints::orientation::orientation ( const word& name, - const dictionary& sDoFRBMCDict + const dictionary& sDoFRBMCDict, + const sixDoFRigidBodyMotion& motion ) : - sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict) + sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict, motion) { read(sDoFRBMCDict); } diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.H index 5a41498e952..6f010ab4e07 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,7 +25,8 @@ Class Foam::sixDoFRigidBodyMotionConstraints::orientation Description - Fix orientation of body in global space. + Orientation constraint: + fixed in global space. SourceFiles sixDoFRigidBodyMotionOrientationConstraint.C @@ -66,7 +67,8 @@ public: orientation ( const word& name, - const dictionary& sDoFRBMCDict + const dictionary& sDoFRBMCDict, + const sixDoFRigidBodyMotion& motion ); //- Construct and return a clone diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.C index 286e279b77d..7382e5c2d86 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -50,11 +50,11 @@ namespace sixDoFRigidBodyMotionConstraints Foam::sixDoFRigidBodyMotionConstraints::plane::plane ( const word& name, - const dictionary& sDoFRBMCDict + const dictionary& sDoFRBMCDict, + const sixDoFRigidBodyMotion& motion ) : - sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict), - normal_(vector::zero) + sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict, motion) { read(sDoFRBMCDict); } @@ -68,6 +68,15 @@ Foam::sixDoFRigidBodyMotionConstraints::plane::~plane() // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // +void Foam::sixDoFRigidBodyMotionConstraints::plane::setCentreOfRotation +( + point& CofR +) const +{ + CofR = centreOfRotation_; +} + + void Foam::sixDoFRigidBodyMotionConstraints::plane::constrainTranslation ( pointConstraint& pc @@ -91,7 +100,13 @@ bool Foam::sixDoFRigidBodyMotionConstraints::plane::read { sixDoFRigidBodyMotionConstraint::read(sDoFRBMCDict); - normal_ = sDoFRBMCCoeffs_.lookup("normal"); + centreOfRotation_ = sDoFRBMCCoeffs_.lookupOrDefault + ( + "centreOfRotation", + motion_.initialCentreOfMass() + ); + + sDoFRBMCCoeffs_.lookup("normal") >> normal_; return true; } @@ -102,6 +117,8 @@ void Foam::sixDoFRigidBodyMotionConstraints::plane::write Ostream& os ) const { + os.writeKeyword("centreOfRotation") + << centreOfRotation_ << token::END_STATEMENT << nl; os.writeKeyword("normal") << normal_ << token::END_STATEMENT << nl; } diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.H index 1467e54e783..621f63bc3f6 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,8 +25,11 @@ Class Foam::sixDoFRigidBodyMotionConstraints::plane Description - sixDoFRigidBodyMotionConstraint. Reference point may only move - along a plane. + Translation constraint on the centre of rotation: + may only move on a plane. + + If 'centreOfRotation' is not provided in the dictionary the centre of mass + is used. SourceFiles sixDoFRigidBodyMotionPlaneConstraint.C @@ -56,6 +59,9 @@ class plane { // Private data + //- Centre of rotation on plane + point centreOfRotation_; + //- Normal to plane vector normal_; @@ -72,7 +78,8 @@ public: plane ( const word& name, - const dictionary& sDoFRBMCDict + const dictionary& sDoFRBMCDict, + const sixDoFRigidBodyMotion& motion ); //- Construct and return a clone @@ -91,6 +98,10 @@ public: // Member Functions + //- Set the centre of rotation to the projection of the + // centre of mass onto the plane + virtual void setCentreOfRotation(point&) const; + //- Apply and accumulate translational constraints virtual void constrainTranslation(pointConstraint&) const; diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.C index 1068b01af46..ac19a8bcc12 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -50,11 +50,12 @@ namespace sixDoFRigidBodyMotionConstraints Foam::sixDoFRigidBodyMotionConstraints::point::point ( const word& name, - const dictionary& sDoFRBMCDict + const dictionary& sDoFRBMCDict, + const sixDoFRigidBodyMotion& motion ) : - sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict), - point_() + sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict, motion), + centreOfRotation_() { read(sDoFRBMCDict); } @@ -68,6 +69,15 @@ Foam::sixDoFRigidBodyMotionConstraints::point::~point() // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // +void Foam::sixDoFRigidBodyMotionConstraints::point::setCentreOfRotation +( + Foam::point& CofR +) const +{ + CofR = centreOfRotation_; +} + + void Foam::sixDoFRigidBodyMotionConstraints::point::constrainTranslation ( pointConstraint& pc @@ -91,7 +101,11 @@ bool Foam::sixDoFRigidBodyMotionConstraints::point::read { sixDoFRigidBodyMotionConstraint::read(sDoFRBMCDict); - sDoFRBMCCoeffs_.lookup("point") >> point_; + centreOfRotation_ = sDoFRBMCCoeffs_.lookupOrDefault + ( + "centreOfRotation", + motion_.initialCentreOfMass() + ); return true; } @@ -102,8 +116,8 @@ void Foam::sixDoFRigidBodyMotionConstraints::point::write Ostream& os ) const { - os.writeKeyword("point") - << point_ << token::END_STATEMENT << nl; + os.writeKeyword("centreOfRotation") + << centreOfRotation_ << token::END_STATEMENT << nl; } // ************************************************************************* // diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.H index 39200c0c5cb..ec4a05ca3fe 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,7 +25,11 @@ Class Foam::sixDoFRigidBodyMotionConstraints::point Description - Point fixed in space. + Translation constraint on the centre of rotation: + fixed in space. + + If 'centreOfRotation' is not provided in the dictionary the centre of mass + is used. SourceFiles sixDoFRigidBodyMotionPointConstraint.C @@ -56,11 +60,8 @@ class point { // Private data - //- Point which is rigidly attached to the body and constrains - // it so that this point remains fixed. This serves as the - // reference point for displacements as well as the target - // position. - Foam::point point_; + //- Fixed centre of rotation + Foam::point centreOfRotation_; public: @@ -75,7 +76,8 @@ public: point ( const word& name, - const dictionary& sDoFRBMCDict + const dictionary& sDoFRBMCDict, + const sixDoFRigidBodyMotion& motion ); //- Construct and return a clone @@ -94,6 +96,9 @@ public: // Member Functions + //- Set the centre of rotation to the point + virtual void setCentreOfRotation(Foam::point&) const; + //- Apply and accumulate translational constraints virtual void constrainTranslation(pointConstraint&) const; diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C index 10044ac8328..255f7996fc5 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,11 +39,13 @@ namespace Foam Foam::sixDoFRigidBodyMotionConstraint::sixDoFRigidBodyMotionConstraint ( const word& name, - const dictionary& sDoFRBMCDict + const dictionary& sDoFRBMCDict, + const sixDoFRigidBodyMotion& motion ) : name_(name), - sDoFRBMCCoeffs_(sDoFRBMCDict) + sDoFRBMCCoeffs_(sDoFRBMCDict), + motion_(motion) {} diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H index b4eed214f9d..0d6f96cf2b7 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -46,6 +46,7 @@ SourceFiles #include "Time.H" #include "dictionary.H" #include "autoPtr.H" +#include "point.H" #include "pointConstraint.H" #include "runTimeSelectionTables.H" @@ -75,6 +76,9 @@ protected: //- Constraint model specific coefficient dictionary dictionary sDoFRBMCCoeffs_; + //- Reference to the body motion + const sixDoFRigidBodyMotion& motion_; + public: @@ -89,8 +93,12 @@ public: autoPtr, sixDoFRigidBodyMotionConstraint, dictionary, - (const word& name, const dictionary& sDoFRBMCDict), - (name, sDoFRBMCDict) + ( + const word& name, + const dictionary& sDoFRBMCDict, + const sixDoFRigidBodyMotion& motion + ), + (name, sDoFRBMCDict, motion) ); @@ -100,7 +108,8 @@ public: sixDoFRigidBodyMotionConstraint ( const word& name, - const dictionary& sDoFRBMCDict + const dictionary& sDoFRBMCDict, + const sixDoFRigidBodyMotion& motion ); //- Construct and return a clone @@ -113,7 +122,8 @@ public: static autoPtr<sixDoFRigidBodyMotionConstraint> New ( const word& name, - const dictionary& sDoFRBMCDict + const dictionary& sDoFRBMCDict, + const sixDoFRigidBodyMotion& motion ); @@ -129,6 +139,10 @@ public: return name_; } + //- Set the centre of rotation if not the centre of mass + virtual void setCentreOfRotation(point&) const + {} + //- Apply and accumulate translational constraints virtual void constrainTranslation(pointConstraint&) const = 0; diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C index b6f3e8fb1f1..8893d8e8017 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -31,7 +31,8 @@ Foam::autoPtr<Foam::sixDoFRigidBodyMotionConstraint> Foam::sixDoFRigidBodyMotionConstraint::New ( const word& name, - const dictionary& sDoFRBMCDict + const dictionary& sDoFRBMCDict, + const sixDoFRigidBodyMotion& motion ) { const word constraintType @@ -48,7 +49,9 @@ Foam::sixDoFRigidBodyMotionConstraint::New ( "sixDoFRigidBodyMotionConstraint::New" "(" + "const word& name," "const dictionary& sDoFRBMCDict" + "const sixDoFRigidBodyMotion& motion" ")" ) << "Unknown sixDoFRigidBodyMotionConstraint type " << constraintType << nl << nl @@ -59,7 +62,7 @@ Foam::sixDoFRigidBodyMotionConstraint::New return autoPtr<sixDoFRigidBodyMotionConstraint> ( - cstrIter()(name, sDoFRBMCDict) + cstrIter()(name, sDoFRBMCDict, motion) ); } diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearAxialAngularSpring/linearAxialAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearAxialAngularSpring/linearAxialAngularSpring.C index 504944bb29a..44e65ee03ec 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearAxialAngularSpring/linearAxialAngularSpring.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearAxialAngularSpring/linearAxialAngularSpring.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -129,8 +129,8 @@ Foam::sixDoFRigidBodyMotionRestraints::linearAxialAngularSpring::restrain restraintForce = vector::zero; // Not needed to be altered as restraintForce is zero, but set to - // centreOfMass to be sure of no spurious moment - restraintPosition = motion.centreOfMass(); + // centreOfRotation to be sure of no spurious moment + restraintPosition = motion.centreOfRotation(); if (motion.report()) { diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearSpring/linearSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearSpring/linearSpring.C index a26660caf87..24a38a43378 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearSpring/linearSpring.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearSpring/linearSpring.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -80,14 +80,14 @@ void Foam::sixDoFRigidBodyMotionRestraints::linearSpring::restrain vector& restraintMoment ) const { - restraintPosition = motion.currentPosition(refAttachmentPt_); + restraintPosition = motion.transform(refAttachmentPt_); vector r = restraintPosition - anchor_; scalar magR = mag(r); r /= (magR + VSMALL); - vector v = motion.currentVelocity(restraintPosition); + vector v = motion.velocity(restraintPosition); restraintForce = -stiffness_*(magR - restLength_)*r - damping_*(r & v)*r; diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/sphericalAngularSpring/sphericalAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/sphericalAngularSpring/sphericalAngularSpring.C index a0525a19e66..da8f62bbce9 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/sphericalAngularSpring/sphericalAngularSpring.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/sphericalAngularSpring/sphericalAngularSpring.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -104,8 +104,8 @@ void Foam::sixDoFRigidBodyMotionRestraints::sphericalAngularSpring::restrain restraintForce = vector::zero; // Not needed to be altered as restraintForce is zero, but set to - // centreOfMass to be sure of no spurious moment - restraintPosition = motion.centreOfMass(); + // centreOfRotation to be sure of no spurious moment + restraintPosition = motion.centreOfRotation(); if (motion.report()) { diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C index 1bf86e3b19c..9233e618437 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -130,8 +130,8 @@ Foam::sixDoFRigidBodyMotionRestraints::tabulatedAxialAngularSpring::restrain restraintForce = vector::zero; // Not needed to be altered as restraintForce is zero, but set to - // centreOfMass to be sure of no spurious moment - restraintPosition = motion.centreOfMass(); + // centreOfRotation to be sure of no spurious moment + restraintPosition = motion.centreOfRotation(); if (motion.report()) { diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C index db88b739620..78e4c63a85a 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -44,22 +44,24 @@ void Foam::sixDoFRigidBodyMotion::applyRestraints() Info<< "Restraint " << restraints_[rI].name() << ": "; } - // restraint position + // Restraint position point rP = vector::zero; - // restraint force + // Restraint force vector rF = vector::zero; - // restraint moment + // Restraint moment vector rM = vector::zero; + // Accumulate the restraints restraints_[rI].restrain(*this, rP, rF, rM); + // Update the acceleration a() += rF/mass_; // Moments are returned in global axes, transforming to // body local to add to torque. - tau() += Q().T() & (rM + ((rP - centreOfMass()) ^ rF)); + tau() += Q().T() & (rM + ((rP - centreOfRotation()) ^ rF)); } } } @@ -75,57 +77,16 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion() constraints_(), tConstraints_(tensor::I), rConstraints_(tensor::I), - initialCentreOfMass_(vector::zero), + initialCentreOfRotation_(vector::zero), initialQ_(I), - momentOfInertia_(diagTensor::one*VSMALL), mass_(VSMALL), + momentOfInertia_(diagTensor::one*VSMALL), aRelax_(1.0), aDamp_(1.0), report_(false) {} -Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion -( - const point& centreOfMass, - const tensor& Q, - const vector& v, - const vector& a, - const vector& pi, - const vector& tau, - scalar mass, - const point& initialCentreOfMass, - const tensor& initialQ, - const diagTensor& momentOfInertia, - scalar aRelax, - scalar aDamp, - bool report -) -: - motionState_ - ( - centreOfMass, - Q, - v, - a, - pi, - tau - ), - motionState0_(motionState_), - restraints_(), - constraints_(), - tConstraints_(tensor::I), - rConstraints_(tensor::I), - initialCentreOfMass_(initialCentreOfMass), - initialQ_(initialQ), - momentOfInertia_(momentOfInertia), - mass_(mass), - aRelax_(aRelax), - aDamp_(aDamp), - report_(report) -{} - - Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion ( const dictionary& dict, @@ -133,7 +94,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion ) : motionState_(stateDict), - motionState0_(motionState_), + motionState0_(), restraints_(), constraints_(), tConstraints_(tensor::I), @@ -146,6 +107,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion vector(dict.lookup("centreOfMass")) ) ), + initialCentreOfRotation_(initialCentreOfMass_), initialQ_ ( dict.lookupOrDefault @@ -154,14 +116,35 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion dict.lookupOrDefault("orientation", tensor::I) ) ), - momentOfInertia_(dict.lookup("momentOfInertia")), mass_(readScalar(dict.lookup("mass"))), + momentOfInertia_(dict.lookup("momentOfInertia")), aRelax_(dict.lookupOrDefault<scalar>("accelerationRelaxation", 1.0)), aDamp_(dict.lookupOrDefault<scalar>("accelerationDamping", 1.0)), report_(dict.lookupOrDefault<Switch>("report", false)) { addRestraints(dict); + + // Set constraints and initial centre of rotation + // if different to the centre of mass addConstraints(dict); + + // If the centres of mass and rotation are different ... + vector R(initialCentreOfMass_ - initialCentreOfRotation_); + if (magSqr(R) > VSMALL) + { + // ... correct the moment of inertia tensor using parallel axes theorem + momentOfInertia_ += mass_*diag(I*magSqr(R) - sqr(R)); + + // ... and if the centre of rotation is not specified for motion state + // update it + if (!stateDict.found("centreOfRotation")) + { + motionState_.centreOfRotation() = initialCentreOfRotation_; + } + } + + // Save the old-time motion state + motionState0_ = motionState_; } @@ -174,22 +157,16 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion motionState0_(sDoFRBM.motionState0_), restraints_(sDoFRBM.restraints_), constraints_(sDoFRBM.constraints_), - initialCentreOfMass_(sDoFRBM.initialCentreOfMass_), + initialCentreOfRotation_(sDoFRBM.initialCentreOfRotation_), initialQ_(sDoFRBM.initialQ_), - momentOfInertia_(sDoFRBM.momentOfInertia_), mass_(sDoFRBM.mass_), + momentOfInertia_(sDoFRBM.momentOfInertia_), aRelax_(sDoFRBM.aRelax_), aDamp_(sDoFRBM.aDamp_), report_(sDoFRBM.report_) {} -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::sixDoFRigidBodyMotion::~sixDoFRigidBodyMotion() -{} - - // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // void Foam::sixDoFRigidBodyMotion::addRestraints @@ -252,10 +229,12 @@ void Foam::sixDoFRigidBodyMotion::addConstraints sixDoFRigidBodyMotionConstraint::New ( iter().keyword(), - iter().dict() + iter().dict(), + *this ) ); + constraints_[i].setCentreOfRotation(initialCentreOfRotation_); constraints_[i].constrainTranslation(pct); constraints_[i].constrainRotation(pcr); @@ -289,7 +268,7 @@ void Foam::sixDoFRigidBodyMotion::updatePosition pi() = rConstraints_ & aDamp_*(pi0() + 0.5*deltaT0*tau()); // Leapfrog move part - centreOfMass() = centreOfMass0() + deltaT*v(); + centreOfRotation() = centreOfRotation0() + deltaT*v(); // Leapfrog orientation adjustment Tuple2<tensor, vector> Qpi = rotate(Q0(), pi(), deltaT); @@ -346,112 +325,30 @@ void Foam::sixDoFRigidBodyMotion::updateAcceleration } -void Foam::sixDoFRigidBodyMotion::updateVelocity(scalar deltaT) -{ - // Second leapfrog velocity adjust part, required after motion and - // acceleration calculation - - if (Pstream::master()) - { - v() += tConstraints_ & aDamp_*0.5*deltaT*a(); - pi() += rConstraints_ & aDamp_*0.5*deltaT*tau(); - - if (report_) - { - status(); - } - } - - Pstream::scatter(motionState_); -} - - -void Foam::sixDoFRigidBodyMotion::updateAcceleration -( - const pointField& positions, - const vectorField& forces, - scalar deltaT -) -{ - vector fGlobal = vector::zero; - - vector tauGlobal = vector::zero; - - if (Pstream::master()) - { - fGlobal = sum(forces); - - forAll(positions, i) - { - tauGlobal += (positions[i] - centreOfMass()) ^ forces[i]; - } - } - - updateAcceleration(fGlobal, tauGlobal, deltaT); -} - - -Foam::point Foam::sixDoFRigidBodyMotion::predictedPosition -( - const point& pInitial, - const vector& deltaForce, - const vector& deltaMoment, - scalar deltaT -) const -{ - vector vTemp = v() + deltaT*(a() + deltaForce/mass_); - vector piTemp = pi() + deltaT*(tau() + (Q().T() & deltaMoment)); - point centreOfMassTemp = centreOfMass0() + deltaT*vTemp; - Tuple2<tensor, vector> QpiTemp = rotate(Q0(), piTemp, deltaT); - - return - ( - centreOfMassTemp - + (QpiTemp.first() & initialQ_.T() & (pInitial - initialCentreOfMass_)) - ); -} - - -Foam::vector Foam::sixDoFRigidBodyMotion::predictedOrientation -( - const vector& vInitial, - const vector& deltaMoment, - scalar deltaT -) const -{ - vector piTemp = pi() + deltaT*(tau() + (Q().T() & deltaMoment)); - Tuple2<tensor, vector> QpiTemp = rotate(Q0(), piTemp, deltaT); - - vector o(QpiTemp.first() & initialQ_.T() & vInitial); - o /= mag(o); - - return o; -} - - void Foam::sixDoFRigidBodyMotion::status() const { - Info<< "Centre of mass: " << centreOfMass() << nl + Info<< "Centre of rotation: " << centreOfRotation() << nl + << "Centre of mass: " << centreOfMass() << nl << "Linear velocity: " << v() << nl << "Angular velocity: " << omega() << endl; } -Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::currentPosition +Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::transform ( const pointField& initialPoints ) const { return ( - centreOfMass() - + (Q() & initialQ_.T() & (initialPoints - initialCentreOfMass_)) + centreOfRotation() + + (Q() & initialQ_.T() & (initialPoints - initialCentreOfRotation_)) ); } -Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition +Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::transform ( const pointField& initialPoints, const scalarField& scale @@ -460,7 +357,7 @@ Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition // Calculate the transformation septerion from the initial state septernion s ( - centreOfMass() - initialCentreOfMass(), + centreOfRotation() - initialCentreOfRotation(), quaternion(Q() & initialQ().T()) ); @@ -475,7 +372,7 @@ Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition // Use solid-body motion where scale = 1 if (scale[pointi] > 1 - SMALL) { - points[pointi] = currentPosition(initialPoints[pointi]); + points[pointi] = transform(initialPoints[pointi]); } // Slerp septernion interpolation else @@ -483,8 +380,12 @@ Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition septernion ss(slerp(septernion::I, s, scale[pointi])); points[pointi] = - initialCentreOfMass() - + ss.transform(initialPoints[pointi] - initialCentreOfMass()); + initialCentreOfRotation() + + ss.transform + ( + initialPoints[pointi] + - initialCentreOfRotation() + ); } } } @@ -493,22 +394,4 @@ Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition } -bool Foam::sixDoFRigidBodyMotion::read(const dictionary& dict) -{ - dict.lookup("momentOfInertia") >> momentOfInertia_; - dict.lookup("mass") >> mass_; - aRelax_ = dict.lookupOrDefault<scalar>("accelerationRelaxation", 1.0); - aDamp_ = dict.lookupOrDefault<scalar>("accelerationDamping", 1.0); - report_ = dict.lookupOrDefault<Switch>("report", false); - - restraints_.clear(); - addRestraints(dict); - - constraints_.clear(); - addConstraints(dict); - - return true; -} - - // ************************************************************************* // diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H index c7b4bd7c30a..b08c7d011ff 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -42,8 +42,8 @@ Description url = {http://link.aip.org/link/?JCP/107/5840/1}, doi = {10.1063/1.474310} - Can add restraints (i.e. a spring) and constraints (i.e. motion - may only be on a plane). + Can add restraints (e.g. a spring) + and constraints (e.g. motion may only be on a plane). SourceFiles sixDoFRigidBodyMotionI.H @@ -66,16 +66,6 @@ SourceFiles namespace Foam { -// Forward declaration of classes -class Istream; -class Ostream; - -// Forward declaration of friend functions and operators -class sixDoFRigidBodyMotion; -Istream& operator>>(Istream&, sixDoFRigidBodyMotion&); -Ostream& operator<<(Ostream&, const sixDoFRigidBodyMotion&); - - /*---------------------------------------------------------------------------*\ Class sixDoFRigidBodyMotion Declaration \*---------------------------------------------------------------------------*/ @@ -105,16 +95,19 @@ class sixDoFRigidBodyMotion //- Centre of mass of initial state point initialCentreOfMass_; + //- Centre of rotation of initial state + point initialCentreOfRotation_; + //- Orientation of initial state tensor initialQ_; + //- Mass of the body + scalar mass_; + //- Moment of inertia of the body in reference configuration // (Q = I) diagTensor momentOfInertia_; - //- Mass of the body - scalar mass_; - //- Acceleration relaxation coefficient scalar aRelax_; @@ -157,54 +150,54 @@ class sixDoFRigidBodyMotion // Access - //- Return access to the restraints + //- Return the restraints inline const PtrList<sixDoFRigidBodyMotionRestraint>& restraints() const; - //- Return access to the constraints + //- Return the constraints inline const PtrList<sixDoFRigidBodyMotionConstraint>& constraints() const; - //- Return access to the initial centre of mass - inline const point& initialCentreOfMass() const; + //- Return the initial centre of rotation + inline const point& initialCentreOfRotation() const; - //- Return access to the initial orientation + //- Return the initial orientation inline const tensor& initialQ() const; - //- Return access to the orientation + //- Return the orientation inline const tensor& Q() const; - //- Return access to acceleration + //- Return the current acceleration inline const vector& a() const; - //- Return access to angular momentum + //- Return the current angular momentum inline const vector& pi() const; - //- Return access to torque + //- Return the current torque inline const vector& tau() const; - //- Return access to the orientation at previous time-step + //- Return the orientation at previous time-step inline const tensor& Q0() const; - //- Return access to velocity at previous time-step + //- Return the velocity at previous time-step inline const vector& v0() const; - //- Return access to acceleration at previous time-step + //- Return the acceleration at previous time-step inline const vector& a0() const; - //- Return access to angular momentum at previous time-step + //- Return the angular momentum at previous time-step inline const vector& pi0() const; - //- Return access to torque at previous time-step + //- Return the torque at previous time-step inline const vector& tau0() const; // Edit - //- Return access to the centre of mass - inline point& initialCentreOfMass(); + //- Return the centre of rotation + inline point& initialCentreOfRotation(); - //- Return access to the centre of mass + //- Return initial orientation inline tensor& initialQ(); //- Return non-const access to the orientation @@ -230,24 +223,6 @@ public: //- Construct null sixDoFRigidBodyMotion(); - //- Construct from components - sixDoFRigidBodyMotion - ( - const point& centreOfMass, - const tensor& Q, - const vector& v, - const vector& a, - const vector& pi, - const vector& tau, - scalar mass, - const point& initialCentreOfMass, - const tensor& initialQ, - const diagTensor& momentOfInertia, - scalar aRelax = 1.0, - scalar aDamp = 1.0, - bool report = false - ); - //- Construct from constant and state dictionaries sixDoFRigidBodyMotion ( @@ -259,159 +234,116 @@ public: sixDoFRigidBodyMotion(const sixDoFRigidBodyMotion&); - //- Destructor - ~sixDoFRigidBodyMotion(); - - // Member Functions - //- Add restraints to the motion, public to allow external - // addition of restraints after construction - void addRestraints(const dictionary& dict); + // Access - //- Add restraints to the motion, public to allow external - // addition of restraints after construction - void addConstraints(const dictionary& dict); + //- Return the mass + inline scalar mass() const; - //- First leapfrog velocity adjust and motion part, required - // before force calculation. Takes old timestep for variable - // timestep cases. - void updatePosition - ( - scalar deltaT, - scalar deltaT0 - ); + //- Return the inertia tensor + inline const diagTensor& momentOfInertia() const; - //- Second leapfrog velocity adjust part - // required after motion and force calculation - void updateAcceleration - ( - const vector& fGlobal, - const vector& tauGlobal, - scalar deltaT - ); + //- Return the motion state + inline const sixDoFRigidBodyMotionState& state() const; - //- Second leapfrog velocity adjust part - // required after motion and force calculation - void updateVelocity(scalar deltaT); + //- Return the current centre of rotation + inline const point& centreOfRotation() const; - //- Global forces supplied at locations, calculating net force - // and moment - void updateAcceleration - ( - const pointField& positions, - const vectorField& forces, - scalar deltaT - ); + //- Return the centre of rotation at previous time-step + inline const point& centreOfRotation0() const; - //- Transform the given initial state pointField by the current - // motion state - tmp<pointField> currentPosition(const pointField& initialPoints) const; + //- Return the initial centre of mass + inline const point& initialCentreOfMass() const; - //- Transform the given initial state pointField by the current - // motion state - tmp<pointField> scaledPosition - ( - const pointField& initialPoints, - const scalarField& scale - ) const; + //- Return the current centre of mass + inline point centreOfMass() const; - //- Transform the given initial state point by the current motion - // state - inline point currentPosition(const point& initialPoints) const; + //- Return the orientation tensor, Q. + // globalVector = Q & bodyLocalVector + // bodyLocalVector = Q.T() & globalVector + inline const tensor& orientation() const; - //- Transform the given initial state direction by the current - // motion state - inline vector currentOrientation(const vector& vInitial) const; + //- Return the angular velocity in the global frame + inline vector omega() const; - //- Access the orientation tensor, Q. - // globalVector = Q & bodyLocalVector - // bodyLocalVector = Q.T() & globalVector - inline const tensor& orientation() const; + //- Return the current velocity + inline const vector& v() const; - //- Predict the position of the supplied initial state point - // after deltaT given the current motion state and the - // additional supplied force and moment - point predictedPosition - ( - const point& initialPoints, - const vector& deltaForce, - const vector& deltaMoment, - scalar deltaT - ) const; + inline vector momentArm() const; - //- Predict the orientation of the supplied initial state - // vector after deltaT given the current motion state and the - // additional supplied moment - vector predictedOrientation - ( - const vector& vInitial, - const vector& deltaMoment, - scalar deltaT - ) const; + //- Return the report Switch + inline bool report() const; - //- Return the angular velocity in the global frame - inline vector omega() const; - //- Return the velocity of a position - inline point currentVelocity(const point& pt) const; + // Edit - //- Report the status of the motion - void status() const; + //- Store the motion state at the beginning of the time-step + inline void newTime(); + //- Return non-const access to the centre of rotation + inline point& centreOfRotation(); - // Access - //- Return access to the motion state - inline const sixDoFRigidBodyMotionState& state() const; + // Constraints and Restraints - //- Return const access to the centre of mass - inline const point& centreOfMass() const; + //- Add restraints to the motion, public to allow external + // addition of restraints after construction + void addRestraints(const dictionary& dict); - //- Return const access to the centre of mass at previous time-step - inline const point& centreOfMass0() const; + //- Add restraints to the motion, public to allow external + // addition of restraints after construction + void addConstraints(const dictionary& dict); - //- Return access to the inertia tensor - inline const diagTensor& momentOfInertia() const; - //- Return const access to the mass - inline scalar mass() const; + // Update state - //- Return the report Switch - inline bool report() const; + //- First leapfrog velocity adjust and motion part, required + // before force calculation. Takes old timestep for variable + // timestep cases. + void updatePosition(scalar deltaT, scalar deltaT0); - //- Return access to velocity - inline const vector& v() const; + //- Second leapfrog velocity adjust part + // required after motion and force calculation + void updateAcceleration + ( + const vector& fGlobal, + const vector& tauGlobal, + scalar deltaT + ); + //- Report the status of the motion + void status() const; - // Edit - //- Store the motion state at the beginning of the time-step - inline void newTime(); + // Transformations - //- Return non-const access to the centre of mass - inline point& centreOfMass(); + //- Return the velocity of a position + inline point velocity(const point& pt) const; - //- Return non-const access to the inertia tensor - inline diagTensor& momentOfInertia(); + //- Transform the given initial state point by the current motion + // state + inline point transform(const point& initialPoints) const; - //- Return non-const access to the mass - inline scalar& mass(); + //- Transform the given initial state pointField by the current + // motion state + tmp<pointField> transform(const pointField& initialPoints) const; + + //- Transform the given initial state pointField by the current + // motion state scaled by the given scale + tmp<pointField> transform + ( + const pointField& initialPoints, + const scalarField& scale + ) const; //- Write void write(Ostream&) const; - //- Read coefficients dictionary and update system parameters, // constraints and restraints but not the current state bool read(const dictionary& dict); - - - // IOstream Operators - - friend Istream& operator>>(Istream&, sixDoFRigidBodyMotion&); - friend Ostream& operator<<(Ostream&, const sixDoFRigidBodyMotion&); }; diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H index 3186ca2fa12..d09e579e8cc 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,8 +25,10 @@ License // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -inline Foam::tensor -Foam::sixDoFRigidBodyMotion::rotationTensorX(scalar phi) const +inline Foam::tensor Foam::sixDoFRigidBodyMotion::rotationTensorX +( + scalar phi +) const { return tensor ( @@ -37,8 +39,10 @@ Foam::sixDoFRigidBodyMotion::rotationTensorX(scalar phi) const } -inline Foam::tensor -Foam::sixDoFRigidBodyMotion::rotationTensorY(scalar phi) const +inline Foam::tensor Foam::sixDoFRigidBodyMotion::rotationTensorY +( + scalar phi +) const { return tensor ( @@ -49,8 +53,10 @@ Foam::sixDoFRigidBodyMotion::rotationTensorY(scalar phi) const } -inline Foam::tensor -Foam::sixDoFRigidBodyMotion::rotationTensorZ(scalar phi) const +inline Foam::tensor Foam::sixDoFRigidBodyMotion::rotationTensorZ +( + scalar phi +) const { return tensor ( @@ -97,13 +103,6 @@ Foam::sixDoFRigidBodyMotion::rotate } -inline const Foam::sixDoFRigidBodyMotionState& -Foam::sixDoFRigidBodyMotion::state() const -{ - return motionState_; -} - - inline const Foam::PtrList<Foam::sixDoFRigidBodyMotionRestraint>& Foam::sixDoFRigidBodyMotion::restraints() const { @@ -119,9 +118,9 @@ Foam::sixDoFRigidBodyMotion::constraints() const inline const Foam::point& -Foam::sixDoFRigidBodyMotion::initialCentreOfMass() const +Foam::sixDoFRigidBodyMotion::initialCentreOfRotation() const { - return initialCentreOfMass_; + return initialCentreOfRotation_; } @@ -192,9 +191,9 @@ inline const Foam::vector& Foam::sixDoFRigidBodyMotion::tau0() const } -inline Foam::point& Foam::sixDoFRigidBodyMotion::initialCentreOfMass() +inline Foam::point& Foam::sixDoFRigidBodyMotion::initialCentreOfRotation() { - return initialCentreOfMass_; + return initialCentreOfRotation_; } @@ -236,72 +235,67 @@ inline Foam::vector& Foam::sixDoFRigidBodyMotion::tau() // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -inline Foam::point Foam::sixDoFRigidBodyMotion::currentPosition -( - const point& initialPoints -) const +inline Foam::scalar Foam::sixDoFRigidBodyMotion::mass() const { - return - ( - centreOfMass() - + (Q() & initialQ_.T() & (initialPoints - initialCentreOfMass_)) - ); + return mass_; } -inline Foam::vector Foam::sixDoFRigidBodyMotion::currentOrientation -( - const vector& vInitial -) const +inline const Foam::diagTensor& +Foam::sixDoFRigidBodyMotion::momentOfInertia() const { - return (Q() & initialQ_.T() & vInitial); + return momentOfInertia_; } -inline const Foam::tensor& -Foam::sixDoFRigidBodyMotion::orientation() const +inline const Foam::sixDoFRigidBodyMotionState& +Foam::sixDoFRigidBodyMotion::state() const { - return Q(); + return motionState_; } -inline Foam::vector Foam::sixDoFRigidBodyMotion::omega() const +inline const Foam::point& Foam::sixDoFRigidBodyMotion::centreOfRotation() const { - return Q() & (inv(momentOfInertia_) & pi()); + return motionState_.centreOfRotation(); } -inline Foam::point Foam::sixDoFRigidBodyMotion::currentVelocity -( - const point& pt -) const +inline const Foam::point& Foam::sixDoFRigidBodyMotion::centreOfRotation0() const { - return (omega() ^ (pt - centreOfMass())) + v(); + return motionState0_.centreOfRotation(); } -inline const Foam::point& Foam::sixDoFRigidBodyMotion::centreOfMass() const +inline const Foam::point& +Foam::sixDoFRigidBodyMotion::initialCentreOfMass() const { - return motionState_.centreOfMass(); + return initialCentreOfMass_; } -inline const Foam::point& Foam::sixDoFRigidBodyMotion::centreOfMass0() const +inline Foam::point Foam::sixDoFRigidBodyMotion::centreOfMass() const { - return motionState0_.centreOfMass(); + return transform(initialCentreOfMass_); } -inline const Foam::diagTensor& -Foam::sixDoFRigidBodyMotion::momentOfInertia() const +inline Foam::vector Foam::sixDoFRigidBodyMotion::momentArm() const { - return momentOfInertia_; + return centreOfMass() - motionState_.centreOfRotation(); } -inline Foam::scalar Foam::sixDoFRigidBodyMotion::mass() const +inline const Foam::tensor& +Foam::sixDoFRigidBodyMotion::orientation() const { - return mass_; + return Q(); +} + + +inline Foam::vector Foam::sixDoFRigidBodyMotion::omega() const +{ + return Q() & (inv(momentOfInertia_) & pi()); } @@ -317,21 +311,31 @@ inline void Foam::sixDoFRigidBodyMotion::newTime() } -inline Foam::point& Foam::sixDoFRigidBodyMotion::centreOfMass() +inline Foam::point& Foam::sixDoFRigidBodyMotion::centreOfRotation() { - return motionState_.centreOfMass(); + return motionState_.centreOfRotation(); } -inline Foam::diagTensor& Foam::sixDoFRigidBodyMotion::momentOfInertia() +inline Foam::point Foam::sixDoFRigidBodyMotion::velocity +( + const point& pt +) const { - return momentOfInertia_; + return (omega() ^ (pt - centreOfRotation())) + v(); } -inline Foam::scalar& Foam::sixDoFRigidBodyMotion::mass() +inline Foam::point Foam::sixDoFRigidBodyMotion::transform +( + const point& initialPoint +) const { - return mass_; + return + ( + centreOfRotation() + + (Q() & initialQ_.T() & (initialPoint - initialCentreOfRotation_)) + ); } // ************************************************************************* // diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C index f4c0b5b7ed6..23e2c35ac6a 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C @@ -28,12 +28,30 @@ License // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // +bool Foam::sixDoFRigidBodyMotion::read(const dictionary& dict) +{ + dict.lookup("momentOfInertia") >> momentOfInertia_; + dict.lookup("mass") >> mass_; + aRelax_ = dict.lookupOrDefault<scalar>("accelerationRelaxation", 1.0); + aDamp_ = dict.lookupOrDefault<scalar>("accelerationDamping", 1.0); + report_ = dict.lookupOrDefault<Switch>("report", false); + + restraints_.clear(); + addRestraints(dict); + + constraints_.clear(); + addConstraints(dict); + + return true; +} + + void Foam::sixDoFRigidBodyMotion::write(Ostream& os) const { motionState_.write(os); - os.writeKeyword("initialCentreOfMass") - << initialCentreOfMass_ << token::END_STATEMENT << nl; + os.writeKeyword("initialCentreOfRotation") + << initialCentreOfRotation_ << token::END_STATEMENT << nl; os.writeKeyword("initialOrientation") << initialQ_ << token::END_STATEMENT << nl; os.writeKeyword("momentOfInertia") @@ -95,48 +113,4 @@ void Foam::sixDoFRigidBodyMotion::write(Ostream& os) const } -// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // - -Foam::Istream& Foam::operator>>(Istream& is, sixDoFRigidBodyMotion& sDoFRBM) -{ - is >> sDoFRBM.motionState_ - >> sDoFRBM.initialCentreOfMass_ - >> sDoFRBM.initialQ_ - >> sDoFRBM.momentOfInertia_ - >> sDoFRBM.mass_; - - // Check state of Istream - is.check - ( - "Foam::Istream& Foam::operator>>" - "(Foam::Istream&, Foam::sixDoFRigidBodyMotion&)" - ); - - return is; -} - - -Foam::Ostream& Foam::operator<< -( - Ostream& os, - const sixDoFRigidBodyMotion& sDoFRBM -) -{ - os << sDoFRBM.state() - << token::SPACE << sDoFRBM.initialCentreOfMass() - << token::SPACE << sDoFRBM.initialQ() - << token::SPACE << sDoFRBM.momentOfInertia() - << token::SPACE << sDoFRBM.mass(); - - // Check state of Ostream - os.check - ( - "Foam::Ostream& Foam::operator<<(Foam::Ostream&, " - "const Foam::sixDoFRigidBodyMotion&)" - ); - - return os; -} - - // ************************************************************************* // diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C index 0e9aada9d01..24eeda45d8a 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,7 +29,7 @@ License Foam::sixDoFRigidBodyMotionState::sixDoFRigidBodyMotionState() : - centreOfMass_(vector::zero), + centreOfRotation_(vector::zero), Q_(I), v_(vector::zero), a_(vector::zero), @@ -38,31 +38,19 @@ Foam::sixDoFRigidBodyMotionState::sixDoFRigidBodyMotionState() {} -Foam::sixDoFRigidBodyMotionState::sixDoFRigidBodyMotionState -( - const point& centreOfMass, - const tensor& Q, - const vector& v, - const vector& a, - const vector& pi, - const vector& tau -) -: - centreOfMass_(centreOfMass), - Q_(Q), - v_(v), - a_(a), - pi_(pi), - tau_(tau) -{} - - Foam::sixDoFRigidBodyMotionState::sixDoFRigidBodyMotionState ( const dictionary& dict ) : - centreOfMass_(dict.lookup("centreOfMass")), + centreOfRotation_ + ( + dict.lookupOrDefault + ( + "centreOfRotation", + dict.lookupOrDefault("centreOfMass", vector::zero) + ) + ), Q_(dict.lookupOrDefault("orientation", tensor::I)), v_(dict.lookupOrDefault("velocity", vector::zero)), a_(dict.lookupOrDefault("acceleration", vector::zero)), @@ -76,7 +64,7 @@ Foam::sixDoFRigidBodyMotionState::sixDoFRigidBodyMotionState const sixDoFRigidBodyMotionState& sDoFRBMS ) : - centreOfMass_(sDoFRBMS.centreOfMass()), + centreOfRotation_(sDoFRBMS.centreOfRotation()), Q_(sDoFRBMS.Q()), v_(sDoFRBMS.v()), a_(sDoFRBMS.a()), diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H index be698ef8697..e7e7eda0979 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -69,7 +69,7 @@ class sixDoFRigidBodyMotionState // Private data //- Current position of the centre of mass of the body - point centreOfMass_; + point centreOfRotation_; //- Orientation, stored as the rotation tensor to transform // from the body to the global reference frame, i.e.: @@ -97,17 +97,6 @@ public: //- Construct null sixDoFRigidBodyMotionState(); - //- Construct from components - sixDoFRigidBodyMotionState - ( - const point& centreOfMass, - const tensor& Q, - const vector& v, - const vector& a, - const vector& pi, - const vector& tau - ); - //- Construct from dictionary sixDoFRigidBodyMotionState(const dictionary& dict); @@ -124,7 +113,7 @@ public: // Access //- Return access to the centre of mass - inline const point& centreOfMass() const; + inline const point& centreOfRotation() const; //- Return access to the orientation inline const tensor& Q() const; @@ -145,7 +134,7 @@ public: // Edit //- Return non-const access to the centre of mass - inline point& centreOfMass(); + inline point& centreOfRotation(); //- Return non-const access to the orientation inline tensor& Q(); diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H index 8df8161efe6..e8658a5c6d5 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,9 +25,10 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -inline const Foam::point& Foam::sixDoFRigidBodyMotionState::centreOfMass() const +inline const Foam::point& +Foam::sixDoFRigidBodyMotionState::centreOfRotation() const { - return centreOfMass_; + return centreOfRotation_; } @@ -61,9 +62,9 @@ inline const Foam::vector& Foam::sixDoFRigidBodyMotionState::tau() const } -inline Foam::point& Foam::sixDoFRigidBodyMotionState::centreOfMass() +inline Foam::point& Foam::sixDoFRigidBodyMotionState::centreOfRotation() { - return centreOfMass_; + return centreOfRotation_; } diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C index 503df53fc49..24984eec5b3 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -30,7 +30,7 @@ License void Foam::sixDoFRigidBodyMotionState::write(dictionary& dict) const { - dict.add("centreOfMass", centreOfMass_); + dict.add("centreOfRotation", centreOfRotation_); dict.add("orientation", Q_); dict.add("velocity", v_); dict.add("acceleration", a_); @@ -41,8 +41,8 @@ void Foam::sixDoFRigidBodyMotionState::write(dictionary& dict) const void Foam::sixDoFRigidBodyMotionState::write(Ostream& os) const { - os.writeKeyword("centreOfMass") - << centreOfMass_ << token::END_STATEMENT << nl; + os.writeKeyword("centreOfRotation") + << centreOfRotation_ << token::END_STATEMENT << nl; os.writeKeyword("orientation") << Q_ << token::END_STATEMENT << nl; os.writeKeyword("velocity") @@ -63,7 +63,7 @@ Foam::Istream& Foam::operator>> Istream& is, sixDoFRigidBodyMotionState& sDoFRBMS ) { - is >> sDoFRBMS.centreOfMass_ + is >> sDoFRBMS.centreOfRotation_ >> sDoFRBMS.Q_ >> sDoFRBMS.v_ >> sDoFRBMS.a_ @@ -87,7 +87,7 @@ Foam::Ostream& Foam::operator<< const sixDoFRigidBodyMotionState& sDoFRBMS ) { - os << token::SPACE << sDoFRBMS.centreOfMass() + os << token::SPACE << sDoFRBMS.centreOfRotation() << token::SPACE << sDoFRBMS.Q() << token::SPACE << sDoFRBMS.v() << token::SPACE << sDoFRBMS.a() diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C index bc3afcd13f0..15bcc0df931 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C @@ -198,7 +198,7 @@ void Foam::sixDoFRigidBodyMotionSolver::solve() forcesDict.add("patches", patches_); forcesDict.add("rhoInf", rhoInf_); forcesDict.add("rhoName", rhoName_); - forcesDict.add("CofR", motion_.centreOfMass()); + forcesDict.add("CofR", motion_.centreOfRotation()); forces f("forces", db(), forcesDict); @@ -220,14 +220,14 @@ void Foam::sixDoFRigidBodyMotionSolver::solve() motion_.updateAcceleration ( - ramp*(f.forceEff() + g.value()*motion_.mass()), - ramp*(f.momentEff()), + ramp*(f.forceEff() + motion_.mass()*g.value()), + ramp*(f.momentEff() + motion_.mass()*(motion_.momentArm() ^ g.value())), t.deltaTValue() ); // Update the displacements pointDisplacement_.internalField() = - motion_.scaledPosition(points0(), scale_) - points0(); + motion_.transform(points0(), scale_) - points0(); // Displacement has changed. Update boundary conditions pointConstraints::New diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/U b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/U index 8015d9b0e0d..38b6af93664 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/U +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/U @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/fixedInlet b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/fixedInlet index 424f38bdb15..21f972203a1 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/fixedInlet +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/fixedInlet @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/frontBackTopBottomPatches b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/frontBackTopBottomPatches index e48cca8284a..fc8ec955695 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/frontBackTopBottomPatches +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/frontBackTopBottomPatches @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/initialConditions b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/initialConditions index 101d2d5b289..bccc59497ee 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/initialConditions +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/initialConditions @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/k b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/k index d5de7827bea..c6604cfcd1b 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/k +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/k @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/nut b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/nut index d29f67c5c43..ad8a0fb9e65 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/nut +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/nut @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/omega b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/omega index 5b2ceee733a..6e6863b6829 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/omega +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/omega @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/p b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/p index dc7632711db..61b354d2107 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/p +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/p @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/pointDisplacement b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/pointDisplacement index 7c9f66360d2..c71b386dda6 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/pointDisplacement +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/pointDisplacement @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/RASProperties b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/RASProperties index 67cc1be5422..a9bf04940b7 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/RASProperties +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/RASProperties @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict index 4683689cbf4..6b07b97a48a 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ @@ -46,13 +46,14 @@ sixDoFRigidBodyMotionCoeffs yLine { sixDoFRigidBodyMotionConstraint line; - direction (0 1 0); + centreOfRotation (0.25 0.007 0.125); + direction (0 1 0); } zAxis { sixDoFRigidBodyMotionConstraint axis; - axis (0 0 1); + axis (0 0 1); } } diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/polyMesh/boundary b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/polyMesh/boundary index 84afed0690a..16f360a5254 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/polyMesh/boundary +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/polyMesh/boundary @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/transportProperties b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/transportProperties index 098c4f7e5e1..dd7419bdc50 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/transportProperties +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/transportProperties @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/turbulenceProperties b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/turbulenceProperties index 17a36ec3438..fa68b2620ee 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/turbulenceProperties +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/turbulenceProperties @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/controlDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/controlDict index 65890fc2c18..d6a374f4662 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/controlDict +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/controlDict @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ @@ -23,13 +23,13 @@ startTime 0; stopAt endTime; -endTime 0.6; +endTime 5; deltaT 1e-5; writeControl adjustableRunTime; -writeInterval 5e-3; +writeInterval 1e-2; purgeWrite 0; diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/decomposeParDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/decomposeParDict index f3cad5eaea9..fb312209aa5 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/decomposeParDict +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/decomposeParDict @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSchemes b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSchemes index 136346dfaba..60d587ec44b 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSchemes +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSchemes @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSolution b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSolution index a72df2c072f..e2f0e0f622c 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSolution +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSolution @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/U b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/U index 7615c5dc17c..6ffa76e90af 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/U +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/U @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/fixedInlet b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/fixedInlet index 424f38bdb15..21f972203a1 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/fixedInlet +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/fixedInlet @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/frontBackTopBottomPatches b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/frontBackTopBottomPatches index e48cca8284a..fc8ec955695 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/frontBackTopBottomPatches +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/frontBackTopBottomPatches @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/initialConditions b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/initialConditions index 101d2d5b289..bccc59497ee 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/initialConditions +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/initialConditions @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/k b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/k index d5de7827bea..c6604cfcd1b 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/k +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/k @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/nut b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/nut index d29f67c5c43..ad8a0fb9e65 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/nut +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/nut @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/omega b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/omega index 5b2ceee733a..6e6863b6829 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/omega +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/omega @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/p b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/p index dc7632711db..61b354d2107 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/p +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/p @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/RASProperties b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/RASProperties index 67cc1be5422..a9bf04940b7 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/RASProperties +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/RASProperties @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/polyMesh/boundary b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/polyMesh/boundary index 84afed0690a..16f360a5254 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/polyMesh/boundary +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/polyMesh/boundary @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/transportProperties b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/transportProperties index 098c4f7e5e1..dd7419bdc50 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/transportProperties +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/transportProperties @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/controlDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/controlDict index 8cef5fbc7fe..67c906e1692 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/controlDict +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/controlDict @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict index 689ac5c7358..3835d038bc1 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/extrudeMeshDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/extrudeMeshDict index 4fb4d3a2269..227ff551d3e 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/extrudeMeshDict +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/extrudeMeshDict @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSchemes b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSchemes index 398c2ac1da9..44336e161e1 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSchemes +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSchemes @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSolution b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSolution index e10a126abc0..945edb9d953 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSolution +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSolution @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/constant/polyMesh/blockMeshDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/constant/polyMesh/blockMeshDict index dd2b959fc0b..6193ac2cfbe 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/constant/polyMesh/blockMeshDict +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/constant/polyMesh/blockMeshDict @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/controlDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/controlDict index 6d9c62c7f6b..4a68bee9d3c 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/controlDict +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/controlDict @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/decomposeParDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/decomposeParDict index d6cd01fd8fd..ec11c98681b 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/decomposeParDict +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/decomposeParDict @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSchemes b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSchemes index 34b1ddc8aa2..6779d76aa3f 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSchemes +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSchemes @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSolution b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSolution index e7e1dc6058c..058730230b8 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSolution +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSolution @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/snappyHexMeshDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/snappyHexMeshDict index 79558988a40..ef4841231cd 100644 --- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/snappyHexMeshDict +++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/snappyHexMeshDict @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/U b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/U index b9a012f9641..7cfe74ca6bc 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/U +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/U @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/alpha.water b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/alpha.water index ccd0b82c0cd..29be4b81bfa 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/alpha.water +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/alpha.water @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/epsilon b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/epsilon index 6a49823afc8..52fc06c197a 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/epsilon +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/epsilon @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/k b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/k index b1ea45bf7ce..079d6ccdd42 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/k +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/k @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/nut b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/nut index 3d8dd146fca..124954685a0 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/nut +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/nut @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/p_rgh b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/p_rgh index 10c9809c57c..e52c282b160 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/p_rgh +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/p_rgh @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement index 8d147349251..e82a3fca8d8 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/RASProperties b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/RASProperties index 63c4b0ac471..d964d3c8627 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/RASProperties +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/RASProperties @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict index 35b0cbaa139..e32ae2273dd 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ @@ -26,11 +26,62 @@ sixDoFRigidBodyMotionCoeffs innerDistance 0.05; outerDistance 0.35; - centreOfMass (0.5 0.5 0.5); - momentOfInertia (0.08622222 0.08622222 0.144); - mass 9.6; + centreOfMass (0.5 0.45 0.35); + + // Cuboid dimensions + Lx 0.3; + Ly 0.2; + Lz 0.5; + + // Density of the solid + rho 500; + + // Cuboid mass + mass #calc "$rho*$Lx*$Ly*$Lz"; + + // Cuboid moment of inertia about the centre of mass + momentOfInertia #codeStream + { + codeInclude + #{ + #include "diagTensor.H" + #}; + + code + #{ + scalar sqrLx = sqr($Lx); + scalar sqrLy = sqr($Ly); + scalar sqrLz = sqr($Lz); + os << + $mass + *diagTensor(sqrLy + sqrLz, sqrLx + sqrLz, sqrLx + sqrLy)/12.0; + #}; + }; + report on; - accelerationRelaxation 0.7; + accelerationRelaxation 0.5; + + constraints + { + // fixedPoint + // { + // sixDoFRigidBodyMotionConstraint point; + // centreOfRotation (0.5 0.45 0.1); + // } + + fixedLine + { + sixDoFRigidBodyMotionConstraint line; + centreOfRotation (0.5 0.45 0.1); + direction (0 1 0); + } + + fixedAxis + { + sixDoFRigidBodyMotionConstraint axis; + axis (0 1 0); + } + } } diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/g b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/g index 259d6a5768b..c97a941a2a7 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/g +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/g @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/blockMeshDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/blockMeshDict index ba292d0655b..3fedffc1889 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/blockMeshDict +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/blockMeshDict @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ @@ -30,7 +30,7 @@ vertices blocks ( - hex (0 1 2 3 4 5 6 7) (40 40 60) simpleGrading (1 1 1) + hex (0 1 2 3 4 5 6 7) (20 20 30) simpleGrading (1 1 1) ); edges diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/boundary b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/boundary index 1f9cc388f08..898b4642226 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/boundary +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/boundary @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ @@ -21,21 +21,21 @@ FoamFile { type wall; inGroups 1(wall); - nFaces 11200; - startFace 277808; + nFaces 2800; + startFace 33146; } atmosphere { type patch; - nFaces 1600; - startFace 289008; + nFaces 400; + startFace 35946; } floatingObject { type wall; inGroups 1(wall); - nFaces 672; - startFace 290608; + nFaces 348; + startFace 36346; } ) diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/transportProperties b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/transportProperties index 241e841ad0e..4cead4f61be 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/transportProperties +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/transportProperties @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/turbulenceProperties b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/turbulenceProperties index f9adc322f9a..e9fdea0cb23 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/turbulenceProperties +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/turbulenceProperties @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict index aee9827f444..b1ca1d5d875 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/decomposeParDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/decomposeParDict index ab0a2c7c7d3..575ab2cc24d 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/decomposeParDict +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/decomposeParDict @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSchemes index 282fe42c44b..c0a13530ea2 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSchemes +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSchemes @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSolution b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSolution index 39ce379d624..2d0db409694 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSolution +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSolution @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/setFieldsDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/setFieldsDict index fbfb344708b..acab99a766c 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/setFieldsDict +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/setFieldsDict @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/topoSetDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/topoSetDict index 81fbe325066..686a7035ade 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/topoSetDict +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/topoSetDict @@ -1,7 +1,7 @@ /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 2.3.0 | +| \\ / O peration | Version: 2.3.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ @@ -24,7 +24,7 @@ actions source boxToCell; sourceInfo { - box (0.35 0.35 0.44) (0.65 0.65 0.56); + box (0.35 0.35 0.1) (0.65 0.55 0.6); } } -- GitLab