Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if 'user_incar' in jdata.keys():
user_incar_path = jdata['user_incar']
assert(os.path.exists(user_incar_path))
user_incar_path = os.path.abspath(user_incar_path)
fc = open(user_incar_path).read()
kspacing =float(re.findall((r"KSPACING(.+?)\n"),fc)[0].replace('=',''))
kgamma =('T' in re.findall((r"KGAMMA(.+?)\n"),fc)[0])
else :
fp_params = jdata['vasp_params']
ecut = fp_params['ecut']
ediff = fp_params['ediff']
npar = fp_params['npar']
kpar = fp_params['kpar']
kspacing = fp_params['kspacing']
kgamma = fp_params['kgamma']
fc = vasp.make_vasp_phonon_incar(ecut, ediff, npar, kpar, kspacing = None, kgamma = None)
with open(os.path.join(task_path, 'INCAR'), 'w') as fp :
fp.write(fc)
# gen potcar
with open(task_poscar,'r') as fp :
lines = fp.read().split('\n')
ele_list = lines[5].split()
potcar_map = jdata['potcar_map']
potcar_list = []
for ii in ele_list :
assert(os.path.exists(potcar_map[ii]))
potcar_list.append(potcar_map[ii])
with open(os.path.join(task_path,'POTCAR'), 'w') as outfile:
for fname in potcar_list:
with open(fname) as infile:
outfile.write(infile.read())
# gen kpoints
for (ii,jj) in zip(models, model_name) :
os.symlink(os.path.relpath(ii), jj)
share_models = [os.path.join(task_path,ii) for ii in model_name]
for ii in range(len(dss)) :
struct_path = os.path.join(task_path, 'struct-%s-%03d' % (copy_str,ii))
print('# generate %s' % (struct_path))
os.makedirs(struct_path, exist_ok=True)
os.chdir(struct_path)
for jj in ['conf.lmp', 'lammps.in'] + model_name :
if os.path.isfile(jj):
os.remove(jj)
# make conf
dss[ii].to('POSCAR', 'POSCAR')
lammps.cvt_lammps_conf('POSCAR', 'conf.lmp')
ptypes = vasp.get_poscar_types('POSCAR')
lammps.apply_type_map('conf.lmp', type_map, ptypes)
# link lammps.in
os.symlink(os.path.relpath(f_lammps_in), 'lammps.in')
# link models
for (ii,jj) in zip(share_models, model_name) :
os.symlink(os.path.relpath(ii), jj)
# save supercell
np.savetxt('supercell.out', supercell, fmt='%d')
os.chdir(cwd)
for ii in range(len(all_slabs)) :
slab = all_slabs[ii]
miller_str = "m%d.%d.%dm" % (slab.miller_index[0], slab.miller_index[1], slab.miller_index[2])
# make dir
struct_path = os.path.join(task_path, 'struct-%03d-%s' % (ii, miller_str))
os.makedirs(struct_path, exist_ok=True)
os.chdir(struct_path)
for jj in ['conf.lmp', 'lammps.in'] + model_name :
if os.path.isfile(jj):
os.remove(jj)
print("# %03d generate " % ii, struct_path, " \t %d atoms" % len(slab.sites))
# make conf
slab.to('POSCAR', 'POSCAR')
vasp.regulate_poscar('POSCAR', 'POSCAR')
lammps.cvt_lammps_conf('POSCAR', 'conf.lmp')
ptypes = vasp.get_poscar_types('POSCAR')
lammps.apply_type_map('conf.lmp', type_map, ptypes)
# record miller
np.savetxt('miller.out', slab.miller_index, fmt='%d')
# link lammps.in
os.symlink(os.path.relpath(f_lammps_in), 'lammps.in')
# link models
for (ii,jj) in zip(share_models, model_name) :
os.symlink(os.path.relpath(ii), jj)
cwd = os.getcwd()
share_models = [os.path.join(task_path,ii) for ii in model_name]
for ii in range(len(all_slabs)) :
slab = all_slabs[ii]
miller_str = "m%d.%d.%dm" % (slab.miller_index[0], slab.miller_index[1], slab.miller_index[2])
# make dir
struct_path = os.path.join(task_path, 'struct-%03d-%s' % (ii, miller_str))
os.makedirs(struct_path, exist_ok=True)
os.chdir(struct_path)
for jj in ['conf.lmp', 'lammps.in'] + model_name :
if os.path.isfile(jj):
os.remove(jj)
print("# %03d generate " % ii, struct_path, " \t %d atoms" % len(slab.sites))
# make conf
slab.to('POSCAR', 'POSCAR')
vasp.regulate_poscar('POSCAR', 'POSCAR')
lammps.cvt_lammps_conf('POSCAR', 'conf.lmp')
ptypes = vasp.get_poscar_types('POSCAR')
lammps.apply_type_map('conf.lmp', type_map, ptypes)
# record miller
np.savetxt('miller.out', slab.miller_index, fmt='%d')
# link lammps.in
os.symlink(os.path.relpath(f_lammps_in), 'lammps.in')
# link models
for (ii,jj) in zip(share_models, model_name) :
os.symlink(os.path.relpath(ii), jj)
cwd = os.getcwd()
equi_path = re.sub('confs', global_equi_name, conf_path)
equi_path = os.path.join(equi_path, vasp_str)
equi_contcar = os.path.join(equi_path, 'CONTCAR')
task_path = re.sub('confs', global_task_name, conf_path)
task_path = os.path.join(task_path, vasp_str)
os.makedirs(task_path, exist_ok=True)
cwd = os.getcwd()
os.chdir(task_path)
if os.path.isfile('POSCAR') :
os.remove('POSCAR')
os.symlink(os.path.relpath(equi_contcar), 'POSCAR')
os.chdir(cwd)
task_poscar = os.path.join(task_path, 'POSCAR')
# stress
equi_outcar = os.path.join(equi_path, 'OUTCAR')
stress = vasp.get_stress(equi_outcar)
np.savetxt(os.path.join(task_path, 'equi.stress.out'), stress)
# gen strcture
ss = Structure.from_file(task_poscar)
# gen defomations
norm_strains = [-norm_def, -0.5*norm_def, 0.5*norm_def, norm_def]
shear_strains = [-shear_def, -0.5*shear_def, 0.5*shear_def, shear_def]
dfm_ss = DeformedStructureSet(ss,
symmetry = False,
norm_strains = norm_strains,
shear_strains = shear_strains)
n_dfm = len(dfm_ss)
# gen incar
if 'relax_incar' in jdata.keys():
relax_incar_path = jdata['relax_incar']
assert(os.path.exists(relax_incar_path))
relax_incar_path = os.path.abspath(relax_incar_path)