rompy.swan.components.inpgrid.CURVILINEAR#

pydantic model rompy.swan.components.inpgrid.CURVILINEAR[source]#

SWAN curvilinear input grid.

INPGRID [grid_type] CURVILINEAR [stagrx] [stagry] [mxinp] [myinp] &
    (EXCEPTION [excval]) &
    (NONSTATIONARY [tbeginp] [deltinp] ->SEC|MIN|HR|DAY [tendinp])
READGRID [grid_type] [fac] 'fname1' [idla] [nhedf] ([nhedt]) ([nhedvec]) &
    ->FREE|FORMAT|UNFORMATTED ('form'|[idfm])

This is a group component that includes an INPGRID and a READGRID component.

Examples

In [63]: from rompy.swan.components.inpgrid import CURVILINEAR

In [64]: inpgrid = CURVILINEAR(
   ....:     grid_type="wind",
   ....:     stagrx=0.0,
   ....:     stagry=0.0,
   ....:     mxinp=199,
   ....:     myinp=199,
   ....:     excval=-99.0,
   ....:     readinp=dict(fname1="wind.txt"),
   ....:     nonstationary=dict(
   ....:         tbeg="2019-01-01T00:00:00",
   ....:         tend="2019-01-07 00:00:00",
   ....:         delt=3600,
   ....:         dfmt="hr",
   ....:     ),
   ....: )
   ....: 

In [65]: print(inpgrid.render())
INPGRID WIND CURVILINEAR stagrx=0.0 stagry=0.0 mxinp=199 myinp=199  EXCEPTION excval=-99.0 NONSTATIONARY tbeginp=20190101.000000 deltinp=1.0 HR tendinp=20190107.000000
READINP WIND fac=1.0 fname1='wind.txt' idla=1 nhedf=0 nhedt=0 nhedvec=0 FREE

TODO: Handle (or not) setting default values for mxinp and myinp from cgrid.

Show JSON schema
{
   "title": "CURVILINEAR",
   "description": "SWAN curvilinear input grid.\n\n.. code-block:: text\n\n    INPGRID [grid_type] CURVILINEAR [stagrx] [stagry] [mxinp] [myinp] &\n        (EXCEPTION [excval]) &\n        (NONSTATIONARY [tbeginp] [deltinp] ->SEC|MIN|HR|DAY [tendinp])\n    READGRID [grid_type] [fac] 'fname1' [idla] [nhedf] ([nhedt]) ([nhedvec]) &\n        ->FREE|FORMAT|UNFORMATTED ('form'|[idfm])\n\nThis is a group component that includes an `INPGRID` and a `READGRID` component.\n\nExamples\n--------\n\n.. ipython:: python\n    :okwarning:\n\n    from rompy.swan.components.inpgrid import CURVILINEAR\n    inpgrid = CURVILINEAR(\n        grid_type=\"wind\",\n        stagrx=0.0,\n        stagry=0.0,\n        mxinp=199,\n        myinp=199,\n        excval=-99.0,\n        readinp=dict(fname1=\"wind.txt\"),\n        nonstationary=dict(\n            tbeg=\"2019-01-01T00:00:00\",\n            tend=\"2019-01-07 00:00:00\",\n            delt=3600,\n            dfmt=\"hr\",\n        ),\n    )\n    print(inpgrid.render())\n\nTODO: Handle (or not) setting default values for mxinp and myinp from cgrid.",
   "type": "object",
   "properties": {
      "model_type": {
         "default": "curvilinear",
         "description": "Model type discriminator",
         "enum": [
            "curvilinear",
            "CURVILINEAR"
         ],
         "title": "Model Type",
         "type": "string"
      },
      "grid_type": {
         "$ref": "#/$defs/GridOptions",
         "description": "Type of the swan input grid, e.g, 'bottom', 'wind', etc"
      },
      "excval": {
         "anyOf": [
            {
               "type": "number"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Exception value to allow identifying and ignoring certain point inside the given grid during the computation. If `fac` != 1, `excval` must be given as `fac` times the exception value",
         "title": "Excval"
      },
      "nonstationary": {
         "anyOf": [
            {
               "$ref": "#/$defs/NONSTATIONARY"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Nonstationary time specification"
      },
      "readinp": {
         "$ref": "#/$defs/READINP",
         "description": "SWAN input grid file reader specification"
      },
      "stagrx": {
         "default": 0.0,
         "description": "Staggered x'-direction with respect to computational grid, e.g., `stagrx=0.5` means that the input grid points are shifted a half step in x'-direction; in many flow models x-velocities are defined in points shifted a half step in x'-direction",
         "title": "Stagrx",
         "type": "number"
      },
      "stagry": {
         "default": 0.0,
         "description": "Staggered y'-direction with respect to computational grid, e.g., `stagry=0.5` means that the input grid points are shifted a half step in y'-direction; in many flow models y-velocities are defined in points shifted a half step in y'-direction",
         "title": "Stagry",
         "type": "number"
      },
      "mxinp": {
         "description": "Number of meshes in \u03be-direction of the input grid (this number is one less than the number of grid points in this direction)",
         "title": "Mxinp",
         "type": "integer"
      },
      "myinp": {
         "description": "Number of meshes in \u03b7-direction of the input grid (this number is one less than the number of grid points in this direction)",
         "title": "Myinp",
         "type": "integer"
      }
   },
   "$defs": {
      "GridOptions": {
         "description": "Valid options for the input grid type.\n\nAttributes\n----------\nBOTTOM: \"bottom\"\n    Bottom level grid.\nWLEVEL: \"wlevel\"\n    Water level grid.\nCURRENT: \"current\"\n    Current field grid.\nVX: \"vx\"\n    Current field x-component grid.\nVY: \"vy\"\n    Current field y-component grid.\nWIND: \"wind\"\n    Wind velocity grid.\nWX: \"wx\"\n    Wind velocity x-component grid.\nWY: \"wy\"\n    Wind velocity y-component grid.\nFRICTION: \"friction\"\n    Bottom friction grid.\nNPLANTS: \"nplants\"\n    Horizontally varying vegetation density grid.\nTURBVISC: \"turbvisc\"\n    Horizontally varying turbulent viscosity grid.\nMUDLAYER: \"mudlayer\"\n    Horizontally varying mud layer thickness grid.\nAICE: \"aice\"\n    Areal ice fraction grid, a number between 0 and 1.\nHICE: \"hice\"\n    Ice thickness grid.\nHSS: \"hss\"\n    Sea-swell significant wave height grid.\nTSS: \"tss\"\n    Sea-swell mean wave period.",
         "enum": [
            "bottom",
            "wlevel",
            "current",
            "vx",
            "vy",
            "wind",
            "wx",
            "wy",
            "friction",
            "nplants",
            "turbvisc",
            "mudlayer",
            "aice",
            "hice",
            "hss",
            "tss"
         ],
         "title": "GridOptions",
         "type": "string"
      },
      "IDLA": {
         "description": "Order of values in the input files.\n\nAttributes\n----------\nONE: 1\n    SWAN reads the map from left to right starting in the upper-left-hand corner of\n    the map. A new line in the map should start on a new line in the file.\nTWO: 2\n    As `1` but a new line in the map need not start on a new line in the file.\nTHREE: 3\n    SWAN reads the map from left to right starting in the lower-left-hand corner of\n    the map. A new line in the map should start on a new line in the file.\nFOUR: 4\n    As `3` but a new line in the map need not start on a new line in the file.\nFIVE: 5\n    SWAN reads the map from top to bottom starting in the lower-left-hand corner of\n    the map. A new column in the map should start on a new line in the file.\nSIX: 6\n    As `5` but a new column in the map need not start on a new line in the file.\n\nNotes\n-----\nIt is assumed that the x-axis of the grid is pointing to the right and the y-axis\nupwards.",
         "enum": [
            1,
            2,
            3,
            4,
            5,
            6
         ],
         "title": "IDLA",
         "type": "integer"
      },
      "NONSTATIONARY": {
         "additionalProperties": false,
         "description": "Nonstationary time specification.\n\n.. code-block:: text\n\n    NONSTATIONARY [tbeg] [delt] SEC|MIN|HR|DAY [tend]\n\nNote\n----\nDefault values for the time specification fields are provided for the case where\nthe user wants to set times dynamically after instantiating this subcomponent.\n\nExamples\n--------\n\n.. ipython:: python\n    :okwarning:\n\n    from rompy.swan.subcomponents.time import NONSTATIONARY\n    nonstat = NONSTATIONARY(\n        tbeg=\"2012-01-01T00:00:00\",\n        tend=\"2012-02-01T00:00:00\",\n        delt=\"PT1H\",\n        dfmt=\"hr\",\n    )\n    print(nonstat.render())\n    from datetime import datetime, timedelta\n    nonstat = NONSTATIONARY(\n        tbeg=datetime(1990, 1, 1),\n        tend=datetime(1990, 1, 7),\n        delt=timedelta(minutes=30),\n        tfmt=1,\n        dfmt=\"min\",\n        suffix=\"tbl\",\n    )\n    print(nonstat.render())",
         "properties": {
            "model_type": {
               "default": "nonstationary",
               "description": "Model type discriminator",
               "enum": [
                  "nonstationary",
                  "NONSTATIONARY"
               ],
               "title": "Model Type",
               "type": "string"
            },
            "tbeg": {
               "default": "1970-01-01T00:00:00",
               "description": "Start time",
               "format": "date-time",
               "title": "Tbeg",
               "type": "string"
            },
            "delt": {
               "default": "PT1H",
               "description": "Time interval",
               "format": "duration",
               "title": "Delt",
               "type": "string"
            },
            "tfmt": {
               "anyOf": [
                  {
                     "enum": [
                        1,
                        2,
                        3,
                        4,
                        5,
                        6
                     ],
                     "type": "integer"
                  },
                  {
                     "type": "string"
                  }
               ],
               "default": 1,
               "description": "Format to render time specification",
               "title": "Tfmt"
            },
            "dfmt": {
               "default": "sec",
               "description": "Format to render time interval specification",
               "enum": [
                  "sec",
                  "min",
                  "hr",
                  "day"
               ],
               "title": "Dfmt",
               "type": "string"
            },
            "suffix": {
               "default": "",
               "description": "Suffix to prepend to argument names when rendering",
               "title": "Suffix",
               "type": "string"
            },
            "tend": {
               "default": "1970-01-02T00:00:00",
               "description": "End time",
               "format": "date-time",
               "title": "Tend",
               "type": "string"
            }
         },
         "title": "NONSTATIONARY",
         "type": "object"
      },
      "READINP": {
         "additionalProperties": false,
         "description": "SWAN input grid reader.\n\n.. code-block:: text\n\n    READINP GRID_TYPE [fac] ('fname1' | SERIES 'fname2') [idla] [nhedf] &\n        ([nhedt]) [nhedvec] FREE|FORMAT ('form'|idfm)|UNFORMATTED`\n\nExamples\n--------\n\n.. ipython:: python\n    :okwarning:\n\n    from rompy.swan.subcomponents.readgrid import READINP\n    readinp = READINP(\n        grid_type=\"wind\",\n        fname1=\"wind.txt\",\n        fac=1.0,\n        idla=3,\n        format=\"free\",\n    )\n    print(readinp.render())",
         "properties": {
            "model_type": {
               "default": "readinp",
               "description": "Model type discriminator",
               "enum": [
                  "readinp",
                  "READINP"
               ],
               "title": "Model Type",
               "type": "string"
            },
            "grid_type": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/GridOptions"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Type of the SWAN grid file"
            },
            "fac": {
               "default": 1.0,
               "description": "SWAN multiplies all values that are read from file by `fac`. For instance if the values are given in unit decimeter, one should make `fac=0.1` to obtain values in m. To change sign use a negative `fac`",
               "exclusiveMinimum": 0.0,
               "title": "Fac",
               "type": "number"
            },
            "idla": {
               "$ref": "#/$defs/IDLA",
               "default": 1,
               "description": "Prescribes the order in which the values of bottom levels and other fields should be given in the file"
            },
            "nhedf": {
               "default": 0,
               "description": "The number of header lines at the start of the file. The text in the header lines is reproduced in the print file created by SWAN . The file may start with more header lines than `nhedf` because the start of the file is often also the start of a time step and possibly also of a vector variable (each having header lines, see `nhedt` and `nhedvec`)",
               "minimum": 0,
               "title": "Nhedf",
               "type": "integer"
            },
            "nhedvec": {
               "default": 0,
               "description": "For each vector variable: number of header lines in the file at the start of each component (e.g., x- or y-component)",
               "minimum": 0,
               "title": "Nhedvec",
               "type": "integer"
            },
            "format": {
               "default": "free",
               "description": "File format, one of 'free', 'fixed' or 'unformatted'. If 'free', the file is assumed to use the FREE FORTRAN format. If 'fixed', the file is assumed to use a fixed format that must be specified by (only) one of 'form' or 'idfm' arguments. Use 'unformatted' to read unformatted (binary) files (not recommended for ordinary use)",
               "enum": [
                  "free",
                  "fixed",
                  "unformatted"
               ],
               "title": "Format",
               "type": "string"
            },
            "form": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "A user-specified format string in Fortran convention, e.g., '(10X,12F5.0)'.Only used if `format='fixed'`, do not use it if `idfm` is specified",
               "title": "Form"
            },
            "idfm": {
               "anyOf": [
                  {
                     "enum": [
                        1,
                        5,
                        6,
                        8
                     ],
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "File format identifier, only used if `format='fixed'`",
               "title": "Idfm"
            },
            "fname1": {
               "description": "Name of the file with the values of the variable.",
               "title": "Fname1",
               "type": "string"
            },
            "fname2": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Name of file that contains the names of the files where the variables are given when the SERIES option is used. These names are to be given in proper time sequence. SWAN reads the next file when the previous file end has been encountered. In these files the input should be given in the same format as in the above file 'fname1' (that implies that a file should start with the start of an input time step)",
               "title": "Fname2"
            },
            "nhedt": {
               "default": 0,
               "description": "Only if variable is time dependent: number of header lines in the file at the start of each time level. A time step may start with more header lines than `nhedt` because the variable may be a vector variable which has its own header lines (see `nhedvec`)",
               "minimum": 0,
               "title": "Nhedt",
               "type": "integer"
            }
         },
         "required": [
            "fname1"
         ],
         "title": "READINP",
         "type": "object"
      }
   },
   "additionalProperties": false,
   "required": [
      "grid_type",
      "readinp",
      "mxinp",
      "myinp"
   ]
}

Fields:
Validators:

field excval: float | None = None#

Exception value to allow identifying and ignoring certain point inside the given grid during the computation. If fac != 1, excval must be given as fac times the exception value

Validated by:
  • set_nonstat_suffix

field grid_type: GridOptions [Required]#

Type of the swan input grid, e.g, ‘bottom’, ‘wind’, etc

Validated by:
  • set_nonstat_suffix

field model_type: Literal['curvilinear', 'CURVILINEAR'] = 'curvilinear'#

Model type discriminator

Validated by:
  • set_nonstat_suffix

field mxinp: int [Required]#

Number of meshes in ξ-direction of the input grid (this number is one less than the number of grid points in this direction)

Validated by:
  • set_nonstat_suffix

field myinp: int [Required]#

Number of meshes in η-direction of the input grid (this number is one less than the number of grid points in this direction)

Validated by:
  • set_nonstat_suffix

field nonstationary: NONSTATIONARY | None = None#

Nonstationary time specification

Validated by:
  • set_nonstat_suffix

field readinp: READINP [Required]#

SWAN input grid file reader specification

Validated by:
  • set_nonstat_suffix

field stagrx: float = 0.0#

Staggered x’-direction with respect to computational grid, e.g., stagrx=0.5 means that the input grid points are shifted a half step in x’-direction; in many flow models x-velocities are defined in points shifted a half step in x’-direction

Validated by:
  • set_nonstat_suffix

field stagry: float = 0.0#

Staggered y’-direction with respect to computational grid, e.g., stagry=0.5 means that the input grid points are shifted a half step in y’-direction; in many flow models y-velocities are defined in points shifted a half step in y’-direction

Validated by:
  • set_nonstat_suffix

cmd() str[source]#

Return the string or list of strings to render the component to the CMD.