PAOFLOW icon indicating copy to clipboard operation
PAOFLOW copied to clipboard

On-site Zeeman field

Open bfocassio opened this issue 4 years ago • 0 comments

What would be the correct way to implement an on-site exchange field in PAOFLOW?

To add this on-site Zeeman field, i did:

  if arrays['Bfield'].any() != 0.0:
    field = arrays['Bfield'][0] * arrays['Sj'][0] + arrays['Bfield'][1] * arrays['Sj'][1] + arrays['Bfield'][2] * arrays['Sj'][2]
    for n in range(nawf):
      for m in range(nawf):
        arrays['HRs'][n,m,0,:] -= field[n,m]

Testing on a QSH system, the bands (bulk and ribbon) and SHC seems to respond, but the calculation of z2, either from PAOFLOW, or using z2pack, still yields 1.

The main.py file is:

from PAOFLOW import PAOFLOW

def main():

  paoflow = PAOFLOW.PAOFLOW(savedir='../bi.save', inputfile='inputfile.xml',npool=1,verbose=True)
  paoflow.projectability(pthr=.9)
  paoflow.pao_hamiltonian()
  paoflow.spin_operator(sh=[0,1,2,0,1,2,0,1,2,0,1,2,0,0,0,0],nl=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1])
  paoflow.add_external_fields(Bfield=[0.5,0.,0.])
  paoflow.bands(ibrav=8, nk=400, band_path='X-G-M-X-G-Y-M-G', high_sym_points={'M': [.5,.5,.0], 'X': [.5,.0,.0], 'Y': [.0,.5,.0], 'G': [0.,0.,0.]})
  paoflow.z2_pack('z2pack_hamiltonian.dat')
  paoflow.topology(Berry=True, eff_mass=True, spin_Hall=True, spol=2, ipol=0, jpol=1)
  paoflow.interpolated_hamiltonian(nfft1=20,nfft2=20,nfft3=1)
  paoflow.pao_eigh()
  paoflow.gradient_and_momenta()
  paoflow.adaptive_smearing()
  #paoflow.dos(do_pdos=False, emin=-4., emax=4.)
  paoflow.spin_Hall(emin=-4., emax=4., s_tensor=[[0,1,2]])
  paoflow.finish_execution()

if __name__== '__main__':
  main()

bfocassio avatar May 06 '20 20:05 bfocassio