diff --git a/python/build_sigma_from_txt.py b/python/build_sigma_from_txt.py index 387d810b..5ce91a55 100644 --- a/python/build_sigma_from_txt.py +++ b/python/build_sigma_from_txt.py @@ -1,3 +1,7 @@ +import numpy +import string +from pytriqs.gf.local import * + def read_fortran_file (filename): """ Returns a generator that yields all numbers in the Fortran file as float, one by one""" import os.path @@ -17,6 +21,7 @@ def constr_Sigma_real_axis(self, filename, hdf=True, hdf_dataset='SigmaReFreq',n if (len(ol)==1): # if blocks are of size one Fname = filename+'_'+bl+'.dat' else: + print 'TEST' Fname = filename+'_'+bl+'/'+str(ol[0])+'_'+str(ol[0])+'.dat' R = read_fortran_file(Fname) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 62fa3f94..0c2c2d11 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -7,3 +7,4 @@ triqs_add_test_hdf(hk_convert " -p 1.e-6" ) triqs_add_test_hdf(sumkdft_basic " -d 1.e-6" ) triqs_add_test_hdf(srvo3_Gloc " -d 1.e-6" ) triqs_add_test_hdf(srvo3_transp " -d 1.e-6" ) +triqs_add_test_hdf(sigma_from_file " -d 1.e-6" ) diff --git a/test/sigma_from_file.output.h5 b/test/sigma_from_file.output.h5 new file mode 100644 index 00000000..47dee8e4 Binary files /dev/null and b/test/sigma_from_file.output.h5 differ diff --git a/test/sigma_from_file.py b/test/sigma_from_file.py new file mode 100644 index 00000000..ca0a12f2 --- /dev/null +++ b/test/sigma_from_file.py @@ -0,0 +1,30 @@ +from pytriqs.archive import * +from pytriqs.gf.local import * +from pytriqs.applications.dft.sumk_dft_tools import * +from pytriqs.applications.dft.build_sigma_from_txt import * +import numpy as np + +# Read self energy from hdf file +ar = HDFArchive('SrVO3_Sigma.h5','r') +Sigma_hdf = ar['dmft_transp_input']['Sigma_w'] + +# Save self energy to txt files +for name, s in Sigma_hdf: + mesh = np.array([p for p in s.mesh]).reshape(-1,1).real + re_data = s.data.real.reshape((s.data.shape[0],-1)) + im_data = s.data.imag.reshape((s.data.shape[0],-1)) + + mesh_a_data = np.hstack((mesh,re_data,im_data)) + np.savetxt('Sigma_' + name + '.dat', mesh_a_data) + +# Read self energy from txt files +SK = SumkDFTTools(hdf_file = 'SrVO3.h5', use_dft_blocks = True) +Sigma_txt = constr_Sigma_real_axis(SK, 'Sigma', hdf=False, n_om=101, orb=0) +SK.put_Sigma(Sigma_imp = [Sigma_txt]) + +SK.hdf_file = 'sigma_from_file.output.h5' +SK.save(['Sigma_imp_w']) + + +if ((Sigma_txt - Sigma_hdf).real < 1e-6) & ((Sigma_txt - Sigma_hdf).imag < 1e-6): + print 'Conversion: HDF -> TRIQS -> TXT -> TRIQS successful!'