From 22e52a23f889dd848b2f42de709b5cf960fe95e1 Mon Sep 17 00:00:00 2001 From: JorgeG94 Date: Thu, 16 Jan 2025 15:44:32 +1100 Subject: [PATCH] comment out forall which are obscolecent in f2018 and replace with a horrible do --- src/libasabqarray.f90 | 9 +++++++-- src/libcrossdyadic.f90 | 18 +++++++++++++++--- src/libdyadic.f90 | 20 +++++++++++++++++--- src/libtenstore.f90 | 16 +++++++++++++--- src/libtransp.f90 | 14 ++++++++++++-- 5 files changed, 64 insertions(+), 13 deletions(-) diff --git a/src/libasabqarray.f90 b/src/libasabqarray.f90 index 2abb892..24829ec 100644 --- a/src/libasabqarray.f90 +++ b/src/libasabqarray.f90 @@ -38,8 +38,13 @@ function asabqarray_4s(T, i, j) imap = (/1, 2, 3, 4, 6, 5/) - forall (i1=1:i, j1=1:j) asabqarray_4s(i1, j1) = & - T%a6b6(imap(i1), imap(j1)) + ! forall (i1=1:i, j1=1:j) asabqarray_4s(i1, j1) = & + ! T%a6b6(imap(i1), imap(j1)) + do i1 = 1, i + do j1 = 1, j + asabqarray_4s(i1, j1) = T%a6b6(imap(i1), imap(j1)) + end do +end do end function asabqarray_4s end module ttb_asabqarray diff --git a/src/libcrossdyadic.f90 b/src/libcrossdyadic.f90 index 81706cd..ed94e14 100644 --- a/src/libcrossdyadic.f90 +++ b/src/libcrossdyadic.f90 @@ -15,9 +15,21 @@ function crossdyadic_22(T1, T2) type(Tensor4) :: crossdyadic_22 integer i, j, k, l - forall (i=1:3, j=1:3, k=1:3, l=1:3) crossdyadic_22%abcd(i, j, k, l) & - = (T1%ab(i, k)*T2%ab(j, l) + T1%ab(i, l)*T2%ab(j, k) + & - T2%ab(i, k)*T1%ab(j, l) + T2%ab(i, l)*T1%ab(j, k))/4.d0 + ! forall (i=1:3, j=1:3, k=1:3, l=1:3) crossdyadic_22%abcd(i, j, k, l) & + ! = (T1%ab(i, k)*T2%ab(j, l) + T1%ab(i, l)*T2%ab(j, k) + & + ! T2%ab(i, k)*T1%ab(j, l) + T2%ab(i, l)*T1%ab(j, k))/4.d0 + + do i = 1, 3 + do j = 1, 3 + do k = 1, 3 + do l = 1, 3 + crossdyadic_22%abcd(i, j, k, l) = & + (T1%ab(i, k)*T2%ab(j, l) + T1%ab(i, l)*T2%ab(j, k) + & + T2%ab(i, k)*T1%ab(j, l) + T2%ab(i, l)*T1%ab(j, k))/4.d0 + end do + end do + end do + end do end function crossdyadic_22 diff --git a/src/libdyadic.f90 b/src/libdyadic.f90 index a254d5c..05a3f5a 100644 --- a/src/libdyadic.f90 +++ b/src/libdyadic.f90 @@ -25,8 +25,17 @@ function dyadic_22(T1, T2) type(Tensor4) :: dyadic_22 integer i, j, k, l - forall (i=1:3, j=1:3, k=1:3, l=1:3) dyadic_22%abcd(i, j, k, l) & - = T1%ab(i, j)*T2%ab(k, l) + ! forall (i=1:3, j=1:3, k=1:3, l=1:3) dyadic_22%abcd(i, j, k, l) & + ! = T1%ab(i, j)*T2%ab(k, l) + do i = 1, 3 + do j = 1, 3 + do k = 1, 3 + do l = 1, 3 + dyadic_22%abcd(i, j, k, l) = T1%ab(i, j)*T2%ab(k, l) + end do + end do + end do + end do end function dyadic_22 @@ -37,7 +46,12 @@ function dyadic_2s2s(T1, T2) type(Tensor4s) :: dyadic_2s2s integer i, j - forall (i=1:6, j=1:6) dyadic_2s2s%a6b6(i, j) = T1%a6(i)*T2%a6(j) + !forall (i=1:6, j=1:6) dyadic_2s2s%a6b6(i, j) = T1%a6(i)*T2%a6(j) + do i=1,6 + do j=1,6 + dyadic_2s2s%a6b6(i, j) = T1%a6(i)*T2%a6(j) + end do + end do end function dyadic_2s2s end module ttb_dya diff --git a/src/libtenstore.f90 b/src/libtenstore.f90 index f4f85be..9a39603 100644 --- a/src/libtenstore.f90 +++ b/src/libtenstore.f90 @@ -87,9 +87,19 @@ function tenstore_4s(T) integer, dimension(3, 3) :: i6j6 i6j6 = reshape((/1, 4, 6, 4, 2, 5, 6, 5, 3/), (/3, 3/)) - - forall (i=1:3, j=1:3, k=1:3, l=1:3) tenstore_4s%abcd(i, j, k, l) & - = T%a6b6(i6j6(i, j), i6j6(k, l)) + ! could be replaced with a do concurrent? +do i = 1, 3 + do j = 1, 3 + do k = 1, 3 + do l = 1, 3 + tenstore_4s%abcd(i, j, k, l) = T%a6b6(i6j6(i, j), i6j6(k, l)) + end do + end do + end do +end do + +! forall (i=1:3, j=1:3, k=1:3, l=1:3) tenstore_4s%abcd(i, j, k, l) & +! = T%a6b6(i6j6(i, j), i6j6(k, l)) end function tenstore_4s end module ttb_tensorstore diff --git a/src/libtransp.f90 b/src/libtransp.f90 index a750c7d..91581a7 100644 --- a/src/libtransp.f90 +++ b/src/libtransp.f90 @@ -36,8 +36,18 @@ function transp4(T) integer :: i, j, k, l transp4%abcd = 0.d0 - forall (i=1:3, j=1:3, k=1:3, l=1:3) transp4%abcd(i, j, k, l) & - = T%abcd(k, l, i, j) + ! forall (i=1:3, j=1:3, k=1:3, l=1:3) transp4%abcd(i, j, k, l) & + ! = T%abcd(k, l, i, j) + + do i=1,3 + do j=1,3 + do k=1,3 + do l=1,3 + transp4%abcd(i,j,k,l) = T%abcd(k,l,i,j) + end do + end do + end do + end do end function transp4