Navigation

    CFD中文网

    CFD中文网

    • Login
    • Search
    • 最新

    U*sin(t)边界条件

    OpenFOAM
    7
    20
    8169
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • 李东岳
      李东岳 管理员 last edited by

      我刚开始学OpenFOAM,我没在用户手册里看到怎么样把速度的边界条件设成time dependent的,比如我要wall velocity 是U*sin(t),这个样子的?能麻烦你告诉我一下实现这个的函数吗?

      inlet
          {
              type            codedFixedValue;
              name            dummy;
              code
              #{
      		const scalar& time = this->db().time().value();
      	        operator==(vector(2.0*sin(time),0,0));
             #}; 
              value           $internalField;
          }
      

      请参考

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

      I 1 Reply Last reply Reply Quote
      • X
        xiaofenger last edited by

        我直接把这个代码拷进去替换原来的比如fixedValue condition,显示错误,
        keyword name is undefined in dictionary "/home/abc/OpenFOAM/abc-4.1/run/cavity/0/U.boundaryField.movingWall"
        这应该怎么处理?多谢!

        1 Reply Last reply Reply Quote
        • 李东岳
          李东岳 管理员 last edited by

          上面只是inlet的边界条件,你需要设置movingWall的边界条件。

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

          1 Reply Last reply Reply Quote
          • X
            xiaofenger last edited by 李东岳

            我先拿一个简单的例子试一下,就把cavity算例里的moving wall边界条件改了,本来U的边界条件是

            FoamFile
            {
                version     2.0;
                format      ascii;
                class       volVectorField;
                object      U;
            }
            
            dimensions      [0 1 -1 0 0 0 0];
            
            internalField   uniform (0 0 0);
            
            boundaryField
            {
                movingWall
                {
                    type            fixedValue;
                    value           uniform (1 0 0);
                }
            
                fixedWalls
                {
                    type            noSlip;
                }
            
                frontAndBack
                {
                    type            empty;
                }
            }
            

            我改成了

            dimensions      [0 1 -1 0 0 0 0];
            
            internalField   uniform (0 0 0);
            
            boundaryField
            {
                movingWall
                {
                    type            codedFixedValue;
                    
                    code
                    #{
                           const scalar& time = this->db().time().value();
                           operator==(vector(2.0*sin(time),0,0));
                    #};
            
                    value           $internalField;
                }
            
                fixedWalls
                {
                    type            noSlip;
                }
            
                frontAndBack
                {
                    type            empty;
                }
            }
            

            就出错了

            1 Reply Last reply Reply Quote
            • 李东岳
              李东岳 管理员 last edited by

              什么错误?把log贴上来看一下?

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

              1 Reply Last reply Reply Quote
              • 李东岳
                李东岳 管理员 last edited by

                你那个movingWall里面忘记了name dummy;

                dimensions      [0 1 -1 0 0 0 0];
                
                internalField   uniform (0 0 0);
                
                boundaryField
                {
                    movingWall
                    {
                        type            codedFixedValue;
                        name          dummy;
                        
                        code
                        #{
                               const scalar& time = this->db().time().value();
                               operator==(vector(2.0*sin(time),0,0));
                        #};
                
                        value           $internalField;
                    }
                
                    fixedWalls
                    {
                        type            noSlip;
                    }
                
                    frontAndBack
                    {
                        type            empty;
                    }
                }
                

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

                X 1 Reply Last reply Reply Quote
                • X
                  xiaofenger last edited by

                  多谢东岳,加上这一行果然就可以了。不知道有没有这方面的资料可以推荐一下,不是很明白name dummy这一行的用法,多谢!

                  1 Reply Last reply Reply Quote
                  • X
                    xiaofenger @李东岳 last edited by

                    @李东岳 还是想问一下这里为什么要用this指针?

                    1 Reply Last reply Reply Quote
                    • 李东岳
                      李东岳 管理员 last edited by

                      因为你需要知道当前时间步的值,要不然你怎么调用数据库呢?如果你不需要数据里面的信息,可以去掉,比如:operator==(vector(2,0,0));

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

                      X 1 Reply Last reply Reply Quote
                      • X
                        xiaofenger @李东岳 last edited by

                        @李东岳 多谢解释,就是说“time”这个变量是数据库db()里的,关于db()的话是不是就不是Openfoam的范畴了?而是C++的内容?还有就是,这里的name dummy的用法是什么呢?

                        1 Reply Last reply Reply Quote
                        • 李东岳
                          李东岳 管理员 last edited by

                          是OpenFOAM范畴,name dummy中的name是关键词,必须要给,值可以随便,也可以写name OMG :cheeky:

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

                          X chengan.wang 2 Replies Last reply Reply Quote
                          • X
                            xiaofenger @李东岳 last edited by

                            @李东岳 您好,我这个地方还有一个问题,在internalField 设置是uniform (0,0,0)的时候用这个代码没有问题,但我把一个已经算出的速度场file代替这个(0,0,0)的时候还用这个codedFixedValue就会出问题,错误提示好像是跟internalField相关,请问您知道这可能是什么原因吗?多谢

                            A 1 Reply Last reply Reply Quote
                            • A
                              asininno @xiaofenger last edited by

                              @xiaofenger 你把$internalField 直接写成uniform (0 0 0)不就好咯

                              1 Reply Last reply Reply Quote
                              • chengan.wang
                                chengan.wang last edited by

                                如果我想直接设置速度场(Usin(5),Ucos(5),0),U是一个定值,也必须写成这么复杂的形式吗

                                1 Reply Last reply Reply Quote
                                • chengan.wang
                                  chengan.wang @李东岳 last edited by 李东岳

                                  @东岳 版主您好,我想设置入口速度具有一定的入射角度,修改现有的算例,原始版本:

                                     internalField   uniform (25 0 0);
                                  
                                      left
                                      {
                                          type            freestream;
                                          freestreamValue uniform (24.8 3.16 0);
                                       }
                                  

                                  仿照您给的例子改成:

                                     internalField   uniform (25 0 0);
                                  
                                      left
                                      {
                                          type            freestream;
                                  
                                          name          dummy;
                                          
                                          code
                                          #{
                                                  const scalar& angle = 10*3.14/180; //rad
                                                  const scalar& U_ref = 25; //m/s
                                                  operator==(vector(U_ref*cos(angle),U_ref*sin(angle),0));
                                          #};
                                  
                                          freestreamValue           $internalField;
                                      }
                                  

                                  我设置的角度似乎没有什么影响

                                  1 Reply Last reply Reply Quote
                                  • fireztw
                                    fireztw last edited by

                                    李老师,请问计算域的速度场可以设置成时间的函数吗?比如经典的两相流算例:气泡在旋涡作用下变形,旋涡强弱和方向随时间变化的

                                    1 Reply Last reply Reply Quote
                                    • fireztw
                                      fireztw last edited by

                                      @东岳

                                      1 Reply Last reply Reply Quote
                                      • 范准
                                        范准 last edited by

                                        可以用一个名叫groovyBC的第三方插件,自由定义边界条件

                                        1 Reply Last reply Reply Quote
                                        • 李东岳
                                          李东岳 管理员 last edited by

                                          @chengan-wang
                                          你的最后面的代码有误,这样改:

                                          internalField   uniform (25 0 0);
                                           
                                              left
                                              {
                                                  //type            freestream;
                                                  type            codedFixedValue;
                                           
                                                  name          dummy;
                                                  
                                                  code
                                                  #{
                                                          const scalar& angle = 10*3.14/180; //rad
                                                          const scalar& U_ref = 25; //m/s
                                                          operator==(vector(U_ref*cos(angle),U_ref*sin(angle),0));
                                                  #};
                                           
                                                  freestreamValue           $internalField;
                                              }
                                          

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

                                          1 Reply Last reply Reply Quote
                                          • I
                                            ir77 @李东岳 last edited by

                                            @李东岳 在 U*sin(t)边界条件 中说:

                                            我刚开始学OpenFOAM,我没在用户手册里看到怎么样把速度的边界条件设成time dependent的,比如我要wall velocity 是U*sin(t),这个样子的?能麻烦你告诉我一下实现这个的函数吗?

                                            inlet
                                                {
                                                    type            codedFixedValue;
                                                    name            dummy;
                                                    code
                                                    #{
                                            		const scalar& time = this->db().time().value();
                                            	        operator==(vector(2.0*sin(time),0,0));
                                                   #}; 
                                                    value           $internalField;
                                                }
                                            

                                            请参考

                                            李老师您好,我看过您在另一个帖子提到的“合理调节上部来流速度使浮升气泡保持在一个相对静止的位置”后,我想复现您说的内容,即:求解域的速度进口的速度大小根据上一个时间步的气泡速度自动调节。目前的思路是:采用function在算例文件夹下写出一个气泡速度Ub,再在0/U中采用include将气泡速度Ub引入边界条件中进行操作。但在实际操作过程中发现,include只会在计算第一步加载,并不会在每一个时间步后加载,导致速度进口大小并未实现自动调节。请问李老师您有没有好的思路可以实现边界条件的实时加载和自动调节哇:xinxin:

                                            1 Reply Last reply Reply Quote
                                            • First post
                                              Last post

                                            CFD中文网 | 东岳流体 | 京ICP备15017992号-2
                                            论坛登录问题反馈可联系 li.dy@dyfluid.com