From 8eebb8e91bbc3c409950e53e4e37a9cf984292f6 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Wed, 1 Apr 2026 00:25:29 -0400 Subject: [PATCH] fix: use DBADDIAOPT for array SILO options (lo_offset, hi_offset) DBADDIOPT expects a scalar integer, but lo_offset and hi_offset are arrays (size 1-3 depending on dimensionality). This passes an array where SILO expects a scalar pointer, so only the first element is read. Use DBADDIAOPT (integer array option) instead, which takes the array length and pointer. This fixes gfortran rank mismatch warnings and ensures all dimension offsets are correctly written to SILO files. --- src/post_process/m_data_output.fpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/post_process/m_data_output.fpp b/src/post_process/m_data_output.fpp index 0ac093288f..94d02196a7 100644 --- a/src/post_process/m_data_output.fpp +++ b/src/post_process/m_data_output.fpp @@ -489,8 +489,8 @@ contains if (p > 0) then err = DBMKOPTLIST(2, optlist) - err = DBADDIOPT(optlist, DBOPT_LO_OFFSET, lo_offset) - err = DBADDIOPT(optlist, DBOPT_HI_OFFSET, hi_offset) + err = DBADDIAOPT(optlist, DBOPT_LO_OFFSET, size(lo_offset), lo_offset) + err = DBADDIAOPT(optlist, DBOPT_HI_OFFSET, size(hi_offset), hi_offset) if (grid_geometry == 3) then err = DBPUTQM(dbfile, 'rectilinear_grid', 16, 'x', 1, 'y', 1, 'z', 1, y_cb, z_cb, x_cb, dims, 3, DB_DOUBLE, & & DB_COLLINEAR, optlist, ierr) @@ -501,15 +501,15 @@ contains err = DBFREEOPTLIST(optlist) else if (n > 0) then err = DBMKOPTLIST(2, optlist) - err = DBADDIOPT(optlist, DBOPT_LO_OFFSET, lo_offset) - err = DBADDIOPT(optlist, DBOPT_HI_OFFSET, hi_offset) + err = DBADDIAOPT(optlist, DBOPT_LO_OFFSET, size(lo_offset), lo_offset) + err = DBADDIAOPT(optlist, DBOPT_HI_OFFSET, size(hi_offset), hi_offset) err = DBPUTQM(dbfile, 'rectilinear_grid', 16, 'x', 1, 'y', 1, 'z', 1, x_cb, y_cb, DB_F77NULL, dims, 2, DB_DOUBLE, & & DB_COLLINEAR, optlist, ierr) err = DBFREEOPTLIST(optlist) else err = DBMKOPTLIST(2, optlist) - err = DBADDIOPT(optlist, DBOPT_LO_OFFSET, lo_offset) - err = DBADDIOPT(optlist, DBOPT_HI_OFFSET, hi_offset) + err = DBADDIAOPT(optlist, DBOPT_LO_OFFSET, size(lo_offset), lo_offset) + err = DBADDIAOPT(optlist, DBOPT_HI_OFFSET, size(hi_offset), hi_offset) err = DBPUTQM(dbfile, 'rectilinear_grid', 16, 'x', 1, 'y', 1, 'z', 1, x_cb, DB_F77NULL, DB_F77NULL, dims, 1, & & DB_DOUBLE, DB_COLLINEAR, optlist, ierr) err = DBFREEOPTLIST(optlist)