From 043034780de30912bec0dd27b33ed62b9ac1f3e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=BCtzel?= Date: Fri, 13 Sep 2024 18:50:43 +0200 Subject: [PATCH] LinearForms.F90: Avoid compiler error with GFortran 10 or newer. The `dgemm` and `dgemv` functions expect rank-2 for some of their arguments. Newer compilers (e.g., GFortran 10 or newer) emit an error if the rank of the arguments don't match. That error is currently downgraded to a warning by adding `-fallow-argument-mismatch` to the Fortran compiler flags for GFortran. Avoid that error/warning by passing the respective argument with the expected rank. --- fem/src/LinearForms.F90 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/fem/src/LinearForms.F90 b/fem/src/LinearForms.F90 index 4ace58fc8c..2b19bdf629 100644 --- a/fem/src/LinearForms.F90 +++ b/fem/src/LinearForms.F90 @@ -130,7 +130,7 @@ SUBROUTINE LinearForms_GradUdotGradU(m, n, dim, GradU, weight, G, alpha) END IF ! Compute matrix \grad u \dot \grad u for dim=k CALL DGEMM('T', 'N', n, n, blklen, & - 1D0, GradU(ii,1,k), ldbasis, & + 1D0, [[GradU(ii,1,k)]], ldbasis, & wrk, ldwrk, 1D0, G, ldk) END DO END IF @@ -252,7 +252,7 @@ SUBROUTINE LinearForms_GradUdotU(m, n, dim, GradU, U, weight, G, alpha, beta) END IF ! Compute matrix \grad u \dot u for dim=k CALL DGEMM('T', 'N', n, n, blklen, & - 1D0, U(ii,1), lbasis, & + 1D0, [[U(ii,1)]], lbasis, & wrk, ldwrk, 1D0, G, ldk) END DO END IF @@ -326,7 +326,7 @@ SUBROUTINE LinearForms_UdotV(m, n, dim, U, V, weight, G, alpha) END IF ! Compute matrix u \dot u CALL DGEMM('T', 'N', n, n, blklen, & - 1D0, U(ii,1), ldbasis, & + 1D0, [[U(ii,1)]], ldbasis, & wrk, ldwrk, 1D0, G, ldk) END IF END DO ! Vector blocks @@ -398,7 +398,7 @@ SUBROUTINE LinearForms_UdotU(m, n, dim, U, weight, G, alpha) END IF ! Compute matrix u \dot u CALL DGEMM('T', 'N', n, n, blklen, & - 1D0, U(ii,1), ldbasis, & + 1D0, [[U(ii,1)]], ldbasis, & wrk, ldwrk, 1D0, G, ldk) END IF END DO ! Vector blocks @@ -477,7 +477,7 @@ SUBROUTINE LinearForms_UdotF(m, n, U, weight, F, UdotF, alpha) END IF CALL DGEMV('T', blklen, n, & - 1D0, U(ii,1), SIZE(U,1), wrk, 1, 1D0, UdotF, 1) + 1D0, [[U(ii,1)]], SIZE(U,1), wrk, 1, 1D0, UdotF, 1) END IF END DO END SUBROUTINE LinearForms_UdotF