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


Note

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.