Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. 关于网格高度变化的动网格设置

关于网格高度变化的动网格设置

已定时 已固定 已锁定 已移动 OpenFOAM
13 帖子 5 发布者 8.3k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    在 中回复了 xiaolin 最后由 编辑
    #4

    @xiaolin

    那如果是预定变化轨迹的网格高度的动网格变化是不是应该参照movingConeTopoFvMesh呢

    是的,这样简单的多

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    U 1 条回复 最后回复
  • U 离线
    U 离线
    upc_ngh
    在 中回复了 李东岳 最后由 编辑
    #5

    @李东岳 东岳老师,您好,目前我遇到了和上面那个同学类似问题@xiaolin ,具体问题如下:二维内,气固两相流动过程中,固态颗粒和壁面(半圆形壁面)碰撞,粘连形成沉积。目前的想法是当贴近壁面的第一层网格内,固相体积分数大于某值时,壁面的边界条件就向上移动一个单元,就是上面"alpha与point的关系“。目前发现相关动网格编程资料很少,盼望各位老师能给点建议或者参考资料学习一下,提前谢谢各位大神!
    图片1.jpg

    1 条回复 最后回复
  • 田畔的风田 离线
    田畔的风田 离线
    田畔的风 神
    写于 最后由 田畔的风 编辑
    #6

    我写过类似的东西,网格可以根据当前的场值进行变动,用于研究风场作用下的积雪沉积/侵蚀。代码和算例可以参考[https://github.com/fightingxiaoxiao/driftScalarDyFoam],如果有用的话,也可以引下我的论文[https://doi.org/10.3389/feart.2022.822140]。

    大致的思路是这样的:

    1. 在dynamicMeshDict中定义速度相关的动网格:
    dynamicFvMesh dynamicMotionSolverFvMesh;
    
    motionSolverLibs (fvMotionSolvers);
    
    motionSolver velocityLaplacian;   //displacementLaplacian;
    diffusivity  quadratic inverseDistance 3(bottom.snow roof top);
    
    1. 定义pointMotionU边界条件为codedFixedValue
        bottom.snow
        {
            type            codedFixedValue;
            value          uniform (0 0 0);
    
            name         erosionDeposition;
        }
    
    
    1. 最后在codeDict嵌入代码,这里比较大的一个坑就是动网格使用节点值进行位移,但是实际计算拿到的都是面心值和体心值,需要做一个插值。另外,deltaH是我自己求解器里定义的场,需要替换成你自己的内容。
    erosionDeposition
    {
        code
        #{
            
            label patchIndex = patch().index();
            const volScalarField& deltaH = this->db().objectRegistry::lookupObject<volScalarField>("deltaH");
    
            primitivePatchInterpolation facePointInterp(deltaH.mesh().boundaryMesh()[patchIndex]);   //初始化插值类
    
            const scalarField& deltaHp = deltaH.boundaryField()[patchIndex];
            auto deltaHpp = facePointInterp.faceToPointInterpolate(deltaHp);                      //面心向节点插值
            Info << "Successfully interpolate "<< deltaHpp().size() << " points." << endl;
            Info << "Local points number = " << patch().localPoints().size() << endl;
            pointField pVec(deltaHpp().size());
    
            const scalar lowerLimit = 0.;
    
            forAll(pVec, i)
            {
                pVec[i][0] = 0;
                pVec[i][1] = 0;
                pVec[i][2] = deltaHpp()[i];
    
                if(patch().localPoints()[i][2] + pVec[i][2] * this->db().time().deltaTValue() < lowerLimit)
                {    
                    pVec[i][2] = (lowerLimit - patch().localPoints()[i][2])/this->db().time().deltaTValue();
                }
            }
    
            (*this) == pVec;
        #};
    
        codeInclude
        #{
            #include "fvCFD.H"
            #include "primitivePatchInterpolation.H"
        #};
    
        codeOptions 
        #{
            -I$(LIB_SRC)/finiteVolume/lnInclude \
            -I$(LIB_SRC)/meshTools/lnInclude 
        #};
    
    1. 最终效果如下,一个方块周边的时变积雪
      一个方块周边的时变积雪
    李东岳李 U 疏影横斜水清浅疏 3 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    在 中回复了 田畔的风 最后由 编辑
    #7

    @田畔的风 大佬这个有点意思,感兴趣写个CFD界不

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    田畔的风田 1 条回复 最后回复
  • 田畔的风田 离线
    田畔的风田 离线
    田畔的风 神
    在 中回复了 李东岳 最后由 编辑
    #8

    @李东岳 可以的,李老师!不过做这部分内容的时候我对OF的认知还比较浅,很多细节可能还比较糙..:136:

    李东岳李 1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    在 中回复了 田畔的风 最后由 编辑
    #9

    @田畔的风 大佬,参考这种风格, 链接文本,如果你可以写一个比较容易让人理解的文章的话,可以发给我我在CFD界推一下

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • U 离线
    U 离线
    upc_ngh
    在 中回复了 田畔的风 最后由 编辑
    #10

    @田畔的风 非常感谢两位老师@李东岳 ,感觉久旱逢甘露 ,话不多说,我要开始汲取营养了,后面有相关问题和进展,再向老师们请教:huahua: :huahua: :huahua:

    1 条回复 最后回复
  • 疏影横斜水清浅疏 离线
    疏影横斜水清浅疏 离线
    疏影横斜水清浅
    在 中回复了 田畔的风 最后由 李东岳 编辑
    #11

    @田畔的风 老师,你好,请问你在代码中求解壁面剪切力是采用的是volSymmTensorField Reff = turbulence->devReff(); ssp = (-Sfp/magSfp) & Reffp; scalarField UShear = sqrt(mag(ssp) / rhoAir);
    这其中的Reff中有没有密度相?
    2c215c09-70d9-473d-b565-1dcc7d840daf-image.png

    田畔的风田 1 条回复 最后回复
  • 田畔的风田 离线
    田畔的风田 离线
    田畔的风 神
    在 中回复了 疏影横斜水清浅 最后由 编辑
    #12

    @疏影横斜水清浅 OpenFOAM不可压求解器的密度是被约掉的,我这里的空气密度取的是1。当时的写法不太严谨,没检查量纲。

    疏影横斜水清浅疏 1 条回复 最后回复
  • 疏影横斜水清浅疏 离线
    疏影横斜水清浅疏 离线
    疏影横斜水清浅
    在 中回复了 田畔的风 最后由 编辑
    #13

    @田畔的风 好的,谢谢。我是看到你在后面又把空气密度除了一次,所以存在疑惑。如果你取空气密度为1,那么在数值上应该是没问题的。

    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]