Line data Source code
1 : !--------------------------------------------------------------------------------------------------! 2 : ! CP2K: A general program to perform molecular dynamics simulations ! 3 : ! Copyright 2000-2024 CP2K developers group <https://cp2k.org> ! 4 : ! ! 5 : ! SPDX-License-Identifier: GPL-2.0-or-later ! 6 : !--------------------------------------------------------------------------------------------------! 7 : 8 : #:include '../common/cp_linked_list.fypp' 9 : 10 : MODULE cp_linked_list_xc_deriv 11 : USE xc_derivative_types, ONLY: xc_derivative_type, xc_derivative_p_type 12 : #include "../base/base_uses.f90" 13 : 14 : #:mute 15 : #:set nametype1 = ['xc_deriv'] 16 : #:set type1 = ['TYPE(xc_derivative_type), POINTER'] 17 : #:set type1in = type1 18 : #:set type1out = type1 19 : 20 : #:set eq = ['=>'] 21 : #:set arrayeq = eq 22 : #:set type1arrayEl = ['type(xc_derivative_p_type)'] 23 : #:set arrayEl = ['%deriv'] 24 : 25 : #:def get_private_routines() 26 : ! ************************************************************************************************** 27 : !> \brief private compare function 28 : !> \param el1 ... 29 : !> \param el2 ... 30 : !> \return ... 31 : ! ************************************************************************************************** 32 : function cp_sll_deriv_less_q(el1, el2) result(res) 33 : type(xc_derivative_type), INTENT(IN) :: el1, el2 34 : logical :: res 35 : 36 : integer :: i 37 : 38 : res = size(el1%split_desc) < size(el2%split_desc) 39 : if (size(el1%split_desc) == size(el2%split_desc)) then 40 : do i = 1, size(el1%split_desc) 41 : if (el1%split_desc(i) /= el2%split_desc(i)) then 42 : res = el1%split_desc(i) < el2%split_desc(i) 43 : exit 44 : end if 45 : end do 46 : end if 47 : end function 48 : #:enddef 49 : 50 : #:set private_routines = get_private_routines() 51 : #:set default_init = [' => NULL()'] 52 : #:endmute 53 : 54 14132138 : $:inst(nametype1, type1, type1in, type1out, eq, arrayeq, type1arrayEl, arrayEl, private_routines, default_init) 55 0 : END MODULE