![]() |
(git:b77b4be)
|
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. | |
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. | |
subroutine, public | current_build_chi (current_env, qs_env, ib) |
... | |
Variables | |
real(dp), dimension(3, 3, 3), parameter | levi_civita = RESHAPE((/ 0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, -1.0_dp, 0.0_dp, 1.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, 1.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, -1.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, -1.0_dp, 0.0_dp, 1.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp/), (/3, 3, 3/)) |
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)
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.
current_env | ... |
qs_env | ... |
iB | ... |
Definition at line 179 of file qs_linres_current.F.
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.
mat_d0 | ... |
mat_jp | ... |
mat_jp_rii | ... |
mat_jp_riii | ... |
iB | ... |
idir | ... |
current_rs | ... |
current_gs | ... |
qs_env | ... |
current_env | ... |
soft_valid | ... |
retain_rsgrid | ... |
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.
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 | ||
) |
...
current_env | ... |
qs_env | ... |
iB | ... |
Definition at line 2235 of file qs_linres_current.F.
real(dp), dimension(3, 3, 3), parameter qs_linres_current::levi_civita = RESHAPE((/ 0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, -1.0_dp, 0.0_dp, 1.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, 1.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, -1.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, -1.0_dp, 0.0_dp, 1.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp/), (/3, 3, 3/)) |
Definition at line 147 of file qs_linres_current.F.