LCOV - code coverage report
Current view: top level - src - tblite_types.F (source / functions) Coverage Total Hit
Test: CP2K Regtests (git:cccd2f3) Lines: 96.7 % 30 29
Test Date: 2026-05-06 07:07:47 Functions: 50.0 % 4 2

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

Generated by: LCOV version 2.0-1