【LAMMPS翻译系列】read_restart命令

read_restart命令用来读入之前的模拟过程保存下的重启动文件。

使用语法

read_restart file
  • file:要读入的二进制重启动文件的文件名。

使用举例

read_restart save.10000
read_restart restart.*
read_restart poly.*.%

使用介绍

该命令用来读入之前的模拟过程保存下的重启动文件。该命令可以帮助你实现接着之前的模拟过程继续进行。下面会告诉你哪些信息被存储在了重启动文件中。

重启动文件是二进制格式的,它是用来精确重启动之前模拟过程,就是说重启动之后的模拟会精确的接着之前已经进行的模拟继续进行。

但也有一些因素会因为舍入误差而影响到这种重启动的精确性,这种情况下这两个模拟间就会有一些偏差。这些影响因素包括使用数量不同的处理器进行计算,或者改变了某些设置,比如那些与命令newton或processors相关的设置。LAMMPS会在这种情况下给出警告。

有些fix命令不能被重启动,尽管它们会提供相近的统计结果。这种命令包括fix shake和fix langevin。

有些势类型不能被重启动,尽管它们会提供相近的统计结果。这是因为力的计算是依赖于原子速度的,而在每个时间步计算力的时候,使用的是半个时间步的速度值。当重启动一个计算时,力的计算却被初始化为全步的速度值,这就与写入重启动文件时的计算直接进行下去的结果不同。这些势类型有granular pair styles, pair dpd和 pair lubricate。

如果你在重启动一个计算时,从一开始就与产生重启动文件的计算有了不一样,这应该是LAMMPS的bug,你可以报告给LAMMPS软件。

因为重启动文件是二进制的,所以这些文件一般来说是不能拷贝到其他的机器使用的,但你可以使用工具restart2data将其转换成文本文件。

与写重启动文件(参考命令write_restartrestart)类似,读入的重启动文件的文件名也可以包括两种通配符。

  • 如果是符号“*”,那么会在当前目录下匹配所有文件名中将“*”替换成时间步的文件,但只有最大时间步的那个文件会被读入。也就是说,最后写入的那个重启动文件会被读入用于重启动模拟。如果你想让你的计算从之前停下来的地方开始,那么这种方式非常实用。参考命令run和它的upto选项,了解怎样设置run命令可以不需要在新的计算中更改命令run的设置。
  • 如果是符号“%”,LAMMPS会要求有一系列的重启动文件存在。在命令restartwrite_restart命令中,已经介绍了这一些列重启动文件是如何创建的。read_restart命令首先会读入将“%”替换为base的那个文件,该文件告诉LAMMPS之前的模拟设置了多少个处理器。然后read_restart命令会读入剩下的那些重启动文件。举例来说,如果在写入的时候,设置重启动文件的文件名为save.%,那么在使用read_restart读入的时候,就会读入这些文件save.base, save.0, save.1, ……, save.P-1(这里面P是创建重启动文件时处理器的数量)。在当前的LAMMPS模拟中,所有的处理器同时读入这些文件,每个处理器会读入文件数量大致相等。创建重启动文件的处理器数量可以跟读入重启动文件的处理器数量不一样。对于支持并行I/O的并行机来说,这是一种快速的输入方式。




对一个模拟而言,下列信息会被存储在了重启动文件中:单位样式units、原子样式atom style、模拟盒子的尺寸和形状、边界条件、定义的组、与原子类型相关的设置(如质量)、与每个原子相关性质(包括它们被分配到的组和分子拓扑性质)、势函数类型及参数、特殊键specail_bonds的设置。这就意味着与这些量相关的命令不需要在读入重启动文件中的输入脚本中再重新进行指定。当然,你也可以重新指定这些设置。

有一个例外是有些势类型的信息没有存储在重启动文件中。具体哪种类型,会在介绍那种势类型的时候专门指出来。命令bond_style hybrid (and angle_style, dihedral_style, improper_style hybrid) 也是这样的。

所有由命令pair_modify所指定的设置,比如shift和tail,会与势类型一起存储在重启动文件中。但命令pair_modify compute是唯一的例外。

命令kspace_style的相关信息没有存储在重启动文件中,所以如果你希望使用Ewald or PPPM求解器,那么这些命令还需要在重启动文件被读入后重新指定。

所有与fix相关的命令都没有存储在重启动文件中。这就意味着在新的输入脚本中需要重新指定所有用到的fix命令。需要注意的是,有一些fix命令会将它们内在的状态写入到重启动文件中,这就使得在开始重启动模拟之后,这些fix命令可以继续起作用,但这些却需要被激活。你只需要在新的输入脚本中使用与写入重启动文件的那个脚本相同的fix-ID和group-ID来定义这些fix命令,就可以将它们激活。如果fix命令能够匹配上,那么LAMMPS会输出一个信息,指示这个fix命令被重新激活了。如果在执行新输入脚本中计算或能量最小化之前没有发现可以匹配的fix命令,那么从重启动文件保存的fix命令的内在状态信息就会被丢弃掉。参考fix命令,了解具体是哪个具有这样的重启动方式。

使用命令fix_shake或delete_bonds关掉的键作用,在被写入到重启动文件时,会被打开。所以,在读入重启动文件后,需要重新将这些键作用关掉。

断掉的键也被写入到了重启动文件中(断键用类型0表示),因此当读入重启动文件的时候,这些键仍然是断掉的。

注意:除了上面列举的信息之外,其他任何信息都没有被存储在重启动文件中。这就是说,对于读入重启动文件的输入脚本来说,需要指定的量有:时间步长timestep、热力学信息thermo_style、领域列表neighbor、领域列表设置neigh_modifydump文件输出、几何区域region等。

相关命令

read_data, read_dump, write_restart, restart

默认设置

restart 0

标签: lammps, lammps翻译

相关文章推荐

添加新评论 (无需注册,可直接评论)