13 USE dbcsr_api,
ONLY: dbcsr_copy,&
14 dbcsr_frobenius_norm,&
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)
70 TYPE(pao_env_type),
POINTER :: pao
71 TYPE(qs_environment_type),
POINTER :: qs_env
72 TYPE(ls_scf_env_type),
TARGET :: ls_scf_env
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)
109 TYPE(pao_env_type),
POINTER :: pao
110 TYPE(qs_environment_type),
POINTER :: qs_env
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)
140 TYPE(pao_env_type),
POINTER :: pao
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)
173 TYPE(pao_env_type),
POINTER :: pao
174 TYPE(qs_environment_type),
POINTER :: qs_env
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)
207 TYPE(pao_env_type),
POINTER :: pao
208 TYPE(qs_environment_type),
POINTER :: qs_env
210 CHARACTER(len=*),
PARAMETER :: routinen =
'pao_param_initial_guess'
214 TYPE(dbcsr_type) :: matrix_tmp
216 CALL timeset(routinen, handle)
218 SELECT CASE (pao%parameterization)
228 cpabort(
"PAO: unknown parametrization")
231 norm = dbcsr_frobenius_norm(pao%matrix_X)
232 IF (pao%iw > 0)
WRITE (pao%iw, *)
"PAO| Made initial guess for matrix_X with norm:", norm
234 IF (pao%precondition)
THEN
236 CALL dbcsr_copy(matrix_tmp, pao%matrix_X)
237 CALL dbcsr_multiply(
"N",
"N", 1.0_dp, pao%matrix_precon, matrix_tmp, &
238 0.0_dp, pao%matrix_X, retain_sparsity=.true.)
239 CALL dbcsr_release(matrix_tmp)
242 CALL timestop(handle)
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.