1.之前介绍了CFDEM计算中断后怎样继续计算,以及CFDEM中的writeLiggghtsProps命令,但是还是有一定的问题:
在“CFDEM计算中断后怎样继续计算”方法中,出现的问题是DEM保存的时间步长似乎是与CFD保存的writeInterval并不一致。
在writeLiggghtsProps中出现的问题是,修改了src下的源文件之后,在集群里面计算时,发现并没有DEM的.restart文件写入。
2.在CFDEM的官网论坛上,有人讨论过这件事,Alexander Podlozhnyuk提出了直接在in.liggghts文件中使用restart命令来保存.restart文件的方法:
Alexander Podlozhnyuk特别指出restart命令必须用在“run” 有关的命令之前:This must appear before the first "run" command.
3.关于restart命令,官网解释在这个链接上。
另外,我感觉我们常用到的restart命令主要也就下面两种:
1 restart 200 ../DEM/post/liggghts.restart 2 restart 200 ../DEM/post/liggghts.restart.1 ../DEM/post/liggghts.restart.2
第一种:每隔200个DEM时间步长保存一次,保存路径为case/DEM/post/,不覆盖之前的.restart文件,即在case/DEM/post/下有liggghts.restart.200、liggghts.restart.400、liggghts.restart.600、、、等文件。还可以和通配符"*"一起用:比如 restart 200 ../DEM/post/liggghts.*.restart ,那么保存的数据就会使liggghts.200.restart、liggghts.400.restart、liggghts.600.restart、、、等等。
第二种:每隔200个DEM时间步长保存一次,保存路径为case/DEM/post/,需要保存liggghts.restart.1和liggghts.restart.2两个文件,会覆盖之前的.restart文件,即在case/DEM/post/下只有这两个文件。根据推测的话,这两个文件应该是距离CFDEM计算中断之前所能保存的最近的时间步长的.restart文件,什么意思呢?就是如果CFDEM在第LIGGGHTS的950步的时候计算中断的话,那么这两个.restart文件中保存的数据分别为第600步和第800的数据。
4.这样,我们可以不必理会case/CFD/constant/liggghtsCommand中的内容了,而是在第一次计算之前就直接使用in.liggghts中的restart命令,并尽量将restart中的保存间隔调整至与case/CFD/system/controlDict中的writeInterval相一致。这样中断计算后,可以按照如下操作:
4.1.在caseCFD/路径中,将已经计算并保存的流场数据进行整合,打开终端并输入:
reconstructPar -noLagrangian
4.2.在case/CFD/system/controlDict文件夹中的startTime改为继续计算的时间,比如:
startTime 0.5;
4.3.在case/DEM/in.liggghts_run文件中做如下修改:
4.3.1.注释掉:
#region domain block -3.4 2.1 -0.1 0.1 -0.1 0.1 units box #create_box 2 domain
4.3.2.在后面添加:
read_restart ../DEM/post/liggghts.restart.XXX
4.3.3还要注释掉后面的一句:
#group nve_group region domain
便可以继续计算了。
5.最后,值的注意的是,LIGGGHTS中保存的.restart文件是二进制文件,一般情况下是无法直接用文本编辑器打开的。