(git:3add494)
qs_linres_current Module Reference

given the response wavefunctions obtained by the application of the (rxp), p, and ((dk-dl)xp) operators, here the current density vector (jx, jy, jz) is computed for the 3 directions of the magnetic field (Bx, By, Bz) More...

Functions/Subroutines

subroutine, public current_build_current (current_env, qs_env, iB)
 First calculate the density matrixes, for each component of the current they are 3 because of the r dependent terms Next it collocates on the grid to have J(r) In the GAPW case one need to collocate on the PW grid only the soft part while the rest goes on Lebedev grids The contributions to the shift and to the susceptibility will be calculated separately and added only at the end The calculation of the shift tensor is performed on the position of the atoms and on other selected points in real space summing up the contributions from the PW grid current density and the local densities Spline interpolation is used. More...
 
subroutine, public calculate_jrho_resp (mat_d0, mat_jp, mat_jp_rii, mat_jp_riii, iB, idir, current_rs, current_gs, qs_env, current_env, soft_valid, retain_rsgrid)
 Calculation of the idir component of the response current density in the presence of a constant magnetic field in direction iB the current density is collocated on the pw grid in real space. More...
 
subroutine, public current_build_chi (current_env, qs_env, iB)
 ... More...
 

Detailed Description

given the response wavefunctions obtained by the application of the (rxp), p, and ((dk-dl)xp) operators, here the current density vector (jx, jy, jz) is computed for the 3 directions of the magnetic field (Bx, By, Bz)

History
created 02-2006 [MI]
Author
MI

Function/Subroutine Documentation

◆ current_build_current()

subroutine, public qs_linres_current::current_build_current ( type(current_env_type)  current_env,
type(qs_environment_type), pointer  qs_env,
integer, intent(in)  iB 
)

First calculate the density matrixes, for each component of the current they are 3 because of the r dependent terms Next it collocates on the grid to have J(r) In the GAPW case one need to collocate on the PW grid only the soft part while the rest goes on Lebedev grids The contributions to the shift and to the susceptibility will be calculated separately and added only at the end The calculation of the shift tensor is performed on the position of the atoms and on other selected points in real space summing up the contributions from the PW grid current density and the local densities Spline interpolation is used.

Parameters
current_env...
qs_env...
iB...
Author
MI
Note
The susceptibility is needed to compute the G=0 term of the shift in reciprocal space. \chi_{ij} = \int (r x Jj)_i (where Jj id the current density generated by the field in direction j) To calculate the susceptibility on the PW grids it is necessary to apply the position operator yet another time. This cannot be done on directly on the full J(r) because it is not localized Therefore it is done state by state (see linres_nmr_shift)

Definition at line 179 of file qs_linres_current.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ calculate_jrho_resp()

subroutine, public qs_linres_current::calculate_jrho_resp ( type(dbcsr_type), pointer  mat_d0,
type(dbcsr_type), pointer  mat_jp,
type(dbcsr_type), pointer  mat_jp_rii,
type(dbcsr_type), pointer  mat_jp_riii,
integer, intent(in)  iB,
integer, intent(in)  idir,
type(pw_r3d_rs_type), intent(inout)  current_rs,
type(pw_c1d_gs_type), intent(inout)  current_gs,
type(qs_environment_type), pointer  qs_env,
type(current_env_type)  current_env,
logical, intent(in), optional  soft_valid,
logical, intent(in), optional  retain_rsgrid 
)

Calculation of the idir component of the response current density in the presence of a constant magnetic field in direction iB the current density is collocated on the pw grid in real space.

Parameters
mat_d0...
mat_jp...
mat_jp_rii...
mat_jp_riii...
iB...
idir...
current_rs...
current_gs...
qs_env...
current_env...
soft_valid...
retain_rsgrid...
Note
The collocate is done in three parts, one for each density matrix In all cases the density matrices and therefore the collocation are not symmetric, that means that all the pairs (ab and ba) have to be considered separately

mat_jp_{\mu\nu} is multiplied by f_{\mu\nu} = \phi_{\mu} (d\phi_{\nu}/dr)_{idir} - (d\phi_{\mu}/dr)_{idir} \phi_{\nu}

mat_jp_rii_{\mu\nu} is multiplied by f_{\mu\nu} = \phi_{\mu} (r - R_{\nu})_{iiiB} (d\phi_{\nu}/dr)_{idir} - (d\phi_{\mu}/dr)_{idir} (r - R_{\nu})_{iiiB} \phi_{\nu} + \phi_{\mu} \phi_{\nu} (last term only if iiiB=idir)

mat_jp_riii_{\mu\nu} is multiplied by (be careful: change in sign with respect to previous) f_{\mu\nu} = -\phi_{\mu} (r - R_{\nu})_{iiB} (d\phi_{\nu}/dr)_{idir} + (d\phi_{\mu}/dr)_{idir} (r - R_{\nu})_{iiB} \phi_{\nu} - \phi_{\mu} \phi_{\nu} (last term only if iiB=idir)

All the terms sum up to the same grid

Definition at line 576 of file qs_linres_current.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ current_build_chi()

subroutine, public qs_linres_current::current_build_chi ( type(current_env_type)  current_env,
type(qs_environment_type), pointer  qs_env,
integer, intent(in)  iB 
)

...

Parameters
current_env...
qs_env...
iB...

Definition at line 2247 of file qs_linres_current.F.

Here is the caller graph for this function: