From 47e028e55c9694bd8f0a5412d4ecbbd6f724bffa Mon Sep 17 00:00:00 2001 From: "kyle.larkin" Date: Wed, 8 Apr 2026 13:32:28 -0400 Subject: [PATCH] Gates initial geometa dimensionality check by discretization. --- .../NextGen_Forcings_Engine/bmi_model.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/bmi_model.py b/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/bmi_model.py index a97eba48..c9e550a4 100755 --- a/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/bmi_model.py +++ b/NextGen_Forcings_Engine_BMI/NextGen_Forcings_Engine/bmi_model.py @@ -783,15 +783,20 @@ def initialize(self, config_file: str, output_path: str | None = None) -> None: err_handler.err_out_screen_para(self._job_meta.errMsg, self._mpi_meta) err_handler.check_program_status(self._job_meta, self._mpi_meta) - # Check to make sure we have enough dimensionality to run regridding. ESMF requires both grids - # to have a size of at least 2. + # Check to make sure we have enough dimensionality to run regridding. We assume that hydrofabric discretizations are large + # enough that 1x1 (single catchment) will provide enough points. For gridded and unstructured domains, we need to make sure + # that the local grid size for each processor is at least 2x2 to run the regridding process. + # forcing_input dimensionality is checked in regrid.py. + + dimensionality = 1 if self._grid_type == "hydrofabric" else 2 + if ( - self._wrf_hydro_geo_meta.nx_local < 2 - or self._wrf_hydro_geo_meta.ny_local < 2 + self._wrf_hydro_geo_meta.nx_local < dimensionality + or self._wrf_hydro_geo_meta.ny_local < dimensionality ): self._job_meta.errMsg = ( - "You have specified too many cores for your WRF-Hydro grid. " - "Local grid Must have x/y dimension size of 2." + f"You have specified too many cores for your WRF-Hydro grid. " + f"Local grid Must have x/y dimension size of {dimensionality}." ) err_handler.err_out_screen_para(self._job_meta.errMsg, self._mpi_meta) err_handler.check_program_status(self._job_meta, self._mpi_meta)