Source code for EPWpy.BGW.write_BGW
import numpy as np
import os
#from os import *
[docs]
class WriteBGWFiles:
def __init__(self,write):
self.write=write
[docs]
def write_epsilon(self, epsilonin=None):
if epsilonin is None:
epsilonin = {}
with open('epsilon.inp', 'w') as f:
for key in self.BGW_epsilon.keys():
if(key not in epsilonin):
f.write(str(key)+' '+str(self.BGW_epsilon[key])+'\n')
for key in epsilonin.keys():
f.write(str(key)+' '+str(epsilonin[key])+'\n')
f.write('begin qpoints\n')
for j in range(len(self.GW_ks[:,0])):
for l in range(3):
f.write(' '+str(self.GW_ks[j,l])+' ')
if(j==0):
f.write('1.0'+' '+'1\n')
else:
f.write('1.0'+' '+'0\n')
f.write('end\n')
f.close()
[docs]
def write_sigma(self, sigmain=None):
if sigmain is None:
sigmain = {}
with open('sigma.inp', 'w') as f:
for key in self.BGW_sigma.keys():
if(key not in sigmain):
f.write(str(key)+' '+str(self.BGW_sigma[key])+'\n')
for key in sigmain.keys():
f.write(str(key)+' '+str(sigmain[key])+'\n')
f.write('begin kpoints\n')
for j in range(len(self.GW_k[:,0])):
for l in range(3):
f.write(' '+str(self.GW_k[j,l])+' ')
f.write('1.0'+'\n')
f.write('end\n')
f.close()
[docs]
def write_kernel(self, kernelin=None):
if kernelin is None:
kernelin = {}
with open('kernel.inp', 'w') as f:
for key in self.BGW_kernel.keys():
if(key not in kernelin):
f.write(str(key)+' '+str(self.BGW_kernel[key])+'\n')
for key in kernelin.keys():
f.write(str(key)+' '+str(kernelin[key])+'\n')
f.close()
[docs]
def write_absorption(self, absorptionin=None):
if absorptionin is None:
absorptionin = {}
with open('absorption.inp', 'w') as f:
for key in self.BGW_absorption.keys():
if(key not in absorptionin):
f.write(str(key)+' '+str(self.BGW_absorption[key])+'\n')
for key in absorptionin.keys():
f.write(str(key)+' '+str(absorptionin[key])+'\n')
f.close()
[docs]
def write_pw2bgw(self, pw2bgw=None):
if pw2bgw is None:
pw2bgw = {}
prefix=self.prefix.replace('\'','')
with open(str(prefix)+'.pw2bgw','w') as f:
f.write('&input_pw2bgw\n')
f.write(f'prefix = \'{prefix}\'')
f.write('\n')
for key in self.BGW_pw2bgw:
f.write(str(key)+' = '+str(self.BGW_pw2bgw[key]))
f.write('\n')
f.write('/')
f.write('\n')
f.close()
[docs]
def write_sig2wan(self, sig2wan=None):
if sig2wan is None:
sig2wan = {}
prefix=self.prefix.replace('\'','')
forbidden_keys=['spin','eqp']
with open('sig2wan.inp','w') as f:
f.write('sigma_hp.log\n')
for key in forbidden_keys:
f.write(str(self.BGW_sig2wan[key]))
f.write('\n')
f.write(str(self.prefix)+'.nnkp\n')
f.write(str(self.prefix)+'.eig\n')
for key in self.BGW_sig2wan:
if (key not in forbidden_keys):
f.write(str(self.BGW_sig2wan[key]))
f.write('\n')
f.close()