diff --git a/src/AO/ao_axis.irp.f b/src/AO/ao_axis.irp.f index 5216ded..9cfde0f 100644 --- a/src/AO/ao_axis.irp.f +++ b/src/AO/ao_axis.irp.f @@ -48,11 +48,11 @@ subroutine pow_l(r,a,x1,x2,x3) end function - BEGIN_PROVIDER [ real, ao_axis_block, ((-2*simd_sp+1):ao_block_num_8) ] -&BEGIN_PROVIDER [ real, ao_axis_grad_block_x, ((-2*simd_sp+1):ao_block_num_8) ] -&BEGIN_PROVIDER [ real, ao_axis_grad_block_y, ((-2*simd_sp+1):ao_block_num_8) ] -&BEGIN_PROVIDER [ real, ao_axis_grad_block_z, ((-2*simd_sp+1):ao_block_num_8) ] -&BEGIN_PROVIDER [ real, ao_axis_lapl_block, ((-2*simd_sp+1):ao_block_num_8) ] + BEGIN_PROVIDER [ real, ao_axis_block, (ao_block_num_8) ] +&BEGIN_PROVIDER [ real, ao_axis_grad_block_x, (ao_block_num_8) ] +&BEGIN_PROVIDER [ real, ao_axis_grad_block_y, (ao_block_num_8) ] +&BEGIN_PROVIDER [ real, ao_axis_grad_block_z, (ao_block_num_8) ] +&BEGIN_PROVIDER [ real, ao_axis_lapl_block, (ao_block_num_8) ] implicit none include '../types.F' @@ -111,13 +111,13 @@ end function ao_axis_block(idx) = p023 * p10 p023 = real_of_int(pow1) * p023 + ao_axis_grad_block_x(idx) = p023 * p11 + ao_axis_grad_block_y(idx) = p013 * p21 + ao_axis_grad_block_z(idx) = p012 * p31 ao_axis_lapl_block(idx) = real_of_int(pow1-1) * p023 * p12 & + real_of_int(pow2-1) * p013 * p22 & + real_of_int(pow3-1) * p012 * p32 - ao_axis_grad_block_x(idx) = p023 * p11 - ao_axis_grad_block_y(idx) = p013 * p21 - ao_axis_grad_block_z(idx) = p012 * p31 enddo diff --git a/src/electrons.irp.f b/src/electrons.irp.f index 65ec86e..1170603 100644 --- a/src/electrons.irp.f +++ b/src/electrons.irp.f @@ -148,8 +148,8 @@ END_PROVIDER BEGIN_PROVIDER [ real, elec_dist, (elec_num_8,elec_num) ] &BEGIN_PROVIDER [ real, elec_dist_vec_x, (elec_num_8,elec_num) ] -&BEGIN_PROVIDER [ real, elec_dist_vec_y, ((-simd_sp+1):elec_num_8,elec_num) ] -&BEGIN_PROVIDER [ real, elec_dist_vec_z, ((-2*simd_sp+1):elec_num_8,elec_num) ] +&BEGIN_PROVIDER [ real, elec_dist_vec_y, (elec_num_8,elec_num) ] +&BEGIN_PROVIDER [ real, elec_dist_vec_z, (elec_num_8,elec_num) ] implicit none BEGIN_DOC ! Electron-electron distances diff --git a/src/mo.irp.f b/src/mo.irp.f index f84378b..91d0b63 100644 --- a/src/mo.irp.f +++ b/src/mo.irp.f @@ -137,11 +137,11 @@ BEGIN_PROVIDER [ real, mo_coef_transp_present, (num_present_mos_8,ao_num_8) ] END_PROVIDER - BEGIN_PROVIDER [ real, mo_value_transp, ((-simd_sp+1):mo_num_8,elec_num) ] -&BEGIN_PROVIDER [ real, mo_grad_transp_x, ((-2*simd_sp+1):mo_num_8,elec_num) ] -&BEGIN_PROVIDER [ real, mo_grad_transp_y, ((-3*simd_sp+1):mo_num_8,elec_num) ] -&BEGIN_PROVIDER [ real, mo_grad_transp_z, ((-4*simd_sp+1):mo_num_8,elec_num) ] -&BEGIN_PROVIDER [ real, mo_lapl_transp, ((-5*simd_sp+1):mo_num_8,elec_num) ] + BEGIN_PROVIDER [ real, mo_value_transp, (mo_num_8,elec_num) ] +&BEGIN_PROVIDER [ real, mo_grad_transp_x, (mo_num_8,elec_num) ] +&BEGIN_PROVIDER [ real, mo_grad_transp_y, (mo_num_8,elec_num) ] +&BEGIN_PROVIDER [ real, mo_grad_transp_z, (mo_num_8,elec_num) ] +&BEGIN_PROVIDER [ real, mo_lapl_transp, (mo_num_8,elec_num) ] implicit none BEGIN_DOC @@ -295,7 +295,7 @@ BEGIN_PROVIDER [ real, mo_value, (elec_num_8,mo_num) ] !DIR$ VECTOR ALIGNED mo_value = 0. endif - call transpose(mo_value_transp(1,1),mo_num_8+simd_sp,mo_value,elec_num_8,mo_num,elec_num) + call transpose(mo_value_transp(1,1),mo_num_8,mo_value,elec_num_8,mo_num,elec_num) END_PROVIDER @@ -323,12 +323,32 @@ END_PROVIDER PROVIDE primitives_reduced endif ! Transpose x last for cache efficiency - call transpose_to_dp(mo_grad_transp_y(1,1),mo_num_8+3*simd_sp,mo_grad_y(1,1),elec_num_8,mo_num,elec_num) - call transpose_to_dp(mo_grad_transp_z(1,1),mo_num_8+4*simd_sp,mo_grad_z(1,1),elec_num_8,mo_num,elec_num) - call transpose_to_dp(mo_grad_transp_x(1,1),mo_num_8+2*simd_sp,mo_grad_x(1,1),elec_num_8,mo_num,elec_num) + call transpose_to_dp(mo_grad_transp_y(1,1),mo_num_8,mo_grad_y(1,1),elec_num_8,mo_num,elec_num) + call transpose_to_dp(mo_grad_transp_z(1,1),mo_num_8,mo_grad_z(1,1),elec_num_8,mo_num,elec_num) + call transpose_to_dp(mo_grad_transp_x(1,1),mo_num_8,mo_grad_x(1,1),elec_num_8,mo_num,elec_num) + END_PROVIDER +BEGIN_PROVIDER [ double precision, mo_lapl, (elec_num_8,mo_num) ] + implicit none + BEGIN_DOC +! Laplacians of the molecular orbitals + END_DOC + + integer :: i,j + integer, save :: ifirst = 0 + if (ifirst == 0) then + ifirst = 1 + PROVIDE primitives_reduced + !DIR$ VECTOR ALIGNED + mo_lapl = 0.d0 + endif + call transpose_to_dp(mo_lapl_transp(1,1),mo_num_8,mo_lapl,elec_num_8,mo_num,elec_num) + +END_PROVIDER + + BEGIN_PROVIDER [ double precision, mo_grad_lapl, (4,elec_num,mo_num) ] implicit none BEGIN_DOC @@ -363,24 +383,6 @@ BEGIN_PROVIDER [ double precision, mo_grad_lapl_transp, (4,mo_num,elec_num) ] END_PROVIDER -BEGIN_PROVIDER [ double precision, mo_lapl, (elec_num_8,mo_num) ] - implicit none - BEGIN_DOC -! Laplacians of the molecular orbitals - END_DOC - - integer :: i,j - integer, save :: ifirst = 0 - if (ifirst == 0) then - ifirst = 1 - PROVIDE primitives_reduced - !DIR$ VECTOR ALIGNED - mo_lapl = 0.d0 - endif - call transpose_to_dp(mo_lapl_transp(1,1),mo_num_8+5*simd_sp,mo_lapl,elec_num_8,mo_num,elec_num) - -END_PROVIDER - BEGIN_PROVIDER [ real, prepare_walkers_t ] implicit none @@ -783,7 +785,7 @@ subroutine sparse_full_mv(A,LDA, & d14 = B4(kao) d15 = B5(kao) !DIR$ VECTOR ALIGNED - do k=0,LDA-1,simd_sp + do k=0,LDA-1,$IRP_ALIGN/4 !DIR$ VECTOR ALIGNED do j=1,$IRP_ALIGN/4 C1(j+k) = C1(j+k) + A(j+k,k_vec(1))*d11