Skip to content

OpenFOAM

OpenFOAM交流区

4.5k Topics 26.5k Posts
  • 1 Posts
    90 Views
    1

    报错的自定义边界如下,如图所示报错为:“‘incompressible’ does not name a type“,恳请论坛内各位老师解惑
    /---------------------------------------------------------------------------\

    \ / F ield OpenFOAM: The Open Source CFD Toolbox \ / O peration \ / A nd Copyright (C) 2011 OpenFOAM Foundation \/ M anipulation

    License
    This file is part of OpenFOAM.

    OpenFOAM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OpenFOAM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.

    *---------------------------------------------------------------------------*/

    #include "adjointOutletPressureHeatFvPatchScalarField.H"
    #include "addToRunTimeSelectionTable.H"
    #include "fvPatchMapper.H"
    #include "volFields.H"
    #include "surfaceFields.H"
    #include "RASModel.H"

    // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //

    Foam::adjointOutletPressureHeatFvPatchScalarField::
    adjointOutletPressureHeatFvPatchScalarField
    (
    const fvPatch& p,
    const DimensionedField<scalar, volMesh>& iF
    )
    :
    fixedValueFvPatchScalarField(p, iF)
    {}

    Foam::adjointOutletPressureHeatFvPatchScalarField::
    adjointOutletPressureHeatFvPatchScalarField
    (
    const adjointOutletPressureHeatFvPatchScalarField& ptf,
    const fvPatch& p,
    const DimensionedField<scalar, volMesh>& iF,
    const fvPatchFieldMapper& mapper
    )
    :
    fixedValueFvPatchScalarField(ptf, p, iF, mapper)
    {}

    Foam::adjointOutletPressureHeatFvPatchScalarField::
    adjointOutletPressureHeatFvPatchScalarField
    (
    const fvPatch& p,
    const DimensionedField<scalar, volMesh>& iF,
    const dictionary& dict
    )
    :
    fixedValueFvPatchScalarField(p, iF)
    {
    fvPatchField<scalar>::operator=
    (
    scalarField("value", dict, p.size())
    );
    }

    Foam::adjointOutletPressureHeatFvPatchScalarField::
    adjointOutletPressureHeatFvPatchScalarField
    (
    const adjointOutletPressureHeatFvPatchScalarField& tppsf,
    const DimensionedField<scalar, volMesh>& iF
    )
    :
    fixedValueFvPatchScalarField(tppsf, iF)
    {}

    // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //

    void Foam::adjointOutletPressureHeatFvPatchScalarField::updateCoeffs()
    {
    if (updated())
    {
    return;
    }

    const fvsPatchField<scalar>& phip = patch().lookupPatchField<surfaceScalarField, scalar>("phi"); const fvsPatchField<scalar>& phiap = patch().lookupPatchField<surfaceScalarField, scalar>("phib"); const fvPatchField<vector>& Uap = patch().lookupPatchField<volVectorField, vector>("Ub"); const dictionary& transportProperties = db().lookupObject<IOdictionary>("transportProperties"); dimensionedScalar nu(transportProperties.lookup("nu")); scalarField Up_n = phip / patch().magSf();//Primal scalarField Uap_n = phiap / patch().magSf();//Adjoint const incompressible::RASModel& rasModel = db().lookupObject<Foam::incompressible::RASModel>("RASProperties"); scalarField nueff = rasModel.nuEff()().boundaryField()[patch().index()]; const scalarField& deltainv = patch().deltaCoeffs(); // distance^(-1) scalarField Uaneigh_n = (Uap.patchInternalField() & patch().nf()); //operator ==((Up_n * Uap_n) +2*nu.value()*deltainv*(Uap_n-Uaneigh_n));

    operator ==((Up_n * Uap_n) +2*nueff.value()deltainv(Uap_n-Uaneigh_n));

    fixedValueFvPatchScalarField::updateCoeffs();

    }

    void Foam::adjointOutletPressureHeatFvPatchScalarField::write(Ostream& os) const
    {
    fvPatchScalarField::write(os);
    writeEntry("value", os);
    }

    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

    namespace Foam
    {
    makePatchTypeField
    (
    fvPatchScalarField,
    adjointOutletPressureHeatFvPatchScalarField
    );
    incompressible
    }
    f0c155d4-8455-4c68-be20-3db9aa49d6b6-image.png

  • 17 Posts
    4k Views

    @疏影横斜水清浅 在 topoSet, createPatch, createBaffle 在网格内部添加一个平面 求指教 中说:

    @脉动通风 你好,能详细说一下么,你是用的哪种颗粒注入方式,内部画网格是指生成面还是cellzone,你使用的方式是连续注入么

    内部画网格就是我自己在房间中间挖了一块正方体的区域,然后再使用ICEM画的网格。最后传入Openfoam中,再对那个正方体的一个面设置气体输入的浓度。
    使用的方式是连续注入,我是注入气体。

  • icoFoam源代码解读

    1
    1 Posts
    159 Views

    各位老师,大佬晚上好!openfoam小白最近在阅读icoFoam源代码时遇到了一点问题,根据李老师对icoFoam求解器的理论推导,它的压力泊松方程如下:7.png
    99.png
    在源代码中首先定义了phiHbyA,应该是HbyA的面通量:
    1.png
    但是,它的压力泊松方程里面的用的是phiHbyA而不是HbyA,这里我不是很能理解:
    3.png
    另外按理说piso算法每算一次U、P,按理来说应该要更新HbyA一次:
    8.png
    但是源代码里面更新的好像是phiHbyA(速度变了,且是个通量)
    在我的理解里,这段代码每次进行piso算法时,HbyA似乎没变,毕竟它是从之前的速度方程那里得到的?(对UEqn.A这个函数不太了解)
    9.png
    但是piso算完以后的U用的又是和理论推导的结果一致,用的是HbyA,而不是phiHbyA:
    6.png
    恳请各位老师,大佬解惑,谢谢各位!

  • 18 Posts
    4k Views
    Y

    @tidedrinker 前辈你好,我在使用olaFlow做一个二维的狭缝共振,但是把两个浮箱加上之后造出的波浪不向前传递是什么原因呀,详细的我放在了这个问题里面问题地址

  • 7 Posts
    348 Views
    B

    参考openfoam自带的dambreach这个算例

  • 3 Posts
    245 Views

    @wangfei9088 好滴,感谢大佬:xinxin2:

  • 3 Posts
    197 Views
    H

    @学流体的小明 嗯嗯,谢谢大佬

  • 旋转动网格集合面不对应

    1
    1 Posts
    79 Views

    eb812a45-a24b-435b-a01c-246db6db8afc-250c0b40b51035fb0e43108730efee4.jpg
    请教各位:
    我想如图设置一个扇形的计算域,中间一段圆环设置为旋转动网格,其中涉及a-a' 与b-b'两个对应面之间设置的问题,因为整个过程中,两组对应面并不是时刻交互的,某些面区域会作为边界,这种情况应该如何设置呢?谢谢

  • 求助olaFoam造波问题

    1
    1 Posts
    121 Views
    Y

    各位前辈好,我请教一下一个问题,我在使用olaFoam来建立一个模型,是一个二维的双浮体狭缝共振,我单独造波的时候(波高0.024,周期2s)的时候是可以造波的
    a1150344-d9bd-4c60-a03a-df521fec528d-image.png
    但是当我把两个固定的浮体加上之后,波浪就几乎没有了,请问这是什么原因

  • openform的瞬时温度场

    3
    3 Posts
    184 Views
    S

    @学流体的小明 我感觉也是时间太长,我目前打算检测一个点,观察温度的峰值和峰谷,取这个时间段作为周期

  • 关于openfoam中计算气体密度的疑问

    3
    3 Posts
    211 Views

    @wangfei9088 非常感谢大佬的指点!! 完美解决了这个问题:140:

  • 9 Posts
    878 Views
    H

    @Do1975 确实,可能还是看具体需求场景,我这是一方面DBS方法速度提升好像不多,然后在AB区域交界附近流场会出现间断,我没解决这个问题,就没用了

  • subsetmesh后运行不了

    1
    1 Posts
    67 Views
    J

    (我是一个算例出现这样的问题,然后简化了模型为333,来检查哪儿出了问题,应该与网格划分的多少没什么关系)
    我在toposetDict中设置了如下actions来挖去部分网格
    1c3291a7-b5d7-45a5-9f62-58296ac541e9-image.png
    挖取后如图所示(即一个333被挖去两列):
    b05be598-09be-405a-ae73-294da445666b-image.png
    但我使用命令subsetMesh -overwrite obstacle -patch frontAndBack后运行(时间步长为1e-8,自适应时间步长,writeNow。),很快就停了,也没有报错,也没有输出时间文件,不知道哪里出了问题。
    04ba5dfb-7d2e-4243-8127-423774e20268-image.png

  • 21 Posts
    3k Views
    Y

    @李东岳 东岳老师,这个用rhoCentralFoam的case可以发上来参考一下吗

  • 8 Posts
    344 Views

    @wsy11 好的,稍等,我提交了

  • 燃烧求解在AMR之后报错

    5
    5 Posts
    318 Views

    破案了。程序没问题,是我自定义的用于AMR的coded量忘记clear了

  • OpenFOAM outflow边界条件

    6
    6 Posts
    2k Views

    @shrine 是只在出口下降了吗,你把出口压强改成零梯度试一下,可以看一下案例里面那个open channel的设置

  • 边界条件tableFile读取错误问题

    8
    8 Posts
    3k Views
    C

    @Hope 楼主有没有ESDU的document呀,风剖速度和湍流强度以及风谱,没订阅,也搜索不到

  • toposet 得到的新边界怎么加边界层

    1
    1 Posts
    87 Views
    Y

    各位前辈好,请问我使用toposet创建的新的边界或者面之后,我应该怎么在这个边界或者说面上加上边界层呢,是不是相加边界层只能用snappyHexMesh

  • 3 Posts
    224 Views
    H

    @学流体的小明 恩呢,谢谢您的回答。
    /--------------------------------- C++ -----------------------------------
    | ========= | |
    | \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
    | \ / O peration | Version: v2212 |
    | \ / A nd | Website: www.openfoam.com |
    | \/ M anipulation | |
    *---------------------------------------------------------------------------*/
    FoamFile
    {
    version 2.0;
    format ascii;
    class dictionary;
    location "constant";
    object dynamicMeshDict;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

    dynamicFvMesh dynamicRefineFvMesh;

    // How often to refine
    refineInterval 1;

    // Field to be refinement on
    field alpha.water;

    // Refine field inbetween lower..upper
    lowerRefineLevel 0.001;
    upperRefineLevel 0.999;

    // If value < unrefineLevel unrefine
    unrefineLevel 1;

    // Have slower than 2:1 refinement
    nBufferLayers 6;

    // Refine cells only up to maxRefinement levels
    maxRefinement 1;

    // Stop refinement if maxCells reached
    maxCells 15000000;

    // Flux field and corresponding velocity field. Fluxes on changed
    // faces get recalculated by interpolating the velocity. Use 'none'
    // on surfaceScalarFields that do not need to be reinterpolated.
    correctFluxes
    (
    (phi none)
    (nHatf none)
    (rhoPhi none)
    (alphaPhi_ none)
    (ghf none)
    (phi0 none)
    (dVf_ none)
    (alphaPhi0.water none)
    (alphaPhiUn none)
    );

    // Write the refinement level as a volScalarField
    dumpLevel true;

    // ************************************************************************* //
    这是我的dynamicMeshDict文件。
    我按您说的方法去试一下。