LCOV - code coverage report
Current view: top level - src - qs_energy_types.F (source / functions) Coverage Total Hit
Test: CP2K Regtests (git:71c3ab0) Lines: 95.4 % 65 62
Test Date: 2026-07-25 06:35:44 Functions: 75.0 % 4 3

            Line data    Source code
       1              : !--------------------------------------------------------------------------------------------------!
       2              : !   CP2K: A general program to perform molecular dynamics simulations                              !
       3              : !   Copyright 2000-2026 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              : ! **************************************************************************************************
      14              : MODULE qs_energy_types
      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              : 
      25              :    TYPE qs_energy_type
      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              :                        xtb_spinpol = 0.0_dp ! spin-polarised Hamiltonian energy within GFN1/2-xTB
      85              :       REAL(KIND=dp), DIMENSION(:), POINTER :: ddapc_restraint => NULL()
      86              :    END TYPE qs_energy_type
      87              : 
      88              :    ! Public data types
      89              : 
      90              :    PUBLIC :: qs_energy_type
      91              : 
      92              :    ! Public subroutines
      93              : 
      94              :    PUBLIC :: allocate_qs_energy, &
      95              :              deallocate_qs_energy, &
      96              :              init_qs_energy
      97              : 
      98              : CONTAINS
      99              : 
     100              : ! **************************************************************************************************
     101              : !> \brief   Allocate and/or initialise a Quickstep energy data structure.
     102              : !> \param qs_energy ...
     103              : !> \date    13.06.2002
     104              : !> \author  MK
     105              : !> \version 1.0
     106              : ! **************************************************************************************************
     107         8684 :    SUBROUTINE allocate_qs_energy(qs_energy)
     108              : 
     109              :       TYPE(qs_energy_type), POINTER                      :: qs_energy
     110              : 
     111              :       CHARACTER(len=*), PARAMETER :: routineN = 'allocate_qs_energy'
     112              : 
     113              :       INTEGER                                            :: handle
     114              : 
     115         8684 :       CALL timeset(routineN, handle)
     116         8684 :       IF (.NOT. ASSOCIATED(qs_energy)) THEN
     117         8684 :          ALLOCATE (qs_energy)
     118              :          NULLIFY (qs_energy%ddapc_restraint)
     119              :       END IF
     120              : 
     121         8684 :       CALL init_qs_energy(qs_energy)
     122         8684 :       CALL timestop(handle)
     123              : 
     124         8684 :    END SUBROUTINE allocate_qs_energy
     125              : 
     126              : ! **************************************************************************************************
     127              : !> \brief   Deallocate a Quickstep energy data structure.
     128              : !> \param qs_energy ...
     129              : !> \date    13.06.2002
     130              : !> \author  MK
     131              : !> \version 1.0
     132              : ! **************************************************************************************************
     133         8684 :    SUBROUTINE deallocate_qs_energy(qs_energy)
     134              :       TYPE(qs_energy_type), POINTER                      :: qs_energy
     135              : 
     136         8684 :       IF (ASSOCIATED(qs_energy)) THEN
     137         8684 :          IF (ASSOCIATED(qs_energy%ddapc_restraint)) THEN
     138         8684 :             DEALLOCATE (qs_energy%ddapc_restraint)
     139              :          END IF
     140         8684 :          DEALLOCATE (qs_energy)
     141              :       ELSE
     142              :          CALL cp_abort(__LOCATION__, &
     143              :                        "The qs_energy pointer is not associated "// &
     144            0 :                        "and cannot be deallocated")
     145              :       END IF
     146              : 
     147         8684 :    END SUBROUTINE deallocate_qs_energy
     148              : 
     149              : ! **************************************************************************************************
     150              : !> \brief   Initialise a Quickstep energy data structure.
     151              : !> \param qs_energy ...
     152              : !> \date    13.06.2002
     153              : !> \author  MK
     154              : !> \version 1.0
     155              : ! **************************************************************************************************
     156         8684 :    SUBROUTINE init_qs_energy(qs_energy)
     157              : 
     158              :       TYPE(qs_energy_type), POINTER                      :: qs_energy
     159              : 
     160         8684 :       IF (ASSOCIATED(qs_energy)) THEN
     161         8684 :          qs_energy%core = 0.0_dp
     162         8684 :          qs_energy%core_overlap = 0.0_dp
     163         8684 :          qs_energy%core_overlap0 = 0.0_dp
     164         8684 :          qs_energy%core_self = 0.0_dp
     165         8684 :          qs_energy%core_cneo = 0.0_dp
     166         8684 :          qs_energy%repulsive = 0.0_dp
     167         8684 :          qs_energy%dispersion = 0.0_dp
     168         8684 :          qs_energy%gcp = 0.0_dp
     169         8684 :          qs_energy%qmmm_el = 0.0_dp
     170         8684 :          qs_energy%qmmm_nu = 0.0_dp
     171         8684 :          qs_energy%ex = 0.0_dp
     172         8684 :          qs_energy%exc = 0.0_dp
     173         8684 :          qs_energy%exc_aux_fit = 0.0_dp
     174         8684 :          qs_energy%exc1 = 0.0_dp
     175         8684 :          qs_energy%exc1_aux_fit = 0.0_dp
     176         8684 :          qs_energy%e_hartree = 0.0_dp
     177         8684 :          qs_energy%hartree = 0.0_dp
     178         8684 :          qs_energy%hartree_1c = 0.0_dp
     179         8684 :          qs_energy%image_charge = 0.0_dp
     180         8684 :          qs_energy%mulliken = 0.0_dp
     181         8684 :          qs_energy%cdft = 0.0_dp
     182         8684 :          qs_energy%efield = 0.0_dp
     183         8684 :          qs_energy%efield_core = 0.0_dp
     184         8684 :          qs_energy%ee = 0.0_dp
     185         8684 :          qs_energy%ee_core = 0.0_dp
     186         8684 :          qs_energy%s2_restraint = 0.0_dp
     187         8684 :          qs_energy%dft_plus_u = 0.0_dp
     188         8684 :          qs_energy%sccs_hartree = 0.0_dp
     189         8684 :          qs_energy%sccs_pol = 0.0_dp
     190         8684 :          qs_energy%sccs_cav = 0.0_dp
     191         8684 :          qs_energy%sccs_dis = 0.0_dp
     192         8684 :          qs_energy%sccs_rep = 0.0_dp
     193         8684 :          qs_energy%sccs_sol = 0.0_dp
     194         8684 :          qs_energy%dftb3 = 0.0_dp
     195         8684 :          qs_energy%kTS = 0.0_dp
     196         8684 :          qs_energy%mp2 = 0.0_dp
     197         8684 :          qs_energy%efermi = 0.0_dp
     198         8684 :          qs_energy%kinetic = 0.0_dp
     199         8684 :          qs_energy%surf_dipole = 0.0_dp
     200         8684 :          qs_energy%excited_state = 0.0_dp
     201         8684 :          qs_energy%total = 0.0_dp
     202         8684 :          qs_energy%singles_corr = 0.0_dp
     203         8684 :          qs_energy%nonscf_correction = 0.0_dp
     204         8684 :          IF (.NOT. ASSOCIATED(qs_energy%ddapc_restraint)) THEN
     205         8684 :             ALLOCATE (qs_energy%ddapc_restraint(1))
     206              :          END IF
     207        17368 :          qs_energy%ddapc_restraint(:) = 0.0_dp
     208              :       ELSE
     209              :          CALL cp_abort(__LOCATION__, &
     210              :                        "The qs_energy pointer is not associated "// &
     211            0 :                        "and cannot be initialised")
     212              :       END IF
     213              : 
     214         8684 :    END SUBROUTINE init_qs_energy
     215              : 
     216            0 : END MODULE qs_energy_types
        

Generated by: LCOV version 2.0-1