LCOV - code coverage report
Current view: top level - src/motion - md_ener_types.F (source / functions) Coverage Total Hit
Test: CP2K Regtests (git:936074a) Lines: 98.1 % 53 52
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              : !> \brief Split md_ener module from md_environment_type
      10              : !>  \author Teodoro Laino [tlaino] - 03.2008 - University of Zurich
      11              : ! **************************************************************************************************
      12              : MODULE md_ener_types
      13              : 
      14              :    USE kinds,                           ONLY: dp
      15              : #include "../base/base_uses.f90"
      16              : 
      17              :    IMPLICIT NONE
      18              : 
      19              :    PRIVATE
      20              : 
      21              : ! **************************************************************************************************
      22              :    TYPE md_ener_type
      23              :       INTEGER       :: nfree = 0, nfree_shell = 0
      24              :       REAL(KIND=dp) :: constant = 0.0_dp
      25              :       REAL(KIND=dp) :: delta_cons = 0.0_dp, delta_epot = 0.0_dp
      26              :       REAL(KIND=dp) :: epot = 0.0_dp
      27              :       REAL(KIND=dp) :: ekin = 0.0_dp, ekin_qm = 0.0_dp
      28              :       REAL(KIND=dp) :: temp_part = 0.0_dp, temp_qm = 0.0_dp
      29              :       REAL(KIND=dp) :: temp_baro = 0.0_dp
      30              :       REAL(KIND=dp) :: ekin_coefs = 0.0_dp
      31              :       REAL(KIND=dp) :: temp_coefs = 0.0_dp
      32              :       REAL(KIND=dp) :: ekin_shell = 0.0_dp, temp_shell = 0.0_dp
      33              :       REAL(KIND=dp) :: thermostat_part_kin = 0.0_dp, thermostat_part_pot = 0.0_dp
      34              :       REAL(KIND=dp) :: thermostat_fast_kin = 0.0_dp, thermostat_fast_pot = 0.0_dp
      35              :       REAL(KIND=dp) :: thermostat_slow_kin = 0.0_dp, thermostat_slow_pot = 0.0_dp
      36              :       REAL(KIND=dp) :: thermostat_baro_kin = 0.0_dp, thermostat_baro_pot = 0.0_dp
      37              :       REAL(KIND=dp) :: thermostat_coef_kin = 0.0_dp, thermostat_coef_pot = 0.0_dp
      38              :       REAL(KIND=dp) :: thermostat_shell_kin = 0.0_dp, thermostat_shell_pot = 0.0_dp
      39              :       REAL(KIND=dp) :: baro_kin = 0.0_dp, baro_pot = 0.0_dp
      40              :       REAL(KIND=dp) :: vcom(3) = 0.0_dp, total_mass = 0.0_dp
      41              :       REAL(KIND=dp), DIMENSION(:), POINTER :: ekin_kind => NULL()
      42              :       REAL(KIND=dp), DIMENSION(:), POINTER :: temp_kind => NULL()
      43              :       INTEGER, DIMENSION(:), POINTER       :: nfree_kind => NULL()
      44              :       REAL(KIND=dp), DIMENSION(:), POINTER :: ekin_shell_kind => NULL()
      45              :       REAL(KIND=dp), DIMENSION(:), POINTER :: temp_shell_kind => NULL()
      46              :       INTEGER, DIMENSION(:), POINTER       :: nfree_shell_kind => NULL()
      47              :    END TYPE md_ener_type
      48              : 
      49              : ! *** Public subroutines and data types ***
      50              :    PUBLIC :: create_md_ener, release_md_ener, md_ener_type, zero_md_ener
      51              : 
      52              : ! *** Global parameters ***
      53              : 
      54              :    CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'md_ener_types'
      55              : 
      56              : CONTAINS
      57              : 
      58              : ! **************************************************************************************************
      59              : !> \brief retains the given md_ener structure
      60              : !> \param md_ener ...
      61              : !> \par History
      62              : !>      10.2007 created [MI]
      63              : !> \author MI
      64              : ! **************************************************************************************************
      65         7076 :    SUBROUTINE create_md_ener(md_ener)
      66              :       TYPE(md_ener_type), INTENT(OUT)                    :: md_ener
      67              : 
      68              :       MARK_USED(md_ener)
      69              : 
      70         1769 :    END SUBROUTINE create_md_ener
      71              : 
      72              : ! **************************************************************************************************
      73              : !> \brief releases the given md_ener structure
      74              : !> \param md_ener ...
      75              : !> \par History
      76              : !>      10.2007 created [MI]
      77              : !> \author MI
      78              : ! **************************************************************************************************
      79         1769 :    SUBROUTINE release_md_ener(md_ener)
      80              :       TYPE(md_ener_type), INTENT(INOUT)                  :: md_ener
      81              : 
      82         1769 :       IF (ASSOCIATED(md_ener%temp_kind)) THEN
      83           36 :          DEALLOCATE (md_ener%temp_kind)
      84              :       END IF
      85         1769 :       IF (ASSOCIATED(md_ener%ekin_kind)) THEN
      86           36 :          DEALLOCATE (md_ener%ekin_kind)
      87              :       END IF
      88         1769 :       IF (ASSOCIATED(md_ener%nfree_kind)) THEN
      89           36 :          DEALLOCATE (md_ener%nfree_kind)
      90              :       END IF
      91         1769 :       IF (ASSOCIATED(md_ener%temp_shell_kind)) THEN
      92           18 :          DEALLOCATE (md_ener%temp_shell_kind)
      93              :       END IF
      94         1769 :       IF (ASSOCIATED(md_ener%ekin_shell_kind)) THEN
      95           18 :          DEALLOCATE (md_ener%ekin_shell_kind)
      96              :       END IF
      97         1769 :       IF (ASSOCIATED(md_ener%nfree_shell_kind)) THEN
      98           18 :          DEALLOCATE (md_ener%nfree_shell_kind)
      99              :       END IF
     100              : 
     101         1769 :    END SUBROUTINE release_md_ener
     102              : 
     103              : ! **************************************************************************************************
     104              : !> \brief initialize to zero energies and temperatures
     105              : !> \param md_ener ...
     106              : !> \param tkind ...
     107              : !> \param tshell ...
     108              : !> \par History
     109              : !>      10.2007 created [MI]
     110              : !> \author MI
     111              : ! **************************************************************************************************
     112        44100 :    SUBROUTINE zero_md_ener(md_ener, tkind, tshell)
     113              :       TYPE(md_ener_type), INTENT(INOUT)                  :: md_ener
     114              :       LOGICAL, INTENT(IN)                                :: tkind, tshell
     115              : 
     116        44100 :       md_ener%ekin = 0.0_dp
     117        44100 :       md_ener%temp_part = 0.0_dp
     118        44100 :       md_ener%temp_baro = 0.0_dp
     119        44100 :       md_ener%ekin_coefs = 0.0_dp
     120        44100 :       md_ener%temp_coefs = 0.0_dp
     121        44100 :       md_ener%ekin_qm = 0.0_dp
     122        44100 :       md_ener%temp_qm = 0.0_dp
     123        44100 :       md_ener%ekin_shell = 0.0_dp
     124        44100 :       md_ener%temp_shell = 0.0_dp
     125        44100 :       md_ener%constant = 0.0_dp
     126        44100 :       md_ener%delta_cons = 0.0_dp
     127        44100 :       md_ener%delta_epot = 0.0_dp
     128        44100 :       md_ener%thermostat_part_kin = 0.0_dp
     129        44100 :       md_ener%thermostat_part_pot = 0.0_dp
     130        44100 :       md_ener%thermostat_fast_kin = 0.0_dp
     131        44100 :       md_ener%thermostat_fast_pot = 0.0_dp
     132        44100 :       md_ener%thermostat_slow_kin = 0.0_dp
     133        44100 :       md_ener%thermostat_slow_pot = 0.0_dp
     134        44100 :       md_ener%thermostat_coef_kin = 0.0_dp
     135        44100 :       md_ener%thermostat_coef_pot = 0.0_dp
     136        44100 :       md_ener%thermostat_baro_kin = 0.0_dp
     137        44100 :       md_ener%thermostat_baro_pot = 0.0_dp
     138        44100 :       md_ener%thermostat_shell_kin = 0.0_dp
     139        44100 :       md_ener%thermostat_shell_pot = 0.0_dp
     140        44100 :       md_ener%baro_kin = 0.0_dp
     141        44100 :       md_ener%baro_pot = 0.0_dp
     142        44100 :       IF (tkind) THEN
     143         2824 :          md_ener%temp_kind = 0.0_dp
     144         2824 :          md_ener%ekin_kind = 0.0_dp
     145              : 
     146          938 :          IF (tshell) THEN
     147         1188 :             md_ener%temp_shell_kind = 0.0_dp
     148         1188 :             md_ener%ekin_shell_kind = 0.0_dp
     149              :          END IF
     150              :       END IF
     151       176400 :       md_ener%vcom(:) = 0.0_dp
     152        44100 :       md_ener%total_mass = 0.0_dp
     153        44100 :    END SUBROUTINE zero_md_ener
     154              : 
     155            0 : END MODULE md_ener_types
        

Generated by: LCOV version 2.0-1