From 7c54adb178dfb562923731226fa85287ac770999 Mon Sep 17 00:00:00 2001 From: Henry <Henry> Date: Fri, 6 Dec 2013 15:41:17 +0000 Subject: [PATCH] sixDoFRigidBodyMotion: support acceleration relaxation and damping --- .../sixDoFRigidBodyMotion.C | 17 +++++++++++------ .../sixDoFRigidBodyMotion.H | 4 ++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C index 4e218fc0d31..7f6c58b150b 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C +++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C @@ -175,6 +175,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion() momentOfInertia_(diagTensor::one*VSMALL), mass_(VSMALL), aRelax_(1.0), + aDamp_(1.0), report_(false) {} @@ -192,6 +193,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion const tensor& initialQ, const diagTensor& momentOfInertia, scalar aRelax, + scalar aDamp, bool report ) : @@ -215,6 +217,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion momentOfInertia_(momentOfInertia), mass_(mass), aRelax_(aRelax), + aDamp_(aDamp), report_(report) {} @@ -239,6 +242,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion(const dictionary& dict) momentOfInertia_(dict.lookup("momentOfInertia")), mass_(readScalar(dict.lookup("mass"))), aRelax_(dict.lookupOrDefault<scalar>("accelerationRelaxation", 1.0)), + aDamp_(dict.lookupOrDefault<scalar>("accelerationDamping", 1.0)), report_(dict.lookupOrDefault<Switch>("report", false)) { addRestraints(dict); @@ -264,6 +268,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion momentOfInertia_(sDoFRBM.momentOfInertia_), mass_(sDoFRBM.mass_), aRelax_(sDoFRBM.aRelax_), + aDamp_(sDoFRBM.aDamp_), report_(sDoFRBM.report_) {} @@ -375,8 +380,8 @@ void Foam::sixDoFRigidBodyMotion::updatePosition if (Pstream::master()) { - v() = v0() + 0.5*deltaT0*a(); - pi() = pi0() + 0.5*deltaT0*tau(); + v() = v0() + aDamp_*0.5*deltaT0*a(); + pi() = pi0() + aDamp_*0.5*deltaT0*tau(); // Leapfrog move part centreOfMass() = centreOfMass0() + deltaT*v(); @@ -426,8 +431,8 @@ void Foam::sixDoFRigidBodyMotion::updateAcceleration applyConstraints(deltaT); // Correct velocities - v() += 0.5*deltaT*a(); - pi() += 0.5*deltaT*tau(); + v() += aDamp_*0.5*deltaT*a(); + pi() += aDamp_*0.5*deltaT*tau(); if (report_) { @@ -446,8 +451,8 @@ void Foam::sixDoFRigidBodyMotion::updateVelocity(scalar deltaT) if (Pstream::master()) { - v() += 0.5*deltaT*a(); - pi() += 0.5*deltaT*tau(); + v() += aDamp_*0.5*deltaT*a(); + pi() += aDamp_*0.5*deltaT*tau(); if (report_) { diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H index dcdc9f441bb..2a9d6dcfa19 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H +++ b/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H @@ -122,6 +122,9 @@ class sixDoFRigidBodyMotion //- Acceleration relaxation coefficient scalar aRelax_; + //- Acceleration damping coefficient (for steady-state simulations) + scalar aDamp_; + //- Switch to turn reporting of motion data on and off Switch report_; @@ -264,6 +267,7 @@ public: const tensor& initialQ, const diagTensor& momentOfInertia, scalar aRelax = 1.0, + scalar aDamp = 1.0, bool report = false ); -- GitLab