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中文网

讲师

私有

帖子


  • 张量二阶偏导数 偏(A_j B_i)/偏(x_i x_j) 如何编程
    学流体的小明学 学流体的小明

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


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

    @学流体的小明
    问了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;
    }
    
    

  • 张量二阶偏导数 偏(A_j B_i)/偏(x_i x_j) 如何编程
    学流体的小明学 学流体的小明

    想计算一个源项:
    $$
    \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}$。


  • snappyHexMesh的加密以及在直角处的边界层生成问题
    C coolhhh

    @studentTan nCellsBetweenLevels 过渡层设置多一点,试下10层或20层

    nCellsBetweenLevels		1;
    

  • snappyhexMesh划分边界层网格时在锐角处无法生层边界层
    C coolhhh

    @BznW

    1. 试下 snapControls 用 explicitFeatureSnap
    snapControls
    {
    	implicitFeatureSnap false;
    	explicitFeatureSnap true;
    }
    
    1. 同时把 meshQualityDict 质量要求降低,因为这种尖角边界层网格质量就是挺差
    maxBoundarySkewness 10;
    maxInternalSkewness 4;
    minDeterminant 0.001;
    minFaceWeight 0.02;
    minVolRatio 0.01;
    
    1. 按上面方式可能能生成这样的边界层网格,网格质量差,有可能会导致计算发散,得具体试算下

  • Windows 环境安装部署 OpenFOAM-v2106 及 ParaView 保姆级教程
    A Amadeus

    在安装完Windows版ParaView之后, 也可以去WSL的.bashrc文件里面添加以下内容

    alias paraview='"/mnt/ParaView/安装/路径/bin/paraview.exe"'
    

    然后重新Source一下就可以使用paraview命令启动Windows版ParaView了, 可以直接打开WSL里面的文件夹, 无需在Windows目录下运行OpenFOAM算例


  • openfoam如何将结果文件写到其他文件夹?
    学流体的小明学 学流体的小明

    让AI帮忙写了个脚本,供大家参考。原理是提前在当前的算例文件夹下创建好链接,链接到另一个硬盘已经创建好的时间文件夹。实测在/home/disk1/caseA目录下运行OpenFOAM求解器,可以将数据文件存到/home/disk2/caseB中。注意这个脚本得在/home/disk1/caseA目录下运行,不然ln命令总会有一些bug,有时候是没办法正确创建链接,有时候是会出现链接的嵌套。

    #!/bin/bash
    
    # 配置路径
    src="/home/disk1/caseA"
    dst="/home/disk2/caseB"
    
    # 创建目标目录
    mkdir -p "$dst"
    
    # 处理单个 processor 的函数
    process_proc() {
        local proc="$1"
        local dst="$2"
        local procname=$(basename "$proc")
        
        # 创建 processor 目录
        mkdir -p "$dst/$procname"
    
        # 生成时间序列并创建时间文件夹(自动剪除尾随零)
        seq 8.0001 0.0001 8.5 | while read t; do
            formatted_t=$(printf "%g" "$t")
            mkdir -p "$dst/$procname/$formatted_t"
            
            # 创建符号链接,指向目标目录中的时间文件夹
            ln -sfn "$dst/$procname/$formatted_t" "$procname/$formatted_t"
        done
    }
    
    # 导出函数以便并行使用
    export -f process_proc
    
    # 收集所有 processor 目录
    proc_dirs=("$src"/processor*)
    
    # 并行处理(使用所有CPU核心)
    parallel --jobs 0 --progress --bar process_proc {} "$dst" ::: "${proc_dirs[@]}"
    
    echo "processor 文件夹和时间文件夹创建完成。"
    

  • 数据驱动CFD的意义是什么?
    I ibelief

    @李东岳 在 数据驱动CFD的意义是什么? 中说:

    博士后按道理来说应该已经看过很多sci了啊。现在很多sci都是啥用没有,纯粹发文章用...

    太真实了,绝大部分的sci都是啥用没有


  • 求教Fluent求解前设置
    I ibelief

    压力的问题可以看看压力的分布。
    看你现在的情况, 压力问题和温度问题都出现了,那暗示有三种可能,1.网格过于离谱;2.物理模型选择离谱;3.边界条件离谱。


  • 求教Fluent求解前设置
    I ibelief

    @length颜 一般来说,5000K是Fluent软件能计算的温度的上限。这么考虑的话,你设置大概需要调整的。如果网格不离谱的话,可以先看看温度分布

成员列表

A Amadeus
学流体的小明学 学流体的小明
C coolhhh
田畔的风田 田畔的风
T Tens
I ibelief
史 史浩
Y yfclark
G gyzhangqm
  • 登录

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