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

    想实现更改每个单元的粘度的功能,于是在laminarTransport的类singlePhaseTransportModel.H中加入了

    virtual void crtMyNu(const labelUList& myList,scalar myNu);
    

    目的是为了在simpleFoam里面可以调用laminarTransport.crtMyNu(),输入单元编号的List,和想改成的数值myNu;
    然后在Newtonian.H 里加入

            void crtMyNu(const labelUList& myList,scalar myNu)
            {                                                 
                           forAll(myList,i)                                                                                              
                         {                                                                 
                               label cellI=myList[i];                                                                                        
                                 this->nu_[cellI]=myNu;
                       }                                                                                                         
         } 
    

    实现对nu_的具体修改。
    编译libincompressibleTransportModels时没有错误
    但是在simpleFOAM.C中加入

    laminarTransport.crtMyNu(solidCells,scalar(10000));
    

    后,编译simpleFOAM时报错

    -lm -o /home/samuel/OpenFOAM/samuel-v1806/platforms/linux64GccDPInt64Opt/bin/GCSimpleFoam
    Make/linux64GccDPInt64Opt/GCSimpleFoam.o: In function `main':
    GCSimpleFoam.C:(.text.startup+0x3748): undefined reference to `Foam::singlePhaseTransportModel::crtMyNu(Foam::UList<long> const&, double)'
    collect2: error: ld returned 1 exit status
    /home/samuel/OpenFOAM/OpenFOAM-v1806/wmake/makefiles/general:136: recipe for target '/home/samuel/OpenFOAM/samuel-v1806/platforms/linux64GccDPInt64Opt/bin/GCSimpleFoam' failed
    make: *** [/home/samuel/OpenFOAM/samuel-v1806/platforms/linux64GccDPInt64Opt/bin/GCSimpleFoam] Error 1
    

    编译错误的原因是什么呢?搞不懂。。

    W 1 条回复 最后回复
  • W 离线
    W 离线
    wwzhao 超神
    在 中回复了 Samuel-Tu 最后由 编辑
    #2

    @Samuel-Tu 在 编译失败求助 中说:

    void crtMyNu(const labelUList& myList,scalar myNu)

    这句改成 void singlePhaseTransportModel::crtMyNu(const labelUList& myList,scalar myNu) 试试?

    S 1 条回复 最后回复
  • S 离线
    S 离线
    Samuel-Tu
    在 中回复了 wwzhao 最后由 编辑
    #3

    @wwzhao 在Newtonian.H里加吗,singlePhaseTransportModel类编译不通过了。

    In file included from viscosityModels/Newtonian/Newtonian.C:26:0:
    viscosityModels/Newtonian/Newtonian.H:110:14: error: ‘singlePhaseTransportModel’ has not been declared
             void singlePhaseTransportModel::crtMyNu(const labelUList& myList,scalar myNu)
                  ^~~~~~~~~~~~~~~~~~~~~~~~~
    /home/samuel/OpenFOAM/OpenFOAM-v1806/wmake/rules/General/transform:34: recipe for target '/home/samuel/OpenFOAM/OpenFOAM-v1806/build/linux64GccDPInt64Opt/src/transportModels/incompressible/viscosityModels/Newtonian/Newtonian.o' failed
    make: *** [/home/samuel/OpenFOAM/OpenFOAM-v1806/build/linux64GccDPInt64Opt/src/transportModels/incompressible/viscosityModels/Newtonian/Newtonian.o] Error 1
    
    1 条回复 最后回复
  • S 离线
    S 离线
    Samuel-Tu
    写于 最后由 编辑
    #4

    好像发现原因了,Newtonian没有从singlePhaseTransportMode继承,因此如果在singlePhaseTransportMode中定义虚函数是不行的

    1 条回复 最后回复

  • 登录

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