Navigation

    CFD中文网

    CFD中文网

    • Login
    • Search
    • 最新
    1. Home
    2. Alvin
    A
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Groups

    Alvin

    @Alvin

    64
    Posts
    761
    Profile views
    1
    Followers
    0
    Following
    Joined Last Online

    Alvin Follow

    Best posts made by Alvin

    This user hasn't posted anything yet.

    Latest posts made by Alvin

    • RE: fireFoam createFields.H文件中创建场编译,输出多组分混合物各成分的质量流率,没有效果......

      @alvin 抱歉,新添加的代码未能正常黄色标记显示,加入的代码为

      PtrList<surfaceScalarField> Ysf;
      forAll(Ysf, i)
      {
      surfaceScalarField Ycf
      (
      IOobject
      (
      IOobject::groupName(“Ycf”,Y[i].name()),
      runTime.timeName(),
      mesh,
      IOobject::READ_IF_PRESENT,
      IOobject::AUTO_WRITE
      ),
      fvc::interpolate(Y[i])*phi
      );
      Info<< “Ycf is\n” << Ycf << endl;
      }
      
      posted in OpenFOAM
      A
      Alvin
    • fireFoam createFields.H文件中创建场编译,输出多组分混合物各成分的质量流率,没有效果......

      在fireFoam求解器源程序的createfields.H文件中,根据phi(总质量通量)和Yi(多组分的质量分数),希望创建各组分的通量场,值为phi*Yi,进行如下添加后(标记黄色),编译正常通过,但求解结果文件中并没有发现创建好的通量场,希望各位大神能给与指导,不胜感激。

      autoPtr<combustionModels::psiCombustionModel> combustion
      (
          combustionModels::psiCombustionModel::New
          (
              mesh
          )
      );
      
      Info<< "Reading thermophysical properties\n" << endl;
      
      psiReactionThermo& thermo = combustion->thermo();
      thermo.validate(args.executable(), "h", "e");
      
      SLGThermo slgThermo(mesh, thermo);
      
      basicMultiComponentMixture& composition = thermo.composition();
      PtrList<volScalarField>& Y = composition.Y();
      
      
      const word inertSpecie(thermo.lookup("inertSpecie"));
      
      Info<< "Creating field rho\n" << endl;
      volScalarField rho
      (
          IOobject
          (
              "rho",
              runTime.timeName(),
              mesh,
              IOobject::NO_READ,
              IOobject::AUTO_WRITE
          ),
          thermo.rho()
      );
      
      volScalarField& p = thermo.p();
      const volScalarField& T = thermo.T();
      const volScalarField& psi = thermo.psi();
      
      Info<< "\nReading field U\n" << endl;
      volVectorField U
      (
          IOobject
          (
              "U",
              runTime.timeName(),
              mesh,
              IOobject::MUST_READ,
              IOobject::AUTO_WRITE
          ),
          mesh
      );
      
      #include "compressibleCreatePhi.H"
      
      Info<< "Creating turbulence model\n" << endl;
      autoPtr<compressible::turbulenceModel> turbulence
      (
          compressible::turbulenceModel::New
          (
              rho,
              U,
              phi,
              thermo
          )
      );
      
      // Set the turbulence into the combustion model
      combustion->setTurbulence(turbulence());
      
      volScalarField dQ
      (
          IOobject
          (
              "dQ",
              runTime.timeName(),
              mesh,
              IOobject::NO_READ,
              IOobject::AUTO_WRITE
          ),
          mesh,
          dimensionedScalar("dQ", dimEnergy/dimTime, 0.0)
      );
      
      
      Info<< "Creating field dpdt\n" << endl;
      volScalarField dpdt
      (
          IOobject
          (
              "dpdt",
              runTime.timeName(),
              mesh
          ),
          mesh,
          dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
      );
      
      Info<< "Creating field kinetic energy K\n" << endl;
      volScalarField K("K", 0.5*magSqr(U));
      
      
      #include "readGravitationalAcceleration.H"
      #include "readhRef.H"
      #include "gh.H"
      
      
      volScalarField p_rgh
      (
          IOobject
          (
              "p_rgh",
              runTime.timeName(),
              mesh,
              IOobject::MUST_READ,
              IOobject::AUTO_WRITE
          ),
          mesh
      );
      
      // Force p_rgh to be consistent with p
      p_rgh = p - rho*gh;
      
      mesh.setFluxRequired(p_rgh.name());
      
      multivariateSurfaceInterpolationScheme<scalar>::fieldTable fields;
      
      forAll(Y, i)
      {
          fields.add(Y[i]);
      }
      fields.add(thermo.he());
      
      %(#fffc99)[PtrList<surfaceScalarField> Ysf;
      forAll(Ysf, i)
      {
          surfaceScalarField Ycf
          (
          IOobject
          (
              IOobject::groupName("Ycf",Y[i].name()),
              runTime.timeName(),
              mesh,
              IOobject::READ_IF_PRESENT,
              IOobject::AUTO_WRITE
          ),
          fvc::interpolate(Y[i])*phi
         );
         Info<< "Ycf is\n" << Ycf << endl;
      }]
      
      IOdictionary additionalControlsDict
      (
          IOobject
          (
              "additionalControls",
              runTime.constant(),
              mesh,
              IOobject::MUST_READ_IF_MODIFIED,
              IOobject::NO_WRITE
          )
      );
      
      Switch solvePrimaryRegion
      (
          additionalControlsDict.lookup("solvePrimaryRegion")
      );
      
      
      posted in OpenFOAM
      A
      Alvin
    • RE: 如何在fvoptions 同时固定速度和压力?

      @东岳 “......在计算域内部添加一个吹气孔进行吹气”
      现在是要实现类似的吹气过程,将网格作为温度、质量(化学组分)源项,且网格赋予固定的速度以及压力,求解结果中反查这个网格的速度值和设定值是有偏差的(怀疑和组分浓度扩散相关,扩散系数存在导致网格有一定的附加“扩散速度”),结果的压力值误差更大(大于100%,猜测openfoam中应该用特殊的方式去限定这个压力约束)。

      ......BTW真正关心的问题来了,在fireFoam application源程序中没有找到质量运移的扩散系数D,也没找到施密特数Sc的设定位置(施密特数(Schmidt number, Sc)是一个无量纲的标量,定义为动黏滞系数和扩散系数的比值,用来描述同时有动量扩散及质量扩散的流体。施密特数的命名是为了纪念德国工程师 Ernst Heinrich Wilhelm Schmidt (1892-1975)。)

      posted in OpenFOAM
      A
      Alvin
    • RE: 如何在fvoptions 同时固定速度和压力?

      @东岳 我用fireFoam试了一下,尝试同时固定某个网格速度压力,结果显示这个网格速度基本维持不变,压力变化

      posted in OpenFOAM
      A
      Alvin
    • RE: 如何在fvoptions 同时固定速度和压力?

      "......通常情况下,一个边界上只会指定一个约束,否则就会出现所谓的过约束“”,即向模型文件引入了过多的约束条件,其后果往往是无解,然而,真实世界中,常常不可避免地会出现一些需要在某个边界指定多个约束,在对应的另一个边界取消约束。在数值模拟中,这需要经过特殊处理才能实现。以计算流体力学(CFD)为例,求解流体模型时最理想的边界约束条件时入口与出口分别指定速度和压力,例如入口指定层流流入的速度分布曲线,出口指定一个参考压力。但是,在某些情况下,我们不得不在同一个边界上同时约束两种边界条件,例如在入口既指定速度曲线,又约束必须满足指定的参考压力。COMSOL Multiphisics 采用弱约束的方式来实现这种多约束边界条件........"
      ---------摘自COMSOL Multiphisics工程实践与理论仿真-多物理场数值分析技术

      基于上述描述,实际仿真的对象,既然理论(或者实际需求)上存在“过约束”的情况,通过数值技术上也能实现。网格作为求解参数的载体,理论上应该和边界类似,通过一定的技术,也能固定速度与压力,把这个网格作为“体积源”,只是OpenFOAM中不知如何实现.....

      posted in OpenFOAM
      A
      Alvin
    • 如何在fvoptions 同时固定速度和压力?

      如题,如何在求解过程中,通过fvoptions源设定的方式,同时固定住计算域内某个网格上的速度和压力,各位CFDers,有什么想法吗?

      posted in OpenFOAM
      A
      Alvin
    • RE: DPMFoam追踪算法失效导致颗粒丢失

      @东岳 您可以考虑做培训之外的企业技术咨询服务

      posted in OpenFOAM
      A
      Alvin
    • RE: DPMFoam追踪算法失效导致颗粒丢失

      @dzw05 :zoule: blueCFD还没有用过

      posted in OpenFOAM
      A
      Alvin
    • RE: DPMFoam追踪算法失效导致颗粒丢失

      @东岳 说的太对了,确实需要花费专门的时间去搞,在企业有限制。做研究就要沉得住气。openfoam-v1712 ....../etc/bashrc文件中有颗粒位置记录方式的选择,也可以调用程序将粒子的质心坐标转换为空间直角坐标:

      0_1529978239537_颗粒位置.JPG

      openfoam1712记录颗粒位置的文件是“coordinates",通过将”writeLagrangianPositions“ 值置为非零,结果文件夹下就出现了熟悉的”positions“ :

      0_1529978450900_位置.JPG

      posted in OpenFOAM
      A
      Alvin
    • RE: DPMFoam追踪算法失效导致颗粒丢失

      @dzw05 你用的哪个版本的of?of50下的paraFoam能够读取质心坐标的

      posted in OpenFOAM
      A
      Alvin