减少mpi 通信
刘雄国
帖子
-
看个乐:renumberMesh后的魔性云图 -
turbulence->validate有何意义其实也不难,你用grep大概能猜出个所以然来。
grep -rn "validate"
其他都是空函数只有一个函数有点意思template<class BasicTurbulenceModel> void Foam::ReynoldsStress<BasicTurbulencemModel>::validate() { correctNut(); }
然后我又grep 了
correctNut()
常用的是kOmega 我看了下template<class BasicTurbulenceModel> void kOmega<BasicTurbulenceModel>::correctNut() { this->nut_ = k_/omega_; correctBC; BasicTurbulenceModel::correctNut(): }
我虽然没有一行行debug, 大概猜出来就是湍流初始化。最开始给定k omega 初始值计算出第一步的nut 初始值给k omega方程,即previous time step,欢迎指正。
-
求助帖:OpenFOAM后处理极小数volScalarField YcMinus0dot7 = Yc(s) - 0.7;
-
欧拉-拉格朗日方法,用不同的线程来进行流场计算和颗粒跟踪@hurricane007 在 欧拉-拉格朗日方法,用不同的线程来进行流场计算和颗粒跟踪 中说:
如果有这种求解器的话,求指点一下,如果不能的话,求讨论一下为啥不能
线程 != processor 进程
OpenFOAM only applies the MPI library, not OpenMP. Another problem, the particle/cloud classes require the local velocity, temperature, turbulence, and pressure field to calculate the particle velocity or forces. You need to solve that, how particle tracking slaves access the those information from CFD slaves. Furthermore, does the particle field affect the fluid field? Then, ... It is complex.
Sorry, I don't have Chinese typing now. -
List类的clear()函数可以参照vector<>内存管理模式,网上很多资料。不清空内存是为了防止堆空间内存反复allocate和delete,防止重复调用系统资源,这样运行速度下降。allocated size是分配了多少空间,size是你用多少个空间。
double a[10] = {1,1,1};
类似这种,分配10个double空间,实际上只用了3个double空间,当然这使用的是栈内存。 -
并行效率疑问 -
并行效率疑问OpenFOAM 矩阵计算效率是可以更高,这点没有疑问. 矩阵计算效率高不高 主要取决于 MPI 通信
1000 processors 以上 不同节点上 计算 OpenFOAM 要重构效率高不高除了算法,计算问题类型, 代码优化等有关系
大牛说 下一代cfd 需要 大规模计算机网格 + Algorithm + Coding 整体考虑 我觉得很有道理
问过openfoam developer, 他的意思是 OpenFOAM is a general CFD solver. They want to solve specific problem to make money (ESI).
-
请问,MPPIC这个方法的particle distribution function的运作@zhe qtcreator line-by-line debuging
-
请问DPMFoam不能用于非常精细的网格的模型么?OpenFOAM 颗粒的粒径可以大于网格尺寸, 这个库是有bug的,你需要花时间认真读读
-
拉格朗日粒子在平行運算下的問題@r07522121 google MPI load balance
-
拉格朗日粒子在平行運算下的問題@东岳 老师不好意思,我回答不了,和具体应用有关。
-
拉格朗日粒子在平行運算下的問題如果是静态网格 global mesh 可以只重组一次,就能节省通信时间。动态网格这个方法也不是特别好,需要测试一下。OpenFOAM这个粒子输运库我想改改,太慢了
-
拉格朗日粒子在平行運算下的問題可neng你的粒子源就在很小区域位置释放,所以导致进程不平均。建议在每个时间步网格重组,每个进程都有global mesh,在global mesh进行粒子输运, 就能解决这个问题啦!However, it is a little hard.
-
在OpenFoam植入多尺度模拟方法的可行性目前没有,openfoam实现的叫代数多重网格,就是在求解矩阵时候一些数学技巧而已。不建议一头扎进OpenFOAM,按照你的要求可以用MATLAB先实现一个简单解法器,把流程走一遍再看OpenFOAM。OpenFOAM版本越新c++高级技巧越多,做工程的人很少有人懂这么多程序技巧。
-
颗粒的全局ID输出问题?//- Cumulative particle counter - used to provode unique ID
static label particleCount_;
应该不是你可以修改基础particle类,让它生产粒子源时附带一个"字符码",particle在multi processors区域传输的时候把这个字符码也带上。就可以区别开来了。
-
Ubuntu 下 OpenFOAM代码的调试qtcreator
etc/bashrc
export WM_COMPILE_OPTION=Opt
改为
export WM_COMPILE_OPTION=Debug
然后重新wmake all 在src 里面在qtcreator 可以实现一行一行debug, 是可行. 具体步骤可以google以下.
问题是OpenFOAM 太大了, 建议你还是直接把结果一步一步打印出来就可以拉
-
OpenFOAM 非对称矩阵解法器大家好, 请问有人测试过OpenFOAM 非对称矩阵解法器. 解法器算得总是不太对, 误差有点大. 我把问题一个一个排查, 发现可能OpenFOAM 非对称矩阵解法器可能有问题. 或者某些参数没给对, 我不太确定. 请问有人做过这方面研究不? 怎么对OpenFOAM的非对称矩阵PBiCG进行详细测试呢? 谢谢各位了哈!
-
particleforce类内ErgunWenYuDrag的表达式感觉有错误现在OpenFOAM7 出来了 据我的同事说改变了很多 你可以看一下
-
forAll boundary应该是Sb.boundaryField() 返回const reference
Sb.boundaryField().ref() 返回 reference
根据我的经验是这样,如果错误的话把编译错误贴上来
认真看看代码很简单的,编译器的错误已经告诉你所有信息了! -
请教一个代码IOdictionary_H@chengan-wang 不能说没啥用,在某些时候很关键.如果没有这个就有可能出现重定义