/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v1812 | | \\ / A nd | Web: www.OpenFOAM.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object dynamicMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dynamicFvMesh dynamicOversetFvMesh; solvers { VF { motionSolverLibs ("libfvMotionSolvers.so" ); motionSolver solidBody; solidBodyMotionFunction drivenLinearMotion; cellSet c0; CofGvelocity CofG; normal (0 0 1); } cube { motionSolverLibs ("sixDoFRigidBodyMotion"); motionSolver sixDoFRigidBodyMotion; cellSet c1; patches (floatingObject); innerDistance 1000.0; outerDistance 1001.0; centreOfMass (0.5 0.5 0.4); CofGvelocity CofG; // Cuboid dimensions Lx 0.24; Ly 0.24; Lz 0.4; // Density of the solid rhoSolid 500; // Cuboid mass mass #eval{ $rhoSolid*$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.6; accelerationDamping 1; solver { type Newmark; } constraints { fixedAxis { sixDoFRigidBodyMotionConstraint plane; normal (0 0 1); } } restraints { linearSpring { sixDoFRigidBodyMotionRestraint linearSpring; anchor (0 0.5 0.4); refAttachmentPt (0.5 0.5 0.4); stiffness 100; damping 0; restLength 0; } } } } // ************************************************************************* //