CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    关于wedge边界的使用

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

      最近看到一篇关于气泡的论文里面的模拟以轴对称方式进行,方便节省计算时间,计算区域是一个具有五度张开角的楔形物,如图所示:
      微信图片_20220322143435.jpg
      这里有几个问题想请教下大家:
      1.这个计算域只计算5度,在后处理时怎么调出完整的,毕竟要看结果。
      2.用了wedge边界,相应的0文件里面的p、aplha.water、T该怎么改
      3.请问下有什么算例用到wedge边界吗?想学习下。

      X 1 条回复 最后回复 回复 引用
      • X
        xuhuashi @韬智tz 最后由 编辑

        @韬智tz 1.在paraview有个AngularPeriodic过滤器,可以把5°阵列成一圈完整的
        2. 0文件的边界条件要根据实验和文献来,比如顶部开口,右边和底部要设成壁面
        3. 在算例中直接搜索关键词 grep -r "wedge"找其他的相关算例

        韬 Y 3 条回复 最后回复 回复 引用
        • 韬
          韬智tz @xuhuashi 最后由 编辑

          @xuhuashi 谢谢大佬的回复!

          1 条回复 最后回复 回复 引用
          • 韬
            韬智tz @xuhuashi 最后由 编辑

            @xuhuashi blockMeshDict我这样设置的

                 convertToMeters 1;	
            
            	vertices
            	
            	(
            	
            	    (0 0 0)
            	    (0.02 0 0)
            	    (0.02 0.02 0)
            	    (0 0 0.02)
            	    (0.02 0 0.02)
            	    (0.02 0.02 0.02)
            	);
            	
            	blocks
            	(
            	    hex (0 1 2 3 0 5 6 3) (200 200 200) simpleGrading (1 1 1)
            	);
            	
            	boundary
            	(
            	    front
            	    {
            	        type wedge;
            	        faces
            	        (	
            	            (0 5 6 3)
            	        );
            	
            	    }
            	    back
            	    {	
            	        type wedge; 	
            	        faces	
            	        (	
            	            (0 3 2 1)
            	        );
            	    }
            	    walls	
            	    {	
            	        type wall;	
            	        faces	
            	        (	
            	            (3 3 6 2)
            	            (2 6 5 1)
            	            (1 5 0 0)
            	        );
            	    }	
            	    left	
            	    {
            	        type empty;
            	        faces
            	        (
            	            (0 0 3 3)
            	        );
            	    }	
            	);
            

            0文件里面的alpha.water是这样设置的:

                 dimensions      [0 0 0 0 0 0 0];  
                 internalField   uniform 0;
                 boundaryField   
                 {
                     back  
                     {
                         type            wedge; 
                     }  
                 
                     front
                     {  
                         $back; 
                     }       
                 
                     walls    
                     {   
                         type            zeroGradient;
                     }     
                 
                     defaultFaces
                     {
                         type            empty;   
                     }        
                 
                     left 
                     { 
                         type            empty;    
                     }     
                 }
            

            但是出现了这样的错误
            微信图片_20220324094823.jpg
            大佬们帮我看看错误怎么解决,还有0文件里的alpha.water设置的对不对!

            X 1 条回复 最后回复 回复 引用
            • X
              xuhuashi @韬智tz 最后由 编辑

              @韬智tz 你的blockMeshDict编写有问题,可以参考这个
              https://openfoamwiki.net/index.php/Main_ContribExamples/AxiSymmetric
              或者你可以用blockMesh先生成三维的,再借助MakeAxialMesh工具转换成楔形网格:
              https://openfoamwiki.net/index.php/Contrib/MakeAxialMesh

              韬 1 条回复 最后回复 回复 引用
              • 韬
                韬智tz @xuhuashi 最后由 编辑

                @xuhuashi 谢谢大佬!5°的楔形体弄出来了,那在这个计算域中怎么设置气泡场呢?我的blockMeshDict里面是这样的

                convertToMeters 1;
                
                vertices
                (
                    (0 0 0)
                    (0.023725 0.001035 0)
                    (0.023725 0.001035 0.03) 
                    (0 0 0.03)
                    (0.023725 -0.001035 0) 
                    (0.023725 -0.001035 0.03)
                );
                
                blocks
                (
                    hex (0 4 1 0 3 5 2 3) (19  1 300) simpleGrading (1 1 1)
                );
                
                edges
                (
                );
                
                boundary
                (
                     front
                     { 
                           type wedge;
                           faces   
                           (
                               (0 1 2 3)
                           );
                     }
                
                     back
                     { 
                         type wedge;
                           faces  
                           (
                               (0 3 5 4)
                           );
                     }
                
                     walls
                     { 
                           type wall;
                           faces  
                           (
                               (1 4 5 2)
                               (0 4 1 0)
                               (3 5 2 3)
                           );
                     }
                
                     axis
                     { 
                           type empty;
                           faces  
                           ( 
                               (0 3 3 0)
                           );
                     }
                
                );
                
                mergePatchPairs
                ( 
                );
                

                setFieldsDict里面是这样的

                defaultFieldValues
                (
                   volScalarFieldValue alpha.water 1
                   volScalarFieldValue p_rgh 1e5
                   volScalarFieldValue p 1e5
                   volScalarFieldValue T 300
                );
                
                regions
                (
                   sphereToCell
                   {
                       centre (0 0 0.015);
                       radius 0.005;
                       fieldValues
                       (
                           volScalarFieldValue alpha.water 0
                           volScalarFieldValue p_rgh 1e6
                           volScalarFieldValue p 1e6
                           volScalarFieldValue T 578
                       );
                   }
                   sphereToCell
                   {
                       centre (0 0 0.03);
                       radius 0.005;
                       fieldValues
                       (
                           volScalarFieldValue alpha.water 0
                           volScalarFieldValue p_rgh 1e6
                           volScalarFieldValue p 1e
                           volScalarFieldValue T 578
                       );
                   }
                   boxToCell
                 {
                       box (0 0 0.03) (0.03 0.03 0.06);
                       fieldValues
                       (
                           volScalarFieldValue alpha.water 1
                       );
                   }
                );
                

                但是后处理中alpha.water图
                微信图片_20220324184007.jpg
                用contour截的图alpha.water 0.5的图是这样
                微信图片_20220324184012.jpg 。
                这里没有气泡的形状了都,不知道哪儿错了,请大佬指点一下!

                X 1 条回复 最后回复 回复 引用
                • X
                  xuhuashi @韬智tz 最后由 编辑

                  @韬智tz 你的x方向网格太少了,需要加密一下。

                  韬 1 条回复 最后回复 回复 引用
                  • Y
                    Yu_Tian @xuhuashi 最后由 编辑

                    @xuhuashi 这个阵列成一个三维的功能太好了,终于找到了:xinxin:

                    永远学习,永远进步

                    P 1 条回复 最后回复 回复 引用
                    • 韬
                      韬智tz @xuhuashi 最后由 编辑

                      @xuhuashi 大佬加密了网格,设置的气泡场形状可以了,但是用compressibleInterFoam算完之后出现了两个问题:
                      1.出现如图片所示的错误
                      微信图片_20220329144345.jpg
                      2.就是算完之后没什么效果,就是气泡形状都没有变化。给您看下0文件里面的alpha.water文件怎么设置的,看下哪里设置错误了。

                      dimensions      [0 0 0 0 0 0 0];
                      internalField   uniform 0;
                      
                      boundaryField
                      {
                          back
                          {
                              type            wedge;
                          }
                      
                          front
                          {
                              $back;
                          }  
                      
                          walls
                          {
                              type            zeroGradient;
                          }
                      
                          axis
                          {
                              type            empty;
                          }
                      
                      }
                      X 1 条回复 最后回复 回复 引用
                      • X
                        xuhuashi @韬智tz 最后由 编辑

                        @韬智tz 1. 浮点数溢出导致发散了。发散的问题可能有很多,比如网格质量不好,比如某个变量计算变化太大(例如负压负温)。你可以试试减小松弛因子,或者先用低阶的离散格式试试,或者给个合适一点的初始参数。
                        2.气泡初始压力大于周围流体压力才会膨胀,你看看是不是气泡初始条件給错了,或者是不是气泡还没开始变化就已经发散了。

                        韬 3 条回复 最后回复 回复 引用
                        • 韬
                          韬智tz @xuhuashi 最后由 编辑

                          @xuhuashi 谢谢指点,我试试大佬的解决办法。

                          1 条回复 最后回复 回复 引用
                          • 韬
                            韬智tz @xuhuashi 最后由 编辑

                            @xuhuashi 按您的解决办法我加密了网格(直接在blockMeshDict调x,z方向的网格数),没有解决。
                            松弛因子的话,我这个算例是OF自带的,fvSolution里面并没有设置relaxationFactor,是要在fvSolution里面加上松弛因子吗,我看tut里compressibleInterFoam那一类里面都设置为

                            relaxationFactors 
                            { 
                                 equations 
                                 { 
                                         ".*"        1; 
                                 } 
                            } 
                            

                            这个我不确定,所以问问您。
                            由于是自带算例,离散格式是这样的,我也没改,您看怎么改能解决发散的问题呢。

                            ddtSchemes
                            {
                                default         Euler;
                            }
                            
                            gradSchemes 
                            {
                                default         Gauss linear;
                            }
                            
                            divSchemes 
                            {
                                div(phi,alpha)  Gauss interfaceCompression vanLeer 1;
                            
                                div(rhoPhi,U)  Gauss upwind;
                                div(rhoPhi,T)  Gauss upwind;
                                div(rhoPhi,K)  Gauss upwind;
                                div(phi,p)      Gauss upwind;
                                div(phi,k)      Gauss upwind;
                            
                                div(((thermo:rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
                            }
                            
                            laplacianSchemes 
                            {
                               default         Gauss linear uncorrected;
                            }
                            
                            interpolationSchemes 
                            {
                                default         linear; 
                            }
                            
                            snGradSchemes
                            { 
                                default         uncorrected;
                            }
                            1 条回复 最后回复 回复 引用
                            • 韬
                              韬智tz @xuhuashi 最后由 编辑

                              @xuhuashi 我加了这个,结果能算,不指定α和α=1不是一样的效果吗?为什么能算了呀

                              relaxationFactors 
                              { 
                                    equations 
                                   { 
                                           ".*"        1; 
                                   } 
                              } 
                              

                              加了这个能算,但是结果还是气泡没有变化,我的初始压力是大于周围流体的,之后又加大了两倍,也没用。

                              X 李东岳 2 条回复 最后回复 回复 引用
                              • X
                                xuhuashi @韬智tz 最后由 编辑

                                @韬智tz 要不咱私聊吧,qq:1144231085

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

                                  @韬智tz $\alpha=1$收敛性更好。不指定alpha,可能会非对角占优。

                                  气泡初始压力大于周围流体压力才会膨胀,你看看是不是气泡初始条件給错了,或者是不是气泡还没开始变化就已经发散了。

                                  就像 @xuhuashi 大佬说的,看一下你的压力场,压力场也要setFields

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

                                  1 条回复 最后回复 回复 引用
                                  • P
                                    Prometheus10 @Yu_Tian 最后由 编辑

                                    @yu_tian 你也来了 老哥 咱俩又见面了 之前这玩意查了好久 一直不知道咋整:xinxin:

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

                                      @prometheus10 你的ID让我想起了普罗米修斯

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

                                      P 1 条回复 最后回复 回复 引用
                                      • P
                                        Prometheus10 @李东岳 最后由 编辑

                                        @李东岳 东岳老师好~:xinxin:
                                        是的 我以前添加您微信的时候 ID也叫这个:xinxin:

                                        1 条回复 最后回复 回复 引用
                                        • 韬
                                          韬智tz @xuhuashi 最后由 编辑

                                          @xuhuashi 谢谢大佬指点,还想问下,楔形网格在指定区域加密用topoSet里面的source是用cylinderToCell,还是其他的呀。我这里用的cylinderToCell,但是出现下面的错误,请大佬看下!微信图片_20220405191857.jpg

                                          P 1 条回复 最后回复 回复 引用
                                          • P
                                            Prometheus10 @韬智tz 最后由 编辑

                                            @韬智tz 你好!韬智tz
                                            我用boxToCell 能加密成功
                                            不妨一试:

                                            actions
                                            (
                                                {
                                                    name        c2;
                                                    type        cellSet;
                                                    action      new;
                                                    source  boxToCell;
                                                    box     (0 -0.01 0) (0.002 0.01 0.0075);
                                                }
                                            );
                                            
                                            韬 2 条回复 最后回复 回复 引用
                                            • 韬
                                              韬智tz @Prometheus10 最后由 编辑

                                              @prometheus10 谢谢,把区域选好了就直接在终端里输入topoSet,是吧,不用其他的操作了吧

                                              1 条回复 最后回复 回复 引用
                                              • 韬
                                                韬智tz @Prometheus10 最后由 编辑

                                                @prometheus10 你好,用box加密成功了,也能算了,但是结果中出现这种啮齿状的:
                                                微信图片_20220408154738.jpg
                                                这样太丑了,我觉得是网格问题,所以在同一个区域有加密了一次,出现了这样的网格:
                                                微信图片_20220408154543.jpg
                                                这里请教大佬两个问题:1.这种啮齿状是不是网格的问题。2.加密两次出现这种网格,怎么让他更好看。

                                                P 1 条回复 最后回复 回复 引用
                                                • P
                                                  Prometheus10 @韬智tz 最后由 编辑

                                                  @韬智tz
                                                  你好!韬智tz
                                                  在判断问题点之前,先咨询一下:

                                                  你的命令顺序是怎么样的?
                                                  是不是每次直接就接着做了refineMesh?
                                                  还有加密的方向对不对?
                                                  如果方便的话 给看一下代码和命令行

                                                  韬 1 条回复 最后回复 回复 引用
                                                  • 韬
                                                    韬智tz @Prometheus10 最后由 编辑

                                                    @prometheus10 就是先blockMesh,topoSet,两次refineMesh,然后setfields,之后就并行算了用的compressibleInterFoam。

                                                    topoSetDict如下

                                                    actions
                                                    (
                                                        {
                                                            name    c0;
                                                            type    cellSet;
                                                            action  new;
                                                            source  boxToCell;
                                                            sourceInfo
                                                            {
                                                              box (0 -0.015 0.008) (0.005 0.015 0.015); 
                                                            }
                                                        }
                                                    );
                                                    

                                                    refineMeshDict如下

                                                    set             c0;
                                                    
                                                    coordinateSystem global;
                                                    
                                                    globalCoeffs
                                                    {
                                                       e1              (1 0 0);
                                                       e2              (0 1 0);
                                                       e3              (0 0 1);
                                                    }
                                                    
                                                    directions      (e1 e3);
                                                    
                                                    useHexTopology  yes;
                                                    
                                                    geometricCut    no;
                                                    
                                                    writeMesh       no;
                                                    P 1 条回复 最后回复 回复 引用
                                                    • P
                                                      Prometheus10 @韬智tz 最后由 编辑

                                                      @韬智tz
                                                      我手里有个现成的一个topsetDict,具体的各行作用暂时回答不上,要不你先试一下:

                                                      set             c0;
                                                      
                                                      coordinateSystem global;
                                                      
                                                      globalCoeffs
                                                      {
                                                          tan1            ( 1 0 0 );
                                                          tan2            ( 0 1 0 );
                                                      }
                                                      
                                                      patchLocalCoeffs
                                                      {
                                                          patch outside;  // Normal direction is facenormal of zero'th face of patch
                                                          tan1 (1 0 0);
                                                          tan1 (0 0 1);
                                                      }
                                                      
                                                      directions      ( tan1 normal );
                                                      
                                                      useHexTopology  yes;
                                                      
                                                      geometricCut    no;
                                                      
                                                      writeMesh       no;
                                                      
                                                      韬 1 条回复 最后回复 回复 引用
                                                      • 韬
                                                        韬智tz @Prometheus10 最后由 编辑

                                                        @prometheus10 好,谢谢

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