Skip to content

draft: feat/precession - #54

Draft
GeorgGrassler wants to merge 53 commits into
mainfrom
feat/precession
Draft

draft: feat/precession#54
GeorgGrassler wants to merge 53 commits into
mainfrom
feat/precession

Conversation

@GeorgGrassler

Copy link
Copy Markdown
Collaborator

No description provided.

@GeorgGrassler
GeorgGrassler marked this pull request as draft April 6, 2026 11:37
@qodo-code-review

Copy link
Copy Markdown

Review Summary by Qodo

Add precession module with magnetic well and turning point analysis

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Implement precession module with magnetic well analysis
  - Core functions for finding magnetic well bottom and turning points
  - Integration grid setup for bounce and pitch angle calculations
• Refactor find_global_extrema to find_global_minimum
  - Changed to return location of minimum instead of min/max values
  - Updated tolerance parameter from abstol to reltol
• Add comprehensive integration tests for precession calculations
  - Test turning points with mock field
  - Test precession correction with analytic field
Diagram
flowchart LR
  A["Precession Module"] --> B["Find Magnetic Well Bottom"]
  A --> C["Find Turning Points"]
  A --> D["Set Integration Grids"]
  B --> E["find_global_minimum"]
  C --> E
  F["Integration Tests"] --> A
Loading

Grey Divider

File Changes

1. src/precession/precession.f90 ✨ Enhancement +236/-0

Core precession physics implementation

• New precession module with types for integration grids and fieldline with minimum
• Implements compute_precession_correction main routine
• Finds magnetic well bottom by locating local minima along fieldline
• Computes turning points using lambda-squared function minimization
• Sets up integration grids with eta parameter transformation

src/precession/precession.f90


2. src/utils/find_extrema.f90 ✨ Enhancement +7/-8

Refactor global extrema finder to minimum locator

• Renamed find_global_extrema to find_global_minimum
• Changed return type from array of min/max values to single minimum location
• Updated tolerance parameter from abstol to reltol for relative tolerance
• Simplified n_steps calculation based on relative tolerance

src/utils/find_extrema.f90


3. test/unit/test_find_extrema.f90 🧪 Tests +12/-10

Update unit test for minimum locator

• Updated test subroutine name from test_find_global_extrema to test_find_global_minimum
• Changed test to verify minimum location instead of min/max values
• Updated tolerance parameter from abstol to reltol
• Modified expected result to test location (1.5π) instead of values

test/unit/test_find_extrema.f90


View more (5)
4. test/integration/test_find_turning_points.f90 🧪 Tests +78/-0

Add turning points integration test

• New integration test for find_turning_points function
• Tests turning point calculation with mock field across multiple eta values
• Validates results against analytical formula
• Includes optional plotting capability for debugging

test/integration/test_find_turning_points.f90


5. test/integration/test_precession_analytic.f90 🧪 Tests +64/-0

Add precession correction analytic test

• New integration test for compute_precession_correction function
• Tests precession correction with anti-sigma field and mock perturbation
• Validates correction value against expected analytical result
• Uses flock of fieldlines for realistic test scenario

test/integration/test_precession_analytic.f90


6. src/precession/CMakeLists.txt ⚙️ Configuration changes +6/-0

Add precession library CMake configuration

• New CMake configuration file for precession library
• Defines precession_lib as static library
• Links dependencies: utils_lib, field_lib, fieldline_lib

src/precession/CMakeLists.txt


7. src/CMakeLists.txt ⚙️ Configuration changes +3/-1

Integrate precession library into build

• Added precession subdirectory to build system
• Linked precession_lib to main rabe_lib target

src/CMakeLists.txt


8. test/integration/CMakeLists.txt ⚙️ Configuration changes +10/-0

Register precession integration tests

• Added test_find_turning_points executable and test registration
• Added test_precession_analytic executable and test registration
• Both tests marked with "quick" label for fast test suite

test/integration/CMakeLists.txt


Grey Divider

Qodo Logo

@qodo-code-review

qodo-code-review Bot commented Apr 6, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (5) 📘 Rule violations (3) 📎 Requirement gaps (0) 🎨 UX Issues (0)

Grey Divider


Action required

1. compute_precession_correction misindented declaration 📘 Rule violation ⚙ Maintainability
Description
The new compute_precession_correction subroutine declaration is indented with 2 spaces instead of
the required 4-space indentation. This breaks formatting consistency and increases diff noise across
the Fortran codebase.
Code

src/precession/precession.f90[29]

+ subroutine compute_precession_correction(field, fieldlines, l_c, Omega_hat, correction)
Evidence
PR Compliance ID 3 requires 4-space indentation; the added subroutine declaration line is not
indented with 4 spaces.

CLAUDE.md
src/precession/precession.f90[29-29]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
A new Fortran line is indented with 2 spaces instead of the required 4-space indentation.

## Issue Context
Repository style (and CLAUDE.md) specifies 4-space indentation for Fortran sources.

## Fix Focus Areas
- src/precession/precession.f90[29-29]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Long lines in find_turning_points 📘 Rule violation ⚙ Maintainability
Description
Two newly added lines exceed the 88-character maximum line length, reducing readability and
violating the formatting standard. These should be wrapped using Fortran continuation (&) and
aligned consistently.
Code

src/precession/precession.f90[R210-215]

+        extremum_locations = find_global_minimum(lambda_squared_along_fieldline, interval, reltol)
+        phi_turning(1) = extremum_locations(1) + (interval(2) - interval(1))*reltol
+
+        interval(1) = fieldline%phi_min
+        interval(2) = fieldline%phi_max(2)
+        extremum_locations = find_global_minimum(lambda_squared_along_fieldline, interval, reltol)
Evidence
PR Compliance ID 3 mandates an 88-character line limit; the added calls assigning
extremum_locations are written as single long lines in the new module.

CLAUDE.md
src/precession/precession.f90[210-216]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
New Fortran source lines exceed the 88-character limit.

## Issue Context
The project code style requires max 88 characters per line; long procedure calls should be wrapped with `&` continuation and aligned.

## Fix Focus Areas
- src/precession/precession.f90[210-216]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Docs not updated for precession 📘 Rule violation ⚙ Maintainability
Description
The PR adds a new precession_lib library/module and new integration tests, but repository
documentation (CLAUDE.md and relevant READMEs) was not updated to reflect these architecture/test
changes. This can cause developer guidance and documented architecture to drift from the actual
build/test graph.
Code

src/CMakeLists.txt[R27-28]

+  shaing_callen_lib
+  precession_lib)
Evidence
PR Compliance ID 5 requires updating CLAUDE.md (and relevant READMEs) when adding
modules/libraries or test targets/labels; this PR adds precession_lib and new tests, while
CLAUDE.md’s architecture overview does not list precession_lib and no doc updates are present.

CLAUDE.md
src/CMakeLists.txt[27-28]
test/integration/CMakeLists.txt[52-56]
test/integration/CMakeLists.txt[81-85]
CLAUDE.md[29-56]
CLAUDE.md[105-109]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Documentation was not updated alongside new architecture and test additions (`precession_lib`, new integration tests).

## Issue Context
CLAUDE.md explicitly requires updates when adding/removing/renaming modules/libraries and when adding tests/labels.

## Fix Focus Areas
- CLAUDE.md[29-56]
- CLAUDE.md[76-85]
- CLAUDE.md[105-109]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View more (2)
4. Removed API breaks build 🐞 Bug ≡ Correctness
Description
find_global_extrema is still imported/called by fieldline_labels.f90, but the find_extrema
module no longer defines it, so fieldline_lib will fail to compile.
Code

src/utils/find_extrema.f90[R130-151]

+    function find_global_minimum(func, interval, reltol) result(min_loc)
        use utils, only: linspace

        procedure(func1d) :: func
        real(dp), intent(in) :: interval(2)
-        real(dp), intent(in), optional :: abstol
-        real(dp) :: extrema(2)
+        real(dp), intent(in), optional :: reltol
+        real(dp) :: min_loc

        integer :: n_steps
        real(dp), dimension(:), allocatable :: x, value

-        if (present(abstol)) then
-            n_steps = int(abs(interval(2) - interval(1))/abstol) + 2
+        if (present(reltol)) then
+            n_steps = int(1.0_dp/reltol) + 2
        else
            n_steps = 1000
        end if

        allocate (x(n_steps), value(n_steps))
        call linspace(interval(1), interval(2), n_steps, x)
        call func(x, value)
-        extrema(1) = minval(value)
-        extrema(2) = maxval(value)
-    end function find_global_extrema
+        min_loc = x(minloc(value, dim=1))
+    end function find_global_minimum
Evidence
fieldline_labels.f90 explicitly uses and calls find_global_extrema, but find_extrema.f90 now
only provides find_global_minimum (no compatibility wrapper), creating an unresolved symbol at
compile time.

src/fieldline/fieldline_labels.f90[85-147]
src/utils/find_extrema.f90[130-151]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`src/fieldline/fieldline_labels.f90` depends on `find_extrema::find_global_extrema`, but that procedure was removed/renamed in `src/utils/find_extrema.f90`, causing compilation failure.

### Issue Context
- Existing code uses `find_global_extrema` to return `[minval, maxval]` of a sampled function over an interval.
- New code introduces `find_global_minimum` returning the *location* of the minimum, which is not a drop-in replacement.

### Fix Focus Areas
- Re-introduce `find_global_extrema` (old behavior) alongside `find_global_minimum`, or update all call sites and provide an equivalent API for extrema values.
- file/path references:
 - src/utils/find_extrema.f90[130-151]
 - src/fieldline/fieldline_labels.f90[85-147]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


5. Wrong max fieldline chosen 🐞 Bug ≡ Correctness
Description
get_fieldline_at_global_maximum only considers B_max(1) and ignores B_max(2), so it can select
the wrong fieldline when the true global maximum is stored in the second entry.
Code

src/precession/precession.f90[R56-64]

+    function get_fieldline_at_global_maximum(fieldlines) result(max_fieldline)
+        class(fieldline_t), dimension(:), intent(in) :: fieldlines
+        type(fieldline_t) :: max_fieldline
+
+        integer :: max_index
+
+        max_index = maxloc(fieldlines%B_max(1), dim=1)
+        max_fieldline = fieldlines(max_index)
+    end function get_fieldline_at_global_maximum
Evidence
fieldline_t defines B_max(2), but the selection logic uses only the first element across
fieldlines, meaning half the candidate maxima are never considered.

src/precession/precession.f90[56-64]
src/fieldline/fieldline.f90[6-14]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The fieldline selection for the global maximum only scans `B_max(1)`, ignoring `B_max(2)`, so it may pick the wrong fieldline and propagate incorrect downstream calculations.

### Issue Context
`fieldline_t%B_max` is a length-2 array; callers likely expect the maximum over both endpoints/branches.

### Fix Focus Areas
- Compute a per-fieldline maximum over both `B_max` entries, then apply `maxloc` on that value.
- file/path references:
 - src/precession/precession.f90[56-64]
 - src/fieldline/fieldline.f90[6-14]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

6. Integration grid sign error 🐞 Bug ≡ Correctness
Description
set_integration_grids constructs lower_grid%eta = eta_c - t^4 with t starting at 0, which
drives eta below eta_c and can even make it negative when eta_t > 3*eta_c.
Code

src/precession/precession.f90[R147-167]

+        eta_mid = 0.5_dp*(eta_c + eta_t)
+        t_start = 0.0_dp
+        t_end = (eta_t - eta_mid)**0.25_dp
+        call linspace(t_start, t_end, n, t)
+        lower_grid%eta = eta_c - t**4.0_dp
+        lower_grid%t_weight = -4.0_dp*t**3.0_dp
+        lower_grid%t = t
+
+        if (allocated(upper_grid%eta)) deallocate (upper_grid%eta)
+        if (allocated(upper_grid%t)) deallocate (upper_grid%t)
+        if (allocated(upper_grid%t_weight)) deallocate (upper_grid%t_weight)
+
+        allocate (upper_grid%eta(n))
+        allocate (upper_grid%t(n))
+        allocate (upper_grid%t_weight(n))
+        t_start = (eta_mid - eta_c)**0.25_dp
+        t_end = 0.0_dp
+        call linspace(t_start, t_end, n, t)
+        upper_grid%eta = eta_c + t**4.0_dp
+        upper_grid%t_weight = 4.0_dp*t**3.0_dp
+        upper_grid%t = t
Evidence
The grid is derived from eta_t and eta_c and used immediately to compute turning points; the
current transform produces values outside the intended [eta_c, eta_t] range. A similar transform
elsewhere in the repo uses eta = eta_b - t^4 but with t starting at eta_b**0.25 and decreasing
toward 0 to keep eta within bounds.

src/precession/precession.f90[39-50]
src/precession/precession.f90[130-169]
src/shaing_callen/shaing_callen_integration.f90[18-35]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`set_integration_grids` uses an `eta_c - t**4` transform with `t` increasing from 0, which produces `eta < eta_c` and may become unphysical (negative) for common parameter ranges.

### Issue Context
The repo already contains a stable pattern for `t**4` transforms in `shaing_callen_integration` that keeps `eta` in-range by choosing `t` bounds/direction appropriately.

### Fix Focus Areas
- Re-derive the intended `eta(t)` mapping so both grids stay within `[eta_c, eta_t]` and have consistent Jacobian weights.
- Add sanity checks (e.g., `minval(eta) >= 0` and bounds) to catch future regressions.
- file/path references:
 - src/precession/precession.f90[130-169]
 - src/precession/precession.f90[39-50]
 - src/shaing_callen/shaing_callen_integration.f90[18-35]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


7. Minima warning condition wrong 🐞 Bug ⚙ Maintainability
Description
find_magnetic_well_bottom prints “More than one local minimum” only when found_minima > 2, so
the exactly-two-minima case is not flagged despite matching the warning’s stated condition.
Code

src/precession/precession.f90[R93-106]

+        elseif (found_minima > 2) then
+            print *, "---------------------------------------------------------"
+            print *, "---------------------------------------------------------"
+            print *, "---------------------------------------------------------"
+            print *, "warning in find_magnetic_well_bottom: "
+            print *, "More than one local minimum in provided interval!"
+            print *, "theta_0: ", fieldline%theta_0
+            print *, "phi_0: ", fieldline%phi_0
+            print *, "interval: ", fieldline%phi_max
+            print *, "phi_min: ", phi_min(1:found_minima)
+            print *, "---------------------------------------------------------"
+            print *, "---------------------------------------------------------"
+            print *, "---------------------------------------------------------"
+        end if
Evidence
The conditional threshold does not match the warning text, which makes debugging ambiguous when two
minima are found and the code silently proceeds.

src/precession/precession.f90[93-106]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The warning about “More than one local minimum” is gated by `found_minima > 2`, which skips the `found_minima == 2` case.

### Issue Context
The routine then selects the smallest-B minimum; regardless of whether that is acceptable, the warning condition should reflect the message.

### Fix Focus Areas
- Change condition to `found_minima > 1` (or update the warning text to match the intended behavior).
- file/path references:
 - src/precession/precession.f90[93-106]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Advisory comments

8. Unused correction inputs 🐞 Bug ⚙ Maintainability
Description
compute_precession_correction accepts l_c and Omega_hat but never uses them, and currently
returns correction = B_bottom regardless of their values.
Code

src/precession/precession.f90[R29-54]

+ subroutine compute_precession_correction(field, fieldlines, l_c, Omega_hat, correction)
+        class(field_t), intent(in) :: field
+        class(fieldline_t), dimension(:) :: fieldlines
+        real(dp), intent(in) :: l_c
+        real(dp), intent(in) :: Omega_hat
+        real(dp), intent(out) :: correction
+
+        type(precession_t) :: precession
+        real(dp) :: phi_bottom, B_bottom, lowest_B_max, eta_t, eta_c
+
+        precession%fieldline%fieldline_t = get_fieldline_at_global_maximum(fieldlines)
+        call find_magnetic_well_bottom(field, precession%fieldline, &
+                                       phi_bottom, B_bottom)
+        lowest_B_max = minval(precession%fieldline%B_max)
+        eta_t = 1.0_dp/B_bottom
+        eta_c = 1.0_dp/lowest_B_max
+        precession%fieldline%phi_min = phi_bottom
+        precession%fieldline%B_min = B_bottom
+        call set_integration_grids(eta_t, eta_c, precession%lower_grid, &
+                                   precession%upper_grid)
+        call compute_bounce_integrals(field, precession%fieldline, &
+                                      precession%lower_grid)
+
+        correction = B_bottom
+
+    end subroutine compute_precession_correction
Evidence
Within the subroutine body there are no references to l_c or Omega_hat beyond their
declarations, so the API suggests behavior that is not implemented.

src/precession/precession.f90[29-54]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`l_c` and `Omega_hat` are part of the public API but currently have no effect on the computed correction.

### Issue Context
This is likely a stub/incomplete implementation; leaving unused inputs in a library routine is misleading and makes future integration error-prone.

### Fix Focus Areas
- Either implement the intended dependence on `l_c`/`Omega_hat`, or remove them from the interface until needed.
- file/path references:
 - src/precession/precession.f90[29-54]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Qodo Logo

@qodo-code-review

Copy link
Copy Markdown

CI Feedback 🧐

A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

Action: test

Failed stage: Build project [❌]

Failed test name: ""

Failure summary:

The action failed during the build step because the Fortran compilation of
src/fieldline/fieldline_labels.f90 failed.
- In src/fieldline/fieldline_labels.f90:88, the code
imports find_global_extrema via use find_extrema, only: find_global_extrema, but the compiler
reports that find_global_extrema is not found in module find_extrema (Error: Symbol
'find_global_extrema' ... not found in module 'find_extrema').
- As a consequence, at
src/fieldline/fieldline_labels.f90:145 the call extrema = find_global_extrema(...) fails with Error:
Function 'find_global_extrema' ... has no IMPLICIT type.
- ninja stops after this failed compilation
(ninja: build stopped: subcommand failed), causing make to exit with an error and the GitHub Action
to fail.

Relevant error logs:
1:  ##[group]Runner Image Provisioner
2:  Hosted Compute Agent
...

1106:  |                   1
1107:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1108:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/interpolate/batch_interpolate_2d.f90:88:23:
1109:  88 |       spl%num_points = [n1, n2]
1110:  |                       1
1111:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1112:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/interpolate/batch_interpolate_2d.f90:90:19:
1113:  90 |       spl%h_step = [(x_max(1) - x_min(1))/dble(n1 - 1), &
1114:  |                   1
1115:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1116:  f951: note: unrecognized command-line option ‘-Wno-external-argument-mismatch’ may have been intended to silence earlier diagnostics
1117:  f951: note: unrecognized command-line option ‘-Wno-external-argument-mismatch’ may have been intended to silence earlier diagnostics
1118:  [135/495] Generating git_version.f90 with current git hash
1119:  [136/495] Building Fortran object src/vmec/libneo/src/hdf5_tools/CMakeFiles/hdf5_tools.dir/hdf5_tools.F90.o
1120:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1951:65:
1121:  1951 |       call h5ltset_attribute_double_f(h5id, dataset, 'accuracy', (/ accuracy /), size_, h5error)
1122:  |                                                                 1
1123:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1124:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1951:65:
1125:  1951 |       call h5ltset_attribute_double_f(h5id, dataset, 'accuracy', (/ accuracy /), size_, h5error)
1126:  |                                                                 1
1127:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1128:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1901:41:
1129:  1901 |     call h5dwrite_f(dataset_id, type_id, value, dims, h5error)
1130:  |                                         1
1131:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1132:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1901:41:
1133:  1901 |     call h5dwrite_f(dataset_id, type_id, value, dims, h5error)
1134:  |                                         1
1135:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1136:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1903:59:
1137:  1903 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1138:  |                                                           1
1139:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1140:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1903:59:
1141:  1903 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1142:  |                                                           1
1143:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1144:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1904:59:
1145:  1904 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1146:  |                                                           1
1147:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1148:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1904:59:
1149:  1904 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1150:  |                                                           1
1151:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1152:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1835:39:
1153:  1835 |     call h5dwrite_f(dset_id, dt_re_id, real(value),  dims, h5error)
1154:  |                                       1
1155:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1156:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1835:39:
1157:  1835 |     call h5dwrite_f(dset_id, dt_re_id, real(value),  dims, h5error)
1158:  |                                       1
1159:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1160:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1836:39:
1161:  1836 |     call h5dwrite_f(dset_id, dt_im_id, aimag(value), dims, h5error)
1162:  |                                       1
1163:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1164:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1836:39:
1165:  1836 |     call h5dwrite_f(dset_id, dt_im_id, aimag(value), dims, h5error)
1166:  |                                       1
1167:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1168:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1841:59:
1169:  1841 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1170:  |                                                           1
1171:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1172:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1841:59:
1173:  1841 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1174:  |                                                           1
1175:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1176:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1842:59:
1177:  1842 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1178:  |                                                           1
1179:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1180:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1842:59:
1181:  1842 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1182:  |                                                           1
1183:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1184:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1749:39:
1185:  1749 |     call h5dwrite_f(dset_id, dt_re_id, real(value),  dims, h5error)
1186:  |                                       1
1187:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1188:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1749:39:
1189:  1749 |     call h5dwrite_f(dset_id, dt_re_id, real(value),  dims, h5error)
1190:  |                                       1
1191:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1192:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1750:39:
1193:  1750 |     call h5dwrite_f(dset_id, dt_im_id, aimag(value), dims, h5error)
1194:  |                                       1
1195:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1196:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1750:39:
1197:  1750 |     call h5dwrite_f(dset_id, dt_im_id, aimag(value), dims, h5error)
1198:  |                                       1
1199:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1200:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1755:59:
1201:  1755 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1202:  |                                                           1
1203:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1204:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1755:59:
1205:  1755 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1206:  |                                                           1
1207:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1208:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1756:59:
1209:  1756 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1210:  |                                                           1
1211:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1212:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1756:59:
1213:  1756 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1214:  |                                                           1
1215:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1216:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1663:39:
1217:  1663 |     call h5dwrite_f(dset_id, dt_re_id, real(value),  dims, h5error)
1218:  |                                       1
1219:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1220:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1663:39:
1221:  1663 |     call h5dwrite_f(dset_id, dt_re_id, real(value),  dims, h5error)
1222:  |                                       1
1223:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1224:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1664:39:
1225:  1664 |     call h5dwrite_f(dset_id, dt_im_id, aimag(value), dims, h5error)
1226:  |                                       1
1227:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1228:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1664:39:
1229:  1664 |     call h5dwrite_f(dset_id, dt_im_id, aimag(value), dims, h5error)
1230:  |                                       1
1231:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1232:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1669:59:
1233:  1669 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1234:  |                                                           1
1235:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1236:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1669:59:
1237:  1669 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1238:  |                                                           1
1239:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1240:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1670:59:
1241:  1670 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1242:  |                                                           1
1243:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1244:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1670:59:
1245:  1670 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1246:  |                                                           1
1247:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1248:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1588:62:
1249:  1588 |     call h5ltmake_dataset_double_f(h5id, dataset, rank, dims, value, h5error)
1250:  |                                                              1
1251:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1252:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1588:62:
1253:  1588 |     call h5ltmake_dataset_double_f(h5id, dataset, rank, dims, value, h5error)
1254:  |                                                              1
1255:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1256:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1589:59:
1257:  1589 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1258:  |                                                           1
1259:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1260:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1589:59:
1261:  1589 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1262:  |                                                           1
1263:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1264:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1590:59:
1265:  1590 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1266:  |                                                           1
1267:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1268:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1590:59:
1269:  1590 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1270:  |                                                           1
1271:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1272:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1557:62:
1273:  1557 |     call h5ltmake_dataset_double_f(h5id, dataset, rank, dims, value, h5error)
1274:  |                                                              1
1275:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1276:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1557:62:
1277:  1557 |     call h5ltmake_dataset_double_f(h5id, dataset, rank, dims, value, h5error)
1278:  |                                                              1
1279:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1280:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1558:59:
1281:  1558 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1282:  |                                                           1
1283:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1284:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1558:59:
1285:  1558 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1286:  |                                                           1
1287:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1288:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1559:59:
1289:  1559 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1290:  |                                                           1
1291:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1292:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1559:59:
1293:  1559 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1294:  |                                                           1
1295:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1296:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1526:62:
1297:  1526 |     call h5ltmake_dataset_double_f(h5id, dataset, rank, dims, value, h5error)
1298:  |                                                              1
1299:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1300:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1526:62:
1301:  1526 |     call h5ltmake_dataset_double_f(h5id, dataset, rank, dims, value, h5error)
1302:  |                                                              1
1303:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1304:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1527:59:
1305:  1527 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1306:  |                                                           1
1307:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1308:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1527:59:
1309:  1527 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1310:  |                                                           1
1311:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1312:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1528:59:
1313:  1528 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1314:  |                                                           1
1315:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1316:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1528:59:
1317:  1528 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1318:  |                                                           1
1319:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1320:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1495:62:
1321:  1495 |     call h5ltmake_dataset_double_f(h5id, dataset, rank, dims, value, h5error)
1322:  |                                                              1
1323:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1324:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1495:62:
1325:  1495 |     call h5ltmake_dataset_double_f(h5id, dataset, rank, dims, value, h5error)
1326:  |                                                              1
1327:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1328:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1496:59:
1329:  1496 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1330:  |                                                           1
1331:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1332:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1496:59:
1333:  1496 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1334:  |                                                           1
1335:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1336:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1497:59:
1337:  1497 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1338:  |                                                           1
1339:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1340:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1497:59:
1341:  1497 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1342:  |                                                           1
1343:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1344:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1421:11:
1345:  1421 |     dims = (/ ub1 - lb1 + 1, ub2 - lb2 + 1, ub3 - lb3 + 1 /)
1346:  |           1
1347:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1348:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1443:38:
1349:  1443 |     call h5dread_f(dset_id, dt_re_id, val%re, dims, h5error)
1350:  |                                      1
1351:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1352:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1444:38:
1353:  1444 |     call h5dread_f(dset_id, dt_im_id, val%im, dims, h5error)
1354:  |                                      1
1355:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1356:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1340:11:
1357:  1340 |     dims = (/ ub1 - lb1 + 1, ub2 - lb2 + 1 /)
1358:  |           1
1359:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1360:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1360:38:
1361:  1360 |     call h5dread_f(dset_id, dt_re_id, val%re, dims, h5error)
1362:  |                                      1
1363:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1364:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1361:38:
1365:  1361 |     call h5dread_f(dset_id, dt_im_id, val%im, dims, h5error)
1366:  |                                      1
1367:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1368:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1261:11:
1369:  1261 |     dims = (/ ub1 - lb1 + 1 /)
1370:  |           1
1371:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1372:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1279:38:
1373:  1279 |     call h5dread_f(dset_id, dt_re_id, val%re, dims, h5error)
1374:  |                                      1
1375:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1376:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1280:38:
1377:  1280 |     call h5dread_f(dset_id, dt_im_id, val%im, dims, h5error)
1378:  |                                      1
1379:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1380:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1184:11:
1381:  1184 |     dims = shape(value)
1382:  |           1
1383:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1384:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1198:47:
1385:  1198 |     call H5dread_f(dset_id, H5T_NATIVE_DOUBLE, value, dims,h5error, &
1386:  |                                               1
1387:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1388:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1198:47:
1389:  1198 |     call H5dread_f(dset_id, H5T_NATIVE_DOUBLE, value, dims,h5error, &
1390:  |                                               1
1391:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1392:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1163:11:
1393:  1163 |     dims = shape(value)
1394:  |           1
1395:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1396:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1164:50:
1397:  1164 |     call h5ltread_dataset_double_f(h5id, dataset, value, dims, h5error)
1398:  |                                                  1
1399:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1400:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1164:50:
1401:  1164 |     call h5ltread_dataset_double_f(h5id, dataset, value, dims, h5error)
1402:  |                                                  1
1403:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1404:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1148:11:
1405:  1148 |     dims = shape(value)
1406:  |           1
1407:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1408:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1149:50:
1409:  1149 |     call h5ltread_dataset_double_f(h5id, dataset, value, dims, h5error)
1410:  |                                                  1
1411:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1412:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1149:50:
1413:  1149 |     call h5ltread_dataset_double_f(h5id, dataset, value, dims, h5error)
1414:  |                                                  1
1415:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1416:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1131:11:
1417:  1131 |     dims = shape(value)
1418:  |           1
1419:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1420:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1132:50:
1421:  1132 |     call h5ltread_dataset_double_f(h5id, dataset, value, dims, h5error)
1422:  |                                                  1
1423:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1424:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1132:50:
1425:  1132 |     call h5ltread_dataset_double_f(h5id, dataset, value, dims, h5error)
1426:  |                                                  1
1427:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1428:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1116:11:
1429:  1116 |     dims = (/ub1-lb1+1, ub2-lb2+1/)
1430:  |           1
1431:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1432:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1117:50:
1433:  1117 |     call h5ltread_dataset_double_f(h5id, dataset, value, dims, h5error)
1434:  |                                                  1
1435:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1436:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1117:50:
1437:  1117 |     call h5ltread_dataset_double_f(h5id, dataset, value, dims, h5error)
1438:  |                                                  1
1439:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1440:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1098:14:
1441:  1098 |        dims = shape(value)
1442:  |              1
1443:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1444:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1101:50:
1445:  1101 |     call h5ltread_dataset_double_f(h5id, dataset, value, dims, h5error)
1446:  |                                                  1
1447:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1448:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1101:50:
1449:  1101 |     call h5ltread_dataset_double_f(h5id, dataset, value, dims, h5error)
1450:  |                                                  1
1451:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1452:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1062:11:
1453:  1062 |     dims = shape(value)
1454:  |           1
1455:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1456:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1063:47:
1457:  1063 |     call h5ltread_dataset_int_f(h5id, dataset, value, dims, h5error)
1458:  |                                               1
1459:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1460:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1063:47:
1461:  1063 |     call h5ltread_dataset_int_f(h5id, dataset, value, dims, h5error)
1462:  |                                               1
1463:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1464:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1045:11:
1465:  1045 |     dims = shape(value)
1466:  |           1
1467:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1468:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1046:47:
1469:  1046 |     call h5ltread_dataset_int_f(h5id, dataset, value, dims, h5error)
1470:  |                                               1
1471:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1472:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1046:47:
1473:  1046 |     call h5ltread_dataset_int_f(h5id, dataset, value, dims, h5error)
1474:  |                                               1
1475:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1476:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1018:62:
1477:  1018 |        call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbound(value), size, h5error)
1478:  |                                                              1
1479:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1480:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1018:62:
1481:  1018 |        call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbound(value), size, h5error)
1482:  |                                                              1
1483:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1484:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1019:62:
1485:  1019 |        call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubound(value), size, h5error)
1486:  |                                                              1
1487:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1488:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:1019:62:
1489:  1019 |        call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubound(value), size, h5error)
1490:  |                                                              1
1491:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1492:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:987:62:
1493:  987 |     call h5ltmake_dataset_double_f(h5id, dataset, rank, dims, value, h5error)
1494:  |                                                              1
1495:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1496:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:987:62:
1497:  987 |     call h5ltmake_dataset_double_f(h5id, dataset, rank, dims, value, h5error)
1498:  |                                                              1
1499:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1500:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:988:59:
1501:  988 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1502:  |                                                           1
1503:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1504:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:988:59:
1505:  988 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1506:  |                                                           1
1507:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1508:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:989:59:
1509:  989 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1510:  |                                                           1
1511:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1512:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:989:59:
1513:  989 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1514:  |                                                           1
1515:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1516:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:959:59:
1517:  959 |     call h5ltmake_dataset_double_f(h5id, dataset, 0, dims, (/value/), h5error)
1518:  |                                                           1
1519:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1520:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:959:59:
1521:  959 |     call h5ltmake_dataset_double_f(h5id, dataset, 0, dims, (/value/), h5error)
1522:  |                                                           1
1523:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1524:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:937:11:
1525:  937 |     dims = (/ub1 - lb1 + 1/)
1526:  |           1
1527:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1528:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:939:47:
1529:  939 |     call h5ltread_dataset_int_f(h5id, dataset, value, dims, h5error)
1530:  |                                               1
1531:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1532:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:939:47:
1533:  939 |     call h5ltread_dataset_int_f(h5id, dataset, value, dims, h5error)
1534:  |                                               1
1535:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1536:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:813:59:
1537:  813 |     call h5ltmake_dataset_int_f(h5id, dataset, rank, dims, value, h5error)
1538:  |                                                           1
1539:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1540:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:813:59:
1541:  813 |     call h5ltmake_dataset_int_f(h5id, dataset, rank, dims, value, h5error)
1542:  |                                                           1
1543:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1544:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:814:59:
1545:  814 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1546:  |                                                           1
1547:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1548:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:814:59:
1549:  814 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1550:  |                                                           1
1551:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1552:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:815:59:
1553:  815 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1554:  |                                                           1
1555:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1556:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:815:59:
1557:  815 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1558:  |                                                           1
1559:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1560:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:777:62:
1561:  777 |        call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbound(value), size, h5error)
1562:  |                                                              1
1563:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1564:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:777:62:
1565:  777 |        call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbound(value), size, h5error)
1566:  |                                                              1
1567:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1568:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:778:62:
1569:  778 |        call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubound(value), size, h5error)
1570:  |                                                              1
1571:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1572:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:778:62:
1573:  778 |        call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubound(value), size, h5error)
1574:  |                                                              1
1575:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1576:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:748:59:
1577:  748 |     call h5ltmake_dataset_int_f(h5id, dataset, rank, dims, value, h5error)
1578:  |                                                           1
1579:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1580:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:748:59:
1581:  748 |     call h5ltmake_dataset_int_f(h5id, dataset, rank, dims, value, h5error)
1582:  |                                                           1
1583:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1584:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:749:59:
1585:  749 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1586:  |                                                           1
1587:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1588:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:749:59:
1589:  749 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1590:  |                                                           1
1591:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1592:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:750:59:
1593:  750 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1594:  |                                                           1
1595:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1596:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:750:59:
1597:  750 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1598:  |                                                           1
1599:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1600:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:712:62:
1601:  712 |        call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbound(value), size, h5error)
1602:  |                                                              1
1603:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1604:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:712:62:
1605:  712 |        call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbound(value), size, h5error)
1606:  |                                                              1
1607:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1608:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:713:62:
1609:  713 |        call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubound(value), size, h5error)
1610:  |                                                              1
1611:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1612:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:713:62:
1613:  713 |        call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubound(value), size, h5error)
1614:  |                                                              1
1615:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1616:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:683:59:
1617:  683 |     call h5ltmake_dataset_int_f(h5id, dataset, rank, dims, value, h5error)
1618:  |                                                           1
1619:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1620:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:683:59:
1621:  683 |     call h5ltmake_dataset_int_f(h5id, dataset, rank, dims, value, h5error)
1622:  |                                                           1
1623:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1624:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:684:59:
1625:  684 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1626:  |                                                           1
1627:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1628:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:684:59:
1629:  684 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1630:  |                                                           1
1631:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1632:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:685:59:
1633:  685 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1634:  |                                                           1
1635:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1636:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:685:59:
1637:  685 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1638:  |                                                           1
1639:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1640:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:659:55:
1641:  659 |     call h5ltmake_dataset_int_f(h5id, dataset, 0,dims, (/value/), h5error)
1642:  |                                                       1
1643:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1644:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:659:55:
1645:  659 |     call h5ltmake_dataset_int_f(h5id, dataset, 0,dims, (/value/), h5error)
1646:  |                                                       1
1647:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1648:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:641:55:
1649:  641 |     call h5ltmake_dataset_int_f(h5id, dataset, 0,dims, (/internalvalue/), h5error)
1650:  |                                                       1
1651:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1652:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:641:55:
1653:  641 |     call h5ltmake_dataset_int_f(h5id, dataset, 0,dims, (/internalvalue/), h5error)
1654:  |                                                       1
...

1662:  |                1
1663:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1664:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:602:14:
1665:  602 |     dims    = (/shape(value), 1/)
1666:  |              1
1667:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1668:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:602:16:
1669:  602 |     dims    = (/shape(value), 1/)
1670:  |                1
1671:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1672:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:603:14:
1673:  603 |     offsetd = (/0, 0, 0, offset-1/)
1674:  |              1
1675:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1676:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:618:47:
1677:  618 |     call h5dwrite_f(dsetid, H5T_NATIVE_DOUBLE, value, dims, h5error, memspace, dspaceid)
1678:  |                                               1
1679:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1680:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools.F90:618:47:
1681:  618 |     call h5dwrite_f(dsetid, H5T_NATIVE_DOUBLE, value, dims, h5error, memspace, dspaceid)
1682:  |                                               1
...

1708:  [139/495] Building Fortran preprocessed src/netcdf/CMakeFiles/netcdf_lib.dir/netcdf.f90-pp.f90
1709:  [140/495] Building Fortran preprocessed src/vmec/CMakeFiles/vmec_lib.dir/boozer_converter.F90-pp.f90
1710:  [141/495] Building Fortran preprocessed src/vmec/CMakeFiles/vmec_lib.dir/boozer_field.f90-pp.f90
1711:  [142/495] Generating Fortran dyndep file src/vmec/libneo/CMakeFiles/neo.dir/Fortran.dd
1712:  [143/495] Building Fortran object src/vmec/libneo/src/polylag/CMakeFiles/neo_polylag.dir/polylag_5.f90.o
1713:  [144/495] Building Fortran object src/vmec/libneo/src/hdf5_tools/CMakeFiles/hdf5_tools.dir/hdf5_tools_f2003.f90.o
1714:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools_f2003.f90:189:11:
1715:  189 |     dims = (/ub1-lb1+1/)
1716:  |           1
1717:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1718:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools_f2003.f90:159:11:
1719:  159 |     dims = (/ub1-lb1+1, ub2-lb2+1/)
1720:  |           1
1721:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1722:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools_f2003.f90:124:59:
1723:  124 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1724:  |                                                           1
1725:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1726:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools_f2003.f90:124:59:
1727:  124 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1728:  |                                                           1
1729:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1730:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools_f2003.f90:125:59:
1731:  125 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1732:  |                                                           1
1733:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1734:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools_f2003.f90:125:59:
1735:  125 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1736:  |                                                           1
1737:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1738:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools_f2003.f90:78:59:
1739:  78 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1740:  |                                                           1
1741:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1742:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools_f2003.f90:78:59:
1743:  78 |     call h5ltset_attribute_int_f(h5id, dataset, 'lbounds', lbounds, size, h5error)
1744:  |                                                           1
1745:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1746:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools_f2003.f90:79:59:
1747:  79 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1748:  |                                                           1
1749:  Warning: Creating array temporary at (1) for argument ‘buf’ [-Warray-temporaries]
1750:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/hdf5_tools/hdf5_tools_f2003.f90:79:59:
1751:  79 |     call h5ltset_attribute_int_f(h5id, dataset, 'ubounds', ubounds, size, h5error)
1752:  |                                                           1
...

1989:  132 |     geqdsk%R_eqd(:) = geqdsk%rleft + [(kw, kw = 0, geqdsk%nw - 1)] * geqdsk%rdim / dble(geqdsk%nw - 1)
1990:  |                      1
1991:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1992:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/magfie/geqdsk_tools.f90:134:22:
1993:  134 |     geqdsk%Z_eqd(:) = geqdsk%zmid - 0.5d0 * geqdsk%zdim + [(kh, kh = 0, geqdsk%nh - 1)] * geqdsk%zdim / dble(geqdsk%nh - 1)
1994:  |                      1
1995:  Warning: Creating array temporary at (1) [-Warray-temporaries]
1996:  f951: note: unrecognized command-line option ‘-Wno-external-argument-mismatch’ may have been intended to silence earlier diagnostics
1997:  f951: note: unrecognized command-line option ‘-Wno-external-argument-mismatch’ may have been intended to silence earlier diagnostics
1998:  [190/495] Building Fortran object src/vmec/libneo/CMakeFiles/neo.dir/src/util/simpson_integration.f90.o
1999:  [191/495] Building C object src/vmec/libneo/CMakeFiles/neo.dir/src/local_rusage.c.o
2000:  [192/495] Linking Fortran static library src/vmec/libneo/src/odeint/libodeint.a
2001:  [193/495] Linking Fortran static library src/field/libfield_lib.a
2002:  [194/495] Building Fortran object src/fieldline/CMakeFiles/fieldline_lib.dir/fieldline.f90.o
2003:  [195/495] Building Fortran object src/fieldline/CMakeFiles/fieldline_lib.dir/fieldline_labels.f90.o
2004:  FAILED: [code=1] src/fieldline/CMakeFiles/fieldline_lib.dir/fieldline_labels.f90.o src/fieldline/fieldline_labels.mod 
2005:  /usr/bin/gfortran -I/home/runner/work/rabe/rabe/src/fieldline -I/home/runner/work/rabe/rabe/build/src/fieldline -I/home/runner/work/rabe/rabe/build/src/utils -I/home/runner/work/rabe/rabe/build/src/field -O0 -cpp -g -ffpe-summary=invalid,zero,overflow,underflow  -fcheck=all  -fbacktrace  -finit-real=nan -Wall  -Wextra  -Warray-temporaries  -Wconversion  -fimplicit-none  -Wno-unused-variable -Wno-unused-dummy-argument -Wno-unused-label  -Wshadow  -Wno-external-argument-mismatch  -Jsrc/fieldline -fpreprocessed -c src/fieldline/CMakeFiles/fieldline_lib.dir/fieldline_labels.f90-pp.f90 -o src/fieldline/CMakeFiles/fieldline_lib.dir/fieldline_labels.f90.o
2006:  /home/runner/work/rabe/rabe/src/fieldline/fieldline_labels.f90:88:31:
2007:  88 |         use find_extrema, only: find_global_extrema
2008:  |                               1
2009:  Error: Symbol ‘find_global_extrema’ referenced at (1) not found in module ‘find_extrema’
2010:  /home/runner/work/rabe/rabe/src/fieldline/fieldline_labels.f90:145:18:
2011:  145 |         extrema = find_global_extrema(B_mod_along_pi_line, interval, tol)
2012:  |                  1
2013:  Error: Function ‘find_global_extrema’ at (1) has no IMPLICIT type
2014:  f951: note: unrecognized command-line option ‘-Wno-external-argument-mismatch’ may have been intended to silence earlier diagnostics
...

2194:  Warning: Creating array temporary at (1) [-Warray-temporaries]
2195:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/interpolate/batch_interpolate_3d.f90:313:21:
2196:  313 |         spl%h_step = [(x_max(1) - x_min(1))/dble(n1 - 1), &
2197:  |                     1
2198:  Warning: Creating array temporary at (1) [-Warray-temporaries]
2199:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/interpolate/batch_interpolate_3d.f90:103:25:
2200:  103 |         spl%num_points = [n1, n2, n3]
2201:  |                         1
2202:  Warning: Creating array temporary at (1) [-Warray-temporaries]
2203:  /home/runner/work/rabe/rabe/build/_deps/libneo-src/src/interpolate/batch_interpolate_3d.f90:105:21:
2204:  105 |         spl%h_step = [(x_max(1) - x_min(1))/dble(n1 - 1), &
2205:  |                     1
2206:  Warning: Creating array temporary at (1) [-Warray-temporaries]
2207:  f951: note: unrecognized command-line option ‘-Wno-external-argument-mismatch’ may have been intended to silence earlier diagnostics
2208:  f951: note: unrecognized command-line option ‘-Wno-external-argument-mismatch’ may have been intended to silence earlier diagnostics
2209:  ninja: build stopped: subcommand failed.
2210:  make: *** [Makefile:11: build] Error 1
2211:  ##[error]Process completed with exit code 2.
2212:  Post job cleanup.

Comment thread src/precession/precession.f90 Outdated

contains

subroutine compute_precession_correction(field, fieldlines, l_c, Omega_hat, correction)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. compute_precession_correction misindented declaration 📘 Rule violation ⚙ Maintainability

The new compute_precession_correction subroutine declaration is indented with 2 spaces instead of
the required 4-space indentation. This breaks formatting consistency and increases diff noise across
the Fortran codebase.
Agent Prompt
## Issue description
A new Fortran line is indented with 2 spaces instead of the required 4-space indentation.

## Issue Context
Repository style (and CLAUDE.md) specifies 4-space indentation for Fortran sources.

## Fix Focus Areas
- src/precession/precession.f90[29-29]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +210 to +215
extremum_locations = find_global_minimum(lambda_squared_along_fieldline, interval, reltol)
phi_turning(1) = extremum_locations(1) + (interval(2) - interval(1))*reltol

interval(1) = fieldline%phi_min
interval(2) = fieldline%phi_max(2)
extremum_locations = find_global_minimum(lambda_squared_along_fieldline, interval, reltol)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

2. Long lines in find_turning_points 📘 Rule violation ⚙ Maintainability

Two newly added lines exceed the 88-character maximum line length, reducing readability and
violating the formatting standard. These should be wrapped using Fortran continuation (&) and
aligned consistently.
Agent Prompt
## Issue description
New Fortran source lines exceed the 88-character limit.

## Issue Context
The project code style requires max 88 characters per line; long procedure calls should be wrapped with `&` continuation and aligned.

## Fix Focus Areas
- src/precession/precession.f90[210-216]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread src/CMakeLists.txt Outdated
Comment on lines +27 to +28
shaing_callen_lib
precession_lib)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

3. Docs not updated for precession 📘 Rule violation ⚙ Maintainability

The PR adds a new precession_lib library/module and new integration tests, but repository
documentation (CLAUDE.md and relevant READMEs) was not updated to reflect these architecture/test
changes. This can cause developer guidance and documented architecture to drift from the actual
build/test graph.
Agent Prompt
## Issue description
Documentation was not updated alongside new architecture and test additions (`precession_lib`, new integration tests).

## Issue Context
CLAUDE.md explicitly requires updates when adding/removing/renaming modules/libraries and when adding tests/labels.

## Fix Focus Areas
- CLAUDE.md[29-56]
- CLAUDE.md[76-85]
- CLAUDE.md[105-109]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +130 to +151
function find_global_minimum(func, interval, reltol) result(min_loc)
use utils, only: linspace

procedure(func1d) :: func
real(dp), intent(in) :: interval(2)
real(dp), intent(in), optional :: abstol
real(dp) :: extrema(2)
real(dp), intent(in), optional :: reltol
real(dp) :: min_loc

integer :: n_steps
real(dp), dimension(:), allocatable :: x, value

if (present(abstol)) then
n_steps = int(abs(interval(2) - interval(1))/abstol) + 2
if (present(reltol)) then
n_steps = int(1.0_dp/reltol) + 2
else
n_steps = 1000
end if

allocate (x(n_steps), value(n_steps))
call linspace(interval(1), interval(2), n_steps, x)
call func(x, value)
extrema(1) = minval(value)
extrema(2) = maxval(value)
end function find_global_extrema
min_loc = x(minloc(value, dim=1))
end function find_global_minimum

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

4. Removed api breaks build 🐞 Bug ≡ Correctness

find_global_extrema is still imported/called by fieldline_labels.f90, but the find_extrema
module no longer defines it, so fieldline_lib will fail to compile.
Agent Prompt
### Issue description
`src/fieldline/fieldline_labels.f90` depends on `find_extrema::find_global_extrema`, but that procedure was removed/renamed in `src/utils/find_extrema.f90`, causing compilation failure.

### Issue Context
- Existing code uses `find_global_extrema` to return `[minval, maxval]` of a sampled function over an interval.
- New code introduces `find_global_minimum` returning the *location* of the minimum, which is not a drop-in replacement.

### Fix Focus Areas
- Re-introduce `find_global_extrema` (old behavior) alongside `find_global_minimum`, or update all call sites and provide an equivalent API for extrema values.
- file/path references:
  - src/utils/find_extrema.f90[130-151]
  - src/fieldline/fieldline_labels.f90[85-147]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +56 to +64
function get_fieldline_at_global_maximum(fieldlines) result(max_fieldline)
class(fieldline_t), dimension(:), intent(in) :: fieldlines
type(fieldline_t) :: max_fieldline

integer :: max_index

max_index = maxloc(fieldlines%B_max(1), dim=1)
max_fieldline = fieldlines(max_index)
end function get_fieldline_at_global_maximum

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

5. Wrong max fieldline chosen 🐞 Bug ≡ Correctness

get_fieldline_at_global_maximum only considers B_max(1) and ignores B_max(2), so it can select
the wrong fieldline when the true global maximum is stored in the second entry.
Agent Prompt
### Issue description
The fieldline selection for the global maximum only scans `B_max(1)`, ignoring `B_max(2)`, so it may pick the wrong fieldline and propagate incorrect downstream calculations.

### Issue Context
`fieldline_t%B_max` is a length-2 array; callers likely expect the maximum over both endpoints/branches.

### Fix Focus Areas
- Compute a per-fieldline maximum over both `B_max` entries, then apply `maxloc` on that value.
- file/path references:
  - src/precession/precession.f90[56-64]
  - src/fieldline/fieldline.f90[6-14]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

GeorgGrassler and others added 28 commits April 9, 2026 16:53
A small lamor radius lets the drifts be small as well. If the time steps given by taumin are too big, the Lagrange interpolation can not properly resolve those small differences. Therefore, one can on one hand increase the lamor radius until the drifts become distinct from the parallel motion and then divide the lamor radius out to get species indpendant values. However, if the drifts are too small, they also effect other quantites i.e. allow trapped particles to escape their wells and become more/less "passing". When wanting to keep the drifts small but still resolve them, one needs to do more steps around the tips to to properly interpolate correctly. Increasing the tolerance of the odeint solvers does not change the result here, as it it not their accurcacy that is the issue, but the missing points to properly resolve the tip (i.e. misssing information).
Resolve conflicts and adapt the precession code to main's APIs:
- keep field_3D_t alongside rel_accuracy_B/get_covariant_components
  in field_base
- keep find_global_minimum/find_global_maximum alongside main's
  find_global_extrema
- drop the local boozer_converter.F90 (moved to libneo); keep the
  use_B_r_covariant init switch
- link precession_lib against granular libneo targets instead of
  LIBNEO::neo
- pass flock_of_fieldlines_t through precession, electric_rabe and
  the precession tests
- carry M_pol/N_tor/nfp on fieldline_for_precession_t (moved off
  fieldline_t to the flock)
- implement rel_accuracy_B/get_covariant_components on mock_field_3d_t
gfortran treats line truncation as an error, which failed the CI build.
@krystophny

Copy link
Copy Markdown
Member

Merged main and resolved the conflicts (field_base, find_extrema, boozer_field, fieldline_labels, surface_average, CMake; dropped the local boozer_converter.F90 in favor of libneo); adapted the precession code and tests to main's flock/libneo APIs and fixed the CI build failure (132-column line truncation in test_trace_till_bounce.f90).

34/35 quick tests pass. TestPrecessionAnalytic still fails and needs a decision on two points:

  1. Pre-existing, unchanged by the merge: flux_modes disagree with the analytic fieldline modes by a constant factor of about 3.17 (mode 2: found 3.884e-5, expected 1.230e-4). Looks like a normalization issue in the radial drift definition.
  2. New with main's refined find_local_minima: the well bottom is now resolved at the true minimum (phi of order 1e-7) instead of the old 1001-point grid artifact at +-2.2e-3. Fieldline 5's radial drift then evaluates to exactly zero at the deepest-trapped grid point, and libneo's odeint error scale (|y| + |h dy/dx| + tiny) collapses when y = 0 and f(t_start) = 0: the integrator silently fails and integrate_radial_drift returns 0, breaking the numerical cross-check (modes 2/3 off by 29%/68%). Options: a robust quadrature for the radial-drift integral in integrate_radial_drift, or an error-scale floor fix in libneo's odeint.

@GeorgGrassler

Copy link
Copy Markdown
Collaborator Author

@krystophny do not touch this branch please.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants