rompy.swan.components.group.INPGRIDS#
- pydantic model rompy.swan.components.group.INPGRIDS[source]#
SWAN input grids group component.
INPGRID ... READGRID ... INPGRID ... READGRID ... ...
This group component is a convenience to allow defining and rendering a list of input grid components.
Examples
In [30]: from rompy.swan.components.inpgrid import REGULAR, ICE In [31]: from rompy.swan.components.group import INPGRIDS In [32]: inpgrid_bottom = 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 [33]: inpgrid_wind = 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 [34]: inpgrid_ice_cte = ICE(aice=0.8, hice=2.0) In [35]: inpgrids = INPGRIDS(inpgrids=[inpgrid_bottom, inpgrid_wind, inpgrid_ice_cte]) In [36]: print(inpgrids.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 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 ICE aice=0.8 hice=2.0
Show JSON schema
{ "title": "INPGRIDS", "description": "SWAN input grids group component.\n\n.. code-block:: text\n\n INPGRID ...\n READGRID ...\n\n INPGRID ...\n READGRID ...\n\n ...\n\nThis group component is a convenience to allow defining and rendering\na list of input grid components.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.inpgrid import REGULAR, ICE\n from rompy.swan.components.group import INPGRIDS\n inpgrid_bottom = 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 inpgrid_wind = 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 inpgrid_ice_cte = ICE(aice=0.8, hice=2.0)\n inpgrids = INPGRIDS(inpgrids=[inpgrid_bottom, inpgrid_wind, inpgrid_ice_cte])\n print(inpgrids.render())", "type": "object", "properties": { "model_type": { "const": "inpgrids", "default": "inpgrids", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "inpgrids": { "description": "List of input grid components", "items": { "discriminator": { "mapping": { "CURVILINEAR": "#/$defs/CURVILINEAR", "ICE": "#/$defs/ICE", "REGULAR": "#/$defs/REGULAR", "UNSTRUCTURED": "#/$defs/UNSTRUCTURED", "WIND": "#/$defs/WIND", "curvilinear": "#/$defs/CURVILINEAR", "ice": "#/$defs/ICE", "regular": "#/$defs/REGULAR", "unstructured": "#/$defs/UNSTRUCTURED", "wind": "#/$defs/WIND" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/REGULAR" }, { "$ref": "#/$defs/CURVILINEAR" }, { "$ref": "#/$defs/UNSTRUCTURED" }, { "$ref": "#/$defs/WIND" }, { "$ref": "#/$defs/ICE" } ] }, "minItems": 1, "title": "Inpgrids", "type": "array" } }, "$defs": { "CURVILINEAR": { "additionalProperties": false, "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.", "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" } }, "required": [ "grid_type", "readinp", "mxinp", "myinp" ], "title": "CURVILINEAR", "type": "object" }, "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" }, "ICE": { "additionalProperties": false, "description": "Constant wind input field.\n\n.. code-block:: text\n\n ICE [aice] [hice]\n\nWith this optional command, the user indicates that one or more ice fields are\nconstant.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.inpgrid import ICE\n ice = ICE(aice=0.1, hice=0.1)\n print(ice.render())", "properties": { "model_type": { "default": "ice", "description": "Model type discriminator", "enum": [ "ice", "ICE" ], "title": "Model Type", "type": "string" }, "aice": { "description": "Areal ice fraction, a number from 0 to 1", "maximum": 1.0, "minimum": 0.0, "title": "Aice", "type": "number" }, "hice": { "description": "Ice thickness (m)", "minimum": 0.0, "title": "Hice", "type": "number" } }, "required": [ "aice", "hice" ], "title": "ICE", "type": "object" }, "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" }, "REGULAR": { "additionalProperties": false, "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.", "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" } }, "required": [ "grid_type", "readinp", "xpinp", "ypinp", "mxinp", "myinp", "dxinp", "dyinp" ], "title": "REGULAR", "type": "object" }, "UNSTRUCTURED": { "additionalProperties": false, "description": "SWAN unstructured input grid.\n\n.. code-block:: text\n\n INPGRID [grid_type] UNSTRUCTURED 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 UNSTRUCTURED\n inpgrid = UNSTRUCTURED(\n grid_type=\"bottom\",\n excval=-99.0,\n readinp=dict(fname1=\"bottom.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())", "properties": { "model_type": { "default": "unstructured", "description": "Model type discriminator", "enum": [ "unstructured", "UNSTRUCTURED" ], "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" } }, "required": [ "grid_type", "readinp" ], "title": "UNSTRUCTURED", "type": "object" }, "WIND": { "additionalProperties": false, "description": "Constant wind input field.\n\n.. code-block:: text\n\n WIND [vel] [dir]\n\nWith this optional command, the user indicates that the wind field is constant.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.inpgrid import WIND\n wind = WIND(vel=10.0, dir=270.0)\n print(wind.render())", "properties": { "model_type": { "default": "wind", "description": "Model type discriminator", "enum": [ "wind", "WIND" ], "title": "Model Type", "type": "string" }, "vel": { "description": "Wind velocity at 10 m elevation (m/s)", "minimum": 0.0, "title": "Vel", "type": "number" }, "dir": { "description": "Wind direction at 10 m elevation (in degrees, Cartesian or Nautical convention, see command SET)", "maximum": 360.0, "minimum": -180.0, "title": "Dir", "type": "number" } }, "required": [ "vel", "dir" ], "title": "WIND", "type": "object" } }, "additionalProperties": false, "required": [ "inpgrids" ] }
- Fields:
- Validators:
- field inpgrids: list[REGULAR | CURVILINEAR | UNSTRUCTURED | WIND | ICE] [Required]#
List of input grid components
- Constraints:
min_length = 1
- Validated by:
- field model_type: Literal['inpgrids'] = 'inpgrids'#
Model type discriminator