Skip to content
  • ICEM网格问题

    Meshy
    8
    0 赞同
    8 帖子
    20k 浏览
    李东岳

    你需要重新关联一下,挺费事的

  • 0 赞同
    3 帖子
    4k 浏览
    L

    谢谢东岳,我这就联系他们。

  • CFD中文网 定位与规范

    已固定 公告
    101
    0 赞同
    101 帖子
    656k 浏览
    H

    我写 固我在,嘿嘿

  • Fluent平板射流模拟计算spreading rate

    Fluent
    2
    0 赞同
    2 帖子
    3k 浏览
    I

    换个湍流模型
    换个壁面函数

  • 重新看icoFoam

    OpenFOAM
    7
    0 赞同
    7 帖子
    10k 浏览
    winsway_zeroW

    @李东岳 我下面仔细推导了一下:
    首先 rAU(1.0/UEqn.A());,这个公式的计算得到的结果是:

    对角系数 这是A()函数: template<class Type> Foam::tmp<Foam::volScalarField> Foam::fvMatrix<Type>::A() const { tmp<volScalarField> tAphi ( volScalarField::New ( "A("+psi_.name()+')', psi_.mesh(), dimensions_/psi_.dimensions()/dimVol, extrapolatedCalculatedFvPatchScalarField::typeName ) ); tAphi.ref().primitiveFieldRef() = D()/psi_.mesh().V(); tAphi.ref().correctBoundaryConditions(); return tAphi; } 这是D()对角系数的平均化处理 template<class Type> Foam::tmp<Foam::scalarField> Foam::fvMatrix<Type>::D() const { tmp<scalarField> tdiag(new scalarField(diag())); addCmptAvBoundaryDiag(tdiag.ref()); return tdiag; } 边界对对角系数的影响: template<class Type> void Foam::fvMatrix<Type>::addCmptAvBoundaryDiag(scalarField& diag) const { forAll(internalCoeffs_, patchi) { addToInternalField ( lduAddr().patchAddr(patchi), cmptAv(internalCoeffs_[patchi]), diag ); } }

    从上面的代码可以得到:
    $$
    A_p=\frac{\bar{D}}{\Delta V}
    $$
    其中:
    $$
    \bar{D}=average(a_p')+diag
    $$
    式子中average(Ap')表示的是边界对主对角线系数的影响的平均;diag表示的是内部面离散的主对角线系数。

    周围系数作为源项: H() template<class Type> Foam::tmp<Foam::GeometricField<Type, Foam::fvPatchField, Foam::volMesh>> Foam::fvMatrix<Type>::H() const { tmp<GeometricField<Type, fvPatchField, volMesh>> tHphi ( GeometricField<Type, fvPatchField, volMesh>::New ( "H("+psi_.name()+')', psi_.mesh(), dimensions_/dimVol, extrapolatedCalculatedFvPatchScalarField::typeName ) ); GeometricField<Type, fvPatchField, volMesh>& Hphi = tHphi.ref(); // Loop over field components for (direction cmpt=0; cmpt<Type::nComponents; cmpt++) { scalarField psiCmpt(psi_.primitiveField().component(cmpt)); scalarField boundaryDiagCmpt(psi_.size(), 0.0); addBoundaryDiag(boundaryDiagCmpt, cmpt); boundaryDiagCmpt.negate(); addCmptAvBoundaryDiag(boundaryDiagCmpt); Hphi.primitiveFieldRef().replace(cmpt, boundaryDiagCmpt*psiCmpt); } Hphi.primitiveFieldRef() += lduMatrix::H(psi_.primitiveField()) + source_; addBoundarySource(Hphi.primitiveFieldRef()); Hphi.primitiveFieldRef() /= psi_.mesh().V(); Hphi.correctBoundaryConditions(); typename Type::labelType validComponents ( psi_.mesh().template validComponents<Type>() ); for (direction cmpt=0; cmpt<Type::nComponents; cmpt++) { if (validComponents[cmpt] == -1) { Hphi.replace ( cmpt, dimensionedScalar(Hphi.dimensions(), 0) ); } } return tHphi; } template<class Type> void Foam::fvMatrix<Type>::addBoundaryDiag ( scalarField& diag, const direction solveCmpt ) const { forAll(internalCoeffs_, patchi) { addToInternalField ( lduAddr().patchAddr(patchi), internalCoeffs_[patchi].component(solveCmpt), diag ); } }

    这里面的求解过程包含了:
    $$
    H=\frac{\left [-\sum a_{\mathbf{N}}\mathbf{U_N} + (\mathbf{b}+\mathbf{b'})+(average(a_p')-a_p')\mathbf{U_C}\right]}{\Delta V}
    $$

    最后:

    $$
    HbyA= \frac{H}{A}=\frac{\Delta V}{average(a_p')+diag}\frac{\left [-\sum a_{\mathbf{N}}\mathbf{U_N} + (\mathbf{b}+\mathbf{b'})+(average(a_p')-a_p')\mathbf{U_C}\right]}{\Delta V}
    $$
    $$
    HbyA= \frac{H}{A}=\frac{\left [-\sum a_{\mathbf{N}}\mathbf{U_N} + (\mathbf{b}+\mathbf{b'})+(average(a_p')-a_p')\mathbf{U_C}\right]}{average(a_p')+diag}
    $$

  • fluent udf 定义源相

    Fluent
    2
    0 赞同
    2 帖子
    4k 浏览
    L

    这个是非常常见也常用的功能
    不需要独立分区
    一个推荐的方式
    是循环cell 比如begin_c_loop(单核模式)下c_face_loop
    在c_face_loop下采用C_FACE和C_FACE_THREAD来判别网格中的循环面是否面的thread id和你所匹配的面id一致
    face的面积采用F_AREA获取 注意第一形参获取的是该面积的法向矢量
    实际上按照流量的公式 一般还是点乘 毕竟是垂直面积方向的流量

  • 对称面的问题

    Meshy
    5
    0 赞同
    5 帖子
    8k 浏览
    winW

    @东岳 谢谢教授

  • 0 赞同
    7 帖子
    9k 浏览
    李东岳

    我们当时也是添加各向异性,你可以把这个加到你的dispersion函数里面

    const typename TrackCloudType::parcelType& p = static_cast<const typename TrackCloudType::parcelType&>(*this); const point start = p.position();

    这个函数上面添加上p.position()然后传入进去,因为td没有position()函数,但是p有

    就是 @浪迹天大 说的,一步一步弄,

  • FOAM FATAL ERROR

    OpenFOAM
    3
    0 赞同
    3 帖子
    3k 浏览

    @李东岳 好的 感谢您的解答,我去看一下边界条件!

  • 测试代码内公示

    CFD彩虹条
    1
    0 赞同
    1 帖子
    2k 浏览
    李东岳
    $sdsfa$

    $sdsfa$

    sdsfa

  • linux 替换文件夹关键词

    CFD彩虹条
    1
    0 赞同
    1 帖子
    2k 浏览
    李东岳
    sed -i "s/oldString/newString/g" `grep oldString -rl /path`
  • CFD神书开始预定咯!!

    CFD彩虹条
    9
    1 赞同
    9 帖子
    22k 浏览
    winsway_zeroW

    这本确实是神书,里面的示例代码给的真的相当赞。

  • wall上U设置的小困惑

    OpenFOAM
    3
    0 赞同
    3 帖子
    4k 浏览
    L

    @Zhy2022 :
    感谢Zhy2022兄回复,兄之教诲,弟记下了

  • 非结构化网格的边界层可以确定y+吗?

    Meshy
    3
    0 赞同
    3 帖子
    6k 浏览
    L

    @东岳 如果能够通过代码让边界层网格按湍流模型和y+自行调整就好了

  • Fluent 19.1动网格问题

    Fluent
    3
    0 赞同
    3 帖子
    6k 浏览

    @ibelief 在新版本的帮助文档中写了,运动区域的夹角必须是90,120,180这样可以被整除的数。

  • CFD中文网很多功能取消了?

    CFD彩虹条
    3
    0 赞同
    3 帖子
    5k 浏览
    李东岳

    论坛最近迁移服务器,才发现搜索功能丢了,我去找找,铁铁
    先用 @random_ran 的方法

  • 各位大哥平时看CFD巨著做笔记么

    CFD彩虹条
    5
    0 赞同
    5 帖子
    6k 浏览
    同学博

    @小葵 :threaten:

  • 咨询一个periodic repeats问题

    Fluent
    4
    0 赞同
    4 帖子
    6k 浏览

    @ibelief 刚刚试了一下,还是不可以,可能是那个地方的网格不太好,差异比较大。谢谢你的回答

  • 论坛搜索功能缺失 sad

    CFD彩虹条
    3
    0 赞同
    3 帖子
    5k 浏览
    李东岳

    搜索功能可用了

  • 0 赞同
    2 帖子
    4k 浏览
    队长别开枪

    @肖艺 STAR CCM+
    例子: https://www.cfd-schuck.de/en/cfd/anwendungsbeispiele/simulation-of-gear.html