(git:e5b1968)
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 repulsive = 0.0_dp, &
31 dispersion = 0.0_dp, &
32 dispersion_sc = 0.0_dp, &
33 gcp = 0.0_dp, &
34 srb = 0.0_dp, &
35 eeq = 0.0_dp, &
36 el_stat = 0.0_dp, &
37 ex = 0.0_dp, &
38 exc = 0.0_dp, &
39 exc_aux_fit = 0.0_dp, &
40 exc1 = 0.0_dp, &
41 exc1_aux_fit = 0.0_dp, & !the GAPW contribution to ADMM
42 hartree = 0.0_dp, &
43 hartree_1c = 0.0_dp, &
44 e_hartree = 0.0_dp, & ! contains the hartree energy of electrons only
45 ! computed if requested
46 image_charge = 0.0_dp, &
47 qmmm_el = 0.0_dp, &
48 qmmm_nu = 0.0_dp, &
49 mulliken = 0.0_dp, &
50 cdft = 0.0_dp, &
51 ee = 0.0_dp, &
52 ee_core = 0.0_dp, &
53 efield = 0.0_dp, &
54 efield_core = 0.0_dp, &
55 s2_restraint = 0.0_dp, &
56 dft_plus_u = 0.0_dp, & ! DFT+U energy contribution
57 sccs_hartree = 0.0_dp, & ! SCCS Hartree energy of solute + solvent
58 sccs_pol = 0.0_dp, & ! SCCS polarisation energy
59 sccs_cav = 0.0_dp, & ! SCCS cavitation energy
60 sccs_dis = 0.0_dp, & ! SCCS dispersion free energy
61 sccs_rep = 0.0_dp, & ! SCCS repulsion free energy
62 sccs_sol = 0.0_dp, & ! SCCS solvation free energy
63 kts = 0.0_dp, & ! electronic entropic contribution
64 efermi = 0.0_dp, & ! Fermi energy
65 band = 0.0_dp, & ! Band energy (Tr PH)
66 dftb3 = 0.0_dp, & ! DFTB 3rd order correction
67 nonscf_correction = 0.0_dp, & ! e.g. Harris correction
68 mp2 = 0.0_dp, &
69 ! single excitations correction for all
70 ! non-scf orbital(density) corrections
71 ! for example, almo delocalization corrction
72 singles_corr = 0.0_dp, &
73 ! excitation energy
74 excited_state = 0.0_dp, &
75 total = 0.0_dp, &
76 tot_old = 0.0_dp, &
77 kinetic = 0.0_dp, & !total kinetic energy [rk]
78 s_square = 0.0_dp, &
79 surf_dipole = 0.0_dp, &
80 embed_corr = 0.0_dp, & ! correction for embedding potential
81 xtb_xb_inter = 0.0_dp, & ! correction for halogen bonding within GFN1-xTB
82 xtb_nonbonded = 0.0_dp ! correction for nonbonded interactions within GFN1-xTB
83 REAL(kind=dp), DIMENSION(:), POINTER :: ddapc_restraint => null()
84 END TYPE qs_energy_type
85
86 ! Public data types
87
88 PUBLIC :: qs_energy_type
89
90 ! Public subroutines
91
92 PUBLIC :: allocate_qs_energy, &
95
96CONTAINS
97
98! **************************************************************************************************
99!> \brief Allocate and/or initialise a Quickstep energy data structure.
100!> \param qs_energy ...
101!> \date 13.06.2002
102!> \author MK
103!> \version 1.0
104! **************************************************************************************************
105 SUBROUTINE allocate_qs_energy(qs_energy)
106
107 TYPE(qs_energy_type), POINTER :: qs_energy
108
109 CHARACTER(len=*), PARAMETER :: routinen = 'allocate_qs_energy'
110
111 INTEGER :: handle
112
113 CALL timeset(routinen, handle)
114 IF (.NOT. ASSOCIATED(qs_energy)) THEN
115 ALLOCATE (qs_energy)
116 NULLIFY (qs_energy%ddapc_restraint)
117 END IF
118
120 CALL timestop(handle)
121
122 END SUBROUTINE allocate_qs_energy
123
124! **************************************************************************************************
125!> \brief Deallocate a Quickstep energy data structure.
126!> \param qs_energy ...
127!> \date 13.06.2002
128!> \author MK
129!> \version 1.0
130! **************************************************************************************************
131 SUBROUTINE deallocate_qs_energy(qs_energy)
132 TYPE(qs_energy_type), POINTER :: qs_energy
133
134 IF (ASSOCIATED(qs_energy)) THEN
135 IF (ASSOCIATED(qs_energy%ddapc_restraint)) THEN
136 DEALLOCATE (qs_energy%ddapc_restraint)
137 END IF
138 DEALLOCATE (qs_energy)
139 ELSE
140 CALL cp_abort(__location__, &
141 "The qs_energy pointer is not associated "// &
142 "and cannot be deallocated")
143 END IF
144
145 END SUBROUTINE deallocate_qs_energy
146
147! **************************************************************************************************
148!> \brief Initialise a Quickstep energy data structure.
149!> \param qs_energy ...
150!> \date 13.06.2002
151!> \author MK
152!> \version 1.0
153! **************************************************************************************************
154 SUBROUTINE init_qs_energy(qs_energy)
155
156 TYPE(qs_energy_type), POINTER :: qs_energy
157
158 IF (ASSOCIATED(qs_energy)) THEN
159 qs_energy%core = 0.0_dp
160 qs_energy%core_overlap = 0.0_dp
161 qs_energy%core_overlap0 = 0.0_dp
162 qs_energy%core_self = 0.0_dp
163 qs_energy%repulsive = 0.0_dp
164 qs_energy%dispersion = 0.0_dp
165 qs_energy%gcp = 0.0_dp
166 qs_energy%qmmm_el = 0.0_dp
167 qs_energy%qmmm_nu = 0.0_dp
168 qs_energy%ex = 0.0_dp
169 qs_energy%exc = 0.0_dp
170 qs_energy%exc_aux_fit = 0.0_dp
171 qs_energy%exc1 = 0.0_dp
172 qs_energy%exc1_aux_fit = 0.0_dp
173 qs_energy%e_hartree = 0.0_dp
174 qs_energy%hartree = 0.0_dp
175 qs_energy%hartree_1c = 0.0_dp
176 qs_energy%image_charge = 0.0_dp
177 qs_energy%mulliken = 0.0_dp
178 qs_energy%cdft = 0.0_dp
179 qs_energy%efield = 0.0_dp
180 qs_energy%efield_core = 0.0_dp
181 qs_energy%ee = 0.0_dp
182 qs_energy%ee_core = 0.0_dp
183 qs_energy%s2_restraint = 0.0_dp
184 qs_energy%dft_plus_u = 0.0_dp
185 qs_energy%sccs_hartree = 0.0_dp
186 qs_energy%sccs_pol = 0.0_dp
187 qs_energy%sccs_cav = 0.0_dp
188 qs_energy%sccs_dis = 0.0_dp
189 qs_energy%sccs_rep = 0.0_dp
190 qs_energy%sccs_sol = 0.0_dp
191 qs_energy%dftb3 = 0.0_dp
192 qs_energy%kTS = 0.0_dp
193 qs_energy%mp2 = 0.0_dp
194 qs_energy%efermi = 0.0_dp
195 qs_energy%kinetic = 0.0_dp
196 qs_energy%surf_dipole = 0.0_dp
197 qs_energy%excited_state = 0.0_dp
198 qs_energy%total = 0.0_dp
199 qs_energy%singles_corr = 0.0_dp
200 qs_energy%nonscf_correction = 0.0_dp
201 IF (.NOT. ASSOCIATED(qs_energy%ddapc_restraint)) THEN
202 ALLOCATE (qs_energy%ddapc_restraint(1))
203 END IF
204 qs_energy%ddapc_restraint(:) = 0.0_dp
205 ELSE
206 CALL cp_abort(__location__, &
207 "The qs_energy pointer is not associated "// &
208 "and cannot be initialised")
209 END IF
210
211 END SUBROUTINE init_qs_energy
212
213END 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