LCOV - code coverage report
Current view: top level - src - tblite_types.F (source / functions) Coverage Total Hit
Test: CP2K Regtests (git:06f838d) Lines: 97.1 % 34 33
Test Date: 2026-06-05 07:04:50 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              :    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              :                               tblite_solver_gvd
      35              :    USE kinds, ONLY: dp
      36              : 
      37              : #include "./base/base_uses.f90"
      38              :    IMPLICIT NONE
      39              : 
      40              :    PRIVATE
      41              : 
      42              :    CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'tblite_types'
      43              : 
      44              :    PUBLIC :: tblite_type, deallocate_tblite_type, allocate_tblite_type
      45              : 
      46              :    TYPE tblite_type
      47              : 
      48              :       LOGICAL                                            :: use_virial = .FALSE.
      49              :       INTEGER, ALLOCATABLE                               :: el_num(:)
      50              : 
      51              :       REAL(KIND=dp)                                      :: accuracy = 1.0_dp
      52              :       REAL(KIND=dp), DIMENSION(3, 3)                     :: sigma = -1.0_dp
      53              :       REAL(KIND=dp), ALLOCATABLE                         :: e_hal(:)
      54              :       REAL(KIND=dp), ALLOCATABLE                         :: e_rep(:)
      55              :       REAL(KIND=dp), ALLOCATABLE                         :: e_disp(:)
      56              :       REAL(KIND=dp), ALLOCATABLE                         :: e_scd(:)
      57              :       REAL(KIND=dp), ALLOCATABLE                         :: e_es(:)
      58              :       REAL(KIND=dp), ALLOCATABLE                         :: e_int(:)
      59              :       REAL(KIND=dp), ALLOCATABLE                         :: selfenergy(:)
      60              :       REAL(KIND=dp), ALLOCATABLE                         :: cn(:)
      61              : 
      62              :       REAL(KIND=dp), ALLOCATABLE                         :: grad(:, :)
      63              :       !derivatives w. r. t. coordination number
      64              :       REAL(KIND=dp), ALLOCATABLE                         :: dsedcn(:)
      65              :       REAL(KIND=dp), ALLOCATABLE                         :: dcndr(:, :, :)
      66              :       REAL(KIND=dp), ALLOCATABLE                         :: dcndL(:, :, :)
      67              : 
      68              :       TYPE(dbcsr_p_type), DIMENSION(:), POINTER          :: dipbra => Null(), &
      69              :                                                             dipket => Null()
      70              :       TYPE(dbcsr_p_type), DIMENSION(:), POINTER          :: quadbra => Null(), &
      71              :                                                             quadket => Null()
      72              :       TYPE(dbcsr_p_type), DIMENSION(:, :), POINTER       :: rho_ao_kp_ref => Null()
      73              :       INTEGER                                            :: mixer_memory = tblite_mixer_iterations_default
      74              :       INTEGER                                            :: mixer_solver = tblite_solver_gvd
      75              :       REAL(KIND=dp)                                      :: mixer_damping = tblite_mixer_damping_default
      76              :       REAL(KIND=dp)                                      :: mixer_max_weight = tblite_mixer_max_weight_default
      77              :       REAL(KIND=dp)                                      :: mixer_min_weight = tblite_mixer_min_weight_default
      78              :       REAL(KIND=dp)                                      :: mixer_omega0 = tblite_mixer_omega0_default
      79              :       REAL(KIND=dp)                                      :: mixer_weight_factor = tblite_mixer_weight_factor_default
      80              : 
      81              : #if defined(__TBLITE)
      82              :       TYPE(structure_type)                               :: mol = structure_type()
      83              :       TYPE(xtb_calculator)                               :: calc = xtb_calculator()
      84              :       TYPE(container_cache)                              :: cache = container_cache()
      85              :       TYPE(container_cache)                              :: dcache = container_cache()
      86              :       TYPE(container_cache)                              :: icache = container_cache()
      87              :       TYPE(wavefunction_type)                            :: wfn = wavefunction_type()
      88              :       TYPE(potential_type)                               :: pot = potential_type()
      89              :       CLASS(mixer_type), ALLOCATABLE                     :: mixer
      90              :       TYPE(param_record), ALLOCATABLE                    :: param
      91              : #endif
      92              : 
      93              :    END TYPE tblite_type
      94              : 
      95              : CONTAINS
      96              : 
      97              : ! **************************************************************************************************
      98              : !> \brief ...
      99              : !> \param tb_tblite ...
     100              : ! **************************************************************************************************
     101          152 :    SUBROUTINE allocate_tblite_type(tb_tblite)
     102              : 
     103              :       TYPE(tblite_type), POINTER                         :: tb_tblite
     104              : 
     105          152 :       CALL deallocate_tblite_type(tb_tblite)
     106              : 
     107         2128 :       ALLOCATE (tb_tblite)
     108              : 
     109          152 :    END SUBROUTINE allocate_tblite_type
     110              : 
     111              : ! **************************************************************************************************
     112              : !> \brief ...
     113              : !> \param tb_tblite ...
     114              : ! **************************************************************************************************
     115          304 :    SUBROUTINE deallocate_tblite_type(tb_tblite)
     116              : 
     117              :       TYPE(tblite_type), POINTER                         :: tb_tblite
     118              : 
     119          304 :       IF (ASSOCIATED(tb_tblite)) THEN
     120          152 :          IF (ALLOCATED(tb_tblite%el_num)) DEALLOCATE (tb_tblite%el_num)
     121              : 
     122          152 :          IF (ALLOCATED(tb_tblite%e_hal)) DEALLOCATE (tb_tblite%e_hal)
     123          152 :          IF (ALLOCATED(tb_tblite%e_rep)) DEALLOCATE (tb_tblite%e_rep)
     124          152 :          IF (ALLOCATED(tb_tblite%e_disp)) DEALLOCATE (tb_tblite%e_disp)
     125          152 :          IF (ALLOCATED(tb_tblite%e_scd)) DEALLOCATE (tb_tblite%e_scd)
     126          152 :          IF (ALLOCATED(tb_tblite%e_es)) DEALLOCATE (tb_tblite%e_es)
     127          152 :          IF (ALLOCATED(tb_tblite%e_int)) DEALLOCATE (tb_tblite%e_int)
     128          152 :          IF (ALLOCATED(tb_tblite%selfenergy)) DEALLOCATE (tb_tblite%selfenergy)
     129          152 :          IF (ALLOCATED(tb_tblite%cn)) DEALLOCATE (tb_tblite%cn)
     130              : 
     131          152 :          IF (ALLOCATED(tb_tblite%grad)) DEALLOCATE (tb_tblite%grad)
     132          152 :          IF (ALLOCATED(tb_tblite%dsedcn)) DEALLOCATE (tb_tblite%dsedcn)
     133          152 :          IF (ALLOCATED(tb_tblite%dcndr)) DEALLOCATE (tb_tblite%dcndr)
     134          152 :          IF (ALLOCATED(tb_tblite%dcndL)) DEALLOCATE (tb_tblite%dcndL)
     135              : 
     136          152 :          IF (ASSOCIATED(tb_tblite%dipbra)) &
     137           82 :             CALL dbcsr_deallocate_matrix_set(tb_tblite%dipbra)
     138          152 :          IF (ASSOCIATED(tb_tblite%dipket)) &
     139           82 :             CALL dbcsr_deallocate_matrix_set(tb_tblite%dipket)
     140          152 :          IF (ASSOCIATED(tb_tblite%quadbra)) &
     141           82 :             CALL dbcsr_deallocate_matrix_set(tb_tblite%quadbra)
     142          152 :          IF (ASSOCIATED(tb_tblite%quadket)) &
     143           82 :             CALL dbcsr_deallocate_matrix_set(tb_tblite%quadket)
     144          152 :          IF (ASSOCIATED(tb_tblite%rho_ao_kp_ref)) &
     145           28 :             CALL dbcsr_deallocate_matrix_set(tb_tblite%rho_ao_kp_ref)
     146              : #if defined(__TBLITE)
     147          304 :          IF (ALLOCATED(tb_tblite%mixer)) DEALLOCATE (tb_tblite%mixer)
     148          152 :          IF (ALLOCATED(tb_tblite%param)) DEALLOCATE (tb_tblite%param)
     149              : #endif
     150              : 
     151         1020 :          DEALLOCATE (tb_tblite)
     152              :       END IF
     153              : 
     154          304 :    END SUBROUTINE deallocate_tblite_type
     155              : 
     156            0 : END MODULE tblite_types
        

Generated by: LCOV version 2.0-1