From c6e69e6d3d6705a884b488145d9832e6417b2c33 Mon Sep 17 00:00:00 2001 From: Kevin Stratford Date: Mon, 4 May 2026 12:04:33 +0100 Subject: [PATCH 01/15] Avoid probelmatic array constructors --- src/modules/TrajectoryIOModule.f90 | 125 +++++++++++++++++++---------- 1 file changed, 83 insertions(+), 42 deletions(-) diff --git a/src/modules/TrajectoryIOModule.f90 b/src/modules/TrajectoryIOModule.f90 index 44264ca..5e6a93b 100644 --- a/src/modules/TrajectoryIOModule.f90 +++ b/src/modules/TrajectoryIOModule.f90 @@ -176,10 +176,7 @@ subroutine FMS_WriteFTrajDump(T) integer(DefInt), save :: units(MaxTrajLimit) = 0 ! this keeps track of the ! unit number of the files - integer(kind=DefInt) :: i, j - -1 format(a10, 4000a10) -2 format(f10.2, 4000f10.4) + integer(kind=DefInt) :: i ntraj = T%TrajID iunit = units(ntraj) @@ -194,21 +191,42 @@ subroutine FMS_WriteFTrajDump(T) open (newunit=iunit, file=trim(file_name), position='append') else open (newunit=iunit, file=trim(file_name)) - write (iunit, 1) '# Time', ([ & - FMS_NumberedFileName('pos', i)//'x', & - FMS_NumberedFileName('pos', i)//'y', & - FMS_NumberedFileName('pos', i)//'z'], i=1, T%NumParticles), & - ([FMS_NumberedFileName('mom', i)//'x', & - FMS_NumberedFileName('mom', i)//'y', & - FMS_NumberedFileName('mom', i)//'z'], i=1, T%NumParticles), & - 'Phase', 'AmpReal', 'AmpImag', 'AmpNorm', 'StateID' + ! Header. + ! The is a single line with columns for all particles. + ! " Time ... positions ... momenta ... phase ... stateID" + write (unit = iunit, fmt = '(a10)', advance = 'no') " # Time" + do i = 1, t%numParticles + write (unit = iunit, fmt = '(3(a10))', advance = 'no') & + FMS_NumberedFileName('pos', i)//'x', & + FMS_NumberedFileName('pos', i)//'y', & + FMS_NumberedFileName('pos', i)//'z' + end do + do i = 1, t%numParticles + write (unit = iunit, fmt = '(3(a10))', advance = 'no') & + FMS_NumberedFileName('mom', i)//'x', & + FMS_NumberedFileName('mom', i)//'y', & + FMS_NumberedFileName('mom', i)//'z' + end do + write (unit = iunit, fmt = '(5(a10))') & + 'Phase', 'AmpReal', 'AmpImag', 'AmpNorm', 'StateID' + ! Data to follow ... end if units(ntraj) = iunit end if - write (iunit, 2) T%get_time(), (T%Particle(i)%get_pos(), i=1, T%NumParticles), & - ((T%Particle(i)%get_mom(j), j=1, T%Particle(i)%NumDimensions), i=1, T%NumParticles), & - T%Phase, real(T%Amplitude), aimag(T%Amplitude), FMS_Weight(T), dble(T%StateID) + ! Data ... + ! (time is a f10.2 format; others are f10.4; stateID could be int) + write (unit = iunit, fmt = '(f10.2)', advance = 'no') t%get_time() + do i = 1, t%numParticles + write (unit = iunit, fmt = '(3(f10.4))', advance = 'no') & + t%particle(i)%get_pos() + end do + do i = 1, t%numParticles + write (unit = iunit, fmt = '(3(f10.4))', advance = 'no') & + t%particle(i)%get_mom() + end do + write (unit = iunit, fmt = '(5(f10.4))') & + t%phase, t%amplitude%re, t%amplitude%im, FMS_Weight(t), real(t%stateID) end subroutine FMS_WriteFTrajDump !> @@ -715,14 +733,8 @@ subroutine FMS_WriteFDipole(T, file_name, first_time) integer(kind=DefInt) :: iunit logical :: file_existed - integer :: nstate integer(kind=DefInt) :: k -1 format(a10, 50(a10)) -2 format(f10.2, 1000f11.6) - - nstate = T%NumStates - long_file_name = trim(FMSWorkingDir)//file_name file_existed = .true. if (first_time) then @@ -731,11 +743,20 @@ subroutine FMS_WriteFDipole(T, file_name, first_time) if (.not. file_existed) then open (newunit=iunit, file=trim(long_file_name)) - write (iUnit, 1) '#Time', & - (FMS_NumberedFileName('Mag', k), k=1, nstate), & - ([FMS_NumberedFileName('D', k)//'x', & - FMS_NumberedFileName('D', k)//'y', & - FMS_NumberedFileName('D', k)//'z'], k=1, nstate) + ! Header + ! "Time ... magnitudes ... components" + write (unit = iunit, fmt = '(a10)', advance = 'no') "#Time" + do k = 1, t%numStates + write (unit = iunit, fmt = '(a10)', advance = 'no') & + FMS_NumberedFileName('Mag', k) + end do + do k = 1, t%numStates + write (unit = iunit, fmt = '(3(a10))', advance = 'no') & + FMS_NumberedFileName('D', k)//'x', & + FMS_NumberedFileName('D', k)//'y', & + FMS_NumberedFileName('D', k)//'z' + end do + write (unit = iunit, fmt = *) ! end of header line else open (newunit=iunit, file=trim(long_file_name), position='append') end if @@ -743,9 +764,16 @@ subroutine FMS_WriteFDipole(T, file_name, first_time) ! 4. Write dipoles, ! This was writing the square of the dipole, was that ! intentional? - write (IUnit, 2) T%get_time(), & - (sqrt(sum(FMS_Dipole(T, k)**2)), k=1, T%NumStates), & - (FMS_Dipole(T, k), k=1, T%NumStates) + + do k = 1, t%numStates + write (unit = iunit, fmt = '(f11.6)', advance = 'no') & + sqrt(sum(FMS_Dipole(t, k)**2)) + end do + do k = 1, t%numStates + write (unit = iunit, fmt = '(3(f11.6))', advance = 'no') & + FMS_Dipole(t, k) + end do + write (unit = iunit, fmt = *) ! end of data line close (IUnit) @@ -893,31 +921,44 @@ subroutine FMS_WriteFTDipole(T) integer(DefInt) :: iunit integer(DefInt), save :: units(MaxTrajLimit) = 0 ! this keeps track of the logical :: file_existed - integer :: nstate, j + integer :: j -1 format(a10, 50(a10)) -2 format(f10.2, 50(1x, f9.5)) - - nstate = T%NumStates iunit = units(T%TrajID) if (iunit == 0) then call FMS_OpenFile(FMS_NumberedFileName('TDip', T%TrajID), iunit, file_existed) if (.not. file_existed) then - write (iUnit, 1) '#Time', & - (FMS_NumberedFileName('Mag', j), j=2, nstate), & - ([FMS_NumberedFileName('TD', j)//'x', & - FMS_NumberedFileName('TD', j)//'y', & - FMS_NumberedFileName('TD', j)//'z'], j=2, nstate) + ! Header ... + write (unit = iunit, fmt = '(a10)', advance = 'no') "#Time" + do j = 2, t%numStates + write (unit = iunit, fmt = '(a10)', advance = 'no') & + FMS_NumberedFileName('Mag', j) + end do + do j = 2, t%numStates + write (unit = iunit, fmt = '(3(a10))', advance = 'no') & + FMS_NumberedFileName('TD', j)//'x', & + FMS_NumberedFileName('TD', j)//'y', & + FMS_NumberedFileName('TD', j)//'z' + end do + write (unit = iunit, fmt = *) ! End of header line end if units(T%TrajID) = iunit end if ! 4. Write transition dipole - write (iunit, 2) T%get_time(), (sqrt(sum(FMS_TransDipole(T, j)**2)), j=2, nstate), & - (FMS_TransDipole(T, j), j=2, nstate) - end subroutine FMS_WriteFTDipole + write (unit = iunit, fmt = '(f10.2)', advance = 'no') t%get_time() + do j = 2, t%numStates + write (unit = iunit, fmt = '(1x,f9.5)', advance = 'no') & + sqrt(sum(FMS_TransDipole(t, j)**2)) + end do + do j = 2, t%numStates + write (unit = iunit, fmt = '(3(1x,f9.5))', advance = 'no') & + FMS_TransDipole(t, j) + end do + write (unit = iunit, fmt = *) ! End of data line + + end subroutine FMS_WriteFTDipole !> !! Writes formatted potential energy data !! From b9c85e432c651188ce31d2f210e60314f083967e Mon Sep 17 00:00:00 2001 From: Daniel Hollas Date: Tue, 19 May 2026 13:10:18 +0100 Subject: [PATCH 02/15] Autoformat + lint --- src/modules/TrajectoryIOModule.f90 | 92 +++++++++++++++--------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/src/modules/TrajectoryIOModule.f90 b/src/modules/TrajectoryIOModule.f90 index 5e6a93b..4f63280 100644 --- a/src/modules/TrajectoryIOModule.f90 +++ b/src/modules/TrajectoryIOModule.f90 @@ -194,21 +194,21 @@ subroutine FMS_WriteFTrajDump(T) ! Header. ! The is a single line with columns for all particles. ! " Time ... positions ... momenta ... phase ... stateID" - write (unit = iunit, fmt = '(a10)', advance = 'no') " # Time" + write (unit=iunit, fmt='(a10)', advance='no') ' # Time' do i = 1, t%numParticles - write (unit = iunit, fmt = '(3(a10))', advance = 'no') & - FMS_NumberedFileName('pos', i)//'x', & - FMS_NumberedFileName('pos', i)//'y', & - FMS_NumberedFileName('pos', i)//'z' + write (unit=iunit, fmt='(3(a10))', advance='no') & + FMS_NumberedFileName('pos', i)//'x', & + FMS_NumberedFileName('pos', i)//'y', & + FMS_NumberedFileName('pos', i)//'z' end do do i = 1, t%numParticles - write (unit = iunit, fmt = '(3(a10))', advance = 'no') & - FMS_NumberedFileName('mom', i)//'x', & - FMS_NumberedFileName('mom', i)//'y', & - FMS_NumberedFileName('mom', i)//'z' + write (unit=iunit, fmt='(3(a10))', advance='no') & + FMS_NumberedFileName('mom', i)//'x', & + FMS_NumberedFileName('mom', i)//'y', & + FMS_NumberedFileName('mom', i)//'z' end do - write (unit = iunit, fmt = '(5(a10))') & - 'Phase', 'AmpReal', 'AmpImag', 'AmpNorm', 'StateID' + write (unit=iunit, fmt='(5(a10))') & + 'Phase', 'AmpReal', 'AmpImag', 'AmpNorm', 'StateID' ! Data to follow ... end if units(ntraj) = iunit @@ -216,17 +216,17 @@ subroutine FMS_WriteFTrajDump(T) ! Data ... ! (time is a f10.2 format; others are f10.4; stateID could be int) - write (unit = iunit, fmt = '(f10.2)', advance = 'no') t%get_time() + write (unit=iunit, fmt='(f10.2)', advance='no') t%get_time() do i = 1, t%numParticles - write (unit = iunit, fmt = '(3(f10.4))', advance = 'no') & - t%particle(i)%get_pos() + write (unit=iunit, fmt='(3(f10.4))', advance='no') & + t%particle(i)%get_pos() end do do i = 1, t%numParticles - write (unit = iunit, fmt = '(3(f10.4))', advance = 'no') & - t%particle(i)%get_mom() + write (unit=iunit, fmt='(3(f10.4))', advance='no') & + t%particle(i)%get_mom() end do - write (unit = iunit, fmt = '(5(f10.4))') & - t%phase, t%amplitude%re, t%amplitude%im, FMS_Weight(t), real(t%stateID) + write (unit=iunit, fmt='(5(f10.4))') & + t%phase, t%amplitude%re, t%amplitude%im, FMS_Weight(t), real(t%stateID) end subroutine FMS_WriteFTrajDump !> @@ -745,18 +745,18 @@ subroutine FMS_WriteFDipole(T, file_name, first_time) open (newunit=iunit, file=trim(long_file_name)) ! Header ! "Time ... magnitudes ... components" - write (unit = iunit, fmt = '(a10)', advance = 'no') "#Time" + write (unit=iunit, fmt='(a10)', advance='no') '#Time' do k = 1, t%numStates - write (unit = iunit, fmt = '(a10)', advance = 'no') & - FMS_NumberedFileName('Mag', k) + write (unit=iunit, fmt='(a10)', advance='no') & + FMS_NumberedFileName('Mag', k) end do do k = 1, t%numStates - write (unit = iunit, fmt = '(3(a10))', advance = 'no') & - FMS_NumberedFileName('D', k)//'x', & - FMS_NumberedFileName('D', k)//'y', & - FMS_NumberedFileName('D', k)//'z' + write (unit=iunit, fmt='(3(a10))', advance='no') & + FMS_NumberedFileName('D', k)//'x', & + FMS_NumberedFileName('D', k)//'y', & + FMS_NumberedFileName('D', k)//'z' end do - write (unit = iunit, fmt = *) ! end of header line + write (unit=iunit, fmt=*) ! end of header line else open (newunit=iunit, file=trim(long_file_name), position='append') end if @@ -766,14 +766,14 @@ subroutine FMS_WriteFDipole(T, file_name, first_time) ! intentional? do k = 1, t%numStates - write (unit = iunit, fmt = '(f11.6)', advance = 'no') & - sqrt(sum(FMS_Dipole(t, k)**2)) + write (unit=iunit, fmt='(f11.6)', advance='no') & + sqrt(sum(FMS_Dipole(t, k)**2)) end do do k = 1, t%numStates - write (unit = iunit, fmt = '(3(f11.6))', advance = 'no') & - FMS_Dipole(t, k) + write (unit=iunit, fmt='(3(f11.6))', advance='no') & + FMS_Dipole(t, k) end do - write (unit = iunit, fmt = *) ! end of data line + write (unit=iunit, fmt=*) ! end of data line close (IUnit) @@ -929,36 +929,36 @@ subroutine FMS_WriteFTDipole(T) call FMS_OpenFile(FMS_NumberedFileName('TDip', T%TrajID), iunit, file_existed) if (.not. file_existed) then ! Header ... - write (unit = iunit, fmt = '(a10)', advance = 'no') "#Time" + write (unit=iunit, fmt='(a10)', advance='no') '#Time' do j = 2, t%numStates - write (unit = iunit, fmt = '(a10)', advance = 'no') & - FMS_NumberedFileName('Mag', j) + write (unit=iunit, fmt='(a10)', advance='no') & + FMS_NumberedFileName('Mag', j) end do do j = 2, t%numStates - write (unit = iunit, fmt = '(3(a10))', advance = 'no') & - FMS_NumberedFileName('TD', j)//'x', & - FMS_NumberedFileName('TD', j)//'y', & - FMS_NumberedFileName('TD', j)//'z' + write (unit=iunit, fmt='(3(a10))', advance='no') & + FMS_NumberedFileName('TD', j)//'x', & + FMS_NumberedFileName('TD', j)//'y', & + FMS_NumberedFileName('TD', j)//'z' end do - write (unit = iunit, fmt = *) ! End of header line + write (unit=iunit, fmt=*) ! End of header line end if units(T%TrajID) = iunit end if ! 4. Write transition dipole - write (unit = iunit, fmt = '(f10.2)', advance = 'no') t%get_time() + write (unit=iunit, fmt='(f10.2)', advance='no') t%get_time() do j = 2, t%numStates - write (unit = iunit, fmt = '(1x,f9.5)', advance = 'no') & - sqrt(sum(FMS_TransDipole(t, j)**2)) + write (unit=iunit, fmt='(1x,f9.5)', advance='no') & + sqrt(sum(FMS_TransDipole(t, j)**2)) end do do j = 2, t%numStates - write (unit = iunit, fmt = '(3(1x,f9.5))', advance = 'no') & - FMS_TransDipole(t, j) + write (unit=iunit, fmt='(3(1x,f9.5))', advance='no') & + FMS_TransDipole(t, j) end do - write (unit = iunit, fmt = *) ! End of data line + write (unit=iunit, fmt=*) ! End of data line - end subroutine FMS_WriteFTDipole + end subroutine FMS_WriteFTDipole !> !! Writes formatted potential energy data !! From 4aa7e2e6de19afb7cfa36c9d0d1062054c40360d Mon Sep 17 00:00:00 2001 From: Daniel Hollas Date: Tue, 19 May 2026 13:40:26 +0100 Subject: [PATCH 03/15] CI: Update macos version --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b8e89d3..5352c26 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,7 +20,7 @@ jobs: fail-fast: false matrix: gcc_v: [latest] - os: [ubuntu-24.04, macos-15, macos-15-intel] + os: [ubuntu-24.04, macos-26, macos-26-intel] include: - os: ubuntu-22.04 gcc_v: 9 From b9318e559b213bf4c5e8e704bab5f604c920913e Mon Sep 17 00:00:00 2001 From: Daniel Hollas Date: Tue, 19 May 2026 13:45:40 +0100 Subject: [PATCH 04/15] Specify latest gfortran version explicitly --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5352c26..9a255d5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,7 +19,7 @@ jobs: strategy: fail-fast: false matrix: - gcc_v: [latest] + gcc_v: [15] os: [ubuntu-24.04, macos-26, macos-26-intel] include: - os: ubuntu-22.04 From 740d66f071595d0c3fa28b5faa8465c8d46acd02 Mon Sep 17 00:00:00 2001 From: Daniel Hollas Date: Tue, 19 May 2026 15:25:27 +0100 Subject: [PATCH 05/15] Bump gcc in debug build --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9a255d5..f1cf60d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -77,7 +77,7 @@ jobs: strategy: fail-fast: false matrix: - gcc_v: [14] + gcc_v: [15] os: [ubuntu-24.04] steps: @@ -134,7 +134,7 @@ jobs: run: make test cmake_build: - name: CMake ${{ matrix.toolchain.compiler }}-${{ matrix.toolchain.version }} zero + name: CMake ${{ matrix.toolchain.compiler }}-${{ matrix.toolchain.version }} runs-on: ubuntu-24.04 strategy: fail-fast: false From eba890ab78df8e9c7d74f8e6ce355705c86a45a6 Mon Sep 17 00:00:00 2001 From: Daniel Hollas Date: Tue, 19 May 2026 15:44:27 +0100 Subject: [PATCH 06/15] Add flang and nvfortran compilers --- .github/workflows/build.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f1cf60d..8b9494b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -100,17 +100,17 @@ jobs: run: make test - intel_build: + non_gfortran_build: name: ${{ matrix.toolchain.compiler }}-${{ matrix.toolchain.version }} build - runs-on: ubuntu-22.04 - env: - FFLAGS: -O1 -g0 + runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: toolchain: - {compiler: intel, version: latest} - - {compiler: intel-classic, version: '2021.10'} + - {compiler: nvidia-hpc, version: latest} + - {compiler: aocc, version: latest} + - {compiler: intel-classic, version: latest} steps: - uses: actions/checkout@v6 From e190db96b18fbd8f15a1691d4685e6b81d0dee73 Mon Sep 17 00:00:00 2001 From: Daniel Hollas Date: Tue, 19 May 2026 15:56:08 +0100 Subject: [PATCH 07/15] Don't add FFLAGS for non-gnu non-intel compilers --- configure.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/configure.sh b/configure.sh index fe7db41..6b69d08 100755 --- a/configure.sh +++ b/configure.sh @@ -40,17 +40,19 @@ if [[ -z $FC ]]; then fi # This is a very crude heuristic -comp=$(basename $FC) +comp=$(basename "$FC") if [[ "$comp" = ifx || "$comp" = ifort || "$comp" = mpiifort ]]; then FCTYPE=intel -else +elif [[ "$comp" = gfortran ]]; then FCTYPE=gnu +else + FCTYPE=unknown fi # Set default FFLAGS if [[ $FCTYPE = intel ]]; then DEFAULT_FFLAGS="-i4 -check bounds,nouninit,noarg_temp_created -g -traceback -O0 -heap-arrays" -else +elif [[ $FCTYPE = gnu ]]; then warning_flags="-Wall -Wno-unused-dummy-argument -Wno-integer-division -Wno-unused-function -Wno-maybe-uninitialized" # TODO: We should probably trap also "invalid" floating-point exception, # but need to fix some tests first that currently trigger them :-( From 4426d375f2d15055b619099a35809705ea69f864 Mon Sep 17 00:00:00 2001 From: Daniel Hollas Date: Tue, 19 May 2026 16:01:48 +0100 Subject: [PATCH 08/15] Go back to 2022.10 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8b9494b..e2b9809 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -110,7 +110,7 @@ jobs: - {compiler: intel, version: latest} - {compiler: nvidia-hpc, version: latest} - {compiler: aocc, version: latest} - - {compiler: intel-classic, version: latest} + - {compiler: intel-classic, version: '2022.10'} steps: - uses: actions/checkout@v6 From cb40c34ba41954e104b6382795326cf0c782b9fc Mon Sep 17 00:00:00 2001 From: Daniel Hollas Date: Tue, 19 May 2026 16:07:11 +0100 Subject: [PATCH 09/15] Fix nvfortran compilation --- src/modules/Makefile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/modules/Makefile b/src/modules/Makefile index 93d50c8..502f942 100644 --- a/src/modules/Makefile +++ b/src/modules/Makefile @@ -51,7 +51,11 @@ endif # Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 120 at (1) EispackModule.o: EispackModule.f @echo "Compiling $<" - @$(FC) $(FFLAGS) $(INCFLAGS) -std=legacy -Wno-maybe-uninitialized -c $< +ifeq ($(FC),gfortran) + @$(FC) $(FFLAGS) $(INCFLAGS) -std=legacy -c $< +else + @$(FC) $(FFLAGS) $(INCFLAGS) -c $< +endif RandomModule.o: RandomModule.f90 GlobalModule.o From 7f2beb81d17a95f2b25af35aa38bd41141625dcd Mon Sep 17 00:00:00 2001 From: Daniel Hollas Date: Tue, 19 May 2026 16:16:52 +0100 Subject: [PATCH 10/15] Try 2022.11 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e2b9809..751cdc4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -110,7 +110,7 @@ jobs: - {compiler: intel, version: latest} - {compiler: nvidia-hpc, version: latest} - {compiler: aocc, version: latest} - - {compiler: intel-classic, version: '2022.10'} + - {compiler: intel-classic, version: '2022.11'} steps: - uses: actions/checkout@v6 From 948fe5749f20c09b8c113977c343faba209e22a6 Mon Sep 17 00:00:00 2001 From: Daniel Hollas Date: Tue, 19 May 2026 16:31:53 +0100 Subject: [PATCH 11/15] Run intel-classic on ubuntu-22.04 --- .github/workflows/build.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 751cdc4..3eb3b62 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,8 +43,6 @@ jobs: - name: Configure run: ./configure.sh - env: - FC: gfortran${{ matrix.os == 'macos-15-intel' && '-14' || '' }} - name: Build run: make -j @@ -100,17 +98,20 @@ jobs: run: make test - non_gfortran_build: + non_gcc_build: name: ${{ matrix.toolchain.compiler }}-${{ matrix.toolchain.version }} build - runs-on: ubuntu-24.04 + runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: + os: [ubuntu-24.04] toolchain: - {compiler: intel, version: latest} - {compiler: nvidia-hpc, version: latest} - {compiler: aocc, version: latest} - - {compiler: intel-classic, version: '2022.11'} + include: + - os: ubuntu-22.04 + toolchain: {compiler: intel-classic, version: latest} steps: - uses: actions/checkout@v6 From 38bec70ebab8156cca7ac9939bdcc98991d3b152 Mon Sep 17 00:00:00 2001 From: Daniel Hollas Date: Tue, 19 May 2026 16:35:51 +0100 Subject: [PATCH 12/15] WTH --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3eb3b62..c9a8835 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -111,7 +111,7 @@ jobs: - {compiler: aocc, version: latest} include: - os: ubuntu-22.04 - toolchain: {compiler: intel-classic, version: latest} + toolchain: {compiler: intel-classic, version: '2022.10'} steps: - uses: actions/checkout@v6 From 87c1953a15d14f1a2498a5ce820b0991f7b198a2 Mon Sep 17 00:00:00 2001 From: Daniel Hollas Date: Tue, 19 May 2026 16:45:05 +0100 Subject: [PATCH 13/15] Unify intel and gcc builds --- .github/workflows/build.yml | 67 +++++++++++-------------------------- 1 file changed, 20 insertions(+), 47 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c9a8835..c50931f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,20 +10,25 @@ env: jobs: - gcc_build: - name: GCC-${{ matrix.gcc_v}} (${{ matrix.os }}) + build: + name: ${{ matrix.toolchain.compiler }}-${{ matrix.toolchain.version }} (${{ matrix.os }}) runs-on: ${{ matrix.os }} - env: - FFLAGS: --coverage -fprofile-abs-path - LDFLAGS: --coverage strategy: fail-fast: false matrix: - gcc_v: [15] - os: [ubuntu-24.04, macos-26, macos-26-intel] - include: + os: [ubuntu-24.04] + toolchain: + - {compiler: gcc, version: '15'} + - {compiler: intel, version: latest} + - {compiler: nvidia-hpc, version: latest} + - {compiler: aocc, version: latest} + include: + - os: ubuntu-22.04 + toolchain: {compiler: intel-classic, version: '2022.10'} + - os: macos-26 + toolchain: {compiler: gcc, version: '15'} - os: ubuntu-22.04 - gcc_v: 9 + toolchain: {compiler: gcc, version: '9'} steps: - uses: actions/checkout@v6 @@ -33,8 +38,8 @@ jobs: - uses: fortran-lang/setup-fortran@v1 id: setup-fortran with: - compiler: gcc - version: ${{ matrix.gcc_v }} + compiler: ${{ matrix.toolchain.compiler }} + version: ${{ matrix.toolchain.version }} # Python is needed for tests - uses: actions/setup-python@v6 @@ -43,6 +48,10 @@ jobs: - name: Configure run: ./configure.sh + env: + # Only collect test coverage for with gfortran + FFLAGS: ${{ matrix.toolchain.compiler == 'gcc' && '--coverage -fprofile-abs-path' || '' }} + LDFLAGS: ${{ matrix.toolchain.compiler == 'gcc' && '--coverage' || '' }} - name: Build run: make -j @@ -98,42 +107,6 @@ jobs: run: make test - non_gcc_build: - name: ${{ matrix.toolchain.compiler }}-${{ matrix.toolchain.version }} build - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: [ubuntu-24.04] - toolchain: - - {compiler: intel, version: latest} - - {compiler: nvidia-hpc, version: latest} - - {compiler: aocc, version: latest} - include: - - os: ubuntu-22.04 - toolchain: {compiler: intel-classic, version: '2022.10'} - - steps: - - uses: actions/checkout@v6 - - - uses: fortran-lang/setup-fortran@v1 - id: setup-fortran - with: - compiler: ${{ matrix.toolchain.compiler }} - version: ${{ matrix.toolchain.version }} - - - name: Configure - run: ./configure.sh - - - name: Build - run: make -j - - - name: Unit tests - run: make unittest - - - name: End-to-end tests - run: make test - cmake_build: name: CMake ${{ matrix.toolchain.compiler }}-${{ matrix.toolchain.version }} runs-on: ubuntu-24.04 From 5d47310c0d831fa20a9dfe452a87273fcb9e300c Mon Sep 17 00:00:00 2001 From: Daniel Hollas Date: Tue, 19 May 2026 16:46:11 +0100 Subject: [PATCH 14/15] Fix intel-classic version --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c50931f..40c238a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,7 +24,7 @@ jobs: - {compiler: aocc, version: latest} include: - os: ubuntu-22.04 - toolchain: {compiler: intel-classic, version: '2022.10'} + toolchain: {compiler: intel-classic, version: '2021.10'} - os: macos-26 toolchain: {compiler: gcc, version: '15'} - os: ubuntu-22.04 From faace70aa1d2aeb7a1e77c835c836eaffa5b3b97 Mon Sep 17 00:00:00 2001 From: Daniel Hollas Date: Tue, 19 May 2026 16:51:19 +0100 Subject: [PATCH 15/15] Fix --- .github/workflows/build.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 40c238a..c05ed24 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,6 +13,10 @@ jobs: build: name: ${{ matrix.toolchain.compiler }}-${{ matrix.toolchain.version }} (${{ matrix.os }}) runs-on: ${{ matrix.os }} + env: + # Only collect test coverage with gfortran + FFLAGS: ${{ matrix.toolchain.compiler == 'gcc' && '--coverage -fprofile-abs-path' || '' }} + LDFLAGS: ${{ matrix.toolchain.compiler == 'gcc' && '--coverage' || '' }} strategy: fail-fast: false matrix: @@ -48,11 +52,6 @@ jobs: - name: Configure run: ./configure.sh - env: - # Only collect test coverage for with gfortran - FFLAGS: ${{ matrix.toolchain.compiler == 'gcc' && '--coverage -fprofile-abs-path' || '' }} - LDFLAGS: ${{ matrix.toolchain.compiler == 'gcc' && '--coverage' || '' }} - - name: Build run: make -j