Skip to content

mod_om_cutoff

Lines: 42 | Visibility: private

Multiply f_c(r_i) * f_c(r_j) to all elements of the overlap matrix containing overlaps between orbitals of atom i and j.

Dependencies

Uses

module~~mod_om_cutoff~~UsesGraph module~mod_om_cutoff mod_om_cutoff module~mod_precision mod_precision module~mod_om_cutoff->module~mod_precision iso_c_binding iso_c_binding module~mod_precision->iso_c_binding iso_fortran_env iso_fortran_env module~mod_precision->iso_fortran_env

Used By

module~~mod_om_cutoff~~UsedByGraph module~mod_om_cutoff mod_om_cutoff module~smod_eigenval_and_vectors smod_eigenval_and_vectors module~smod_eigenval_and_vectors->module~mod_om_cutoff module~smod_first_derivative smod_first_derivative module~smod_first_derivative->module~mod_om_cutoff

Procedures Summary

Name Type Description
multiply_cutoff Subroutine
add_der_cutoff_pair Subroutine Add (df_c / dk) * f_c + f_c * (df_c / dk) to the to the non-zero-slice of the overlap matrix,...
calc_der_cutoff Subroutine Compute the upper triangle of (df_c / dk) * S * f_c + f_c * S * (df_c / dk). for the case where...

Procedure Details

subroutine multiply_cutoff

subroutine multiply_cutoff( &
    ns3p, &
    fc_values, &
    overlap &
)

Arguments

  • ns3p : integer [in]– Total number of atomic orbitals per atom
  • fc_values : real(DP) (dim: (:)) [in]– Values of the cutoff function for each neighbor
  • overlap : real(DP) (dim: (:,:)) [inout]– overlap matrix. On entrance OM without cutoff (S), on exit OM with cutoff (\tilde S).

Called By

proc~~multiply_cutoff~~CalledByGraph proc~multiply_cutoff mod_om_cutoff::multiply_cutoff proc~om_and_eigenvectors smod_eigenval_and_vectors::om_and_eigenvectors proc~om_and_eigenvectors->proc~multiply_cutoff proc~value~2 smod_eigenval_and_vectors::value proc~value~2->proc~multiply_cutoff

subroutine add_der_cutoff_pair

subroutine add_der_cutoff_pair( &
    ns3p, &
    fc_values, &
    dfc_dk_xyz, &
    overlap, &
    non_zero_slice &
)

Add (df_c / dk) * f_c + f_c * (df_c / dk) to the to the non-zero-slice of the overlap matrix, derived wrt the position of atom k.

Arguments

  • ns3p : integer [in]
  • fc_values : real(DP) (dim: (:)) [in]– values of the cutoff function
  • dfc_dk_xyz : real(DP) (dim: (3)) [in]– derivative of the cutoff function wrt to the xyz coordinates of atoms k
  • overlap : real(DP) (dim: (:,:)) [in]
  • non_zero_slice : real(DP) (dim: (:,:,:)) [inout]

Called By

proc~~add_der_cutoff_pair~~CalledByGraph proc~add_der_cutoff_pair mod_om_cutoff::add_der_cutoff_pair proc~derivative_eval_one_neighbor smod_first_derivative::derivative_eval_one_neighbor proc~derivative_eval_one_neighbor->proc~add_der_cutoff_pair

subroutine calc_der_cutoff

subroutine calc_der_cutoff( &
    ns3p, &
    fc_values, &
    der_fc_values, &
    overlap, &
    der_matrix &
)

Compute the upper triangle of (df_c / dk) * S * f_c + f_c * S * (df_c / dk). for the case where k is the central atom.

The matrix is not sparse here, but still symmetric.

Arguments

  • ns3p : integer [in]– Number of orbitals per atom
  • fc_values : real(DP) (dim: (:)) [in]
  • der_fc_values : real(DP) (dim: (:,:)) [in]
  • overlap : real(DP) (dim: (:,:)) [in]
  • der_matrix : real(DP) (dim: (:,:,:)) [out]– Result Derivative of the ovelap wrt dx, dy and dz. Dimension is (size(overlap, 1), size(overlap, 2), 3). This but can not be set explicitly, since some compiler (ifort) can not evaluate this properly.

Called By

proc~~calc_der_cutoff~~CalledByGraph proc~calc_der_cutoff mod_om_cutoff::calc_der_cutoff proc~derivative_eval_self smod_first_derivative::derivative_eval_self proc~derivative_eval_self->proc~calc_der_cutoff