Skip to content

Commit

Permalink
Make pointers contiguous to fix gcc8 (#2319)
Browse files Browse the repository at this point in the history
  • Loading branch information
fstein93 committed Oct 4, 2022
1 parent b41f84f commit c2dc0ed
Show file tree
Hide file tree
Showing 38 changed files with 234 additions and 165 deletions.
33 changes: 33 additions & 0 deletions src/common/cp_array_utils.F
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ MODULE cp_array_utils
PUBLIC :: cp_1d_${nametype}$_p_type, &
cp_2d_${nametype}$_p_type, &
cp_3d_${nametype}$_p_type, &
cp_1d_${nametype}$_cp_type, &
cp_2d_${nametype}$_cp_type, &
cp_3d_${nametype}$_cp_type, &
cp_1d_${nametype}$_guarantee_size, &
cp_1d_${nametype}$_write, &
cp_2d_${nametype}$_write, &
Expand Down Expand Up @@ -84,6 +87,36 @@ MODULE cp_array_utils
${type1}$, dimension(:, :, :), pointer :: array
end type cp_3d_${nametype1}$_p_type

! **************************************************************************************************
!> \brief represent a pointer to a contiguous 1d array
!> \par History
!> 02.2003 created [fawzi]
!> \author fawzi
! **************************************************************************************************
type cp_1d_${nametype1}$_cp_type
${type1}$, dimension(:), contiguous, pointer :: array
end type cp_1d_${nametype1}$_cp_type

! **************************************************************************************************
!> \brief represent a pointer to a contiguous 2d array
!> \par History
!> 02.2003 created [fawzi]
!> \author fawzi
! **************************************************************************************************
type cp_2d_${nametype1}$_cp_type
${type1}$, dimension(:, :), contiguous, pointer :: array
end type cp_2d_${nametype1}$_cp_type

! **************************************************************************************************
!> \brief represent a pointer to a contiguous 3d array
!> \par History
!> 02.2003 created [fawzi]
!> \author fawzi
! **************************************************************************************************
type cp_3d_${nametype1}$_cp_type
${type1}$, dimension(:, :, :), contiguous, pointer :: array
end type cp_3d_${nametype1}$_cp_type

#:endfor

CONTAINS
Expand Down
6 changes: 3 additions & 3 deletions src/pw/cp_linked_list_pw.F
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,19 @@
MODULE cp_linked_list_pw
USE kinds, ONLY: dp
USE pw_types, ONLY: pw_type, pw_p_type
USE cp_array_utils, ONLY: cp_3d_r_p_type
USE cp_array_utils, ONLY: cp_3d_r_cp_type
USE realspace_grid_types, ONLY: realspace_grid_type, realspace_grid_p_type
#include "../base/base_uses.f90"

#:mute
#:set nametype1 = ['3d_r', 'pw', 'rs']
#:set type1 = ['REAL(kind=dp),dimension(:,:,:),pointer', 'type(pw_type),pointer', 'type(realspace_grid_type),pointer']
#:set type1 = ['REAL(kind=dp),dimension(:,:,:),pointer,contiguous', 'type(pw_type),pointer', 'type(realspace_grid_type),pointer']
#:set type1in = type1
#:set type1out = type1

#:set eq = ['=>','=>','=>','=>']
#:set arrayeq = eq
#:set type1arrayEl = ['type(cp_3d_r_p_type)','type(pw_p_type)','type(realspace_grid_p_type)']
#:set type1arrayEl = ['type(cp_3d_r_cp_type)','type(pw_p_type)','type(realspace_grid_p_type)']

#:set arrayEl = ['%array','%pw','%rs_grid']

Expand Down
9 changes: 6 additions & 3 deletions src/pw/pw_pool_types.F
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,8 @@ END SUBROUTINE pw_pool_retain
SUBROUTINE pw_pool_flush_cache(pool)
TYPE(pw_pool_type), POINTER :: pool
REAL(kind=dp), DIMENSION(:, :, :), POINTER :: array_att
REAL(kind=dp), CONTIGUOUS, DIMENSION(:, :, :), &
POINTER :: array_att
TYPE(cp_logger_type), POINTER :: logger
TYPE(cp_sll_3d_r_type), POINTER :: array_iterator
TYPE(cp_sll_pw_type), POINTER :: iterator
Expand Down Expand Up @@ -306,7 +307,8 @@ SUBROUTINE pw_pool_create_pw(pool, pw, use_data, in_space)
CHARACTER(len=*), PARAMETER :: routineN = 'pw_pool_create_pw'
INTEGER :: handle
REAL(kind=dp), DIMENSION(:, :, :), POINTER :: cr3d_ptr
REAL(kind=dp), CONTIGUOUS, DIMENSION(:, :, :), &
POINTER :: cr3d_ptr
TYPE(cp_logger_type), POINTER :: logger
TYPE(pw_type), POINTER :: el
Expand Down Expand Up @@ -554,7 +556,8 @@ END SUBROUTINE pw_pool_create_cr3d
! **************************************************************************************************
SUBROUTINE pw_pool_give_back_cr3d(pw_pool, cr3d, accept_non_compatible)
TYPE(pw_pool_type), POINTER :: pw_pool
REAL(kind=dp), DIMENSION(:, :, :), POINTER :: cr3d
REAL(kind=dp), CONTIGUOUS, DIMENSION(:, :, :), &
POINTER :: cr3d
LOGICAL, INTENT(in), OPTIONAL :: accept_non_compatible
LOGICAL :: compatible, my_accept_non_compatible
Expand Down
4 changes: 2 additions & 2 deletions src/pw/pw_types.F
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,8 @@ SUBROUTINE pw_create(pw, pw_grid, use_data, in_space, cr3d_ptr)
TYPE(pw_grid_type), INTENT(IN), POINTER :: pw_grid
INTEGER, INTENT(in) :: use_data
INTEGER, INTENT(in), OPTIONAL :: in_space
REAL(KIND=dp), DIMENSION(:, :, :), INTENT(IN), &
OPTIONAL, POINTER :: cr3d_ptr
REAL(KIND=dp), CONTIGUOUS, DIMENSION(:, :, :), &
INTENT(IN), OPTIONAL, POINTER :: cr3d_ptr

CHARACTER(len=*), PARAMETER :: routineN = 'pw_create'

Expand Down
3 changes: 2 additions & 1 deletion src/qs_vxc_atom.F
Original file line number Diff line number Diff line change
Expand Up @@ -492,11 +492,12 @@ SUBROUTINE calculate_xc_2nd_deriv_atom(rho_atom_set, rho1_atom_set, qs_env, xc_s
LOGICAL :: gradient_functional, lsd, lsd_singlets, &
my_tddft, paw_atom, tau_f
REAL(KIND=dp) :: density_cut, gradient_cut, rtot, tau_cut
REAL(KIND=dp), CONTIGUOUS, DIMENSION(:, :, :), &
POINTER :: vxc_h, vxc_s
REAL(KIND=dp), DIMENSION(1, 1) :: rtau
REAL(KIND=dp), DIMENSION(1, 1, 1, 1) :: rrho
REAL(KIND=dp), DIMENSION(:, :), POINTER :: rho1_h, rho1_s, rho_h, rho_s, tau1_h, &
tau1_s, tau_h, tau_s, weight
REAL(KIND=dp), DIMENSION(:, :, :), POINTER :: vxc_h, vxc_s
REAL(KIND=dp), DIMENSION(:, :, :, :), POINTER :: drho1_h, drho1_s, drho_h, drho_s, vxg_h, &
vxg_s
TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
Expand Down
22 changes: 11 additions & 11 deletions src/xc/xc.F
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
! **************************************************************************************************
MODULE xc
#:include 'xc.fypp'
USE cp_array_utils, ONLY: cp_3d_r_p_type
USE cp_array_utils, ONLY: cp_3d_r_cp_type
USE cp_linked_list_xc_deriv, ONLY: cp_sll_xc_deriv_next, &
cp_sll_xc_deriv_type
USE cp_log_handling, ONLY: cp_get_default_logger, &
Expand Down Expand Up @@ -1685,7 +1685,7 @@ SUBROUTINE xc_calc_2nd_deriv_numerical(v_xc, v_tau, rho_set, rho1_r, rho1_g, tau
tau_a, tau_b, tau, tau1, tau1a, tau1b, laplace, laplace1, &
laplacea, laplaceb, laplace1a, laplace1b, &
laplace2, laplace2a, laplace2b, deriv_data
TYPE(cp_3d_r_p_type), DIMENSION(3) :: drho, drho1, drho1a, drho1b, drhoa, drhob
TYPE(cp_3d_r_cp_type), DIMENSION(3) :: drho, drho1, drho1a, drho1b, drhoa, drhob
TYPE(pw_type) :: v_drho, v_drhoa, v_drhob
TYPE(pw_p_type), DIMENSION(:), POINTER :: rho_g, rho_r, vxc_rho, &
tau_r, vxc_tau
Expand Down Expand Up @@ -2363,7 +2363,7 @@ SUBROUTINE apply_drho(deriv_set, description, virial_pw, drho, drho1, virial_xc,
TYPE(xc_derivative_set_type), INTENT(IN) :: deriv_set
INTEGER, DIMENSION(:), INTENT(in) :: description
TYPE(pw_type), INTENT(IN) :: virial_pw
TYPE(cp_3d_r_p_type), DIMENSION(3), INTENT(IN) :: drho, drho1
TYPE(cp_3d_r_cp_type), DIMENSION(3), INTENT(IN) :: drho, drho1
REAL(KIND=dp), DIMENSION(3, 3), INTENT(INOUT) :: virial_xc
REAL(KIND=dp), DIMENSION(:, :, :), INTENT(IN) :: norm_drho
REAL(KIND=dp), INTENT(IN) :: gradient_cut
Expand Down Expand Up @@ -2677,7 +2677,7 @@ SUBROUTINE xc_calc_2nd_deriv_analytical(v_xc, v_xc_tau, deriv_set, rho_set, rho1
norm_drhob, rho1, rho1a, rho1b, &
tau1, tau1a, tau1b, laplace1, laplace1a, laplace1b, &
rho, rhoa, rhob
TYPE(cp_3d_r_p_type), DIMENSION(3) :: drho, drho1, drho1a, drho1b, drhoa, drhob
TYPE(cp_3d_r_cp_type), DIMENSION(3) :: drho, drho1, drho1a, drho1b, drhoa, drhob
TYPE(pw_p_type), DIMENSION(:), ALLOCATABLE :: v_drhoa, v_drhob, v_drho, v_laplace
TYPE(pw_p_type), DIMENSION(:, :), ALLOCATABLE :: v_drho_r
TYPE(pw_type) :: tmp_g, virial_pw, vxc_g
Expand Down Expand Up @@ -3120,7 +3120,7 @@ END SUBROUTINE deallocate_pw
! **************************************************************************************************
SUBROUTINE virial_drho_drho1(virial_pw, drho, drho1, deriv_data, virial_xc)
TYPE(pw_type), INTENT(IN) :: virial_pw
TYPE(cp_3d_r_p_type), DIMENSION(3), INTENT(IN) :: drho, drho1
TYPE(cp_3d_r_cp_type), DIMENSION(3), INTENT(IN) :: drho, drho1
REAL(KIND=dp), DIMENSION(:, :, :), INTENT(IN) :: deriv_data
REAL(KIND=dp), DIMENSION(3, 3), INTENT(INOUT) :: virial_xc
Expand Down Expand Up @@ -3151,7 +3151,7 @@ END SUBROUTINE virial_drho_drho1
! **************************************************************************************************
SUBROUTINE virial_drho_drho(virial_pw, drho, v_drho, virial_xc)
TYPE(pw_type), INTENT(IN) :: virial_pw
TYPE(cp_3d_r_p_type), DIMENSION(3), INTENT(IN) :: drho
TYPE(cp_3d_r_cp_type), DIMENSION(3), INTENT(IN) :: drho
TYPE(pw_type), INTENT(IN) :: v_drho
REAL(KIND=dp), DIMENSION(3, 3), INTENT(INOUT) :: virial_xc
Expand Down Expand Up @@ -3307,7 +3307,7 @@ SUBROUTINE divide_by_norm_drho(deriv_set, rho_set, lsd)
INTEGER, DIMENSION(2, 3) :: bo
REAL(KIND=dp) :: drho_cutoff
REAL(KIND=dp), DIMENSION(:, :, :), POINTER :: norm_drho, norm_drhoa, norm_drhob
TYPE(cp_3d_r_p_type), DIMENSION(3) :: drho, drhoa, drhob
TYPE(cp_3d_r_cp_type), DIMENSION(3) :: drho, drhoa, drhob
TYPE(cp_sll_xc_deriv_type), POINTER :: pos
TYPE(xc_derivative_type), POINTER :: deriv_att
Expand Down Expand Up @@ -3397,8 +3397,8 @@ END SUBROUTINE divide_by_norm_drho
!> \param drhob ...
! **************************************************************************************************
SUBROUTINE calc_drho_from_ab(drho, drhoa, drhob)
TYPE(cp_3d_r_p_type), DIMENSION(3), INTENT(OUT) :: drho
TYPE(cp_3d_r_p_type), DIMENSION(3), INTENT(IN) :: drhoa, drhob
TYPE(cp_3d_r_cp_type), DIMENSION(3), INTENT(OUT) :: drho
TYPE(cp_3d_r_cp_type), DIMENSION(3), INTENT(IN) :: drhoa, drhob
CHARACTER(len=*), PARAMETER :: routineN = 'calc_drho_from_ab'
Expand Down Expand Up @@ -3429,7 +3429,7 @@ SUBROUTINE calc_drho_from_ab(drho, drhoa, drhob)
SUBROUTINE prepare_dr1dr(dr1dr, drho, drho1)
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :, :), &
INTENT(OUT) :: dr1dr
TYPE(cp_3d_r_p_type), DIMENSION(3), INTENT(IN) :: drho, drho1
TYPE(cp_3d_r_cp_type), DIMENSION(3), INTENT(IN) :: drho, drho1
CHARACTER(len=*), PARAMETER :: routineN = 'prepare_dr1dr'
Expand Down Expand Up @@ -3466,7 +3466,7 @@ END SUBROUTINE prepare_dr1dr
SUBROUTINE prepare_dr1dr_ab(dr1dr, drhoa, drhob, drho1a, drho1b, fac)
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :, :), &
INTENT(OUT) :: dr1dr
TYPE(cp_3d_r_p_type), DIMENSION(3), INTENT(IN) :: drhoa, drhob, drho1a, drho1b
TYPE(cp_3d_r_cp_type), DIMENSION(3), INTENT(IN) :: drhoa, drhob, drho1a, drho1b
REAL(KIND=dp), INTENT(IN) :: fac
CHARACTER(len=*), PARAMETER :: routineN = 'prepare_dr1dr_ab'
Expand Down
2 changes: 1 addition & 1 deletion src/xc/xc_atom.F
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ SUBROUTINE xc_2nd_deriv_of_r(rho_set, rho1_set, xc_section, &
TYPE(section_vals_type), POINTER :: xc_section
TYPE(xc_derivative_set_type), INTENT(INOUT) :: deriv_set
REAL(dp), DIMENSION(:, :), POINTER :: w
REAL(dp), DIMENSION(:, :, :), POINTER :: vxc
REAL(dp), CONTIGUOUS, DIMENSION(:, :, :), POINTER :: vxc
REAL(dp), DIMENSION(:, :, :, :), POINTER :: vxg
CHARACTER(LEN=*), PARAMETER :: routineN = 'xc_2nd_deriv_of_r'
Expand Down
12 changes: 6 additions & 6 deletions src/xc/xc_b97.F
Original file line number Diff line number Diff line change
Expand Up @@ -260,9 +260,9 @@ SUBROUTINE b97_lda_eval(rho_set, deriv_set, grad_deriv, b97_params)
INTEGER, DIMENSION(2, 3) :: bo
REAL(kind=dp) :: epsilon_norm_drho, epsilon_rho, scale_c, &
scale_x
REAL(kind=dp), DIMENSION(:, :, :), POINTER :: dummy, e_0, e_ndrho, e_ndrho_ndrho, &
e_ndrho_ndrho_ndrho, e_ndrho_ndrho_rho, e_ndrho_rho, e_ndrho_rho_rho, e_rho, e_rho_rho, &
e_rho_rho_rho, norm_drho, rho
REAL(kind=dp), CONTIGUOUS, DIMENSION(:, :, :), POINTER :: dummy, e_0, e_ndrho, &
e_ndrho_ndrho, e_ndrho_ndrho_ndrho, e_ndrho_ndrho_rho, e_ndrho_rho, e_ndrho_rho_rho, &
e_rho, e_rho_rho, e_rho_rho_rho, norm_drho, rho
TYPE(xc_derivative_type), POINTER :: deriv

CALL timeset(routineN, handle)
Expand Down Expand Up @@ -371,9 +371,9 @@ SUBROUTINE b97_lsd_eval(rho_set, deriv_set, grad_deriv, b97_params)
INTEGER :: handle, npoints, param
INTEGER, DIMENSION(2, 3) :: bo
REAL(kind=dp) :: epsilon_rho, scale_c, scale_x
REAL(kind=dp), DIMENSION(:, :, :), POINTER :: dummy, e_0, e_ndra, e_ndra_ndra, e_ndra_ndrb, &
e_ndra_ra, e_ndra_rb, e_ndrb, e_ndrb_ndrb, e_ndrb_ra, e_ndrb_rb, e_ra, e_ra_ra, e_ra_rb, &
e_rb, e_rb_rb, norm_drhoa, norm_drhob, rhoa, rhob
REAL(kind=dp), CONTIGUOUS, DIMENSION(:, :, :), POINTER :: dummy, e_0, e_ndra, e_ndra_ndra, &
e_ndra_ndrb, e_ndra_ra, e_ndra_rb, e_ndrb, e_ndrb_ndrb, e_ndrb_ra, e_ndrb_rb, e_ra, &
e_ra_ra, e_ra_rb, e_rb, e_rb_rb, norm_drhoa, norm_drhob, rhoa, rhob
TYPE(xc_derivative_type), POINTER :: deriv

CALL timeset(routineN, handle)
Expand Down
5 changes: 3 additions & 2 deletions src/xc/xc_cs1.F
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ SUBROUTINE cs1_lda_eval(rho_set, deriv_set, order)
INTEGER :: handle, m, npoints
INTEGER, DIMENSION(2, 3) :: bo
REAL(KIND=dp) :: epsilon_rho
REAL(KIND=dp), DIMENSION(:, :, :), POINTER :: e_0, e_ndrho, e_ndrho_ndrho, &
REAL(KIND=dp), CONTIGUOUS, DIMENSION(:, :, :), POINTER :: e_0, e_ndrho, e_ndrho_ndrho, &
e_ndrho_ndrho_ndrho, e_rho, e_rho_ndrho, e_rho_ndrho_ndrho, e_rho_rho, e_rho_rho_ndrho, &
e_rho_rho_rho, grho, rho, rho13
TYPE(xc_derivative_type), POINTER :: deriv
Expand Down Expand Up @@ -245,7 +245,8 @@ SUBROUTINE cs1_lsd_eval(rho_set, deriv_set, order)
INTEGER :: handle, npoints
INTEGER, DIMENSION(2, 3) :: bo
REAL(KIND=dp) :: epsilon_rho
REAL(KIND=dp), DIMENSION(:, :, :), POINTER :: e_0, e_ndrhoa, e_ndrhob, e_rhoa, e_rhob, &
REAL(KIND=dp), CONTIGUOUS, DIMENSION(:, :, :), &
POINTER :: e_0, e_ndrhoa, e_ndrhob, e_rhoa, e_rhob, &
norm_drhoa, norm_drhob, rhoa, &
rhoa_1_3, rhob, rhob_1_3
TYPE(xc_derivative_type), POINTER :: deriv
Expand Down
3 changes: 2 additions & 1 deletion src/xc/xc_derivative_set_types.F
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,8 @@ FUNCTION xc_dset_get_derivative(derivative_set, description, allocate_deriv) &

INTEGER, ALLOCATABLE, DIMENSION(:) :: std_deriv_desc
LOGICAL :: my_allocate_deriv
REAL(kind=dp), DIMENSION(:, :, :), POINTER :: cr3d_ptr
REAL(kind=dp), CONTIGUOUS, DIMENSION(:, :, :), &
POINTER :: cr3d_ptr
TYPE(cp_sll_xc_deriv_type), POINTER :: pos
TYPE(xc_derivative_type), POINTER :: deriv_att

Expand Down
5 changes: 3 additions & 2 deletions src/xc/xc_derivative_types.F
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ MODULE xc_derivative_types
! **************************************************************************************************
TYPE xc_derivative_type
INTEGER, DIMENSION(:), POINTER :: split_desc => NULL()
REAL(KIND=dp), DIMENSION(:, :, :), POINTER :: deriv_data => NULL()
REAL(KIND=dp), DIMENSION(:, :, :), POINTER, CONTIGUOUS :: deriv_data => NULL()
END TYPE xc_derivative_type

! **************************************************************************************************
Expand All @@ -59,7 +59,8 @@ SUBROUTINE xc_derivative_create(derivative, desc, cr3d_ptr)

TYPE(xc_derivative_type) :: derivative
INTEGER, DIMENSION(:), INTENT(in) :: desc
REAL(kind=dp), DIMENSION(:, :, :), POINTER :: cr3d_ptr
REAL(kind=dp), CONTIGUOUS, DIMENSION(:, :, :), &
POINTER :: cr3d_ptr

CALL create_split_desc(desc, derivative%split_desc)
derivative%deriv_data => cr3d_ptr
Expand Down
6 changes: 3 additions & 3 deletions src/xc/xc_exchange_gga.F
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
! **************************************************************************************************
MODULE xc_exchange_gga

USE cp_array_utils, ONLY: cp_3d_r_p_type
USE cp_array_utils, ONLY: cp_3d_r_cp_type
USE cp_log_handling, ONLY: cp_to_string
USE kinds, ONLY: dp
USE mathconstants, ONLY: pi
Expand Down Expand Up @@ -171,10 +171,10 @@ SUBROUTINE xgga_eval(functional, lsd, rho_set, deriv_set, order)
REAL(KIND=dp) :: drho_cutoff, rho_cutoff
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:) :: s
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :) :: fs
REAL(KIND=dp), DIMENSION(:, :, :), POINTER :: e_0, e_ndrho, e_ndrho_ndrho, &
REAL(KIND=dp), CONTIGUOUS, DIMENSION(:, :, :), POINTER :: e_0, e_ndrho, e_ndrho_ndrho, &
e_ndrho_ndrho_ndrho, e_rho, e_rho_ndrho, e_rho_ndrho_ndrho, e_rho_rho, e_rho_rho_ndrho, &
e_rho_rho_rho
TYPE(cp_3d_r_p_type), DIMENSION(2) :: norm_drho, rho, rho_1_3
TYPE(cp_3d_r_cp_type), DIMENSION(2) :: norm_drho, rho, rho_1_3
TYPE(xc_derivative_type), POINTER :: deriv

CALL timeset(routineN, handle)
Expand Down

0 comments on commit c2dc0ed

Please sign in to comment.