(git:7fc1fe1)
Loading...
Searching...
No Matches
qs_moments Module Reference

Calculates the moment integrals <a|r^m|b> and <a|r x d/dr|b>. More...

Functions/Subroutines

subroutine, public build_local_moment_matrix (qs_env, moments, nmoments, ref_point, ref_points, basis_type, all_images, minimum_image, neighbor_image, first_component)
 ...
subroutine, public get_multipoles_ao (qs_env, n_moments, matrix_multipole, rpoint)
 The AO multipoles M^k_µν = <φ_µ|(r - r_0)^k|φ_ν> of every order up to n_moments, on the block pattern of the overlap, about r_0, the centre of atomic charges; k = x, y, z for order 1, then xx, xy, xz, yy, yz, zz for order 2.
subroutine, public build_local_moments_der_matrix (qs_env, moments_der, nmoments_der, nmoments, ref_point, moments, basis_type, minimum_image, ordered, lambda, deltar, neighbor_image)
 Calculate right-hand sided derivatives of multipole moments, e. g. < a | xy d/dz | b > Optionally stores the multipole moments themselves for free. Note that the multipole moments are symmetric while their derivatives are anti-symmetric Only first derivatives are performed, e. g. x d/dy.
subroutine, public build_local_magmom_matrix (qs_env, magmom, nmoments, ref_point, ref_points, basis_type)
 ...
subroutine, public build_berry_moment_matrix (qs_env, cosmat, sinmat, kvec, sab_orb_external, basis_type)
 ...
subroutine, public build_berry_kpoint_matrix (qs_env, cosmat, sinmat, kvec, basis_type, ordered, ordered_kpoints)
 ...
subroutine, public qs_moment_berry_phase (qs_env, magnetic, nmoments, reference, ref_point, unit_number, unit_str)
 ...
subroutine, public op_orbbas (cosmat, sinmat, mos, op_fm_set, opvec)
 ...
subroutine, public op_orbbas_rtp (cosmat, sinmat, mos, op_fm_set, mos_new)
 ...
subroutine, public qs_moment_locop (qs_env, magnetic, nmoments, reference, ref_point, unit_number, vel_reprs, com_nl, unit_str)
 ...
subroutine, public set_label (label, ix, iy, iz)
 ...
subroutine, public print_moments (unit_number, nmom, rmom, rlab, rcc, cell, periodic, mmom, rmom_vel, unit_str)
 ...
subroutine, public print_moments_nl (unit_number, nmom, rlab, mmom, rmom_vel)
 ...
subroutine, public calculate_commutator_nl_terms (qs_env, nlcom_rv, nlcom_rxrv, nlcom_rrv, nlcom_rvr, nlcom_rrv_vrr, ref_point)
 Calculate the expectation value of operators related to non-local potential: [r, Vnl], noted rv r x [r,Vnl], noted rxrv [rr,Vnl], noted rrv r x Vnl x r, noted rvr r x r x Vnl + Vnl x r x r, noted rrv_vrr Note that the 3 first operator are commutator while the 2 last are not. For reading clarity the same notation is used for all 5 operators.
subroutine, public build_local_moment_matrix_rs_img (qs_env, moments_rs_img, rcc)
 Calculate local moment matrix for a periodic system for all image cells.
subroutine, public qs_moment_kpoints_deep (qs_env, xkp, dipole, rcc, berry_c, momentum, energy, do_parallel)
 Calculate interband k-point dipole moments d_nm(k) = i<u_n|∇_k|u_m>, Berry curvature, momentum and band energies for a periodic system for k-points.
subroutine, public qs_moment_kpoints_deep_soc (qs_env, xkp, dipole, rcc, berry_c, momentum, energy, do_parallel)
 Calculate interband k-point dipole moments d_nm(k) = i<u_n|∇_k|u_m>, Berry curvature, momentum and band energies for a periodic system for k-points with spin-orbit coupling (SOC) in the 2*nao spinor basis, via the length-gauge sum rule. SOC enters both the Hamiltonian and the velocity operator (the k-derivative of V^SOC is included). Mirrors qs_moment_kpoints_deep but promoted to spinor space; the two spin channels are merged into 2*nao spinor bands (returned with spin dimension 1).
subroutine, public qs_moment_kpoints_scf_mos (qs_env, dipole, rcc, nmo_spin_out)
 Calculates interband k-point dipoles in the existing SCF MO basis.
subroutine, public qs_moment_kpoints (qs_env, nmoments, reference, ref_point, max_nmo, unit_number, do_soc, unit_str, dip_file, bc_file)
 Calculate and print dipole moment elements d_nm(k) = i<u_n|∇_k|u_m> for k-point calculations.

Detailed Description

Calculates the moment integrals <a|r^m|b> and <a|r x d/dr|b>.

History
added angular moments (JGH 11.2012)
Author
JGH (20.07.2006)

Function/Subroutine Documentation

◆ build_local_moment_matrix()

subroutine, public qs_moments::build_local_moment_matrix ( type(qs_environment_type), pointer qs_env,
type(dbcsr_p_type), dimension(:), pointer moments,
integer, intent(in) nmoments,
real(kind=dp), dimension(:), intent(in), optional ref_point,
real(kind=dp), dimension(:, :), intent(in), optional ref_points,
character(len=*), optional basis_type,
logical, optional all_images,
logical, optional minimum_image,
logical, optional neighbor_image,
integer, optional first_component )

...

Parameters
qs_env...
moments...
nmoments...
ref_point...
ref_points...
basis_type...
all_imagesaccumulate all neighbor images belonging to one atom pair
minimum_imageapply the half-cell image filter
neighbor_imagepreserve the neighbor-list image geometry
first_componentfirst Cartesian moment component to write

Definition at line 176 of file qs_moments.F.

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

◆ get_multipoles_ao()

subroutine, public qs_moments::get_multipoles_ao ( type(qs_environment_type), pointer qs_env,
integer, intent(in) n_moments,
type(dbcsr_p_type), dimension(:), pointer matrix_multipole,
real(kind=dp), dimension(3), intent(out) rpoint )

The AO multipoles M^k_µν = <φ_µ|(r - r_0)^k|φ_ν> of every order up to n_moments, on the block pattern of the overlap, about r_0, the centre of atomic charges; k = x, y, z for order 1, then xx, xy, xz, yy, yz, zz for order 2.

Parameters
qs_envsource of the basis, the geometry and the overlap's block pattern
n_momentshighest order, 1 for dipoles, 2 adds quadrupoles
matrix_multipoleM^k_µν, one entry per component k, allocated here; the caller releases it
rpointr_0

Definition at line 441 of file qs_moments.F.

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

◆ build_local_moments_der_matrix()

subroutine, public qs_moments::build_local_moments_der_matrix ( type(qs_environment_type), pointer qs_env,
type(dbcsr_p_type), dimension(:, :), intent(inout), pointer moments_der,
integer, intent(in) nmoments_der,
integer, intent(in) nmoments,
real(kind=dp), dimension(:), intent(in), optional ref_point,
type(dbcsr_p_type), dimension(:), intent(inout), optional, pointer moments,
character(len=*), optional basis_type,
logical, optional minimum_image,
logical, optional ordered,
integer, optional lambda,
real(kind=dp), dimension(:, :), optional, pointer deltar,
logical, optional neighbor_image )

Calculate right-hand sided derivatives of multipole moments, e. g. < a | xy d/dz | b > Optionally stores the multipole moments themselves for free. Note that the multipole moments are symmetric while their derivatives are anti-symmetric Only first derivatives are performed, e. g. x d/dy.

Parameters
qs_env...
moments_derwill contain the derivatives of the multipole moments
nmoments_derorder of the moments with derivatives
nmomentsorder of the multipole moments (no derivatives, same output as build_local_moment_matrix, needs moments as arguments to store results)
ref_point...
momentscontains the multipole moments, optionally for free, up to order nmoments
basis_typebasis set used for the integral evaluation
minimum_imageapply the half-cell image filter
ordereduse ordered neighbor blocks and, for ordinary derivatives, the full neighbor list
lambdaoptional atom selector for the right-hand derivative
deltaRoptional weights for left and right nuclear-coordinate derivatives
neighbor_imageuse the neighbor-list image for coordinate construction

Definition at line 499 of file qs_moments.F.

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

◆ build_local_magmom_matrix()

subroutine, public qs_moments::build_local_magmom_matrix ( type(qs_environment_type), pointer qs_env,
type(dbcsr_p_type), dimension(:), pointer magmom,
integer, intent(in) nmoments,
real(kind=dp), dimension(:), intent(in), optional ref_point,
real(kind=dp), dimension(:, :), intent(in), optional ref_points,
character(len=*), optional basis_type )

...

Parameters
qs_env...
magmom...
nmoments...
ref_point...
ref_points...
basis_type...

Definition at line 907 of file qs_moments.F.

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

◆ build_berry_moment_matrix()

subroutine, public qs_moments::build_berry_moment_matrix ( type(qs_environment_type), pointer qs_env,
type(dbcsr_type), pointer cosmat,
type(dbcsr_type), pointer sinmat,
real(kind=dp), dimension(3), intent(in) kvec,
type(neighbor_list_set_p_type), dimension(:), optional, pointer sab_orb_external,
character(len=*), optional basis_type )

...

Parameters
qs_env...
cosmat...
sinmat...
kvec...
sab_orb_external...
basis_type...

Definition at line 1113 of file qs_moments.F.

Here is the caller graph for this function:

◆ build_berry_kpoint_matrix()

subroutine, public qs_moments::build_berry_kpoint_matrix ( type(qs_environment_type), pointer qs_env,
type(dbcsr_p_type), dimension(:, :), pointer cosmat,
type(dbcsr_p_type), dimension(:, :), pointer sinmat,
real(kind=dp), dimension(3), intent(in) kvec,
character(len=*), optional basis_type,
logical, intent(in), optional ordered,
type(kpoint_type), optional, pointer ordered_kpoints )

...

Parameters
qs_env...
cosmat...
sinmat...
kvec...
basis_type...
ordereduse all ordered atom pairs for a non-Hermitian cross-k overlap
ordered_kpointsimage-cell mapping for the ordered neighbour list

Definition at line 1151 of file qs_moments.F.

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

◆ qs_moment_berry_phase()

subroutine, public qs_moments::qs_moment_berry_phase ( type(qs_environment_type), pointer qs_env,
logical, intent(in) magnetic,
integer, intent(in) nmoments,
integer, intent(in) reference,
real(dp), dimension(:), pointer ref_point,
integer, intent(in) unit_number,
character(len=*), intent(in), optional unit_str )

...

Parameters
qs_env...
magnetic...
nmoments...
reference...
ref_point...
unit_number...
unit_strunit of the printed moments (dipole unit of cp_units), default debye

Definition at line 1380 of file qs_moments.F.

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

◆ op_orbbas()

subroutine, public qs_moments::op_orbbas ( type(dbcsr_type), pointer cosmat,
type(dbcsr_type), pointer sinmat,
type(mo_set_type), dimension(:), intent(in) mos,
type(cp_fm_type), dimension(:, :), intent(in) op_fm_set,
type(cp_fm_type), dimension(:), intent(inout) opvec )

...

Parameters
cosmat...
sinmat...
mos...
op_fm_set...
opvec...

Definition at line 1835 of file qs_moments.F.

Here is the caller graph for this function:

◆ op_orbbas_rtp()

subroutine, public qs_moments::op_orbbas_rtp ( type(dbcsr_type), pointer cosmat,
type(dbcsr_type), pointer sinmat,
type(mo_set_type), dimension(:), intent(in) mos,
type(cp_fm_type), dimension(:, :), intent(in) op_fm_set,
type(cp_fm_type), dimension(:), pointer mos_new )

...

Parameters
cosmat...
sinmat...
mos...
op_fm_set...
mos_new...

Definition at line 1865 of file qs_moments.F.

Here is the caller graph for this function:

◆ qs_moment_locop()

subroutine, public qs_moments::qs_moment_locop ( type(qs_environment_type), pointer qs_env,
logical, intent(in) magnetic,
integer, intent(in) nmoments,
integer, intent(in) reference,
real(dp), dimension(:), intent(in), pointer ref_point,
integer, intent(in) unit_number,
logical, intent(in), optional vel_reprs,
logical, intent(in), optional com_nl,
character(len=*), intent(in), optional unit_str )

...

Parameters
qs_env...
magnetic...
nmoments...
reference...
ref_point...
unit_number...
vel_reprs...
com_nl...
unit_strunit of the printed moments (dipole unit of cp_units), default debye

Definition at line 1958 of file qs_moments.F.

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

◆ set_label()

subroutine, public qs_moments::set_label ( character(len=*), intent(out) label,
integer, intent(in) ix,
integer, intent(in) iy,
integer, intent(in) iz )

...

Parameters
label...
ix...
iy...
iz...

Definition at line 2372 of file qs_moments.F.

Here is the caller graph for this function:

◆ print_moments()

subroutine, public qs_moments::print_moments ( integer, intent(in) unit_number,
integer, intent(in) nmom,
real(dp), dimension(:, :), intent(in) rmom,
character(len=8), dimension(:) rlab,
real(dp), dimension(3), intent(in) rcc,
type(cell_type), pointer cell,
logical periodic,
real(dp), dimension(:), intent(in), optional mmom,
real(dp), dimension(:), intent(in), optional rmom_vel,
character(len=*), intent(in), optional unit_str )

...

Parameters
unit_number...
nmom...
rmom...
rlab...
rcc...
cell...
periodic...
mmom...
rmom_vel...
unit_strunit of the printed electric moments (a dipole unit of cp_units), default debye

Definition at line 2404 of file qs_moments.F.

Here is the caller graph for this function:

◆ print_moments_nl()

subroutine, public qs_moments::print_moments_nl ( integer, intent(in) unit_number,
integer, intent(in) nmom,
character(len=8), dimension(:) rlab,
real(dp), dimension(:), intent(in), optional mmom,
real(dp), dimension(:), intent(in), optional rmom_vel )

...

Parameters
unit_number...
nmom...
rlab...
mmom...
rmom_vel...

Definition at line 2585 of file qs_moments.F.

Here is the caller graph for this function:

◆ calculate_commutator_nl_terms()

subroutine, public qs_moments::calculate_commutator_nl_terms ( type(qs_environment_type), pointer qs_env,
real(dp), dimension(:), optional, allocatable nlcom_rv,
real(dp), dimension(:), optional, allocatable nlcom_rxrv,
real(dp), dimension(:), optional, allocatable nlcom_rrv,
real(dp), dimension(:), optional, allocatable nlcom_rvr,
real(dp), dimension(:), optional, allocatable nlcom_rrv_vrr,
real(dp), dimension(3) ref_point )

Calculate the expectation value of operators related to non-local potential: [r, Vnl], noted rv r x [r,Vnl], noted rxrv [rr,Vnl], noted rrv r x Vnl x r, noted rvr r x r x Vnl + Vnl x r x r, noted rrv_vrr Note that the 3 first operator are commutator while the 2 last are not. For reading clarity the same notation is used for all 5 operators.

Parameters
qs_env...
nlcom_rv...
nlcom_rxrv...
nlcom_rrv...
nlcom_rvr...
nlcom_rrv_vrr...
ref_point...

Definition at line 2652 of file qs_moments.F.

Here is the caller graph for this function:

◆ build_local_moment_matrix_rs_img()

subroutine, public qs_moments::build_local_moment_matrix_rs_img ( type(qs_environment_type), pointer qs_env,
type(dbcsr_p_type), dimension(:, :), pointer moments_rs_img,
real(kind=dp), dimension(3), optional rcc )

Calculate local moment matrix for a periodic system for all image cells.

Parameters
qs_env...
moments_rs_img...
rcc...
Author
Shridhar Shanbhag

Definition at line 3029 of file qs_moments.F.

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

◆ qs_moment_kpoints_deep()

subroutine, public qs_moments::qs_moment_kpoints_deep ( type(qs_environment_type), pointer qs_env,
real(kind=dp), dimension(:, :), allocatable xkp,
complex(kind=dp), dimension(:, :, :, :, :), optional, allocatable dipole,
real(kind=dp), dimension(3), optional rcc,
real(kind=dp), dimension(:, :, :, :), optional, allocatable berry_c,
complex(kind=dp), dimension(:, :, :, :, :), optional, allocatable momentum,
real(kind=dp), dimension(:, :, :), optional, allocatable energy,
logical, optional do_parallel )

Calculate interband k-point dipole moments d_nm(k) = i<u_n|∇_k|u_m>, Berry curvature, momentum and band energies for a periodic system for k-points.

Parameters
qs_env...
xkplist of kpoints
dipole...
rcccoordinates about which to calculate the dipole
berry_cberry curvature calculated using Ω^γ_n = -Σ_{m≠n} 2*Im[d^α_nm d^β_mn]
momentum...
energy...
do_paralleloption to distribute the result in dipole across different MPI ranks
Author
Shridhar Shanbhag

Definition at line 3271 of file qs_moments.F.

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

◆ qs_moment_kpoints_deep_soc()

subroutine, public qs_moments::qs_moment_kpoints_deep_soc ( type(qs_environment_type), pointer qs_env,
real(kind=dp), dimension(:, :), allocatable xkp,
complex(kind=dp), dimension(:, :, :, :, :), optional, allocatable dipole,
real(kind=dp), dimension(3), optional rcc,
real(kind=dp), dimension(:, :, :, :), optional, allocatable berry_c,
complex(kind=dp), dimension(:, :, :, :, :), optional, allocatable momentum,
real(kind=dp), dimension(:, :, :), optional, allocatable energy,
logical, optional do_parallel )

Calculate interband k-point dipole moments d_nm(k) = i<u_n|∇_k|u_m>, Berry curvature, momentum and band energies for a periodic system for k-points with spin-orbit coupling (SOC) in the 2*nao spinor basis, via the length-gauge sum rule. SOC enters both the Hamiltonian and the velocity operator (the k-derivative of V^SOC is included). Mirrors qs_moment_kpoints_deep but promoted to spinor space; the two spin channels are merged into 2*nao spinor bands (returned with spin dimension 1).

Parameters
qs_env...
xkpk-points at which the dipoles are evaluated
dipoleoptional output dipoles, dim (1, k copy, 3, 2*nao, 2*nao)
rccreference point for the local dipole operator (interband dipoles are origin-independent)
berry_coptional SOC Berry curvature, dim (1, k copy, 3, 2*nao)
momentumoptional SOC momentum matrix elements p_nm, dim (1, k copy, 3, 2*nao, 2*nao)
energyoptional spinor band energies, dim (1, k copy, 2*nao)
do_paralleldistribute k-points over MPI ranks
Author
Shridhar Shanbhag

Definition at line 3572 of file qs_moments.F.

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

◆ qs_moment_kpoints_scf_mos()

subroutine, public qs_moments::qs_moment_kpoints_scf_mos ( type(qs_environment_type), pointer qs_env,
complex(kind=dp), dimension(:, :, :, :, :), allocatable dipole,
real(kind=dp), dimension(3), optional rcc,
integer, dimension(:), intent(out), optional, allocatable nmo_spin_out )

Calculates interband k-point dipoles in the existing SCF MO basis.

Parameters
qs_env...
dipole...
rccretained for interface compatibility; interband dipoles are origin independent
nmo_spin_outnumber of SCF MOs available for each spin

Definition at line 3846 of file qs_moments.F.

Here is the caller graph for this function:

◆ qs_moment_kpoints()

subroutine, public qs_moments::qs_moment_kpoints ( type(qs_environment_type), pointer qs_env,
integer, intent(in) nmoments,
integer, intent(in) reference,
real(dp), dimension(:), intent(in), pointer ref_point,
integer, intent(in) max_nmo,
integer, intent(in) unit_number,
logical, intent(in) do_soc,
character(len=*), intent(in), optional unit_str,
character(len=*), intent(in), optional dip_file,
character(len=*), intent(in), optional bc_file )

Calculate and print dipole moment elements d_nm(k) = i<u_n|∇_k|u_m> for k-point calculations.

Parameters
qs_env...
nmoments...
reference...
ref_point...
max_nmo...
unit_number...
do_socinclude spin-orbit coupling (spinor sum-rule; requires an explicit KPOINT set)
unit_strunit of the printed dipoles (dipole unit of cp_units), default debye; the Berry curvature is printed in the paired length unit squared
dip_fileif present and non-empty, the dipole matrix elements are written to this file instead of being printed to unit_number
bc_fileif present and non-empty, the Berry curvature is written to this file instead of being printed to unit_number
Author
Shridhar Shanbhag

Definition at line 4080 of file qs_moments.F.

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