LCOV - code coverage report
Current view: top level - src/tb - tblite_types.F (source / functions) Coverage Total Hit
Test: CP2K Regtests (git:9ccafda) Lines: 94.7 % 19 18
Test Date: 2026-10-15 00:55:44 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
      18              :    USE tblite_xtb_calculator, ONLY: xtb_calculator
      19              :    USE tblite_container_cache, 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              :    USE tblite_param, ONLY: param_record
      24              : #endif
      25              : 
      26              :    USE cp_dbcsr_api, ONLY: dbcsr_p_type
      27              :    USE cp_dbcsr_operations, ONLY: dbcsr_deallocate_matrix_set
      28              :    USE input_constants, ONLY: tblite_mixer_damping_default, &
      29              :                               tblite_mixer_iterations_default, &
      30              :                               tblite_mixer_max_weight_default, &
      31              :                               tblite_mixer_min_weight_default, &
      32              :                               tblite_mixer_omega0_default, &
      33              :                               tblite_mixer_weight_factor_default
      34              :    USE kinds, ONLY: dp
      35              : 
      36              : #include "../base/base_uses.f90"
      37              :    IMPLICIT NONE
      38              : 
      39              :    PRIVATE
      40              : 
      41              :    CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'tblite_types'
      42              : 
      43              :    PUBLIC :: tblite_type, deallocate_tblite_type, allocate_tblite_type
      44              : 
      45              :    TYPE tblite_type
      46              : 
      47              :       LOGICAL                                            :: use_virial = .FALSE.
      48              :       INTEGER, ALLOCATABLE                               :: el_num(:)
      49              : 
      50              :       REAL(KIND=dp)                                      :: accuracy = 1.0_dp
      51              :       REAL(KIND=dp), DIMENSION(3, 3)                     :: sigma = -1.0_dp
      52              :       ! tblite contributions are currently replicated on every MPI rank.
      53              :       ! Force/virial assembly accounts for CP2K's subsequent MPI reductions.
      54              :       REAL(KIND=dp), ALLOCATABLE                         :: e_hal(:)
      55              :       REAL(KIND=dp), ALLOCATABLE                         :: e_rep(:)
      56              :       REAL(KIND=dp), ALLOCATABLE                         :: e_disp(:)
      57              :       REAL(KIND=dp), ALLOCATABLE                         :: e_scd(:)
      58              :       REAL(KIND=dp), ALLOCATABLE                         :: e_es(:)
      59              :       REAL(KIND=dp), ALLOCATABLE                         :: e_int(:)
      60              :       REAL(KIND=dp), ALLOCATABLE                         :: selfenergy(:)
      61              :       REAL(KIND=dp), ALLOCATABLE                         :: cn(:)
      62              : 
      63              :       REAL(KIND=dp), ALLOCATABLE                         :: grad(:, :)
      64              :       !derivatives w. r. t. coordination number
      65              :       REAL(KIND=dp), ALLOCATABLE                         :: dsedcn(:)
      66              :       REAL(KIND=dp), ALLOCATABLE                         :: dcndr(:, :, :)
      67              :       REAL(KIND=dp), ALLOCATABLE                         :: dcndL(:, :, :)
      68              : 
      69              :       TYPE(dbcsr_p_type), DIMENSION(:), POINTER          :: dipbra => Null(), &
      70              :                                                             dipket => Null()
      71              :       TYPE(dbcsr_p_type), DIMENSION(:), POINTER          :: quadbra => Null(), &
      72              :                                                             quadket => Null()
      73              :       ! Spin-resolved density snapshot used by the UKS/LSD force path.
      74              :       TYPE(dbcsr_p_type), DIMENSION(:, :), POINTER       :: rho_ao_kp_ref => Null()
      75              :       INTEGER                                            :: mixer_memory = tblite_mixer_iterations_default
      76              :       REAL(KIND=dp)                                      :: mixer_damping = tblite_mixer_damping_default
      77              :       REAL(KIND=dp)                                      :: mixer_max_weight = tblite_mixer_max_weight_default
      78              :       REAL(KIND=dp)                                      :: mixer_min_weight = tblite_mixer_min_weight_default
      79              :       REAL(KIND=dp)                                      :: mixer_omega0 = tblite_mixer_omega0_default
      80              :       REAL(KIND=dp)                                      :: mixer_weight_factor = tblite_mixer_weight_factor_default
      81              : 
      82              : #if defined(__TBLITE)
      83              :       TYPE(structure_type)                               :: mol = structure_type()
      84              :       TYPE(xtb_calculator)                               :: calc = xtb_calculator()
      85              :       ! Geometry-dependent caches: Coulomb, dispersion and additional interactions.
      86              :       ! Refreshed by tb_init_ham, reused for SCC potentials, energies and gradients.
      87              :       TYPE(container_cache)                              :: cache = container_cache()
      88              :       TYPE(container_cache)                              :: dcache = container_cache()
      89              :       TYPE(container_cache)                              :: icache = container_cache()
      90              :       TYPE(wavefunction_type)                            :: wfn = wavefunction_type()
      91              :       TYPE(potential_type)                               :: pot = potential_type()
      92              :       CLASS(mixer_type), ALLOCATABLE                     :: mixer
      93              :       TYPE(param_record), ALLOCATABLE                    :: param
      94              : #endif
      95              : 
      96              :    END TYPE tblite_type
      97              : 
      98              : CONTAINS
      99              : 
     100              : ! **************************************************************************************************
     101              : !> \brief ...
     102              : !> \param tb_tblite ...
     103              : ! **************************************************************************************************
     104          198 :    SUBROUTINE allocate_tblite_type(tb_tblite)
     105              : 
     106              :       TYPE(tblite_type), POINTER                         :: tb_tblite
     107              : 
     108          198 :       CALL deallocate_tblite_type(tb_tblite)
     109              : 
     110         2772 :       ALLOCATE (tb_tblite)
     111              : 
     112          198 :    END SUBROUTINE allocate_tblite_type
     113              : 
     114              : ! **************************************************************************************************
     115              : !> \brief ...
     116              : !> \param tb_tblite ...
     117              : ! **************************************************************************************************
     118          396 :    SUBROUTINE deallocate_tblite_type(tb_tblite)
     119              : 
     120              :       TYPE(tblite_type), POINTER                         :: tb_tblite
     121              : 
     122          396 :       IF (ASSOCIATED(tb_tblite)) THEN
     123              :          ! Release pointer-owned DBCSR objects; allocatable components are released
     124              :          ! automatically when the parent object is deallocated.
     125          198 :          IF (ASSOCIATED(tb_tblite%dipbra)) THEN
     126          110 :             CALL dbcsr_deallocate_matrix_set(tb_tblite%dipbra)
     127              :          END IF
     128          198 :          IF (ASSOCIATED(tb_tblite%dipket)) THEN
     129          110 :             CALL dbcsr_deallocate_matrix_set(tb_tblite%dipket)
     130              :          END IF
     131          198 :          IF (ASSOCIATED(tb_tblite%quadbra)) THEN
     132          110 :             CALL dbcsr_deallocate_matrix_set(tb_tblite%quadbra)
     133              :          END IF
     134          198 :          IF (ASSOCIATED(tb_tblite%quadket)) THEN
     135          110 :             CALL dbcsr_deallocate_matrix_set(tb_tblite%quadket)
     136              :          END IF
     137          198 :          IF (ASSOCIATED(tb_tblite%rho_ao_kp_ref)) THEN
     138           20 :             CALL dbcsr_deallocate_matrix_set(tb_tblite%rho_ao_kp_ref)
     139              :          END IF
     140         1128 :          DEALLOCATE (tb_tblite)
     141              :          NULLIFY (tb_tblite)
     142              :       END IF
     143              : 
     144          396 :    END SUBROUTINE deallocate_tblite_type
     145              : 
     146            0 : END MODULE tblite_types
        

Generated by: LCOV version 2.0-1