LCOV - code coverage report
Current view: top level - src - tblite_types.F (source / functions) Hit Total Coverage
Test: CP2K Regtests (git:dc5a454) Lines: 28 29 96.6 %
Date: 2025-06-17 07:40:17 Functions: 2 4 50.0 %

          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 types for tblite
      10             : !> \author JVP
      11             : !> \history creation 09.2024
      12             : ! **************************************************************************************************
      13             : 
      14             : MODULE tblite_types
      15             : 
      16             : #if defined(__TBLITE)
      17             :    USE mctc_io, ONLY: structure_type, new
      18             :    USE tblite_xtb_calculator, ONLY: xtb_calculator
      19             :    USE tblite_container, ONLY: container_cache
      20             :    USE tblite_wavefunction_type, ONLY: wavefunction_type
      21             :    USE tblite_scf_potential, ONLY: potential_type
      22             : #endif
      23             : 
      24             :    USE cp_dbcsr_api, ONLY: dbcsr_p_type
      25             :    USE cp_dbcsr_operations, ONLY: dbcsr_deallocate_matrix_set
      26             :    USE kinds, ONLY: dp
      27             : 
      28             : #include "./base/base_uses.f90"
      29             :    IMPLICIT NONE
      30             : 
      31             :    PRIVATE
      32             : 
      33             :    CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'tblite_types'
      34             : 
      35             :    PUBLIC :: tblite_type, deallocate_tblite_type, allocate_tblite_type
      36             : 
      37             :    TYPE tblite_type
      38             : 
      39             :       LOGICAL                                            :: use_virial = .FALSE.
      40             :       INTEGER, ALLOCATABLE                               :: el_num(:)
      41             : 
      42             :       REAL(KIND=dp), DIMENSION(3, 3)                     :: sigma = -1.0_dp
      43             :       REAL(KIND=dp), ALLOCATABLE                         :: e_hal(:)
      44             :       REAL(KIND=dp), ALLOCATABLE                         :: e_rep(:)
      45             :       REAL(KIND=dp), ALLOCATABLE                         :: e_disp(:)
      46             :       REAL(KIND=dp), ALLOCATABLE                         :: e_scd(:)
      47             :       REAL(KIND=dp), ALLOCATABLE                         :: e_es(:)
      48             :       REAL(KIND=dp), ALLOCATABLE                         :: selfenergy(:)
      49             :       REAL(KIND=dp), ALLOCATABLE                         :: cn(:)
      50             : 
      51             :       REAL(KIND=dp), ALLOCATABLE                         :: grad(:, :)
      52             :       !derivatives w. r. t. coordination number
      53             :       REAL(KIND=dp), ALLOCATABLE                         :: dsedcn(:)
      54             :       REAL(KIND=dp), ALLOCATABLE                         :: dcndr(:, :, :)
      55             :       REAL(KIND=dp), ALLOCATABLE                         :: dcndL(:, :, :)
      56             : 
      57             :       TYPE(dbcsr_p_type), DIMENSION(:), POINTER          :: dipbra => Null(), &
      58             :                                                             dipket => Null()
      59             :       TYPE(dbcsr_p_type), DIMENSION(:), POINTER          :: quadbra => Null(), &
      60             :                                                             quadket => Null()
      61             : 
      62             : #if defined(__TBLITE)
      63             :       TYPE(structure_type)                               :: mol = structure_type()
      64             :       TYPE(xtb_calculator)                               :: calc = xtb_calculator()
      65             :       TYPE(container_cache)                              :: cache = container_cache()
      66             :       TYPE(container_cache)                              :: dcache = container_cache()
      67             :       TYPE(wavefunction_type)                            :: wfn = wavefunction_type()
      68             :       TYPE(potential_type)                               :: pot = potential_type()
      69             : #endif
      70             : 
      71             :    END TYPE tblite_type
      72             : 
      73             : CONTAINS
      74             : 
      75             : ! **************************************************************************************************
      76             : !> \brief ...
      77             : !> \param tb_tblite ...
      78             : ! **************************************************************************************************
      79          40 :    SUBROUTINE allocate_tblite_type(tb_tblite)
      80             : 
      81             :       TYPE(tblite_type), POINTER                         :: tb_tblite
      82             : 
      83          40 :       CALL deallocate_tblite_type(tb_tblite)
      84             : 
      85         560 :       ALLOCATE (tb_tblite)
      86             : 
      87          40 :    END SUBROUTINE allocate_tblite_type
      88             : 
      89             : ! **************************************************************************************************
      90             : !> \brief ...
      91             : !> \param tb_tblite ...
      92             : ! **************************************************************************************************
      93          80 :    SUBROUTINE deallocate_tblite_type(tb_tblite)
      94             : 
      95             :       TYPE(tblite_type), POINTER                         :: tb_tblite
      96             : 
      97          80 :       IF (ASSOCIATED(tb_tblite)) THEN
      98          40 :          IF (ALLOCATED(tb_tblite%el_num)) DEALLOCATE (tb_tblite%el_num)
      99             : 
     100          40 :          IF (ALLOCATED(tb_tblite%e_hal)) DEALLOCATE (tb_tblite%e_hal)
     101          40 :          IF (ALLOCATED(tb_tblite%e_rep)) DEALLOCATE (tb_tblite%e_rep)
     102          40 :          IF (ALLOCATED(tb_tblite%e_disp)) DEALLOCATE (tb_tblite%e_disp)
     103          40 :          IF (ALLOCATED(tb_tblite%e_scd)) DEALLOCATE (tb_tblite%e_scd)
     104          40 :          IF (ALLOCATED(tb_tblite%e_es)) DEALLOCATE (tb_tblite%e_es)
     105          40 :          IF (ALLOCATED(tb_tblite%selfenergy)) DEALLOCATE (tb_tblite%selfenergy)
     106          40 :          IF (ALLOCATED(tb_tblite%cn)) DEALLOCATE (tb_tblite%cn)
     107             : 
     108          40 :          IF (ALLOCATED(tb_tblite%grad)) DEALLOCATE (tb_tblite%grad)
     109          40 :          IF (ALLOCATED(tb_tblite%dsedcn)) DEALLOCATE (tb_tblite%dsedcn)
     110          40 :          IF (ALLOCATED(tb_tblite%dcndr)) DEALLOCATE (tb_tblite%dcndr)
     111          40 :          IF (ALLOCATED(tb_tblite%dcndL)) DEALLOCATE (tb_tblite%dcndL)
     112             : 
     113          40 :          IF (ASSOCIATED(tb_tblite%dipbra)) &
     114          10 :             CALL dbcsr_deallocate_matrix_set(tb_tblite%dipbra)
     115          40 :          IF (ASSOCIATED(tb_tblite%dipket)) &
     116          10 :             CALL dbcsr_deallocate_matrix_set(tb_tblite%dipket)
     117          40 :          IF (ASSOCIATED(tb_tblite%quadbra)) &
     118          10 :             CALL dbcsr_deallocate_matrix_set(tb_tblite%quadbra)
     119          40 :          IF (ASSOCIATED(tb_tblite%quadket)) &
     120          10 :             CALL dbcsr_deallocate_matrix_set(tb_tblite%quadket)
     121             : 
     122          40 :          DEALLOCATE (tb_tblite)
     123             :       END IF
     124             : 
     125          80 :    END SUBROUTINE deallocate_tblite_type
     126             : 
     127           0 : END MODULE tblite_types

Generated by: LCOV version 1.15