OpenFOAM编译错误解决

OpenFOAM编译报错问题解决

问题一

OpenFOAM 3.0.0进行编译时,出现错误 error: ‘isnan’ was not declared in this scope

需要在src/conversion/ensight/part/ensightPart.H文件代码段

// Static data memebers
static const List<word> elemTypes_;

后加入如下代码:

// wrapper for isnan, namely C99 or C++11
inline bool isnan(const scalar value) const
{
#ifndef isnan
return std::isnan(value);
#else
return ::isnan(value);
#endif
}

再继续进行编译。

问题二:

出现错误

'yyFlexLexer::yywrap()' collect2:error:ld returned 1 exit status OpenFOAM

解决办法

在OpenFOAM文件家下打开终端cd ~/OpenFOAM/OpenFOAM-3.0.0输入

find src applications -name "*.L" -type f | xargs sed -i -e 's=\(YY\_FLEX\_SUBMINOR\_VERSION\)=YY_FLEX_MINOR_VERSION < 6 \&\& \1='

OpenFOAM自定义编译注意细节

使用自定义库文件

. 
├── Allwclean
├── Allwmake
├── fluxSchemes
│   ├── lnInclude
│   ├── Make
└── myRiemannSolverFoam
    ├── compressibleCFLNO.H
    ├── createFields.H
    ├── Make
    └── myRiemannSolverFoam.C

假设其中的自定义文件fluxSchemes已经编译成动态库,并在目录/home/lw/OpenFOAM/<USER_NAME>-v1912/platforms/linux64GccDPInt32Debug/lib/libfluxSchemes.so

在OpenFOAM中,files用来指定OpenFOAM顺序进行编译的文件名称以及路径,options用来指定OpenFOAM需要调用的外挂库的路径以及名称。如果需要使用用户自定义文件,需要对files和Options做以下处理
对files文件:

myRiemannSolverFoam.C

EXE = $(FOAM_USER_APPBIN)/myRiemannSolverFoam

修改为FOAM_USER_APPBIN的目的为避免和OpenFOMA官方执行文件所在目录FOAM_APPBIN发生冲突。

options文件如果需要使用用户自定义的库(fluxSchemes),那么对EXE_INC中关于该库需要做如下修改

EXE_INC = \
	-I../fluxSchemes/lnInclude

对于EXE_LIBS部分关于该库的修改如下

EXE_LIBS = \
    -L$(FOAM_USER_LIBBIN) -lfluxSchemes

$(FOAM_USER_LIBBIN):路径为home/lw/OpenFOAM/<USER_NAME>-v1912/platforms/linux64GccDPInt32Debug/lib
$(FOAM_USER_APPBIN):路径为home/lw/OpenFOAM/<USER_NAME>-v1912/platforms/linux64GccDPInt32Debug/bin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值