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. OpenFORM植入EMMS模型时函数变量不匹配的问题

OpenFORM植入EMMS模型时函数变量不匹配的问题

已定时 已固定 已锁定 已移动 OpenFOAM
9 帖子 3 发布者 6.4k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • waltenW 离线
    waltenW 离线
    walten
    写于 最后由 编辑
    #1

    大家好,我需要植入EMMS模型到multiEulerFoam中,其中Hd的系数需要针对液相体积分数的不同而有所改变,因此我需要写入一个分段函数到Scalar.H文件中,函数是这样写的

    inline Scalar between(const Scalar s1, const Scalar s2)
    {
          return (s1>0 &&  s2<=0) ?1:0;
    }
    

    但是我在编译的时候调用between函数会出现数据类型不对的错误
    Screenshot from 2020-10-28 13-59-09.png
    我想知道应该如何定义才能定义出符合需求的数据类型。
    另外,我想详细了解openfoam中src/OpenFOAM/primitives中的数据的正确定义、调用的方式,请问有什么资料可以学习,谢谢

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #2

    Scalar应该是小写scalar?

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #3

    我试了一下,你加到了Scalar.H里面,这个编译通过了。

    你为何不在求解器顶层植入?

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    waltenW I 2 条回复 最后回复
  • waltenW 离线
    waltenW 离线
    walten
    在 中回复了 李东岳 最后由 李东岳 编辑
    #4

    @东岳 我这就让他去试试 @IO-Turbulent

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #5

    Scalar.H这个太底层了,编译要好久

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • I 离线
    I 离线
    IO-Turbulent
    在 中回复了 李东岳 最后由 编辑
    #6

    @东岳 因为我想添加一个能够使用多段液相分布的函数,所以在底层添加了,添加之后编译是可以通过,但是我在调用的时候编译就出现问题。
    下面是我需要调用时的文件57865962-e0e2-434e-b5ea-115b7c0aaf27-image.png
    就是在这个曳力编译的时候出现的数据类型错误

    I 1 条回复 最后回复
  • I 离线
    I 离线
    IO-Turbulent
    在 中回复了 IO-Turbulent 最后由 编辑
    #7

    @IO-Turbulent 补充一下错误截图Screenshot from 2020-10-28 15-10-01.png

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #8

    alpha是场,你需要个forAll循环试试?
    between(alpha[C] - 0.04, xxx);

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • I 离线
    I 离线
    IO-Turbulent
    写于 最后由 编辑
    #9

    回来填下坑
    为了在dragModels中引入一个新的区间判断函数between(),除了需要在

    \src\OpenFOAM\primitives\Scalar\Scalar.H
    

    中定义函数主题,还需要将函数进行重载,这是因为写入Scalar.H的文件只是单纯意义上的scalar类型,并不是计算所需要的

    Foam::tmp<Foam::GeometricField<double, Foam::FvPatchField, Foam::volMesh
    

    类型,为了使函数返回的类型符合所需数据类型需要对函数进行重载操作,具体操作的方法是在下列地方写入重载的定义,分别是

    \src\OpenFOAM\dimensionedTypes\dimensionedType.H
    \src\OpenFOAM\dimensionedTypes\dimensionedScalar.H
    \src\OpenFOAM\dimensionedSet\dimensionedSet.H
    \src\OpenFOAM\fields\DimensionedFields\DimensionedFieldFunctions.H
    \src\OpenFOAM\fields\FieldFields\scalarFieldField.H
    \src\OpenFOAM\fields\GeometricFields\GeometricField\GeometricFieldsFunctions.H
    \src\OpenFOAM\fields\GeometricFields\GeometricScalarField\GeometricScalarField.H
    

    重载之后可以使between()函数返回的数值类型为

    Foam::tmp<Foam::GeometricField<double, Foam::FvPatchField, Foam::volMesh
    

    之后重新编辑一下就可以运行了

    1 条回复 最后回复

  • 登录

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