(git:15c1bfc)
Loading...
Searching...
No Matches
qs_energy_types.F
Go to the documentation of this file.
1!--------------------------------------------------------------------------------------------------!
2! CP2K: A general program to perform molecular dynamics simulations !
3! Copyright 2000-2025 CP2K developers group <https://cp2k.org> !
4! !
5! SPDX-License-Identifier: GPL-2.0-or-later !
6!--------------------------------------------------------------------------------------------------!
7
8! **************************************************************************************************
9!> \par History
10!> JGH (11.08.2002) exchange and correlation energy now in exc
11!> TL (25.05.2004) qmmm energy
12!> \author MK (13.06.2002)
13! **************************************************************************************************
15
16 USE kinds, ONLY: dp
17#include "./base/base_uses.f90"
18
19 IMPLICIT NONE
20
21 PRIVATE
22
23 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qs_energy_types'
24
26 REAL(kind=dp) :: core = 0.0_dp, &
27 core_overlap = 0.0_dp, &
28 core_overlap0 = 0.0_dp, &
29 core_self = 0.0_dp, &
30 core_cneo = 0.0_dp, & ! quantum nuclear kinetic + v_core
31 repulsive = 0.0_dp, &
32 dispersion = 0.0_dp, &
33 dispersion_sc = 0.0_dp, &
34 gcp = 0.0_dp, &
35 srb = 0.0_dp, &
36 eeq = 0.0_dp, &
37 el_stat = 0.0_dp, &
38 ex = 0.0_dp, &
39 exc = 0.0_dp, &
40 exc_aux_fit = 0.0_dp, &
41 exc1 = 0.0_dp, &
42 exc1_aux_fit = 0.0_dp, & !the GAPW contribution to ADMM
43 hartree = 0.0_dp, &
44 hartree_1c = 0.0_dp, &
45 e_hartree = 0.0_dp, & ! contains the hartree energy of electrons only
46 ! computed if requested
47 image_charge = 0.0_dp, &
48 qmmm_el = 0.0_dp, &
49 qmmm_nu = 0.0_dp, &
50 mulliken = 0.0_dp, &
51 cdft = 0.0_dp, &
52 ee = 0.0_dp, &
53 ee_core = 0.0_dp, &
54 efield = 0.0_dp, &
55 efield_core = 0.0_dp, &
56 s2_restraint = 0.0_dp, &
57 dft_plus_u = 0.0_dp, & ! DFT+U energy contribution
58 sccs_hartree = 0.0_dp, & ! SCCS Hartree energy of solute + solvent
59 sccs_pol = 0.0_dp, & ! SCCS polarisation energy
60 sccs_cav = 0.0_dp, & ! SCCS cavitation energy
61 sccs_dis = 0.0_dp, & ! SCCS dispersion free energy
62 sccs_rep = 0.0_dp, & ! SCCS repulsion free energy
63 sccs_sol = 0.0_dp, & ! SCCS solvation free energy
64 kts = 0.0_dp, & ! electronic entropic contribution
65 efermi = 0.0_dp, & ! Fermi energy
66 band = 0.0_dp, & ! Band energy (Tr PH)
67 dftb3 = 0.0_dp, & ! DFTB 3rd order correction
68 nonscf_correction = 0.0_dp, & ! e.g. Harris correction
69 mp2 = 0.0_dp, &
70 ! single excitations correction for all
71 ! non-scf orbital(density) corrections
72 ! for example, almo delocalization corrction
73 singles_corr = 0.0_dp, &
74 ! excitation energy
75 excited_state = 0.0_dp, &
76 total = 0.0_dp, &
77 tot_old = 0.0_dp, &
78 kinetic = 0.0_dp, & !total kinetic energy [rk]
79 s_square = 0.0_dp, &
80 surf_dipole = 0.0_dp, &
81 embed_corr = 0.0_dp, & ! correction for embedding potential
82 xtb_xb_inter = 0.0_dp, & ! correction for halogen bonding within GFN1-xTB
83 xtb_nonbonded = 0.0_dp ! correction for nonbonded interactions within GFN1-xTB
84 REAL(kind=dp), DIMENSION(:), POINTER :: ddapc_restraint => null()
85 END TYPE qs_energy_type
86
87 ! Public data types
88
89 PUBLIC :: qs_energy_type
90
91 ! Public subroutines
92
93 PUBLIC :: allocate_qs_energy, &
96
97CONTAINS
98
99! **************************************************************************************************
100!> \brief Allocate and/or initialise a Quickstep energy data structure.
101!> \param qs_energy ...
102!> \date 13.06.2002
103!> \author MK
104!> \version 1.0
105! **************************************************************************************************
106 SUBROUTINE allocate_qs_energy(qs_energy)
107
108 TYPE(qs_energy_type), POINTER :: qs_energy
109
110 CHARACTER(len=*), PARAMETER :: routinen = 'allocate_qs_energy'
111
112 INTEGER :: handle
113
114 CALL timeset(routinen, handle)
115 IF (.NOT. ASSOCIATED(qs_energy)) THEN
116 ALLOCATE (qs_energy)
117 NULLIFY (qs_energy%ddapc_restraint)
118 END IF
119
121 CALL timestop(handle)
122
123 END SUBROUTINE allocate_qs_energy
124
125! **************************************************************************************************
126!> \brief Deallocate a Quickstep energy data structure.
127!> \param qs_energy ...
128!> \date 13.06.2002
129!> \author MK
130!> \version 1.0
131! **************************************************************************************************
132 SUBROUTINE deallocate_qs_energy(qs_energy)
133 TYPE(qs_energy_type), POINTER :: qs_energy
134
135 IF (ASSOCIATED(qs_energy)) THEN
136 IF (ASSOCIATED(qs_energy%ddapc_restraint)) THEN
137 DEALLOCATE (qs_energy%ddapc_restraint)
138 END IF
139 DEALLOCATE (qs_energy)
140 ELSE
141 CALL cp_abort(__location__, &
142 "The qs_energy pointer is not associated "// &
143 "and cannot be deallocated")
144 END IF
145
146 END SUBROUTINE deallocate_qs_energy
147
148! **************************************************************************************************
149!> \brief Initialise a Quickstep energy data structure.
150!> \param qs_energy ...
151!> \date 13.06.2002
152!> \author MK
153!> \version 1.0
154! **************************************************************************************************
155 SUBROUTINE init_qs_energy(qs_energy)
156
157 TYPE(qs_energy_type), POINTER :: qs_energy
158
159 IF (ASSOCIATED(qs_energy)) THEN
160 qs_energy%core = 0.0_dp
161 qs_energy%core_overlap = 0.0_dp
162 qs_energy%core_overlap0 = 0.0_dp
163 qs_energy%core_self = 0.0_dp
164 qs_energy%core_cneo = 0.0_dp
165 qs_energy%repulsive = 0.0_dp
166 qs_energy%dispersion = 0.0_dp
167 qs_energy%gcp = 0.0_dp
168 qs_energy%qmmm_el = 0.0_dp
169 qs_energy%qmmm_nu = 0.0_dp
170 qs_energy%ex = 0.0_dp
171 qs_energy%exc = 0.0_dp
172 qs_energy%exc_aux_fit = 0.0_dp
173 qs_energy%exc1 = 0.0_dp
174 qs_energy%exc1_aux_fit = 0.0_dp
175 qs_energy%e_hartree = 0.0_dp
176 qs_energy%hartree = 0.0_dp
177 qs_energy%hartree_1c = 0.0_dp
178 qs_energy%image_charge = 0.0_dp
179 qs_energy%mulliken = 0.0_dp
180 qs_energy%cdft = 0.0_dp
181 qs_energy%efield = 0.0_dp
182 qs_energy%efield_core = 0.0_dp
183 qs_energy%ee = 0.0_dp
184 qs_energy%ee_core = 0.0_dp
185 qs_energy%s2_restraint = 0.0_dp
186 qs_energy%dft_plus_u = 0.0_dp
187 qs_energy%sccs_hartree = 0.0_dp
188 qs_energy%sccs_pol = 0.0_dp
189 qs_energy%sccs_cav = 0.0_dp
190 qs_energy%sccs_dis = 0.0_dp
191 qs_energy%sccs_rep = 0.0_dp
192 qs_energy%sccs_sol = 0.0_dp
193 qs_energy%dftb3 = 0.0_dp
194 qs_energy%kTS = 0.0_dp
195 qs_energy%mp2 = 0.0_dp
196 qs_energy%efermi = 0.0_dp
197 qs_energy%kinetic = 0.0_dp
198 qs_energy%surf_dipole = 0.0_dp
199 qs_energy%excited_state = 0.0_dp
200 qs_energy%total = 0.0_dp
201 qs_energy%singles_corr = 0.0_dp
202 qs_energy%nonscf_correction = 0.0_dp
203 IF (.NOT. ASSOCIATED(qs_energy%ddapc_restraint)) THEN
204 ALLOCATE (qs_energy%ddapc_restraint(1))
205 END IF
206 qs_energy%ddapc_restraint(:) = 0.0_dp
207 ELSE
208 CALL cp_abort(__location__, &
209 "The qs_energy pointer is not associated "// &
210 "and cannot be initialised")
211 END IF
212
213 END SUBROUTINE init_qs_energy
214
215END MODULE qs_energy_types
Add the DFT+U contribution to the Hamiltonian matrix.
Definition dft_plus_u.F:18
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
Routines to calculate MP2 energy.
Definition mp2.F:14
compute mulliken charges we (currently) define them as c_i = 1/2 [ (PS)_{ii} + (SP)_{ii} ]
Definition mulliken.F:13
subroutine, public init_qs_energy(qs_energy)
Initialise a Quickstep energy data structure.
subroutine, public deallocate_qs_energy(qs_energy)
Deallocate a Quickstep energy data structure.
subroutine, public allocate_qs_energy(qs_energy)
Allocate and/or initialise a Quickstep energy data structure.
Perform a QUICKSTEP wavefunction optimization (single point)
Definition qs_energy.F:14