2727def make_iter_name (iter_index ):
2828 return "task_hti." + ("%04d" % iter_index )
2929
30- def parse_lj_sigma_epsilon (ret , sparam ):
30+ def parse_lj_sigma_epsilon (ret , sparam , hybrid = False ):
3131 element_num = sparam .get ("element_num" , 1 )
3232 sigma_key_index = filter (
3333 lambda t : t [0 ] <= t [1 ],
@@ -36,22 +36,28 @@ def parse_lj_sigma_epsilon(ret, sparam):
3636 activation = sparam ["activation" ]
3737 epsilon = sparam .get ("epsilon" , None )
3838 epsilon_0_0 = sparam .get ("epsilon_0_0" , None )
39+ if hybrid :
40+ pair_coeff_str = "lj/cut/soft "
41+ else :
42+ pair_coeff_str = ""
3943 if epsilon is not None :
4044 assert epsilon_0_0 is None , "epsilon and epsilon_0_0 cannot be set at the same time"
4145 ret += f"variable EPSILON equal { epsilon :f} \n "
4246 for i , j in sigma_key_index :
43- ret += "pair_coeff {} {} ${{EPSILON}} {:f} {:f}\n " .format (
47+ ret += "pair_coeff {} {} {p:s} ${{EPSILON}} {:f} {:f}\n " .format (
4448 i + 1 ,
4549 j + 1 ,
50+ pair_coeff_str ,
4651 sparam ["sigma_" + str (i ) + "_" + str (j )],
4752 activation ,
4853 )
4954 else :
5055 assert epsilon_0_0 is not None , "epsilon or epsilon_0_0 must be set"
5156 for i , j in sigma_key_index :
52- ret += "pair_coeff {} {} {:f} {:f} {:f}\n " .format (
57+ ret += "pair_coeff {} {} {:s}{: f} {:f} {:f}\n " .format (
5358 i + 1 ,
5459 j + 1 ,
60+ pair_coeff_str ,
5561 sparam ["epsilon_" + str (i ) + "_" + str (j )],
5662 sparam ["sigma_" + str (i ) + "_" + str (j )],
5763 activation ,
@@ -64,7 +70,7 @@ def _ff_soft_on(lamb, sparam):
6470 rcut = sparam ["rcut" ]
6571 ret = ""
6672 ret += f"pair_style lj/cut/soft { nn :f} { alpha_lj :f} { rcut :f} \n "
67- ret = parse_lj_sigma_epsilon (ret , sparam )
73+ ret = parse_lj_sigma_epsilon (ret , sparam , hybrid = False )
6874
6975 ret += "fix tot_pot all adapt/fep 0 pair lj/cut/soft epsilon * * v_LAMBDA scale yes\n "
7076 ret += "compute lj_pe all pair lj/cut/soft\n "
@@ -86,7 +92,7 @@ def _ff_deep_on(lamb, sparam, model, if_meam=False, meam_model=None):
8692 ret += f"pair_style hybrid/overlay deepmd { model } lj/cut/soft { nn :f} { alpha_lj :f} { rcut :f} \n "
8793 ret += "pair_coeff * * deepmd\n "
8894
89- ret = parse_lj_sigma_epsilon (ret , sparam )
95+ ret = parse_lj_sigma_epsilon (ret , sparam , hybrid = True )
9096
9197 if if_meam :
9298 ret += "fix tot_pot all adapt/fep 0 pair meam scale * * v_LAMBDA\n "
@@ -114,7 +120,7 @@ def _ff_soft_off(lamb, sparam, model, if_meam=False, meam_model=None):
114120 ret += f"pair_style hybrid/overlay deepmd { model } lj/cut/soft { nn :f} { alpha_lj :f} { rcut :f} \n "
115121 ret += "pair_coeff * * deepmd\n "
116122
117- ret = parse_lj_sigma_epsilon (ret , sparam )
123+ ret = parse_lj_sigma_epsilon (ret , sparam , hybrid = True )
118124
119125 ret += "fix tot_pot all adapt/fep 0 pair lj/cut/soft epsilon * * v_INV_LAMBDA scale yes\n "
120126 ret += "compute lj_pe all pair lj/cut/soft\n "
0 commit comments