LCOV - code coverage report
Current view: top level - src/base - kinds.F (source / functions) Coverage Total Hit
Test: CP2K Regtests (git:936074a) Lines: 100.0 % 23 23
Test Date: 2025-12-04 06:27:48 Functions: 100.0 % 1 1

            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 Defines the basic variable types
      10              : !> \note
      11              : !>      Data type definitions; tested on:
      12              : !>          - IBM AIX xlf90
      13              : !>          - SGI IRIX  f90
      14              : !>          - CRAY T3E  f90
      15              : !>          - DEC ALPHA f90
      16              : !>          - NAG_F90
      17              : !>          - SUN
      18              : !>          - HITACHI
      19              : !> \par History
      20              : !>      Adapted for CP2K by JGH
      21              : !> \author Matthias Krack
      22              : ! **************************************************************************************************
      23              : MODULE kinds
      24              : 
      25              :    IMPLICIT NONE
      26              : 
      27              :    PRIVATE
      28              :    PUBLIC :: sp, dp, print_kind_info, dp_size, sp_size, int_size
      29              :    PUBLIC :: int_1, int_4, int_8, int_1_size, int_2_size, int_4_size, int_8_size
      30              :    PUBLIC :: real_4, real_8, real_4_size, real_8_size
      31              :    PUBLIC :: default_string_length, default_path_length, max_line_length
      32              : 
      33              :    INTEGER, PARAMETER :: sp = SELECTED_REAL_KIND(6, 30)
      34              :    INTEGER, PARAMETER :: dp = SELECTED_REAL_KIND(14, 200)
      35              :    ! we rely on this (libraries) but do not check this
      36              :    INTEGER, PARAMETER :: dp_size = 8, &
      37              :                          int_size = BIT_SIZE(0)/8, &
      38              :                          sp_size = 4
      39              : 
      40              :    INTEGER, PARAMETER :: real_4 = SELECTED_REAL_KIND(6, 30)
      41              :    INTEGER, PARAMETER :: real_8 = SELECTED_REAL_KIND(14, 200)
      42              :    INTEGER, PARAMETER :: real_4_size = 4
      43              :    INTEGER, PARAMETER :: real_8_size = 8
      44              : 
      45              :    INTEGER, PARAMETER :: int_1 = SELECTED_INT_KIND(2)
      46              :    INTEGER, PARAMETER :: int_1_size = BIT_SIZE(INT(0, int_1))/8
      47              : 
      48              :    INTEGER, PARAMETER :: int_2 = SELECTED_INT_KIND(4)
      49              :    INTEGER, PARAMETER :: int_2_size = BIT_SIZE(INT(0, int_2))/8
      50              : 
      51              :    INTEGER, PARAMETER :: int_4 = SELECTED_INT_KIND(5)
      52              :    INTEGER, PARAMETER :: int_4_size = BIT_SIZE(INT(0, int_4))/8
      53              : 
      54              :    INTEGER, PARAMETER :: int_8 = SELECTED_INT_KIND(10)
      55              :    INTEGER, PARAMETER :: int_8_size = BIT_SIZE(INT(0, int_8))/8
      56              : 
      57              :    INTEGER, PARAMETER :: default_string_length = 80
      58              :    INTEGER, PARAMETER :: default_path_length = 1024
      59              :    INTEGER, PARAMETER :: max_line_length = 2*default_path_length
      60              :    CHARACTER(LEN=1), PARAMETER, PUBLIC :: default_blank_character(2) = [" ", CHAR(9)]
      61              : 
      62              : CONTAINS
      63              : 
      64              : ! **************************************************************************************************
      65              : !> \brief Print informations about the used data types.
      66              : !> \param iw ...
      67              : !> \par History
      68              : !>      Adapted by JGH for Cp2k
      69              : !> \author Matthias Krack
      70              : ! **************************************************************************************************
      71            1 :    SUBROUTINE print_kind_info(iw)
      72              : 
      73              :       INTEGER, INTENT(IN)                                :: iw
      74              : 
      75            1 :       WRITE (iw, '( /, T2, A )') 'DATA TYPE INFORMATION:'
      76              : 
      77              :       WRITE (iw, '( /,T2,A,T79,A,2(/,T2,A,T75,I6),3(/,T2,A,T67,E14.8) )') &
      78            1 :          'REAL: Data type name:', 'dp', '      Kind value:', KIND(0.0_dp), &
      79            1 :          '      Precision:', PRECISION(0.0_dp), &
      80            1 :          '      Smallest non-negligible quantity relative to 1:', &
      81            1 :          EPSILON(0.0_dp), &
      82            1 :          '      Smallest positive number:', TINY(0.0_dp), &
      83            2 :          '      Largest representable number:', HUGE(0.0_dp)
      84              :       WRITE (iw, '( /,T2,A,T79,A,2(/,T2,A,T75,I6),3(/,T2,A,T67,E14.8) )') &
      85            1 :          '      Data type name:', 'sp', '      Kind value:', KIND(0.0_sp), &
      86            1 :          '      Precision:', PRECISION(0.0_sp), &
      87            1 :          '      Smallest non-negligible quantity relative to 1:', &
      88            1 :          EPSILON(0.0_sp), &
      89            1 :          '      Smallest positive number:', TINY(0.0_sp), &
      90            2 :          '      Largest representable number:', HUGE(0.0_sp)
      91              :       WRITE (iw, '( /,T2,A,T72,A,4(/,T2,A,T61,I20) )') &
      92            1 :          'INTEGER: Data type name:', '(default)', '         Kind value:', &
      93            1 :          KIND(0), &
      94            1 :          '         Bit size:', BIT_SIZE(0), &
      95            2 :          '         Largest representable number:', HUGE(0)
      96              :       WRITE (iw, '( /,T2,A,T72,A,/,T2,A,T75,I6,/ )') &
      97            1 :          'LOGICAL: Data type name:', '(default)', &
      98            2 :          '         Kind value:', KIND(.TRUE.)
      99              :       WRITE (iw, '( /,T2,A,T72,A,/,T2,A,T75,I6,/ )') &
     100            1 :          'CHARACTER: Data type name:', '(default)', &
     101            2 :          '           Kind value:', KIND('C')
     102              : 
     103            1 :    END SUBROUTINE print_kind_info
     104              : 
     105              : END MODULE kinds
        

Generated by: LCOV version 2.0-1