From f7389cfc3853843f2e762577cc29ab1cacd9c43c Mon Sep 17 00:00:00 2001 From: "Soroosh.Mani" Date: Fri, 2 Jun 2023 10:09:32 -0400 Subject: [PATCH 1/3] Test for basic tidal setup --- tests/test_bctides.py | 44 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/tests/test_bctides.py b/tests/test_bctides.py index eca954a9..360d1330 100755 --- a/tests/test_bctides.py +++ b/tests/test_bctides.py @@ -9,8 +9,12 @@ import tempfile import unittest import urllib.request +from datetime import datetime, timedelta -from pyschism.cmd.bctides import add_bctides, BctidesCli +from pyschism.cmd.bctides import BctidesCli +from pyschism.driver import ModelConfig +from pyschism.forcing.bctides import iettype, ifltype +from pyschism.mesh import Hgrid logging.basicConfig(level=logging.INFO, force=True) @@ -106,6 +110,44 @@ def _test_bctides_cli_3d(self): ]) BctidesCli(args) + def test_simple_tidal_setup(self): + # Inputs: Modify As Needed! + start_date = "2018091000" #in YYYYMMDDHH format + end_date = "2018091600" #in YYYYMMDDHH format + + tide_source = "tpxo" + + dt = timedelta(seconds=150.) + nspool = timedelta(minutes=20.) + + start_date = datetime.strptime(start_date, "%Y%m%d%H") + end_date = datetime.strptime(end_date, "%Y%m%d%H") + rnday = end_date - start_date + + hgrid = Hgrid.open( + 'https://raw.githubusercontent.com/geomesh/test-data/main/NWM/hgrid.ll', + crs=4326 + ) + + config = ModelConfig( + hgrid=hgrid, + iettype=iettype.Iettype3(database=tide_source), + ifltype=ifltype.Ifltype3(database=tide_source), + ) + + coldstart = config.coldstart( + start_date=start_date, + end_date=start_date + rnday, + timestep=dt, + nspool=timedelta(hours=1), + elev=True, + dahv=True, + ) + + with tempfile.TemporaryDirectory() as dn: + tmpdir = pathlib.Path(dn) + coldstart.write(tmpdir, overwrite=True) + if __name__ == '__main__': unittest.main() From e01510bc70034081ad6983286ed0af4daf408a9a Mon Sep 17 00:00:00 2001 From: "Soroosh.Mani" Date: Fri, 2 Jun 2023 10:15:57 -0400 Subject: [PATCH 2/3] Error out when submitted process fails! --- pyschism/forcing/bctides/bctides.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyschism/forcing/bctides/bctides.py b/pyschism/forcing/bctides/bctides.py index 063e8d36..2a939993 100644 --- a/pyschism/forcing/bctides/bctides.py +++ b/pyschism/forcing/bctides/bctides.py @@ -226,6 +226,8 @@ def write_sal3D(): job.start() for job in jobs: job.join() + if any(j.exitcode != 0 for j in jobs): + raise RuntimeError("Some parallel writer jobs failed!") else: if elev2D: write_elev2D() From 4a8ee356a1660505821d2d66932f9b5e34874731 Mon Sep 17 00:00:00 2001 From: "Soroosh.Mani" Date: Fri, 2 Jun 2023 10:16:40 -0400 Subject: [PATCH 3/3] Fix bctide writer --- pyschism/forcing/bctides/bctides.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pyschism/forcing/bctides/bctides.py b/pyschism/forcing/bctides/bctides.py index 2a939993..c92c2c93 100644 --- a/pyschism/forcing/bctides/bctides.py +++ b/pyschism/forcing/bctides/bctides.py @@ -219,8 +219,13 @@ def write_sal3D(): from multiprocessing import Process jobs = [ - Process(target=f) - for f in (write_elev2D, write_uv3D, write_tem3D, write_sal3D) + Process(target=fn) + for fn, fl in ( + (write_elev2D, elev2D), + (write_uv3D, uv3D), + (write_tem3D, tem3D), + (write_sal3D, sal3D) + ) if fl ] for job in jobs: job.start()