Skip to content

mod_sparse_matrices

Lines: 28 | Visibility: private

Procedures performing math on sparse matrices. author: Moritz R. Schaefer

Dependencies

Uses

module~~mod_sparse_matrices~~UsesGraph module~mod_sparse_matrices mod_sparse_matrices module~mod_precision mod_precision module~mod_sparse_matrices->module~mod_precision module~mod_pure_linalg mod_pure_linalg module~mod_sparse_matrices->module~mod_pure_linalg iso_c_binding iso_c_binding module~mod_precision->iso_c_binding iso_fortran_env iso_fortran_env module~mod_precision->iso_fortran_env module~mod_pure_linalg->module~mod_precision

Used By

module~~mod_sparse_matrices~~UsedByGraph module~mod_sparse_matrices mod_sparse_matrices module~smod_first_derivative smod_first_derivative module~smod_first_derivative->module~mod_sparse_matrices

Procedures Summary

Name Type Description
derived_matrix_and_eigenvectors_to_derived_eigenval Subroutine Compute the derivative of the eigenvalues of an matrix A, given dA and the corresponding...

Procedure Details

subroutine derived_matrix_and_eigenvectors_to_derived_eigenval

subroutine derived_matrix_and_eigenvectors_to_derived_eigenval( &
    num_at_orb, &
    norb, &
    non_zero_slice, &
    tmp, &
    num_eigenvec, &
    relevant_eigenvectors, &
    lower, &
    upper, &
    derivative_value &
)

Compute the derivative of the eigenvalues of an matrix A, given dA and the corresponding eigenvectors.

The derivatives of the eigenvalues of a matrix A are given by the the diagonal of I ° (UT dA U). This routine computes I ° (UT dA U) if dA is sparse matrix which allows the following definition: tmp = dA U = non-zero-columns(num_at_orb, :)T U + non-zero-columns(:, num_at_orb)U(rele:vant, :) Where U stores the eigenvectors of A (note the lacking d). Only the non-zero-columns have to be provided. Afterwards we compute I ° (UT tmp) as U_i * tmp for all i. Which gives us the derivatives of the eigenvalues.

Arguments

  • num_at_orb : integer [in]
  • norb : integer [in]
  • non_zero_slice : real(DP) (dim: (norb,num_at_orb)) [in]
  • tmp : real(DP) (dim: (norb,num_eigenvec)) [inout]
  • num_eigenvec : integer [in]
  • relevant_eigenvectors : real(DP) (dim: (norb,num_eigenvec)) [in]
  • lower : integer [in]– the lower idx of eigenvetors on which non-zero-rows have an effect
  • upper : integer [in]– the upper idx of eigenvetors on which non-zero-rows have an effect
  • derivative_value : real(DP) (dim: (num_eigenvec)) [out]

Called By

proc~~derived_matrix_and_eigenvectors_to_derived_eigenval~~CalledByGraph proc~derived_matrix_and_eigenvectors_to_derived_eigenval mod_sparse_matrices::derived_matrix_and_eigenvectors_to_derived_eigenval proc~derivative_eval_one_neighbor smod_first_derivative::derivative_eval_one_neighbor proc~derivative_eval_one_neighbor->proc~derived_matrix_and_eigenvectors_to_derived_eigenval proc~derivative_eval_self smod_first_derivative::derivative_eval_self proc~derivative_eval_self->proc~derived_matrix_and_eigenvectors_to_derived_eigenval