<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[sixDoFRigidBodyMotion如何续算？]]></title><description><![CDATA[<p dir="auto">大家好，请问大家在使用sixDoFRigidBodyMotion进行流固耦合的时候，在仿真完毕之后如果想要续算是怎么设置的？</p>
<p dir="auto">我使用的是OpenFOAM V2306，使用的求解以下是我的dynamicMeshDict文件：</p>
<pre><code>/*--------------------------------*- 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;
      }
  }
}
// ************************************************************************* //
</code></pre>
<p dir="auto">以下是正常仿真300s之后的log.overPimpleDyMFoam中最后一步和sixDoFRigidMotion和overset有关的输出：</p>
<pre><code>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
</code></pre>
<p dir="auto">如果我想续算，直接修改controlDict中的endTime显然是会出现问题的，它会使用原来的dynamicMeshDict中的数据作为300s的初值，导致计算无法正常进行。</p>
<p dir="auto">而如果我参照最后一步的输出修改dynamicMeshDict文件：</p>
<pre><code>/*--------------------------------*- 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;
      }
  }
}
// ************************************************************************* //
</code></pre>
<p dir="auto">首先根据最后一步的数据修改dynamicMeshDict文件我不知道会不会带来新的误差，然后这种方法也没有明显效果，以下是修改后续算的第一步输出：</p>
<pre><code>
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
</code></pre>
<p dir="auto">6-DoF相关的输出，通过修改dynamicMeshDict已经和前面比较接近了，但是zone 0， zone 1相关的输出有些差异，同时力系数突然变得很大：</p>
<pre><code>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.
</code></pre>
<p dir="auto">导致后续计算无法正常进行（时间步长变得很短）。</p>
<p dir="auto">所以我想请教一下大家在使用sixDoFRigidMotion进行流固耦合仿真的时候，如果想要续算有什么好方法吗？因为似乎openfoam没有保存sixDoFRigidMotion的相关参数（如质心位置、速度、加速度等）。</p>
]]></description><link>https://cfd-china.com/topic/6810/sixdofrigidbodymotion如何续算</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Jul 2026 14:10:58 GMT</lastBuildDate><atom:link href="https://cfd-china.com/topic/6810.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 16 Dec 2023 01:31:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to sixDoFRigidBodyMotion如何续算？ on Sat, 06 Jul 2024 04:45:34 GMT]]></title><description><![CDATA[<p dir="auto">老师您好，我想请问一下关于字典中关键词的含义<br />
innerDistance 100;<br />
outerDistance 101;</p>
<p dir="auto">再找到的一个介绍中这样解释：innerDistance 内的任何内容直接将网格节点作为刚体移动。在innerDistance 和outerDistance 之间，网格节点变形。在outerDistance 之外，不会发生变形。outerDisatance永远大于innerDistance。</p>
<p dir="auto">想请问一下老师，这个数值单位是m（米）吗，如果是，这个距离远大于建立的模型的尺寸，我在很多算例都看见是这么设置的，那么这两个关键词的意义是什么。</p>
]]></description><link>https://cfd-china.com/post/39078</link><guid isPermaLink="true">https://cfd-china.com/post/39078</guid><dc:creator><![CDATA[z597288]]></dc:creator><pubDate>Sat, 06 Jul 2024 04:45:34 GMT</pubDate></item></channel></rss>