Calculates the LL' expansion of a magnetic field. There are two magnetic field, which can be added: a homogeneous magnetic field read in from bfield.dat and a constraining field, which compensates the magnetic torque. @note Note The magnetic field is added in the following form: $ H = H_0 - \sigma \cdot \vec{B} $ The input magnetic field is read in from bfield.dat. It is homogeneous within each cell. @note Note Runs only with the new solver and either spin-orbit coupling or noncollinear magnetism.
!! calc LL' expansion of the shapefunction !call calc_thetallmat(thetansll, lmax, imt1, iend, irmdnew, thetasnew, ifunm, icleb, cleb) ! !if(myrank==master) then ! write(,'(" thetansll = ")') ! do ilm1=1,lmmax ! do ilm2=1,lmmax ! if(sum(abs(thetansll(ilm1,ilm2,:)))>1e-8 .or. sum(abs(thetansll_new(ilm1,ilm2,:)))>1e-8) then ! write(,'(2i4,1000es16.8)') ilm1, ilm2, thetansll(ilm1,ilm2,:) ! write(*,'(2i4,1000es16.8)') ilm1, ilm2, thetansll_new(ilm1,ilm2,:) ! end if ! end do ! end do !end if
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(type_bfield), | intent(in) | :: | bfield | |||
integer, | intent(in) | :: | iatom | |||
integer, | intent(in) | :: | lmax | |||
integer, | intent(in) | :: | nspin | |||
integer, | intent(in) | :: | irmdnew | |||
integer, | intent(in) | :: | imt1 | |||
integer, | intent(in) | :: | iend | |||
integer, | intent(in) | :: | ncheb | |||
real(kind=dp), | intent(in) | :: | theta | |||
real(kind=dp), | intent(in) | :: | phi | |||
integer, | intent(in), | dimension (1:(2*lmax+1)**2) | :: | ifunm | ||
integer, | intent(in), | dimension (ncleb, 4) | :: | icleb |
Pointer array |
|
real(kind=dp), | intent(in), | dimension (ncleb) | :: | cleb |
GAUNT coefficients (GAUNT) ! CHECK THE DIMENSION AND HOW IT IS USED!!! |
|
real(kind=dp), | intent(in), | dimension (irmdnew, nfund) | :: | thetasnew | ||
character(len=*), | intent(in) | :: | mode |
either '1' or 'transpose', depending whether SOC potential is constructed for right or left solution |
||
complex(kind=dp), | intent(in), | dimension(lmmaxd, lmmaxd, irmdnew) | :: | vnspll0 |
input potential in (l,m,s) basis |
|
complex(kind=dp), | intent(out), | dimension(lmmaxd, lmmaxd, irmdnew) | :: | vnspll1 |
input potential in (l,m,s) basis |
|
real(kind=dp), | intent(in), | dimension(1:(lmax+1)**2,1:(lmax+1)**2,1:irmdnew) | :: | thetansll |