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
2 帖子 2 发布者 1.1k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 1 离线
    1 离线
    1064168551
    写于 最后由 编辑
    #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

    D 1 条回复 最后回复
  • D 离线
    D 离线
    Do1975
    在 中回复了 1064168551 最后由 编辑
    #2

    @1064168551 在 openfoam自定义边界条件编译时报错,恳请论坛内各位老师解惑 中说:

    const incompressible::RASModel& rasModel =
    db().lookupObjectFoam::incompressible::RASModel("RASProperties");

    scalarField nueff = rasModel.nuEff()().boundaryField()[patch().index()];

    你这边伴随边界条件中并没有用到nueff的值,可以直接把这几行代码注释掉。

    1 条回复 最后回复

  • 登录

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