1!--------------------------------------------------------------------------------------------------!
2!   CP2K: A general program to perform molecular dynamics simulations                              !
3!   Copyright (C) 2000 - 2019  CP2K developers group                                               !
4!--------------------------------------------------------------------------------------------------!
5
6MODULE se_fock_matrix_dbg
7   USE dbcsr_api,                       ONLY: dbcsr_dot,&
8                                              dbcsr_p_type,&
9                                              dbcsr_set
10   USE kinds,                           ONLY: dp
11   USE qs_energy_types,                 ONLY: init_qs_energy,&
12                                              qs_energy_type
13   USE qs_environment_types,            ONLY: qs_environment_type
14   USE se_fock_matrix_coulomb,          ONLY: build_fock_matrix_coulomb_lr
15   USE semi_empirical_store_int_types,  ONLY: semi_empirical_si_type
16#include "./base/base_uses.f90"
17
18   IMPLICIT NONE
19   PRIVATE
20
21   CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'se_fock_matrix_dbg'
22   LOGICAL, PARAMETER, PRIVATE          :: debug_this_module = .FALSE.
23
24   PUBLIC :: dbg_energy_coulomb_lr
25
26CONTAINS
27
28! **************************************************************************************************
29!> \brief Debug routine for long-range energy (debug value of EWALD vs VALUE KS)
30!> \param energy ...
31!> \param ks_matrix ...
32!> \param nspins ...
33!> \param qs_env ...
34!> \param matrix_p ...
35!> \param calculate_forces ...
36!> \param store_int_env ...
37!> \author Teodoro Laino [tlaino] - 04.2009
38! **************************************************************************************************
39   SUBROUTINE dbg_energy_coulomb_lr(energy, ks_matrix, nspins, qs_env, matrix_p, &
40                                    calculate_forces, store_int_env)
41      TYPE(qs_energy_type), POINTER                      :: energy
42      TYPE(dbcsr_p_type), DIMENSION(:), POINTER          :: ks_matrix
43      INTEGER, INTENT(IN)                                :: nspins
44      TYPE(qs_environment_type), POINTER                 :: qs_env
45      TYPE(dbcsr_p_type), DIMENSION(:), POINTER          :: matrix_p
46      LOGICAL, INTENT(IN)                                :: calculate_forces
47      TYPE(semi_empirical_si_type), POINTER              :: store_int_env
48
49      CHARACTER(len=*), PARAMETER :: routineN = 'dbg_energy_coulomb_lr', &
50         routineP = moduleN//':'//routineN
51
52      INTEGER                                            :: ispin
53      REAL(KIND=dp)                                      :: ecoul
54
55! Zero structures only for debugging purpose
56
57      CALL init_qs_energy(energy)
58      DO ispin = 1, nspins
59         CALL dbcsr_set(ks_matrix(ispin)%matrix, 0.0_dp)
60      END DO
61
62      ! Evaluate Coulomb Long-Range
63      CALL build_fock_matrix_coulomb_lr(qs_env, ks_matrix, matrix_p, energy, calculate_forces, &
64                                        store_int_env)
65
66      ! Compute the Hartree energy
67      DO ispin = 1, nspins
68         CALL dbcsr_dot(ks_matrix(ispin)%matrix, matrix_p(ispin)%matrix, ecoul)
69         energy%hartree = energy%hartree + ecoul
70
71         WRITE (*, *) ispin, "ECOUL ", ecoul
72      END DO
73      WRITE (*, *) "ENUC in DBG:", energy%core_overlap
74
75      ! Debug statements
76      WRITE (*, *) "TOTAL ENE", 0.5_dp*energy%hartree + energy%core_overlap
77      CPABORT("Debug energy for Coulomb Long-Range")
78
79   END SUBROUTINE dbg_energy_coulomb_lr
80
81END MODULE se_fock_matrix_dbg
82