LCOV - code coverage report
Current view: top level - src - qs_commutators.F (source / functions) Coverage Total Hit
Test: CP2K Regtests (git:21ef868) Lines: 0.0 % 34 0
Test Date: 2026-08-14 07:04:57 Functions: 0.0 % 1 0

            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 Calculation of commutator [H,r] matrices
      10              : !> \par History
      11              : !>      JGH: [7.2016]
      12              : !> \author Juerg Hutter
      13              : ! **************************************************************************************************
      14              : MODULE qs_commutators
      15              :    USE cell_types,                      ONLY: cell_type
      16              :    USE commutator_rkinetic,             ONLY: build_com_tr_matrix
      17              :    USE commutator_rpnl,                 ONLY: build_com_mom_nl
      18              :    USE cp_control_types,                ONLY: dft_control_type
      19              :    USE cp_dbcsr_api,                    ONLY: dbcsr_add,&
      20              :                                               dbcsr_create,&
      21              :                                               dbcsr_p_type,&
      22              :                                               dbcsr_scale,&
      23              :                                               dbcsr_set
      24              :    USE cp_dbcsr_cp2k_link,              ONLY: cp_dbcsr_alloc_block_from_nbl
      25              :    USE cp_dbcsr_operations,             ONLY: dbcsr_allocate_matrix_set,&
      26              :                                               dbcsr_deallocate_matrix_set
      27              :    USE kinds,                           ONLY: dp
      28              :    USE particle_types,                  ONLY: particle_type
      29              :    USE qs_environment_types,            ONLY: get_qs_env,&
      30              :                                               qs_environment_type
      31              :    USE qs_kind_types,                   ONLY: qs_kind_type
      32              :    USE qs_neighbor_list_types,          ONLY: neighbor_list_set_p_type
      33              : 
      34              : !$ USE OMP_LIB, ONLY: omp_get_max_threads, omp_get_thread_num
      35              : #include "./base/base_uses.f90"
      36              : 
      37              :    IMPLICIT NONE
      38              : 
      39              :    PRIVATE
      40              : 
      41              : ! *** Global parameters ***
      42              : 
      43              :    CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qs_commutators'
      44              : 
      45              : ! *** Public subroutines ***
      46              : 
      47              :    PUBLIC :: build_com_hr_matrix
      48              : 
      49              : CONTAINS
      50              : 
      51              : ! **************************************************************************************************
      52              : !> \brief   Calculation of the [H,r] commutators matrices over Cartesian Gaussian functions.
      53              : !> \param qs_env ...
      54              : !> \param matrix_hr ...
      55              : !> \date    26.07.2016
      56              : !> \par     History
      57              : !> \author  JGH
      58              : !> \version 1.0
      59              : ! **************************************************************************************************
      60            0 :    SUBROUTINE build_com_hr_matrix(qs_env, matrix_hr)
      61              : 
      62              :       TYPE(qs_environment_type), POINTER                 :: qs_env
      63              :       TYPE(dbcsr_p_type), DIMENSION(:), OPTIONAL, &
      64              :          POINTER                                         :: matrix_hr
      65              : 
      66              :       CHARACTER(len=*), PARAMETER :: routineN = 'build_com_hr_matrix'
      67              : 
      68              :       INTEGER                                            :: handle, ir
      69              :       REAL(KIND=dp)                                      :: eps_ppnl
      70              :       TYPE(cell_type), POINTER                           :: cell
      71            0 :       TYPE(dbcsr_p_type), DIMENSION(:), POINTER          :: matrix_nl
      72            0 :       TYPE(dbcsr_p_type), DIMENSION(:, :), POINTER       :: matrix_s
      73              :       TYPE(dft_control_type), POINTER                    :: dft_control
      74              :       TYPE(neighbor_list_set_p_type), DIMENSION(:), &
      75            0 :          POINTER                                         :: sab_orb, sap_ppnl
      76            0 :       TYPE(particle_type), DIMENSION(:), POINTER         :: particle_set
      77            0 :       TYPE(qs_kind_type), DIMENSION(:), POINTER          :: qs_kind_set
      78              : 
      79            0 :       CALL timeset(routineN, handle)
      80              : 
      81            0 :       NULLIFY (cell, matrix_nl, particle_set, sab_orb, sap_ppnl)
      82              :       CALL get_qs_env(qs_env=qs_env, sab_orb=sab_orb, sap_ppnl=sap_ppnl, cell=cell, &
      83            0 :                       particle_set=particle_set)
      84              :       !
      85            0 :       CALL get_qs_env(qs_env=qs_env, qs_kind_set=qs_kind_set, dft_control=dft_control)
      86            0 :       eps_ppnl = dft_control%qs_control%eps_ppnl
      87              :       !
      88            0 :       CALL get_qs_env(qs_env=qs_env, matrix_s_kp=matrix_s)
      89            0 :       CPASSERT(.NOT. ASSOCIATED(matrix_hr))
      90            0 :       CALL dbcsr_allocate_matrix_set(matrix_hr, 3)
      91            0 :       DO ir = 1, 3
      92            0 :          ALLOCATE (matrix_hr(ir)%matrix)
      93              :          CALL dbcsr_create(matrix_hr(ir)%matrix, template=matrix_s(1, 1)%matrix, &
      94            0 :                            name="COMMUTATOR")
      95            0 :          CALL cp_dbcsr_alloc_block_from_nbl(matrix_hr(ir)%matrix, sab_orb)
      96            0 :          CALL dbcsr_set(matrix_hr(ir)%matrix, 0.0_dp)
      97              :       END DO
      98              : 
      99            0 :       CALL build_com_tr_matrix(matrix_hr, qs_kind_set, "ORB", sab_orb)
     100            0 :       IF (ASSOCIATED(sap_ppnl)) THEN
     101            0 :          CALL dbcsr_allocate_matrix_set(matrix_nl, 3)
     102            0 :          DO ir = 1, 3
     103            0 :             ALLOCATE (matrix_nl(ir)%matrix)
     104              :             CALL dbcsr_create(matrix_nl(ir)%matrix, template=matrix_s(1, 1)%matrix, &
     105            0 :                               name="NONLOCAL COMMUTATOR")
     106            0 :             CALL cp_dbcsr_alloc_block_from_nbl(matrix_nl(ir)%matrix, sab_orb)
     107            0 :             CALL dbcsr_set(matrix_nl(ir)%matrix, 0.0_dp)
     108              :          END DO
     109              : 
     110              :          CALL build_com_mom_nl(qs_kind_set, sab_orb, sap_ppnl, eps_ppnl, particle_set, cell, &
     111            0 :                                matrix_rv=matrix_nl)
     112              :          ! build_com_mom_nl returns [r,Vnl]; [H,r] requires [Vnl,r].
     113            0 :          DO ir = 1, 3
     114            0 :             CALL dbcsr_scale(matrix_nl(ir)%matrix, alpha_scalar=-1.0_dp)
     115            0 :             CALL dbcsr_add(matrix_hr(ir)%matrix, matrix_nl(ir)%matrix, alpha_scalar=1.0_dp, beta_scalar=1.0_dp)
     116              :          END DO
     117            0 :          CALL dbcsr_deallocate_matrix_set(matrix_nl)
     118              :       END IF
     119              : 
     120            0 :       CALL timestop(handle)
     121              : 
     122            0 :    END SUBROUTINE build_com_hr_matrix
     123              : 
     124              : END MODULE qs_commutators
        

Generated by: LCOV version 2.0-1