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. icoFoam学习的几个问题

icoFoam学习的几个问题

已定时 已固定 已锁定 已移动 OpenFOAM
10 帖子 2 发布者 4.1k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • I 离线
    I 离线
    ice_flow
    写于 最后由 李东岳 编辑
    #1

    各位老师好,

    最近在学习icoFoam,参考李老师写的 CFD:不可压+瞬态算法,有几个问题没有弄清楚,发出来向大家请教。
    我按照原生的cavity案例运行,为了计算方便修改成四个网格,并且把边界条件都去掉了。
    c7c059ed-9c87-4156-bf98-568b78512034-image.png

    dimensions      [0 1 -1 0 0 0 0];
    
    internalField   nonuniform List<vector> 4((1 0 0)(1 0 0)(2 0 0)(2 0 0));
    
    boundaryField
    {
        movingWall
        {
            type            noSlip;
        }
        fixedWalls
        {
            type            noSlip;
        }
        frontAndBack
        {
            type            empty;
        }
    }
    

    主要希望方便计算系数.但是这里就有一个问题,我直接定义了四个网格的速度,我原本以为速度应该处于网格中心,结果看起来处于上下边界。所以直接把所有网格的速度都改为1了,如下图。3cfea69c-0d67-4e7b-8d1e-f0b8c873593d-image.png
    根据理论推导的离散结果,可以写出系数矩阵A
    6ca2c751-c57e-423b-9cb7-56c9463adb86-image.png
    这里我输出没有计算之前的矩阵,是一个对角占优的阵,形式应该没问题

    === Matrix CoeffMat before adding contribution of BCs ===
    0.0056        -0.0001         -0.0001         0 
    -0.0001       0.0056               0          -0.0001 
    -0.0001            0                0.0056    -0.0001 
    0                  -0.0001          -0.0001   0.0056 
    

    根据上面的公式非对角的元素可以按照位置计算,比如A10(第二行第一列)

    36567a58-82be-4eb8-8e99-fa2b92d4b9e4-image.png

    完全没对上,不知道哪里有问题,请大家帮忙看下。

    李东岳李 1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    在 中回复了 ice_flow 最后由 李东岳 编辑
    #2

    @ice_flow 在 icoFoam学习的几个问题 中说:

    这里我输出没有计算之前的矩阵,是一个对角占优的阵,形式应该没问题

    这个是用什么代码输出的,是D还是A。你最好把矩阵的全部系数输出出来,例如:

            //Info<< "diag(): " << UEqn.diag() << endl;
            //Info<< "upper(): " << UEqn.upper() << endl;
            //Info<< "lower(): " << UEqn.lower() << endl;
            //Info<< "source(): " << UEqn.source() << endl;
            //Info<< "upperAddr(): " << UEqn.lduAddr().upperAddr() << endl;
            //Info<< "lowerAddr(): " << UEqn.lduAddr().lowerAddr() << endl;
            //Info<< "internalCoeffs():" << UEqn.internalCoeffs() << endl;
            //Info<< "boundaryCoeffs():" << UEqn.boundaryCoeffs() << endl;
            //Info<< "D(): " << UEqn.D() << endl;
            //Info<< "UEqn(): " << UEqn << nl;
    

    你那个矩阵去掉边界条件影响没有。

    你最好一项一项debug,先把扩散项(粘度为0)去掉,然后用中心格式,然后用稳态。先单单看对流项的。然后再看对流+扩散项的。然后加上时间项。

    然后把你的计算域每个网格改成1*1, 而不是0.1*0.1,都可以方便你debug

    然后最好能减去边界条件的影响,我看你那面有noslip。我没有尝试过xyz全部都是empty可不可以。另一个就是做1D的网格,你可以做3-5个网格,左边固定进口速度1,右边零法向梯度。

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

    1 条回复 最后回复
  • I 离线
    I 离线
    ice_flow
    写于 最后由 ice_flow 编辑
    #3

    谢谢老师,我重新调整了案例,麻烦再帮我看一下。
    绘制四网格一维模型,并且设置左侧入口速度为1,右侧出口零梯度。

    95baeca2-c0f8-4526-8134-2fa313011333-image.png

    边界条件设置如下

    U

    dimensions      [0 1 -1 0 0 0 0];
    
    internalField   uniform (1 0 0);
    
    boundaryField
    {
        inlet
        {
            type            fixedValue;
            value           $internalField;
        
        }
        outlet
        {
            type            zeroGradient;
        }
        frontAndBack
        {
            type            empty;
        }
    	Walls
        {
            type            zeroGradient;
        }
    }
    

    P

    dimensions      [0 2 -2 0 0 0 0];
    
    internalField   uniform 0;
    
    boundaryField
    {
        inlet
        {
            type            zeroGradient;
        }
        outlet
        {
            type            zeroGradient;
        }
        frontAndBack
        {
            type            empty;
        }
    	Walls
        {
            type            zeroGradient;
        }
    }
    

    设置对流项的离散为中心差分格式,也叫线性格式

    divSchemes
    {
        default         none;
        div(phi,U)      Gauss linear;
    }
    
    

    修改动量方程,只保留对流项,并输出各项矩阵系数

     // Momentum predictor
            fvVectorMatrix UEqn
            (
                //fvm::ddt(U)
              fvm::div(phi, U)
              //- fvm::laplacian(nu, U)
            );
    
            fvVectorMatrix UEqnWithPressure(UEqn == -fvc::grad(p));
    
            if (piso.momentumPredictor())
            {
                solve(UEqnWithPressure);
            }
    
            labelUList lAdd = UEqnWithPressure.lduAddr().lowerAddr();
            labelUList uAdd = UEqnWithPressure.lduAddr().upperAddr();
        	labelUList oAdd = UEqnWithPressure.lduAddr().ownerStartAddr();
            scalarField lower = UEqnWithPressure.lower();
            scalarField upper = UEqnWithPressure.upper();
            scalarField diag = UEqnWithPressure.diag();
            vectorField source = UEqnWithPressure.source();
    
            Info << "lowerAddr:" << lAdd << nl << endl;
            Info << "upperAddr:" << uAdd << nl << endl;
            Info << "ownerStartAddr:" << nl << oAdd << nl << endl;
            Info << "lower:" << lower << nl << endl;
            Info << "upper:" << upper << nl << endl;
            Info << "diag:" << nl << diag << nl << endl;
            Info << "source:" << nl << source << nl << endl;
            //Info << UEqn  << endl;
    

    输出结果如下

    Starting time loop
    
    Time = 0.001
    
    Courant Number mean: 0.001 max: 0.001
    smoothSolver:  Solving for Ux, Initial residual = 0, Final residual = 0, No Iterations 0
    smoothSolver:  Solving for Uy, Initial residual = 0, Final residual = 0, No Iterations 0
    lowerAddr:3(0 1 2)
    
    upperAddr:3(1 2 3)
    
    ownerStartAddr:
    5(0 1 2 3 3)
    
    lower:3{-0.5}
    
    upper:3{0.5}
    
    diag:
    4(0.5 0 0 -0.5)
    
    source:
    4{(0 0 0)}
    
    === Matrix CoeffMat before adding contribution of BCs ===
    0.5 0.5 0 0 0
    -0.5 0 0.5 0 0
    0 -0.5 0 0.5 0
    0 0 -0.5 -0.5 0
    
    === Matrix CoeffMat after adding contribution of BCs ===
    0.5 0.5 0 0 1
    -0.5 0 0.5 0 0
    0 -0.5 0 0.5 0
    0 0 -0.5 0.5 0
    

    可以看到,系数矩阵并不是一个对角占优的矩阵,所以无法推进(个人看法)

    进一步按照理论计算矩阵内的各项系数:

    7a679426-33a9-4afb-9364-3733a4c5926a-image-20240713153451201.png

    由于修改后的方程只含有对流项,所以离散结果可以进一步简化:
    52b605a5-8ce6-4fcf-877f-7873c16b36b4-image.png
    计算A10如下:
    4942a71a-7bf2-4860-a7b5-11f5b14bfe7b-image.png
    看起来没有问题,但是根据边界条件,只有入口边界的速度为1,如下图

    c7055b00-aa99-44a8-864e-52201d2eb30a-image-20240713155251131.png

    所以9eeca743-b645-4bba-a058-ee2008d9e103-image.png ,按照这样计算的$A_{10}$应该是 -0.25,和输出的矩阵系数也不一样。

    进一步的,计算对角矩阵系数(其实和次对角一样),怎么会有0出现,请老师帮忙解惑。

    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 李东岳 编辑
    #4

    我忘了,理论上中心格式离散出来的就是没有对角线系数。这个还是从迎风格式分析比较好。或者做单独的扩散项,然后扩散+对流可以用中心格式。没有扩散性中心格式纯对流无条件不稳定。

    把你的算例上传上来,我来分析

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

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

    @李东岳 谢谢老师,案例挂在下面了。cavitytest.zip

    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #6

    我下周给你更新这部分内容,这部分内容太多,之前我就想写过但是一直没动力写。我准备放在无痛笔记的附录里面。

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

    I 1 条回复 最后回复
  • I 离线
    I 离线
    ice_flow
    在 中回复了 李东岳 最后由 编辑
    #7

    @李东岳 那太好了,谢谢老师!

    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #8

    dyfluid.com连接数太多pdf穿不上去,给你发个图你看一下

    捕获.JPG

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

    I 1 条回复 最后回复
  • I 离线
    I 离线
    ice_flow
    在 中回复了 李东岳 最后由 编辑
    #9

    @李东岳 谢谢老师,对我帮助很大。
    我整理了一下案例和说明放到仓库了https://gitee.com/iceflowww/openfoam-testing.git

    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #10

    :146: :146: :146:

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

    1 条回复 最后回复

  • 登录

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