LCOV - code coverage report
Current view: top level - src - qs_energy_types.F (source / functions) Coverage Total Hit
Test: CP2K Regtests (git:936074a) Lines: 95.4 % 65 62
Test Date: 2025-12-04 06:27:48 Functions: 75.0 % 4 3

            Line data    Source code
       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              : ! **************************************************************************************************
      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              :       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, &
      94              :              deallocate_qs_energy, &
      95              :              init_qs_energy
      96              : 
      97              : CONTAINS
      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         7464 :    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         7464 :       CALL timeset(routineN, handle)
     115         7464 :       IF (.NOT. ASSOCIATED(qs_energy)) THEN
     116         7464 :          ALLOCATE (qs_energy)
     117              :          NULLIFY (qs_energy%ddapc_restraint)
     118              :       END IF
     119              : 
     120         7464 :       CALL init_qs_energy(qs_energy)
     121         7464 :       CALL timestop(handle)
     122              : 
     123         7464 :    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         7464 :    SUBROUTINE deallocate_qs_energy(qs_energy)
     133              :       TYPE(qs_energy_type), POINTER                      :: qs_energy
     134              : 
     135         7464 :       IF (ASSOCIATED(qs_energy)) THEN
     136         7464 :          IF (ASSOCIATED(qs_energy%ddapc_restraint)) THEN
     137         7464 :             DEALLOCATE (qs_energy%ddapc_restraint)
     138              :          END IF
     139         7464 :          DEALLOCATE (qs_energy)
     140              :       ELSE
     141              :          CALL cp_abort(__LOCATION__, &
     142              :                        "The qs_energy pointer is not associated "// &
     143            0 :                        "and cannot be deallocated")
     144              :       END IF
     145              : 
     146         7464 :    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         7464 :    SUBROUTINE init_qs_energy(qs_energy)
     156              : 
     157              :       TYPE(qs_energy_type), POINTER                      :: qs_energy
     158              : 
     159         7464 :       IF (ASSOCIATED(qs_energy)) THEN
     160         7464 :          qs_energy%core = 0.0_dp
     161         7464 :          qs_energy%core_overlap = 0.0_dp
     162         7464 :          qs_energy%core_overlap0 = 0.0_dp
     163         7464 :          qs_energy%core_self = 0.0_dp
     164         7464 :          qs_energy%core_cneo = 0.0_dp
     165         7464 :          qs_energy%repulsive = 0.0_dp
     166         7464 :          qs_energy%dispersion = 0.0_dp
     167         7464 :          qs_energy%gcp = 0.0_dp
     168         7464 :          qs_energy%qmmm_el = 0.0_dp
     169         7464 :          qs_energy%qmmm_nu = 0.0_dp
     170         7464 :          qs_energy%ex = 0.0_dp
     171         7464 :          qs_energy%exc = 0.0_dp
     172         7464 :          qs_energy%exc_aux_fit = 0.0_dp
     173         7464 :          qs_energy%exc1 = 0.0_dp
     174         7464 :          qs_energy%exc1_aux_fit = 0.0_dp
     175         7464 :          qs_energy%e_hartree = 0.0_dp
     176         7464 :          qs_energy%hartree = 0.0_dp
     177         7464 :          qs_energy%hartree_1c = 0.0_dp
     178         7464 :          qs_energy%image_charge = 0.0_dp
     179         7464 :          qs_energy%mulliken = 0.0_dp
     180         7464 :          qs_energy%cdft = 0.0_dp
     181         7464 :          qs_energy%efield = 0.0_dp
     182         7464 :          qs_energy%efield_core = 0.0_dp
     183         7464 :          qs_energy%ee = 0.0_dp
     184         7464 :          qs_energy%ee_core = 0.0_dp
     185         7464 :          qs_energy%s2_restraint = 0.0_dp
     186         7464 :          qs_energy%dft_plus_u = 0.0_dp
     187         7464 :          qs_energy%sccs_hartree = 0.0_dp
     188         7464 :          qs_energy%sccs_pol = 0.0_dp
     189         7464 :          qs_energy%sccs_cav = 0.0_dp
     190         7464 :          qs_energy%sccs_dis = 0.0_dp
     191         7464 :          qs_energy%sccs_rep = 0.0_dp
     192         7464 :          qs_energy%sccs_sol = 0.0_dp
     193         7464 :          qs_energy%dftb3 = 0.0_dp
     194         7464 :          qs_energy%kTS = 0.0_dp
     195         7464 :          qs_energy%mp2 = 0.0_dp
     196         7464 :          qs_energy%efermi = 0.0_dp
     197         7464 :          qs_energy%kinetic = 0.0_dp
     198         7464 :          qs_energy%surf_dipole = 0.0_dp
     199         7464 :          qs_energy%excited_state = 0.0_dp
     200         7464 :          qs_energy%total = 0.0_dp
     201         7464 :          qs_energy%singles_corr = 0.0_dp
     202         7464 :          qs_energy%nonscf_correction = 0.0_dp
     203         7464 :          IF (.NOT. ASSOCIATED(qs_energy%ddapc_restraint)) THEN
     204         7464 :             ALLOCATE (qs_energy%ddapc_restraint(1))
     205              :          END IF
     206        14928 :          qs_energy%ddapc_restraint(:) = 0.0_dp
     207              :       ELSE
     208              :          CALL cp_abort(__LOCATION__, &
     209              :                        "The qs_energy pointer is not associated "// &
     210            0 :                        "and cannot be initialised")
     211              :       END IF
     212              : 
     213         7464 :    END SUBROUTINE init_qs_energy
     214              : 
     215            0 : END MODULE qs_energy_types
        

Generated by: LCOV version 2.0-1