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. 张量二阶偏导数 偏(A_j B_i)/偏(x_i x_j) 如何编程

张量二阶偏导数 偏(A_j B_i)/偏(x_i x_j) 如何编程

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

    想计算一个源项:
    $$
    \frac{\partial^2 (\overline{\rho} \overline{U}_j u_i^\prime) }{\partial x_i \partial x_j}
    $$
    其中上横线表示时间平均量,上标撇表示脉动量。
    我把rhoMean、UMean和UPrime都计算好了,它们的类型分别是
    volScalarField rhoMean; volVectorField UMean; volScalarField UPrime;
    展开后是
    $$
    \begin{multline}
    [{\frac{{{\partial ^2}}}{{\partial x_1^2}}(\bar \rho {{\bar U}_1}u_1^\prime ) + \frac{{{\partial ^2}}}{{\partial {x_1}\partial {x_2}}}(\bar \rho {{\bar U}_2}u_1^\prime ) + \frac{{{\partial ^2}}}{{\partial {x_1}\partial {x_3}}}(\bar \rho {{\bar U}_3}u_1^\prime ) + \frac{{{\partial ^2}}}{{\partial {x_2}\partial {x_1}}}(\bar \rho {{\bar U}_1}u_2^\prime ) +
    \\
    \frac{{{\partial ^2}}}{{\partial x_2^2}}(\bar \rho {{\bar U}_2}u_2^\prime ) + \frac{{{\partial ^2}}}{{\partial {x_2}\partial {x_3}}}(\bar \rho {{\bar U}_3}u_2^\prime ) + \frac{{{\partial ^2}}}{{\partial {x_3}\partial {x_1}}}(\bar \rho {{\bar U}_1}u_3^\prime ) + \frac{{{\partial ^2}}}{{\partial {x_3}\partial {x_2}}}(\bar \rho {{\bar U}_2}u_3^\prime ) + \frac{{{\partial ^2}}}{{\partial x_3^2}}(\bar \rho {{\bar U}_3}u_3^\prime )}]
    \end{multline}
    $$
    然后该如何写这个偏导数呢?和AI战斗了好久它还是没懂,它一直想用fvc::laplacian(),但是fvc::laplacian()的含义是$\frac{\partial ^2}{\partial x_1^2}+\frac{\partial ^2}{\partial x_2^2}+\frac{\partial ^2}{\partial x_3^2}$。

    C 1 条回复 最后回复
  • C 离线
    C 离线
    coolhhh 神
    在 中回复了 学流体的小明 最后由 编辑
    #2

    @学流体的小明
    问了AI,OpenFOAM需要手动做两次梯度计算

    #include "fvCFD.H"      // OpenFOAM 的核心头文件,包含 mesh、field、fvc/fvm 工具
    #include "fvcGrad.H"    // 显式声明 fvc::grad
    
    int main(int argc, char *argv[])
    {
        #include "setRootCase.H"
        #include "createTime.H"
        #include "createMesh.H"
        // 创建速度场 U
        volVectorField U
        (
            IOobject
            (
                "U",
                runTime.timeName(),
                mesh,
                IOobject::MUST_READ,
                IOobject::AUTO_WRITE
            ),
            mesh
        );
    
        // 把 u1 分离出来
        volScalarField u1 = U.component(vector::X);  // 或者 U.x()
    
        // 1. 计算 u1 的一阶梯度 ∇u1
        volVectorField gradU1 = fvc::grad(u1);
        //    gradU1.x() = ∂u1/∂x1
        //    gradU1.y() = ∂u1/∂x2
        //    gradU1.z() = ∂u1/∂x3
    
        // 2. 对 ∂u1/∂x1 这个标量场,在 x2(Y)方向再求一次梯度
        //    fvc::grad(gradU1.x()) 是一个 volVectorField,
        //    其中 .y() 即 ∂(∂u1/∂x1)/∂x2 = ∂²u1/∂x1∂x2
        volScalarField d2u1dx1dx2 = fvc::grad( gradU1.x() ).y();
    
        // 写入结果
        d2u1dx1dx2.write();
    
        return 0;
    }
    
    
    学流体的小明学 1 条回复 最后回复
  • 学流体的小明学 离线
    学流体的小明学 离线
    学流体的小明 神
    在 中回复了 coolhhh 最后由 编辑
    #3

    @coolhhh 感谢,本来也是想着OpenFOAM有没有简单的代码全部搞定,最后还是要手动一个一个算😂

    1 条回复 最后回复

  • 登录

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