这个VectorSpace是OpenFOAM中的primitive type,所有的primitive type都需要能够使用C++的萃取(traits)技术提炼基本信息。
话说OpenFOAM把C++的高级特性都用上了,这架构设计的水平实在是高!
这个VectorSpace是OpenFOAM中的primitive type,所有的primitive type都需要能够使用C++的萃取(traits)技术提炼基本信息。
话说OpenFOAM把C++的高级特性都用上了,这架构设计的水平实在是高!
@mark 这个是正则表达式,不是指针。"U.*"
代表所有以 U
开头的字符串(包括 U
本身)。
PIMPLE
算法中的最后一次外循环迭代的求解参数用都会在场量后加上 Final
,如 UFinal
等。U.*
代表所有循环迭代(包括最后一次循环迭代)都使用相同的求解参数。
说明一下:
1、换行符(\)不能随便用,必须用在行尾。如果用在行中间,那么换行符后面的内容都会被忽略,所以你加的 -lnetPanel 没用。
2、-lfoo 会找名为 libfoo.so 的库文件,-l:bar.so 则会找 bar.so 文件,这是 gcc 的链接规则。
总结的不错。
Su Sp 是灵活处理源项的方法,正确使用方法如下:
1、若源项为负,如你举的例子中的 -30
,一般写作 $\frac{-30}{k^{old}}k$,$k^{old}$ 代表上一时刻的值,采用 fvm::Sp
离散后,源项就进入 [A] 中对角元素,使对角元素更占优。
2、若源项为正,如你举的例子中的 50
,则直接用 fvm::Su
离散,源项进入右端项 [b] 中。
3、若源项是一个有正有负的 volScalarField,则利用 fvm::SuSp
离散,它会判断源项每个网格单元的正负号,然后选择用 Su 还是 Sp 的方法进行处理。
以上方法的最终目的都是增加矩阵对角占优,使线性方程组的迭代更稳定,更容易收敛。
如果在声明变量的时候指定名称:
volScalarField rAU(1.0/UEqn.A(), "rAU");
那么可以在字典文件中用以下语句指定离散格式
laplacian(rAU,p) Gauss linear corrected
在声明rAU
时不指定名称:
volScalarField rAU(1.0/UEqn.A());
那么rAU
的名称通过量纲以及符号运算得到,1.0/UEqn.A()
的名称为(1|A(U))
,因此相应的离散格式应该写作:
laplacian((1|A(U)),p) Gauss linear corrected
在计算大规模问题时,采用多个GPU进行计算,在不同的GPU之间进行数据传输是个问题。不过现在好像已经有这个技术了。
另外还有GPU和CPU数据传输速率的限制,不过这个在Maxwell架构中似乎已经不成问题了。
不管怎么说,GPU在高性能计算领域普及开来还有很长一段路需要走。
@mohui 感谢分享!
试了一下cavity算例,可以正常跑完。
将system/fvSolution里面的压力求解器的relTol设为0就可以使残差降下来,不过相应的矩阵求解迭代步要增加。
@hongjiewang 在 不规则多孔介质的网格划分 中说:
对于一些简单几何模型直接采用topoSet是可行的,对于不规则的还是需要借助stl进行区域的设定。
你在另一个帖子里问我了,我在这里回复你吧。
在 snappyHexMeshDict 里面可以通过 STL 文件(必须封闭)指定 cellZone。例如:
geometry
{
sphere
{
type triSurfaceMesh;
file "sphere.stl";
}
};
refinementSurfaces
{
sphere
{
level (0 0);
faceZone sphere1;
cellZone sphere1;
cellZoneInside inside;
}
}
@Stan同学 在 关于snappyHexMesh 中说:
@wwzhao
您好,想向您请教个小问题。前面这个网址 https://sites.google.com/site/snappywiki/ 里讲到如果要添加边界层,需要指定具体的patch,但是我不太清楚stl文件内部是如何定义各个patch的,请问有什么办法或者用什么软件来打开stl文件从而获取里面的patch信息吗?
在生成stl文件时应该给solid命名,以区分stl中的不同patch。
@Stan同学 在 关于snappyHexMesh 中说:
另外想请问您说的每个patch单独保存一个stl文件,这个用CAD软件可以实现吗 ?
(之前一直是用的CAD导出stl文件,应该是您说的整个区域为一个stl文件)
这个可以通过FreeCAD实现。
faceProcAddressing是并行用的,将local face id转换成global face id。