LCOV - code coverage report
Current view: top level - src - qs_energy_types.F (source / functions) Hit Total Coverage
Test: CP2K Regtests (git:34ae921) Lines: 61 64 95.3 %
Date: 2024-09-13 19:57:57 Functions: 3 4 75.0 %

          Line data    Source code
       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             : ! **************************************************************************************************
      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             :                        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             :                        band = 0.0_dp, & ! Band energy (Tr PH)
      62             :                        dftb3 = 0.0_dp, & ! DFTB 3rd order correction
      63             :                        nonscf_correction = 0.0_dp, & ! e.g. Harris correction
      64             :                        mp2 = 0.0_dp, &
      65             :                        ! single excitations correction for all
      66             :                        ! non-scf orbital(density) corrections
      67             :                        ! for example, almo delocalization corrction
      68             :                        singles_corr = 0.0_dp, &
      69             :                        ! excitation energy
      70             :                        excited_state = 0.0_dp, &
      71             :                        total = 0.0_dp, &
      72             :                        tot_old = 0.0_dp, &
      73             :                        kinetic = 0.0_dp, & !total kinetic energy [rk]
      74             :                        s_square = 0.0_dp, &
      75             :                        surf_dipole = 0.0_dp, &
      76             :                        embed_corr = 0.0_dp, & ! correction for embedding potential
      77             :                        xtb_xb_inter = 0.0_dp, & ! correction for halogen bonding within GFN1-xTB
      78             :                        xtb_nonbonded = 0.0_dp ! correction for nonbonded interactions within GFN1-xTB
      79             :       REAL(KIND=dp), DIMENSION(:), POINTER :: ddapc_restraint => NULL()
      80             :    END TYPE qs_energy_type
      81             : 
      82             :    ! Public data types
      83             : 
      84             :    PUBLIC :: qs_energy_type
      85             : 
      86             :    ! Public subroutines
      87             : 
      88             :    PUBLIC :: allocate_qs_energy, &
      89             :              deallocate_qs_energy, &
      90             :              init_qs_energy
      91             : 
      92             : CONTAINS
      93             : 
      94             : ! **************************************************************************************************
      95             : !> \brief   Allocate and/or initialise a Quickstep energy data structure.
      96             : !> \param qs_energy ...
      97             : !> \date    13.06.2002
      98             : !> \author  MK
      99             : !> \version 1.0
     100             : ! **************************************************************************************************
     101        6608 :    SUBROUTINE allocate_qs_energy(qs_energy)
     102             : 
     103             :       TYPE(qs_energy_type), POINTER                      :: qs_energy
     104             : 
     105             :       CHARACTER(len=*), PARAMETER :: routineN = 'allocate_qs_energy'
     106             : 
     107             :       INTEGER                                            :: handle
     108             : 
     109        6608 :       CALL timeset(routineN, handle)
     110        6608 :       IF (.NOT. ASSOCIATED(qs_energy)) THEN
     111        6608 :          ALLOCATE (qs_energy)
     112             :          NULLIFY (qs_energy%ddapc_restraint)
     113             :       END IF
     114             : 
     115        6608 :       CALL init_qs_energy(qs_energy)
     116        6608 :       CALL timestop(handle)
     117             : 
     118        6608 :    END SUBROUTINE allocate_qs_energy
     119             : 
     120             : ! **************************************************************************************************
     121             : !> \brief   Deallocate a Quickstep energy data structure.
     122             : !> \param qs_energy ...
     123             : !> \date    13.06.2002
     124             : !> \author  MK
     125             : !> \version 1.0
     126             : ! **************************************************************************************************
     127        6608 :    SUBROUTINE deallocate_qs_energy(qs_energy)
     128             :       TYPE(qs_energy_type), POINTER                      :: qs_energy
     129             : 
     130        6608 :       IF (ASSOCIATED(qs_energy)) THEN
     131        6608 :          IF (ASSOCIATED(qs_energy%ddapc_restraint)) THEN
     132        6608 :             DEALLOCATE (qs_energy%ddapc_restraint)
     133             :          END IF
     134        6608 :          DEALLOCATE (qs_energy)
     135             :       ELSE
     136             :          CALL cp_abort(__LOCATION__, &
     137             :                        "The qs_energy pointer is not associated "// &
     138           0 :                        "and cannot be deallocated")
     139             :       END IF
     140             : 
     141        6608 :    END SUBROUTINE deallocate_qs_energy
     142             : 
     143             : ! **************************************************************************************************
     144             : !> \brief   Initialise a Quickstep energy data structure.
     145             : !> \param qs_energy ...
     146             : !> \date    13.06.2002
     147             : !> \author  MK
     148             : !> \version 1.0
     149             : ! **************************************************************************************************
     150        6608 :    SUBROUTINE init_qs_energy(qs_energy)
     151             : 
     152             :       TYPE(qs_energy_type), POINTER                      :: qs_energy
     153             : 
     154        6608 :       IF (ASSOCIATED(qs_energy)) THEN
     155        6608 :          qs_energy%core = 0.0_dp
     156        6608 :          qs_energy%core_overlap = 0.0_dp
     157        6608 :          qs_energy%core_overlap0 = 0.0_dp
     158        6608 :          qs_energy%core_self = 0.0_dp
     159        6608 :          qs_energy%repulsive = 0.0_dp
     160        6608 :          qs_energy%dispersion = 0.0_dp
     161        6608 :          qs_energy%gcp = 0.0_dp
     162        6608 :          qs_energy%qmmm_el = 0.0_dp
     163        6608 :          qs_energy%qmmm_nu = 0.0_dp
     164        6608 :          qs_energy%ex = 0.0_dp
     165        6608 :          qs_energy%exc = 0.0_dp
     166        6608 :          qs_energy%exc_aux_fit = 0.0_dp
     167        6608 :          qs_energy%exc1 = 0.0_dp
     168        6608 :          qs_energy%exc1_aux_fit = 0.0_dp
     169        6608 :          qs_energy%e_hartree = 0.0_dp
     170        6608 :          qs_energy%hartree = 0.0_dp
     171        6608 :          qs_energy%hartree_1c = 0.0_dp
     172        6608 :          qs_energy%image_charge = 0.0_dp
     173        6608 :          qs_energy%mulliken = 0.0_dp
     174        6608 :          qs_energy%cdft = 0.0_dp
     175        6608 :          qs_energy%efield = 0.0_dp
     176        6608 :          qs_energy%efield_core = 0.0_dp
     177        6608 :          qs_energy%ee = 0.0_dp
     178        6608 :          qs_energy%ee_core = 0.0_dp
     179        6608 :          qs_energy%s2_restraint = 0.0_dp
     180        6608 :          qs_energy%dft_plus_u = 0.0_dp
     181        6608 :          qs_energy%sccs_hartree = 0.0_dp
     182        6608 :          qs_energy%sccs_pol = 0.0_dp
     183        6608 :          qs_energy%sccs_cav = 0.0_dp
     184        6608 :          qs_energy%sccs_dis = 0.0_dp
     185        6608 :          qs_energy%sccs_rep = 0.0_dp
     186        6608 :          qs_energy%sccs_sol = 0.0_dp
     187        6608 :          qs_energy%dftb3 = 0.0_dp
     188        6608 :          qs_energy%kTS = 0.0_dp
     189        6608 :          qs_energy%mp2 = 0.0_dp
     190        6608 :          qs_energy%efermi = 0.0_dp
     191        6608 :          qs_energy%kinetic = 0.0_dp
     192        6608 :          qs_energy%surf_dipole = 0.0_dp
     193        6608 :          qs_energy%excited_state = 0.0_dp
     194        6608 :          qs_energy%total = 0.0_dp
     195        6608 :          qs_energy%singles_corr = 0.0_dp
     196        6608 :          qs_energy%nonscf_correction = 0.0_dp
     197        6608 :          IF (.NOT. ASSOCIATED(qs_energy%ddapc_restraint)) THEN
     198        6608 :             ALLOCATE (qs_energy%ddapc_restraint(1))
     199             :          END IF
     200       13216 :          qs_energy%ddapc_restraint(:) = 0.0_dp
     201             :       ELSE
     202             :          CALL cp_abort(__LOCATION__, &
     203             :                        "The qs_energy pointer is not associated "// &
     204           0 :                        "and cannot be initialised")
     205             :       END IF
     206             : 
     207        6608 :    END SUBROUTINE init_qs_energy
     208             : 
     209           0 : END MODULE qs_energy_types

Generated by: LCOV version 1.15