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