47#include "./base/base_uses.f90"
53 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'pao_param'
69 SUBROUTINE pao_calc_ab(pao, qs_env, ls_scf_env, gradient, penalty, forces)
73 LOGICAL,
INTENT(IN) :: gradient
74 REAL(
dp),
INTENT(OUT),
OPTIONAL :: penalty
75 REAL(
dp),
DIMENSION(:, :),
INTENT(OUT),
OPTIONAL :: forces
77 CHARACTER(len=*),
PARAMETER :: routinen =
'pao_calc_AB'
81 CALL timeset(routinen, handle)
83 IF (
PRESENT(penalty)) penalty = 0.0_dp
84 IF (
PRESENT(forces)) forces(:, :) = 0.0_dp
87 SELECT CASE (pao%parameterization)
97 cpabort(
"PAO: unkown parametrization")
100 CALL timestop(handle)
112 CHARACTER(len=*),
PARAMETER :: routinen =
'pao_param_init'
116 CALL timeset(routinen, handle)
118 SELECT CASE (pao%parameterization)
128 cpabort(
"PAO: unknown parametrization")
131 CALL timestop(handle)
142 CHARACTER(len=*),
PARAMETER :: routinen =
'pao_param_finalize'
146 CALL timeset(routinen, handle)
148 SELECT CASE (pao%parameterization)
158 cpabort(
"PAO: unknown parametrization")
161 CALL timestop(handle)
175 INTEGER,
INTENT(IN) :: ikind
176 INTEGER,
INTENT(OUT) :: nparams
178 CHARACTER(len=*),
PARAMETER :: routinen =
'pao_param_count'
182 CALL timeset(routinen, handle)
184 SELECT CASE (pao%parameterization)
194 cpabort(
"PAO: unknown parametrization")
197 CALL timestop(handle)
210 CHARACTER(len=*),
PARAMETER :: routinen =
'pao_param_initial_guess'
216 CALL timeset(routinen, handle)
218 SELECT CASE (pao%parameterization)
228 cpabort(
"PAO: unknown parametrization")
232 IF (pao%iw > 0)
WRITE (pao%iw, *)
"PAO| Made initial guess for matrix_X with norm:", norm
234 IF (pao%precondition)
THEN
237 CALL dbcsr_multiply(
"N",
"N", 1.0_dp, pao%matrix_precon, matrix_tmp, &
238 0.0_dp, pao%matrix_X, retain_sparsity=.true.)
242 CALL timestop(handle)
subroutine, public dbcsr_copy(matrix_b, matrix_a, name, keep_sparsity, keep_imaginary)
...
subroutine, public dbcsr_multiply(transa, transb, alpha, matrix_a, matrix_b, beta, matrix_c, first_row, last_row, first_column, last_column, first_k, last_k, retain_sparsity, filter_eps, flop)
...
subroutine, public dbcsr_release(matrix)
...
real(dp) function, public dbcsr_frobenius_norm(matrix)
Compute the frobenius norm of a dbcsr matrix.
Types needed for a linear scaling quickstep SCF run based on the density matrix.
Defines the basic variable types.
integer, parameter, public dp
Equivariant parametrization.
subroutine, public pao_param_count_equi(qs_env, ikind, nparams)
Returns the number of parameters for given atomic kind.
subroutine, public pao_param_finalize_equi()
Finalize equivariant parametrization.
subroutine, public pao_param_initguess_equi(pao, qs_env)
Fills matrix_X with an initial guess.
subroutine, public pao_param_init_equi(pao)
Initialize equivariant parametrization.
subroutine, public pao_calc_ab_equi(pao, qs_env, ls_scf_env, gradient, penalty)
Takes current matrix_X and calculates the matrices A and B.
Original matrix exponential parametrization.
subroutine, public pao_calc_ab_exp(pao, qs_env, ls_scf_env, gradient)
Takes current matrix_X and calculates the matrices A and B.
subroutine, public pao_param_finalize_exp(pao)
Finalize exponential parametrization.
subroutine, public pao_param_initguess_exp(pao)
Fills matrix_X with an initial guess.
subroutine, public pao_param_init_exp(pao, qs_env)
Initialize matrix exponential parametrization.
subroutine, public pao_param_count_exp(qs_env, ikind, nparams)
Returns the number of parameters for given atomic kind.
Parametrization based on GTH pseudo potentials.
subroutine, public pao_calc_ab_gth(pao, qs_env, ls_scf_env, gradient, penalty)
Takes current matrix_X and calculates the matrices A and B.
subroutine, public pao_param_initguess_gth(pao)
Calculate initial guess for matrix_X.
subroutine, public pao_param_count_gth(qs_env, ikind, nparams)
Returns the number of parameters for given atomic kind.
subroutine, public pao_param_init_gth(pao, qs_env)
Initialize the linear potential parametrization.
subroutine, public pao_param_finalize_gth(pao)
Finalize the GTH potential parametrization.
Common framework for a linear parametrization of the potential.
subroutine, public pao_param_finalize_linpot(pao)
Finalize the linear potential parametrization.
subroutine, public pao_param_init_linpot(pao, qs_env)
Initialize the linear potential parametrization.
subroutine, public pao_calc_ab_linpot(pao, qs_env, ls_scf_env, gradient, penalty, forces)
Takes current matrix_X and calculates the matrices A and B.
subroutine, public pao_param_count_linpot(pao, qs_env, ikind, nparams)
Returns the number of potential terms for given atomic kind.
subroutine, public pao_param_initguess_linpot(pao, qs_env)
Calculate initial guess for matrix_X.
Front-End for any PAO parametrization.
subroutine, public pao_param_initial_guess(pao, qs_env)
Fills matrix_X with an initial guess.
subroutine, public pao_param_init(pao, qs_env)
Initialize PAO parametrization.
subroutine, public pao_calc_ab(pao, qs_env, ls_scf_env, gradient, penalty, forces)
Takes current matrix_X and calculates the matrices A and B.
subroutine, public pao_param_count(pao, qs_env, ikind, nparams)
Returns the number of parameters for given atomic kind.
subroutine, public pao_param_finalize(pao)
Finalize PAO parametrization.
Types used by the PAO machinery.