solver.hyb.in
Introduction
The solver.hyb.in file is an optional input file for iQIST software package. It is defined to initialize the Matsubara hybridization function $\Delta(i\omega_n)$. This file is usually not generated by hand, but directly rename the output file of iQIST software package solver.hyb.dat as solver.hyb.in. The non-interacting hybridization function will be used as an input file on the condition that the user doesn't provide the initial solver.hyb.in file. However, the system will read in the parameters from the solver.hyb.in file given by the user to replace the default values.
Format
The solver.hyb.in file contains norbs block. Each block is appended by two blank lines. The format of each block is as follows:
column 1: orbital index $i$, integer
column 2: Matsubara frequency point, $\omega_n$, double precision
column 3: Matsubara hybridization function, $\Re \Delta(i\omega_n)$, double precision
column 4: Matsubara hybridization function, $\Im \Delta(i\omega_n)$, double precision
column 5: error bar, $\Re [\delta \Delta(i\omega_n)]$, double precision
column 6: error bar, $\Im [\delta \Delta(i\omega_n)]$, double precision
In the solver.hyb.in file, we adopt the following orbital sequence: $1\uparrow$, $2\uparrow$, $3\uparrow$, $\cdots$, $1\downarrow$, $2\downarrow$, $3\downarrow$, $\cdots$ In other words, the spin up part is always before the spin down part.
Code
The corresponding Fortran code block for the reading of solver.hyb.in file is as follows:
if ( myid == master ) then ! only master node can do it
exists = .false.
! inquire about file's existence
inquire (file = 'solver.hyb.in', exist = exists)
! find input file: solver.hyb.in, read it
if ( exists .eqv. .true. ) then
hybf = czero ! reset it to zero
! read in hybridization function from solver.hyb.in
open(mytmp, file='solver.hyb.in', form='formatted', status='unknown')
do i=1,norbs
do j=1,mfreq
read(mytmp,*) k, rtmp, r1, i1, r2, i2
hybf(j,i,i) = dcmplx(r1,i1)
enddo ! over j={1,mfreq} loop
read(mytmp,*) ! skip two lines
read(mytmp,*)
enddo ! over i={1,norbs} loop
close(mytmp)
endif ! back if ( exists .eqv. .true. ) block
endif ! back if ( myid == master ) block
Generally, you should not edit the solver.hyb.in file by yourself.