From 3a14b70e6a5cbecadebcede1d40712cd863ac18c Mon Sep 17 00:00:00 2001 From: Mohammed Karim Date: Mon, 9 Mar 2026 12:34:02 -0700 Subject: [PATCH 1/6] test off and debug --- build_test_sfincs.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build_test_sfincs.sh b/build_test_sfincs.sh index b7c368dbb1..46c51d9a05 100644 --- a/build_test_sfincs.sh +++ b/build_test_sfincs.sh @@ -1,6 +1,8 @@ cmake -B cmake_build -S . \ -DNGEN_WITH_BMI_FORTRAN=ON \ -DNGEN_BUILD_COASTAL_TESTS=ON \ + -DNGEN_WITH_TESTS=OFF \ + -DCMAKE_BUILD_TYPE=Debug \ -DNGEN_ENABLE_SCHISM=OFF \ -DSFINCS_BMI_LIBRARY=/home/mohammed.karim/Calibration/ngen/extern/SFINCS/source/src/build/libsfincs_bmi.so \ -DSFINCS_INIT_CONFIG=/home/mohammed.karim/Calibration/ngen/extern/SFINCS/source/src/build/sfincs_config.txt From 4b5be0bbf72292d8c8c3a07fa0e922f9da415b2e Mon Sep 17 00:00:00 2001 From: Mohammed Karim Date: Mon, 23 Mar 2026 11:35:10 -0700 Subject: [PATCH 2/6] added BEDLEVEL --- src/realizations/coastal/SfincsFormulation.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/realizations/coastal/SfincsFormulation.cpp b/src/realizations/coastal/SfincsFormulation.cpp index 59ec39293b..a84ff14ab7 100644 --- a/src/realizations/coastal/SfincsFormulation.cpp +++ b/src/realizations/coastal/SfincsFormulation.cpp @@ -26,6 +26,13 @@ SfincsFormulation::~SfincsFormulation() try { finalize(); } catch (...) {} } +static std::string normalize_var(const std::string& v) +{ + if (v == "BEDLEVEL" || v == "bedlevel" || v == "bed_level") + return "zb"; + return v; +} + void SfincsFormulation::create_formulation_() { #if NGEN_WITH_BMI_FORTRAN @@ -154,7 +161,7 @@ double SfincsFormulation::get_time_step() void SfincsFormulation::get_values(const selection_type& selector, boost::span out) { - const std::string& var = selector.variable_name; + const std::string var = normalize_var(selector.variable_name); #if NGEN_WITH_BMI_FORTRAN if (!bmi_) { From 9aad899c6ee06466f6027e9b26e9266203b56ce3 Mon Sep 17 00:00:00 2001 From: Mohammed Karim Date: Mon, 23 Mar 2026 11:44:46 -0700 Subject: [PATCH 3/6] commands to build SFINCS updated --- build_sfincs.sh | 57 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100755 build_sfincs.sh diff --git a/build_sfincs.sh b/build_sfincs.sh new file mode 100755 index 0000000000..1c74a70113 --- /dev/null +++ b/build_sfincs.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Build the BMI shared library in the same environment style as the documented +# working SFINCS build. + +ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +SRC_DIR="$ROOT/extern/SFINCS/source/src" +BUILD_DIR="$ROOT/extern/SFINCS/cmake_build" + +# Prefer the active conda/pixi env if present +if [[ -n "${CONDA_PREFIX:-}" ]]; then + export NETCDF_PREFIX="$CONDA_PREFIX" + export PKG_CONFIG_PATH="$CONDA_PREFIX/lib/pkgconfig:${PKG_CONFIG_PATH:-}" +fi + +# Fall back to nc-config if available +if command -v nc-config >/dev/null 2>&1; then + NC_INC="$(nc-config --includedir)" + NC_LIB="$(nc-config --libdir)" +else + echo "ERROR: nc-config not found on PATH" + exit 1 +fi + +# Match the documented SFINCS build flags as closely as possible +export FCFLAGS="${FCFLAGS:-} -fopenmp -O3 -fallow-argument-mismatch -w" +export FFLAGS="${FFLAGS:-} -fopenmp -O3 -fallow-argument-mismatch -w" +export CFLAGS="${CFLAGS:-}" +export CXXFLAGS="${CXXFLAGS:-}" + +# Clean rebuild while debugging env issues +rm -rf "$BUILD_DIR" + +cmake -S "$SRC_DIR" -B "$BUILD_DIR" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_COMPILER="${CC:-gcc}" \ + -DCMAKE_Fortran_COMPILER="${FC:-gfortran}" \ + -DNETCDF_PREFIX="${NETCDF_PREFIX:-}" \ + -DSFINCS_ENABLE_NETCDF=ON \ + -DSFINCS_ENABLE_OPENMP=ON \ + -DSFINCS_BUILD_TESTS=OFF \ + -DCMAKE_Fortran_FLAGS_RELEASE="$FCFLAGS" \ + -DCMAKE_EXE_LINKER_FLAGS="-L$NC_LIB -Wl,-rpath,$NC_LIB" \ + -DCMAKE_SHARED_LINKER_FLAGS="-L$NC_LIB -Wl,-rpath,$NC_LIB" \ + -DCMAKE_Fortran_FLAGS="-g -O0 -fcheck=all -fbacktrace -ffpe-trap=invalid,zero,overflow" \ + -DCMAKE_C_FLAGS_RELEASE="${CFLAGS}" \ + -DCMAKE_CXX_FLAGS_RELEASE="${CXXFLAGS}" + +cmake --build "$BUILD_DIR" -j1 + +echo +echo "Built:" +echo " $BUILD_DIR/libsfincs_bmi.so" +echo +echo "Runtime linkage:" +ldd "$BUILD_DIR/libsfincs_bmi.so" || true From 9cbbda4a1eb391e76144e5430a0b221573a54420 Mon Sep 17 00:00:00 2001 From: Mohammed Karim Date: Tue, 7 Apr 2026 08:27:38 -0700 Subject: [PATCH 4/6] fixed timestep = false --- src/realizations/coastal/SfincsFormulation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/realizations/coastal/SfincsFormulation.cpp b/src/realizations/coastal/SfincsFormulation.cpp index a84ff14ab7..8d85cc87cc 100644 --- a/src/realizations/coastal/SfincsFormulation.cpp +++ b/src/realizations/coastal/SfincsFormulation.cpp @@ -43,7 +43,7 @@ void SfincsFormulation::create_formulation_() // - (type_name, library, init_config, has_fixed_dt, reg_func) // // We want to pass init_config_ so use the 5-arg overload. - const bool has_fixed_time_step = true; + const bool has_fixed_time_step = false; // Default in adapter header is "register_bmi", but pass explicitly for clarity. const std::string registration_function = "register_bmi"; From 6992b754e06fd937e58dfe3d9e5999ec63259c74 Mon Sep 17 00:00:00 2001 From: Mohammed Karim Date: Tue, 7 Apr 2026 12:20:19 -0700 Subject: [PATCH 5/6] updateUntill bug fix --- src/realizations/coastal/SfincsFormulation.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/realizations/coastal/SfincsFormulation.cpp b/src/realizations/coastal/SfincsFormulation.cpp index 8d85cc87cc..a507b2f91c 100644 --- a/src/realizations/coastal/SfincsFormulation.cpp +++ b/src/realizations/coastal/SfincsFormulation.cpp @@ -105,6 +105,7 @@ void SfincsFormulation::update() #endif } + void SfincsFormulation::update_until(double const& t) { #if NGEN_WITH_BMI_FORTRAN @@ -115,7 +116,7 @@ void SfincsFormulation::update_until(double const& t) // Mirror Schism behavior while (bmi_->GetCurrentTime() < t) { // set_inputs_(); - bmi_->Update(); + bmi_->UpdateUntil(t); } #else (void)t; From 3e1a9b4aa72132615cc0470e0a7bf612ef0e07b9 Mon Sep 17 00:00:00 2001 From: Mohammed Karim Date: Tue, 7 Apr 2026 17:18:22 -0700 Subject: [PATCH 6/6] updateUntill Fix --- src/realizations/coastal/SfincsFormulation.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/realizations/coastal/SfincsFormulation.cpp b/src/realizations/coastal/SfincsFormulation.cpp index a507b2f91c..e2918b901d 100644 --- a/src/realizations/coastal/SfincsFormulation.cpp +++ b/src/realizations/coastal/SfincsFormulation.cpp @@ -113,17 +113,15 @@ void SfincsFormulation::update_until(double const& t) throw std::runtime_error("SfincsFormulation::update_until called before initialize()"); } - // Mirror Schism behavior - while (bmi_->GetCurrentTime() < t) { - // set_inputs_(); - bmi_->UpdateUntil(t); - } + bmi_->UpdateUntil(t); + #else (void)t; throw std::runtime_error("SfincsFormulation requires NGEN_WITH_BMI_FORTRAN=ON"); #endif } + double SfincsFormulation::get_current_time() { #if NGEN_WITH_BMI_FORTRAN