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. wmake错误:对rhotabularThermo::rho(int) const未定义的引用

wmake错误:对rhotabularThermo::rho(int) const未定义的引用

已定时 已固定 已锁定 已移动 OpenFOAM
6 帖子 3 发布者 5.4k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • C 离线
    C 离线
    Calf.Z-DNS
    写于2019年1月3日 12:33 最后由 编辑
    #1

    大家好,

    我新编译了一个物性库,没有报错。
    但是想要用求解器调用这个库一起编译的时候,报错:

    /home/dyfluid/OpenFOAM/dyfluid-5.x/platforms/linux64GccDPInt32Opt/lib/librhoTabularThermophysicalModels.so:对‘Foam::rhotabularThermo::rho(int) const’未定义的引用

    我在options添加了这个库的相关头文件与路径。在库代码中相关的信息:

    .H文件:
    0_1546518667667_81a5a3a8-b7b6-45b8-9789-99355d831b65-image.png

    .C文件:
    0_1546518631377_f6e66ee8-7b79-4d35-8960-ee1270d35ec9-image.png

    不知道为何会提示这个错误,另外我使用外挂这个库的方法时,提示unknown rhoThermo type,我比对了makeThermos的组合类型,没有拼错,十分疑惑,还望指点。

    1 条回复 最后回复
  • 李 离线
    李 离线
    李东岳 管理员
    写于2019年1月3日 12:40 最后由 编辑
    #2

    你第二个图那个得返回啊,没看到你return?

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

    C 1 条回复 最后回复 2019年1月4日 01:49
  • W 离线
    W 离线
    wwzhao 超神
    写于2019年1月4日 01:42 最后由 编辑
    #3

    函数签名不对,一个有参数(int)一个没参数

    C 1 条回复 最后回复 2019年1月4日 02:03
  • C 离线
    C 离线
    Calf.Z-DNS
    在 2019年1月4日 01:49 中回复了 李东岳 最后由 编辑
    #4

    @东岳

    Foam::tmp<Foam::volScalarField> Foam::rhotabularThermo::rho() const
    {
    volScalarField rho_ =
    lookupOrConstruct2
    (
    T_.mesh(),
    phasePropertyName("thermo:rho_").c_str(),
    dimensionSet(1, -1, -2, 0, 0)
    );
    volScalarField T_back =
    lookupOrConstruct2
    (
    T_.mesh(),
    phasePropertyName("thermo:T_back").c_str(),
    dimensionSet(0, 0, 0, 1, 0)
    );
    volScalarField p_back =
    lookupOrConstruct2
    (
    T_.mesh(),
    phasePropertyName("thermo:p_back").c_str(),
    dimensionSet(1, -3, 0, 0, 0)
    );
    /* Check if the temperature or pressure fields
    have changed since the last iteration. */
    forAll(T_, faceI)
    {
    if(T_[faceI] != T_back[faceI] || p_[faceI] != p_back[faceI])
    {
    //Info << "difference" << endl;
    forAll(T_, faceI2)
    {
    rho_[faceI2] = densityTable(T_[faceI2], p_[faceI2]);
    T_back[faceI2] = T_[faceI2];
    p_back[faceI2] = p_[faceI2];
    }
    return rho_;
    }
    }
    return rho_;
    }

    整个代码片段是这样的

    1 条回复 最后回复
  • C 离线
    C 离线
    Calf.Z-DNS
    在 2019年1月4日 02:03 中回复了 wwzhao 最后由 编辑
    #5

    @wwzhao 我在这个库的源代码里面没有找到rho(int) const,只有rho() const, 请教一下应该怎么改呢?

    1 条回复 最后回复
  • C 离线
    C 离线
    Calf.Z-DNS
    写于2019年1月4日 03:07 最后由 李东岳 编辑 2019年11月4日 18:16
    #6

    问题已解决。
    在.C文件中少了下面这段代码:

    Foam::tmp<Foam::scalarField> Foam::rhotabularThermo::rho(const label patchi) const
    {
    return rho_.boundaryField()[patchi];
    }
    1 条回复 最后回复
2019年1月3日 12:33

4/6

2019年1月4日 01:49

未读 2
2019年1月4日 03:07
  • 登录

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