rompy.swan.components.inpgrid.REGULAR#
- pydantic model rompy.swan.components.inpgrid.REGULAR[source]#
SWAN regular input grid.
INPGRID [grid_type] REGULAR [xpinp] [ypinp] [alpinp] [mxinp] [myinp] & [dxinp] [dyinp] (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 [69]: from rompy.swan.components.inpgrid import REGULAR In [70]: inpgrid = REGULAR( ....: grid_type="bottom", ....: excval=-99.0, ....: xpinp=172.0, ....: ypinp=-41.0, ....: alpinp=0.0, ....: mxinp=99, ....: myinp=99, ....: dxinp=0.005, ....: dyinp=0.005, ....: readinp=dict(fname1="bottom.txt"), ....: ) ....: In [71]: print(inpgrid.render()) INPGRID BOTTOM REGULAR xpinp=172.0 ypinp=-41.0 alpinp=0.0 mxinp=99 myinp=99 dxinp=0.005 dyinp=0.005 EXCEPTION excval=-99.0 READINP BOTTOM fac=1.0 fname1='bottom.txt' idla=1 nhedf=0 nhedt=0 nhedvec=0 FREE In [72]: inpgrid = REGULAR( ....: grid_type="wind", ....: excval=-99.0, ....: xpinp=172.0, ....: ypinp=-41.0, ....: alpinp=0.0, ....: mxinp=99, ....: myinp=99, ....: dxinp=0.005, ....: dyinp=0.005, ....: 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 [73]: print(inpgrid.render()) INPGRID WIND REGULAR xpinp=172.0 ypinp=-41.0 alpinp=0.0 mxinp=99 myinp=99 dxinp=0.005 dyinp=0.005 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: Use grid object, requires different grid parameters to be allowed.
Show JSON schema
{ "title": "REGULAR", "description": "SWAN regular input grid.\n\n.. code-block:: text\n\n INPGRID [grid_type] REGULAR [xpinp] [ypinp] [alpinp] [mxinp] [myinp] &\n [dxinp] [dyinp] (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 REGULAR\n inpgrid = REGULAR(\n grid_type=\"bottom\",\n excval=-99.0,\n xpinp=172.0,\n ypinp=-41.0,\n alpinp=0.0,\n mxinp=99,\n myinp=99,\n dxinp=0.005,\n dyinp=0.005,\n readinp=dict(fname1=\"bottom.txt\"),\n )\n print(inpgrid.render())\n inpgrid = REGULAR(\n grid_type=\"wind\",\n excval=-99.0,\n xpinp=172.0,\n ypinp=-41.0,\n alpinp=0.0,\n mxinp=99,\n myinp=99,\n dxinp=0.005,\n dyinp=0.005,\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: Use grid object, requires different grid parameters to be allowed.", "type": "object", "properties": { "model_type": { "default": "regular", "description": "Model type discriminator", "enum": [ "regular", "REGULAR" ], "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" }, "xpinp": { "description": "Geographic location (x-coordinate) of the origin of the input grid in problem coordinates (in m) if Cartesian coordinates are used or in degrees if spherical coordinates are used. In case of spherical coordinates there is no default", "title": "Xpinp", "type": "number" }, "ypinp": { "description": "Geographic location (y-coordinate) of the origin of the input grid in problem coordinates (in m) if Cartesian coordinates are used or in degrees if spherical coordinates are used. In case of spherical coordinates there is no default", "title": "Ypinp", "type": "number" }, "alpinp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "Direction of the positive x-axis of the input grid (in degrees, Cartesian convention)", "title": "Alpinp" }, "mxinp": { "description": "Number of meshes in x-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 y-direction of the input grid (this number is one less than the number of grid points in this direction). In 1D-mode, `myinp` should be 0", "title": "Myinp", "type": "integer" }, "dxinp": { "description": "Mesh size in x-direction of the input grid, in m in case of Cartesian coordinates or in degrees if spherical coordinates are used", "title": "Dxinp", "type": "number" }, "dyinp": { "description": "Mesh size in y-direction of the input grid, in m in case of Cartesian coordinates or in degrees if spherical coordinates are used. In 1D-mode, `dyinp` may have any value", "title": "Dyinp", "type": "number" } }, "$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", "xpinp", "ypinp", "mxinp", "myinp", "dxinp", "dyinp" ] }
- Fields:
- Validators:
- field alpinp: float | None = 0.0#
Direction of the positive x-axis of the input grid (in degrees, Cartesian convention)
- Validated by:
set_nonstat_suffix
- field dxinp: float [Required]#
Mesh size in x-direction of the input grid, in m in case of Cartesian coordinates or in degrees if spherical coordinates are used
- Validated by:
set_nonstat_suffix
- field dyinp: float [Required]#
Mesh size in y-direction of the input grid, in m in case of Cartesian coordinates or in degrees if spherical coordinates are used. In 1D-mode, dyinp may have any value
- Validated by:
set_nonstat_suffix
- 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['regular', 'REGULAR'] = 'regular'#
Model type discriminator
- Validated by:
set_nonstat_suffix
- field mxinp: int [Required]#
Number of meshes in x-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 y-direction of the input grid (this number is one less than the number of grid points in this direction). In 1D-mode, myinp should be 0
- 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 xpinp: float [Required]#
Geographic location (x-coordinate) of the origin of the input grid in problem coordinates (in m) if Cartesian coordinates are used or in degrees if spherical coordinates are used. In case of spherical coordinates there is no default
- Validated by:
set_nonstat_suffix
- field ypinp: float [Required]#
Geographic location (y-coordinate) of the origin of the input grid in problem coordinates (in m) if Cartesian coordinates are used or in degrees if spherical coordinates are used. In case of spherical coordinates there is no default
- Validated by:
set_nonstat_suffix