From 6c2f44e4dda1eddf74582f2512cf8713b8c92b02 Mon Sep 17 00:00:00 2001 From: Michael Topsom <119038284+michael-topsom-deltares@users.noreply.github.com> Date: Wed, 22 Apr 2026 12:52:37 +0200 Subject: [PATCH 1/3] Get and set float values --- src/main/java/edu/colorado/csdms/bmi/BmiGetter.java | 1 + src/main/java/edu/colorado/csdms/bmi/BmiSetter.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/java/edu/colorado/csdms/bmi/BmiGetter.java b/src/main/java/edu/colorado/csdms/bmi/BmiGetter.java index 3ae165d..073eb7d 100644 --- a/src/main/java/edu/colorado/csdms/bmi/BmiGetter.java +++ b/src/main/java/edu/colorado/csdms/bmi/BmiGetter.java @@ -9,6 +9,7 @@ public interface BmiGetter { public void getValue(String varName, double[] dest); + void getValue(String varName, float[] dest); public void getValue(String varName, int[] dest); public void getValue(String varName, String[] dest); diff --git a/src/main/java/edu/colorado/csdms/bmi/BmiSetter.java b/src/main/java/edu/colorado/csdms/bmi/BmiSetter.java index a1abfd1..be0b3e5 100644 --- a/src/main/java/edu/colorado/csdms/bmi/BmiSetter.java +++ b/src/main/java/edu/colorado/csdms/bmi/BmiSetter.java @@ -9,6 +9,7 @@ public interface BmiSetter { public void setValue(String varName, double[] src); + void setValue(String varName, float[] src); public void setValue(String varName, int[] src); public void setValue(String varName, String[] src); From 2f609f4764dc68a8a986f26be36f97b78f835b84 Mon Sep 17 00:00:00 2001 From: Michael Topsom <119038284+michael-topsom-deltares@users.noreply.github.com> Date: Wed, 22 Apr 2026 13:05:52 +0200 Subject: [PATCH 2/3] Get and set float values at indices and clean up access modifiers --- .../edu/colorado/csdms/bmi/BmiControl.java | 10 ++++----- .../edu/colorado/csdms/bmi/BmiGetter.java | 21 ++++++++++++------- .../java/edu/colorado/csdms/bmi/BmiGrid.java | 6 +++--- .../csdms/bmi/BmiGridRectilinear.java | 8 +++---- .../csdms/bmi/BmiGridStructuredQuad.java | 8 +++---- .../csdms/bmi/BmiGridUniformRectilinear.java | 6 +++--- .../csdms/bmi/BmiGridUnstructured.java | 20 +++++++++--------- .../java/edu/colorado/csdms/bmi/BmiInfo.java | 10 ++++----- .../edu/colorado/csdms/bmi/BmiSetter.java | 19 ++++++++++------- .../java/edu/colorado/csdms/bmi/BmiTime.java | 10 ++++----- .../java/edu/colorado/csdms/bmi/BmiVars.java | 12 +++++------ 11 files changed, 70 insertions(+), 60 deletions(-) diff --git a/src/main/java/edu/colorado/csdms/bmi/BmiControl.java b/src/main/java/edu/colorado/csdms/bmi/BmiControl.java index bc3b385..f184dcc 100644 --- a/src/main/java/edu/colorado/csdms/bmi/BmiControl.java +++ b/src/main/java/edu/colorado/csdms/bmi/BmiControl.java @@ -8,9 +8,9 @@ */ public interface BmiControl { - public void initialize(String configFile); - public void initialize(); - public void update(); - public void updateUntil(double time); - public void finalize(); + void initialize(String configFile); + void initialize(); + void update(); + void updateUntil(double time); + void finalize(); } diff --git a/src/main/java/edu/colorado/csdms/bmi/BmiGetter.java b/src/main/java/edu/colorado/csdms/bmi/BmiGetter.java index 073eb7d..d06c826 100644 --- a/src/main/java/edu/colorado/csdms/bmi/BmiGetter.java +++ b/src/main/java/edu/colorado/csdms/bmi/BmiGetter.java @@ -8,14 +8,19 @@ */ public interface BmiGetter { - public void getValue(String varName, double[] dest); - void getValue(String varName, float[] dest); - public void getValue(String varName, int[] dest); - public void getValue(String varName, String[] dest); + void getValue(String varName, double[] dest); + default void getValue(String varName, float[] dest) { + throw new UnsupportedOperationException("Not supported yet."); + } + void getValue(String varName, int[] dest); + void getValue(String varName, String[] dest); - public T getValuePtr(String varName); + T getValuePtr(String varName); - public void getValueAtIndices(String varName, double[] dest, int[] indices); - public void getValueAtIndices(String varName, int[] dest, int[] indices); - public void getValueAtIndices(String varName, String[] dest, int[] indices); + void getValueAtIndices(String varName, double[] dest, int[] indices); + default void getValueAtIndices(String varName, float[] dest, int[] indices) { + throw new UnsupportedOperationException("Not supported yet."); + } + void getValueAtIndices(String varName, int[] dest, int[] indices); + void getValueAtIndices(String varName, String[] dest, int[] indices); } diff --git a/src/main/java/edu/colorado/csdms/bmi/BmiGrid.java b/src/main/java/edu/colorado/csdms/bmi/BmiGrid.java index 743cf03..94f686c 100644 --- a/src/main/java/edu/colorado/csdms/bmi/BmiGrid.java +++ b/src/main/java/edu/colorado/csdms/bmi/BmiGrid.java @@ -8,7 +8,7 @@ */ public interface BmiGrid { - public int getGridRank(int gridId); - public int getGridSize(int gridId); - public String getGridType(int gridId); + int getGridRank(int gridId); + int getGridSize(int gridId); + String getGridType(int gridId); } diff --git a/src/main/java/edu/colorado/csdms/bmi/BmiGridRectilinear.java b/src/main/java/edu/colorado/csdms/bmi/BmiGridRectilinear.java index 5b25c74..97fbeb9 100644 --- a/src/main/java/edu/colorado/csdms/bmi/BmiGridRectilinear.java +++ b/src/main/java/edu/colorado/csdms/bmi/BmiGridRectilinear.java @@ -8,8 +8,8 @@ */ public interface BmiGridRectilinear extends BmiGrid { - public void getGridShape(int gridId, int[] gridShape); - public void getGridX(int gridId, double[] gridX); - public void getGridY(int gridId, double[] gridY); - public void getGridZ(int gridId, double[] gridZ); + void getGridShape(int gridId, int[] gridShape); + void getGridX(int gridId, double[] gridX); + void getGridY(int gridId, double[] gridY); + void getGridZ(int gridId, double[] gridZ); } diff --git a/src/main/java/edu/colorado/csdms/bmi/BmiGridStructuredQuad.java b/src/main/java/edu/colorado/csdms/bmi/BmiGridStructuredQuad.java index 2060619..54afa85 100644 --- a/src/main/java/edu/colorado/csdms/bmi/BmiGridStructuredQuad.java +++ b/src/main/java/edu/colorado/csdms/bmi/BmiGridStructuredQuad.java @@ -8,8 +8,8 @@ */ public interface BmiGridStructuredQuad extends BmiGrid { - public void getGridShape(int gridId, int[] gridShape); - public void getGridX(int gridId, double[] gridX); - public void getGridY(int gridId, double[] gridY); - public void getGridZ(int gridId, double[] gridZ); + void getGridShape(int gridId, int[] gridShape); + void getGridX(int gridId, double[] gridX); + void getGridY(int gridId, double[] gridY); + void getGridZ(int gridId, double[] gridZ); } diff --git a/src/main/java/edu/colorado/csdms/bmi/BmiGridUniformRectilinear.java b/src/main/java/edu/colorado/csdms/bmi/BmiGridUniformRectilinear.java index 52b1ea5..9367744 100644 --- a/src/main/java/edu/colorado/csdms/bmi/BmiGridUniformRectilinear.java +++ b/src/main/java/edu/colorado/csdms/bmi/BmiGridUniformRectilinear.java @@ -8,7 +8,7 @@ */ public interface BmiGridUniformRectilinear extends BmiGrid { - public void getGridShape(int gridId, int[] gridShape); - public void getGridSpacing(int gridId, double[] gridSpacing); - public void getGridOrigin(int gridId, double[] gridOrigin); + void getGridShape(int gridId, int[] gridShape); + void getGridSpacing(int gridId, double[] gridSpacing); + void getGridOrigin(int gridId, double[] gridOrigin); } diff --git a/src/main/java/edu/colorado/csdms/bmi/BmiGridUnstructured.java b/src/main/java/edu/colorado/csdms/bmi/BmiGridUnstructured.java index cb33ae7..a5189d7 100644 --- a/src/main/java/edu/colorado/csdms/bmi/BmiGridUnstructured.java +++ b/src/main/java/edu/colorado/csdms/bmi/BmiGridUnstructured.java @@ -9,16 +9,16 @@ */ public interface BmiGridUnstructured extends BmiGrid { - public void getGridX(int gridId, double[] gridX); - public void getGridY(int gridId, double[] gridY); - public void getGridZ(int gridId, double[] gridZ); + void getGridX(int gridId, double[] gridX); + void getGridY(int gridId, double[] gridY); + void getGridZ(int gridId, double[] gridZ); - public int getGridNodeCount(int gridId); - public int getGridEdgeCount(int gridId); - public int getGridFaceCount(int gridId); + int getGridNodeCount(int gridId); + int getGridEdgeCount(int gridId); + int getGridFaceCount(int gridId); - public void getGridEdgeNodes(int gridId, int[] edgeNodes); - public void getGridFaceEdges(int gridId, int[] faceEdges); - public void getGridFaceNodes(int gridId, int[] faceNodes); - public void getGridNodesPerFace(int gridId, int[] nodesPerFace); + void getGridEdgeNodes(int gridId, int[] edgeNodes); + void getGridFaceEdges(int gridId, int[] faceEdges); + void getGridFaceNodes(int gridId, int[] faceNodes); + void getGridNodesPerFace(int gridId, int[] nodesPerFace); } diff --git a/src/main/java/edu/colorado/csdms/bmi/BmiInfo.java b/src/main/java/edu/colorado/csdms/bmi/BmiInfo.java index 3f22e14..f6ad803 100644 --- a/src/main/java/edu/colorado/csdms/bmi/BmiInfo.java +++ b/src/main/java/edu/colorado/csdms/bmi/BmiInfo.java @@ -8,9 +8,9 @@ */ public interface BmiInfo { - public String getComponentName(); - public int getInputItemCount(); - public int getOutputItemCount(); - public String[] getInputVarNames(); - public String[] getOutputVarNames(); + String getComponentName(); + int getInputItemCount(); + int getOutputItemCount(); + String[] getInputVarNames(); + String[] getOutputVarNames(); } diff --git a/src/main/java/edu/colorado/csdms/bmi/BmiSetter.java b/src/main/java/edu/colorado/csdms/bmi/BmiSetter.java index be0b3e5..f0ed382 100644 --- a/src/main/java/edu/colorado/csdms/bmi/BmiSetter.java +++ b/src/main/java/edu/colorado/csdms/bmi/BmiSetter.java @@ -8,12 +8,17 @@ */ public interface BmiSetter { - public void setValue(String varName, double[] src); - void setValue(String varName, float[] src); - public void setValue(String varName, int[] src); - public void setValue(String varName, String[] src); + void setValue(String varName, double[] src); + default void setValue(String varName, float[] src) { + throw new UnsupportedOperationException("Not supported yet."); + } + void setValue(String varName, int[] src); + void setValue(String varName, String[] src); - public void setValueAtIndices(String varName, int[] indices, double[] src); - public void setValueAtIndices(String varName, int[] indices, int[] src); - public void setValueAtIndices(String varName, int[] indices, String[] src); + void setValueAtIndices(String varName, int[] indices, double[] src); + default void setValueAtIndices(String varName, int[] indices, float[] src) { + throw new UnsupportedOperationException("Not supported yet."); + } + void setValueAtIndices(String varName, int[] indices, int[] src); + void setValueAtIndices(String varName, int[] indices, String[] src); } diff --git a/src/main/java/edu/colorado/csdms/bmi/BmiTime.java b/src/main/java/edu/colorado/csdms/bmi/BmiTime.java index 41d2528..2d46a8c 100644 --- a/src/main/java/edu/colorado/csdms/bmi/BmiTime.java +++ b/src/main/java/edu/colorado/csdms/bmi/BmiTime.java @@ -8,9 +8,9 @@ */ public interface BmiTime { - public double getCurrentTime(); - public double getStartTime(); - public double getEndTime(); - public String getTimeUnits(); - public double getTimeStep(); + double getCurrentTime(); + double getStartTime(); + double getEndTime(); + String getTimeUnits(); + double getTimeStep(); } diff --git a/src/main/java/edu/colorado/csdms/bmi/BmiVars.java b/src/main/java/edu/colorado/csdms/bmi/BmiVars.java index e56a0a2..23a7b2a 100644 --- a/src/main/java/edu/colorado/csdms/bmi/BmiVars.java +++ b/src/main/java/edu/colorado/csdms/bmi/BmiVars.java @@ -8,10 +8,10 @@ */ public interface BmiVars { - public int getVarGrid(String varName); - public String getVarType(String varName); - public String getVarUnits(String varName); - public int getVarItemsize(String varName); - public int getVarNbytes(String varName); - public String getVarLocation(String varName); + int getVarGrid(String varName); + String getVarType(String varName); + String getVarUnits(String varName); + int getVarItemsize(String varName); + int getVarNbytes(String varName); + String getVarLocation(String varName); } From 212ebdf9363df3a084a4372f905ccd5b32bea774 Mon Sep 17 00:00:00 2001 From: Michael Topsom <119038284+michael-topsom-deltares@users.noreply.github.com> Date: Wed, 22 Apr 2026 13:10:40 +0200 Subject: [PATCH 3/3] Get and set float values without default methods, expecting BMI to be 2.1 --- src/main/java/edu/colorado/csdms/bmi/BmiGetter.java | 8 ++------ src/main/java/edu/colorado/csdms/bmi/BmiSetter.java | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/main/java/edu/colorado/csdms/bmi/BmiGetter.java b/src/main/java/edu/colorado/csdms/bmi/BmiGetter.java index d06c826..2453001 100644 --- a/src/main/java/edu/colorado/csdms/bmi/BmiGetter.java +++ b/src/main/java/edu/colorado/csdms/bmi/BmiGetter.java @@ -9,18 +9,14 @@ public interface BmiGetter { void getValue(String varName, double[] dest); - default void getValue(String varName, float[] dest) { - throw new UnsupportedOperationException("Not supported yet."); - } + void getValue(String varName, float[] dest); void getValue(String varName, int[] dest); void getValue(String varName, String[] dest); T getValuePtr(String varName); void getValueAtIndices(String varName, double[] dest, int[] indices); - default void getValueAtIndices(String varName, float[] dest, int[] indices) { - throw new UnsupportedOperationException("Not supported yet."); - } + void getValueAtIndices(String varName, float[] dest, int[] indices); void getValueAtIndices(String varName, int[] dest, int[] indices); void getValueAtIndices(String varName, String[] dest, int[] indices); } diff --git a/src/main/java/edu/colorado/csdms/bmi/BmiSetter.java b/src/main/java/edu/colorado/csdms/bmi/BmiSetter.java index f0ed382..b241323 100644 --- a/src/main/java/edu/colorado/csdms/bmi/BmiSetter.java +++ b/src/main/java/edu/colorado/csdms/bmi/BmiSetter.java @@ -9,16 +9,12 @@ public interface BmiSetter { void setValue(String varName, double[] src); - default void setValue(String varName, float[] src) { - throw new UnsupportedOperationException("Not supported yet."); - } + void setValue(String varName, float[] src); void setValue(String varName, int[] src); void setValue(String varName, String[] src); void setValueAtIndices(String varName, int[] indices, double[] src); - default void setValueAtIndices(String varName, int[] indices, float[] src) { - throw new UnsupportedOperationException("Not supported yet."); - } + void setValueAtIndices(String varName, int[] indices, float[] src); void setValueAtIndices(String varName, int[] indices, int[] src); void setValueAtIndices(String varName, int[] indices, String[] src); }