schism-dev / pyschism

Python interface for handling the SCHISM model.
https://schism-dev.github.io/schism/master/getting-started/pre-processing-with-pyschism/overview.html
Apache License 2.0
24 stars 20 forks source link

Tidal Setup Issue #73

Closed SorooshMani-NOAA closed 1 year ago

SorooshMani-NOAA commented 1 year ago

Due to changes to the following:

https://github.com/schism-dev/pyschism/blob/9636a64ae8ae487ef5bcc44f884adfa870b82154/pyschism/forcing/bctides/bctides.py#L133-L136

A basic use case to generate tidal setup fails. These default values used to be True.

The test case is:

import os
from pathlib import Path
from datetime import datetime, timedelta
import logging
import tempfile
from contextlib import contextmanager, ExitStack

import numpy as np

from pyschism.driver import ModelConfig
from pyschism.forcing.bctides import iettype, ifltype
from pyschism.mesh import Hgrid, gridgr3
from pyschism.mesh.fgrid import ManningsN

mesh_path = Path("./hgrid.grd")
schism_dir = Path("./schism.dir").absolute()

# 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.)

schism_dir.mkdir(exist_ok=True, parents=True)

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(mesh_path, crs="epsg:4326")

config = ModelConfig(
    hgrid=hgrid,
    fgrid=fgrid,
    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,
)

coldstart.write(schism_dir, overwrite=True)

and the error is

Process Process-9:
Traceback (most recent call last):
Process Process-10:
  File "/home/Soroosh.Mani/env/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/home/Soroosh.Mani/env/lib/python3.10/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/Soroosh.Mani/env/lib/python3.10/site-packages/pyschism/forcing/bctides/bctides.py", line 174, in write_elev2D
    Elev2D(self).write(
Traceback (most recent call last):
  File "/home/Soroosh.Mani/env/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/home/Soroosh.Mani/env/lib/python3.10/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/Soroosh.Mani/env/lib/python3.10/site-packages/pyschism/forcing/bctides/uv3d.py", line 22, in write
    uv3d = pathlib.Path(uv3d)
  File "/home/Soroosh.Mani/env/lib/python3.10/site-packages/pyschism/forcing/bctides/bctides.py", line 186, in write_uv3D
    UV3D(self).write(
  File "/home/Soroosh.Mani/env/lib/python3.10/site-packages/pyschism/forcing/bctides/elev2d.py", line 22, in write
    elev2D = pathlib.Path(elev2D)
Process Process-11:
  File "/home/Soroosh.Mani/env/lib/python3.10/pathlib.py", line 960, in __new__
    self = cls._from_parts(args)
  File "/home/Soroosh.Mani/env/lib/python3.10/pathlib.py", line 594, in _from_parts
    drv, root, parts = self._parse_args(args)
Traceback (most recent call last):
  File "/home/Soroosh.Mani/env/lib/python3.10/pathlib.py", line 578, in _parse_args
    a = os.fspath(a)
TypeError: expected str, bytes or os.PathLike object, not bool
  File "/home/Soroosh.Mani/env/lib/python3.10/pathlib.py", line 960, in __new__
    self = cls._from_parts(args)
  File "/home/Soroosh.Mani/env/lib/python3.10/pathlib.py", line 594, in _from_parts
    drv, root, parts = self._parse_args(args)
  File "/home/Soroosh.Mani/env/lib/python3.10/pathlib.py", line 578, in _parse_args
    a = os.fspath(a)
TypeError: expected str, bytes or os.PathLike object, not bool
  File "/home/Soroosh.Mani/env/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
Process Process-12:
  File "/home/Soroosh.Mani/env/lib/python3.10/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
Traceback (most recent call last):
  File "/home/Soroosh.Mani/env/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/home/Soroosh.Mani/env/lib/python3.10/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/Soroosh.Mani/env/lib/python3.10/site-packages/pyschism/forcing/bctides/bctides.py", line 209, in write_sal3D
    SAL_3D(self).write(
  File "/home/Soroosh.Mani/env/lib/python3.10/site-packages/pyschism/forcing/bctides/mod3d.py", line 22, in write
    path = pathlib.Path(path)
  File "/home/Soroosh.Mani/env/lib/python3.10/pathlib.py", line 960, in __new__
    self = cls._from_parts(args)
  File "/home/Soroosh.Mani/env/lib/python3.10/pathlib.py", line 594, in _from_parts
    drv, root, parts = self._parse_args(args)
  File "/home/Soroosh.Mani/env/lib/python3.10/pathlib.py", line 578, in _parse_args
    a = os.fspath(a)
TypeError: expected str, bytes or os.PathLike object, not bool
  File "/home/Soroosh.Mani/env/lib/python3.10/site-packages/pyschism/forcing/bctides/bctides.py", line 198, in write_tem3D
    TEM_3D(self).write(
  File "/home/Soroosh.Mani/env/lib/python3.10/site-packages/pyschism/forcing/bctides/mod3d.py", line 22, in write
    path = pathlib.Path(path)
  File "/home/Soroosh.Mani/env/lib/python3.10/pathlib.py", line 960, in __new__
    self = cls._from_parts(args)
  File "/home/Soroosh.Mani/env/lib/python3.10/pathlib.py", line 594, in _from_parts
    drv, root, parts = self._parse_args(args)
  File "/home/Soroosh.Mani/env/lib/python3.10/pathlib.py", line 578, in _parse_args
    a = os.fspath(a)
TypeError: expected str, bytes or os.PathLike object, not bool
SorooshMani-NOAA commented 1 year ago

May be the same options need to be exposed at driver level?!

https://github.com/schism-dev/pyschism/blob/9636a64ae8ae487ef5bcc44f884adfa870b82154/pyschism/driver.py#L54-L61