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编程

微分公式OpenFOAM编程

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

    遇到一个不是那么常规的微分公式,请大家帮忙看看我编的程序对不对。
    数学公式如下

    $\frac{\partial \beta u_i}{\partial x_i}+\frac{\partial w \beta }{\partial x_3} =0 \qquad \qquad(1) $

    其中$\beta$为代求的标量场,$\vec u$为已知速度场,$w$就是一个已知标量,例如$w=0.2$。左边第二项式$\frac{\partial w \beta }{\partial x_3}$只是向$x_3$方向的导数,OpenFOAM里面没有直接能够表这一项的,因此我做了如下转换:

    $\frac{\partial w \beta }{\partial x_3}=0\frac{\partial \beta }{\partial x_1}+0\frac{\partial \beta }{\partial x_2}+\frac{\partial w \beta }{\partial x_3}=\frac{\partial 0 \beta }{\partial x_1}+\frac{\partial 0 \beta }{\partial x_2}+\frac{\partial w \beta }{\partial x_3}=\frac{\partial \beta W_i}{\partial x_i}\qquad \qquad(2)$

    其中$\vec W=vector(0,0,w)$
    此时,式(1)可转化为:

    $\frac{\partial \beta u_i}{\partial x_i}+\frac{\partial \beta W_i }{\partial x_i} =\frac{\partial \beta (u_i+W_i)}{\partial x_i}=0 \qquad \qquad(3) $

    式(3)是div的典型形式,在OF中,我是这样实现的:

    #首先构造一个体心向量场
    volVectorField W
    (
        IOobject
        (
            "W",
            runTime.timeName(),
            mesh,
            IOobject::NO_READ,
            IOobject::NO_WRITE
        ),
        mesh,
        dimensionedVector
        (
            "",
            dimensionSet(0,1,-1,0,0,0),
            vector(0.0,0.0,0.2)#w=0.2
        )
    );
    W+=U; #W+U,速度场已知
    surfaceScalarField phiW
    (
        "phiW",
        fvc::flux(W)
    );
    #方程可写为:
    fvm::div(phiW, beta)
    
    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #2

    左边第二项式$\frac{\partial w \beta }{\partial x_3}$只是向$x_3$方向的导数,

    为何不对$w \beta$求梯度然后获取$x_3$方向的分量?

    volVectorField t = fvc::grad(wbeta);
    volScalarField t2 = t.component(2);
    

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

    S 1 条回复 最后回复
  • S 离线
    S 离线
    Samuel-Tu
    在 中回复了 李东岳 最后由 编辑
    #3

    @东岳 在 微分公式OpenFOAM编程 中说:

    volVectorField t = fvc::grad(wbeta);
    volScalarField t2 = t.component(2);

    我有试过求梯度,再求分量,通过源项的方式加入微分方程中:

    volVectorField t = fvc::grad(wbeta);
    volScalarField t2 = t.component(2);
    fvm::div(phi, beta)==-fvc::su(t2, beta);
    

    这样可以吗:134: 。。

    1 条回复 最后回复

  • 登录

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