LCOV - code coverage report
Current view: top level - src - qs_oce_types.F (source / functions) Coverage Total Hit
Test: CP2K Regtests (git:42dac4a) Lines: 93.8 % 16 15
Test Date: 2025-07-25 12:55:17 Functions: 60.0 % 5 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              : MODULE qs_oce_types
       9              : 
      10              :    USE block_p_types,                   ONLY: block_p_type
      11              :    USE kinds,                           ONLY: dp
      12              :    USE sap_kind_types,                  ONLY: release_sap_int,&
      13              :                                               sap_int_type
      14              : #include "./base/base_uses.f90"
      15              : 
      16              :    IMPLICIT NONE
      17              : 
      18              :    PRIVATE
      19              : 
      20              : ! *** Global parameters (only in this module)
      21              : 
      22              :    CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qs_oce_types'
      23              : 
      24              : ! *** Define a oce matrix type ***
      25              : 
      26              : ! **************************************************************************************************
      27              :    TYPE qlist_type
      28              :       TYPE(block_p_type), DIMENSION(:), POINTER :: sac => NULL()
      29              :       REAL(KIND=dp), DIMENSION(:), POINTER      :: r2 => NULL()
      30              :       REAL(KIND=dp), DIMENSION(:, :), POINTER   :: r => NULL()
      31              :       INTEGER                                   :: n = -1
      32              :       INTEGER, DIMENSION(:), POINTER            :: index_list => NULL()
      33              :       INTEGER, DIMENSION(:), POINTER            :: list => NULL()
      34              :    END TYPE qlist_type
      35              : 
      36              : ! **************************************************************************************************
      37              :    TYPE oce_matrix_type
      38              :       TYPE(sap_int_type), DIMENSION(:), POINTER        :: intac => NULL()
      39              :    END TYPE
      40              : 
      41              : ! *** Public data types ***
      42              : 
      43              :    PUBLIC :: oce_matrix_type
      44              : 
      45              : ! *** Public subroutines ***
      46              : 
      47              :    PUBLIC :: allocate_oce_set, &
      48              :              create_oce_set, &
      49              :              deallocate_oce_set
      50              : 
      51              : CONTAINS
      52              : 
      53              : ! **************************************************************************************************
      54              : !> \brief   Allocate and initialize the matrix set of oce coefficients.
      55              : !> \param oce_set ...
      56              : !> \param nkind ...
      57              : !> \version 1.0
      58              : ! **************************************************************************************************
      59         2438 :    SUBROUTINE allocate_oce_set(oce_set, nkind)
      60              :       TYPE(oce_matrix_type), POINTER                     :: oce_set
      61              :       INTEGER, INTENT(IN)                                :: nkind
      62              : 
      63              :       INTEGER                                            :: i
      64              : 
      65        18616 :       ALLOCATE (oce_set%intac(nkind*nkind))
      66        13740 :       DO i = 1, nkind*nkind
      67        11302 :          NULLIFY (oce_set%intac(i)%alist)
      68        11302 :          NULLIFY (oce_set%intac(i)%asort)
      69        13740 :          NULLIFY (oce_set%intac(i)%aindex)
      70              :       END DO
      71              : 
      72         2438 :    END SUBROUTINE allocate_oce_set
      73              : 
      74              : ! **************************************************************************************************
      75              : !> \brief ...
      76              : !> \param oce_set ...
      77              : ! **************************************************************************************************
      78         2438 :    SUBROUTINE create_oce_set(oce_set)
      79              : 
      80              :       TYPE(oce_matrix_type), POINTER                     :: oce_set
      81              : 
      82         2438 :       IF (ASSOCIATED(oce_set)) CALL deallocate_oce_set(oce_set)
      83              : 
      84         2438 :       ALLOCATE (oce_set)
      85              : 
      86              :       NULLIFY (oce_set%intac)
      87              : 
      88         2438 :    END SUBROUTINE create_oce_set
      89              : 
      90              : ! **************************************************************************************************
      91              : !> \brief  Deallocate the matrix set of oce coefficients
      92              : !> \param oce_set ...
      93              : !> \date
      94              : !> \author
      95              : !> \version 1.0
      96              : ! **************************************************************************************************
      97         2438 :    SUBROUTINE deallocate_oce_set(oce_set)
      98              :       TYPE(oce_matrix_type), POINTER                     :: oce_set
      99              : 
     100         2438 :       IF (.NOT. ASSOCIATED(oce_set)) RETURN
     101              : 
     102         2438 :       IF (ASSOCIATED(oce_set%intac)) CALL release_sap_int(oce_set%intac)
     103              : 
     104         2438 :       DEALLOCATE (oce_set)
     105              : 
     106              :    END SUBROUTINE deallocate_oce_set
     107              : 
     108              : ! **************************************************************************************************
     109              : 
     110            0 : END MODULE qs_oce_types
        

Generated by: LCOV version 2.0-1