LCOV - code coverage report
Current view: top level - src/subsys - shell_potential_types.F (source / functions) Coverage Total Hit
Test: CP2K Regtests (git:42dac4a) Lines: 96.0 % 25 24
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              : ! **************************************************************************************************
       9              : !> \author MI (12.01.2007)
      10              : ! **************************************************************************************************
      11              : MODULE shell_potential_types
      12              : 
      13              :    USE kinds,                           ONLY: default_string_length,&
      14              :                                               dp
      15              : #include "../base/base_uses.f90"
      16              : 
      17              :    IMPLICIT NONE
      18              : 
      19              :    PRIVATE
      20              : 
      21              : ! Global parameters (only in this module)
      22              : 
      23              :    CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'shell_potential_types'
      24              : 
      25              : ! **************************************************************************************************
      26              : !> \brief Define the shell type
      27              : ! **************************************************************************************************
      28              :    TYPE shell_kind_type
      29              :       REAL(dp)                               :: charge_core = 0.0_dp, &
      30              :                                                 charge_shell = 0.0_dp
      31              :       REAL(dp)                               :: mass_core = 0.0_dp, &
      32              :                                                 massfrac = 0.0_dp, &
      33              :                                                 mass_shell = 0.0_dp
      34              :       REAL(dp)                               :: k2_spring = 0.0_dp, k4_spring = 0.0_dp
      35              :       REAL(dp)                               :: max_dist = 0.0_dp
      36              :       REAL(dp)                               :: shell_cutoff = 0.0_dp
      37              :    END TYPE shell_kind_type
      38              : 
      39              : ! **************************************************************************************************
      40              :    TYPE shell_p_type
      41              :       CHARACTER(LEN=default_string_length)   :: atm_name = ""
      42              :       TYPE(shell_kind_type), POINTER          :: shell => NULL()
      43              :    END TYPE shell_p_type
      44              : 
      45              : ! Public subroutines
      46              : 
      47              :    PUBLIC :: get_shell, shell_p_create, &
      48              :              shell_p_release
      49              : 
      50              : ! Public data types
      51              : 
      52              :    PUBLIC :: shell_p_type, shell_kind_type
      53              : 
      54              : CONTAINS
      55              : 
      56              : ! **************************************************************************************************
      57              : !> \brief ...
      58              : !> \param shell ...
      59              : !> \param charge ...
      60              : !> \param charge_core ...
      61              : !> \param charge_shell ...
      62              : !> \param mass_core ...
      63              : !> \param mass_shell ...
      64              : !> \param k2_spring ...
      65              : !> \param k4_spring ...
      66              : !> \param max_dist ...
      67              : !> \param shell_cutoff ...
      68              : ! **************************************************************************************************
      69        52256 :    ELEMENTAL SUBROUTINE get_shell(shell, charge, charge_core, charge_shell, mass_core, &
      70              :                                   mass_shell, k2_spring, k4_spring, max_dist, shell_cutoff)
      71              : 
      72              :       TYPE(shell_kind_type), INTENT(IN)                  :: shell
      73              :       REAL(KIND=dp), INTENT(OUT), OPTIONAL               :: charge, charge_core, charge_shell, &
      74              :                                                             mass_core, mass_shell, k2_spring, &
      75              :                                                             k4_spring, max_dist, shell_cutoff
      76              : 
      77        52256 :       IF (PRESENT(charge)) charge = shell%charge_core + shell%charge_shell
      78        52256 :       IF (PRESENT(charge_core)) charge_core = shell%charge_core
      79        52256 :       IF (PRESENT(charge_shell)) charge_shell = shell%charge_shell
      80        52256 :       IF (PRESENT(mass_core)) mass_core = shell%mass_core
      81        52256 :       IF (PRESENT(mass_shell)) mass_shell = shell%mass_shell
      82        52256 :       IF (PRESENT(k2_spring)) k2_spring = shell%k2_spring
      83        52256 :       IF (PRESENT(k4_spring)) k4_spring = shell%k4_spring
      84        52256 :       IF (PRESENT(max_dist)) max_dist = shell%max_dist
      85        52256 :       IF (PRESENT(shell_cutoff)) shell_cutoff = shell%shell_cutoff
      86              : 
      87        52256 :    END SUBROUTINE
      88              : 
      89              : ! **************************************************************************************************
      90              : !> \brief ...
      91              : !> \param shell_list ...
      92              : !> \param ndim ...
      93              : ! **************************************************************************************************
      94          256 :    SUBROUTINE shell_p_create(shell_list, ndim)
      95              : 
      96              :       TYPE(shell_p_type), DIMENSION(:), POINTER          :: shell_list
      97              :       INTEGER, INTENT(IN)                                :: ndim
      98              : 
      99              :       INTEGER                                            :: i
     100              : 
     101          256 :       CPASSERT(.NOT. ASSOCIATED(shell_list))
     102         1218 :       ALLOCATE (shell_list(ndim))
     103              : 
     104          706 :       DO i = 1, ndim
     105          706 :          ALLOCATE (shell_list(i)%shell)
     106              :       END DO
     107              : 
     108          256 :    END SUBROUTINE shell_p_create
     109              : 
     110              : ! **************************************************************************************************
     111              : !> \brief ...
     112              : !> \param shell_list ...
     113              : ! **************************************************************************************************
     114          256 :    SUBROUTINE shell_p_release(shell_list)
     115              :       TYPE(shell_p_type), DIMENSION(:), POINTER          :: shell_list
     116              : 
     117              :       INTEGER                                            :: i
     118              : 
     119          256 :       IF (ASSOCIATED(shell_list)) THEN
     120          706 :          DO i = 1, SIZE(shell_list)
     121          706 :             DEALLOCATE (shell_list(i)%shell)
     122              :          END DO
     123          256 :          DEALLOCATE (shell_list)
     124              :       END IF
     125              : 
     126          256 :       NULLIFY (shell_list)
     127              : 
     128          256 :    END SUBROUTINE shell_p_release
     129              : 
     130            0 : END MODULE shell_potential_types
        

Generated by: LCOV version 2.0-1