openfoam从9还是10开始,编译需要超大内存。那次大版本更新一堆编译爆了的。要么增加内存条或者swap,要么编译的时候不要直接 -j 用上所有的核,用少一些核,内存占用会降低,只是编译速度慢点。
可以编译的时候开着系统资源管理器看着内存占用,是不是到100%之后猛的下降。
openfoam从9还是10开始,编译需要超大内存。那次大版本更新一堆编译爆了的。要么增加内存条或者swap,要么编译的时候不要直接 -j 用上所有的核,用少一些核,内存占用会降低,只是编译速度慢点。
可以编译的时候开着系统资源管理器看着内存占用,是不是到100%之后猛的下降。
确定是“自动关机”而不是“自动重启”?如果只是自动重启,兴许只是内存满了,把GUI撑爆了,GUI自动重启了。
如果确定是自动关机的故障就别开机了。自动关机的时候估计哪里电流过载之类的,多冲几次就成永久故障了。
@Afr1yne 可以的。可以参考溃坝算例里设定水的区域和含水量
tutorials/multiphase/interFoam/laminar/damBreak
@世界函数 画网格的时候、计算的时候都可以修改。在fluent里,网格那一栏。有检查网格质量、防缩网格尺寸,也有整体移动网格的。把网格的一个边界点对到原点上就行了。
OpenFOAM里有个setFields,就像fluent里的path。
第一个坐标是16.
1026-16=1010
这些是内部函数,只有头文件里有声明。是常见的商业软件保密方法。(只发布头文件和源代码编译成的动态链接库)
如果要使用,
第一步,包含定义该函数的头文件
第二步,编译的时候链接到包含该函数定义的动态链接库。
可以使用grep找到包含该函数的声明头文件和各状况下的动态链接库。
can@M320:/ansys_inc> sudo grep -r Alloc_Storage_Vars .
grep: ./v231/fluent/fluent23.1.0/linmic/3ddp_node/fluent_mpi.23.1.0: binary file matches
grep: ./v231/fluent/fluent23.1.0/linmic/2ddp_node/fluent_mpi.23.1.0: binary file matches
grep: ./v231/fluent/fluent23.1.0/linmic/2d_node/fluent_mpi.23.1.0: binary file matches
grep: ./v231/fluent/fluent23.1.0/linmic/3d_node/fluent_mpi.23.1.0: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/mhd/lnamd64/3ddp_host/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/mhd/lnamd64/3ddp_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/mhd/lnamd64/2ddp_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/mhd/lnamd64/3d_host/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/mhd/lnamd64/2d_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/mhd/lnamd64/2d_host/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/mhd/lnamd64/2ddp_host/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/mhd/lnamd64/3d_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/msmdbatt/lnamd64/3ddp_node/cae_batt.o: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/msmdbatt/lnamd64/3ddp_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/msmdbatt/lnamd64/3d_node/cae_batt.o: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/msmdbatt/lnamd64/3d_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/htc/lnamd64/3ddp_node/libhtcns.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/htc/lnamd64/2ddp_node/libhtcns.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/htc/lnamd64/2d_node/libhtcns.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/htc/lnamd64/3d_node/libhtcns.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/fensapice/lnamd64/3ddp_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/fensapice/lnamd64/3d_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/rom/lnamd64/3ddp_host/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/rom/lnamd64/3ddp_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/rom/lnamd64/2ddp_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/rom/lnamd64/3d_host/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/rom/lnamd64/2d_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/rom/lnamd64/2d_host/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/rom/lnamd64/2ddp_host/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/rom/lnamd64/3d_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/adjoint/lnamd64/3ddp_host/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/adjoint/lnamd64/3ddp_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/adjoint/lnamd64/2ddp_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/adjoint/lnamd64/3d_host/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/adjoint/lnamd64/2d_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/adjoint/lnamd64/2d_host/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/adjoint/lnamd64/2ddp_host/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/adjoint/lnamd64/3d_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/mpm/lnamd64/3ddp_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/mpm/lnamd64/2ddp_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/mpm/lnamd64/2d_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/addons/mpm/lnamd64/3d_node/libudf.so: binary file matches
grep: ./v231/fluent/fluent23.1.0/lnamd64/3ddp_host/fluent.23.1.0: binary file matches
grep: ./v231/fluent/fluent23.1.0/lnamd64/3ddp_node/fluent_mpi.23.1.0: binary file matches
grep: ./v231/fluent/fluent23.1.0/lnamd64/2ddp_node/fluent_mpi.23.1.0: binary file matches
grep: ./v231/fluent/fluent23.1.0/lnamd64/3d_host/fluent.23.1.0: binary file matches
grep: ./v231/fluent/fluent23.1.0/lnamd64/2d_node/fluent_mpi.23.1.0: binary file matches
grep: ./v231/fluent/fluent23.1.0/lnamd64/2d_host/fluent.23.1.0: binary file matches
grep: ./v231/fluent/fluent23.1.0/lnamd64/2ddp_host/fluent.23.1.0: binary file matches
grep: ./v231/fluent/fluent23.1.0/lnamd64/3d_node/fluent_mpi.23.1.0: binary file matches
./v231/fluent/fluent23.1.0/src/storage/storage.h:FLUENT_EXPORT void Alloc_Storage_Vars(Domain *, ...);
./v231/fluent/fluent23.1.0/src/storage/storage.h:FLUENT_EXPORT void MD_Alloc_Storage_Vars(Domain *, ...);
@李东岳 无意中帮到大佬被cue
ansys fluent udf manual.pdf
搜你的版本的ansys的这个文件,里面有解释和使用范例
极限分析法:攻角90度。
然后就成了圆柱绕流了,有卡门涡街了。来回摆的涡,即使没有湍流,也不会收敛了。
你是用稳态算的吧,可以用瞬态试试,周期波动稳定后,选一些连续的波动周期做个时均场,试试能不能得到气动参数
你看paraview。上面时间已经是0.005了
@Gunther 已经include?你是说在源代码里写的包含头文件那句代码?
你知道那个文件在哪,但是gcc不知道,所以得在options里写明,头文件的位置,和库文件的位置。
头文件可以让gcc知道有哪些函数可用,头文件一般都是函数声明。库文件定义函数如何运行。所以位置都得指明。
那些个IDE有的设定好了,把这些细节藏起来了。
至于为什么你的options文件没有发挥作用,我看你也没把overset的头文件写进包含里呀,具体怎么写不知道,但大概应该像这个的最后一行,地址不一定对,那你觉得你之前的option文件里,第几行包含了overset的头文件呢?
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/surfMesh/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I$(LIB_SRC)/lduSolvers/lnInclude \
-I$(LIB_SRC)/overset/lnInclude
OpenFOAM的计算结果文件夹里有温度、压力。。。。等等文件。飞射物体所在的位置有什么特殊物理量?
用grep去抓,用数据所在行数判断坐标,写成脚本,把所有时间节点都抓了,然后就有数据画图了
直接把crMatrix.H
的绝对路径写到EXE_INC
里试试
找pp[i].average的定义
pp是p的patch的引用,p是this的patch的引用。
所以pp是this的patch的patch。
所以pp的子函数average要从this里找。this就是当前这个类:cellMotionFvPatchField
这个类的定义在:src/fvMotionSolver/fvPatchFields/derived/cellMotion/cellMotionFvPatchField.H
由类定义可知,该类继承自 fixedValueFvPatchField.H (src/finiteVolume/fields/fvPatchFields/basic/fixedValue/fixedValueFvPatchField.H
)
fixedValueFvPatchField 又继承自 fvPatchField (src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.H
)
这里352行,有patch函数,返回值是patch_
src/finiteVolume/fields/fvPatchFields/fvPatchField/fvPatchField.C
中显示patch_的初始变量是fvPatch类型的(this的patch)
src/finiteVolume/fvMesh/fvPatches/fvPatch/fvPatch.H
这里142行,有patch函数,返回值是polyPatch_,它的声明在69行,是polyPatch类型(this的patch的patch)
polyPatch里没有average函数,接着往基类上找(src/OpenFOAM/meshes/polyMesh/polyPatches/polyPatch/polyPatch.H
)
继承自两个类:patchIdentifier, primitivePatch
第一个查无所获,第二个:
src/OpenFOAM/meshes/primitiveMesh/primitivePatch/primitivePatch.H
里面有四个头文件,一个个找过去,
第一个:
src/OpenFOAM/meshes/primitiveMesh/PrimitivePatch/PrimitivePatch.H(^处两个字母,大小写和上面不一样)
^ ^
没有average函数
第二个:
src/OpenFOAM/meshes/meshShapes/face/face.H
好了,找到函数原型:148行
//- Calculate average value at centroid of face
template<class Type>
Type average(const pointField&, const Field<Type>&) const;
代码行数都是OpenFOAM 10版本的
网页搜着慢,可以自己编译个本地的,搜着快,一句命令就可以生成。
can@M320-TC:/home/can/.local/share/OpenFOAM/OpenFOAM-10/doc/Doxygen> ll (git)-[master]-
total 140K
drwxr-xr-x 2 can can 4.0K Jan 6 2023 Macros/
-rwxr-xr-x 1 can can 2.0K Jan 6 2023 Allwmake*
-rw-r--r-- 1 can can 496 Jan 6 2023 CFDFoundation55x55.png
-rw-r--r-- 1 can can 948 Jan 6 2023 customdoxygen.css
-rw-r--r-- 1 can can 103K Jan 6 2023 Doxyfile
-rw-r--r-- 1 can can 716 Jan 6 2023 footer.html
-rw-r--r-- 1 can can 2.1K Jan 6 2023 header.html
-rw-r--r-- 1 can can 7.5K Jan 6 2023 README.html
-rw-r--r-- 1 can can 1.7K Jan 6 2023 README.org
can@M320-TC:/home/can/.local/share/OpenFOAM/OpenFOAM-10/doc/Doxygen> ./Allwmake (git)-[master]-
也可以手动找。加载了OpenFOAM环境后,src
命令直接跳到源代码目录,然后:
直接找到类的定义:
find . -name calssWhatIWant.H
直接找函数:
grep -r "functionWhatIWant(" .
加半拉括号是为了减少搜索到的结果。搭配正则表达式用,搜的效率更高。
网格设定的问题。网格看起来太薄了,这不是好的网格,放在二维里说,就是大纵横比网格。
这样薄片或者说大纵横比网格,即使正常生成网格没有错误,计算也容易出问题。
这样的网格在优化的过程中也容易出问题,因为稍微挪动,就会出现像穿模一样的效果,负体积之类的。