大家好,请问大家在使用sixDoFRigidBodyMotion进行流固耦合的时候,在仿真完毕之后如果想要续算是怎么设置的?
我使用的是OpenFOAM V2306,使用的求解以下是我的dynamicMeshDict文件:
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object dynamicMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dynamicFvMesh dynamicOversetFvMesh;
motionSolverLibs (sixDoFRigidBodyMotion);
motionSolver sixDoFRigidBodyMotion;
dynamicFvMesh dynamicOversetFvMesh;
sixDoFRigidBodyMotionCoeffs
{
patches (cylinder);
innerDistance 100;
outerDistance 101;
mass 10;
centreOfMass (0.0 0.0 0.0);
momentOfInertia (1 1 1.5625);
g (0 0 0);
rho rhoInf;
rhoInf 1;
report on;
solver
{
type Newmark;
}
constraints
{
yLine
{
sixDoFRigidBodyMotionConstraint line;
direction ( 0 1 0);
}
rotation
{
sixDoFRigidBodyMotionConstraint axis;
axis (0 0 1);
}
}
restraints
{
spring1
{
sixDoFRigidBodyMotionRestraint linearSpring;
anchor (0.0 0.0 0.0);
refAttachmentPt (0.0 0.0 0.0);
stiffness 10.96622711232151;
damping 0.6283185307179585;
restLength 0;
}
spring2
{
sixDoFRigidBodyMotionRestraint linearAxialAngularSpring;
axis (0 0 1);
stiffness 1.7134729863002358;
damping 0.09817477042468103;
}
}
}
// ************************************************************************* //
以下是正常仿真300s之后的log.overPimpleDyMFoam中最后一步和sixDoFRigidMotion和overset有关的输出:
Restraint spring1: attachmentPt - anchor (0 -0.367945 0) spring length 0.367945 force (-0 4.0584 -0)
Restraint spring2: angle 0.516284 moment (0 0 -0.883591)
6-DoF rigid body motion
Centre of rotation: (0 -0.368716 0)
Centre of mass: (0 -0.368716 0)
Orientation: (0.869769 -0.493459 0 0.493459 0.869769 0 0 0 1)
Linear velocity: (0 -0.372264 0)
Angular velocity: (0 0 -0.107739)
inverseDistance : detected 2 mesh regions
zone:0 nCells:50721 voxels:(40 40 1) bb:(16.9781 3.77358 -0.500006) (20.9906 8.00001 0.500006)
zone:1 nCells:2280 voxels:(40 40 1) bb:(-72 -40 -2.50004) (-40 -24 -1.49996)
Overset analysis : nCells : 53001
calculated : 52701
interpolated : 189 (from local:0 mixed local/remote:0 remote:189)
hole : 111
如果我想续算,直接修改controlDict中的endTime显然是会出现问题的,它会使用原来的dynamicMeshDict中的数据作为300s的初值,导致计算无法正常进行。
而如果我参照最后一步的输出修改dynamicMeshDict文件:
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object dynamicMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dynamicFvMesh dynamicOversetFvMesh;
motionSolverLibs (sixDoFRigidBodyMotion);
motionSolver sixDoFRigidBodyMotion;
sixDoFRigidBodyMotionCoeffs
{
patches (cylinder);
innerDistance 100;
outerDistance 101;
mass 10;
// centreOfMass (0.0 0.0 0.0);
centreOfMass (0 -0.368716 0);
momentOfInertia (1 1 1.5625);
orientation (0.869769 -0.493459 0 0.493459 0.869769 0 0 0 1);
velocity (0 -0.372264 0);
angularMomentum (0 0 -0.1683421875);
// angularVelocity (0 0 -0.107739);
g (0 0 0);
rho rhoInf;
rhoInf 1;
report on;
solver
{
type Newmark;
}
constraints
{
yLine
{
sixDoFRigidBodyMotionConstraint line;
direction ( 0 1 0);
}
rotation
{
sixDoFRigidBodyMotionConstraint axis;
axis (0 0 1);
}
}
restraints
{
spring1
{
sixDoFRigidBodyMotionRestraint linearSpring;
anchor (0.0 0.0 0.0);
// anchor (0 -0.368716 0);
// refAttachmentPt (0.0 0.0 0.0);
refAttachmentPt (0 -0.368716 0);
stiffness 10.96622711232151;
damping 0.06283185307179585;
restLength 0;
}
spring2
{
sixDoFRigidBodyMotionRestraint linearAxialAngularSpring;
axis (0 0 1);
stiffness 1.7134729863002358;
damping 0.009817477042468103;
// referenceOrientation 0;
}
}
}
// ************************************************************************* //
首先根据最后一步的数据修改dynamicMeshDict文件我不知道会不会带来新的误差,然后这种方法也没有明显效果,以下是修改后续算的第一步输出:
Restraint spring1: attachmentPt - anchor (0 -0.368716 0) spring length 0.368716 force (-0 4.06681 -0)
Restraint spring2: angle 0.516062 moment (0 0 -0.883201)
6-DoF rigid body motion
Centre of rotation: (0 -0.369639 0)
Centre of mass: (0 -0.369639 0)
Orientation: (0.869901 -0.493226 0 0.493226 0.869901 0 0 0 1)
Linear velocity: (0 -0.371839 0)
Angular velocity: (0 0 -0.10837)
inverseDistance : detected 2 mesh regions
zone:0 nCells:50721 voxels:(230 230 1) bb:(-8.00004 -8.00004 -0.500036) (24 8.00004 0.500036)
zone:1 nCells:2280 voxels:(230 230 1) bb:(-0.999904 -1.00093 -0.500003) (1.0001 0.99908 0.500003)
Overset analysis : nCells : 53001
calculated : 52683
interpolated : 202 (from local:202 mixed local/remote:0 remote:0)
hole : 109
6-DoF相关的输出,通过修改dynamicMeshDict已经和前面比较接近了,但是zone 0, zone 1相关的输出有些差异,同时力系数突然变得很大:
forceCoeffs forceCoeffs write:
Coefficient Total Pressure Viscous Internal
Cd: -734104 -733933 -171.164 0
Cd(f): -367052 -366966 -85.5821 0
Cd(r): -367052 -366966 -85.5821 0
Cl: -458471 -457934 -537.556 0
Cl(f): -295374 -294999 -375.408 0
Cl(r): -163097 -162935 -162.148 0
CmPitch: -66138.8 -66032.2 -106.63 0
CmRoll: -7.89329e-15 -7.89337e-15 7.8177e-20 0
CmYaw: 8.40485e-15 8.40299e-15 1.86337e-18 0
Cs: 2.00416e-14 2.00378e-14 3.83127e-18 0
Cs(f): 1.84257e-14 1.84219e-14 3.779e-18 0
Cs(r): 1.61596e-15 1.61591e-15 5.22695e-20 0
writing force and moment coefficient files.
导致后续计算无法正常进行(时间步长变得很短)。
所以我想请教一下大家在使用sixDoFRigidMotion进行流固耦合仿真的时候,如果想要续算有什么好方法吗?因为似乎openfoam没有保存sixDoFRigidMotion的相关参数(如质心位置、速度、加速度等)。