RG2

Crystal-space traveler

4.RG2的输入

RG2以para.ini作为其主要参数输入文件,其中需要用户对搜索过程中所必须的一些参数进行设置,其中包含十余个常用参数,以及大量其他参数。其中一些参数需要配合起来使用。参数文件格式是:

1、每行一条参数设置;

2、参数格式是“参数名=参数值列表”或者“参数名  参数值列表”,即等号等价于空格。一些针对不同元素设置的参数,比如参考键角BONDANG,可以写为:“参数名[元素序号]=参数”的形式,特别地,对于两种元素设置的参数,比如参考键长,可以写为“参数名[元素序号1] [元素序号2]=参数”的形式,但注意,其中的方括号和等号仅用于方便阅读,全部替换为空格并不影响程序运行,即将元素序号也当作参数值,只需要保证多个参数的顺序正确。

3、如无说明,所有参数涉及的长度单位为Å,时间单位为秒,角度采用角度制,逻辑值则以0与1来分别表示是与否。此外,路径参数支持相对路径,但路径中不能有空格;矩阵参数以9个空格隔开的数字表示,且列优先。

4、如无说明,同一个参数多次赋值时,后面的会覆盖前面的;

5、可以用符号#表示注释,会忽略其后的所有内容直到行尾。需要注意:如果#不在行首,则#之前需要有至少一个空格,以便与其之前的内容区分;

6、如果有不能识别的参数(比如拼写错误),程序会报错并终止。

接下来以功能分类对这些参数进行介绍,包括搜索流程控制参数,结构生成参数,成键参数,结构筛选和输出参数,结构优化参数,素材结构参数,随机点参数,其他参数等。

4.1  搜索流程控制参数

RANDMOD:选择搜索模式。可用值:0,3或6。默认值:0。

0表示随机搜索,即通过随机坐标、近邻关联产生结构,是主要的模式;

3表示生长法搜索,即通过在已有原子附近,算出可生长位点集合,并通过随机挑选生长点方案来模拟生长过程产生初始结构,用于边缘、表面重构搜索(或者用于减少大结构搜索的耗时,此方法处于探索中);

6表示结构批处理模式,用于从LOADDIR指定的目录中读取结构进行批量去重、弛豫优化、元素替换等处理,结果正常输出,而对应的原始结构文件会被移到目录outorig中。该模式主要是作为工具以方便使用。

LOADDIR:设置RANDMOD=6时的读取目录,可以是相对路径。默认值:input。

ISWATCHING:设置RANDMOD=6时是否监视目录。默认值是0,即不监视目录,此时当输入目录中的文件处理完毕后程序会停止;如果设置为1,监视目录,则在文件处理完后程序会继续等待有新的文件被放入目录。监视功能用于配合其他结构搜索软件使用,比如可以多进程搜索输出到相同目录,同时用该功能进行同步去重复等处理。

WATCHINTV:监视等待间隔,浮点数,可以小于1;默认值:0.5。

RUNLIMIT:运行步数限制,用于限制运行的步数。默认值为0,表示无限制。步数的具体含义有多种,通过参数RUNLIMITMOD设置。

RUNLIMITMOD:运行步数限制方式,用于配合参数RUNLIMIT。

可用值:0,1,2,3;默认值:0。

0表示按搜索时尝试的总步数;

1表示成功得到商图的次数;

2表示搜索到结构的次数;

3表示搜索到新结构的次数。

CUSTOMSEARCHBATPATH:自定义搜索流程,用于指定一个文本文件,其中列出每次搜索时需要运行的内置指令,从而控制搜索的细节。可用的内置指令参见程序内的help命令。

ISP1SEARCH:是否以无对称性模式搜索,默认值为0。如果设置为1,则在生成初始结构后,去掉对称性信息,之后的流程不考虑对称性。某些特殊情况可能需要这个功能。

MAPELE:元素映射表,即是否在输出结构时进行元素替换,第一个数字为替换成的目标元素序号,后面的为待替换的元素序号列表。目标元素序号为0表示删除。比如:MAPELE 6 7 8表示在输出时将7和8号元素全部替换为碳原子。可以有多条参数分别设置不同的元素替换关系。

4.2  晶体结构信息参数

GID:整数型,用于设置搜索中选用的对称群编号。可以是单一值,也可以是用空格隔开的列表,或者以-号连接的两个数字表示的范围。目前可用的对称群有空间群(默认)以及层群(DIMENSION=2时默认启用);注意:该参数无默认值,必须设置,而且默认调用程序内置的空间群或层群。

空间群可用的值为1-230,它们与晶系的对应关系为:triclinic: 1-2; monoclinic: 3-15; orthorhombic: 16-74; tetragonal: 75-142; trigonal: 143-167; hexagonal: 168-194; cubic: 195-230。层群可用的值为1-80,它们与晶系的对应关系为:triclinic: 1-2; monoclinic: 3-18; orthorhombic: 19-48; tetragonal: 49-64; trigonal: 65-72; hexagonal: 73-80。示例:GID= 89 95 100-200 210-220。

LCPARA:设置6个晶格常数a, b, c, , , ,其中a, b, c为三个基矢的长度;, , 为相对的两个基矢的夹角,范围在30至150之间。每个常数可以用-号连接两个数表示一个随机的范围。注意,因为晶系对晶格常数有约束,实际产生的结构未必完全符合设置的值,比如对于立方晶系,除了a外其余5个参数会被忽略。示例:LCPARA=8-16 8-16 8-16 30-150 30-150 30-150。默认值:LCPARA=10 10 10 90 90 90。

AELE:结构包含的元素序号列表,目前可用的元素为1-110号。示例:比如搜索碳氮化合物,则应设置AELE= 6 7。该参数无默认值,必须根据需要设置。

AELENUM:设置每种元素的非等价原子数范围,对应于AELE参数。非等价原子数越多,则对于特定的对称群,结构一般也越大,但搜索速度也会越慢。该参数无默认值,必须根据需要设置。

ANUMRAT:指定在 AELE中所指定的各类节点总数的比例,或设置为默认值0,不作比例要求,例如ANUMRAT=1  3 代表搜索AB3

DIMENSION:设置结构维度。目前可用值:3,2。默认值3。注意,设置 DIMENSION=2,即搜索二维结构,则默认真空层方向沿c方向,且对应晶格常数中的c将用于表示层厚,而不再是c方向的晶格基矢长度;同时应设置和为90。

VACUSIZE:用于在DIMENSION=2时指定真空层厚度,默认值12。

SURFSIZE:用于在DIMENSION=2时指定表面层厚度,即在随机产生坐标时,限制配位数小于3的原子出现在表面一定范围内,以提高搜索效率。默认值1.0。

4.3  成键(商图)参数

LINKMAX:设置某种元素的配位数,比如LINKMAX 6 3表示设置碳元素为3配位。注意,通过此参数每种元素只能设置一种配位,如果需要多种配位混合,可以用ADDBONDLIST。LINKMAX参数会被ADDBONDLIST覆盖。

ADDBONDLIST:添加一个允许的成键列表,其中第一个数字为对应的元素序号,后面的数字为与该元素成键的所有其他原子的元素序号列表。例如,石墨烯中,每个碳原子与其他3个碳原子成键,则应设置:ADDBONDLIST 6 6 6 6。同一元素可以设置多种成键列表。如果设置了某种元素的ADDBONDLIST,则对应元素的LINKMAX参数会被忽略。

BONDANG:设置某种元素成键的参考键角。目前对每种元素只能设置一种键角。示例:BONDANG 6 120,表示设置碳元素成键的键角为120度。

BONDLEN:设置两种元素之间成键的参考键长。示例:BONDLEN[6][6]=1.5,表示设置碳碳键长为1.5Å。

4.4  结构筛选和输出参数

OUTDIR:设置输出路径。默认值:out。

OUTPUTRES, OUTPUTCIF, OUTPUTVASP:0或1,晶体结构文件的输出格式选择开关,设置是否输出.res,.cif或者vasp采用的POSCAR格式。三种格式可以独立设置是否输出。默认只输出res格式。

OUTPUTORIGCELL, OUTPUTCONVCELL, OUTPUTPRIMCELL:0或1,晶体结构的晶胞类型,设置是否输出原始晶胞(即初始结构经优化后的胞),惯胞(用于方便处理对称性)以及最小胞(部分对称群下会比惯胞更小)。三种格式可以独立设置是否输出。默认只输出原始晶胞。

LIBDIR:结构库目录,用于在去重复结构时,存放已知结构。此目录会自动生成,且所有搜索到的结构都会保存在里面。如果程序启动时目录已经存在,则会读取其中的结构用于去重复。默认值:slib。

BONDLENMAX:成键的截断半径,用于忽略过远的原子以减少计算量。单位为参考键长的倍数,默认值:RANDMOD=6时为1.2,其他为5.0。

BONDLENTOLER,BONDLENERRMAX:筛选结构时键长与参考值的相对容差,前者设置所有键长误差的平方平均,后者设置最大的误差。默认值分别被设置为0.15和0.30。

BONDANGTOLER,BONDANGERRMAX:筛选结构时键角与参考值的相对容差,前者设置所有键角误差的平方平均,后者设置最大的误差。默认值分别被设置为0.15和0.30。

ATOMNUM:筛选结果中晶胞内总原子数范围,0表示不限制。默认值1-300。

ATOMDENS:筛选结果中结构的原子密度的倒数的范围,负值表示不限制。默认-1,例如石墨为8.85,金刚石为5.71;

ALLOWUNSAT:是否允许结果中部分原子成键不饱和,即原子的配位数小于LINKMAX,会被ADDBONDLIST设置覆盖。0表示所有原子必须满配位,正数表示允许缺少的成键数目,负值表示忽略; 默认: 0.

BONDRINGINC:筛选结果中结构的成键必须包含的环数列表。默认为空。

BONDRINGEXC:筛选结果中结构的成键不能包含的环数列表。默认为空。

BONDRINGMIN:筛选结果中结构的成键允许的最小的环数。默认为0,表示不限制。

OUTDIMENSION:筛选结果中结构的实际维度。可选值:0,1,2,3或负值。负值表示忽略。默认值-1。

REPEATCHECK:通过结构对比去重复结构的方式,可选值0,1,2,3。其中0表示不去重;1表示只通过第一种方法,即对比非等价原子的方法去重;2表示只通过第二种方法,即点云匹配去重;3表示方法1和2的组合。默认值3。

ISALIGNVACU:是否在输出原胞时重新对齐真空层方向,使其回到默认的c方向,主要用于二维模式搜索,因为原胞操作可能导致晶格发生变化。默认值1。

4.5  素材结构参数

ISLOADFILE:是否读取素材结构的总开关,可以在用于RANDMOD=0和RANDMOD=3时使用。默认关闭。如果开启,会从指定目录中读取其中所有结构作为素材,搜索时会随机选择素材作为初始结构。

STRUCTLIBPATH:素材读取目录,默认值structs。

ISFIXLOADATOM:读取素材后是否锁定素材中原子的坐标,用于比如在框架搜索时锁定组成框架的原子。默认值:0。

RANDRANGE:对素材结构中的原子进行随机扰动的半径,负值表示不扰动。默认值:-1.0。

ISCALCLOADNET:0或1;是否预先对素材结构进行商图关联(计算成键),所用的成键半径并非是成键截断半径BONDLENMAX,而是按设定的对参考键长的容差范围:1+BONDLENERRMAX(相对键长)。用于得到素材中已有原子间的成键。默认值:1。

ISMARKCLUSTER:是否标记素材结构中根据成键网络确定的连通关系,以避免已连通的原子在后续再次成键,因为搜索流程中采用的成键截断半径很大,而框架搜索时其表面原子一般是未饱和的,会导致框架与自身有多余的成键。默认值:1。

PERTUBRANGE:是否在成键后对原子坐标进行随机扰动的范围,用于通过在保持已有成键关系的情况下通过随机化坐标令未饱和原子随机建立新的成键。默认值:0.8。

PERTRATE:用于配合PERTUBRANGE,指定随机扰动的非等价原子比例或数目,正值表示比例,负值表示个数,最少会有一个非等价原子被选中。默认值1.0,即全部扰动。

CMAT:变形矩阵,载入素材结构后对初始晶格进行变形操作,用于比如减少层间距使二维结构层间成键。默认值为单位矩阵.

RMAT:超胞矩阵,载入素材结构后重新定义晶格超胞,默认值为单位矩阵。

PMAT:扰动矩阵,扰动原子坐标时对扰动量左乘此矩阵,影响RANDRANGE、PERTUBRANGE以及内置的randpos命令。默认值:单位矩阵。

EPMAT:同PMAT,但针对不同元素单独设置,第一个参数为元素序号,后面跟9个矩阵元数字(列优先)。

TMAT:结构优化时对移动量左乘此矩阵,用于限制优化时原子的移动方向。默认值:单位矩阵。

ETMAT:同TMAT,但针对不同元素单独设置,第一个参数为元素序号,后面跟9个矩阵元数字(列优先)。

ELESUB:每次搜索开始前随机替换素材结构中的元素,有多个参数,格式为:ELESUB eid eidnew [rat [eid1 eid2 ...]],其中eid为待替换元素序号;eidnew为替换成的元素序号,或者0表示删除;rat为替换概率,且正值表示比例,负值表示个数,最少替换一个,默认值为1即全部替换;后面的eid1 eid2 ...为选择待替换原子时对其成键列表进行筛选,即只替换已成键原子中与列表中的元素完全匹配的原子。ELESUB可以针对不同元素eid设置多条。相同的eid会覆盖。

ISGENRANDGRID:是否在读取素材结构时,自动根据没有原子的区域生成坐标随机区域,默认值:0。只在使用GRIDRAND*启用了网格法产生随机坐标时有效。默认值:0。注意:即便没有开启此功能,搜索过程随机添加原子时,仍然会检查坐标避免与已有坐标过近。此参数用于提高随机效率。

GRIDRANDREPRAD:用于配合ISGENRANDGRID,指定每种元素的原子占据空间的半径。默认使用对应元素的共价半径。

4.6  结构优化参数

AN_STEP_METHOD:结构优化方法,可用值:0,1,2,默认值2。

0表示简化Verlet方法(见3.4.5);

1与方法0相同,但键角的优化不是移动键角两边的原子,而是键角顶点上的原子,速度会更快,但对1配位原子无效;

2表示梯度下降法。

RELAX_LEN:是否根据键长优化,默认值:1。

RELAX_ANG:是否根据键角优化,默认值:1。

AN_STEP_LEN:键长优化强度,在0到1之间,默认值:0.3。

AN_STEP_ANG:键角优化强度,在0到1之间,默认值:0.1。

AN_STEP_POS_DIFF:坐标优化收敛标准,默认值:0.00001。设置越大则速度越快,但有可能因不准确而错过某些结构.

AN_STEP_CELL:晶格优化步长,默认值:50.0,设置为0则表示不优化晶格。

AN_STEP_INTV:计算梯度时用的试探偏移ε,默认值:0.001。

AN_STEP_CELL_DIFF:晶格优化收敛标准,默认值:0.0001。

AN_STEP_MAX:最大优化步数,默认1500。适当的值可防止某些不合理结构占用过多的时间。

4.7  随机点参数

STARTRNDSEED:随机数种子,为一个整数。默认值:0,表示根据时间自动设置。影响所有涉及随机的过程,包括产生随机原子坐标、晶格、随机替换元素等等。如果设置了非零值,则每次会得到同样的搜索结果,用于测试。

GRIDRANDITV:网格法产生随机坐标时的步长,默认值:0.1。具体见章节3.4.3。

GRIDRANDPARA:设置网格法产生随机坐标时的随机区域形状,该参数可以设置多个,表示多个形状的组合。默认值为空,表示不限制区域。可用的形状和对应参数格式:

修饰词outof:表示求非(不出现在区域内),必须放在形状关键词前;

形状关键词anywhere:表示任何位置,用于配合outof使用,无需参数。

形状关键词range:坐标范围,6个参数,分别是范围的中心坐标,和正负随机幅度;

形状关键词sphere:球壳,5个参数:前3个是球心坐标,后2个分别是内径和外径;

形状关键词cylind:圆柱体壳,8个参数:前6个分别是圆柱中心坐标和半轴向量,后2个是内外径;

形状关键词layer:平面层,7个参数:前6个分别是体心坐标和层面朝向,最后是层厚。

注意:除了半径或层厚是直角坐标外,其余都是直接坐标。

举例:“GRIDRANDPARA outof sphere 0.5 0.5 0.5  0  5”表示球心在中间、半径为5的球体外部。

SPOINTPROB:设置随机到特殊点的总概率,负值表示不启用该功能,大于1则当作1。默认值为-1。该参数用于指定添加一些特殊坐标,随机坐标时会以指定概率从中间挑选,用于产生一些特定结构。具体见章节3.4.3。

SPOINTFILENAME:特殊点列表文件的路径。默认路径samples/sp.txt。文件格式为每行4个数字:前三个表示特殊点坐标;最后一个表示相对概率,可以大于1,程序内会统计所有点的该值之和后求得实际概率。

4.8  其他参数

RANDPOSTRYMAX:生成随机坐标时的最大尝试次数,默认值:20。产生随机坐标时会丢弃与已有坐标过近的坐标,以防止局部密度过大。该值为连续尝试次数上限,如果超过,则视作当前搜索步骤失败,会重新开始。该参数主要用于防止随机到不合理晶格(比如原子数过多,而晶格太小)导致无法随机到合适坐标或耗时过长。

LCMERGETOL:通过“融合”操作处理Wyckoff特殊位置时的融合半径,默认值0.8。详见章节3.4.2。

SYMPREC:结构对比功能(结构去重复用到)中,重新查找结构对称性时的精度。也影响内置命令findsym等相关功能。可用值:0-1,默认值0.3。

COORDSORTPREC:坐标排序精度,非等价原子排序坐标对比法去重复时,按坐标值排序原子时判断坐标是否相等的精度(单位埃)。默认值0.001。

COORDCMPPREC:坐标等价精度,非等价原子排序坐标对比法去重复时,判断两个坐标是否相等的精度(单位埃)。默认值0.2。

COORDMATCHPREC:坐标匹配精度,迭代近邻原子法去重复时,判断两个坐标是否匹配的精度(单位埃)。默认值0.3。

SETGIDPREC:通过setgid查找子群时的坐标精度(单位埃)。默认值0.001。

ISCMPSKIPBASE: 指定对比结构时是否跳过标记为基底的原子,用于在读取的素材结构为基底的随机搜索时提高速度。默认值0。