CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    小白求助——floatingobject算例浮块突然失去浮体性质

    OpenFOAM
    3
    14
    816
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • A
      AXY 0 最后由 编辑

      请教各位,最近在floatingobject算例的基础上进行了一些修改——将浮体放到水下,密度仍然小于水,理想情况下应该上浮,但是从结果看浮体却失去了其性质,在水面扰动下也依旧一动不动,请大佬们指点迷津。微信图片_1.jpg

      1 条回复 最后回复 回复 引用
      • bestucan
        bestucan 版主 副教授 最后由 编辑

        基础上进行了一些修改

        把那个基础找出来,重新修改。一点点一点点修改,不要一下把修改做完。每做一点点修改就跑一遍算例,看看在正常不。就知道哪一点点修改导致的不正常了。

        滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

        异步沟通方式(《posting style》from wiki)(下载后打开):
        https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
        提问的智慧(github在gitee的镜像):
        https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md

        A 1 条回复 最后回复 回复 引用
        • A
          AXY 0 @bestucan 最后由 李东岳 编辑

          @bestucan微信图片_2.png 感谢回复,我现在解决了这个问题,浮块可以实现上浮了,但是在进一步修改的时候又出现了另外的问题。在水面以上加设了一个垂向震荡物块,水下的物块不变。但是运行报错(图如下第一张)。这个错误网上有人问过,按照我的理解是此时floatingobject在水中的上浮不能进行计算了,可是为啥添加震荡物块之前没问题,之后就不行了呢?是因为一个dynamicMeshDict里不能让两个域运动起来嘛,求大佬解答。下面是报错的结果、动网格文件和模型图。

          FoamFile
          {
              version     2.0;
              format      ascii;
              class       dictionary;
              object      dynamicMeshDict;
          }
          // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
          dynamicFvMesh       dynamicMotionSolverFvMesh;
          
          motionSolverLibs   (rigidBodyMeshMotion);
          motionSolver       rigidBodyMotion;
          
          rigidBodyMotionCoeffs
          {
              report          on;
          
              solver
              {
                  type Newmark;
              }
          
              accelerationRelaxation 0.7;
          
              bodies
              {
                  floatingObject
                  {
                      type            cuboid;
                      parent          root;
          
                      // Cuboid dimensions
                      Lx              2;
                      Ly              2;
                      Lz              2;
          
                      // Density of the cuboid
                      rho             800;
          
                      // Cuboid mass
                      mass            #eval{ $rho*$Lx*$Ly*$Lz };
                      L               ($Lx $Ly $Lz);
                      centreOfMass    (0 0 1);//
                      transform       (1 0 0 0 1 0 0 0 1) (5 5 2);
          
          
                      joint
                      {
                          type            composite;
                          joints
                          (
                              {
                                  type Pxyz;
                              }
                              {
                                  type Rxyz;
                              }
                          );
                      }
          			
          			/*restraints 
          			{
          
          				verticalSpring
          				{
          					body                     floatingObject;
          					sixDoFRigidBodyMotionRestraint linearSpring;
          					anchor          (5 5 8);
          					refAttachmentPt (5 5 4);
          					stiffness       2;
          					damping         0.00;
          					restLength      3;
          				}
                      }*/
          			
                      patches         (floatingObject);
                      innerDistance   0.05;
                      outerDistance   5.75;
                  }		
              }
          }
          
          dynamicFvMesh   dynamicMotionSolverFvMesh;
          
          motionSolverLibs   ("libfvMotionSolvers.so");
          motionSolver    displacementLaplacian;	
          
          displacementLaplacianCoeffs
          {
          	diffusivity inverseDistance (Object);
          }
          ![2.0000.png](/assets/uploads/files/1645450190145-2.0000.png) 
          
          1 条回复 最后回复 回复 引用
          • bestucan
            bestucan 版主 副教授 最后由 编辑

            我抽空看了一下,然后,没看懂...:135:

            报错提示

            you are probably trying to solv3e for a field with a default boundary condition.

            你可以从这个 搜索链接 上看cfd online上关于该报错的搜索结果。我没做过这个,不太了解。

            滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

            异步沟通方式(《posting style》from wiki)(下载后打开):
            https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
            提问的智慧(github在gitee的镜像):
            https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md

            A 1 条回复 最后回复 回复 引用
            • A
              AXY 0 @bestucan 最后由 编辑

              @bestucan 不好意思,可能我的表述有所欠缺。我试着换一种问法,请问一个动网格文件dynamicMeshDict里可以计算计算域中两处网格的运动吗(我目前涉及到的只有计算域中一个东西运动)?就像上面贴出的代码,那是我的动网格文件里的,代码上面的部分是控制水中物体上浮,下面的是控制水面以上的物体运动。我分别运行是没有问题的,但是合起来就报错了,我怀疑是放到一起导致的。不知这次有没有将问题描述清楚,求解答,感谢老师。

              李东岳 bestucan 2 条回复 最后回复 回复 引用
              • 李东岳
                李东岳 管理员 @AXY 0 最后由 编辑

                看一下你cellDisplacement的边界条件。这个需要时calculated,你可能给了边界条件

                CFD高性能服务器 http://dyfluid.com/servers.html

                A 1 条回复 最后回复 回复 引用
                • bestucan
                  bestucan 版主 副教授 @AXY 0 最后由 编辑

                  @axy-0 我说的看不懂不是你的描述看不懂,是我看不懂这个领域的问题和代码:chigua2:

                  不过你描述的更详细,我不懂也能找到一些相关资料。

                  看这个的第七页底部的 motionSolverLibs 配置。两个浮体求解器。你的只有一个。但估计是求解方法不一样。

                  还有这个,应该是用一个求解器求解两个浮体。

                  看哪个对你有用。

                  滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

                  异步沟通方式(《posting style》from wiki)(下载后打开):
                  https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
                  提问的智慧(github在gitee的镜像):
                  https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md

                  A 2 条回复 最后回复 回复 引用
                  • A
                    AXY 0 @李东岳 最后由 李东岳 编辑

                    @李东岳 感谢李老师回复,我零文件下的pointdisplacement代码如下,水中物体的边界类型我一开始设置为calculated,就出现了上面的报错提示,报错后我设置为了固定数值fixedvalue,就可以运行了,但与此带来的就是水中物体失去浮体性质。

                    dimensions      [0 1 0 0 0 0 0];
                    
                    internalField   uniform (0 0 0);
                    
                    boundaryField
                    {    
                    
                        stationaryWalls
                        {
                            type            fixedValue;
                            value           uniform (0 0 0);
                        }
                    
                        atmosphere
                        {
                            type            fixedValue;
                            value           uniform (0 0 0);
                        }
                    
                        floatingObject
                        {
                            type         	calculated;   			
                            value           uniform (0 0 0);
                        }
                      
                    	Object
                        {
                            type            oscillatingDisplacement;
                    		omega           6.28;
                    		amplitude       (0 0 0.5);
                    		value           uniform (0 0 0);
                        }
                    
                    }
                    
                    1 条回复 最后回复 回复 引用
                    • A
                      AXY 0 @bestucan 最后由 编辑

                      @bestucan 感谢这位老师的帮助,今天有点小忙,先马一下您的资料:140:

                      1 条回复 最后回复 回复 引用
                      • 李东岳
                        李东岳 管理员 最后由 编辑

                        因为你设置为固定值了,所以就失去浮动特征了。你要设置成calculated

                        CFD高性能服务器 http://dyfluid.com/servers.html

                        1 条回复 最后回复 回复 引用
                        • A
                          AXY 0 @bestucan 最后由 编辑

                          @bestucan 您好,现在我解决了之前的问题,两个物体可以保持自身的运动状态了。所以又想继续在两个物体之间添加一个弹簧,因为我现在还看不懂c++的代码,因此只能依照您给的双附体的那份资料依葫芦画瓢,在修改sixdofrigidbodymotion代码后进行编译,在编译过程中出现了点问题,但也没有报error,请您指点以下问题所在。
                          6.0000.png QQ图片2.png

                          1 条回复 最后回复 回复 引用
                          • A
                            AXY 0 最后由 编辑

                            @李东岳 感谢老师回复,现在我解决了之前的问题,在进一步往下做。

                            1 条回复 最后回复 回复 引用
                            • bestucan
                              bestucan 版主 副教授 最后由 编辑

                              myLinearSpring.C 无法编译。

                              想把它整的能编译就比较麻烦了, 这不是 C++ 而是 makefile 的知识。本来就一个 makefile 的话也不算特别麻烦。 OpenFOAM 自己封装了个 wmake,把 makefile 分放到 Make 文件夹里的 file 和 option 了。

                              依赖的源文件和库都在那里写着。myLinearSpring.C.dep 就是编译源文件依赖的文件。要么是 myLinearSpring.C 的位置不对,要么是编译路径没配置对。

                              参考这个,不过这个是 makefile 不是 wmake

                              滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

                              异步沟通方式(《posting style》from wiki)(下载后打开):
                              https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
                              提问的智慧(github在gitee的镜像):
                              https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md

                              A 1 条回复 最后回复 回复 引用
                              • A
                                AXY 0 @bestucan 最后由 编辑

                                @bestucan 感谢您的回复,文件不能编译的问题我目前已经解决。新的库编译好后我试着用新定义的弹簧mylinearspring连接我案例的两个物体,跑了一下case发现结果不尽人意,可能这个弹簧只能像报告中那样用在两个都是被动运动的浮体上,我这里有个主动运动的,就用不了了。可能还要后续对库进行另外的改动,鉴于现在刚学openfoam不久,之前没学过c++,所以源文件还读不懂,要先去补补c++的东西。再次感谢您的帮助:xinxin:

                                1 条回复 最后回复 回复 引用
                                • First post
                                  Last post