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