OpenFoam小技巧

31 篇文章 8 订阅
24 篇文章 3 订阅

参考http://www.tfd.chalmers.se/~hani/kurser/OS_CFD/#YEAR_2021

配置

列出环境变量

env | grep WM
env | grep FOAM_

返回环境变量的值

echo $FOAM_APP

命令的简称,可以在$WM_PROJECT_DIR/etc/config.sh/aliases中找到

alias src='cd $FOAM_SRC'
alias lib='cd $FOAM_LIBBIN'
alias app='cd $FOAM_APP'
alias sol='cd $FOAM_SOLVERS'
alias util='cd $FOAM_UTILITIES'
alias tut='cd $FOAM_TUTORIALS'
alias run='cd $FOAM_RUN'

也可以使用alias命令显示全部简写
checkMesh检查网格的质量
controlDict中的runTimeModifiable true允许案例运行时被编辑

求解过程

如果不清楚某个字典应该输入什么值,输入dummy,运行求解器后将返回候选项,比如

stopAt dummy;

可以使用#include包含其他字典的内容

#include "boundaryConditions"

可以在字典中定义并引用变量

velocity1 1;
$velocity1

fvSolution字典中可用的线性方程求解器来自$FOAM_SRC/OpenFOAM/matrices/lduMatrix/solvers/

.
├── diagonalSolver
├── GAMG
│   ├── GAMGAgglomerations
│   │   ├── algebraicPairGAMGAgglomeration
│   │   ├── dummyAgglomeration
│   │   ├── GAMGAgglomeration
│   │   └── pairGAMGAgglomeration
│   ├── GAMGProcAgglomerations
│   │   ├── eagerGAMGProcAgglomeration
│   │   ├── GAMGProcAgglomeration
│   │   ├── manualGAMGProcAgglomeration
│   │   ├── masterCoarsestGAMGProcAgglomeration
│   │   ├── noneGAMGProcAgglomeration
│   │   └── procFacesGAMGProcAgglomeration
│   ├── interfaceFields
│   │   ├── cyclicGAMGInterfaceField
│   │   ├── GAMGInterfaceField
│   │   ├── processorCyclicGAMGInterfaceField
│   │   └── processorGAMGInterfaceField
│   └── interfaces
│       ├── cyclicGAMGInterface
│       ├── GAMGInterface
│       ├── processorCyclicGAMGInterface
│       └── processorGAMGInterface
├── PBiCG
├── PBiCGStab
├── PCG
└── smoothSolver

GAMG是多重网格
PBiCG和PCG是预条件共轭梯度法
smoothSolver是高斯赛得尔方法
可以参考http://www.tfd.chalmers.se/~hani/kurser/OS_CFD_2008/TimBehrens/tibeh-report-fin.pdf
foamLog命令可以将计算过程得到的日志转换为可以绘图的数据

后处理

将png图片序列转换为gif

/usr/bin/convert -quality 20% -delay 10 -loop 0 *.png movie.gif

也可以使用在线的转换器https://www.matools.com/gif

编程的方法

$WM_PROJECT_USER_DIR的目录结构如下

.
├── applications
│   └── solvers
│       └── myInterFoam						#这个是自己编写的求解器
│              └── Make
├── platforms
│   └── linux64GccDPInt32Opt
│       ├── bin							  	#编译得到的可执行文件
│       └── lib								#编译得到的动态连接库
├── run
│   └── simulationSRM
│       └── VOSPM-phaseChange-burnbackModel_reorg #案例文件
└── src
    └── twoPhaseModels
        └── twoPhaseChange
            ├── burnbackModel               #这个是自己编写的派生类
            ├── cavitation
            ├── lnInclude
            ├── Make
            ├── noPhaseChange
            └── twoPhaseChangeModel

在src里编写库,使用wmake命令编译,其中Make/files文件为

......
LIB = $(FOAM_USER_LIBBIN)/libmyTwoPhaseChangeModels

目的是将编译得到的动态连接库存放在platforms/linux64GccDPInt32Opt/lib
在applications里编写求解器,使用wmake命令编译,其中Make/files文件为

myInterFoam.C
EXE = $(FOAM_USER_APPBIN)/myInterFoam

目的是将编译得到的可执行文件存放在platforms/linux64GccDPInt32Opt/bin
Make/options文件为

EXE_INC = 
		......
    -I$(WM_PROJECT_USER_DIR)/src/twoPhaseModels/twoPhaseChange/lnInclude \
    ......

EXE_LIBS = \
    ......
    -L$(FOAM_USER_LIBBIN)\
    -lmyTwoPhaseChangeModels
    ......

可以使用如下代码自动生成一个空求解器

foamNewApp meshAndField

其目的是指明依赖库的头文件和库的地址及名称

编程需要注意的事项

OpenFoam使用国际单位,共7个量纲
在这里插入图片描述有量纲的物理量的定义方式如下

dimensionedTensor sigma
(
"sigma",
dimensionSet( 1, -1, -2, 0, 0, 0, 0),
tensor( 1e6, 0, 0, 0, 1e6, 0, 0, 0, 1e6)
);

通过可以通过value成员函数获得tensor类型的数值

通过fvm和fvc命名空间下的函数实现场的运算。fvm returns an fvMatrix,and fvc returns a geometricField
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jedi-knight

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值