CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    使用CodeFixedValue对非均匀速度场的编写

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

      大家好!我最近参考杨易老师2017年关于中性风场自保持的文献中的设置和KOmegaSST模型来用CodeFixedValue对inlet的U,k,OMEGA进行了编写,大概类似于中性大气环境湍流动能的自保持。 (https://cfd-china.com/topic/6231/中性大气环境湍流动能的自保持-附有算例下载)但是我在decomposePar进行并行运算时候出现问题,看看有没有大佬能帮忙解决。下面附带我u,k,omega的代码,看看是不是代码问题还是其他的地方有问题。谢谢!:135:
      decomposePar中出现的问题time=0时候

      -> FOAM Warning : 
          From const Foam::HashTable<Foam::List<int> >& Foam::polyBoundaryMesh::groupPatchIDs() const
          in file meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.C at line 510
          Removed patchGroup 'symmetry' which clashes with patch 2 of the same name.
      
      
      --> FOAM FATAL IO ERROR: (openfoam-2012)
      Cannot find patchField entry for symmetry
      
      file: /home/user3/SHUKK/monixuexi/313_RANS_lianxi/0/k.boundaryField at line 25 to 64.
      
          From void Foam::GeometricField<Type, PatchField, GeoMesh>::Boundary::readField(const Foam::DimensionedField<TypeR, GeoMesh>&, const Foam::dictionary&) [with Type = double; PatchField = Foam::fvPatchField; GeoMesh = Foam::volMesh]
          in file /home/user3/OpenFOAM/OpenFOAM-v2012/src/OpenFOAM/lnInclude/GeometricBoundaryField.C at line 172.
      
      FOAM exiting
      
      

      k

      /*--------------------------------*- C++ -*----------------------------------*\
      | =========                 |                                                 |
      | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
      |  \\    /   O peration     | Version:  v2012                                 |
      |   \\  /    A nd           | Website:  www.openfoam.com                      |
      |    \\/     M anipulation  |                                                 |
      \*---------------------------------------------------------------------------*/
      FoamFile
      {
          version     2.0;
          format      ascii;
          class       volScalarField;
          object      k;
      }
      // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
      
      dimensions      [0 2 -2 0 0 0 0];
      
      internalField   uniform 1;
      
      boundaryField
      {
          inlet
          {
              type            codedFixedValue;
              value           uniform 0.1; //default value
              name            kinlet; //name of new BC type
              code
              #{
                  const fvPatch& boundaryPatch = this->patch();
                  
                  scalarField& vf = *this; 
                  forAll(vf, i)
                  { 
                      scalar z = boundaryPatch.Cf()[i].y();
      
                      scalar D1 = -1.515;
                      scalar D2 = 7.463;
                      scalar alpha = 0.25;
                      vf[i] = sqrt(D1*pow(z, alpha) + D2);
                  }
              #};
          }
      
          upperwall
          {
              type            symmetry;
          }
      
          lowerwall
          {
              type            kqRWallFunction;
              value           uniform 0.375;
          }
      
          outlet
          {
              type            zeroGradient;
          }
      
          building
          {
            type            kqRWallFunction;
            value           uniform 0.375;  
      
          }
      }
      
      // ************************************************************************* //
      

      U

      
      
      // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
      
      dimensions      [0 1 -1 0 0 0 0];
      
      internalField   uniform (0 0 0);
      
      boundaryField
      {
          inlet
          {
              type            codedFixedValue;
              value           uniform (0 0 0); //default value
              name            uinlet; //name of new BC type
              code
              #{
                  const fvPatch& boundaryPatch = this->patch();
                  
                  vectorField& vf = *this; 
                  forAll(vf, i)
                  { 
                      scalar z = boundaryPatch.Cf()[i].y();
                      //scalar uStar = 0.511;
                      //scalar z0 = 2.25e-4;
                      //scalar kappa = 0.42;
                      //vf[i].x() = uStar/kappa*log((z + z0)/z0);
                      //vf[i].y() = 0.0; 
                      //vf[i].z() = 0.0; 
      
                      scalar ur = 11.0;
                      scalar alpha = 0.25;
                      scalar zr = 0.40;
                      vf[i].x() = ur*pow(z/zr, alpha);
                      vf[i].y() = 0.0; 
                      vf[i].z() = 0.0; 
                  }
                  operator==(vf)
              #};
          }
      
          outlet
          {
              type            zeroGradient;
          }
      
          upperWall
          {
              type            symmetry;
          }
      
          lowerWall
          {
              type            noSlip;
          }
      
          symmetry
          {
              type            symmetry;
          }
      
          building
          {  
              type          fixedValue; 
              value         uniform (0 0 0);
          }
      }
      
      // ************************************************************************* //
      

      omega

      
      // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
      
      dimensions      [0 0 -1 0 0 0 0];
      
      internalField   uniform 1;
      
      boundaryField
      {
         inlet
          {
              type            codedFixedValue;
              value           uniform 0.1; //default value
              name            omegainlet; //name of new BC type
              code
              #{
                  const fvPatch& boundaryPatch = this->patch();
                  
                  scalarField& vf = *this; 
                  forAll(vf, i)
                  { 
                      scalar z = boundaryPatch.Cf()[i].y();
      
                      //scalar uStar = 0.511;
                      //scalar z0 = 2.25e-4;
                      //scalar kappa = 0.4;
                      //scalar C1 = -0.17;
                      //scalar C2 = 1.62;
                      //scalar Cmu = 0.42;
                      //vf[i] = uStar/(z +z0)/kappa/sqrt(Cmu);
      
                      scalar ur = 11.0;
                      scalar alpha = 0.25;
                      scalar Cmu = 0.08;
                      scalar zr = 0.4;
                      scalar u = ur*pow(z/zr, alpha);
                      vf[i] = (alpha/sqrt(Cmu))*u/z;
                  }
              #};
      
          outlet
          {
              type            zeroGradient;
          }
      
          upperWall
          {
              type            symmetry;
          }
      
          lowerWall
          {
              type            omegaWallFunction;
              value           $internalField;
          }
      
          symmetry
          {
              type            symmetry;
          }
      
          building
          {
              type            omegaWallFunction;
              value           $internalField;
          }
      }
      
      // ********************************************************************* //
      
      W 1 条回复 最后回复 回复 引用
      • 李东岳
        李东岳 管理员 最后由 编辑

        我那个算例好像没有添加symmetry类型。这个是你自己加的么。

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

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

          @李东岳 对的,我是看杨易老师依照2017年的文献来设置的实操文献里面,计算域的左右和顶部都是symmetry,还有按照杨易老师设置无法保证自保持。 :135: f3f1ae1c-0d9c-407a-b6dc-1bab494475f3-_72()ML{XXP2SHNW}2SQ$Q4.png

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

            @SHUKK 这个里面有算例,你直接下载,allrun就可以

            https://www.cfd-china.com/topic/6231/中性大气环境湍流动能的自保持-附有算例下载/24

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

            S 2 条回复 最后回复 回复 引用
            • S
              SHUKK @李东岳 最后由 编辑

              @李东岳 好的,谢谢李老师!我去试试,看看有没有问题。:chouchou:

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

                @李东岳 李老师,我刚刚试了最新的算例。发现还是有这个问题,我也检查了我边界是不是没有一一对应的问题。:136:

                1 条回复 最后回复 回复 引用
                • W
                  wangfei9088 @SHUKK 最后由 编辑

                  @SHUKK 在 使用CodeFixedValue对非均匀速度场的编写 中说:

                  Removed patchGroup 'symmetry' which clashes with patch 2 of the same name.

                  看这意思是patch名和type名重名了呀,看下面这个。。。

                  @SHUKK 在 使用CodeFixedValue对非均匀速度场的编写 中说:

                  symmetry
                  {
                      type            symmetry;
                  }
                  
                  S 1 条回复 最后回复 回复 引用
                  • S
                    SHUKK @wangfei9088 最后由 编辑

                    @wangfei9088 这个以前用LES我没留意到,我现在就发现是我k里面忘记加左右壁面的,我重新做一个网格看看:146:

                    1 条回复 最后回复 回复 引用
                    • S
                      SHUKK 最后由 编辑

                      按照李东岳老师的case修改即可完成本项工作。:huahua:

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