Source code for EPWpy.BGW.write_QE_BGW
import numpy as np
import os
#from os import *
[docs]
class WriteQEBGWFiles:
def __init__(self,write):
self.write=write
[docs]
def write_scf_QE(self, control=None, system=None, electrons=None, ions=None, cell=None, name='scf'):
if control is None:
control = {}
if system is None:
system = {}
if electrons is None:
electrons = {}
if ions is None:
ions = {}
if cell is None:
cell = {}
#print(name)
with open(str(name)+'.in','w') as f:
f.write('&CONTROL\n')
for key in self.pw_control.keys():
if(key not in control.keys()):
f.write(str(key)+' = '+str(self.pw_control[key]))
f.write('\n')
for key in control.keys():
f.write(str(key)+' = '+str(control[key]))
f.write('\n')
f.write('/\n')
f.write('&SYSTEM\n')
for key in self.pw_system.keys():
if(key not in system.keys()):
if(self.pw_system[key] != None):
f.write(str(key)+' = '+str(self.pw_system[key]))
f.write('\n')
for key in system.keys():
f.write(str(key)+' = '+str(system[key]))
f.write('\n')
f.write('/\n')
f.write('&ELECTRONS\n')
for key in self.pw_electrons.keys():
if(key not in electrons.keys()):
f.write(str(key)+' = '+str(self.pw_electrons[key]))
f.write('\n')
for key in electrons.keys():
f.write(str(key)+' = '+str(electrons[key]))
f.write('\n')
f.write('/\n')
if(self.iondynamics==True):
f.write('&IONS\n')
for key in self.pw_ions.keys():
if(key not in ions.keys()):
f.write(str(key)+' = '+str(self.pw_ions[key]))
f.write('\n')
for key in ions.keys():
f.write(str(key)+' = '+str(ions[key]))
f.write('\n')
f.write('/\n')
if(self.celldynamics==True):
f.write('&CELL\n')
for key in self.pw_cell.keys():
if(key not in cell.keys()):
f.write(str(key)+' = '+str(self.pw_cell[key]))
f.write('\n')
for key in cell.keys():
f.write(str(key)+' = '+str(cell[key]))
f.write('\n')
f.write('/\n')
f.write('ATOMIC_SPECIES\n')
for i in range(len(self.pw_atomic_species['atomic_species'])):
f.write(self.pw_atomic_species['atomic_species'][i])
f.write(' ')
f.write(str(self.pw_atomic_species['mass'][i]))
f.write(' ')
f.write(self.pw_atomic_species['pseudo'][i])
f.write(' ')
f.write('\n')
f.write('ATOMIC_POSITIONS ')
f.write(self.pw_atomic_positions['atomic_position_type'])
f.write('\n')
for i in range(len(self.pw_atomic_positions['atoms'])):#self.default_pw_atomic_positions['num']):
f.write(self.pw_atomic_positions['atoms'][i])
f.write(' ')
for j in range(3):
f.write(str((self.pw_atomic_positions['atomic_pos'][i,j])))
f.write(' ')
f.write('\n')
f.write('\n')
f.write('K_POINTS ')
f.write(self.pw_kpoints['kpoints_type'])
if(self.pw_kpoints['kpoints_type']!='automatic'):
f.write('\n')
f.write(' ')
f.write(str(len(self.pw_kpoints['kpoints'])))
f.write('\n')
for i in range(len(self.pw_kpoints['kpoints'])):
for j in range(len(np.array(self.pw_kpoints['kpoints'])[i,:])):
f.write(str(np.array(self.pw_kpoints['kpoints'])[i,j]))
f.write(' ')
if(self.pw_kpoints['kpoints_type']=='automatic'):
for j in range(3):
f.write(str(np.array(self.pw_kpoints['shift'])[i,j]))
f.write(' ')
f.write('\n')
f.write('\n')
if(int(self.pw_system['ibrav'])==0):
f.write('CELL_PARAMETERS ')
f.write(self.pw_cell_parameters['cell_type']+'\n')
for i in range(len(np.array(self.pw_cell_parameters['lattice_vector'])[:,0])):
for j in range(len(np.array(self.pw_cell_parameters['lattice_vector'])[0,:])):
f.write(str(np.array(self.pw_cell_parameters['lattice_vector'])[i,j])+ ' ')
f.write('\n')
f.close()