rompy.model.ModelRun#
- pydantic model rompy.model.ModelRun[source]#
A model run.
It is intented to be model agnostic. It deals primarily with how the model is to be run, i.e. the period of the run and where the output is going. The actual configuration of the run is provided by the config object.
Further explanation is given in the rompy.core.Baseconfig docstring.
Show JSON schema
{ "title": "ModelRun", "description": "A model run.\n\nIt is intented to be model agnostic.\nIt deals primarily with how the model is to be run, i.e. the period of the run\nand where the output is going. The actual configuration of the run is\nprovided by the config object.\n\nFurther explanation is given in the rompy.core.Baseconfig docstring.", "type": "object", "properties": { "run_id": { "default": "run_id", "description": "The run id", "title": "Run Id", "type": "string" }, "period": { "$ref": "#/$defs/TimeRange", "default": { "start": "2020-02-21T04:00:00", "end": "2020-02-24T04:00:00", "interval": "PT15M", "include_end": true }, "description": "The time period to run the model" }, "output_dir": { "default": "./simulations", "description": "The output directory", "format": "path", "title": "Output Dir", "type": "string" }, "config": { "description": "The configuration object", "discriminator": { "mapping": { "SWANCONFIG": "#/$defs/SwanConfigComponents", "base": "#/$defs/BaseConfig", "schism": "#/$defs/SCHISMConfig", "schismcsiro": "#/$defs/SchismCSIROConfig", "schismcsiromigration": "#/$defs/SchismCSIROMigrationConfig", "swan": "#/$defs/SwanConfig", "swanconfig": "#/$defs/SwanConfigComponents" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/BaseConfig" }, { "$ref": "#/$defs/SCHISMConfig" }, { "$ref": "#/$defs/SchismCSIROConfig" }, { "$ref": "#/$defs/SchismCSIROMigrationConfig" }, { "$ref": "#/$defs/SwanConfig" }, { "$ref": "#/$defs/SwanConfigComponents" } ], "title": "Config" }, "delete_existing": { "default": false, "description": "Delete existing output directory", "title": "Delete Existing", "type": "boolean" }, "run_id_subdir": { "default": true, "description": "Use run_id subdirectory in the output directory", "title": "Run Id Subdir", "type": "boolean" } }, "$defs": { "ABS": { "additionalProperties": false, "description": "Absolute frequency spectra.\n\n.. code-block:: text\n\n ABS\n\nSpectra are computed as a function of absolute frequency, i.e., the frequency as\nmeasured in a fixed point.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.output import ABS\n freq = ABS()\n print(freq.render())", "properties": { "model_type": { "default": "abs", "description": "Model type discriminator", "enum": [ "abs", "ABS" ], "title": "Model Type", "type": "string" } }, "title": "ABS", "type": "object" }, "ACCUR": { "additionalProperties": false, "description": "Stop the iterative procedure.\n\n.. code-block:: text\n\n ACCUR [drel] [dhoval] [dtoval] [npnts] ->STAT|NONSTAT [limiter]\n\nWith this option the user can influence the criterion for terminating the iterative\nprocedure in the SWAN computations (both stationary and non-stationary modes).\nSWAN stops the iterations if (a), (b) and (c) are all satisfied:\n\na) The change in the local significant wave height Hs from one iteration to the\n next is less than (1) fraction `drel` of that height or (2) fraction `dhoval`\n of the average Hs over all grid points.\n\nb) The change in the local mean wave period Tm01 from one iteration to the next is\n less than (1) fraction `drel` of that period or (2) fraction `dtoval` of the\n average mean wave period over all wet grid points.\n\nc) Conditions (a) and (b) are fulfilled in more than fraction `npnts%` of all wet\n grid points.\n\nNote\n----\nThis command has become obsolete in SWAN 41.01. The command STOPC should be used.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.numerics import ACCUR\n accur = ACCUR()\n print(accur.render())\n accur = ACCUR(\n drel=0.01,\n dhoval=0.02,\n dtoval=0.02,\n npnts=98.0,\n mode=dict(model_type=\"nonstat\", mxitns=1),\n limiter=0.1,\n )\n print(accur.render())", "properties": { "model_type": { "default": "accur", "description": "Model type discriminator", "enum": [ "accur", "ACCUR" ], "title": "Model Type", "type": "string" }, "drel": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Maximum relative change in Hs or Tm01 from one iteration to the next (SWAN default: 0.02)", "title": "Drel" }, "dhoval": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Fraction of the average Hs over all wet grid points below which the the stopping criteria needs to be satisfied (SWAN default: 0.02)", "title": "Dhoval" }, "dtoval": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Fraction of the average Tm01 over all wet grid points below which the the stopping criteria needs to be satisfied (SWAN default: 0.02)", "title": "Dtoval" }, "npnts": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Percentage of points in the computational grid above which the stopping criteria needs to be satisfied (SWAN default: 98)", "title": "Npnts" }, "mode": { "anyOf": [ { "discriminator": { "mapping": { "NONSTAT": "#/$defs/NONSTAT", "STAT": "#/$defs/STAT", "nonstat": "#/$defs/NONSTAT", "stat": "#/$defs/STAT" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/STAT" }, { "$ref": "#/$defs/NONSTAT" } ] }, { "type": "null" } ], "default": null, "description": "Termination criteria for stationary or nonstationary runs", "title": "Mode" }, "limiter": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Determines the maximum change per iteration of the energy density per spectral-bin given in terms of a fraction of the omni-directional Phillips level (SWAN default: 0.1)", "title": "Limiter" } }, "title": "ACCUR", "type": "object" }, "BIN": { "additionalProperties": false, "description": "Single frequency bin spectral shape.\n\n.. code-block:: text\n\n BIN\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.spectrum import BIN\n shape = BIN()\n print(shape.render())", "properties": { "model_type": { "default": "bin", "description": "Model type discriminator", "enum": [ "bin", "BIN" ], "title": "Model Type", "type": "string" } }, "title": "BIN", "type": "object" }, "BLOCK": { "additionalProperties": false, "description": "Write spatial distributions.\n\n.. code-block:: text\n\n BLOCK 'sname' ->HEADER|NOHEADER 'fname' (LAYOUT [idla]) < output > &\n [unit] (OUTPUT [tbegblk] [deltblk]) SEC|MIN|HR|DAY\n\nWith this optional command the user indicates that one or more spatial\ndistributions should be written to a file.\n\nNote\n----\nThe SWAN special frames 'BOTTGRID' or 'COMPGRID' can be set with the `sname` field.\n\nNote\n----\nThe text of the header indicates run identification (see command `PROJECT`), time,\nframe or group name ('sname'), variable and unit. The number of header lines is 8.\n\nNote\n----\nCannot be used in 1D-mode.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import BLOCK\n block = BLOCK(sname=\"outgrid\", fname=\"./depth-frame.nc\", output=[\"depth\"])\n print(block.render())\n block = BLOCK(\n sname=\"COMPGRID\",\n header=False,\n fname=\"./output-grid.nc\",\n idla=3,\n output=[\"hsign\", \"hswell\", \"dir\", \"tps\", \"tm01\", \"watlev\", \"qp\"],\n times=dict(\n tbeg=\"2012-01-01T00:00:00\",\n delt=\"PT30M\",\n tfmt=1,\n dfmt=\"min\",\n suffix=\"\",\n )\n )\n print(block.render())", "properties": { "model_type": { "default": "block", "description": "Model type discriminator", "enum": [ "block", "BLOCK" ], "title": "Model Type", "type": "string" }, "sname": { "description": "Name of the set of output locations in which the output is to be written", "maxLength": 8, "title": "Sname", "type": "string" }, "fname": { "description": "Name of the data file where the output is written to The file format is defined by the file extension, use `.mat` for MATLAB binary (single precision) or `.nc` for netCDF format. If any other extension is used the ASCII format is assumed", "title": "Fname", "type": "string" }, "times": { "anyOf": [ { "$ref": "#/$defs/TimeRangeOpen" }, { "type": "null" } ], "default": null, "description": "Time specification if the user requires output at various times. If this option is not specified data will be written for the last time step of the computation" }, "header": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "description": "Indicate if the output should be written to a file with header lines (SWAN default: True)", "title": "Header" }, "idla": { "anyOf": [ { "$ref": "#/$defs/IDLA" }, { "type": "null" } ], "default": null, "description": "Prescribe the lay-out of the output to file (supported options here are 1, 3, 4). Option 4 is recommended for postprocessing an ASCII file by MATLAB, however option 3 is recommended in case of binary MATLAB output (SWAN default: 1)" }, "output": { "description": "The output variables to output to block file", "items": { "$ref": "#/$defs/BlockOptions" }, "minItems": 1, "title": "Output", "type": "array" }, "unit": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Controls the scaling of the output. The program divides computed values by `unit` before writing to file, so the user should multiply the written value by `unit` to obtain the proper value. By default, if HEADER is selected, value is written as a 5 position integer. SWAN takes `unit` such that the largest number occurring in the block can be printed. If NOHEADER is selected, values are printed in floating-point format by default (`unit=1`)", "title": "Unit" } }, "required": [ "sname", "fname", "output" ], "title": "BLOCK", "type": "object" }, "BLOCKS": { "additionalProperties": false, "description": "Write multiple spatial distributions.\n\n.. code-block:: text\n\n BLOCK 'sname' ->HEADER|NOHEADER 'fname1' (LAYOUT [idla]) < output > &\n [unit] (OUTPUT [tbegblk] [deltblk]) SEC|MIN|HR|DAY\n BLOCK 'sname' ->HEADER|NOHEADER 'fname2' (LAYOUT [idla]) < output > &\n [unit] (OUTPUT [tbegblk] [deltblk]) SEC|MIN|HR|DAY\n ..\n\nThis component can be used to prescribe and render multiple BLOCK components.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import BLOCK, BLOCKS\n block1 = BLOCK(sname=\"outgrid\", fname=\"./depth.txt\", output=[\"depth\"])\n block2 = BLOCK(sname=\"outgrid\", fname=\"./output.nc\", output=[\"hsign\", \"hswell\"])\n blocks = BLOCKS(components=[block1, block2])\n print(blocks.render())", "properties": { "model_type": { "const": "blocks", "default": "blocks", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "components": { "description": "BLOCK components", "items": { "$ref": "#/$defs/BLOCK" }, "title": "Components", "type": "array" } }, "required": [ "components" ], "title": "BLOCKS", "type": "object" }, "BOUNDNEST1": { "additionalProperties": false, "description": "Boundary spectra from a coarser SWAN nest.\n\n.. code-block:: text\n\n BOUNDNEST1 NEST 'fname' ->CLOSED|OPEN\n\nWith this optional command a nested SWAN run can be carried out with the boundary\nconditions obtained from a coarse grid SWAN run (generated in that previous SWAN\nrun with command NESTOUT). The spectral frequencies and directions of the coarse\ngrid run do not have to coincide with the frequencies and directions used in the\nnested SWAN run; SWAN will interpolate to these frequencies and directions in the\nnested run (see Section 2.6.3). To generate the nest boundary in the coarse grid\nrun, use command NGRID. For the nested run, use the command CGRID with identical\ngeographical information except the number of meshes (which will be much higher for\nthe nested run). This BOUNDNEST1 command is not available for 1D computations; in\nsuch cases the commands SPECOUT and BOUNDSPEC can be used for the same purpose. A\nnested SWAN run must use the same coordinate system as the coarse grid SWAN run.\nFor a curvilinear grid, it is advised to use the commands POINTS or CURVE and\nSPECOUT instead of NGRID and NESTOUT.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.boundary import BOUNDNEST1\n boundary = BOUNDNEST1(fname=\"boundary.swn\", rectangle=\"closed\")\n print(boundary.render())", "properties": { "model_type": { "default": "boundnest1", "description": "Model type discriminator", "enum": [ "boundnest1", "BOUNDNEST1" ], "title": "Model Type", "type": "string" }, "fname": { "description": "Name of the file containing the boundary conditions for the present run, created by the previous SWAN coarse grid run. This file is structured according to the rules given in Appendix D for 2D spectra", "maxLength": 36, "minLength": 1, "title": "Fname", "type": "string" }, "rectangle": { "default": "closed", "description": "Boundary is defined over a closed (default) or an open rectangle. Boundary generated from the NESTOUT command is aways closed", "enum": [ "closed", "open" ], "title": "Rectangle", "type": "string" } }, "required": [ "fname" ], "title": "BOUNDNEST1", "type": "object" }, "BOUNDNEST2": { "additionalProperties": false, "description": "Boundary spectra from WAM.\n\n.. code-block:: text\n\n BOUNDNEST2 WAMNEST 'fname' FREE|UNFORMATTED ->CRAY|WKSTAT [xgc] [ygc] [lwdate]\n\nWith this optional command (not fully tested) a nested SWAN run can be carried out\nwith the boundary conditions obtained from a coarse grid WAM run (WAM Cycle 4.5,\nsource code as distributed by the Max Planck Institute in Hamburg). The spectral\nfrequencies and directions of the coarse grid run do not have to coincide with the\nfrequencies and directions used in the nested SWAN run; SWAN will interpolate to\nthese frequencies and directions in the nested run (see Section 2.6.3). Note that\nSWAN will accept output of a WAM output location only if the SWAN grid point on the\nnest boundary lies within a rectangle between two consecutive WAM output locations\nwith a width equal to 0.1 times the distance between these output locations on\neither side of the line between these WAM output locations. This BOUNDNEST2 command\nis not available for 1D computations. Only boundary conditions generated by WAM\nCycle 4.5 can be read properly by SWAN. A nested SWAN run may use either Cartesian\nor spherical coordinates. A curvilinear grid may be used in the nested grid but the\nboundaries of this nest should conform to the rectangular course grid nest\nboundaries. WAM output files are unformatted (binary); this usually implies that\nWAM and SWAN have to run on the same computer. For those cases where WAM and SWAN\nrun on different types of machines (binary files do not transfer properly), the\noption FREE is available in this command. The distributed version of WAM does not\nsupport the required free format nesting output; WAM users who modify WAM such that\nit can make formatted output, must modify WAM such that the files made by WAM can\nbe read in free format, i.e. with at least a blank or comma between numbers.\n\nNote\n----\nthe contents of 'fname' file could look like:\n\n.. code-block:: text\n\n CBO9212010000\n CBO9212020000\n CBO9212030000\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.boundary import BOUNDNEST2\n boundary = BOUNDNEST2(fname=\"boundary.wam\", format=\"cray\", lwdate=12)\n print(boundary.render())", "properties": { "model_type": { "default": "boundnest2", "description": "Model type discriminator", "enum": [ "boundnest2", "BOUNDNEST2" ], "title": "Model Type", "type": "string" }, "fname": { "description": "A file name that contains all the names of WAM files containing the nested boundary conditions in time-sequence (usually one file per day)", "maxLength": 36, "minLength": 1, "title": "Fname", "type": "string" }, "format": { "description": "Format of the WAM file. `cray`: CRAY version of WAM, `wkstat`: WORKSTATION version of WAM, `free`: Free format (these files are not generated standard by WAM)", "enum": [ "cray", "wkstat", "free" ], "title": "Format", "type": "string" }, "xgc": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "If SWAN is used with Cartesian coordinates: longitude of south-west corner of SWAN computational grid (in degrees); if the south-west corner of the nest in the WAM computation is on land this value is required. If SWAN is used with spherical coordinates then `xgc` is ignored by SWAN (SWAN default: the location of the first spectrum encountered in the nest file", "title": "Xgc" }, "ygc": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "If SWAN is used with Cartesian coordinates: latitude of south-west corner of SWAN computational grid (in degrees); if the south-west corner of the nest in the WAM computation is on land this value is required. If SWAN is used with spherical coordinates then `ygc` is ignored by SWAN (SWAN default: the location of the first spectrum encountered in the nest file", "title": "Ygc" }, "lwdate": { "default": 12, "description": "Length of character string for date-time as used in the WAM files. Possible values are: 10 (i.e. YYMMDDHHMM), 12 (i.e. YYMMDDHHMMSS) or 14 (i.e. YYYYMMDDHHMMSS) (SWAN default: `lwdate` = 12)", "enum": [ 10, 12, 14 ], "title": "Lwdate", "type": "integer" } }, "required": [ "fname", "format" ], "title": "BOUNDNEST2", "type": "object" }, "BOUNDNEST3": { "additionalProperties": false, "description": "Boundary spectra from WAVEWATCHIII.\n\n.. code-block:: text\n\n BOUNDNEST3 WW3 'fname' FREE|UNFORMATTED ->CLOSED|OPEN [xgc] [ygc]\n\nWith this optional command a nested SWAN run can be carried out with the boundary\nconditions obtained from a coarse grid WAVEWATCH III run. The spectral frequencies\nand directions of the coarse grid run do not have to coincide with the frequencies\nand directions used in the nested SWAN run; SWAN will interpolate to these\nfrequencies and directions in the nested run (see Section 2.6.3). The output files\nof WAVEWATCH III have to be created with the post-processor of WAVEWATCH III as\noutput transfer files (formatted or unformatted) with WW_3 OUTP (output type 1 sub\ntype 3) at the locations along the nest boundary (i.e. computational grid points in\nWAVEWATCH III). These locations are equal to the corner points of the SWAN nested\ngrid and optionally also distributed between the corner points of the SWAN nested\ngrid (the boundary of the WAVEWATCH III nested grid need not be closed and may\ncover land). The locations should be output by WAVEWATCH III in sequence (going\nalong the nest boundary, clockwise or counterclockwise). Note that SWAN will accept\noutput of a WAVEWATCH III output location only if the SWAN grid point on the nest\nboundary lies within a rectangle between two consecutive WAVEWATCH III output\nlocations with a width equal to 0.1 times the distance between these output\nlocations on either side of the line between these WAVEWATCH III output locations.\nThis BOUNDNEST3 command is not available for 1D computations. A nested SWAN run may\nuse either Cartesian or spherical coordinates. A curvilinear grid may be used in\nthe nested grid but the boundaries of this nest should conform to the rectangular\ncourse grid nest boundaries.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.boundary import BOUNDNEST3\n boundary = BOUNDNEST3(\n fname=\"boundary.ww3\",\n format=\"free\",\n rectangle=\"closed\",\n )\n print(boundary.render())", "properties": { "model_type": { "default": "boundnest3", "description": "Model type discriminator", "enum": [ "boundnest3", "BOUNDNEST3" ], "title": "Model Type", "type": "string" }, "fname": { "description": "The name of the file that contains the spectra computed by WAVEWATCH III", "maxLength": 36, "minLength": 1, "title": "Fname", "type": "string" }, "format": { "description": "Format of the WW3 file. `unformatted`: The input WW3 files are binary, `free`: The input WW3 files are formatted", "enum": [ "unformatted", "free" ], "title": "Format", "type": "string" }, "rectangle": { "default": "closed", "description": "Boundary is defined over a closed (default) or an open rectangle. Boundary generated from the NESTOUT command is aways closed", "enum": [ "closed", "open" ], "title": "Rectangle", "type": "string" }, "xgc": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "If SWAN is used with Cartesian coordinates: longitude of south-west corner of SWAN computational grid (in degrees); if the south-west corner of the nest in the WAM computation is on land this value is required. If SWAN is used with spherical coordinates then `xgc` is ignored by SWAN (SWAN default: the location of the first spectrum encountered in the nest file. ", "title": "Xgc" }, "ygc": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "If SWAN is used with Cartesian coordinates: latitude of south-west corner of SWAN computational grid (in degrees); if the south-west corner of the nest in the WAM computation is on land this value is required. If SWAN is used with spherical coordinates then `ygc` is ignored by SWAN (SWAN default: the location of the first spectrum encountered in the nest file. ", "title": "Ygc" } }, "required": [ "fname", "format" ], "title": "BOUNDNEST3", "type": "object" }, "BOUNDSPEC": { "additionalProperties": false, "description": "Boundary along sides or segment.\n\n.. code-block:: text\n\n BOUNDSPEC ->SIDE|SEGMENT CONSTANT|VARIABLE PAR|FILE\n\nThis command BOUNDSPEC defines parametric spectra at the boundary. It consists of\ntwo parts, the first part defines the boundary side or segment where the spectra\nwill be given, the second part defines the spectral parameters of these spectra.\nNote that in fact only the incoming wave components of these spectra are used by\nSWAN. The fact that complete spectra are calculated at the model boundaries from\nthe spectral parameters should not be misinterpreted. Only the incoming components\nare effective in the computation.\n\nTODO: Add support for unstructured grid (k).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.boundary import BOUNDSPEC\n boundary = BOUNDSPEC(\n shapespec=dict(model_type=\"shapespec\", shape=dict(model_type=\"pm\")),\n location=dict(model_type=\"side\", side=\"west\", direction=\"ccw\"),\n data=dict(model_type=\"constantpar\", hs=2, per=8, dir=270, dd=30),\n )\n print(boundary.render())\n boundary = BOUNDSPEC(\n shapespec=dict(model_type=\"shapespec\", shape=dict(model_type=\"pm\")),\n location=dict(\n model_type=\"segment\",\n points=dict(model_type=\"ij\", i=[0, 0], j=[0, 3])\n ),\n data=dict(model_type=\"constantpar\", hs=2, per=8, dir=270, dd=30),\n )\n print(boundary.render())", "properties": { "model_type": { "default": "boundspec", "description": "Model type discriminator", "enum": [ "boundspec", "BOUNDSPEC" ], "title": "Model Type", "type": "string" }, "shapespec": { "$ref": "#/$defs/SHAPESPEC", "description": "Spectral shape specification" }, "location": { "anyOf": [ { "$ref": "#/$defs/SIDE" }, { "$ref": "#/$defs/SEGMENT" } ], "description": "Location to apply the boundary", "title": "Location" }, "data": { "anyOf": [ { "$ref": "#/$defs/CONSTANTPAR" }, { "$ref": "#/$defs/CONSTANTFILE" }, { "$ref": "#/$defs/VARIABLEPAR" }, { "$ref": "#/$defs/VARIABLEFILE" } ], "description": "Spectral data", "title": "Data" } }, "required": [ "location", "data" ], "title": "BOUNDSPEC", "type": "object" }, "BRAGG": { "additionalProperties": false, "description": "Bragg scattering.\n\n.. code-block:: text\n\n BRAGG [ibrag] [nreg] [cutoff]\n\nUsing this optional command, the user activates a source term to represent the\nscattering of waves due to changes in the small-scale bathymetry based on the\ntheory of Ardhuin and Herbers (2002). If this command is not used, SWAN will not\naccount for Bragg scattering.\n\nThe underlying process is related to the bed elevation spectrum that describes the\nrandom variability of the bathymetry at the scale of the wave length on top of a\nslowly varying depth. To input this spectrum in the model, two options are\navailable. One option is to read a spectrum from a file. This single bottom\nspectrum will subsequently be applied in all active grid points. The assumption\nbeing made here is that the inputted bottom is gently sloping. Note that the bottom\nspectrum must be given as a function of the wave number `k`.\n\nAnother option is to compute the spectrum by a Fourier transform from `x` to `k` of\nthe bed modulations around a computational grid point. First, one must define a\nsquare region with a fixed size around the grid point in order to perform the\nFourier transform. The size should correspond to a multiple of the wave length at\nwhich refraction is resolved (i.e. consistent with the mild slope assumption).\nNext, the amplitude modulation of the small-scale bathymetry is obtained by\nsubstracting a slowly varying bed level from the inputted high-resolution\nbathymetric data within this square region. Here, the smooth bed level is achieved\nusing a bilinear fit. During the computation, however, SWAN employs the gently\nsloping bed as the mean of the original bathymetry within the given square around\neach computational grid point. Finally, the corresponding bottom spectrum is\ncomputed with an FFT.\n\nNotes\n-----\nThe Bragg scattering source term to the action balance equation gives rise to a\nfairly stiff equation. The best remedy is to run SWAN in the nonstationary mode\nwith a relatively small time step or in the stationary mode with some under\nrelaxation (see command `NUM STAT [alfa]`).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import BRAGG\n bragg = BRAGG(nreg=200)\n print(bragg.render())\n bragg = BRAGG(ibrag=1, nreg=200, cutoff=5.0)\n print(bragg.render())", "properties": { "model_type": { "default": "bragg", "description": "Model type discriminator", "enum": [ "bragg", "BRAGG" ], "title": "Model Type", "type": "string" }, "ibrag": { "anyOf": [ { "enum": [ 1, 2, 3 ], "type": "integer" }, { "type": "null" } ], "default": null, "description": "Indicates the computation of Bragg scattering term:\n\n* 1: source term is calculated per sweep and bottom spectrum is interpolated at the difference wave number a priori (thus requiring storage)\n* 2: source term is calculated per sweep and bottom spectrum is interpolated at the difference wave number per sweep (no storage)\n* 3: source term is calculated per iteration and bottom spectrum is interpolated at the difference wave number per iteration (no storage)\n\n(SWAN default: 1)", "title": "Ibrag" }, "nreg": { "description": "Size of square region around computational grid point (centered) for computing the mean depth and, if desired, the bed elevation spectrum. It is expressed in terms of the number of grid points (per direction) of the inputted bottom grid", "title": "Nreg", "type": "integer" }, "cutoff": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Cutoff to the ratio between surface and bottom wave numbers. Note: seethe Scientific/Technical documentation for details (SWAN default: 5.0)", "title": "Cutoff" } }, "required": [ "nreg" ], "title": "BRAGG", "type": "object" }, "BRAGG_FILE": { "additionalProperties": false, "description": "Bragg scattering with bottom spectrum from file.\n\n.. code-block:: text\n\n BRAGG [ibrag] [nreg] [cutoff] FILE 'fname' [idla] [mkx] [mky] [dkx] [dky]\n\nThe bed elevation spectrum `FB(kx, ky)` is read from a file.\n\nNotes\n-----\nThis spectrum is taken to be uniform over the entire computational domain.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import BRAGG_FILE\n bragg = BRAGG_FILE(fname=\"bottom_spectrum.txt\", nreg=500, mkx=99, dkx=0.1)\n print(bragg.render())\n kwargs = dict(\n ibrag=3,\n nreg=500,\n cutoff=5.0,\n fname=\"bottom_spectrum.txt\",\n mkx=99,\n mky=149,\n dkx=0.1,\n dky=0.1,\n )\n bragg = BRAGG_FILE(**kwargs)\n print(bragg.render())", "properties": { "model_type": { "default": "file", "description": "Model type discriminator", "enum": [ "file", "FILE" ], "title": "Model Type", "type": "string" }, "ibrag": { "anyOf": [ { "enum": [ 1, 2, 3 ], "type": "integer" }, { "type": "null" } ], "default": null, "description": "Indicates the computation of Bragg scattering term:\n\n* 1: source term is calculated per sweep and bottom spectrum is interpolated at the difference wave number a priori (thus requiring storage)\n* 2: source term is calculated per sweep and bottom spectrum is interpolated at the difference wave number per sweep (no storage)\n* 3: source term is calculated per iteration and bottom spectrum is interpolated at the difference wave number per iteration (no storage)\n\n(SWAN default: 1)", "title": "Ibrag" }, "nreg": { "description": "Size of square region around computational grid point (centered) for computing the mean depth and, if desired, the bed elevation spectrum. It is expressed in terms of the number of grid points (per direction) of the inputted bottom grid", "title": "Nreg", "type": "integer" }, "cutoff": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Cutoff to the ratio between surface and bottom wave numbers. Note: seethe Scientific/Technical documentation for details (SWAN default: 5.0)", "title": "Cutoff" }, "fname": { "description": "Name of file containing the bottom spectrum", "maxLength": 36, "title": "Fname", "type": "string" }, "idla": { "anyOf": [ { "$ref": "#/$defs/IDLA" }, { "type": "null" } ], "default": null, "description": "Order in which the values should be given in the input files" }, "mkx": { "description": "Number of cells in x-direction of the wave number grid related to bottom spectrum (this is one less than the number of points in this direction)", "title": "Mkx", "type": "integer" }, "mky": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Number of cells in y-direction of the wave number grid related to bottom spectrum (this is one less than the number of points in this direction)(SWAN default: `mky = mkx`)", "title": "Mky" }, "dkx": { "description": "Mesh size in x-direction of the wave number grid related to bottom spectrum (1/m)", "title": "Dkx", "type": "number" }, "dky": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Mesh size in y-direction of the wave number grid related to bottom spectrum (1/m) (SWAN default: `dky = dkx`)", "title": "Dky" } }, "required": [ "nreg", "fname", "mkx", "dkx" ], "title": "BRAGG_FILE", "type": "object" }, "BRAGG_FT": { "additionalProperties": false, "description": "Bragg scattering with bottom spectrum computed from FFT.\n\n.. code-block:: text\n\n BRAGG [ibrag] [nreg] [cutoff] FT\n\nIf this keyword is present the bottom spectrum will be computed in each active\ngrid point using a Fast Fourier Transform (FFT).\n\nNotes\n-----\nThe depth in each computational grid point is computed as the average of the\ninputted (high-resolution) bed levels within the square region.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import BRAGG_FT\n bragg = BRAGG_FT(nreg=350)\n print(bragg.render())\n bragg = BRAGG_FT(ibrag=2, nreg=350, cutoff=5.0)\n print(bragg.render())", "properties": { "model_type": { "default": "ft", "description": "Model type discriminator", "enum": [ "ft", "FT" ], "title": "Model Type", "type": "string" }, "ibrag": { "anyOf": [ { "enum": [ 1, 2, 3 ], "type": "integer" }, { "type": "null" } ], "default": null, "description": "Indicates the computation of Bragg scattering term:\n\n* 1: source term is calculated per sweep and bottom spectrum is interpolated at the difference wave number a priori (thus requiring storage)\n* 2: source term is calculated per sweep and bottom spectrum is interpolated at the difference wave number per sweep (no storage)\n* 3: source term is calculated per iteration and bottom spectrum is interpolated at the difference wave number per iteration (no storage)\n\n(SWAN default: 1)", "title": "Ibrag" }, "nreg": { "description": "Size of square region around computational grid point (centered) for computing the mean depth and, if desired, the bed elevation spectrum. It is expressed in terms of the number of grid points (per direction) of the inputted bottom grid", "title": "Nreg", "type": "integer" }, "cutoff": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Cutoff to the ratio between surface and bottom wave numbers. Note: seethe Scientific/Technical documentation for details (SWAN default: 5.0)", "title": "Cutoff" } }, "required": [ "nreg" ], "title": "BRAGG_FT", "type": "object" }, "BREAKING_BKD": { "additionalProperties": false, "description": "Variable wave breaking index.\n\n.. code-block:: text\n\n BREAKING BKD [alpha] [gamma0] [a1] [a2] [a3]\n\nIndicates that the breaker index scales with both the bottom slope (`beta`)\nand the dimensionless depth (kd).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import BREAKING_BKD\n breaking = BREAKING_BKD()\n print(breaking.render())\n breaking = BREAKING_BKD(alpha=1.0, gamma0=0.54, a1=7.59, a2=-8.06, a3=8.09)\n print(breaking.render())", "properties": { "model_type": { "default": "bkd", "description": "Model type discriminator", "enum": [ "bkd", "BKD" ], "title": "Model Type", "type": "string" }, "alpha": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Proportionality coefficient of the rate of dissipation (SWAN default: 1.0)", "title": "Alpha" }, "gamma0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The reference $gamma$ for horizontal slopes (SWAN default: 0.54)", "title": "Gamma0" }, "a1": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "First tunable coefficient for the breaker index (SWAN default: 7.59)", "title": "A1" }, "a2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Second tunable coefficient for the breaker index (SWAN default: -8.06)", "title": "A2" }, "a3": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Third tunable coefficient for the breaker index (SWAN default: 8.09)", "title": "A3" } }, "title": "BREAKING_BKD", "type": "object" }, "BREAKING_CONSTANT": { "additionalProperties": false, "description": "Constant wave breaking index.\n\n.. code-block:: text\n\n BREAKING CONSTANT [alpha] [gamma]\n\nIndicates that a constant breaker index is to be used.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import BREAKING_CONSTANT\n breaking = BREAKING_CONSTANT()\n print(breaking.render())\n breaking = BREAKING_CONSTANT(alpha=1.0, gamma=0.73)\n print(breaking.render())", "properties": { "model_type": { "default": "constant", "description": "Model type discriminator", "enum": [ "constant", "CONSTANT" ], "title": "Model Type", "type": "string" }, "alpha": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Proportionality coefficient of the rate of dissipation (SWAN default: 1.0)", "title": "Alpha" }, "gamma": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The breaker index, i.e. the ratio of maximum individual wave height over depth (SWAN default: 0.73)", "title": "Gamma" } }, "title": "BREAKING_CONSTANT", "type": "object" }, "BSBT": { "additionalProperties": false, "description": "BSBT first order propagation scheme.\n\n.. code-block:: text\n\n BSTB\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.numerics import BSBT\n scheme = BSBT()\n print(scheme.render())", "properties": { "model_type": { "default": "bsbt", "description": "Model type discriminator", "enum": [ "bsbt", "BSBT" ], "title": "Model Type", "type": "string" } }, "title": "BSBT", "type": "object" }, "Bag": { "additionalProperties": false, "properties": { "gpatch0": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -999, "description": "Region flag for Benthic Algae (BA). 1 indicates BA is ON for all elements, -999 indicates spatial distribution.", "title": "Gpatch0" }, "ba0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 5.0, "description": "Initial Benthic Algae (BA) concentration in grams of carbon per square meter.", "title": "Ba0" }, "ggpm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 2.25, "description": "Maximum growth rate for Benthic Algae (BA) per day.", "title": "Ggpm" }, "gtgp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 20.0, "description": "Optimal temperature for Benthic Algae (BA) growth in degrees Celsius.", "title": "Gtgp" }, "gktgp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.004, 0.006 ], "description": "Temperature dependence coefficients for Benthic Algae (BA) growth in inverse degrees Celsius squared.", "title": "Gktgp" }, "gmtb": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.05, "description": "Respiration rate for Benthic Algae (BA) at the reference temperature gTR, per day.", "title": "Gmtb" }, "gprr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Predation rate for Benthic Algae (BA) at the reference temperature gTR, per day.", "title": "Gprr" }, "gtr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 20.0, "description": "Reference temperature for Benthic Algae (BA) respiration in degrees Celsius.", "title": "Gtr" }, "gktr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.069, "description": "Temperature dependence coefficient for Benthic Algae (BA) respiration in inverse degrees Celsius.", "title": "Gktr" }, "galpha": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Initial slope of the Photosynthesis-Irradiance (P-I) curve for Benthic Algae (BA) in square meters per Einstein.", "title": "Galpha" }, "gksed": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "Light attenuation due to sediment for Benthic Algae (BA) growth (dimensionless).", "title": "Gksed" }, "gkba": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.01, "description": "Light attenuation coefficient due to Benthic Algae (BA) self-shading in square meters per gram of carbon.", "title": "Gkba" }, "gkhn": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.01, "description": "Nitrogen half-saturation constant for Benthic Algae (BA) growth in grams of nitrogen per square meter.", "title": "Gkhn" }, "gkhp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.001, "description": "Phosphorus half-saturation constant for Benthic Algae (BA) growth in grams of phosphorus per square meter.", "title": "Gkhp" }, "gp2c": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0167, "description": "Phosphorus to carbon ratio in Benthic Algae (BA) biomass.", "title": "Gp2C" }, "gn2c": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.167, "description": "Nitrogen to carbon ratio in Benthic Algae (BA) biomass.", "title": "Gn2C" }, "go2c": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 2.67, "description": "Oxygen to carbon ratio for Benthic Algae (BA) respiration.", "title": "Go2C" }, "gfcp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.5, 0.45, 0.05 ], "description": "Fractions of predated Benthic Algae (BA) carbon distributed into three classes in sediment.", "title": "Gfcp" }, "gfnp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.5, 0.45, 0.05 ], "description": "Fractions of predated Benthic Algae (BA) nitrogen distributed into three classes in sediment.", "title": "Gfnp" }, "gfpp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.5, 0.45, 0.05 ], "description": "Fractions of predated Benthic Algae (BA) phosphorus distributed into three classes in sediment.", "title": "Gfpp" } }, "title": "Bag", "type": "object" }, "BaseConfig": { "additionalProperties": true, "description": "Base class for model templates.\n\nThe template class provides the object that is used to set up the model configuration.\nWhen implemented for a given model, can move along a scale of complexity\nto suit the application.\n\nIn its most basic form, as implemented in this base object, it consists of path to a cookiecutter template\nwith the class providing the context for the {{config}} values in that template. Note that any\n{{runtime}} values are filled from the ModelRun object.\n\nIf the template is a git repo, the checkout parameter can be used to specify a branch or tag and it\nwill be cloned and used.\n\nIf the object is callable, it will be colled prior to rendering the template. This mechanism can be\nused to perform tasks such as fetching exteral data, or providing additional context to the template\nbeyond the arguments provided by the user..", "properties": { "model_type": { "const": "base", "default": "base", "title": "Model Type", "type": "string" }, "template": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "/opt/hostedtoolcache/Python/3.10.17/x64/lib/python3.10/site-packages/rompy/templates/base", "description": "The path to the model template", "title": "Template" }, "checkout": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "main", "description": "The git branch to use if the template is a git repo", "title": "Checkout" } }, "title": "BaseConfig", "type": "object" }, "BlockOptions": { "description": "Valid options for block output parameters.\n\nAttributes\n----------\nHSIGN: \"hsign\"\n Significant wave height (in m).\nHSWELL: \"hswell\"\n Swell wave height (in m).\nDIR: \"dir\"\n Mean wave direction (in degrees).\nDPM: \"dpm\"\n Mean wave direction at the peak frequency (in degrees).\nPDIR: \"pdir\"\n Peak wave direction (in degrees).\nTDIR: \"tdir\"\n Direction of energy transport (in degrees).\nTM01: \"tm01\"\n Mean absolute wave period (in s).\nRTM01: \"rtm01\"\n Mean relative wave period (in s).\nRTP: \"rtp\"\n Peak period of the (relative frequency) variance density spectrum (in s).\nTPS: \"tps\"\n Smoothed peak period (in s).\nPER: \"per\"\n Mean absolute wave period (in s).\nRPER: \"rper\"\n Mean relative wave period (in s).\nTMM10: \"tmm10\"\n Mean absolute wave period (in s).\nRTMM10: \"rtmm10\"\n Mean relative wave period (in s).\nTM02: \"tm02\"\n Mean absolute zero-crossing period (in s).\nFSPR: \"fspr\"\n The normalised width of the frequency spectrum.\nDSPR: \"dspr\"\n Directional spreading of the waves (in degrees).\nQP: \"qp\"\n Peakedness of the wave spectrum (dimensionless).\nDEPTH: \"depth\"\n Water depth (in m).\nWATLEV: \"watlev\"\n Water level (in m).\nBOTLEV: \"botlev\"\n Bottom level (in m).\nVEL: \"vel\"\n Current velocity (vector; in m/s).\nFRCOEF: \"frcoef\"\n Friction coefficient (equal to `cfw` or `kn` in command `FRICTION`).\nWIND: \"wind\"\n Wind velocity (vector; in m/s).\nAICE: \"aice\"\n Ice concentration (as a fraction from 0 to 1).\nPROPAGAT: \"propagat\"\n Sum of PROPXY, PROPTHETA and PROPSIGMA (in W/m2 or m2/s).\nPROPXY: \"propxy\"\n Energy propagation in geographic space; sum of x- and y-direction\n (in W/m2 or m2/s).\nPROPTHETA: \"proptheta\"\n Energy propagation in theta space (in W/m2 or m2/s).\nPROPSIGMA: \"propsigma\"\n Energy propagation in sigma space (in W/m2 or m2/s).\nGENERAT: \"generat\"\n Total energy generation (in W/m2 or m2/s).\nGENWIND: \"genwind\"\n Energy generation due to wind (in W/m2 or m2/s).\nREDIST: \"redist\"\n Total energy redistribution (in W/m2 or m2/s).\nREDQUAD: \"redquad\"\n Energy redistribution due to quadruplets (in W/m2 or m2/s).\nREDTRIAD: \"redtriad\"\n Energy redistribution due to triads (in W/m2 or m2/s).\nDISSIP: \"dissip\"\n Total energy dissipation (in W/m2 or m2/s).\nDISBOT: \"disbot\"\n Energy dissipation due to bottom friction (in W/m2 or m2/s).\nDISSURF: \"dissurf\"\n Energy dissipation due to surf breaking (in W/m2 or m2/s).\nDISWCAP: \"diswcap\"\n Energy dissipation due to whitecapping (in W/m2 or m2/s).\nDISSWELL: \"disswell\"\n Energy dissipation due to swell dissipation (in W/m2 or m2/s).\nDISVEG: \"disveg\"\n Energy dissipation due to vegetation (in W/m2 or m2/s).\nDISMUD: \"dismud\"\n Energy dissipation due to mud (in W/m2 or m2/s).\nDISICE: \"disice\"\n Energy dissipation due to sea ice (in W/m2 or m2/s).\nRADSTR: \"radstr\"\n Energy transfer between waves and currents due to radiation stress\n (in W/m2 or m2/s).\nQB: \"qb\"\n Fraction of breaking waves due to depth-induced breaking.\nTRANSP: \"transp\"\n Transport of energy (vector; in W/m2 or m2/s).\nFORCE: \"force\"\n Wave-induced force per unit surface area (vector; in N/m2).\nUBOT: \"ubot\"\n The rms-value of the maxima of the orbital velocity near the bottom (in m/s).\nURMS: \"urms\"\n The rms-value of the orbital velocity near the bottom (in m/s).\nTMBOT: \"tmbot\"\n The bottom wave period (in s).\nWLENGTH: \"wlength\"\n Average wave length (in m).\nLWAVP: \"lwavp\"\n Peak wave length (in m).\nSTEEPNESS: \"steepness\"\n Average wave steepness (dimensionless).\nBFI: \"bfi\"\n Benjamin-Feir index (dimensionless).\nNPLANTS: \"nplants\"\n Number of plants per square meter.\nDHSIGN: \"dhsign\"\n Difference in significant wave height from the last two iterations (in m).\nDRTM01: \"drtm01\"\n Difference in average wave period (RTM01) from the last two iterations (in s).\nLEAK: \"leak\"\n Numerical loss of energy equal to `cthetaE(omega,theta)` across boundaries.\nTIME: \"time\"\n Full date-time string as part of line used in TABLE only.\nTSEC: \"tsec\"\n Time in seconds with respect to a reference time (see command QUANTITY).\nXP: \"xp\"\n The x-coordinate in the problem coordinate system of the output location.\nYP: \"yp\"\n The y-coordinate in the problem coordinate system of the output location.\nDIST: \"dist\"\n If output has been requested along a curve then the distance along the curve\n can be obtained with the command TABLE. DIST is the distance along the curve\n measured from teh first point on the curve to the output location on the curve\n in meters (also in the case of spherical coordinates).\nSETUP: \"setup\"\n Set-up due to waves (in m).\nPTHSIGN: \"pthsign\"\n Watershed partitions of the significant wave height (in m).\nPTRTP: \"ptrtp\"\n Watershed partitions of the relative peak period (in s).\nPTWLEN: \"ptwlen\"\n Watershed partitions of the average wave length (in m).\nPTDIR: \"ptdir\"\n Watershed partitions of the peak wave direction (in degrees).\nPTDSPR: \"ptdspr\"\n Watershed partitions of the directional spreading (in degrees).\nPTWFRAC: \"ptwfrac\"\n Watershed partitions of the wind fraction (dimensionless).\nPTSTEEPNE: \"ptsteepne\"\n Watershed partition of the wave steepness (dimensionless).\nPARTITION: \"partition\"\n The raw spectral partition for wave system tracking post-processing.\n\nNote\n----\nEnergy given in W/m2 or m2/s depending on command SET.\n\nNote\n----\nUBOT and URMS required command `FRICTION` to be used. If friction is ignored in the\ncomputation, then one should use the command `FRICTION` with the value of the\nfriction set to zero (e.g., `FRICTION COLLINS 0`).", "enum": [ "hsign", "hswell", "dir", "dpm", "pdir", "tdir", "tm01", "rtm01", "rtp", "tps", "per", "rper", "tmm10", "rtmm10", "tm02", "fspr", "dspr", "qp", "depth", "watlev", "botlev", "vel", "frcoef", "wind", "aice", "propagat", "propxy", "proptheta", "propsigma", "generat", "genwind", "redist", "redquad", "redtriad", "dissip", "disbot", "dissurf", "diswcap", "disswell", "disveg", "dismud", "disice", "radstr", "qb", "transp", "force", "ubot", "urms", "tmbot", "wlength", "lwavp", "steepness", "bfi", "nplants", "dhsign", "drtm01", "leak", "time", "tsec", "xp", "yp", "dist", "setup", "pthsign", "ptrtp", "ptwlen", "ptdir", "ptdspr", "ptwfrac", "ptsteepne", "partition" ], "title": "BlockOptions", "type": "string" }, "Bouc": { "additionalProperties": false, "properties": { "lbcse": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Determines if wave boundary data is time-dependent.", "title": "Lbcse" }, "lbinter": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Controls time interpolation when LBCSE is true. Not available for quasi-steady mode within subtime steps.", "title": "Lbinter" }, "lbcwa": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Enables parametric wave spectra.", "title": "Lbcwa" }, "lbcsp": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Enables specification of non-parametric wave spectra, defined in FILEWAVE.", "title": "Lbcsp" }, "linhom": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Enables non-uniform wave boundary conditions in space.", "title": "Linhom" }, "lbsp1d": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Specifies 1D (frequency space only) format for FILEWAVE when LBCSP is true and LINHOM is false.", "title": "Lbsp1D" }, "lbsp2d": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Specifies 2D format for FILEWAVE when LBCSP is true and LINHOM is false.", "title": "Lbsp2D" }, "begtc": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "20200101.000000", "description": "Start time of the wave boundary file (FILEWAVE) in 'YYYYMMDD.HHMMSS' format.", "title": "Begtc" }, "deltc": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Time step in FILEWAVE.", "title": "Deltc" }, "unitc": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "HR", "description": "Time unit for DELTC. Can be HR, MIN, or SEC.", "title": "Unitc" }, "endtc": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "20200201.000000", "description": "End time of the wave boundary file in 'YYYYMMDD.HHMMSS' format.", "title": "Endtc" }, "filebound": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "wwmbnd.gr3", "description": "Boundary file defining boundary conditions and Neumann nodes.", "title": "Filebound" }, "iboundformat": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 6, "description": "Format of the boundary file. 1: WWM, 3: WW3 (2D spectra in netcdf format only - LBCWA=T), 6: WW3 2D spectra in netcdf format with LBCSP=T.", "title": "Iboundformat" }, "filewave": { "anyOf": [ { "type": "string" }, { "format": "path", "type": "string" }, { "type": "null" } ], "default": "ww3.acs.SCHISM.nc", "description": "Boundary file defining boundary input from WW3. This will be generated by rompy if wave data is specified in the data input", "title": "Filewave" }, "lindsprdeg": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "For 1D wave spectra, defines whether directional spreading input is in degrees (true) or exponent (false).", "title": "Lindsprdeg" }, "lparmdir": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "If true, directional spreading is read from WBDS in exponential format. Only valid for 1D spectra.", "title": "Lparmdir" }, "wbhs": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 2.0, "description": "Significant wave height at the boundary for parametric spectra.", "title": "Wbhs" }, "wbss": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "Spectral shape parameter. 1/-1: Pierson-Moskowitz, 2/-2: JONSWAP, 3/-3: all in one BIN, 4: Gauss. Sign determines if WBTP is peak (+) or mean period (-).", "title": "Wbss" }, "wbtp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 8.0, "description": "Peak or mean wave period at the boundary (seconds), depending on the sign of WBSS.", "title": "Wbtp" }, "wbdm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 90.0, "description": "Average wave direction at the boundary (degrees).", "title": "Wbdm" }, "wbdsms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Directional spreading value format. 1: degrees, 2: exponent.", "title": "Wbdsms" }, "wbds": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 10.0, "description": "Directional spreading at the boundary (degrees or exponent).", "title": "Wbds" }, "wbgauss": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Factor for Gaussian distribution if WBSS=4.", "title": "Wbgauss" }, "wbpken": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 3.3, "description": "Peak enhancement factor for JONSWAP spectra if WBSS=2.", "title": "Wbpken" } }, "title": "Bouc", "type": "object" }, "BoundaryInterface": { "additionalProperties": false, "description": "SWAN forcing boundary interface.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.interface import BoundaryInterface", "properties": { "model_type": { "default": "boundary_interface", "description": "Model type discriminator", "enum": [ "boundary_interface", "BOUNDARY_INTERFACE" ], "title": "Model Type", "type": "string" }, "kind": { "anyOf": [ { "$ref": "#/$defs/Boundnest1" }, { "$ref": "#/$defs/BoundspecSide" }, { "$ref": "#/$defs/BoundspecSegmentXY" } ], "default": null, "description": "Boundary data object", "title": "Kind" } }, "title": "BoundaryInterface", "type": "object" }, "Boundnest1": { "additionalProperties": false, "description": "SWAN BOUNDNEST1 NEST data class.", "properties": { "model_type": { "default": "boundnest1", "description": "Model type discriminator", "enum": [ "boundnest1", "BOUNDNEST1" ], "title": "Model Type", "type": "string" }, "id": { "description": "Unique identifier for this data source", "title": "Id", "type": "string" }, "source": { "description": "Dataset source reader, must return a wavespectra-enabled xarray dataset in the open method", "discriminator": { "mapping": { "csv": "#/$defs/SourceTimeseriesCSV", "datamesh": "#/$defs/SourceDatamesh", "file": "#/$defs/SourceFile", "intake": "#/$defs/SourceIntake", "wavespectra": "#/$defs/SourceWavespectra" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/SourceTimeseriesCSV" }, { "$ref": "#/$defs/SourceDatamesh" }, { "$ref": "#/$defs/SourceFile" }, { "$ref": "#/$defs/SourceIntake" }, { "$ref": "#/$defs/SourceWavespectra" } ], "title": "Source" }, "link": { "default": false, "description": "Whether to create a symbolic link instead of copying the file", "title": "Link", "type": "boolean" }, "filter": { "anyOf": [ { "$ref": "#/$defs/Filter" }, { "type": "null" } ], "description": "Optional filter specification to apply to the dataset" }, "variables": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": [], "description": "Subset of variables to extract from the dataset", "title": "Variables" }, "coords": { "anyOf": [ { "$ref": "#/$defs/DatasetCoords" }, { "type": "null" } ], "default": { "t": "time", "x": "longitude", "y": "latitude", "z": "depth", "s": "site" }, "description": "Names of the coordinates in the dataset" }, "crop_data": { "default": true, "description": "Update crop filter from Time object if passed to get method", "title": "Crop Data", "type": "boolean" }, "buffer": { "default": 2.0, "description": "Space to buffer the grid bounding box if `filter_grid` is True", "title": "Buffer", "type": "number" }, "time_buffer": { "default": [ 0, 0 ], "description": "Number of source data timesteps to buffer the time range if `filter_time` is True", "items": { "type": "integer" }, "title": "Time Buffer", "type": "array" }, "spacing": { "anyOf": [ { "type": "number" }, { "const": "parent", "type": "string" }, { "type": "null" } ], "default": null, "description": "Spacing between points along the grid boundary to retrieve data for. If None (default), points are defined from the the actual grid object passed to the `get` method. If 'parent', the resolution of the parent dataset is used to define the spacing.", "title": "Spacing" }, "sel_method": { "default": "idw", "description": "Wavespectra method to use for selecting boundary points from the dataset", "enum": [ "idw", "nearest" ], "title": "Sel Method", "type": "string" }, "sel_method_kwargs": { "additionalProperties": true, "default": {}, "description": "Keyword arguments for sel_method", "title": "Sel Method Kwargs", "type": "object" }, "grid_type": { "const": "boundary_wave_station", "default": "boundary_wave_station", "description": "Model type discriminator", "title": "Grid Type", "type": "string" }, "rectangle": { "default": "closed", "description": "Defines whether boundary is defined over an closed or open rectangle", "enum": [ "closed", "open" ], "title": "Rectangle", "type": "string" } }, "required": [ "id", "source" ], "title": "Boundnest1", "type": "object" }, "BoundspecSegmentXY": { "additionalProperties": false, "description": "SWAN BOUNDSPEC SEGMENT data class.\n\nTODO: Handle side definition on a rotated grid.\nTODO: Should SIDE VARIABE be supported?\nTODO: Support option to choose between mid-point or averaging?\nTODO: Does PAR need to be supported? Guess not as nonstationary isn't supported\nTODO: If SIDES, ensure continuous\n\nNote\n----\nSegments are defined from adjacent point locations so the order in which the points\nare defined is important. When using SIDES, please ensure SIDES are adjacent to\neach other and have correct directions (ccw or clockwise) accordint to the order in\nwhich each side is prescribed.\n\nNote\n----\nThe 'spec1d' file type is not supported yet.", "properties": { "model_type": { "default": "boundspecside", "description": "Model type discriminator", "enum": [ "boundspecside", "BOUNDSPECSIDE" ], "title": "Model Type", "type": "string" }, "id": { "description": "Unique identifier for this data source", "title": "Id", "type": "string" }, "source": { "description": "Dataset source reader, must return a wavespectra-enabled xarray dataset in the open method", "discriminator": { "mapping": { "csv": "#/$defs/SourceTimeseriesCSV", "datamesh": "#/$defs/SourceDatamesh", "file": "#/$defs/SourceFile", "intake": "#/$defs/SourceIntake", "wavespectra": "#/$defs/SourceWavespectra" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/SourceTimeseriesCSV" }, { "$ref": "#/$defs/SourceDatamesh" }, { "$ref": "#/$defs/SourceFile" }, { "$ref": "#/$defs/SourceIntake" }, { "$ref": "#/$defs/SourceWavespectra" } ], "title": "Source" }, "link": { "default": false, "description": "Whether to create a symbolic link instead of copying the file", "title": "Link", "type": "boolean" }, "filter": { "anyOf": [ { "$ref": "#/$defs/Filter" }, { "type": "null" } ], "description": "Optional filter specification to apply to the dataset" }, "variables": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": [], "description": "Subset of variables to extract from the dataset", "title": "Variables" }, "coords": { "anyOf": [ { "$ref": "#/$defs/DatasetCoords" }, { "type": "null" } ], "default": { "t": "time", "x": "longitude", "y": "latitude", "z": "depth", "s": "site" }, "description": "Names of the coordinates in the dataset" }, "crop_data": { "default": true, "description": "Update crop filter from Time object if passed to get method", "title": "Crop Data", "type": "boolean" }, "buffer": { "default": 2.0, "description": "Space to buffer the grid bounding box if `filter_grid` is True", "title": "Buffer", "type": "number" }, "time_buffer": { "default": [ 0, 0 ], "description": "Number of source data timesteps to buffer the time range if `filter_time` is True", "items": { "type": "integer" }, "title": "Time Buffer", "type": "array" }, "spacing": { "anyOf": [ { "type": "number" }, { "const": "parent", "type": "string" }, { "type": "null" } ], "default": null, "description": "Spacing between points along the grid boundary to retrieve data for. If None (default), points are defined from the the actual grid object passed to the `get` method. If 'parent', the resolution of the parent dataset is used to define the spacing.", "title": "Spacing" }, "sel_method": { "default": "idw", "description": "Wavespectra method to use for selecting boundary points from the dataset", "enum": [ "idw", "nearest" ], "title": "Sel Method", "type": "string" }, "sel_method_kwargs": { "additionalProperties": true, "default": {}, "description": "Keyword arguments for sel_method", "title": "Sel Method Kwargs", "type": "object" }, "grid_type": { "const": "boundary_wave_station", "default": "boundary_wave_station", "description": "Model type discriminator", "title": "Grid Type", "type": "string" }, "shapespec": { "$ref": "#/$defs/SHAPESPEC", "default": { "model_type": "shapespec", "shape": { "gamma": 3.3, "model_type": "jonswap" }, "per_type": "peak", "dspr_type": "degrees" }, "description": "Spectral shape specification" }, "variable": { "default": false, "description": "Whether the spectra can vary along the side", "title": "Variable", "type": "boolean" }, "file_type": { "default": "tpar", "description": "The type of file to write", "enum": [ "tpar", "spec2d" ], "title": "File Type", "type": "string" }, "location": { "description": "The side of the grid to apply the boundary to", "discriminator": { "mapping": { "SIDE": "#/$defs/SIDE", "SIDES": "#/$defs/SIDES", "XY": "#/$defs/XY", "side": "#/$defs/SIDE", "sides": "#/$defs/SIDES", "xy": "#/$defs/XY" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/SIDE" }, { "$ref": "#/$defs/SIDES" }, { "$ref": "#/$defs/XY" } ], "title": "Location" } }, "required": [ "id", "source", "location" ], "title": "BoundspecSegmentXY", "type": "object" }, "BoundspecSide": { "additionalProperties": false, "description": "SWAN BOUNDSPEC SIDE data class.\n\nTODO: Handle side definition on a rotated grid.\nTODO: Should SIDE VARIABE be supported?\nTODO: Support option to choose between mid-point or averaging?\nTODO: Does PAR need to be supported? Guess not as nonstationary isn't supported\n\nNote\n----\nThe 'spec1d' file type is not supported yet.", "properties": { "model_type": { "default": "boundspecside", "description": "Model type discriminator", "enum": [ "boundspecside", "BOUNDSPECSIDE" ], "title": "Model Type", "type": "string" }, "id": { "description": "Unique identifier for this data source", "title": "Id", "type": "string" }, "source": { "description": "Dataset source reader, must return a wavespectra-enabled xarray dataset in the open method", "discriminator": { "mapping": { "csv": "#/$defs/SourceTimeseriesCSV", "datamesh": "#/$defs/SourceDatamesh", "file": "#/$defs/SourceFile", "intake": "#/$defs/SourceIntake", "wavespectra": "#/$defs/SourceWavespectra" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/SourceTimeseriesCSV" }, { "$ref": "#/$defs/SourceDatamesh" }, { "$ref": "#/$defs/SourceFile" }, { "$ref": "#/$defs/SourceIntake" }, { "$ref": "#/$defs/SourceWavespectra" } ], "title": "Source" }, "link": { "default": false, "description": "Whether to create a symbolic link instead of copying the file", "title": "Link", "type": "boolean" }, "filter": { "anyOf": [ { "$ref": "#/$defs/Filter" }, { "type": "null" } ], "description": "Optional filter specification to apply to the dataset" }, "variables": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": [], "description": "Subset of variables to extract from the dataset", "title": "Variables" }, "coords": { "anyOf": [ { "$ref": "#/$defs/DatasetCoords" }, { "type": "null" } ], "default": { "t": "time", "x": "longitude", "y": "latitude", "z": "depth", "s": "site" }, "description": "Names of the coordinates in the dataset" }, "crop_data": { "default": true, "description": "Update crop filter from Time object if passed to get method", "title": "Crop Data", "type": "boolean" }, "buffer": { "default": 2.0, "description": "Space to buffer the grid bounding box if `filter_grid` is True", "title": "Buffer", "type": "number" }, "time_buffer": { "default": [ 0, 0 ], "description": "Number of source data timesteps to buffer the time range if `filter_time` is True", "items": { "type": "integer" }, "title": "Time Buffer", "type": "array" }, "spacing": { "anyOf": [ { "type": "number" }, { "const": "parent", "type": "string" }, { "type": "null" } ], "default": null, "description": "Spacing between points along the grid boundary to retrieve data for. If None (default), points are defined from the the actual grid object passed to the `get` method. If 'parent', the resolution of the parent dataset is used to define the spacing.", "title": "Spacing" }, "sel_method": { "default": "idw", "description": "Wavespectra method to use for selecting boundary points from the dataset", "enum": [ "idw", "nearest" ], "title": "Sel Method", "type": "string" }, "sel_method_kwargs": { "additionalProperties": true, "default": {}, "description": "Keyword arguments for sel_method", "title": "Sel Method Kwargs", "type": "object" }, "grid_type": { "const": "boundary_wave_station", "default": "boundary_wave_station", "description": "Model type discriminator", "title": "Grid Type", "type": "string" }, "shapespec": { "$ref": "#/$defs/SHAPESPEC", "default": { "model_type": "shapespec", "shape": { "gamma": 3.3, "model_type": "jonswap" }, "per_type": "peak", "dspr_type": "degrees" }, "description": "Spectral shape specification" }, "variable": { "default": false, "description": "Whether the spectra can vary along the side", "title": "Variable", "type": "boolean" }, "file_type": { "default": "tpar", "description": "The type of file to write", "enum": [ "tpar", "spec2d" ], "title": "File Type", "type": "string" }, "location": { "$ref": "#/$defs/SIDE", "description": "The side of the grid to apply the boundary to" } }, "required": [ "id", "source", "location" ], "title": "BoundspecSide", "type": "object" }, "CARTESIAN": { "additionalProperties": false, "description": "Cartesian coordinates.\n\n.. code-block:: text\n\n CARTESIAN\n\nAll locations and distances are in m. Coordinates are given with respect\nto x- and y-axes chosen by the user in the various commands.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.startup import CARTESIAN\n coords = CARTESIAN()\n print(coords.render())", "properties": { "model_type": { "default": "cartesian", "description": "Model type discriminator", "enum": [ "cartesian", "CARTESIAN" ], "title": "Model Type", "type": "string" } }, "title": "CARTESIAN", "type": "object" }, "COMPUTE_NONSTAT": { "additionalProperties": false, "description": "Multiple SWAN nonstationary computations.\n\n.. code-block:: text\n\n COMPUTE NONSTATIONARY [tbegc] [deltc] SEC|MIN|HR|DAY [tendc]\n HOTFILE 'fname' ->FREE|UNFORMATTED\n COMPUTE NONSTATIONARY [tbegc] [deltc] SEC|MIN|HR|DAY [tendc]\n HOTFILE 'fname' ->FREE|UNFORMATTED\n .\n .\n\nThis component can be used to define multiple nonstationary compute commands and\nwrite intermediate results as hotfiles between then.\n\nNote\n----\nThe field `times` is optional to allow for the case where the user wants to set\ntimes dynamically after instantiating this component.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.time import NONSTATIONARY\n from rompy.swan.components.lockup import COMPUTE_NONSTAT\n times = NONSTATIONARY(\n tbeg=\"1990-01-01T00:00:00\",\n tend=\"1990-02-01T00:00:00\",\n delt=\"PT1H\",\n dfmt=\"hr\",\n )\n comp = COMPUTE_NONSTAT(times=times)\n print(comp.render())\n comp = COMPUTE_NONSTAT(\n times=times,\n hotfile=dict(fname=\"hotfile.swn\", format=\"free\"),\n hottimes=[\"1990-02-01T00:00:00\"],\n )\n print(comp.render())\n comp = COMPUTE_NONSTAT(\n times=times,\n initstat=True,\n hotfile=dict(fname=\"hotfile\", format=\"free\"),\n hottimes=[6, 12, 18, -1],\n )\n print(comp.render())", "properties": { "model_type": { "default": "nonstat", "description": "Model type discriminator", "enum": [ "nonstat", "NONSTAT" ], "title": "Model Type", "type": "string" }, "times": { "$ref": "#/$defs/NONSTATIONARY", "description": "Compute times" }, "hotfile": { "anyOf": [ { "$ref": "#/$defs/HOTFILE" }, { "type": "null" } ], "default": null, "description": "Write results to restart files" }, "hottimes": { "anyOf": [ { "items": { "format": "date-time", "type": "string" }, "type": "array" }, { "items": { "type": "integer" }, "type": "array" } ], "default": [], "description": "Times to write hotfiles, can be a list of datetimes or times indices", "title": "Hottimes" }, "suffix": { "default": "_%Y%m%dT%H%M%S", "description": "Time-template suffix to add to hotfile fname", "title": "Suffix", "type": "string" }, "initstat": { "default": false, "description": "Run a STATIONARY computation at the initial time prior to the NONSTATIONARY computation(s) to prescribe initial conditions", "title": "Initstat", "type": "boolean" } }, "title": "COMPUTE_NONSTAT", "type": "object" }, "COMPUTE_STAT": { "additionalProperties": false, "description": "Multiple SWAN stationary computations.\n\n.. code-block:: text\n\n COMPUTE STATIONARY [time]\n HOTFILE 'fname' ->FREE|UNFORMATTED\n COMPUTE STATIONARY [time]\n COMPUTE STATIONARY [time]\n HOTFILE 'fname' ->FREE|UNFORMATTED\n .\n .\n\nThis component can be used to define multiple stationary compute commands and\nwrite intermediate results as hotfiles between then.\n\nNote\n----\nThe field `times` is optional to allow for the case where the user wants to set\ntimes dynamically after instantiating this component.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.time import STATIONARY, NONSTATIONARY\n from rompy.swan.components.lockup import COMPUTE_STAT\n time = STATIONARY(time=\"1990-01-01T00:00:00\")\n comp = COMPUTE_STAT(times=time)\n print(comp.render())\n times = NONSTATIONARY(\n tbeg=\"1990-01-01T00:00:00\",\n tend=\"1990-01-01T03:00:00\",\n delt=\"PT1H\",\n )\n comp = COMPUTE_STAT(times=times)\n print(comp.render())\n hotfile = dict(fname=\"./hotfile.swn\")\n hottimes=[\"1990-01-01T03:00:00\"]\n comp = COMPUTE_STAT(times=times, hotfile=hotfile, hottimes=hottimes)\n print(comp.render())\n comp = COMPUTE_STAT(times=times, hotfile=hotfile, hottimes=[2, -1])\n print(comp.render())", "properties": { "model_type": { "default": "stat", "description": "Model type discriminator", "enum": [ "stat", "STAT" ], "title": "Model Type", "type": "string" }, "times": { "description": "Compute times", "discriminator": { "mapping": { "NONSTATIONARY": "#/$defs/NONSTATIONARY", "STATIONARY": "#/$defs/STATIONARY", "nonstationary": "#/$defs/NONSTATIONARY", "stationary": "#/$defs/STATIONARY" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/STATIONARY" }, { "$ref": "#/$defs/NONSTATIONARY" } ], "title": "Times" }, "hotfile": { "anyOf": [ { "$ref": "#/$defs/HOTFILE" }, { "type": "null" } ], "default": null, "description": "Write results to restart files" }, "hottimes": { "anyOf": [ { "items": { "format": "date-time", "type": "string" }, "type": "array" }, { "items": { "type": "integer" }, "type": "array" } ], "default": [], "description": "Times to write hotfiles, can be a list of datetimes or times indices", "title": "Hottimes" }, "suffix": { "default": "_%Y%m%dT%H%M%S", "description": "Time-template suffix to add to hotfile fname", "title": "Suffix", "type": "string" } }, "title": "COMPUTE_STAT", "type": "object" }, "CONSTANTFILE": { "additionalProperties": false, "description": "Constant file specification.\n\n.. code-block:: text\n\n CONSTANT FILE 'fname' [seq]\n\nThere are three types of files:\n\n- TPAR files containing nonstationary wave parameters\n- files containing stationary or nonstationary 1D spectra\n (usually from measurements)\n- files containing stationary or nonstationary 2D spectra\n (from other computer programs or other SWAN runs)\n\nA TPAR file is for only one location; it has the string TPAR on the first\nline of the file and a number of lines which each contain 5 numbers, i.e.:\nTime (ISO-notation), Hs, Period (average or peak period depending on the\nchoice given in command BOUND SHAPE), Peak Direction (Nautical or Cartesian,\ndepending on command SET), Directional spread (in degrees or as power of cos\ndepending on the choice given in command BOUND SHAPE).\n\nNote\n----\nExample of a TPAR file:\n\n.. code-block:: text\n\n TPAR\n 19920516.130000 4.2 12. -110. 22.\n 19920516.180000 4.2 12. -110. 22.\n 19920517.000000 1.2 8. -110. 22.\n 19920517.120000 1.4 8.5 -80. 26\n 19920517.200000 0.9 6.5 -95. 28\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.boundary import CONSTANTFILE\n par = CONSTANTFILE(fname=\"tpar.txt\")\n print(par.render())", "properties": { "model_type": { "default": "constantfile", "description": "Model type discriminator", "enum": [ "constantfile", "CONSTANTFILE" ], "title": "Model Type", "type": "string" }, "fname": { "description": "Name of the file containing the boundary condition.", "maxLength": 36, "title": "Fname", "type": "string" }, "seq": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "description": "sequence number of geographic location in the file (see Appendix D); useful for files which contain spectra for more than one location. Note: a TPAR file always contains only one location so in this case `seq` must always be 1", "title": "Seq" } }, "required": [ "fname" ], "title": "CONSTANTFILE", "type": "object" }, "CONSTANTPAR": { "additionalProperties": false, "description": "Constant spectral parameters.\n\n.. code-block:: text\n\n CONSTANT PAR [hs] [per] [dir] ([dd])\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.boundary import CONSTANTPAR\n par = CONSTANTPAR(hs=1.5, per=8.1, dir=225)\n print(par.render())", "properties": { "model_type": { "default": "constantpar", "description": "Model type discriminator", "enum": [ "constantpar", "CONSTANTPAR" ], "title": "Model Type", "type": "string" }, "hs": { "description": "The significant wave height (m)", "exclusiveMinimum": 0.0, "title": "Hs", "type": "number" }, "per": { "description": "The characteristic period (s) of the energy spectrum (relative frequency; which is equal to absolute frequency in the absence of currents); `per` is the value of the peak period if option PEAK is chosen in command BOUND SHAPE or `per` is the value of the mean period, if option MEAN was chosen in command BOUND SHAPE.", "exclusiveMinimum": 0.0, "title": "Per", "type": "number" }, "dir": { "description": "The peak wave direction thetapeak (degree), constant over frequencies", "maximum": 360.0, "minimum": -360.0, "title": "Dir", "type": "number" }, "dd": { "anyOf": [ { "maximum": 360.0, "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Coefficient of directional spreading; a `cos^m(\u03b8)` distribution is assumed. `dd` is interpreted as the directional standard deviation in degrees, if the option DEGREES is chosen in the command BOUND SHAPE (SWAN default: 30). `dd` is interpreted as the power `m`, if the option POWER is chosen in the command BOUND SHAPE (SWAN default: 2)", "title": "Dd" } }, "required": [ "hs", "per", "dir" ], "title": "CONSTANTPAR", "type": "object" }, "COORDINATES": { "additionalProperties": false, "description": "SWAN Coordinates.\n\n.. code-block:: text\n\n COORDINATES ->CARTESIAN|SPHERICAL REPEATING\n\nCommand to choose between Cartesian and spherical coordinates (see Section 2.5).\nA nested SWAN run must use the same coordinate system as the coarse grid SWAN run.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.startup import COORDINATES\n coords = COORDINATES()\n print(coords.render())\n coords = COORDINATES(\n kind=dict(model_type=\"spherical\", projection=\"ccm\"),\n reapeating=True,\n )\n print(coords.render())", "properties": { "model_type": { "default": "coordinates", "description": "Model type discriminator", "enum": [ "coordinates", "COORDINATES" ], "title": "Model Type", "type": "string" }, "kind": { "anyOf": [ { "$ref": "#/$defs/CARTESIAN" }, { "$ref": "#/$defs/SPHERICAL" } ], "description": "Coordinates kind", "title": "Kind" }, "reapeating": { "default": false, "description": "This option is only for academic cases. It means that wave energy leaving at one end of the domain (in computational x-direction) enter at the other side; it is as if the wave field repeats itself in x-direction with the length of the domain in x-direction. This option cannot be used in combination with computation of set-up (see command SETUP). This option is available only with regular grids", "title": "Reapeating", "type": "boolean" } }, "title": "COORDINATES", "type": "object" }, "CSIGMA": { "additionalProperties": false, "description": "Prevents excessive directional turning.\n\n.. code-block:: text\n\n CSigma [cfl]\n\nThis option prevents an excessive frequency shifting at a single grid point or\nvertex due to a very coarse bathymetry or current locally. This option limits the\nfrequency shifting rate csigma based on the CFL restriction. See also the final\nremark in Section 2.6.3. Note that if this command is not specified, then the\nlimiter is not activated.\n\nExamples\n--------\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.numerics import CSIGMA\n csigma = CSIGMA()\n print(csigma.render())\n csigma = CSIGMA(cfl=0.9)\n print(csigma.render())", "properties": { "model_type": { "default": "ctheta", "description": "Model type discriminator", "enum": [ "ctheta", "CTHETA" ], "title": "Model Type", "type": "string" }, "cfl": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Upper limit for the CFL restriction for csigma. A suggestion for this parameter is `cfl = 0.9` (SWAN default: 0.9 when CSIGMA is activated)", "title": "Cfl" } }, "title": "CSIGMA", "type": "object" }, "CTHETA": { "additionalProperties": false, "description": "Prevents excessive directional turning.\n\n.. code-block:: text\n\n CTheta [cfl]\n\nThis option prevents an excessive directional turning at a single grid point or\nvertex due to a very coarse bathymetry or current locally. This option limits the\ndirectional turning rate c\u03b8 based on the CFL restriction. (See Eq. 3.41 of\nScientific/Technical documentation). See also the final remark in Section 2.6.3.\nNote that if this command is not specified, then the limiter is not activated.\n\nExamples\n--------\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.numerics import CTHETA\n ctheta = CTHETA()\n print(ctheta.render())\n ctheta = CTHETA(cfl=0.9)\n print(ctheta.render())", "properties": { "model_type": { "default": "ctheta", "description": "Model type discriminator", "enum": [ "ctheta", "CTHETA" ], "title": "Model Type", "type": "string" }, "cfl": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Upper limit for the CFL restriction for ctheta. A suggestion for this parameter is `cfl = 0.9` (SWAN default: 0.9 when CTHETA is activated)", "title": "Cfl" } }, "title": "CTHETA", "type": "object" }, "CURVE": { "additionalProperties": false, "description": "Output locations along a curve.\n\n.. code-block:: text\n\n CURVE 'sname' [xp1] [yp1] < [int] [xp] [yp] >\n\nWith this optional command the user defines output along a curved line. Actually\nthis curve is a broken line, defined by the user with its corner points. The values\nof the output quantities along the curve are interpolated from the computational\ngrid. This command may be used more than once to define more curves.\n\nNote\n----\nThe following pre-defined curves are available and could be used instead of a CURVE\ncomponent: 'BOUNDARY' and `BOUND_0N` where `N` is boundary part number.\n\nNote\n----\nAll coordinates and distances should be given in m when Cartesian coordinates are\nused or degrees when Spherical coordinates are used (see command COORD).\n\nNote\n----\nRepeat the group `< int xp yp` > in proper order if there are more corner points\non the curve.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import CURVE\n loc = CURVE(\n sname=\"outcurve\",\n xp1=172,\n yp1=-40,\n npts=[3, 3],\n xp=[172.0, 174.0],\n yp=[-38.0, -38.0],\n )\n print(loc.render())", "properties": { "model_type": { "default": "curve", "description": "Model type discriminator", "enum": [ "curve", "CURVE" ], "title": "Model Type", "type": "string" }, "sname": { "description": "Name of the set of output locations defined by this command", "maxLength": 8, "title": "Sname", "type": "string" }, "xp1": { "description": "Problem coordinate of the first point of the curve in the x-direction", "title": "Xp1", "type": "number" }, "yp1": { "description": "Problem coordinate of the first point of the curve in the y-direction", "title": "Yp1", "type": "number" }, "npts": { "description": "The `int` CURVE parameter, SWAN will generate `npts-1` equidistant locations between two subsequent corner points of the curve including the two corner points", "items": { "type": "integer" }, "minItems": 1, "title": "Npts", "type": "array" }, "xp": { "description": "problem coordinates of a corner point of the curve in the x-direction", "items": { "type": "number" }, "minItems": 1, "title": "Xp", "type": "array" }, "yp": { "description": "problem coordinates of a corner point of the curve in the y-direction", "items": { "type": "number" }, "minItems": 1, "title": "Yp", "type": "array" } }, "required": [ "sname", "xp1", "yp1", "npts", "xp", "yp" ], "title": "CURVE", "type": "object" }, "CURVES": { "additionalProperties": false, "description": "Output locations along multiple curves.\n\n.. code-block:: text\n\n CURVE 'sname1' [xp1] [yp1] < [int] [xp] [yp] >\n CURVE 'sname2' [xp1] [yp1] < [int] [xp] [yp] >\n ..\n\nThis component can be used to prescribe and render multiple CURVE components.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import CURVE, CURVES\n loc1 = CURVE(\n sname=\"c1\", xp1=7, yp1=-40, npts=[3, 3], xp=[7, 9], yp=[-38, -38],\n )\n loc2 = CURVE(\n sname=\"c2\", xp1=3, yp1=-37, npts=[5, 5], xp=[4, 5], yp=[-37, -36],\n )\n locs = CURVES(curves=[loc1, loc2])\n print(locs.render())", "properties": { "model_type": { "default": "curves", "description": "Model type discriminator", "enum": [ "curves", "CURVES" ], "title": "Model Type", "type": "string" }, "curves": { "description": "CURVE components", "items": { "$ref": "#/$defs/CURVE" }, "title": "Curves", "type": "array" } }, "required": [ "curves" ], "title": "CURVES", "type": "object" }, "Coordinate": { "description": "Coordinate", "properties": { "lon": { "description": "Longitude", "title": "Lon", "type": "number" }, "lat": { "description": "Latitude", "title": "Lat", "type": "number" } }, "required": [ "lon", "lat" ], "title": "Coordinate", "type": "object" }, "Cosine": { "additionalProperties": false, "properties": { "marco": { "anyOf": [ { "$ref": "#/$defs/rompy__schism__namelists__cosine__Marco" }, { "type": "null" } ] }, "core": { "anyOf": [ { "$ref": "#/$defs/rompy__schism__namelists__cosine__Core" }, { "type": "null" } ] }, "misc": { "anyOf": [ { "$ref": "#/$defs/Misc" }, { "type": "null" } ] } }, "title": "Cosine", "type": "object" }, "Coupl": { "additionalProperties": false, "properties": { "lcpl": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Main switch to enable coupling with the current model. Should be kept on for SCHISM-WWM coupling.", "title": "Lcpl" }, "radflag": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "LON", "description": "Determines the formulation for wave-induced forces. 'LON' for Longuet-Higgins formulation, 'VOR' for vortex formulation. Usually set to 'LON'.", "title": "Radflag" }, "letot": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Option to compute wave-induced radiation stress. If True, radiation stress is based on the integrated wave spectrum. If False (recommended), it's estimated using the directional spectra as described in Roland et al. (2008). False is preferred as it preserves spectral information.", "title": "Letot" }, "nlvt": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 10, "description": "Number of vertical layers. Not used when coupled with SCHISM.", "title": "Nlvt" }, "dtcoup": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 600.0, "description": "Coupling time step in seconds. Not used when coupled to SCHISM.", "title": "Dtcoup" } }, "title": "Coupl", "type": "object" }, "Curr": { "additionalProperties": false, "description": "Empty class to fill empty curr namelist", "properties": {}, "title": "Curr", "type": "object" }, "DANGREMOND": { "additionalProperties": false, "description": "DAM transmission of d'Angremond et al. (1996).\n\n.. code-block:: text\n\n DAM DANGREMOND [hgt] [slope] [Bk]\n\nThis option specifies transmission coefficients dependent on the incident wave\nconditions at the obstacle and on the obstacle height (which may be submerged).\n\nReferences\n----------\nd'Angremond, K., Van Der Meer, J.W. and De Jong, R.J., 1996. Wave transmission at\nlow-crested structures. In Coastal Engineering 1996 (pp. 2418-2427).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import DANGREMOND\n transm = DANGREMOND(hgt=3.0, slope=60, Bk=10.0)\n print(transm.render())", "properties": { "model_type": { "default": "dangremond", "description": "Model type discriminator", "enum": [ "dangremond", "DANGREMOND" ], "title": "Model Type", "type": "string" }, "hgt": { "description": "The elevation of the top of the obstacle above reference level (same reference level as for bottom etc.); use a negative value if the top is below that reference level", "title": "Hgt", "type": "number" }, "slope": { "description": "The slope of the obstacle (in degrees)", "maximum": 90.0, "minimum": 0.0, "title": "Slope", "type": "number" }, "Bk": { "description": "The crest width of the obstacle", "title": "Bk", "type": "number" } }, "required": [ "hgt", "slope", "Bk" ], "title": "DANGREMOND", "type": "object" }, "DEFAULT": { "additionalProperties": false, "description": "Default initial conditions.\n\n.. code-block:: text\n\n DEFAULT\n\nThe initial spectra are computed from the local wind velocities, using the\ndeep-water growth curve of Kahma and Calkoen (1992), cut off at values of\nsignificant wave height and peak frequency from Pierson and Moskowitz (1964).\nThe average (over the model area) spatial step size is used as fetch with local\nwind. The shape of the spectrum is default JONSWAP with a cos2-directional\ndistribution (options are available: see command BOUND SHAPE).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.boundary import DEFAULT\n init = DEFAULT()\n print(init.render())", "properties": { "model_type": { "default": "default", "description": "Model type discriminator", "enum": [ "default", "DEFAULT" ], "title": "Model Type", "type": "string" } }, "title": "DEFAULT", "type": "object" }, "DEWIT": { "additionalProperties": false, "description": "Biphase of De Wit (2022).\n\n.. code-block:: text\n\n BIPHASE DEWIT [lpar]\n\nBiphase parameterization based on bed slope and peak period of De Wit (2022).\n\nReferences\n----------\nDe Wit, F.P., 2022. Wave shape prediction in complex coastal systems (Doctoral\ndissertation, PhD. thesis. Delft University of Technology. https://repository.\ntudelft. nl/islandora/object/uuid% 3A0fb850a4-4294-4181-9d74-857de21265c2).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import DEWIT\n biphase = DEWIT()\n print(biphase.render())\n biphase = DEWIT(lpar=0.0)\n print(biphase.render())", "properties": { "model_type": { "const": "dewit", "default": "dewit", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "lpar": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Scales spatial averaging of the De Wit's biphase in terms of a multiple of peak wave length of the incident wave field. Note: `lpar` = 0` means no averaging (SWAN default: 0)", "title": "Lpar" } }, "title": "DEWIT", "type": "object" }, "DIFFRACTION": { "additionalProperties": false, "description": "Wave diffraction.\n\n.. code-block:: text\n\n DIFFRACTION [idiffr] [smpar] [smnum] [cgmod]\n\nIf this optional command is given, the diffraction is included in the wave\ncomputation. But the diffraction approximation in SWAN does not properly handle\ndiffraction in harbours or in front of reflecting obstacles (see\nScientific/Technical documentation). Behind breakwaters with a down-wave beach, the\nSWAN results seem reasonable. The spatial resolution near (the tip of) the\ndiffraction obstacle should be 1/5 to 1/10 of the dominant wave length.\n\nNotes\n-----\nWithout extra measures, the diffraction computations with SWAN often converge\npoorly or not at all. Two measures can be taken:\n\n1. (RECOMMENDED) The user can request under-relaxation. See command `NUMERIC`\nparameter `alpha` and Scientific/Technical documentation (Eq. (3.31)). Very limited\nexperience suggests `alpha = 0.01`.\n\n2. Alternatively, the user can request smoothing of the wave field for the\ncomputation of the diffraction parameter (the wave field remains intact for all\nother computations and output). This is done with a repeated convolution filtering.\n\nExamples\n--------\n\n.. ipython:: python\n\n from rompy.swan.components.physics import DIFFRACTION\n diffraction = DIFFRACTION()\n print(diffraction.render())\n diffraction = DIFFRACTION(idiffr=True, smpar=0.0, smnum=1.0)\n print(diffraction.render())", "properties": { "model_type": { "default": "diffraction", "description": "Model type discriminator", "enum": [ "diffraction", "DIFFRACTION" ], "title": "Model Type", "type": "string" }, "idiffr": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "description": "Indicates the use of diffraction. If `idiffr=0` then no diffraction is taken into account (SWAN default: 1)", "title": "Idiffr" }, "smpar": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Smoothing parameter for the calculation of \u2207 \u00b7 \u221aEtot. During every smoothing step all grid points exchange `smpar` times the energy with their neighbours. Note that `smpar` is parameter a in the above text (SWAN default: 0.0)", "title": "Smpar" }, "smnum": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Number of smoothing steps relative to `smpar` (SWAN default: 0)", "title": "Smnum" }, "cgmod": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Adaption of propagation velocities in geographic space due to diffraction. If `cgmod=0` then no adaption (SWAN default: 1.0)", "title": "Cgmod" } }, "title": "DIFFRACTION", "type": "object" }, "DIRIMPL": { "additionalProperties": false, "description": "Numerical scheme for refraction.\n\n.. code-block:: text\n\n DIRIMPL [cdd]\n\nExamples\n--------\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.numerics import DIRIMPL\n dirimpl = DIRIMPL()\n print(dirimpl.render())\n dirimpl = DIRIMPL(cdd=0.5)\n print(dirimpl.render())", "properties": { "model_type": { "default": "dirimpl", "description": "Model type discriminator", "enum": [ "dirimpl", "DIRIMPL" ], "title": "Model Type", "type": "string" }, "cdd": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "A value of `cdd=0` corresponds to a central scheme and has the largest accuracy (diffusion \u2248 0) but the computation may more easily generatespurious fluctuations. A value of `cdd=1` corresponds to a first orderupwind scheme and it is more diffusive and therefore preferable if (strong) gradients in depth or current are present (SWAN default: 0.5)", "title": "Cdd" } }, "title": "DIRIMPL", "type": "object" }, "DataBlob": { "additionalProperties": false, "description": "Data source for model ingestion.\n\nGeneric data source for files that either need to be copied to the model directory\nor linked if `link` is set to True.", "properties": { "model_type": { "default": "data_blob", "description": "Model type discriminator", "enum": [ "data_blob", "data_link" ], "title": "Model Type", "type": "string" }, "id": { "default": "data", "description": "Unique identifier for this data source", "title": "Id", "type": "string" }, "source": { "description": "URI of the data source, either a local file path or a remote uri", "title": "Source" }, "link": { "default": false, "description": "Whether to create a symbolic link instead of copying the file", "title": "Link", "type": "boolean" } }, "required": [ "source" ], "title": "DataBlob", "type": "object" }, "DataInterface": { "additionalProperties": false, "description": "SWAN forcing data interface.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.interface import DataInterface", "properties": { "model_type": { "default": "data_interface", "description": "Model type discriminator", "enum": [ "data_interface", "DATA_INTERFACE" ], "title": "Model Type", "type": "string" }, "bottom": { "anyOf": [ { "$ref": "#/$defs/SwanDataGrid" }, { "type": "null" } ], "default": null, "description": "Bathymetry data" }, "input": { "default": [], "description": "Input grid data", "items": { "$ref": "#/$defs/SwanDataGrid" }, "title": "Input", "type": "array" } }, "title": "DataInterface", "type": "object" }, "DatasetCoords": { "additionalProperties": false, "description": "Coordinates representation.", "properties": { "t": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "time", "description": "Name of the time coordinate", "title": "T" }, "x": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "longitude", "description": "Name of the x coordinate", "title": "X" }, "y": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "latitude", "description": "Name of the y coordinate", "title": "Y" }, "z": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "depth", "description": "Name of the z coordinate", "title": "Z" }, "s": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "site", "description": "Name of the site coordinate", "title": "S" } }, "title": "DatasetCoords", "type": "object" }, "Delt": { "additionalProperties": false, "description": "Time interval specification in SWAN.\n\n.. code-block:: text\n\n [delt] SEC|MIN|HR|DAY\n\nNote\n----\nThe `tdelta` field can be specified as:\n\n* existing timedelta object\n* int or float, assumed as seconds\n* ISO 8601 duration string, following formats work:\n\n * `[-][DD ][HH:MM]SS[.ffffff]`\n * `[\u00b1]P[DD]DT[HH]H[MM]M[SS]S` (ISO 8601 format for timedelta)\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.time import Delt\n from datetime import timedelta\n delt = Delt(delt=timedelta(minutes=30))\n print(delt.render())\n delt = Delt(delt=\"PT1H\", dfmt=\"hr\")\n print(delt.render())", "properties": { "model_type": { "const": "delt", "default": "delt", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "delt": { "description": "Time interval", "format": "duration", "title": "Delt", "type": "string" }, "dfmt": { "default": "sec", "description": "Format to render time interval specification", "enum": [ "sec", "min", "hr", "day" ], "title": "Dfmt", "type": "string" } }, "required": [ "delt" ], "title": "Delt", "type": "object" }, "ELDEBERKY": { "additionalProperties": false, "description": "Biphase of Eldeberky (1999).\n\n.. code-block:: text\n\n BIPHASE ELDEBERKY [urcrit]\n\nBiphase parameterisation as a funtion of the Ursell number of Eldeberky (1999).\n\nReferences\n----------\nEldeberky, Y., Polnikov, V. and Battjes, J.A., 1996. A statistical approach for\nmodeling triad interactions in dispersive waves. In Coastal Engineering 1996\n(pp. 1088-1101).\n\nEldeberky, Y. and Madsen, P.A., 1999. Deterministic and stochastic evolution\nequations for fully dispersive and weakly nonlinear waves. Coastal Engineering,\n38(1), pp.1-24.\n\nDoering, J.C. and Bowen, A.J., 1995. Parametrization of orbital velocity\nasymmetries of shoaling and breaking waves using bispectral analysis. Coastal\nengineering, 26(1-2), pp.15-33.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import ELDEBERKY\n biphase = ELDEBERKY()\n print(biphase.render())\n biphase = ELDEBERKY(urcrit=0.63)\n print(biphase.render())", "properties": { "model_type": { "const": "eldeberky", "default": "eldeberky", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "urcrit": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The critical Ursell number appearing in the parametrization. Note: the value of `urcrit` is setted by Eldeberky (1996) at 0.2 based on a laboratory experiment, whereas Doering and Bowen (1995) employed the value of 0.63 based on the field experiment data (SWAN default: 0.63)", "title": "Urcrit" } }, "title": "ELDEBERKY", "type": "object" }, "Engs": { "additionalProperties": false, "properties": { "mesnl": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Controls the nonlinear wave-wave interactions (NL4) using the Discrete Interaction Approximation. 1 enables the interactions, 0 disables them.", "title": "Mesnl" }, "mesin": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Specifies the wind input formulation. Options include: 0 (no wind), 1 (Ardhuin et al.), 2 (ECMWF physics), 3 (Makin Stam), 4 (Babanin et al.), 5 (Cycle 3).", "title": "Mesin" }, "ifric": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Determines the formulation for the atmospheric boundary layer. Should be 1 when MESIN=1, and 4 when MESIN=3.", "title": "Ifric" }, "mesbf": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "Selects the bottom friction formulation. 1 for JONSWAP (Default), 2 for Madsen et al. (1989), 3 for SHOWEX.", "title": "Mesbf" }, "fricc": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.006, "description": "Bottom friction coefficient or roughness, depending on MESBF. For MESBF=1: JONSWAP coefficient [0.038,0.067]. For MESBF=2: physical bottom roughness. For MESBF=3: D50 (negative value reads from SHOWEX_D50.gr3).", "title": "Fricc" }, "mesbr": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Enables (1) or disables (0) shallow water wave breaking.", "title": "Mesbr" }, "ibreak": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Selects the wave breaking formulation. Options range from 1 to 6, each representing a different model or approach.", "title": "Ibreak" }, "icrit": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Specifies the wave breaking criterion. Options 1-6 represent different methods for determining the breaking point.", "title": "Icrit" }, "brcr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.73, "description": "Breaking criterion parameter. Its meaning depends on IBREAK and ICRIT settings.", "title": "Brcr" }, "a_brcr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.76, "description": "Coefficient used in ICRIT=4,5 for calculating the breaking criterion.", "title": "A Brcr" }, "b_brcr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.29, "description": "Coefficient used in ICRIT=4,5 for calculating the breaking criterion.", "title": "B Brcr" }, "min_brcr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.25, "description": "Minimum value for the breaking criterion when ICRIT=4,5.", "title": "Min Brcr" }, "max_brcr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.8, "description": "Maximum value for the breaking criterion when ICRIT=4,5.", "title": "Max Brcr" }, "a_biph": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.2, "description": "Biphase coefficient, used when IBREAK=3.", "title": "A Biph" }, "br_coef_method": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Method for determining the breaking coefficient. 1 for constant, 2 for adaptive.", "title": "Br Coef Method" }, "b_alp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.5, "description": "Breaking coefficient. If BR_COEF_METHOD = 2, B_ALP should be around 40.", "title": "B Alp" }, "zprof_break": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "Specifies the vertical distribution function of the wave breaking source term in 3D runs. Options 1-6 represent different distribution functions.", "title": "Zprof Break" }, "bc_break": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Controls the application of depth-limited breaking at boundaries. 1 to enable, 0 to disable.", "title": "Bc Break" }, "iroller": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Enables (1) or disables (0) the wave roller model. Currently not in use.", "title": "Iroller" }, "alprol": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.85, "description": "Alpha coefficient for the wave roller model, determining the energy transfer to the roller. Range: 0 to 1.", "title": "Alprol" }, "meveg": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Enables (1) or disables (0) vegetation effects. If enabled, isav must be 1 in param.nml.", "title": "Meveg" }, "lmaxetot": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Controls the use of wave breaking limiter to limit shallow water wave height. True to enable, False to disable.", "title": "Lmaxetot" }, "mesds": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Specifies the formulation for the whitecapping source function. Should have the same value as MESIN.", "title": "Mesds" }, "mestr": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Selects the formulation for triad 3 wave interactions. 0 (off), 1 (Lumped Triad Approx.), 2 (corrected LTA by Salmon et al. (2016)).", "title": "Mestr" }, "trico": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Proportionality constant (\u03b1_EB) for triad interactions. Default is 0.1.", "title": "Trico" }, "trira": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 2.5, "description": "Ratio of maximum frequency considered in triads over mean frequency. Suggested value is 2.5.", "title": "Trira" }, "triurs": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Critical Ursell number for triad computations. Triads are not computed if Ursell number < TRIURS.", "title": "Triurs" } }, "title": "Engs", "type": "object" }, "Ero": { "additionalProperties": false, "properties": { "ierosion": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Determines the type of benthic erosion flux to be modeled. 0: No erosion, 1: H2S flux, 2: POC (Particulate Organic Carbon) flux, 3: H2S flux (alternative method).", "title": "Ierosion" } }, "title": "Ero", "type": "object" }, "FRAME": { "additionalProperties": false, "description": "Output locations on a regular grid.\n\n.. code-block:: text\n\n FRAME 'sname' [xpfr] [ypfr] [alpfr] [xlenfr] [ylenfr] [mxfr] [myfr]\n\nWith this optional command the user defines output on a rectangular, uniform grid\nin a regular frame.\n\nIf the set of output locations is identical to a part of the computational grid,\nthen the user can use the alternative command GROUP.\n\nNote\n----\nCannot be used in 1D-mode.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import FRAME\n loc = FRAME(\n sname=\"outgrid\",\n grid=dict(xp=173, yp=-40, xlen=2, ylen=2, mx=19, my=19),\n )\n print(loc.render())", "properties": { "model_type": { "default": "frame", "description": "Model type discriminator", "enum": [ "frame", "FRAME" ], "title": "Model Type", "type": "string" }, "sname": { "description": "Name of the set of output locations defined by this command", "maxLength": 8, "title": "Sname", "type": "string" }, "grid": { "$ref": "#/$defs/GRIDREGULAR", "description": "Frame grid definition" } }, "required": [ "sname", "grid" ], "title": "FRAME", "type": "object" }, "FREEBOARD": { "additionalProperties": false, "description": "Freeboard dependent transmission and reflection.\n\n.. code-block:: text\n\n FREEBOARD [hgt] [gammat] [gammar] [QUAY]\n\nWith this option the user indicates that the fixed transmission `trcoef` and\nreflection `reflc` coefficients are freeboard dependent. The freeboard dependency\nhas no effect on the transmission coefficient as computed using the DAM option.\n\nNotes\n-----\nSee the Scientific/Technical documentation for background information on the\n`gammat` and `gammar` shape parameters.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import FREEBOARD\n freeboard = FREEBOARD(hgt=2.0)\n print(freeboard.render())\n freeboard = FREEBOARD(hgt=2.0, gammat=1.0, gammar=1.0, quay=True)\n print(freeboard.render())", "properties": { "model_type": { "default": "freeboard", "description": "Model type discriminator", "enum": [ "freeboard", "FREEBOARD" ], "title": "Model Type", "type": "string" }, "hgt": { "description": "The elevation of the top of the obstacle or height of the quay above the reference level (same reference level as for the bottom). Use a negative value if the top is below that reference level. In case `hgt` is also specified in the DAM option, both values of `hgt` should be equal for consistency", "title": "Hgt", "type": "number" }, "gammat": { "anyOf": [ { "exclusiveMinimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Shape parameter of relative freeboard dependency of transmission coefficient. This parameter should be higher than zero (SWAN default 1.0)", "title": "Gammat" }, "gammar": { "anyOf": [ { "exclusiveMinimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Shape parameter of relative freeboard dependency of reflection coefficient. This parameter should be higher than zero (SWAN default 1.0)", "title": "Gammar" }, "quay": { "default": false, "description": "With this option the user indicates that the freeboard dependency of the transmission and reflection coefficients also depends on the relative position of an obstacle-linked grid point with respect to the position of the obstacle line representing the edge of a quay. In case the active grid point is on the deeper side of the obstacle, then the correction factors are applied using the parameters `hgt`, `gammat` and `gammar`.In case the active grid point is on the shallower side of the obstacle, the reflection coefficient is set to 0 and the transmission coefficient to 1.", "title": "Quay", "type": "boolean" } }, "required": [ "hgt" ], "title": "FREEBOARD", "type": "object" }, "FRICTION_COLLINS": { "additionalProperties": false, "description": "Collins (1972) friction.\n\n.. code-block:: text\n\n FRICTION COLLINS [cfw]\n\nNote that `cfw` is allowed to vary over the computational region; in that case use\nthe commands INPGRID FRICTION and READINP FRICTION to define and read the friction\ndata. This command FRICTION is still required to define the type of friction\nexpression. The value of `cfw` in this command is then not required (it will be\nignored).\n\nReferences\n----------\nCollins, J.I., 1972. Prediction of shallow-water spectra. Journal of Geophysical\nResearch, 77(15), pp.2693-2707.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import FRICTION_COLLINS\n friction = FRICTION_COLLINS()\n print(friction.render())\n friction = FRICTION_COLLINS(cfw=0.038)\n print(friction.render())", "properties": { "model_type": { "default": "collins", "description": "Model type discriminator", "enum": [ "collins", "COLLINS" ], "title": "Model Type", "type": "string" }, "cfw": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Collins bottom friction coefficient (SWAN default: 0.015)", "title": "Cfw" } }, "title": "FRICTION_COLLINS", "type": "object" }, "FRICTION_JONSWAP": { "additionalProperties": false, "description": "Hasselmann et al. (1973) Jonswap friction.\n\n.. code-block:: text\n\n FRICTION JONSWAP CONSTANT [cfjon]\n\nIndicates that the semi-empirical expression derived from the JONSWAP results for\nbottom friction dissipation (Hasselmann et al., 1973, JONSWAP) should be activated.\nThis option is default.\n\nReferences\n----------\nHasselmann, K., Barnett, T.P., Bouws, E., Carlson, H., Cartwright, D.E., Enke, K.,\nEwing, J.A., Gienapp, A., Hasselmann, D.E., Kruseman, P. and Meerburg, A., 1973.\nMeasurements of wind-wave growth and swell decay during the Joint North Sea Wave\nProject (JONSWAP). Deutches Hydrographisches Institut, Hamburg, Germany,\nRep. No. 12, 95 pp.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import FRICTION_JONSWAP\n friction = FRICTION_JONSWAP()\n print(friction.render())\n friction = FRICTION_JONSWAP(cfjon=0.038)\n print(friction.render())\n\nTODO: Implement VARIABLE option?", "properties": { "model_type": { "default": "jonswap", "description": "Model type discriminator", "enum": [ "jonswap", "JONSWAP" ], "title": "Model Type", "type": "string" }, "cfjon": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Coefficient of the JONSWAP formulation (SWAN default: 0.038)", "title": "Cfjon" } }, "title": "FRICTION_JONSWAP", "type": "object" }, "FRICTION_MADSEN": { "additionalProperties": false, "description": "Madsen et al (1988) friction.\n\n.. code-block:: text\n\n FRICTION MADSEN [kn]\n\nNote that `kn` is allowed to vary over the computational region; in that case use\nthe commands INPGRID FRICTION and READINP FRICTION to define and read the friction\ndata. This command FRICTION is still required to define the type of friction\nexpression. The value of `kn` in this command is then not required (it will be\nignored).\n\nReferences\n----------\nMadsen, O.S., Poon, Y.K. and Graber, H.C., 1988. Spectral wave attenuation by\nbottom friction: Theory. In Coastal engineering 1988 (pp. 492-504).\n\nMadsen, O.S. and Rosengaus, M.M., 1988. Spectral wave attenuation by bottom\nfriction: Experiments. In Coastal Engineering 1988 (pp. 849-857).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import FRICTION_MADSEN\n friction = FRICTION_MADSEN()\n print(friction.render())\n friction = FRICTION_MADSEN(kn=0.038)\n print(friction.render())", "properties": { "model_type": { "default": "madsen", "description": "Model type discriminator", "enum": [ "madsen", "MADSEN" ], "title": "Model Type", "type": "string" }, "kn": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "equivalent roughness length scale of the bottom (in m) (SWAN default: 0.05)", "title": "Kn" } }, "title": "FRICTION_MADSEN", "type": "object" }, "FRICTION_RIPPLES": { "additionalProperties": false, "description": "Smith et al. (2011) Ripples friction.\n\n.. code-block:: text\n\n FRICTION RIPPLES [S] [D]\n\nIndicates that the expression of Smith et al. (2011) should be activated. Here\nfriction depends on the formation of bottom ripples and sediment size.\n\nReferences\n----------\nSmith, G.A., Babanin, A.V., Riedel, P., Young, I.R., Oliver, S. and Hubbert, G.,\n2011. Introduction of a new friction routine into the SWAN model that evaluates\nroughness due to bedform and sediment size changes. Coastal Engineering, 58(4),\npp.317-326.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import FRICTION_RIPPLES\n friction = FRICTION_RIPPLES()\n print(friction.render())\n friction = FRICTION_RIPPLES(s=2.65, d=0.0001)\n print(friction.render())", "properties": { "model_type": { "default": "ripples", "description": "Model type discriminator", "enum": [ "ripples", "RIPPLES" ], "title": "Model Type", "type": "string" }, "s": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The specific gravity of the sediment (SWAN default: 2.65)", "title": "S" }, "d": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The sediment diameter (in m) (SWAN default: 0.0001)", "title": "D" } }, "title": "FRICTION_RIPPLES", "type": "object" }, "Filter": { "additionalProperties": false, "properties": { "sort": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": {}, "title": "Sort" }, "subset": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": {}, "title": "Subset" }, "crop": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": {}, "title": "Crop" }, "timenorm": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": {}, "title": "Timenorm" }, "rename": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": {}, "title": "Rename" }, "derived": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "default": {}, "title": "Derived" } }, "title": "Filter", "type": "object" }, "ForcingData": { "additionalProperties": false, "description": "SWAN forcing data.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.forcing import ForcingData", "properties": { "bottom": { "anyOf": [ { "$ref": "#/$defs/SwanDataGrid" }, { "type": "null" } ], "default": null, "description": "Bathymetry data" }, "wind": { "anyOf": [ { "$ref": "#/$defs/SwanDataGrid" }, { "type": "null" } ], "default": null, "description": "Wind input data" }, "current": { "anyOf": [ { "$ref": "#/$defs/SwanDataGrid" }, { "type": "null" } ], "default": null, "description": "Current input data" }, "boundary": { "anyOf": [ { "$ref": "#/$defs/Boundnest1" }, { "type": "null" } ], "default": null, "description": "Boundary input data" } }, "title": "ForcingData", "type": "object" }, "GAUSS": { "additionalProperties": false, "description": "Gaussian spectral shape.\n\n.. code-block:: text\n\n GAUSS [sigfr]\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.spectrum import GAUSS\n shape = GAUSS(sigfr=0.02)\n print(shape.render())", "properties": { "model_type": { "default": "gauss", "description": "Model type discriminator", "enum": [ "gauss", "GAUSS" ], "title": "Model Type", "type": "string" }, "sigfr": { "description": "Width of the Gaussian frequency spectrum expressed as a standard deviation in Hz.", "exclusiveMinimum": 0.0, "title": "Sigfr", "type": "number" } }, "required": [ "sigfr" ], "title": "GAUSS", "type": "object" }, "GEN1": { "additionalProperties": false, "description": "First generation source terms GEN1.\n\n.. code-block:: text\n\n GEN1 [cf10] [cf20] [cf30] [cf40] [edmlpm] [cdrag] [umin] [cfpm]\n\nWith this command the user indicates that SWAN should run in first-generation mode\n(see Scientific/Technical documentation).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import GEN1\n gen = GEN1()\n print(gen.render())\n kwargs = dict(\n cf10=188.0,\n cf20=0.59,\n cf30=0.12,\n cf40=250.0,\n edmlpm=0.0036,\n cdrag=0.0012,\n umin=1.0,\n cfpm=0.13\n )\n gen = GEN1(**kwargs)\n print(gen.render())", "properties": { "model_type": { "default": "gen1", "description": "Model type discriminator", "enum": [ "gen1", "GEN1" ], "title": "Model Type", "type": "string" }, "cf10": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Controls the linear wave growth (SWAN default: 188.0)", "title": "Cf10" }, "cf20": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Controls the exponential wave growth (SWAN default: 0.59)", "title": "Cf20" }, "cf30": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Controls the exponential wave growth (SWAN default: 0.12)", "title": "Cf30" }, "cf40": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Controls the dissipation rate, i.e., the time decay scale (SWAN default: 250.0)", "title": "Cf40" }, "edmlpm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Maximum non-dimensionless energy density of the wind sea part of the spectrum according to Pierson Moskowitz (SWAN default: 0.0036)", "title": "Edmlpm" }, "cdrag": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Drag coefficient (SWAN default: 0.0012)", "title": "Cdrag" }, "umin": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Minimum wind velocity (relative to current; all wind speeds are taken at 10 m above sea level) (SWAN default: 1)", "title": "Umin" }, "cfpm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Coefficient which determines the Pierson Moskowitz frequency: `delta_PM = 2pi g / U_10` (SWAN default: 0.13)", "title": "Cfpm" } }, "title": "GEN1", "type": "object" }, "GEN2": { "additionalProperties": false, "description": "Second generation source terms GEN2.\n\n.. code-block:: text\n\n GEN2 [cf10] [cf20] [cf30] [cf40] [cf50] [cf60] [edmlpm] [cdrag] [umin] [cfpm]\n\nWith this command the user indicates that SWAN should run in second-generation mode\n(see Scientific/Technical documentation).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import GEN2\n gen = GEN2()\n print(gen.render())\n kwargs = dict(\n cf10=188.0,\n cf20=0.59,\n cf30=0.12,\n cf40=250.0,\n cf50=0.0023,\n cf60=-0.223,\n edmlpm=0.0036,\n cdrag=0.0012,\n umin=1.0,\n cfpm=0.13\n )\n gen = GEN2(**kwargs)\n print(gen.render())", "properties": { "model_type": { "default": "gen2", "description": "Model type discriminator", "enum": [ "gen2", "GEN2" ], "title": "Model Type", "type": "string" }, "cf10": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Controls the linear wave growth (SWAN default: 188.0)", "title": "Cf10" }, "cf20": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Controls the exponential wave growth (SWAN default: 0.59)", "title": "Cf20" }, "cf30": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Controls the exponential wave growth (SWAN default: 0.12)", "title": "Cf30" }, "cf40": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Controls the dissipation rate, i.e., the time decay scale (SWAN default: 250.0)", "title": "Cf40" }, "edmlpm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Maximum non-dimensionless energy density of the wind sea part of the spectrum according to Pierson Moskowitz (SWAN default: 0.0036)", "title": "Edmlpm" }, "cdrag": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Drag coefficient (SWAN default: 0.0012)", "title": "Cdrag" }, "umin": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Minimum wind velocity (relative to current; all wind speeds are taken at 10 m above sea level) (SWAN default: 1)", "title": "Umin" }, "cfpm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Coefficient which determines the Pierson Moskowitz frequency: `delta_PM = 2pi g / U_10` (SWAN default: 0.13)", "title": "Cfpm" }, "cf50": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Controls the spectral energy scale of the limit spectrum (SWAN default: 0.0023)", "title": "Cf50" }, "cf60": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Ccontrols the spectral energy scale of the limit spectrum (SWAN default: -0.223", "title": "Cf60" } }, "title": "GEN2", "type": "object" }, "GEN3": { "additionalProperties": false, "description": "Third generation source terms GEN3.\n\n.. code-block:: text\n\n GEN3 JANSSEN|KOMEN|->WESTHUYSEN|ST6 AGROW [a]\n\nWith this command the user indicates that SWAN should run in third-generation mode\nfor wind input, quadruplet interactions and whitecapping.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import GEN3\n gen = GEN3(\n source_terms=dict(\n model_type=\"westhuysen\",\n wind_drag=\"wu\",\n agrow=True,\n ),\n )\n print(gen.render())\n from rompy.swan.subcomponents.physics import ST6C1\n gen = GEN3(source_terms=ST6C1())\n print(gen.render())", "properties": { "model_type": { "default": "gen3", "description": "Model type discriminator", "enum": [ "gen3", "GEN3" ], "title": "Model Type", "type": "string" }, "source_terms": { "description": "SWAN source terms to be used (SWAN default: WESTHUYSEN)", "discriminator": { "mapping": { "JANSSEN": "#/$defs/JANSSEN", "KOMEN": "#/$defs/KOMEN", "WESTHUYSEN": "#/$defs/WESTHUYSEN", "janssen": "#/$defs/JANSSEN", "komen": "#/$defs/KOMEN", "st6": "#/$defs/ST6", "st6c1": "#/$defs/ST6C1", "st6c2": "#/$defs/ST6C2", "st6c3": "#/$defs/ST6C3", "st6c4": "#/$defs/ST6C4", "st6c5": "#/$defs/ST6C5", "westhuysen": "#/$defs/WESTHUYSEN" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/JANSSEN" }, { "$ref": "#/$defs/KOMEN" }, { "$ref": "#/$defs/WESTHUYSEN" }, { "$ref": "#/$defs/ST6" }, { "$ref": "#/$defs/ST6C1" }, { "$ref": "#/$defs/ST6C2" }, { "$ref": "#/$defs/ST6C3" }, { "$ref": "#/$defs/ST6C4" }, { "$ref": "#/$defs/ST6C5" } ], "title": "Source Terms" } }, "title": "GEN3", "type": "object" }, "GODA": { "additionalProperties": false, "description": "DAM transmission of Goda/Seelig (1979).\n\n.. code-block:: text\n\n DAM GODA [hgt] [alpha] [beta]\n\nThis option specified transmission coefficients dependent on the incident wave\nconditions at the obstacle and on the obstacle height (which may be submerged).\n\nReferences\n----------\nGoda, Y. and Suzuki, Y., 1976. Estimation of incident and reflected waves in random\nwave experiments. In Coastal Engineering 1976 (pp. 828-845).\n\nSeelig, W.N., 1979. Effects of breakwaters on waves: Laboratory test of wave\ntransmission by overtopping. In Proc. Conf. Coastal Structures, 1979\n(Vol. 79, No. 2, pp. 941-961).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import GODA\n transm = GODA(hgt=3.0)\n print(transm.render())\n transm = GODA(hgt=3.0, alpha=2.6, beta=0.15)\n print(transm.render())", "properties": { "model_type": { "default": "goda", "description": "Model type discriminator", "enum": [ "goda", "GODA" ], "title": "Model Type", "type": "string" }, "hgt": { "description": "The elevation of the top of the obstacle above reference level (same reference level as for bottom etc.); use a negative value if the top is below that reference level", "title": "Hgt", "type": "number" }, "alpha": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "coefficient determining the transmission coefficient for Goda's transmission formula (SWAN default: 2.6)", "title": "Alpha" }, "beta": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Another coefficient determining the transmission coefficient for Goda's transmission formula (SWAN default: 0.15)", "title": "Beta" } }, "required": [ "hgt" ], "title": "GODA", "type": "object" }, "GR3Generator": { "additionalProperties": false, "properties": { "model_type": { "const": "gr3_generator", "default": "gr3_generator", "description": "Model discriminator", "title": "Model Type", "type": "string" }, "hgrid": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "format": "path", "type": "string" } ], "description": "Path to hgrid.gr3 file", "title": "Hgrid" }, "gr3_type": { "description": "Type of gr3 file. Must be one of 'albedo', 'diffmin', 'diffmax', 'watertype', 'windrot_geo2proj'", "title": "Gr3 Type", "type": "string" }, "value": { "default": null, "description": "Constant value to set in gr3 file", "title": "Value", "type": "number" }, "crs": { "default": "epsg:4326", "description": "Coordinate reference system", "title": "Crs", "type": "string" } }, "required": [ "hgrid", "gr3_type" ], "title": "GR3Generator", "type": "object" }, "GRIDREGULAR": { "additionalProperties": false, "description": "SWAN Regular Grid subcomponent.\n\n.. code-block:: text\n\n xp yp alp xlen ylen mx my\n\nNote\n----\nThe direction of the x-axis `alp` must be 0 in case of spherical coordinates\n\nNote\n----\nAll coordinates and distances should be given in m when Cartesian coordinates are\nused or degrees when Spherical coordinates are used (see command COORD).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.readgrid import GRIDREGULAR\n kwargs = dict(xp=173, yp=-40, alp=0, xlen=2, ylen=2, mx=199, my=199)\n grid = GRIDREGULAR(suffix=\"c\", **kwargs)\n print(grid.render())\n grid = GRIDREGULAR(suffix=\"inp\", **kwargs)\n print(grid.render())", "properties": { "model_type": { "default": "gridregular", "description": "Model type discriminator", "enum": [ "gridregular", "GRIDREGULAR" ], "title": "Model Type", "type": "string" }, "xp": { "description": "The x-coordinate of the origin in problem coordinates", "title": "Xp", "type": "number" }, "yp": { "description": "The y-coordinate of the origin in problem coordinates", "title": "Yp", "type": "number" }, "alp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "Direction of the xaxis in degrees", "title": "Alp" }, "xlen": { "description": "Length of the computational grid in the x-direction", "title": "Xlen", "type": "number" }, "ylen": { "description": "Length of the computational grid in the y-direction", "title": "Ylen", "type": "number" }, "mx": { "description": "Number of meshes in computational grid in x-direction (this number is one less than the number of grid points in this domain)", "title": "Mx", "type": "integer" }, "my": { "description": "Number of meshes in computational grid in y-direction (this number is one less than the number of grid points in this domain)", "title": "My", "type": "integer" }, "suffix": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "", "description": "Suffix for rendering with each output grid parameter.", "title": "Suffix" } }, "required": [ "xp", "yp", "xlen", "ylen", "mx", "my" ], "title": "GRIDREGULAR", "type": "object" }, "GROUP": { "additionalProperties": false, "description": "Output locations on subset of a grid.\n\n.. code-block:: text\n\n GROUP 'sname' SUBGRID [ix1] [ix2] [iy1] [iy2]\n\nWith this optional command the user defines a group of output locations on a\nrectangular or curvilinear grid that is identical with (part of) the computational\ngrid (rectilinear or curvilinear). Such a group may be convenient for the user to\nobtain output that is not affected by interpolation errors.\n\nThe subgrid contains those points (`ix`,`iy`) of the computational grid for which:\n`ix1` <= `ix` <= `ix2` and `iy1` <= `iy` <= `iy2` (The origin of the computational\ngrid is `ix=0`, `iy=0`)\n\nLimitations: `ix1>=0`, `ix2<=mxc`, `iy1>=0`, `iy2<=myc` (`mxc` and `myc` as\ndefined in the command `CGRID` which should always precede this command `GROUP`)\n\nNote\n----\nCannot be used in 1D-mode or in case of unstructured grids.\n\nNote\n----\nRegular and curvilinear grids are supported.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import GROUP\n loc = GROUP(sname=\"subgrid\", ix1=20, iy1=0, ix2=50, iy2=100)\n print(loc.render())", "properties": { "model_type": { "default": "group", "description": "Model type discriminator", "enum": [ "group", "GROUP" ], "title": "Model Type", "type": "string" }, "sname": { "description": "Name of the set of output locations defined by this command", "maxLength": 8, "title": "Sname", "type": "string" }, "ix1": { "description": "Lowest index of the computational grid in the ix-direction", "minimum": 0, "title": "Ix1", "type": "integer" }, "iy1": { "description": "Lowest index of the computational grid in the iy-direction", "minimum": 0, "title": "Iy1", "type": "integer" }, "ix2": { "description": "Highest index of the computational grid in the ix-direction", "title": "Ix2", "type": "integer" }, "iy2": { "description": "Highest index of the computational grid in the ix-direction", "title": "Iy2", "type": "integer" } }, "required": [ "sname", "ix1", "iy1", "ix2", "iy2" ], "title": "GROUP", "type": "object" }, "GSE": { "additionalProperties": false, "description": "Garden-sprinkler effect.\n\n.. code-block:: text\n\n GSE [waveage] Sec|MIn|HR|DAy\n\nGarden-sprinkler effect is to be counteracted in the S&L propagation scheme\n(default for nonstationary regular grid computations) or in the propagation\nscheme for unstructured grids by adding a diffusion term to the basic equation.\nThis may affect the numerical stability of SWAN.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.numerics import GSE\n scheme = GSE(waveage=dict(delt=86400, dfmt=\"day\"))\n print(scheme.render())", "properties": { "model_type": { "default": "gse", "description": "Model type discriminator", "enum": [ "gse", "GSE" ], "title": "Model Type", "type": "string" }, "waveage": { "anyOf": [ { "$ref": "#/$defs/Delt" }, { "type": "null" } ], "default": null, "description": "The time interval used to determine the diffusion which counteracts the so-called garden-sprinkler effect. The default value of `waveage` is zero, i.e. no added diffusion. The value of `waveage` should correspond to the travel time of the waves over the computational region." } }, "title": "GSE", "type": "object" }, "Grid": { "additionalProperties": false, "properties": { "lcird": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Flag to indicate if a full circle in directional space is used. If True, MINDIR and MAXDIR are ignored.", "title": "Lcird" }, "lstag": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Flag to stagger directional bins with a half Dtheta. Can only be True for regular grids to avoid characteristic line aligning with grid line.", "title": "Lstag" }, "mindir": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "Minimum direction for simulation in degrees (nautical convention; 0: from N; 90: from E). Not used if LCIRD is True.", "title": "Mindir" }, "maxdir": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 360.0, "description": "Maximum direction for simulation in degrees. May be less than MINDIR. Not used if LCIRD is True.", "title": "Maxdir" }, "mdc": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 24, "description": "Number of directional bins", "title": "Mdc" }, "frlow": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.04, "description": "Low frequency limit of the discrete wave period in Hz (1/period)", "title": "Frlow" }, "frhigh": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "High frequency limit of the discrete wave period in Hz", "title": "Frhigh" }, "msc": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 24, "description": "Number of frequency bins", "title": "Msc" }, "filegrid": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "hgrid_WWM.gr3", "description": "Name of the grid file. Should be 'hgridi_WWM.gr3' if IGRIDTYPE is 3 (SCHISM)", "title": "Filegrid" }, "igridtype": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 3, "description": "Grid type used. 1: XFN system.dat, 2: WWM-PERIODIC, 3: SCHISM, 4: old WWM type", "title": "Igridtype" }, "lslop": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Flag to enable bottom slope limiter", "title": "Lslop" }, "slmax": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.2, "description": "Maximum allowed bottom slope when LSLOP is True", "title": "Slmax" }, "lvar1d": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Flag to use variable dx in 1D mode. Not used with SCHISM (IGRIDTYPE = 3)", "title": "Lvar1D" }, "loptsig": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Flag to use optimal distributions of frequencies in spectral space (fi+1 = fi * 1.1)", "title": "Loptsig" } }, "title": "Grid", "type": "object" }, "GridLinker": { "additionalProperties": false, "properties": { "hgrid": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "format": "path", "type": "string" } ], "description": "Path to hgrid.gr3 file", "title": "Hgrid" }, "gridtype": { "description": "Type of grid to link", "title": "Gridtype", "type": "string" } }, "required": [ "hgrid", "gridtype" ], "title": "GridLinker", "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" }, "GridOutput": { "additionalProperties": false, "description": "Gridded outputs for SWAN", "properties": { "period": { "anyOf": [ { "$ref": "#/$defs/TimeRange" }, { "type": "null" } ], "default": null }, "variables": { "default": [ "DEPTH", "UBOT", "HSIGN", "HSWELL", "DIR", "TPS", "TM01", "WIND" ], "items": { "type": "string" }, "title": "Variables", "type": "array" } }, "title": "GridOutput", "type": "object" }, "HOTFILE": { "additionalProperties": false, "description": "Write intermediate results.\n\n.. code-block:: text\n\n HOTFILE 'fname' ->FREE|UNFORMATTED\n\nThis command can be used to write the entire wave field at the end of a computation\nto a so-called hotfile, to be used as initial condition in a subsequent SWAN run\n(see command `INITIAL HOTSTART`). This command must be entered immediately after a\n`COMPUTE` command.\n\nThe user may choose the format of the hotfile to be written either as free or\nunformatted. If the free format is chosen, then this format is identical to the\nformat of the files written by the `SPECOUT` command (option `SPEC2D`). This\nhotfile is therefore an ASCII file which is human readable.\n\nAn unformatted (or binary) file usually requires less space on your computer than\nan ASCII file. Moreover, it can be readed by a subsequent SWAN run much faster than\nan ASCII file. Especially, when the hotfile might become a big file, the choice for\nunformatted is preferable. Note that your compiler and OS should follow the same\nABI (Application Binary Interface) conventions (e.g. word size, endianness), so\nthat unformatted hotfiles may transfer properly between different OS or platforms.\nThis implies that the present and subsequent SWAN runs do not have to be carried\nout on the same operating system (e.g. Windows, Linux) or on the same computer,\nprovided that distinct ABI conventions have been followed.\n\nNote\n----\nFor parallel MPI runs, more than one hotfile will be generated depending on the\nnumber of processors (`fname-001`, `fname-002`, etc).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.lockup import HOTFILE\n hotfile = HOTFILE(fname=\"hotfile.swn\")\n print(hotfile.render())\n hotfile = HOTFILE(fname=\"hotfile.dat\", format=\"unformatted\")\n print(hotfile.render())", "properties": { "model_type": { "default": "hotfile", "description": "Model type discriminator", "enum": [ "hotfile", "HOTFILE" ], "title": "Model Type", "type": "string" }, "fname": { "description": "Name of the file to which the wave field is written", "format": "path", "title": "Fname", "type": "string" }, "format": { "anyOf": [ { "enum": [ "free", "unformatted" ], "type": "string" }, { "type": "null" } ], "default": null, "description": "Choose between free (SWAN ASCII) or unformatted (binary) format", "title": "Format" } }, "required": [ "fname" ], "title": "HOTFILE", "type": "object" }, "HOTMULTIPLE": { "additionalProperties": false, "description": "Hotstart multiple initial conditions.\n\n.. code-block:: text\n\n HOTSTART MULTIPLE fname='fname' FREE|UNFORMATTED\n\nInitial wave field is read from file; this file was generated in a previous SWAN\nrun by means of the HOTFILE command. If the previous run was nonstationary,\nthe time found on the file will be assumed to be the initial time of computation. It\ncan also be used for stationary computation as first guess. The computational grid\n(both in geographical space and in spectral space) must be identical to the one in\nthe run in which the initial wave field was computed\n\nInput will be read from multiple hotfiles obtained from a previous parallel MPI run.\nThe number of files equals the number of processors. Hence, for the present run the\nsame number of processors must be chosen.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.boundary import HOTMULTIPLE\n init = HOTMULTIPLE(fname=\"hotstart.swn\", format=\"free\")\n print(init.render())", "properties": { "model_type": { "default": "hotmultiple", "description": "Model type discriminator", "enum": [ "hotmultiple", "HOTMULTIPLE" ], "title": "Model Type", "type": "string" }, "fname": { "description": "Name of the file containing the initial wave field", "maxLength": 36, "title": "Fname", "type": "string" }, "format": { "default": "free", "description": "Format of the file containing the initial wave field. FREE: free format, UNFORMATTED: binary format", "enum": [ "free", "unformatted" ], "title": "Format", "type": "string" } }, "required": [ "fname" ], "title": "HOTMULTIPLE", "type": "object" }, "HOTSINGLE": { "additionalProperties": false, "description": "Hotstart single initial conditions.\n\n.. code-block:: text\n\n HOTSTART SINGLE fname='fname' FREE|UNFORMATTED\n\nInitial wave field is read from file; this file was generated in a previous SWAN\nrun by means of the HOTFILE command. If the previous run was nonstationary,\nthe time found on the file will be assumed to be the initial time of computation. It\ncan also be used for stationary computation as first guess. The computational grid\n(both in geographical space and in spectral space) must be identical to the one in\nthe run in which the initial wave field was computed\n\nInput will be read from a single (concatenated) hotfile. In the case of a previous\nparallel MPI run, the concatenated hotfile can be created from a set of multiple\nhotfiles using the program hcat.exe, see Implementation Manual.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.boundary import HOTSINGLE\n init = HOTSINGLE(fname=\"hotstart.swn\", format=\"free\")\n print(init.render())", "properties": { "model_type": { "default": "hotsingle", "description": "Model type discriminator", "enum": [ "hotsingle", "HOTSINGLE" ], "title": "Model Type", "type": "string" }, "fname": { "description": "Name of the file containing the initial wave field", "maxLength": 36, "title": "Fname", "type": "string" }, "format": { "default": "free", "description": "Format of the file containing the initial wave field. FREE: free format, UNFORMATTED: binary format", "enum": [ "free", "unformatted" ], "title": "Format", "type": "string" } }, "required": [ "fname" ], "title": "HOTSINGLE", "type": "object" }, "History": { "additionalProperties": false, "properties": { "begtc": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "20200101.000000", "description": "Start output time in 'yyyymmdd.hhmmss' format. Must fit within the simulation time, otherwise no output. Defaults to PROC%BEGTC if not specified.", "title": "Begtc" }, "deltc": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 3600, "description": "Time step for output in seconds. If smaller than simulation time step, the latter is used. Used for better 1D and 2D spectra analysis.", "title": "Deltc" }, "unitc": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "SEC", "description": "Unit of time for DELTC. Currently only supports 'SEC' for seconds.", "title": "Unitc" }, "endtc": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "20200201.000000", "description": "Stop time for output in 'yyyymmdd.hhmmss' format. Defaults to PROC%ENDC if not specified.", "title": "Endtc" }, "definetc": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -1, "description": "Time scoop (in seconds) for history files. If negative or unset, only one file is generated. For example, 86400 creates daily output files.", "title": "Definetc" }, "outstyle": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "NO", "description": "Output option. 'NO' for no output, 'NC' for netCDF, 'XFN' for XFN (default), 'SHP' for DARKO SHP output.", "title": "Outstyle" }, "multipleout": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Output file configuration. 0 for single netCDF file using MPI_reduce (default), 1 for separate netCDF files for each process.", "title": "Multipleout" }, "use_single_out": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Use single precision in the output of model variables. True by default.", "title": "Use Single Out" }, "paramwrite": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Write the physical parametrization and chosen numerical method in the netCDF file. True by default.", "title": "Paramwrite" }, "gridwrite": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Write the grid in the netCDF history file. True by default.", "title": "Gridwrite" }, "printmma": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Print minimum, maximum and average value of statistics during runtime. Requires MPI_REDUCE. False by default.", "title": "Printmma" }, "fileout": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "wwm_hist.nc", "description": "Name of the output file.", "title": "Fileout" }, "hs": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output significant wave height.", "title": "Hs" }, "tm01": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output mean period.", "title": "Tm01" }, "tm02": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output zero-crossing mean period.", "title": "Tm02" }, "klm": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output mean wave number.", "title": "Klm" }, "wlm": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output mean wave length.", "title": "Wlm" }, "etotc": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output variable ETOTC.", "title": "Etotc" }, "etots": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output variable ETOTS.", "title": "Etots" }, "dm": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output mean wave direction.", "title": "Dm" }, "dspr": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output directional spreading.", "title": "Dspr" }, "tppd": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output direction of the peak (check source code for details).", "title": "Tppd" }, "tpp": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output peak period.", "title": "Tpp" }, "cpp": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output peak phase velocity.", "title": "Cpp" }, "wnpp": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output peak wave number.", "title": "Wnpp" }, "cgpp": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output peak group speed.", "title": "Cgpp" }, "kpp": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output peak wave number.", "title": "Kpp" }, "lpp": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output peak wave length.", "title": "Lpp" }, "peakd": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output peak direction.", "title": "Peakd" }, "peakdspr": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output peak directional spreading.", "title": "Peakdspr" }, "dpeak": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output peak direction.", "title": "Dpeak" }, "ubot": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output bottom excursion velocity.", "title": "Ubot" }, "orbital": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output bottom orbital velocity.", "title": "Orbital" }, "botexper": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output bottom excursion.", "title": "Botexper" }, "tmbot": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output bottom period.", "title": "Tmbot" }, "ursell": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output Ursell number.", "title": "Ursell" }, "ufric": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output air friction velocity.", "title": "Ufric" }, "z0": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output air roughness length.", "title": "Z0" }, "alpha_ch": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output Charnock coefficient for air.", "title": "Alpha Ch" }, "windx": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output wind in X direction.", "title": "Windx" }, "windy": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output wind in Y direction.", "title": "Windy" }, "cd": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output drag coefficient.", "title": "Cd" }, "currtx": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output current in X direction.", "title": "Currtx" }, "currty": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output current in Y direction.", "title": "Currty" }, "watlev": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output water level.", "title": "Watlev" }, "watlevold": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output water level at previous time step.", "title": "Watlevold" }, "depdt": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output change of water level in time.", "title": "Depdt" }, "dep": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output depth.", "title": "Dep" }, "tauw": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output surface stress from the wave.", "title": "Tauw" }, "tauhf": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output high frequency surface stress.", "title": "Tauhf" }, "tautot": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output total surface stress.", "title": "Tautot" }, "stokessurfx": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output surface Stokes drift in X direction.", "title": "Stokessurfx" }, "stokessurfy": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output surface Stokes drift in Y direction.", "title": "Stokessurfy" }, "stokesbarox": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output barotropic Stokes drift in X direction.", "title": "Stokesbarox" }, "stokesbaroy": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output barotropic Stokes drift in Y direction.", "title": "Stokesbaroy" }, "rsxx": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output RSXX potential of LH.", "title": "Rsxx" }, "rsxy": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output RSXY potential of LH.", "title": "Rsxy" }, "rsyy": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output RSYY potential of LH.", "title": "Rsyy" }, "cfl1": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output CFL number 1.", "title": "Cfl1" }, "cfl2": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output CFL number 2.", "title": "Cfl2" }, "cfl3": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output CFL number 3.", "title": "Cfl3" } }, "title": "History", "type": "object" }, "Hotfile": { "additionalProperties": false, "properties": { "lhotf": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Write hotfile", "title": "Lhotf" }, "filehot_out": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "wwm_hot_out.nc", "description": "name of output", "title": "Filehot Out" }, "begtc": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "20200101.000000", "description": "Starting time of hotfile writing. With ihot!=0 in SCHISM,", "title": "Begtc" }, "deltc": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 2678400.0, "description": "time between hotfile writes", "title": "Deltc" }, "unitc": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "SEC", "description": "unit used above", "title": "Unitc" }, "endtc": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "20200201.000000", "description": "Ending time of hotfile writing (adjust with BEGTC)", "title": "Endtc" }, "lcyclehot": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Applies only to netcdf", "title": "Lcyclehot" }, "hotstyle_out": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "1: binary hotfile of data as output", "title": "Hotstyle Out" }, "multipleout": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "0: hotfile in a single file (binary or netcdf)", "title": "Multipleout" }, "filehot_in": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "wwm_hot_in.nc", "description": "(Full) hot file name for input (which can be copied from FILEHOT_OUT above)", "title": "Filehot In" }, "hotstyle_in": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "1: binary hotfile of data as input", "title": "Hotstyle In" }, "ihotpos_in": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "Position in hotfile (only for netcdf)", "title": "Ihotpos In" }, "multiplein": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "0: read hotfile from one single file", "title": "Multiplein" } }, "title": "Hotfile", "type": "object" }, "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" }, "IJ": { "additionalProperties": false, "description": "Points in grid indices coordinates.\n\n.. code-block:: text\n\n < [x] [y] >\n\nNote\n----\nCoordinates should be given in m when Cartesian coordinates are used or degrees\nwhen Spherical coordinates are used (see command `COORD`).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.base import IJ\n points = IJ(i=[0, 0, 5], j=[0, 19, 19])\n print(points.render())", "properties": { "model_type": { "default": "ij", "description": "Model type discriminator", "enum": [ "ij", "IJ" ], "title": "Model Type", "type": "string" }, "i": { "description": "i-index values", "items": { "type": "integer" }, "title": "I", "type": "array" }, "j": { "description": "j-index values", "items": { "type": "integer" }, "title": "J", "type": "array" } }, "required": [ "i", "j" ], "title": "IJ", "type": "object" }, "INITIAL": { "additionalProperties": false, "description": "Initial conditions.\n\n.. code-block:: text\n\n INITIAL -> DEFAULT|ZERO|PAR|HOTSTART\n\nThis command can be used to specify the initial values for a stationary (INITIAL\nHOTSTART only) or nonstationary computation. The initial values thus specified\noverride the default initialization (see Section 2.6.3). Note that it is possible\nto obtain an initial state by carrying out a previous stationary or nonstationary\ncomputation.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.boundary import INITIAL\n init = INITIAL()\n print(init.render())\n init = INITIAL(\n kind=dict(model_type=\"hotmultiple\", fname=\"hotstart.swn\", format=\"free\")\n )\n print(init.render())", "properties": { "model_type": { "default": "initial", "description": "Model type discriminator", "enum": [ "initial", "INITIAL" ], "title": "Model Type", "type": "string" }, "kind": { "anyOf": [ { "$ref": "#/$defs/DEFAULT" }, { "$ref": "#/$defs/ZERO" }, { "$ref": "#/$defs/PAR" }, { "$ref": "#/$defs/HOTSINGLE" }, { "$ref": "#/$defs/HOTMULTIPLE" } ], "description": "Initial condition type", "title": "Kind" } }, "title": "INITIAL", "type": "object" }, "INPGRIDS": { "additionalProperties": false, "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())", "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/rompy__swan__components__inpgrid__CURVILINEAR", "ICE": "#/$defs/ICE", "REGULAR": "#/$defs/rompy__swan__components__inpgrid__REGULAR", "UNSTRUCTURED": "#/$defs/rompy__swan__components__inpgrid__UNSTRUCTURED", "WIND": "#/$defs/WIND", "curvilinear": "#/$defs/rompy__swan__components__inpgrid__CURVILINEAR", "ice": "#/$defs/ICE", "regular": "#/$defs/rompy__swan__components__inpgrid__REGULAR", "unstructured": "#/$defs/rompy__swan__components__inpgrid__UNSTRUCTURED", "wind": "#/$defs/WIND" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/rompy__swan__components__inpgrid__REGULAR" }, { "$ref": "#/$defs/rompy__swan__components__inpgrid__CURVILINEAR" }, { "$ref": "#/$defs/rompy__swan__components__inpgrid__UNSTRUCTURED" }, { "$ref": "#/$defs/WIND" }, { "$ref": "#/$defs/ICE" } ] }, "minItems": 1, "title": "Inpgrids", "type": "array" } }, "required": [ "inpgrids" ], "title": "INPGRIDS", "type": "object" }, "ISOLINE": { "additionalProperties": false, "description": "Output locations along a depth contour.\n\n.. code-block:: text\n\n ISOLINE 'sname' 'rname' DEPTH|BOTTOM [dep]\n\nWith this optional command the user defines a set of output locations along one\ndepth or bottom level contour line (in combination with command RAY).\n\nNote\n----\nCannot be used in 1D-mode.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import ISOLINE\n loc = ISOLINE(sname=\"outcurve\", rname=\"outray\", dep_type=\"depth\", dep=12.0)\n print(loc.render())", "properties": { "model_type": { "default": "isoline", "description": "Model type discriminator", "enum": [ "isoline", "ISOLINE" ], "title": "Model Type", "type": "string" }, "sname": { "description": "Name of the set of output locations defined by this command", "maxLength": 8, "title": "Sname", "type": "string" }, "rname": { "description": "Name of the set of rays defined by this command", "maxLength": 8, "title": "Rname", "type": "string" }, "dep": { "description": "The depth (in m) of the depth contour line along which output locations are generated by SWAN.", "title": "Dep", "type": "number" }, "dep_type": { "anyOf": [ { "enum": [ "depth", "bottom" ], "type": "string" }, { "type": "null" } ], "default": null, "description": "Define if the depth contour is extracted from the DEPTH output (the stationary water depth) or from the BOTTOM output (the depth relative to the datum level with the water level ignored) (SWAN default: DEPTH)", "title": "Dep Type" } }, "required": [ "sname", "rname", "dep" ], "title": "ISOLINE", "type": "object" }, "Ice": { "additionalProperties": false, "properties": { "ice_in": { "anyOf": [ { "$ref": "#/$defs/Ice_in" }, { "type": "null" } ] } }, "title": "Ice", "type": "object" }, "Ice_in": { "additionalProperties": false, "properties": { "ice_tests": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Flag for box test. 0 disables, 1 enables.", "title": "Ice Tests" }, "ice_advection": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Flag to enable/disable ice advection. 1 enables, 0 disables.", "title": "Ice Advection" }, "ice_therm_on": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Flag to enable/disable ice thermodynamics. 1 enables, 0 disables.", "title": "Ice Therm On" }, "ievp": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "Selects the rheology model. 1 for EVP (Elastic-Viscous-Plastic), 2 for mEVP (modified EVP).", "title": "Ievp" }, "ice_cutoff": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.001, "description": "Cut-off thickness [m] or fraction for ice. No ice velocity if ice thickness is less than or equal to ice_cutoff.", "title": "Ice Cutoff" }, "evp_rheol_steps": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 200, "description": "Number of subcycling steps in EVP rheology model.", "title": "Evp Rheol Steps" }, "mevp_rheol_steps": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 200, "description": "Number of iterations in mEVP rheology model.", "title": "Mevp Rheol Steps" }, "ice_atmos_stress_form": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Form of atmospheric stress calculation. 0 for constant Cd, 1 for FESOM formulation.", "title": "Ice Atmos Stress Form" }, "cdwin0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.002, "description": "Constant drag coefficient for wind stress, used if ice_atmos_stress_form=0.", "title": "Cdwin0" }, "delta_min": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 2e-09, "description": "Limit for minimum divergence (1/s). Used in both VP and EVP rheology models.", "title": "Delta Min" }, "theta_io": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "Ice/ocean rotation angle in degrees. Usually 0 unless vertical grid is too coarse.", "title": "Theta Io" }, "mevp_coef": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Options for specifying 2 relax coefficients in mEVP. 0 for constant, 1 for variable coefficients.", "title": "Mevp Coef" }, "mevp_alpha1": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 200.0, "description": "Constant used in mEVP for constitutive equation if mevp_coef=0.", "title": "Mevp Alpha1" }, "mevp_alpha2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 200.0, "description": "Constant used in mEVP for momentum equation if mevp_coef=0.", "title": "Mevp Alpha2" }, "mevp_alpha3": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 200.0, "description": "Minimum value for variable coefficients if mevp_coef=1.", "title": "Mevp Alpha3" }, "mevp_alpha4": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.02, "description": "Coefficient used in variable coefficient calculation if mevp_coef=1.", "title": "Mevp Alpha4" }, "pstar": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 15000.0, "description": "Ice strength parameter [N/m^2].", "title": "Pstar" }, "ellipse": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 2.0, "description": "Ellipticity of the yield curve.", "title": "Ellipse" }, "c_pressure": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 20.0, "description": "Ice concentration parameter C [-].", "title": "C Pressure" }, "ncyc_fct": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Number of subcycling steps in transport for FCT scheme.", "title": "Ncyc Fct" }, "niter_fct": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 3, "description": "Number of iterations in higher-order solve for FCT scheme.", "title": "Niter Fct" }, "ice_gamma_fct": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.25, "description": "Smoothing parameter for FCT scheme. 1 for maximum positivity preserving.", "title": "Ice Gamma Fct" }, "depth_ice_fct": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 5.0, "description": "Cut-off depth (m) for non-FCT zone in ice_fct.gr3.", "title": "Depth Ice Fct" }, "h_ml0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Ocean mixed layer depth [m] for thermodynamics calculations.", "title": "H Ml0" }, "salt_ice": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 5.0, "description": "Salinity for ice [PSU] (must be non-negative).", "title": "Salt Ice" }, "salt_water": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 34.0, "description": "Salinity for water [PSU] (must be non-negative).", "title": "Salt Water" }, "lead_closing": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.5, "description": "Lead closing parameter [m]. Larger values slow down freezing-up but increase sea ice thickness.", "title": "Lead Closing" }, "saterm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.5, "description": "Semter constant. Smaller values could slow down melting.", "title": "Saterm" }, "albsn": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.85, "description": "Albedo for frozen snow.", "title": "Albsn" }, "albsnm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.75, "description": "Albedo for melting snow (must be less than or equal to albsn).", "title": "Albsnm" }, "albi": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.75, "description": "Albedo for frozen ice (must be less than or equal to albsn).", "title": "Albi" }, "albm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.66, "description": "Albedo for melting ice (must be less than or equal to albi).", "title": "Albm" } }, "title": "Ice_in", "type": "object" }, "Icm": { "additionalProperties": false, "properties": { "marco": { "anyOf": [ { "$ref": "#/$defs/rompy__schism__namelists__icm__Marco" }, { "type": "null" } ] }, "core": { "anyOf": [ { "$ref": "#/$defs/rompy__schism__namelists__icm__Core" }, { "type": "null" } ] }, "sfm": { "anyOf": [ { "$ref": "#/$defs/Sfm" }, { "type": "null" } ] }, "silica": { "anyOf": [ { "$ref": "#/$defs/Silica" }, { "type": "null" } ] }, "zb": { "anyOf": [ { "$ref": "#/$defs/Zb" }, { "type": "null" } ] }, "ph_icm": { "anyOf": [ { "$ref": "#/$defs/Ph_icm" }, { "type": "null" } ] }, "sav": { "anyOf": [ { "$ref": "#/$defs/Sav" }, { "type": "null" } ] }, "stem": { "anyOf": [ { "$ref": "#/$defs/Stem" }, { "type": "null" } ] }, "veg": { "anyOf": [ { "$ref": "#/$defs/Veg" }, { "type": "null" } ] }, "bag": { "anyOf": [ { "$ref": "#/$defs/Bag" }, { "type": "null" } ] }, "ero": { "anyOf": [ { "$ref": "#/$defs/Ero" }, { "type": "null" } ] }, "poc": { "anyOf": [ { "$ref": "#/$defs/Poc" }, { "type": "null" } ] } }, "title": "Icm", "type": "object" }, "Init": { "additionalProperties": false, "properties": { "lhotr": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Flag to indicate whether to use a hotstart file for initial conditions. If True, the model will read initial conditions from a file specified in the HOTFILE section.", "title": "Lhotr" }, "linid": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Flag to control the initial condition setup. If False, default initial conditions are used. If True, it allows for using external sources (e.g., WW3) as initial conditions.", "title": "Linid" }, "initstyle": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "Specifies the method for initializing wave conditions. 1 for Parametric Jonswap, 2 for reading from Global NETCDF files. Option 2 only works if IBOUNDFORMAT is set to 3.", "title": "Initstyle" } }, "title": "Init", "type": "object" }, "JANSSEN": { "additionalProperties": false, "description": "Janssen source terms subcomponent.\n\n.. code-block:: text\n\n JANSSEN [cds1] [delta] (AGROW [a])\n\nReferences\n----------\nJanssen, P.A., 1989. Wave-induced stress and the drag of air flow over sea waves.\nJournal of Physical Oceanography, 19(6), pp.745-754.\n\nJanssen, P.A.E.M., Lionello, P. and Zambresky, L., 1989. On the interaction of wind\nand waves. Philosophical transactions of the royal society of London. Series A,\nMathematical and Physical Sciences, 329(1604), pp.289-301.\n\nJanssen, P.A., 1991. Quasi-linear theory of wind-wave generation applied to wave\nforecasting. Journal of physical oceanography, 21(11), pp.1631-1642.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import JANSSEN\n janssen = JANSSEN()\n print(janssen.render())\n janssen = JANSSEN(cds1=4.5, delta=0.5, agrow=True)\n print(janssen.render())", "properties": { "model_type": { "default": "janssen", "description": "Model type discriminator", "enum": [ "janssen", "JANSSEN" ], "title": "Model Type", "type": "string" }, "wind_drag": { "default": "wu", "description": "Indicates the wind drag formulation", "enum": [ "wu", "fit" ], "title": "Wind Drag", "type": "string" }, "agrow": { "default": false, "description": "Activate the Cavaleri and Malanotte (1981) wave growth term", "title": "Agrow", "type": "boolean" }, "a": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Proportionality coefficient when activating the Cavaleri and Malanotte (1981) wave growth term (SWAN default: 0.0015)", "title": "A" }, "cds1": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Coefficient for determining the rate of whitecapping dissipation ($Cds / s^4_{PM}$) (SWAN default: 4.5)", "title": "Cds1" }, "delta": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Coefficient which determines the dependency of the whitecapping on wave number (mix with Komen et al. formulation) (SWAN default: 0.5)", "title": "Delta" } }, "title": "JANSSEN", "type": "object" }, "JONSWAP": { "additionalProperties": false, "description": "Jonswap spectral shape.\n\n.. code-block:: text\n\n JONSWAP [gamma]\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.spectrum import JONSWAP\n shape = JONSWAP(gamma=3.3)\n print(shape.render())", "properties": { "model_type": { "default": "jonswap", "description": "Model type discriminator", "enum": [ "jonswap", "JONSWAP" ], "title": "Model Type", "type": "string" }, "gamma": { "default": 3.3, "description": "Peak enhancement parameter of the JONSWAP spectrum.", "exclusiveMinimum": 0.0, "title": "Gamma", "type": "number" } }, "title": "JONSWAP", "type": "object" }, "KOMEN": { "additionalProperties": false, "description": "Komen source terms subcomponent.\n\n.. code-block:: text\n\n KOMEN [cds2] [stpm] (AGROW [a])\n\nReferences\n----------\nKomen, G.J., Hasselmann, S. and Hasselmann, K., 1984. On the existence of a fully\ndeveloped wind-sea spectrum. Journal of physical oceanography, 14(8), pp.1271-1285.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import KOMEN\n komen = KOMEN()\n print(komen.render())\n komen = KOMEN(cds2=2.36e-5, stpm=3.02e-3, agrow=True, a=0.0015)\n print(komen.render())", "properties": { "model_type": { "default": "komen", "description": "Model type discriminator", "enum": [ "komen", "KOMEN" ], "title": "Model Type", "type": "string" }, "wind_drag": { "default": "wu", "description": "Indicates the wind drag formulation", "enum": [ "wu", "fit" ], "title": "Wind Drag", "type": "string" }, "agrow": { "default": false, "description": "Activate the Cavaleri and Malanotte (1981) wave growth term", "title": "Agrow", "type": "boolean" }, "a": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Proportionality coefficient when activating the Cavaleri and Malanotte (1981) wave growth term (SWAN default: 0.0015)", "title": "A" }, "cds2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Coefficient for determining the rate of whitecapping dissipation (`Cds`) (SWAN default: 2.36e-5)", "title": "Cds2" }, "stpm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Value of the wave steepness for a Pierson-Moskowitz spectrum (`s^2_PM`) (SWAN default: 3.02e-3)", "title": "Stpm" } }, "title": "KOMEN", "type": "object" }, "LIMITER": { "additionalProperties": false, "description": "Physics limiter.\n\n.. code-block:: text\n\n LIMITER [ursell] [qb]\n\nWith this command the user can de-activate permanently the quadruplets when\nthe actual Ursell number exceeds `ursell`. Moreover, as soon as the actual\nfraction of breaking waves exceeds `qb` then the action limiter will not be\nused in case of decreasing action density.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import LIMITER\n limiter = LIMITER()\n print(limiter.render())\n limiter = LIMITER(ursell=10.0, qb=1.0)\n print(limiter.render())", "properties": { "model_type": { "default": "limiter", "description": "Model type discriminator", "enum": [ "limiter", "LIMITER" ], "title": "Model Type", "type": "string" }, "ursell": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The upper threshold for Ursell number (SWAN default: 10.0)", "title": "Ursell" }, "qb": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The threshold for fraction of breaking waves (SWAN default: 1.0)", "title": "Qb" } }, "title": "LIMITER", "type": "object" }, "LINE": { "additionalProperties": false, "description": "Line of points to define obstacle location.\n\n.. code-block:: text\n\n LINE < [xp] [yp] >\n\nWith this option the user indicates that the fixed transmission `trcoef` and\nreflection `reflc` coefficients are freeboard dependent. The freeboard dependency\nhas no effect on the transmission coefficient as computed using the DAM option.\n\nNotes\n-----\nPoints coordinates should be provided in m If Cartesian coordinates are used or in\ndegrees if spherical coordinates are used (see command `COORD`). At least two\ncorner points must be provided.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import LINE\n line = LINE(xp=[174.1, 174.2, 174.3], yp=[-39.1, -39.1, -39.1])\n print(line.render())", "properties": { "model_type": { "default": "line", "description": "Model type discriminator", "enum": [ "line", "LINE" ], "title": "Model Type", "type": "string" }, "xp": { "description": "The x-coordinates of the points defining the line", "items": { "type": "number" }, "minItems": 2, "title": "Xp", "type": "array" }, "yp": { "description": "The y-coordinates of the points defining the line", "items": { "type": "number" }, "minItems": 2, "title": "Yp", "type": "array" } }, "required": [ "xp", "yp" ], "title": "LINE", "type": "object" }, "LOCKUP": { "additionalProperties": false, "description": "Lockup group component.\n\n.. code-block:: text\n\n COMPUTE ...\n HOTFILE ...\n COMPUTE ...\n HOTFILE ...\n ...\n STOP\n\nThis is a group component to specify SWAN \"Lockup\" commands including multiple\n`COMPUTE` commands that may or may not be interleaved with `HOTFILE` commands,\nand a final `STOP` command.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.group import LOCKUP\n lockup = LOCKUP(\n compute=dict(\n model_type=\"stat\",\n times=dict(\n model_type=\"nonstationary\",\n tbeg=\"1990-01-01T00:00:00\",\n tend=\"1990-01-01T03:00:00\",\n delt=\"PT1H\",\n dfmt=\"hr\",\n ),\n hotfile=dict(fname=\"hotfile\"),\n hottimes=[-1],\n ),\n )\n print(lockup.render())", "properties": { "model_type": { "default": "lockup", "description": "Model type discriminator", "enum": [ "lockup", "LOCKUP" ], "title": "Model Type", "type": "string" }, "compute": { "description": "Compute components", "discriminator": { "mapping": { "NONSTAT": "#/$defs/COMPUTE_NONSTAT", "STAT": "#/$defs/COMPUTE_STAT", "nonstat": "#/$defs/COMPUTE_NONSTAT", "stat": "#/$defs/COMPUTE_STAT" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/COMPUTE_STAT" }, { "$ref": "#/$defs/COMPUTE_NONSTAT" } ], "title": "Compute" } }, "required": [ "compute" ], "title": "LOCKUP", "type": "object" }, "MODE": { "additionalProperties": false, "description": "SWAN Mode.\n\n.. code-block:: text\n\n MODE ->STATIONARY|NONSTATIONARY ->TWODIMENSIONAL|ONEDIMENSIONAL\n\nWith this optional command the user indicates that the run will be either\nstationary or nonstationary and one-dimensional (1D-mode) or two-dimensional\n(2D-mode). Nonstationary means either (see command COMPUTE):\n\n* (a) one nonstationary computations or\n* (b) a sequence of stationary computations or\n* (c) a mix of (a) and (b)\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.startup import MODE\n mode = MODE()\n print(mode.render())\n mode = MODE(kind=\"nonstationary\", dim=\"twodimensional\")\n print(mode.render())", "properties": { "model_type": { "default": "mode", "description": "Model type discriminator.", "enum": [ "mode", "MODE" ], "title": "Model Type", "type": "string" }, "kind": { "default": "stationary", "description": "Indicates if run will be stationary or nonstationary", "enum": [ "stationary", "nonstationary" ], "title": "Kind", "type": "string" }, "dim": { "default": "twodimensional", "description": "Indicates that the run will be either one-dimensional (1D-mode) or two-dimensional (2D-mode)", "enum": [ "onedimensional", "twodimensional" ], "title": "Dim", "type": "string" } }, "title": "MODE", "type": "object" }, "MUD": { "additionalProperties": false, "description": "Mud dumping.\n\n.. code-block:: text\n\n MUD [layer] [rhom] [viscm]\n\nWith this command the user can activate wave damping due to mud based on Ng (2000).\nIf this command or the commands INPGRID MUDLAY and READINP MUDLAY are not used,\nSWAN will not account for muddy bottom effects.\n\nReferences\n----------\nNg, C., 2000, Water waves over a muddy bed: A two layer Stokes' boundary layer\nmodel, Coastal Eng., 40, 221-242.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import MUD\n mud = MUD()\n print(mud.render())\n mud = MUD(\n layer=2.0,\n rhom=1300,\n viscm=0.0076,\n )\n print(mud.render())\n\nTODO: Validate `layer` must be prescribed if `INPGRID MUDLAY` isn't used.", "properties": { "model_type": { "default": "mud", "description": "Model type discriminator", "enum": [ "mud", "MUD" ], "title": "Model Type", "type": "string" }, "layer": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The thickness of the mud layer (in m). Note that `layer` is allowed to vary over the computational region to account for the zonation of muddy bottom. In that case use the commands `INPGRID MUDLAY` and `READINP MUDLAY` to define and read the layer thickness of mud. The value of `layer` in this command is then not required (it will be ignored)", "title": "Layer" }, "rhom": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The density of the mud layer (in kg/m3) (SWAN default: 1300)", "title": "Rhom" }, "viscm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The kinematic viscosity of the mud layer (in m2/s) (SWAN default: 0.0076)", "title": "Viscm" } }, "title": "MUD", "type": "object" }, "Mice": { "additionalProperties": false, "properties": { "mice_in": { "anyOf": [ { "$ref": "#/$defs/Mice_in" }, { "type": "null" } ] } }, "title": "Mice", "type": "object" }, "Mice_in": { "additionalProperties": false, "properties": { "ice_tests": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Flag for box test. 0 indicates no box test.", "title": "Ice Tests" }, "ihot_mice": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Start mode for ice model. 0: cold start, 1: restart, 2: hotstart from HYCOM.", "title": "Ihot Mice" }, "ice_advection": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 6, "description": "Ice advection scheme. 3: upwind, 4: center-difference, 5: tvd, 6: tvd-up, 7: TVD_Casulli.", "title": "Ice Advection" }, "ice_therm_on": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Flag for ice thermodynamics. 1: on, 0: off.", "title": "Ice Therm On" }, "ievp": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "Elastic-Viscous-Plastic (EVP) model selection. 1: EVP, 2: modified EVP (mEVP).", "title": "Ievp" }, "ice_cutoff": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.001, "description": "Cut-off thickness [m] or fraction for ice. No ice velocity if ice thickness <= ice_cutoff.", "title": "Ice Cutoff" }, "evp_rheol_steps": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 500, "description": "Number of subcycling steps in EVP.", "title": "Evp Rheol Steps" }, "mevp_rheol_steps": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 500, "description": "Number of iterations in modified EVP (mEVP).", "title": "Mevp Rheol Steps" }, "delta_min": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1e-11, "description": "Limit for minimum divergence (1/s). Used in both VP and EVP.", "title": "Delta Min" }, "theta_io": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "Ice/ocean rotation angle in degrees.", "title": "Theta Io" }, "mevp_alpha1": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 200.0, "description": "Constant used in mEVP for constitutive equation.", "title": "Mevp Alpha1" }, "mevp_alpha2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 200.0, "description": "Constant used in mEVP for momentum equation.", "title": "Mevp Alpha2" }, "pstar": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 27500.0, "description": "Ice strength parameter [N/m^2].", "title": "Pstar" }, "ellipse": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 2.0, "description": "Ellipticity parameter for ice rheology.", "title": "Ellipse" }, "c_pressure": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 20.0, "description": "Ice pressure coefficient [-].", "title": "C Pressure" }, "niter_fct": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 3, "description": "Number of iterations in higher-order solve for FCT (Flux-Corrected Transport).", "title": "Niter Fct" }, "ice_gamma_fct": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.25, "description": "Smoothing parameter for FCT.", "title": "Ice Gamma Fct" }, "h_ml0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Initial ocean mixed layer depth [m].", "title": "H Ml0" }, "salt_ice": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 5.0, "description": "Salinity for ice [PSU].", "title": "Salt Ice" }, "salt_water": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 34.0, "description": "Salinity for water [PSU].", "title": "Salt Water" } }, "title": "Mice_in", "type": "object" }, "Misc": { "additionalProperties": false, "properties": { "iws": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Flag to enable or disable diatom sinking velocity dependence on NO3 concentration", "title": "Iws" }, "no3c": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 2.0, "description": "Critical NO3 concentration (mmol/m3) for diatom sinking velocity calculation", "title": "No3C" }, "ws1": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 2.5, "description": "Diatom sinking velocity (m/day) when NO3 concentration is below no3c", "title": "Ws1" }, "ws2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 2.0, "description": "Diatom sinking velocity (m/day) when NO3 concentration is above no3c", "title": "Ws2" }, "iclam": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Flag to enable or disable clam grazing model", "title": "Iclam" }, "deltaz": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Vertical grid size (meter) for clam grazing model", "title": "Deltaz" }, "kcex": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.002, "description": "Clam excretion rate (day^-1)", "title": "Kcex" }, "nperclam": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.39032, "description": "Nitrogen content per clam (mmol[N])", "title": "Nperclam" }, "wclam": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.00545, "description": "Clam weight (g)", "title": "Wclam" }, "fclam": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 40, "description": "Clam filtration rate (L.g[AFDW]^-1.day^-1)", "title": "Fclam" }, "nclam0": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2000, "description": "Initial number of clams", "title": "Nclam0" }, "fs2": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.1, 0.1, 0.8 ], "description": "Partitioning coefficients for S2 from water column into sediment (3 values)", "title": "Fs2" }, "rks2": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.004, 0.0001, 0.0 ], "description": "Changing rates of remineralization for sediment S2 (3 values, day^-1)", "title": "Rks2" }, "mks2": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.1, 0.01, 0.0 ], "description": "Maximum remineralization rates for sediment S2 (3 values, day^-1)", "title": "Mks2" }, "fdn": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.15, 0.1, 0.75 ], "description": "Partitioning coefficients for DN from water column into sediment (3 values)", "title": "Fdn" }, "rkdn": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.004, 0.0001, 0.0 ], "description": "Changing rates of remineralization for sediment DN (3 values, day^-1)", "title": "Rkdn" }, "mkdn": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.1, 0.01, 0.0 ], "description": "Maximum remineralization rates for sediment DN (3 values, day^-1)", "title": "Mkdn" }, "fdsi": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.3, 0.3, 0.4 ], "description": "Partitioning coefficients for DSi from water column into sediment (3 values)", "title": "Fdsi" }, "rkdsi": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.004, 0.0001, 0.0 ], "description": "Changing rates of remineralization for sediment DSi (3 values, day^-1)", "title": "Rkdsi" }, "mkdsi": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.1, 0.01, 0.0 ], "description": "Maximum remineralization rates for sediment DSi (3 values, day^-1)", "title": "Mkdsi" } }, "title": "Misc", "type": "object" }, "NEGATINP": { "additionalProperties": false, "description": "Negative wind input.\n\n.. code-block:: text\n\n NEGATINP [rdcoef]\n\nWith this optional command the user activates negative wind input. **This is\nintended only for use with non-breaking swell dissipation SSWELL ZIEGER**.\nParameter `rdcoef` is a fraction between 0 and 1, representing the strength of\nnegative wind input. As an example, with [rdcoef]=0.04, for a spectral bin that is\nopposed to the wind direction, the wind input factor W(k, \u03b8) is negative, and its\nmagnitude is 4% of the corresponding value of the spectral bin that is in the\nopposite direction (i.e. in the wind direction). See Zieger et al. (2015) eq. 11,\nwhere a0 is their notation for [rdcoef]. Default [rdcoef]=0.0 and `rdcoef=0.04` is\nrecommended, though as implied by Zieger et al. (2015), this value is not\nwell-established, so the user is encouraged to experiment with other values.\n\nReferences\n----------\nZieger, S., Babanin, A.V., Rogers, W.E. and Young, I.R., 2015. Observation-based\nsource terms in the third-generation wave model WAVEWATCH. Ocean Modelling, 96,\npp.2-25.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import NEGATINP\n negatinp = NEGATINP()\n print(negatinp.render())\n negatinp = NEGATINP(rdcoef=0.04)\n print(negatinp.render())", "properties": { "model_type": { "default": "negatinp", "description": "Model type discriminator", "enum": [ "negatinp", "NEGATINP" ], "title": "Model Type", "type": "string" }, "rdcoef": { "anyOf": [ { "maximum": 1.0, "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Coefficient representing the strength of negative wind input", "title": "Rdcoef" } }, "title": "NEGATINP", "type": "object" }, "NESTOUT": { "additionalProperties": false, "description": "Write to 2D boundary spectra.\n\n.. code-block:: text\n\n NESTOUT 'sname' 'fname' (OUTPUT [tbegnst] [deltnst] ->SEC|MIN|HR|DAY)\n\nWrite to data file two-dimensional action density spectra (relative frequency)\nalong the boundary of a nested grid (see command NGRID) to be used in a subsequent\nSWAN run.\n\nNote\n----\nCannot be used in 1D-mode.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import NESTOUT\n out = NESTOUT(\n sname=\"outnest\",\n fname=\"./nestout.swn\",\n times=dict(tbeg=\"2012-01-01T00:00:00\", delt=\"PT30M\", dfmt=\"min\"),\n )\n print(out.render())", "properties": { "model_type": { "default": "nestout", "description": "Model type discriminator", "enum": [ "nestout", "NESTOUT" ], "title": "Model Type", "type": "string" }, "sname": { "description": "Name of the set of output locations in which the output is to be written", "maxLength": 8, "title": "Sname", "type": "string" }, "fname": { "description": "Name of the data file where the output is written to The file format is defined by the file extension, use `.mat` for MATLAB binary (single precision) or `.nc` for netCDF format. If any other extension is used the ASCII format is assumed", "title": "Fname", "type": "string" }, "times": { "anyOf": [ { "$ref": "#/$defs/TimeRangeOpen" }, { "type": "null" } ], "default": null, "description": "Time specification if the user requires output at various times. If this option is not specified data will be written for the last time step of the computation" } }, "required": [ "sname", "fname" ], "title": "NESTOUT", "type": "object" }, "NGRID": { "additionalProperties": false, "description": "Output locations for a nested grid.\n\n.. code-block:: text\n\n NGRID 'sname' [xpn] [ypn] [alpn] [xlenn] [ylenn] [mxn] [myn]\n\nIf the user wishes to carry out nested SWAN runs, a separate coarse-grid SWAN run\nis required. With this optional command `NGRID`, the user defines in the present\ncoarse-grid run, a set of output locations along the boundary of the subsequent\nnested computational grid. The set of output locations thus defined is of the type\nNGRID.\n\nNote\n----\nCommand `NESTOUT` is required after this command `NGRID` to generate some data for\nthe (subsequent) nested run.\n\nNote\n----\nCannot be used in 1D-mode.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import NGRID\n loc = NGRID(\n sname=\"outnest\",\n grid=dict(xp=173, yp=-40, xlen=2, ylen=2, mx=19, my=19),\n )\n print(loc.render())", "properties": { "model_type": { "default": "ngrid", "description": "Model type discriminator", "enum": [ "ngrid", "NGRID" ], "title": "Model Type", "type": "string" }, "sname": { "description": "Name of the set of output locations defined by this command", "maxLength": 8, "title": "Sname", "type": "string" }, "grid": { "$ref": "#/$defs/GRIDREGULAR", "description": "NGRID grid definition" } }, "required": [ "sname", "grid" ], "title": "NGRID", "type": "object" }, "NGRID_UNSTRUCTURED": { "additionalProperties": false, "description": "Output locations for a nested grid.\n\n.. code-block:: text\n\n NGRID 'sname' UNSTRUCTURED ->TRIANGLE|EASYMESH 'fname'\n\nIf the user wishes to carry out nested SWAN runs, a separate coarse-grid SWAN run\nis required. With this optional command `NGRID`, the user defines in the present\ncoarse-grid run, a set of output locations along the boundary of the subsequent\nnested computational grid. The set of output locations thus defined is of the type\nNGRID.\n\nWith this option the user indicates that the subsequent nested grid is unstructured\nOnly grids generated by Triangle and Easymesh are supported by SWAN.\n\nNote\n----\nCommand `NESTOUT` is required after this command `NGRID` to generate some data for\nthe (subsequent) nested run.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import NGRID_UNSTRUCTURED\n loc = NGRID_UNSTRUCTURED(sname=\"outnest\", kind=\"triangle\", fname=\"ngrid.txt\")\n print(loc.render())", "properties": { "model_type": { "default": "ngrid_unstructured", "description": "Model type discriminator", "enum": [ "ngrid_unstructured", "NGRID_UNSTRUCTURED" ], "title": "Model Type", "type": "string" }, "sname": { "description": "Name of the set of output locations defined by this command", "maxLength": 8, "title": "Sname", "type": "string" }, "kind": { "anyOf": [ { "enum": [ "triangle", "easymesh" ], "type": "string" }, { "type": "null" } ], "default": "triangle", "description": "Indicate if nested grid is generated by Triangle or Easymesh. The base name of the grid specified in the `fname` parameter is used internally by SWAN to define the `.node` and `.ele` files in case of the former or the `.n` and `.e` files in case of the latter.", "title": "Kind" }, "fname": { "description": "Basename of the required files, i.e. without extension", "maxLength": 32, "title": "Fname", "type": "string" } }, "required": [ "sname", "fname" ], "title": "NGRID_UNSTRUCTURED", "type": "object" }, "NML": { "additionalProperties": false, "properties": { "param": { "anyOf": [ { "$ref": "#/$defs/Param" }, { "type": "null" } ], "default": null, "description": "Model paramaters" }, "ice": { "anyOf": [ { "$ref": "#/$defs/Ice" }, { "type": "null" } ], "default": null, "description": "Ice model parameters" }, "icm": { "anyOf": [ { "$ref": "#/$defs/Icm" }, { "type": "null" } ], "default": null, "description": "Ice model parameters" }, "mice": { "anyOf": [ { "$ref": "#/$defs/Mice" }, { "type": "null" } ], "default": null, "description": "Ice model parameters" }, "sediment": { "anyOf": [ { "$ref": "#/$defs/Sediment" }, { "type": "null" } ], "default": null, "description": "Sediment model parameters" }, "cosine": { "anyOf": [ { "$ref": "#/$defs/Cosine" }, { "type": "null" } ], "default": null, "description": "Sediment model parameters" }, "wwminput": { "anyOf": [ { "$ref": "#/$defs/Wwminput" }, { "type": "null" } ], "default": null, "description": "Wave model input parameters" } }, "title": "NML", "type": "object" }, "NONSTAT": { "additionalProperties": false, "description": "Computation parameters in nonstationary computation.", "properties": { "model_type": { "default": "nonstat", "description": "Model type discriminator", "enum": [ "nonstat", "NONSTAT" ], "title": "Model Type", "type": "string" }, "mxitns": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "The maximum number of iterations per time step for nonstationary computations. The computation moves to the next time step when this number is exceeded (SWAN default: `mxitns = 1`", "title": "Mxitns" } }, "title": "NONSTAT", "type": "object" }, "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" }, "NUMERIC": { "additionalProperties": false, "description": "Numerical properties.\n\n.. code-block:: text\n\n NUMeric ( STOPC [dabs] [drel] [curvat] [npnts] ->STAT|NONSTAT [limiter] ) &\n ( DIRimpl [cdd] ) ( SIGIMpl [css] [eps2] [outp] [niter] ) &\n ( CTheta [cfl] ) ( CSigma [cfl] ) ( SETUP [eps2] [outp] [niter] )\n\nExamples\n--------\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.numerics import NUMERIC\n numeric = NUMERIC()\n print(numeric.render())\n numeric = NUMERIC(\n stop=dict(\n model_type=\"stopc\",\n dabs=0.05,\n drel=0.01,\n curvat=0.05,\n npnts=99.5,\n ),\n dirimpl=dict(cdd=0.5),\n sigimpl=dict(css=0.5, eps2=1e-4, outp=0, niter=20),\n ctheta=dict(cfl=0.9),\n csigma=dict(cfl=0.9),\n setup=dict(eps2=1e-4, outp=0, niter=20),\n )\n print(numeric.render())", "properties": { "model_type": { "default": "numeric", "description": "Model type discriminator", "enum": [ "numeric", "NUMERIC" ], "title": "Model Type", "type": "string" }, "stop": { "anyOf": [ { "discriminator": { "mapping": { "ACCUR": "#/$defs/ACCUR", "STOPC": "#/$defs/STOPC", "accur": "#/$defs/ACCUR", "stopc": "#/$defs/STOPC" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/STOPC" }, { "$ref": "#/$defs/ACCUR" } ] }, { "type": "null" } ], "default": null, "description": "Iteration termination criteria", "title": "Stop" }, "dirimpl": { "anyOf": [ { "$ref": "#/$defs/DIRIMPL" }, { "type": "null" } ], "default": null, "description": "Numerical scheme for refraction" }, "sigimpl": { "anyOf": [ { "$ref": "#/$defs/SIGIMPL" }, { "type": "null" } ], "default": null, "description": "Frequency shifting accuracy" }, "ctheta": { "anyOf": [ { "$ref": "#/$defs/CTHETA" }, { "type": "null" } ], "default": null, "description": "Prevents excessive directional turning" }, "csigma": { "anyOf": [ { "$ref": "#/$defs/CSIGMA" }, { "type": "null" } ], "default": null, "description": "Prevents excessive frequency shifting" }, "setup": { "anyOf": [ { "$ref": "#/$defs/rompy__swan__subcomponents__numerics__SETUP" }, { "type": "null" } ], "default": null, "description": "Stop criteria in the computation of wave setup" } }, "title": "NUMERIC", "type": "object" }, "Nesting": { "additionalProperties": false, "description": "Empty class to fill empty nesting namelist", "properties": {}, "title": "Nesting", "type": "object" }, "Nums": { "additionalProperties": false, "properties": { "icomp": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 3, "description": "Controls the integration scheme for splitting and advection. 0: All explicit. 1: Implicit geographical advection. 2: Implicit advection and semi-implicit source terms. 3: Fully implicit, no splitting.", "title": "Icomp" }, "amethod": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 7, "description": "Controls the advection method in geographical space. Values 0-7 represent different schemes, including explicit, implicit, and PETSc-based methods.", "title": "Amethod" }, "smethod": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 6, "description": "Controls the integration method for source terms. 0: No source terms. 1-6: Various splitting and integration schemes.", "title": "Smethod" }, "dmethod": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "Controls the numerical method in directional space. 0: No advection. 1-4: Various schemes including Crank-Nicholson, Ultimate Quickest, RK5-WENO, and Explicit FVM Upwind.", "title": "Dmethod" }, "rtheta": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.5, "description": "Weighing factor for DMETHOD = 1. Only useful for Crank Nicholson integration with CFL <= 2.", "title": "Rtheta" }, "litersplit": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Splitting method. True: double Strang split. False: simple split (more efficient).", "title": "Litersplit" }, "lfilterth": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Use a CFL filter to limit the advection velocity in directional space. Similar to WW3, but mostly unused as WWMII is always stable.", "title": "Lfilterth" }, "maxcflth": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "Maximum CFL number in Theta space. Used only if LFILTERTH=True.", "title": "Maxcflth" }, "fmethod": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Controls the numerical method in frequency space. 0: No advection. 1: Ultimate Quickest as in WW3 (best).", "title": "Fmethod" }, "lfiltersig": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Limit the advection velocity in frequency space. Usually False.", "title": "Lfiltersig" }, "maxcflsig": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "Maximum CFL number in frequency space. Used only if LFILTERSIG=True.", "title": "Maxcflsig" }, "llimt": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Switch on/off Action limiter. Must mostly be turned on.", "title": "Llimt" }, "melim": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Formulation for the action limiter. 1: WAM group (1988). 2: Hersbach Janssen (1999). 3: For Cycle 4 formulation.", "title": "Melim" }, "limfak": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Proportionality coefficient for the action limiter. MAX_DAC_DT = Limfak * Limiter.", "title": "Limfak" }, "ldifr": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Use phase decoupled diffraction approximation. Usually True; if crash, use False.", "title": "Ldifr" }, "idiffr": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Extended WAE accounting for higher order effects. 1: Holthuijsen et al. 2: Liau et al. 3: Toledo et al.", "title": "Idiffr" }, "lconv": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Estimate convergence criteria and write to disk (quasi-steady - qstea.out).", "title": "Lconv" }, "lcfl": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Write out CFL numbers. Use False to save time.", "title": "Lcfl" }, "nqsiter": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Number of quasi-steady (Q-S) sub-divisions within each WWM time step.", "title": "Nqsiter" }, "qsconv1": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.98, "description": "Fraction of grid points that must fulfill absolute wave height criteria EPSH1.", "title": "Qsconv1" }, "qsconv2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.98, "description": "Fraction of grid points that must fulfill relative wave height criteria EPSH2.", "title": "Qsconv2" }, "qsconv3": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.98, "description": "Fraction of grid points that must fulfill sum. rel. wave action criteria EPSH3.", "title": "Qsconv3" }, "qsconv4": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.98, "description": "Fraction of grid points that must fulfill rel. avg. wave steepness criteria EPSH4.", "title": "Qsconv4" }, "qsconv5": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.98, "description": "Fraction of grid points that must fulfill avg. rel. wave period criteria EPSH5.", "title": "Qsconv5" }, "lexpimp": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Use implicit schemes for frequencies lower than FREQEXP. Used only if ICOMP=0.", "title": "Lexpimp" }, "freqexp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Minimum frequency for explicit schemes. Only used if LEXPIMP=True and ICOMP=0.", "title": "Freqexp" }, "epsh1": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.01, "description": "Convergence criteria for relative wave height.", "title": "Epsh1" }, "epsh2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.01, "description": "Convergence criteria for absolute wave height.", "title": "Epsh2" }, "epsh3": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.01, "description": "Convergence criteria for the relative sum of wave action.", "title": "Epsh3" }, "epsh4": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.01, "description": "Convergence criteria for the relative average wave steepness.", "title": "Epsh4" }, "epsh5": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.01, "description": "Convergence criteria for the relative average wave period.", "title": "Epsh5" }, "lvector": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Use optimized propagation routines for large high performance computers. Try False first.", "title": "Lvector" }, "ivector": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "Used if LVECTOR=True. Different flavors of communications and propagation styles.", "title": "Ivector" }, "ladvtest": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "For testing the advection schemes.", "title": "Ladvtest" }, "lchkconv": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Needs to be set to True for quasi-steady mode to compute and check the QSCONVi criteria.", "title": "Lchkconv" }, "dtmin_dyn": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "Minimum time step (seconds) for dynamic integration. Controls the smallest time step for triads in SMETHOD.", "title": "Dtmin Dyn" }, "ndyniter": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 100, "description": "Maximum iterations for dynamic scheme before limiter is applied in the last step.", "title": "Ndyniter" }, "dtmin_sin": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "Minimum time step for the full fractional step method, where each source term is integrated with its own fractional step.", "title": "Dtmin Sin" }, "dtmin_snl4": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "Minimum time step for SNL4 source term in fractional step method.", "title": "Dtmin Snl4" }, "dtmin_sds": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "Minimum time step for SDS source term in fractional step method.", "title": "Dtmin Sds" }, "dtmin_snl3": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "Minimum time step for SNL3 source term in fractional step method.", "title": "Dtmin Snl3" }, "dtmin_sbr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Minimum time step for SBR source term in fractional step method.", "title": "Dtmin Sbr" }, "dtmin_sbf": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "Minimum time step for SBF source term in fractional step method.", "title": "Dtmin Sbf" }, "ndyniter_sin": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 10, "description": "Maximum iterations for SIN source term in fractional step approach.", "title": "Ndyniter Sin" }, "ndyniter_snl4": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 10, "description": "Maximum iterations for SNL4 source term in fractional step approach.", "title": "Ndyniter Snl4" }, "ndyniter_sds": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 10, "description": "Maximum iterations for SDS source term in fractional step approach.", "title": "Ndyniter Sds" }, "ndyniter_sbr": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 10, "description": "Maximum iterations for SBR source term in fractional step approach.", "title": "Ndyniter Sbr" }, "ndyniter_snl3": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 10, "description": "Maximum iterations for SNL3 source term in fractional step approach.", "title": "Ndyniter Snl3" }, "ndyniter_sbf": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 10, "description": "Maximum iterations for SBF source term in fractional step approach.", "title": "Ndyniter Sbf" }, "lsoubound": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Do source terms on boundary. Useful for harbor studies and flume experiments.", "title": "Lsoubound" }, "wae_solverthr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1e-06, "description": "Threshold for the Block-Jacobi or Block-Gauss-Seider solver.", "title": "Wae Solverthr" }, "maxiter": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1000, "description": "Maximum number of iterations for solver.", "title": "Maxiter" }, "pmin": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "Maximum percentage of non-converged grid points allowed.", "title": "Pmin" }, "lnaninfchk": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Check for NaN and INF. Usually turned off for efficiency.", "title": "Lnaninfchk" }, "lzeta_setup": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Compute wave setup (simple momentum equation).", "title": "Lzeta Setup" }, "zeta_meth": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Method for wave setup calculation.", "title": "Zeta Meth" }, "lsourceswam": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Use ECMWF WAM formulation for deep water physics.", "title": "Lsourceswam" }, "block_gauss_seidel": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Use Gauss-Seidel method on each computer block. Faster and uses less memory, but iterations depend on number of processors.", "title": "Block Gauss Seidel" }, "lnonl": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Solve the nonlinear system using simpler algorithm (Patankar).", "title": "Lnonl" }, "aspar_local_level": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "ASPAR locality level. Controls memory allocation and optimization strategies.", "title": "Aspar Local Level" }, "l_solver_norm": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Compute solver norm ||A*x-b|| as termination check of Jacobi-Gauss-Seidel solver. Increases cost if True.", "title": "L Solver Norm" }, "laccel": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Enable acceleration for solver.", "title": "Laccel" } }, "title": "Nums", "type": "object" }, "OBSTACLE": { "additionalProperties": false, "description": "Subgrid obstacle.\n\n.. code-block:: text\n\n OBSTACLE ->TRANSM|TRANS1D|TRANS2D|GODA|DANGREMOND REFL [reflc] ->RSPEC|RDIFF &\n (FREEBOARD [hgt] [gammat] [gammar] QUAY) LINE < [xp] [yp] >\n\nWith this optional command the user provides the characteristics of a (line\nof) sub-grid obstacle(s) through which waves are transmitted or against which\nwaves are reflected (possibly both at the same time). The obstacle is sub-grid\nin the sense that it is narrow compared to the spatial meshes; its length should\nbe at least one mesh length.\n\nThe location of the obstacle is defined by a sequence of corner points of a line.\nThe obstacles interrupt the propagation of the waves from one grid point to the\nnext wherever this obstacle line is located between two neighbouring grid points\n(of the computational grid; the resolution of the obstacle is therefore equal to\nthe computational grid spacing). This implies that an obstacle to be effective must\nbe located such that it crosses at least one grid line. This is always the case\nwhen an obstacle is larger than one mesh length.\n\nNotes\n-----\n\n* The advise is to define obstacles with the least amount of points possible.\n* SWAN checks if the criterion `reflc^2 + trcoef^2 LE 1` is fulfilled.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import OBSTACLE\n obs = OBSTACLE(\n transmission=dict(model_type=\"transm\", trcoef=0.5),\n reflection=dict(reflc=0.5),\n line=dict(xp=[174.1, 174.2, 174.3], yp=[-39.1, -39.1, -39.1]),\n )\n print(obs.render())", "properties": { "model_type": { "default": "obstacle", "description": "Model type discriminator", "enum": [ "obstacle", "OBSTACLE" ], "title": "Model Type", "type": "string" }, "transmission": { "anyOf": [ { "description": "Wave transmission", "discriminator": { "mapping": { "DANGREMOND": "#/$defs/DANGREMOND", "GODA": "#/$defs/GODA", "TRANS1D": "#/$defs/TRANS1D", "TRANS2D": "#/$defs/TRANS2D", "TRANSM": "#/$defs/TRANSM", "dangremond": "#/$defs/DANGREMOND", "goda": "#/$defs/GODA", "trans1d": "#/$defs/TRANS1D", "trans2d": "#/$defs/TRANS2D", "transm": "#/$defs/TRANSM" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/TRANSM" }, { "$ref": "#/$defs/TRANS1D" }, { "$ref": "#/$defs/TRANS2D" }, { "$ref": "#/$defs/GODA" }, { "$ref": "#/$defs/DANGREMOND" } ] }, { "type": "null" } ], "default": null, "title": "Transmission" }, "reflection": { "anyOf": [ { "$ref": "#/$defs/REFL" }, { "type": "null" } ], "default": null, "description": "Wave reflection" }, "reflection_type": { "anyOf": [ { "description": "Wave reflection type", "discriminator": { "mapping": { "RDIFF": "#/$defs/RDIFF", "RSPEC": "#/$defs/RSPEC", "rdiff": "#/$defs/RDIFF", "rspec": "#/$defs/RSPEC" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/RSPEC" }, { "$ref": "#/$defs/RDIFF" } ] }, { "type": "null" } ], "default": null, "title": "Reflection Type" }, "freeboard": { "anyOf": [ { "$ref": "#/$defs/FREEBOARD" }, { "type": "null" } ], "default": null, "description": "Freeboard" }, "line": { "$ref": "#/$defs/LINE", "default": null, "description": "Line of obstacle" } }, "title": "OBSTACLE", "type": "object" }, "OBSTACLES": { "additionalProperties": false, "description": "List of swan obstacles.\n\n.. code-block:: text\n\n OBSTACLE ... LINE < [xp] [yp] >\n OBSTACLE ... LINE < [xp] [yp] >\n .\n\nThis group component is a convenience to allow defining and rendering\na list of obstacle components.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import OBSTACLES, OBSTACLE, OBSTACLE_FIG\n obst1 = dict(\n model_type=\"obstacle\",\n reflection=dict(reflc=1.0),\n line=dict(xp=[174.1, 174.2, 174.3], yp=[-39.1, -39.1, -39.1]),\n )\n obst2 = OBSTACLE(\n transmission=dict(model_type=\"transm\"),\n line=dict(xp=[174.3, 174.3], yp=[-39.1, -39.2]),\n )\n obst3 = OBSTACLE_FIG(\n alpha1=5e-4,\n hss=2.5,\n tss=10.3,\n line=dict(xp=[174.1, 174.2, 174.3], yp=[-39.1, -39.1, -39.1]),\n )\n obstacles = OBSTACLES(obstacles=[obst1, obst2, obst3])\n for obst in obstacles.render():\n print(obst)", "properties": { "model_type": { "default": "obstacles", "description": "Model type discriminator", "enum": [ "obstacles", "OBSTACLES" ], "title": "Model Type", "type": "string" }, "obstacles": { "description": "List of obstacles", "items": { "discriminator": { "mapping": { "FIG": "#/$defs/OBSTACLE_FIG", "OBSTACLE": "#/$defs/OBSTACLE", "fig": "#/$defs/OBSTACLE_FIG", "obstacle": "#/$defs/OBSTACLE" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/OBSTACLE" }, { "$ref": "#/$defs/OBSTACLE_FIG" } ] }, "title": "Obstacles", "type": "array" } }, "required": [ "obstacles" ], "title": "OBSTACLES", "type": "object" }, "OBSTACLE_FIG": { "additionalProperties": false, "description": "Obstacle for free infragravity radiation.\n\n.. code-block:: text\n\n OBSTACLE FIG [alpha1] [hss] [tss] (REFL [reflc]) LINE <[xp] [yp]>\n\nWith this optional command the user specifies the obstacles along which the\nfree infra-gravity (FIG) energy is radiated. By placing the obstacles close to\nthe shorelines SWAN will include the FIG source term along the coastlines\naccording to the parametrization of Ardhuin et al. (2014).\n\nThe location of the obstacle is defined by a sequence of corner points of a line.\nFor an obstacle line to be effective its length is at least one mesh size large. It\nis recommended to place the obstacles at the inner area of the computational grid,\nnot at or through the boundaries. In particular, each obstacle line must be\nbordered by wet points on both sides.\n\nIn addition, the orientation of the obstacle line determines from which side of the\nobstacle the FIG wave energy is radiated away. If the begin point of the line is\nbelow or left of the end point, that is, pointing upwards/to the right, then FIG\nenergy is radiated from the west/north side of the line. If the begin point is\nabove or right of the end point (pointing downwards/to the left), then FIG energy\nis radiated away from the east/south side of the obstacle line.\n\nReferences\n----------\nArdhuin, F., Rawat, A. and Aucan, J., 2014. A numerical model for free\ninfragravity waves: Definition and validation at regional and global scales.\nOcean Modelling, 77, pp.20-32.\n\nNotes\n-----\nEither `hss` or `tss` or both are allowed to vary over the computational domain.\nIn that case use the commands `INPGRID HSS` and `READINP HSS` and/or the commands\n`INPGRID TSS` and `READINP TSS` to define and read the sea-swell wave height/period\nIt is permissible to have constant sea-swell height and non-constant sea-swell\nperiod, or vice versa. The command `OBST FIG` is still required to define the\nobstacles. The values of `hss` and/or `tss` in this command are then not required\n(they will be ignored).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import OBSTACLE_FIG\n obs = OBSTACLE_FIG(\n alpha1=5e-4,\n hss=2.5,\n tss=10.3,\n line=dict(xp=[174.1, 174.2, 174.3], yp=[-39.1, -39.1, -39.1]),\n )\n print(obs.render())\n obs = OBSTACLE_FIG(\n alpha1=5e-4,\n hss=2.5,\n tss=10.3,\n reflection=dict(reflc=0.5),\n line=dict(xp=[174.1, 174.2, 174.3], yp=[-39.1, -39.1, -39.1]),\n )\n print(obs.render())", "properties": { "model_type": { "default": "fig", "description": "Model type discriminator", "enum": [ "fig", "FIG" ], "title": "Model Type", "type": "string" }, "alpha1": { "description": "Calibration parameter (in 1/s) for determining the rate of radiating FIG energy from the shorelines, values in Table 1 of Ardhuin et al. (2014) are between 4e-4 and 8.1e-4", "title": "Alpha1", "type": "number" }, "hss": { "description": "The sea-swell significant wave height (in m)", "minimum": 0.0, "title": "Hss", "type": "number" }, "tss": { "description": "The sea-swell mean wave period (in s)", "minimum": 0.0, "title": "Tss", "type": "number" }, "reflection": { "anyOf": [ { "$ref": "#/$defs/REFL" }, { "type": "null" } ], "default": null, "description": "Wave reflection" }, "line": { "$ref": "#/$defs/LINE", "description": "Line of obstacle" } }, "required": [ "alpha1", "hss", "tss", "line" ], "title": "OBSTACLE_FIG", "type": "object" }, "OFF": { "additionalProperties": false, "description": "Deactivate physics commands.\n\n.. code-block:: text\n\n OFF WINDGROWTH|QUADRUPL|WCAPPING|BREAKING|REFRAC|FSHIFT|BNDCHK\n\nThis command deactivates physics commands. The command can be used to switch off\nthe computation of a certain physics component without having to remove the command\nfrom the input file. This is useful for testing purposes.\n\nExamples:\n---------\n\n.. ipython:: python\n\n from rompy.swan.components.physics import OFF\n off = OFF(physics=\"windgrowth\")\n print(off.render())", "properties": { "model_type": { "default": "off", "description": "Model type discriminator", "enum": [ "off", "OFF" ], "title": "Model Type", "type": "string" }, "physics": { "$ref": "#/$defs/PhysicsOff", "description": "Physics command to be switched off" } }, "required": [ "physics" ], "title": "OFF", "type": "object" }, "OFFS": { "additionalProperties": false, "description": "Deactivate multiple physics commands.\n\n.. code-block:: text\n\n OFF WINDGROWTH|QUADRUPL|WCAPPING|BREAKING|REFRAC|FSHIFT|BNDCHK\n OFF WINDGROWTH|QUADRUPL|WCAPPING|BREAKING|REFRAC|FSHIFT|BNDCHK\n .\n\nThis group component is a convenience to allow defining and rendering\na list of `OFF` components.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import OFFS\n off1 = dict(physics=\"windgrowth\")\n off2 = dict(physics=\"wcapping\")\n offs = OFFS(offs=[off1, off2])\n for off in offs.render():\n print(off)", "properties": { "model_type": { "default": "offs", "description": "Model type discriminator", "enum": [ "offs", "OFFS" ], "title": "Model Type", "type": "string" }, "offs": { "description": "Physics commands to deactivate", "items": { "$ref": "#/$defs/OFF" }, "title": "Offs", "type": "array" } }, "required": [ "offs" ], "title": "OFFS", "type": "object" }, "OUTPUT": { "additionalProperties": false, "description": "Output group component.\n\n.. code-block:: text\n\n FRAME 'sname' ...\n GROUP 'sname' ...\n CURVE 'sname' ...\n RAY 'rname' ...\n ISOLINE 'sname' 'rname' ...\n POINTS 'sname ...\n NGRID 'sname' ...\n QUANTITY ...\n OUTPUT OPTIONS ...\n BLOCK 'sname' ...\n TABLE 'sname' ...\n SPECOUT 'sname' ...\n NESTOUT 'sname ...\n\nThis group component is used to define multiple types of output locations and\nwrite components in a single model. Only fields that are explicitly prescribed are\nrendered by this group component.\n\nNote\n----\nThe components prescribed are validated according to some constraints as defined\nin the SWAN manual:\n\n- The name `'sname'` of each Locations component must be unique.\n- The Locations `'sname'` assigned to each write component must be defined.\n- The BLOCK component must be associated with either a `FRAME` or `GROUP`.\n- The ISOLINE write component must be associated with a `RAY` component.\n- The NGRID and NESTOUT components must be defined together.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import POINTS, BLOCK, QUANTITIES, TABLE\n from rompy.swan.components.group import OUTPUT\n points = POINTS(sname=\"outpts\", xp=[172.3, 172.4], yp=[-39, -39])\n quantity = QUANTITIES(\n quantities=[\n dict(output=[\"depth\", \"hsign\", \"tps\", \"dir\", \"tm01\"], excv=-9),\n ]\n )\n times = dict(tbeg=\"2012-01-01T00:00:00\", delt=\"PT30M\", tfmt=1, dfmt=\"min\")\n block = BLOCK(\n model_type=\"block\",\n sname=\"COMPGRID\",\n fname=\"./swangrid.nc\",\n output=[\"depth\", \"hsign\", \"tps\", \"dir\"],\n times=times,\n )\n table = TABLE(\n sname=\"outpts\",\n format=\"noheader\",\n fname=\"./swantable.nc\",\n output=[\"hsign\", \"hswell\", \"dir\", \"tps\", \"tm01\", \"watlev\", \"qp\"],\n times=times,\n )\n out = OUTPUT(\n points=points,\n quantity=quantity,\n block=block,\n table=table,\n )\n print(out.render())", "properties": { "model_type": { "default": "output", "description": "Model type discriminator", "enum": [ "output", "OUTPUT" ], "title": "Model Type", "type": "string" }, "frame": { "anyOf": [ { "$ref": "#/$defs/FRAME", "description": "Frame locations component" }, { "type": "null" } ], "default": null }, "group": { "anyOf": [ { "$ref": "#/$defs/GROUP", "description": "Group locations component" }, { "type": "null" } ], "default": null }, "curve": { "anyOf": [ { "$ref": "#/$defs/CURVES", "description": "Curve locations component" }, { "type": "null" } ], "default": null }, "ray": { "anyOf": [ { "$ref": "#/$defs/RAY", "description": "Ray locations component" }, { "type": "null" } ], "default": null }, "isoline": { "anyOf": [ { "$ref": "#/$defs/ISOLINE", "description": "Isoline locations component" }, { "type": "null" } ], "default": null }, "points": { "anyOf": [ { "description": "Points locations component", "discriminator": { "mapping": { "POINTS": "#/$defs/POINTS", "POINTS_FILE": "#/$defs/POINTS_FILE", "points": "#/$defs/POINTS", "points_file": "#/$defs/POINTS_FILE" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/POINTS" }, { "$ref": "#/$defs/POINTS_FILE" } ] }, { "type": "null" } ], "default": null, "title": "Points" }, "ngrid": { "anyOf": [ { "description": "Ngrid locations component", "discriminator": { "mapping": { "NGRID": "#/$defs/NGRID", "NGRID_UNSTRUCTURED": "#/$defs/NGRID_UNSTRUCTURED", "ngrid": "#/$defs/NGRID", "ngrid_unstructured": "#/$defs/NGRID_UNSTRUCTURED" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/NGRID" }, { "$ref": "#/$defs/NGRID_UNSTRUCTURED" } ] }, { "type": "null" } ], "default": null, "title": "Ngrid" }, "quantity": { "anyOf": [ { "$ref": "#/$defs/QUANTITIES", "description": "Quantity component" }, { "type": "null" } ], "default": null }, "output_options": { "anyOf": [ { "$ref": "#/$defs/OUTPUT_OPTIONS", "description": "Output options component" }, { "type": "null" } ], "default": null }, "block": { "anyOf": [ { "description": "Block write component", "discriminator": { "mapping": { "BLOCK": "#/$defs/BLOCK", "block": "#/$defs/BLOCK", "blocks": "#/$defs/BLOCKS" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/BLOCK" }, { "$ref": "#/$defs/BLOCKS" } ] }, { "type": "null" } ], "default": null, "title": "Block" }, "table": { "anyOf": [ { "$ref": "#/$defs/TABLE", "description": "Table write component" }, { "type": "null" } ], "default": null }, "specout": { "anyOf": [ { "$ref": "#/$defs/SPECOUT", "description": "Spectra write component" }, { "type": "null" } ], "default": null }, "nestout": { "anyOf": [ { "$ref": "#/$defs/NESTOUT", "description": "Nest write component" }, { "type": "null" } ], "default": null }, "test": { "anyOf": [ { "$ref": "#/$defs/TEST", "description": "Intermediate write component" }, { "type": "null" } ], "default": null } }, "title": "OUTPUT", "type": "object" }, "OUTPUT_OPTIONS": { "additionalProperties": false, "description": "Set format of output.\n\n.. code-block:: text\n\n OUTPUT OPTIons 'comment' (TABLE [field]) (BLOCK [ndec] [len]) (SPEC [ndec])\n\nThis command enables the user to influence the format of block, table and spectral\noutput.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import OUTPUT_OPTIONS\n opts = OUTPUT_OPTIONS(\n comment=\"!\", field=10, ndec_block=4, len=20, ndec_spec=6,\n )\n print(opts.render())", "properties": { "model_type": { "default": "block", "description": "Model type discriminator", "enum": [ "block", "BLOCK" ], "title": "Model Type", "type": "string" }, "comment": { "anyOf": [ { "maxLength": 1, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "description": "Comment character used in comment lines in the output (SWAN default: %)", "title": "Comment" }, "field": { "anyOf": [ { "maximum": 16, "minimum": 8, "type": "integer" }, { "type": "null" } ], "default": null, "description": "Length of one data field in a table (SWAN default: 12)", "title": "Field" }, "ndec_block": { "anyOf": [ { "maximum": 9, "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null, "description": "Number of decimals in block output (SWAN default: 4)", "title": "Ndec Block" }, "len": { "anyOf": [ { "maximum": 9999, "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "description": "Number of data on one line of block output (SWAN default: 6)", "title": "Len" }, "ndec_spec": { "anyOf": [ { "maximum": 9, "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null, "description": "Number of decimals in spectra output (SWAN default: 4)", "title": "Ndec Spec" } }, "title": "OUTPUT_OPTIONS", "type": "object" }, "Opt": { "additionalProperties": false, "properties": { "ipre2": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Pre-processing flag for diagnostic outputs. If non-zero, the code will output drag coefficients (Cdp) and stop.", "title": "Ipre2" }, "itransport_only": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Option to solve only tracer transport. 0: off, 1 or 2: on. When 2, additional variables are needed.", "title": "Itransport Only" }, "iloadtide": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Option to add self-attracting and loading tide (SAL) into tidal potential. 0: off, 1: needs loadtide_[FREQ].gr3 inputs, 2 or 3: simple scaling for gravity approach.", "title": "Iloadtide" }, "loadtide_coef": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Coefficient for SAL scaling. Used only if iloadtide is 2 or 3.", "title": "Loadtide Coef" }, "start_year": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2000, "description": "Starting year for the simulation.", "title": "Start Year" }, "start_month": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Starting month for the simulation.", "title": "Start Month" }, "start_day": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "int", "title": "Start Day" }, "start_hour": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "double", "title": "Start Hour" }, "utc_start": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 8, "description": "double", "title": "Utc Start" }, "ics": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "Coordinate option", "title": "Ics" }, "ihot": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Ihot" }, "ieos_type": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Ieos Type" }, "ieos_pres": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "used only if ieos_type=0. 0: without pressure effects", "title": "Ieos Pres" }, "eos_a": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": -0.1, "description": "needed if ieos_type=1; should be <=0", "title": "Eos A" }, "eos_b": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1001.0, "description": "needed if ieos_type=1", "title": "Eos B" }, "dramp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "ramp-up period in days for b.c. etc (no ramp-up if <=0)", "title": "Dramp" }, "drampbc": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "ramp-up period in days for baroclinic force", "title": "Drampbc" }, "iupwind_mom": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Iupwind Mom" }, "indvel": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Indvel" }, "ihorcon": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Ihorcon" }, "hvis_coef0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.025, "description": "const. diffusion # if ihorcon/=0; <=0.025 for ihorcon=2, <=0.125 for ihorcon=1", "title": "Hvis Coef0" }, "ishapiro": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "options", "title": "Ishapiro" }, "niter_shap": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "needed if ishapiro/=0: # of iterations with Shapiro filter", "title": "Niter Shap" }, "shapiro0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.5, "description": "needed only if ishapiro=1", "title": "Shapiro0" }, "thetai": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.6, "description": "", "title": "Thetai" }, "icou_elfe_wwm": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Icou Elfe Wwm" }, "nstep_wwm": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "call WWM every this many time steps", "title": "Nstep Wwm" }, "iwbl": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "wave boundary layer formulation (used only if USE_WMM and", "title": "Iwbl" }, "hmin_radstress": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "min. total water depth used only in radiation stress calculation [m]", "title": "Hmin Radstress" }, "drampwafo": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "ramp-up period in days for the wave forces (no ramp-up if <=0)", "title": "Drampwafo" }, "turbinj": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.15, "description": "% of depth-induced wave breaking energy injected in turbulence", "title": "Turbinj" }, "turbinjds": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "% of wave energy dissipated through whitecapping injected in turbulence", "title": "Turbinjds" }, "alphaw": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.5, "description": "for itur=4 : scaling parameter for the surface roughness z0s = alphaw*Hm0.", "title": "Alphaw" }, "fwvor_advxy_stokes": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "--> Stokes drift advection (xy), Coriolis", "title": "Fwvor Advxy Stokes" }, "fwvor_advz_stokes": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "--> Stokes drift advection (z) , Coriolis", "title": "Fwvor Advz Stokes" }, "fwvor_gradpress": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "--> Pressure term", "title": "Fwvor Gradpress" }, "fwvor_breaking": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "--> Wave breaking", "title": "Fwvor Breaking" }, "fwvor_streaming": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "--> Wave streaming (works with iwbl /= 0)", "title": "Fwvor Streaming" }, "fwvor_wveg": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "--> Wave dissipation by vegetation acceleration term", "title": "Fwvor Wveg" }, "fwvor_wveg_nl": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "--> Non linear intrawave vegetation force (see Dean and Bender, 2006 or van Rooijen et al., 2016 for details)", "title": "Fwvor Wveg Nl" }, "cur_wwm": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Coupling current in WWM", "title": "Cur Wwm" }, "wafo_obcramp": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Ramp on wave forces at open boundary (1: on / 0: off)", "title": "Wafo Obcramp" }, "imm": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Imm" }, "ibdef": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 10, "description": "needed if imm=1; # of steps used in deformation", "title": "Ibdef" }, "slam0": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -124, "description": "lon - not really used", "title": "Slam0" }, "sfea0": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 45, "description": "lat", "title": "Sfea0" }, "iunder_deep": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Iunder Deep" }, "h1_bcc": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 50.0, "description": "[m]", "title": "H1 Bcc" }, "h2_bcc": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 100.0, "description": "[m]; >h1_bcc", "title": "H2 Bcc" }, "hw_depth": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1000000.0, "description": "threshold depth in [m]", "title": "Hw Depth" }, "hw_ratio": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.5, "description": "ratio", "title": "Hw Ratio" }, "ihydraulics": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Ihydraulics" }, "if_source": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "If Source" }, "dramp_ss": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "needed if if_source/=0; ramp-up period in days for source/sinks (no ramp-up if <=0)", "title": "Dramp Ss" }, "meth_sink": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "options to treat sinks @ dry elem", "title": "Meth Sink" }, "lev_tr_source__1": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -9, "description": "T", "title": "Lev Tr Source 1" }, "lev_tr_source__2": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -9, "description": "S", "title": "Lev Tr Source 2" }, "lev_tr_source__3": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -9, "description": "GEN", "title": "Lev Tr Source 3" }, "lev_tr_source__4": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -9, "description": "AGE: set -9999. in msource's AGE section", "title": "Lev Tr Source 4" }, "lev_tr_source__5": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -9, "description": "SED3D", "title": "Lev Tr Source 5" }, "lev_tr_source__6": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -9, "description": "EcoSim", "title": "Lev Tr Source 6" }, "lev_tr_source__7": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -9, "description": "ICM", "title": "Lev Tr Source 7" }, "lev_tr_source__8": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -9, "description": "CoSINE", "title": "Lev Tr Source 8" }, "lev_tr_source__9": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -9, "description": "Feco", "title": "Lev Tr Source 9" }, "lev_tr_source__10": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -9, "description": "TIMOR", "title": "Lev Tr Source 10" }, "lev_tr_source__11": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -9, "description": "FABM", "title": "Lev Tr Source 11" }, "lev_tr_source__12": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -9, "description": "DVD", "title": "Lev Tr Source 12" }, "level_age": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 9, -999 ], "description": "default: -999 (all levels)", "title": "Level Age" }, "ihdif": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Ihdif" }, "nchi": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Nchi" }, "dzb_min": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.5, "description": "needed if nchi=1; min. bottom boundary layer thickness [m].", "title": "Dzb Min" }, "hmin_man": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "needed if nchi=-1: min. depth in Manning's formulation [m]", "title": "Hmin Man" }, "ncor": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "should usually be 1 if ics=2", "title": "Ncor" }, "rlatitude": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 46, "description": "if ncor=-1", "title": "Rlatitude" }, "coricoef": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "if ncor=0", "title": "Coricoef" }, "ic_elev": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Ic Elev" }, "nramp_elev": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Nramp Elev" }, "inv_atm_bnd": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "0: off; 1: on", "title": "Inv Atm Bnd" }, "prmsl_ref": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 101325.0, "description": "reference atmos. pressure on bnd [Pa]", "title": "Prmsl Ref" }, "flag_ic__1": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "T", "title": "Flag Ic 1" }, "flag_ic__2": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "S", "title": "Flag Ic 2" }, "flag_ic__3": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "GEN (user defined module)", "title": "Flag Ic 3" }, "flag_ic__5": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "SED3D", "title": "Flag Ic 5" }, "flag_ic__6": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "EcoSim", "title": "Flag Ic 6" }, "flag_ic__7": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "ICM", "title": "Flag Ic 7" }, "flag_ic__8": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "CoSINE", "title": "Flag Ic 8" }, "flag_ic__9": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "FIB", "title": "Flag Ic 9" }, "flag_ic__10": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "TIMOR", "title": "Flag Ic 10" }, "flag_ic__11": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "FABM", "title": "Flag Ic 11" }, "flag_ic__12": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "DVD (must=0)", "title": "Flag Ic 12" }, "gen_wsett": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "1.e-4", "title": "Gen Wsett" }, "ibcc_mean": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Ibcc Mean" }, "rmaxvel": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 5.0, "description": "", "title": "Rmaxvel" }, "velmin_btrack": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0001, "description": "", "title": "Velmin Btrack" }, "btrack_nudge": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.009013, "description": "", "title": "Btrack Nudge" }, "ihhat": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "", "title": "Ihhat" }, "inunfl": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Inunfl" }, "h0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.01, "description": "min. water depth for wetting/drying [m]", "title": "H0" }, "shorewafo": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Matters only if USE_WWM", "title": "Shorewafo" }, "moitn0": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 50, "description": "output spool for solver info; used only with JCG", "title": "Moitn0" }, "mxitn0": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1500, "description": "max. iteration allowed", "title": "Mxitn0" }, "rtol0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1e-12, "description": "error tolerance", "title": "Rtol0" }, "nadv": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "", "title": "Nadv" }, "dtb_max": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 30.0, "description": "in sec", "title": "Dtb Max" }, "dtb_min": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 10.0, "description": "", "title": "Dtb Min" }, "inter_mom": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Inter Mom" }, "kr_co": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "not used if inter_mom=0", "title": "Kr Co" }, "itr_met": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 3, "description": "", "title": "Itr Met" }, "h_tvd": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 5.0, "description": "cut-off depth (m)", "title": "H Tvd" }, "eps1_tvd_imp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0001, "description": "suggested value is 1.e-4, but for large suspended load, need to use a smaller value (e.g. 1.e-9)", "title": "Eps1 Tvd Imp" }, "eps2_tvd_imp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1e-14, "description": "", "title": "Eps2 Tvd Imp" }, "ielm_transport": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "1: turn on", "title": "Ielm Transport" }, "max_subcyc": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 10, "description": "used only if ielm_transport/=0. Max # of subcycling per time step in transport allowed", "title": "Max Subcyc" }, "ip_weno": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "order of accuracy: 0- upwind; 1- linear polynomial, 2nd order; 2- quadratic polynomial, 3rd order", "title": "Ip Weno" }, "courant_weno": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.5, "description": "Courant number for weno transport", "title": "Courant Weno" }, "nquad": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "number of quad points on each side, nquad= 1 or 2", "title": "Nquad" }, "ntd_weno": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "order of temporal discretization: (1) Euler (default); (3): 3rd-order Runge-Kutta (only for benchmarking)", "title": "Ntd Weno" }, "epsilon1": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1e-15, "description": "coefficient for 2nd order weno smoother (larger values are more prone to numerical dispersion)", "title": "Epsilon1" }, "epsilon2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1e-10, "description": "1st coefficient for 3rd order weno smoother (larger values are more prone to numerical dispersion", "title": "Epsilon2" }, "i_prtnftl_weno": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "option for writing nonfatal errors on invalid temp. or salinity for density: (0) off; (1) on.", "title": "I Prtnftl Weno" }, "epsilon3": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1e-25, "description": "2nd coefficient for 3rd order weno smoother (inactive at the moment)", "title": "Epsilon3" }, "ielad_weno": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "ielad, if ielad=1, use ELAD method to suppress dispersion (inactive at the moment)", "title": "Ielad Weno" }, "small_elad": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0001, "description": "small (inactive at the moment)", "title": "Small Elad" }, "nws": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "\n Atmos. option. Use nws=2 and USE_ATMOS for coupling with atmospheric model.\n If nws=0, no atmos. forcing is applied. If nws=1, atmos.\n variables are read in from wind.th. If nws=2, atmos. variables are\n read in from sflux_ files.\n If nws=4, ascii format is used for wind and atmos. pressure at each node (see source code).\n If nws=-1 (requires USE_PAHM), use Holland parametric wind model (barotropic only with wind and atmos. pressure).\n In this case, the Holland model is called every step so wtiminc is not used. An extra \n input file is needed: hurricane-track.dat, in addition to a few parameters below.\n\n Stress calculation:\n If nws=2, ihconsv=1 and iwind_form=0, the stress is calculated from heat exchange\n routine; in this case USE_ATMOS cannot be on.\n Otherwise if iwind_form=-1, the stress is calculated from Pond & Pichard formulation;\n if iwind_form=1, Hwang (2018) formulation (Cd tapers off at high wind).\n If WWM is enabled and icou_elfe_wwm>0 and iwind_form=-2 or -3, stress is overwritten by WWM:\n If iwind_form=-2, stress=rho_air*ufric^2; scaled by rho_water\n If iwind_form=-3, the stress is calculated according to the param. of Donelan et al. (1993) based on the wave age.\n In all cases, if USE_ICE the stress in ice-covered portion is calculated by ICE routine.\n ", "title": "Nws" }, "wtiminc": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 150.0, "description": "time step for atmos. forcing. Default: same as dt", "title": "Wtiminc" }, "drampwind": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "ramp-up period in days for wind (no ramp-up if <=0)", "title": "Drampwind" }, "iwindoff": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "needed only if nws/=0; '1': needs windfactor.gr3", "title": "Iwindoff" }, "iwind_form": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "needed if nws/=0", "title": "Iwind Form" }, "model_type_pahm": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 10, "description": "only used if nws=-1: hurricane model type (1: Holland; 10: GAHM)", "title": "Model Type Pahm" }, "ihconsv": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "heat exchange option", "title": "Ihconsv" }, "isconsv": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "evaporation/precipitation model", "title": "Isconsv" }, "i_hmin_airsea_ex": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "no effect if ihconsv=0", "title": "I Hmin Airsea Ex" }, "hmin_airsea_ex": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.2, "description": "[m], no effect if ihconsv=0", "title": "Hmin Airsea Ex" }, "i_hmin_salt_ex": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "no effect if isconsv=0", "title": "I Hmin Salt Ex" }, "hmin_salt_ex": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.2, "description": "[m], no effect if isconsv=0", "title": "Hmin Salt Ex" }, "iprecip_off_bnd": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "if /=0, precip will be turned off near land bnd", "title": "Iprecip Off Bnd" }, "itur": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 3, "description": "Default: 0", "title": "Itur" }, "dfv0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.01, "description": "needed if itur=0", "title": "Dfv0" }, "dfh0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0001, "description": "needed if itur=0", "title": "Dfh0" }, "mid": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "KL", "description": "needed if itur=3,5. Use KE if itur=5", "title": "Mid" }, "stab": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "KC", "description": "needed if itur=3 or 5. Use 'GA' if turb_met='MY'; otherwise use 'KC'.", "title": "Stab" }, "xlsc0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "needed if itur=3 or 5. Scale for surface & bottom mixing length (>0)", "title": "Xlsc0" }, "inu_elev": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Inu Elev" }, "inu_uv": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Inu Uv" }, "inu_tr__1": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "T", "title": "Inu Tr 1" }, "inu_tr__2": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "S", "title": "Inu Tr 2" }, "inu_tr__3": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "GEN", "title": "Inu Tr 3" }, "inu_tr__4": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Age", "title": "Inu Tr 4" }, "inu_tr__5": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "SED3D", "title": "Inu Tr 5" }, "inu_tr__6": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "EcoSim", "title": "Inu Tr 6" }, "inu_tr__7": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "ICM", "title": "Inu Tr 7" }, "inu_tr__8": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "CoSINE", "title": "Inu Tr 8" }, "inu_tr__9": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "FIB", "title": "Inu Tr 9" }, "inu_tr__10": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "TIMOR", "title": "Inu Tr 10" }, "inu_tr__11": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "FABM", "title": "Inu Tr 11" }, "inu_tr__12": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "DVD (must=0)", "title": "Inu Tr 12" }, "nu_sum_mult": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "1: final relax is sum of horizontal", "title": "Nu Sum Mult" } }, "title": "Opt", "type": "object" }, "OutputLocs": { "additionalProperties": false, "description": "Output locations", "properties": { "coords": { "default": [], "description": "list of coordinates to output spectra", "items": { "$ref": "#/$defs/Coordinate" }, "title": "Coords", "type": "array" } }, "title": "OutputLocs", "type": "object" }, "Outputs": { "additionalProperties": false, "description": "Outputs for SWAN", "properties": { "grid": { "$ref": "#/$defs/GridOutput", "default": { "period": null, "variables": [ "DEPTH", "UBOT", "HSIGN", "HSWELL", "DIR", "TPS", "TM01", "WIND" ] } }, "spec": { "$ref": "#/$defs/SpecOutput", "default": { "period": null, "locations": { "coords": [] } } } }, "title": "Outputs", "type": "object" }, "PAR": { "additionalProperties": false, "description": "Spectral parameters.\n\n.. code-block:: text\n\n PAR [hs] [per] [dir] [dd]\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.boundary import PAR\n par = PAR(hs=1.5, per=8.1, dir=225)\n print(par.render())", "properties": { "model_type": { "const": "par", "default": "par", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "hs": { "description": "The significant wave height (m)", "exclusiveMinimum": 0.0, "title": "Hs", "type": "number" }, "per": { "description": "The characteristic period (s) of the energy spectrum (relative frequency; which is equal to absolute frequency in the absence of currents); `per` is the value of the peak period if option PEAK is chosen in command BOUND SHAPE or `per` is the value of the mean period, if option MEAN was chosen in command BOUND SHAPE.", "exclusiveMinimum": 0.0, "title": "Per", "type": "number" }, "dir": { "description": "The peak wave direction thetapeak (degree), constant over frequencies", "maximum": 360.0, "minimum": -360.0, "title": "Dir", "type": "number" }, "dd": { "anyOf": [ { "maximum": 360.0, "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Coefficient of directional spreading; a `cos^m(\u03b8)` distribution is assumed. `dd` is interpreted as the directional standard deviation in degrees, if the option DEGREES is chosen in the command BOUND SHAPE (SWAN default: 30). `dd` is interpreted as the power `m`, if the option POWER is chosen in the command BOUND SHAPE (SWAN default: 2)", "title": "Dd" } }, "required": [ "hs", "per", "dir" ], "title": "PAR", "type": "object" }, "PHYSICS": { "additionalProperties": false, "description": "Physics group component.\n\nThe physics group component is a convenience to allow specifying several individual\ncomponents in a single command and check for consistency between them.\n\nExemples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.group import PHYSICS\n gen = {\"model_type\": \"gen3\", \"source_terms\": {\"model_type\": \"komen\"}}\n phys = PHYSICS(gen=gen)\n print(phys.render())\n phys = PHYSICS(\n gen=dict(model_type=\"gen3\", source_terms={\"model_type\": \"st6c1\"}),\n negatinp={\"model_type\": \"negatinp\", \"rdcoef\": 0.04},\n sswell={\"model_type\": \"zieger\"},\n breaking={\"model_type\": \"constant\", \"alpha\": 1.0, \"gamma\": 0.73},\n friction={\"model_type\": \"jonswap\", \"cfjon\": 0.038},\n )\n print(phys.render())", "properties": { "model_type": { "default": "physics", "description": "Model type discriminator", "enum": [ "physics", "PHYSICS" ], "title": "Model Type", "type": "string" }, "gen": { "anyOf": [ { "description": "Wave generation component", "discriminator": { "mapping": { "GEN1": "#/$defs/GEN1", "GEN2": "#/$defs/GEN2", "GEN3": "#/$defs/GEN3", "gen1": "#/$defs/GEN1", "gen2": "#/$defs/GEN2", "gen3": "#/$defs/GEN3" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/GEN1" }, { "$ref": "#/$defs/GEN2" }, { "$ref": "#/$defs/GEN3" } ] }, { "type": "null" } ], "default": null, "title": "Gen" }, "sswell": { "anyOf": [ { "description": "Swell dissipation component", "discriminator": { "mapping": { "ARDHUIN": "#/$defs/SSWELL_ARDHUIN", "ROGERS": "#/$defs/SSWELL_ROGERS", "ZIEGER": "#/$defs/SSWELL_ZIEGER", "ardhuin": "#/$defs/SSWELL_ARDHUIN", "rogers": "#/$defs/SSWELL_ROGERS", "zieger": "#/$defs/SSWELL_ZIEGER" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/SSWELL_ROGERS" }, { "$ref": "#/$defs/SSWELL_ARDHUIN" }, { "$ref": "#/$defs/SSWELL_ZIEGER" } ] }, { "type": "null" } ], "default": null, "title": "Sswell" }, "negatinp": { "anyOf": [ { "$ref": "#/$defs/NEGATINP", "description": "Negative wind input component" }, { "type": "null" } ], "default": null }, "wcapping": { "anyOf": [ { "description": "Whitecapping component", "discriminator": { "mapping": { "AB": "#/$defs/WCAPPING_AB", "KOMEN": "#/$defs/WCAPPING_KOMEN", "ab": "#/$defs/WCAPPING_AB", "komen": "#/$defs/WCAPPING_KOMEN" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/WCAPPING_KOMEN" }, { "$ref": "#/$defs/WCAPPING_AB" } ] }, { "type": "null" } ], "default": null, "title": "Wcapping" }, "quadrupl": { "anyOf": [ { "$ref": "#/$defs/QUADRUPL", "description": "Quadruplets component" }, { "type": "null" } ], "default": null }, "breaking": { "anyOf": [ { "description": "Wave breaking component", "discriminator": { "mapping": { "BKD": "#/$defs/BREAKING_BKD", "CONSTANT": "#/$defs/BREAKING_CONSTANT", "bkd": "#/$defs/BREAKING_BKD", "constant": "#/$defs/BREAKING_CONSTANT" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/BREAKING_CONSTANT" }, { "$ref": "#/$defs/BREAKING_BKD" } ] }, { "type": "null" } ], "default": null, "title": "Breaking" }, "friction": { "anyOf": [ { "description": "Bottom friction component", "discriminator": { "mapping": { "COLLINS": "#/$defs/FRICTION_COLLINS", "JONSWAP": "#/$defs/FRICTION_JONSWAP", "MADSEN": "#/$defs/FRICTION_MADSEN", "RIPPLES": "#/$defs/FRICTION_RIPPLES", "collins": "#/$defs/FRICTION_COLLINS", "jonswap": "#/$defs/FRICTION_JONSWAP", "madsen": "#/$defs/FRICTION_MADSEN", "ripples": "#/$defs/FRICTION_RIPPLES" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/FRICTION_JONSWAP" }, { "$ref": "#/$defs/FRICTION_COLLINS" }, { "$ref": "#/$defs/FRICTION_MADSEN" }, { "$ref": "#/$defs/FRICTION_RIPPLES" } ] }, { "type": "null" } ], "default": null, "title": "Friction" }, "triad": { "anyOf": [ { "description": "Triad interactions component", "discriminator": { "mapping": { "DCTA": "#/$defs/TRIAD_DCTA", "LTA": "#/$defs/TRIAD_LTA", "SPB": "#/$defs/TRIAD_SPB", "TRIAD": "#/$defs/TRIAD", "dcta": "#/$defs/TRIAD_DCTA", "lta": "#/$defs/TRIAD_LTA", "spb": "#/$defs/TRIAD_SPB", "triad": "#/$defs/TRIAD" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/TRIAD" }, { "$ref": "#/$defs/TRIAD_DCTA" }, { "$ref": "#/$defs/TRIAD_LTA" }, { "$ref": "#/$defs/TRIAD_SPB" } ] }, { "type": "null" } ], "default": null, "title": "Triad" }, "vegetation": { "anyOf": [ { "$ref": "#/$defs/VEGETATION", "description": "Vegetation component" }, { "type": "null" } ], "default": null }, "mud": { "anyOf": [ { "$ref": "#/$defs/MUD", "description": "Mud component" }, { "type": "null" } ], "default": null }, "sice": { "anyOf": [ { "description": "Sea ice component", "discriminator": { "mapping": { "D15": "#/$defs/SICE_D15", "M18": "#/$defs/SICE_M18", "R19": "#/$defs/SICE_R19", "R21B": "#/$defs/SICE_R21B", "SICE": "#/$defs/SICE", "d15": "#/$defs/SICE_D15", "m18": "#/$defs/SICE_M18", "r19": "#/$defs/SICE_R19", "r21b": "#/$defs/SICE_R21B", "sice": "#/$defs/SICE" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/SICE" }, { "$ref": "#/$defs/SICE_R19" }, { "$ref": "#/$defs/SICE_D15" }, { "$ref": "#/$defs/SICE_M18" }, { "$ref": "#/$defs/SICE_R21B" } ] }, { "type": "null" } ], "default": null, "title": "Sice" }, "turbulence": { "anyOf": [ { "$ref": "#/$defs/TURBULENCE", "description": "Turbulence component" }, { "type": "null" } ], "default": null }, "bragg": { "anyOf": [ { "description": "Bragg scattering component", "discriminator": { "mapping": { "BRAGG": "#/$defs/BRAGG", "FILE": "#/$defs/BRAGG_FILE", "FT": "#/$defs/BRAGG_FT", "bragg": "#/$defs/BRAGG", "file": "#/$defs/BRAGG_FILE", "ft": "#/$defs/BRAGG_FT" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/BRAGG" }, { "$ref": "#/$defs/BRAGG_FT" }, { "$ref": "#/$defs/BRAGG_FILE" } ] }, { "type": "null" } ], "default": null, "title": "Bragg" }, "limiter": { "anyOf": [ { "$ref": "#/$defs/LIMITER", "description": "Limiter component" }, { "type": "null" } ], "default": null }, "obstacle": { "anyOf": [ { "$ref": "#/$defs/OBSTACLES", "description": "Obstacle group component" }, { "type": "null" } ], "default": null }, "setup": { "anyOf": [ { "$ref": "#/$defs/rompy__swan__components__physics__SETUP", "description": "Setup component" }, { "type": "null" } ], "default": null }, "diffraction": { "anyOf": [ { "$ref": "#/$defs/DIFFRACTION", "description": "Diffraction component" }, { "type": "null" } ], "default": null }, "surfbeat": { "anyOf": [ { "$ref": "#/$defs/SURFBEAT", "description": "Surfbeat component" }, { "type": "null" } ], "default": null }, "scat": { "anyOf": [ { "$ref": "#/$defs/SCAT", "description": "Scattering component" }, { "type": "null" } ], "default": null }, "deactivate": { "anyOf": [ { "$ref": "#/$defs/OFFS", "description": "Deactivate components" }, { "type": "null" } ], "default": null } }, "title": "PHYSICS", "type": "object" }, "PM": { "additionalProperties": false, "description": "Pearson-Moskowitz spectral shape.\n\n.. code-block:: text\n\n PM\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.spectrum import PM\n shape = PM()\n print(shape.render())", "properties": { "model_type": { "default": "pm", "description": "Model type discriminator", "enum": [ "pm", "PM" ], "title": "Model Type", "type": "string" } }, "title": "PM", "type": "object" }, "POINTS": { "additionalProperties": false, "description": "Isolated output locations.\n\n.. code-block:: text\n\n POINTS 'sname' < [xp] [yp] >\n\nWith this optional command the user defines a set of individual output point\nlocations.\n\nNote\n----\nAll coordinates and distances should be given in m when Cartesian coordinates are\nused or degrees when Spherical coordinates are used (see command COORD).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import POINTS\n loc = POINTS(sname=\"outpts\", xp=[172.3, 172.4], yp=[-39, -39])\n print(loc.render())", "properties": { "model_type": { "default": "points", "description": "Model type discriminator", "enum": [ "points", "POINTS" ], "title": "Model Type", "type": "string" }, "sname": { "description": "Name of the set of output locations defined by this command", "maxLength": 8, "title": "Sname", "type": "string" }, "xp": { "anyOf": [ { "items": { "type": "number" }, "minItems": 1, "type": "array" }, { "type": "null" } ], "description": "problem coordinates of the points in the x-direction", "title": "Xp" }, "yp": { "anyOf": [ { "items": { "type": "number" }, "minItems": 1, "type": "array" }, { "type": "null" } ], "description": "problem coordinates of the points in the y-direction", "title": "Yp" } }, "required": [ "sname", "xp", "yp" ], "title": "POINTS", "type": "object" }, "POINTS_FILE": { "additionalProperties": false, "description": "Isolated output locations.\n\n.. code-block:: text\n\n POINTS 'sname' FILE 'fname'\n\nWith this optional command the user defines a set of individual output point\nlocations from text file. The file should have one point per row with x-coordinates\nand y-coordinates in the first and second columns respectively.\n\nNote\n----\nAll coordinates and distances should be given in m when Cartesian coordinates are\nused or degrees when Spherical coordinates are used (see command COORD).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import POINTS_FILE\n loc = POINTS_FILE(sname=\"outpts\", fname=\"./output_locations.txt\")\n print(loc.render())", "properties": { "model_type": { "default": "points_file", "description": "Model type discriminator", "enum": [ "points_file", "POINTS_FILE" ], "title": "Model Type", "type": "string" }, "sname": { "description": "Name of the set of output locations defined by this command", "maxLength": 8, "title": "Sname", "type": "string" }, "fname": { "description": "Name of the file containing the output locations", "maxLength": 36, "title": "Fname", "type": "string" } }, "required": [ "sname", "fname" ], "title": "POINTS_FILE", "type": "object" }, "PROJECT": { "additionalProperties": false, "description": "SWAN Project.\n\n.. code-block:: text\n\n PROJECT 'name' 'nr' 'title' 'title2 'title3'\n\nWith this required command the user defines a number of strings to identify the\nSWAN run (project name e.g., an engineering project) in the print and plot file.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.startup import PROJECT\n proj = PROJECT(nr=\"01\")\n print(proj.render())\n proj = PROJECT(\n name=\"waus\",\n nr=\"001\",\n title1=\"Western Australia\",\n title2=\"Perth Nest\"\n )\n print(proj.render())", "properties": { "model_type": { "default": "project", "description": "Model type discriminator", "enum": [ "project", "PROJECT" ], "title": "Model Type", "type": "string" }, "name": { "anyOf": [ { "maxLength": 16, "type": "string" }, { "type": "null" } ], "default": null, "description": "Is the name of the project, at most 16 characters long", "title": "Name" }, "nr": { "description": "Is the run identification (to be provided as a character string; e.g. the run number) to distinguish this run among other runs for the same project; it is at most 4 characters long. It is the only required information in this command.", "maxLength": 4, "title": "Nr", "type": "string" }, "title1": { "anyOf": [ { "maxLength": 72, "type": "string" }, { "type": "null" } ], "default": null, "description": "A string of at most 72 characters provided by the user to appear in the output of the program for the user's convenience (SWAN default: blanks)", "title": "Title1" }, "title2": { "anyOf": [ { "maxLength": 72, "type": "string" }, { "type": "null" } ], "default": null, "description": "Same as 'title1'", "title": "Title2" }, "title3": { "anyOf": [ { "maxLength": 72, "type": "string" }, { "type": "null" } ], "default": null, "description": "Same as 'title1'", "title": "Title3" } }, "required": [ "nr" ], "title": "PROJECT", "type": "object" }, "PROP": { "additionalProperties": false, "description": "Propagation scheme.\n\n.. code-block:: text\n\n PROP BSTB|GSE\n\nNotes\n-----\n* The scheme defaults to `S&L` and `SORDUP` for nonstationary and stationary\n simulations if not specified.\n* All schemes (BSBT, SORDUP and S&L) can be used in combination with curvilinear\n grids. With the higher order schemes (S&L and SORDUP) it is important to use a\n gradually varying grid otherwise there may be a severe loss of accuracy. If sharp\n transitions in the grid cannot be avoided it is safer to use the BSBT scheme.\n* In the computation with unstructured meshes, a lowest order upwind scheme will be\n employed. This scheme is very robust but rather diffusive. This may only be\n significant for the case when swell waves propagate over relative large distances\n (in the order of thousands of kilometers) within the model domain. However and\n most fortunately, in such a case this will alleviate the garden-sprinkler effect.\n* Alleviating the garden-sprinkler effect by adding some diffusion makes the SWAN\n computation conditionally stable. You can either use (i) a smaller time step,\n (ii) a lower value of `waveage`, (iii) better resolution in the directional\n space, or (iv) worse resolution in the geographic space, in order of preference,\n to make the model stable when necessary.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.numerics import PROP\n prop = PROP()\n print(prop.render())\n prop = PROP(scheme=dict(model_type=\"bsbt\"))\n print(prop.render())\n prop = PROP(\n scheme=dict(\n model_type=\"gse\",\n waveage=dict(delt=\"PT5H\", dfmt=\"hr\"),\n ),\n )\n print(prop.render())", "properties": { "model_type": { "default": "prop", "description": "Model type discriminator", "enum": [ "prop", "PROP" ], "title": "Model Type", "type": "string" }, "scheme": { "anyOf": [ { "description": "Propagation scheme", "discriminator": { "mapping": { "BSBT": "#/$defs/BSBT", "GSE": "#/$defs/GSE", "bsbt": "#/$defs/BSBT", "gse": "#/$defs/GSE" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/BSBT" }, { "$ref": "#/$defs/GSE" } ] }, { "type": "null" } ], "default": null, "description": "Propagation scheme, by default S&L for nonstationary and SORDUP for stationary computation.", "title": "Scheme" } }, "title": "PROP", "type": "object" }, "Param": { "additionalProperties": false, "properties": { "core": { "anyOf": [ { "$ref": "#/$defs/rompy__schism__namelists__param__Core" }, { "type": "null" } ] }, "opt": { "anyOf": [ { "$ref": "#/$defs/Opt" }, { "type": "null" } ] }, "vertical": { "anyOf": [ { "$ref": "#/$defs/Vertical" }, { "type": "null" } ] }, "schout": { "anyOf": [ { "$ref": "#/$defs/Schout" }, { "type": "null" } ] } }, "title": "Param", "type": "object" }, "Petscoptions": { "additionalProperties": false, "properties": { "ksptype": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "LGMRES", "description": "Controls the linear solver type used by PETSc. Options include GMRES, LGMRES (augmented GMRES), DGMRES (deflated GMRES), PGMRES (pipelined GMRES), and KSPBCGSL (variant of Enhanced BiCGStab(L)).", "title": "Ksptype" }, "rtol": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1e-20, "description": "Relative convergence tolerance, representing the relative decrease in the residual norm for the iterative solver.", "title": "Rtol" }, "abstol": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1e-20, "description": "Absolute convergence tolerance, representing the absolute size of the residual norm for the iterative solver.", "title": "Abstol" }, "dtol": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 10000.0, "description": "Divergence tolerance for the iterative solver.", "title": "Dtol" }, "maxits": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1000, "description": "Maximum number of iterations allowed for the iterative solver.", "title": "Maxits" }, "initialguessnonzero": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Boolean flag indicating whether the initial guess for the iterative solver is nonzero.", "title": "Initialguessnonzero" }, "gmrespreallocate": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Boolean flag indicating whether GMRES and FGMRES should preallocate all needed work vectors at initial setup.", "title": "Gmrespreallocate" }, "pctype": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "SOR", "description": "Controls the preconditioner type used by PETSc. Options include SOR (successive over relaxation), ASM (additive Schwarz method), HYPRE (LLNL package), SPAI (Sparse Approximate Inverse), and NONE (no preconditioning).", "title": "Pctype" } }, "title": "Petscoptions", "type": "object" }, "Ph_icm": { "additionalProperties": false, "properties": { "ppatch0": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -999, "description": "Region flag for pH modeling. If set to 1, pH modeling is enabled for all elements. If set to -999, spatial pH modeling is used.", "title": "Ppatch0" }, "pkcaco3": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 60.0, "description": "Dissolution rate constant between calcium carbonate (CaCO3) and calcium ions (Ca++)", "title": "Pkcaco3" }, "pkca": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 60.0, "description": "Sediment surface transfer coefficient from calcium carbonate (CaCO3) to calcium ions (Ca++)", "title": "Pkca" }, "prea": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "Reaeration rate for carbon dioxide (CO2)", "title": "Prea" }, "inu_ph": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Nudge option for pH model. Controls whether pH values are adjusted during simulation.", "title": "Inu Ph" } }, "title": "Ph_icm", "type": "object" }, "PhysicsOff": { "description": "Physics commands to be switched off.\n\nAttributes\n----------\nWINDGROWTH : str = \"windgrowth\"\n Switches off wind growth (in commands GEN1, GEN2, GEN3).\nQUADRUPL : str = \"quadrupl\"\n Switches off quadruplet wave interactions (in command GEN3).\nWCAPPING : str = \"wcapping\"\n Switches off whitecapping (in command GEN3).\nBREAKING : str = \"breaking\"\n Switches off wave breaking dissipation.\nREFRAC : str = \"refrac\"\n Switches off wave refraction (action transport in theta space).\nFSHIFT : str = \"fshift\"\n Switches off frequency shifting (action transport in sigma space).\nBNDCHK : str = \"bndchk\"\n Switches off the checking of the delta imposed and computed Hs at the boundary.", "enum": [ "windgrowth", "quadrupl", "wcapping", "breaking", "refrac", "fshift", "bndchk" ], "title": "PhysicsOff", "type": "string" }, "Poc": { "additionalProperties": false, "properties": { "erosion": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 864, "description": "Erosion rate in kilograms per square meter per day", "title": "Erosion" }, "etau": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1e-06, "description": "Critical bottom shear stress in Pascals", "title": "Etau" }, "eporo": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.8, "description": "Coefficient in erosion formula (see code in icm_sfm.F90)", "title": "Eporo" }, "efrac": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.5, "description": "Fraction coefficient in erosion formula (see code in icm_sfm.F90)", "title": "Efrac" }, "ediso": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 2.5, "description": "H2S erosion coefficient (see code in icm_sfm.F90)", "title": "Ediso" }, "dfrac": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.02, 0.02 ], "description": "Deposition fraction of POC (Particulate Organic Carbon). If negative, dfrac will be computed", "title": "Dfrac" }, "dws_poc": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 3.0, 3.0 ], "description": "Coefficient in POC erosion (see code in icm_sfm.F90)", "title": "Dws Poc" } }, "title": "Poc", "type": "object" }, "Proc": { "additionalProperties": false, "properties": { "procname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "ACS", "description": "Project name for the simulation", "title": "Procname" }, "dimmode": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "Mode of run: 2 for 2D (always 2D when coupled to SCHISM)", "title": "Dimmode" }, "lstea": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Steady mode flag (under development)", "title": "Lstea" }, "lqstea": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Quasi-Steady Mode flag. If True, WWM-II performs subiterations defined as DELTC/NQSITER unless QSCONVI is reached", "title": "Lqstea" }, "lsphe": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Flag for spherical coordinates (lon/lat)", "title": "Lsphe" }, "lnautin": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Flag for nautical convention in input angles (degrees). Recommended to be True", "title": "Lnautin" }, "lnautout": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Flag for nautical convention in output angles. If True, 0 is from north, 90 is from east. If False, mathematical convention is used (0: to east, 90: to north)", "title": "Lnautout" }, "lmono_in": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Flag for prescribing monochromatic wave height Hmono as boundary conditions. Incident wave is defined as Hmono = sqrt(2) * Hs", "title": "Lmono In" }, "lmono_out": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Flag for outputting wave heights in terms of Lmono", "title": "Lmono Out" }, "begtc": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "20200101.000000", "description": "Start time of the simulation in format 'yyyymmdd.hhmmss'", "title": "Begtc" }, "deltc": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 600, "description": "Time step in seconds (must match dt*nstep_wwm in SCHISM)", "title": "Deltc" }, "unitc": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "SEC", "description": "Unit of time step (SEC for seconds)", "title": "Unitc" }, "endtc": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "20200201.000000", "description": "End time of the simulation in format 'yyyymmdd.hhmmss'", "title": "Endtc" }, "dmin": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.01, "description": "Minimum water depth. Must be the same as h0 in SCHISM", "title": "Dmin" } }, "title": "Proc", "type": "object" }, "QUADRUPL": { "additionalProperties": false, "description": "Nonlinear quadruplet wave interactions.\n\n.. code-block:: text\n\n QUADRUPL [iquad] [lambda] [cnl4] [Csh1] [Csh2] [Csh3]\n\nWith this option the user can influence the computation of nonlinear quadruplet\nwave interactions which are usually included in the computations. Can be\nde-activated with command OFF QUAD. Note that the DIA approximation of the\nquadruplet interactions is a poor approximation for long-crested waves and\nfrequency resolutions that are deviating much more than 10% (see command CGRID).\nNote that DIA is usually updated per sweep, either semi-implicit (`iquad = 1`) or\nexplicit (`iquad = 2`). However, when ambient current is included, the bounds of\nthe directional sector within a sweep may be different for each frequency bin\n(particularly the higher frequencies are modified by the current). So there may be\nsome overlap of frequency bins between the sweeps, implying non-conservation of\nwave energy. To prevent this the user is advised to choose the integration of DIA\nper iteration instead of per sweep, i.e. `iquad = 3`. If you want to speed up your\ncomputation a bit more, than the choice `iquad = 8` is a good choice.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import QUADRUPL\n quadrupl = QUADRUPL()\n print(quadrupl.render())\n kwargs = dict(\n iquad=3, lambd=0.25, cnl4=3.0e7, csh1=5.5, csh2=0.833333, csh3=-1.25\n )\n quadrupl = QUADRUPL(**kwargs)\n print(quadrupl.render())", "properties": { "model_type": { "default": "quadrupl", "description": "Model type discriminator", "enum": [ "quadrupl", "QUADRUPL" ], "title": "Model Type", "type": "string" }, "iquad": { "anyOf": [ { "enum": [ 1, 2, 3, 8, 4, 51, 52, 53 ], "type": "integer" }, { "type": "null" } ], "default": null, "description": "Numerical procedures for integrating the quadruplets: 1 = semi-implicit per sweep, 2 = explicit per sweep, 3 = explicit per iteration, 8 = explicit per iteration, but with a more efficient implementation, 4 = multiple DIA, 51 = XNL (deep water transfer), 52 = XNL (deep water transfer with WAM depth scaling), 53 XNL (finite depth transfer) (SWAN default: 2)", "title": "Iquad" }, "lambd": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Coefficient for quadruplet configuration in case of DIA (SWAN default: 0.25)", "title": "Lambd" }, "cnl4": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Proportionality coefficient for quadruplet interactions in case of DIA (SWAN default: 3.0e7", "title": "Cnl4" }, "csh1": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Coefficient for shallow water scaling in case of DIA (SWAN default: 5.5)", "title": "Csh1" }, "csh2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Coefficient for shallow water scaling in case of DIA (SWAN default: 0.833333)", "title": "Csh2" }, "csh3": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Coefficient for shallow water scaling in case of DIA (SWAN default: -1.25)", "title": "Csh3" } }, "title": "QUADRUPL", "type": "object" }, "QUANTITIES": { "additionalProperties": false, "description": "Define output settings for multiple output.\n\n.. code-block:: text\n\n QUANTITY < output > ...\n QUANTITY < output > ...\n ..\n\nThis component can be used to prescribe and render multiple QUANTITY components.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import QUANTITY, QUANTITIES\n q1 = QUANTITY(output=[\"xp\"], hexp=100)\n q2 = QUANTITY(output=[\"hsign\", \"tm01\", \"rtmm10\"], excv=-9)\n q3 = QUANTITY(output=[\"hsign\", \"tm02\", \"fspr\"], fmin=0.03, fmax=0.5)\n q4 = QUANTITY(output=[\"hsign\"], fswell=0.08)\n q5 = QUANTITY(output=[\"per\"], short=\"Tm-1,0\", power=0)\n q6 = QUANTITY(output=[\"transp\", \"force\"], coord=\"frame\")\n quantities = QUANTITIES(quantities=[q1, q2, q3, q4, q5, q6])\n print(quantities.render())", "properties": { "model_type": { "default": "quantities", "description": "Model type discriminator", "enum": [ "quantities", "QUANTITIES" ], "title": "Model Type", "type": "string" }, "quantities": { "description": "QUANTITY components", "items": { "$ref": "#/$defs/QUANTITY" }, "title": "Quantities", "type": "array" } }, "required": [ "quantities" ], "title": "QUANTITIES", "type": "object" }, "QUANTITY": { "additionalProperties": false, "description": "Define output settings.\n\n.. code-block:: text\n\n QUANTITY < output > 'short' 'long' [lexp] [hexp] [excv] [power] [ref] &\n [fswell] [fmin] [fmax] ->PROBLEMCOORD|FRAME\n\n Examples:\n ---------\n QUANTITY Xp hexp=100.\n QUANTITY HS TM01 RTMM10 excv=-9.\n QUANTITY HS TM02 FSPR fmin=0.03 fmax=0.5\n QUANTITY Hswell fswell=0.08\n QUANTITY Per short='Tm-1,0' power=0.\n QUANTITY Transp Force Frame\n\nWith this command the user can influence:\n\n* The naming of output quantities\n* The accuracy of writing output quantities\n* The definition of some output quantities\n* Reference direction for vectors\n\nNote\n----\nThe following data are accepted only in combination with some specific quantities:\n\n* power\n* ref\n* fswell\n* fmin\n* fmax\n* PROBLEMCOORD\n* FRAME\n\nNote\n----\n**PROBLEMCOORD**: Vector components are relative to the x- and y-axes of the\nproblem coordinate system (see command `SET`):\n\n* Directions are counterclockwise relative to the positive x-axis of the problem\n coordinate system if Cartesian direction convention is used.\n* Directions are relative to North (clockwise) if Nautical direction convention is\n used.\n\nNote\n----\n**FRAME**: If output is requested on sets created by command FRAME or\nautomatically (see command `SET`) (`COMPGRID` or `BOTTGRID`):\n\n* Vector components are relative to the x- and y-axes of the frame coordinate\n system.\n* Directions are counterclockwise relative to the positive x-axis of the frame\n coordinate system if Cartesian direction convention is used.\n* Directions are relative to North (clockwise) if Nautical direction convention\n is used.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import QUANTITY\n quant = QUANTITY(output=[\"xp\"], hexp=100)\n print(quant.render())\n quant = QUANTITY(output=[\"hsign\", \"tm01\", \"rtmm10\"], excv=-9)\n print(quant.render())\n quant = QUANTITY(output=[\"hsign\", \"tm02\", \"fspr\"], fmin=0.03, fmax=0.5)\n print(quant.render())\n quant = QUANTITY(output=[\"hsign\"], fswell=0.08)\n print(quant.render())\n quant = QUANTITY(output=[\"per\"], short=\"Tm-1,0\", power=0)\n print(quant.render())\n quant = QUANTITY(output=[\"transp\", \"force\"], coord=\"frame\")\n print(quant.render())", "properties": { "model_type": { "default": "quantity", "description": "Model type discriminator", "enum": [ "quantity", "QUANTITY" ], "title": "Model Type", "type": "string" }, "output": { "description": "The output variables to define settings for", "items": { "$ref": "#/$defs/BlockOptions" }, "minItems": 1, "title": "Output", "type": "array" }, "short": { "anyOf": [ { "maxLength": 16, "type": "string" }, { "type": "null" } ], "default": null, "description": "Short name of the output quantity (e.g. the name in the heading of a table written by SWAN). If this option is not used, SWAN will use a realistic name", "title": "Short" }, "long": { "anyOf": [ { "maxLength": 16, "type": "string" }, { "type": "null" } ], "default": null, "description": "Long name of the output quantity (e.g. the name in the heading of a block output written by SWAN). If this option is not used, SWAN will use a realistic name", "title": "Long" }, "lexp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Lowest expected value of the output quantity", "title": "Lexp" }, "hexp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Highest expected value of the output quantity; the highest expected value is used by SWAN to determine the number of decimals in a table with heading. So the `QUANTITY` command can be used in case the default number of decimals in a table is unsatisfactory", "title": "Hexp" }, "excv": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "In case there is no valid value (e.g. wave height in a dry point) this exception value is written in a table or block output", "title": "Excv" }, "power": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "power `p` appearing in the definition of `PER`, `RPER` and `WLEN`. Note that the value for `power` given for `PER` affects also the value of `RPER`; the power for `WLEN` is independent of that of `PER` or `RPER` (SWAN default: 1)", "title": "Power" }, "ref": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Reference time used for the quantity `TSEC`. Default value: starting time of the first computation, except in cases where this is later than the time of the earliest input. In these cases, the time of the earliest input is used", "title": "Ref" }, "fswell": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Upper limit of frequency range used for computing the quantity HSWELL (SWAN default: 0.1 Hz)", "title": "Fswell" }, "noswll": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Number of swells to output for watershed quantities ", "title": "Noswll" }, "fmin": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Lower limit of frequency range used for computing integral parameters (SWAN Default: 0.0 Hz)", "title": "Fmin" }, "fmax": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Upper limit of frequency range used for computing integral parameters (SWAN default: 1000.0 Hz, acts as infinity)", "title": "Fmax" }, "coord": { "anyOf": [ { "enum": [ "problemcoord", "frame" ], "type": "string" }, { "type": "null" } ], "default": null, "description": "Define if vectors and directions refer to the problem coordinate system ('problemcoord') or sets created by command FRAME ('frame') (SWAN default: problemcoord)", "title": "Coord" } }, "required": [ "output" ], "title": "QUANTITY", "type": "object" }, "RAY": { "additionalProperties": false, "description": "Output locations along a depth contour.\n\n.. code-block:: text\n\n RAY 'rname' [xp1] [yp1] [xq1] [yq1] < [int] [xp] [yp] [xq] [yq] >\n\nWith this optional command the user provides SWAN with information to determine\noutput locations along the depth contour line(s) defined subsequently in command\n`ISOLINE` (see below).\n\nThese locations are determined by SWAN as the intersections of the depth contour\nline(s) and the set of straight rays defined in this command RAY. These rays are\ncharacterized by a set of master rays defined by their start and end positions\n(`xp`,`yp`) and (`xq`,`yq`). Between each pair of sequential master rays thus\ndefined SWAN generates `int-1` intermediate rays by linear interpolation of the\nstart and end positions.\n\nRays defined by this component have nothing in common with wave rays (e.g. as\nobtained from conventional refraction computations).\n\nNote\n----\nCannot be used in 1D-mode.\n\nNote\n----\nAll coordinates and distances should be given in m when Cartesian coordinates are\nused or degrees when Spherical coordinates are used (see command `COORD`).\n\nNote\n----\nWhen using rays the input grid for bottom and water level should not be curvilinear.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import RAY\n loc = RAY(\n rname=\"outray\",\n xp1=171.9,\n yp1=-40.1,\n xq1=172.1,\n yq1=-39.9,\n npts=[3, 3],\n xp=[171.9, 173.9],\n yp=[-38.1, -38.1],\n xq=[172.1, 174.1],\n yq=[-37.9, -37.9],\n )\n print(loc.render())", "properties": { "model_type": { "default": "ray", "description": "Model type discriminator", "enum": [ "ray", "RAY" ], "title": "Model Type", "type": "string" }, "rname": { "description": "Name of the set of rays defined by this command", "maxLength": 32, "title": "Rname", "type": "string" }, "xp1": { "description": "Problem coordinate of the begin point of the first master ray in the x-direction", "title": "Xp1", "type": "number" }, "yp1": { "description": "Problem coordinate of the begin point of the first master ray in the y-direction", "title": "Yp1", "type": "number" }, "xq1": { "description": "Problem coordinate of the end point of the first master ray in the x-direction", "title": "Xq1", "type": "number" }, "yq1": { "description": "Problem coordinate of the end point of the first master ray in the y-direction", "title": "Yq1", "type": "number" }, "npts": { "description": "The `int` RAY parameter, number of subdivisions between the previous master ray and the following master ray defined by the following data (number of subdivisions is one morethan the number of interpolated rays)", "items": { "type": "integer" }, "minItems": 1, "title": "Npts", "type": "array" }, "xp": { "description": "problem coordinates of the begin of each subsequent master ray in the x-direction", "items": { "type": "number" }, "minItems": 1, "title": "Xp", "type": "array" }, "yp": { "description": "problem coordinates of the begin of each subsequent master ray in the y-direction", "items": { "type": "number" }, "minItems": 1, "title": "Yp", "type": "array" }, "xq": { "description": "problem coordinates of the end of each subsequent master ray in the x-direction", "items": { "type": "number" }, "minItems": 1, "title": "Xq", "type": "array" }, "yq": { "description": "problem coordinates of the end of each subsequent master ray in the y-direction", "items": { "type": "number" }, "minItems": 1, "title": "Yq", "type": "array" } }, "required": [ "rname", "xp1", "yp1", "xq1", "yq1", "npts", "xp", "yp", "xq", "yq" ], "title": "RAY", "type": "object" }, "RDIFF": { "additionalProperties": false, "description": "Diffuse reflection.\n\n.. code-block:: text\n\n RDIFF [pown]\n\nSpecular reflection where incident waves are scattered over reflected direction.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import RDIFF\n refl = RDIFF()\n print(refl.render())\n refl = RDIFF(pown=1.0)\n print(refl.render())", "properties": { "model_type": { "default": "rdiff", "description": "Model type discriminator", "enum": [ "rdiff", "RDIFF" ], "title": "Model Type", "type": "string" }, "pown": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Each incoming direction \u03b8 is scattered over reflected direction \u03b8_refl according to cos^pown(\u03b8-\u03b8_refl). The parameter `pown` indicates the widthof the redistribution function (SWAN default: 1.0)", "title": "Pown" } }, "title": "RDIFF", "type": "object" }, "READCOORD": { "additionalProperties": false, "description": "SWAN coordinates reader.\n\n.. code-block:: text\n\n READGRID COORDINATES [fac] 'fname' [idla] [nhedf] [nhedvec] &\n FREE|FORMAT ('form'|idfm)\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.readgrid import READCOORD\n readcoord = READCOORD(\n fac=1.0,\n fname=\"coords.txt\",\n idla=3,\n format=\"free\",\n )\n print(readcoord.render())", "properties": { "model_type": { "default": "readcoord", "description": "Model type discriminator", "enum": [ "readcoord", "READCOORD" ], "title": "Model Type", "type": "string" }, "grid_type": { "const": "coordinates", "default": "coordinates", "description": "Type of the SWAN grid file", "title": "Grid Type", "type": "string" }, "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" }, "fname": { "description": "Name of the SWAN coordinates file", "title": "Fname", "type": "string" } }, "required": [ "fname" ], "title": "READCOORD", "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" }, "REFL": { "additionalProperties": false, "description": "Obstacle reflections.\n\n.. code-block:: text\n\n REFL [reflc]\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import REFL\n refl = REFL()\n print(refl.render())\n refl = REFL(reflc=0.5)\n print(refl.render())", "properties": { "model_type": { "default": "refl", "description": "Model type discriminator", "enum": [ "refl", "REFL" ], "title": "Model Type", "type": "string" }, "reflc": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Constant reflection coefficient (ratio of reflected over incoming significant wave height) (SWAN default: 1.0)", "title": "Reflc" } }, "title": "REFL", "type": "object" }, "REL": { "additionalProperties": false, "description": "Relative frequency spectra.\n\n.. code-block:: text\n\n REL\n\nSpectra are computed as a function of relative frequency, i.e., the frequency as\nmeasured when moving with current.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.output import REL\n freq = REL()\n print(freq.render())", "properties": { "model_type": { "default": "rel", "description": "Model type discriminator", "enum": [ "rel", "REL" ], "title": "Model Type", "type": "string" } }, "title": "REL", "type": "object" }, "RSPEC": { "additionalProperties": false, "description": "Specular reflection.\n\n.. code-block:: text\n\n RSPEC\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import RSPEC\n refl = RSPEC()\n print(refl.render())", "properties": { "model_type": { "default": "rspec", "description": "Model type discriminator", "enum": [ "rspec", "RSPEC" ], "title": "Model Type", "type": "string" } }, "title": "RSPEC", "type": "object" }, "SCAT": { "additionalProperties": false, "description": "Scattering.\n\n.. code-block:: text\n\n SCAT [iqcm] (GRID [rfac]) (TRUNC [alpha] [qmax])\n\nUsing this optional command, the user activates a source term that allows for the\ngeneration and propagation of cross correlations between scattered waves due to\nvariations in the bathymetry and mean currents. Such variations are rapid compared\nto the distancebetween the crossing waves (at the scale of 100-1000 m) and is\nparticularly relevant for cases involving narrowband waves (swells) in coastal\nregions with shallow water and ambient currents. In turn, the immediate spatial\neffects of coherent scattering, interference, refraction and diffraction can cause\nlarge-scale changes in the wave parameters.\n\nReferences\n----------\nSmit, P.B. and Janssen, T.T., 2013. The evolution of inhomogeneous wave statistics\nthrough a variable medium. Journal of Physical Oceanography, 43(8), pp.1741-1758.\n\nSmit, P.B., Janssen, T.T. and Herbers, T.H.C., 2015. Stochastic modeling of\ninhomogeneous ocean waves. Ocean Modelling, 96, pp.26-35.\n\nSmit, P.B., Janssen, T.T. and Herbers, T.H.C., 2015. Stochastic modeling of\ncoherent wave fields over variable depth. Journal of Physical Oceanography, 45(4),\npp.1139-1154.\n\nAkrish, G., Smit, P., Zijlema, M. and Reniers, A., 2020. Modelling statistical wave\ninterferences over shear currents. Journal of Fluid Mechanics, 891, p.A2.\n\nNotes\n-----\nImplemented in SWAN 41.41.\n\nIf both `alpha` and `qmax` options are provided to truncate the infinite\nconvolution sum their mimimum is considered as the final limit on the sum.\n\nExamples:\n---------\n\n.. ipython:: python\n\n from rompy.swan.components.physics import SCAT\n scat = SCAT()\n print(scat.render())\n scat = SCAT(iqcm=2, rfac=1.0, alpha=1.0)\n print(scat.render())", "properties": { "model_type": { "default": "scat", "description": "Model type discriminator", "enum": [ "scat", "SCAT" ], "title": "Model Type", "type": "string" }, "iqcm": { "anyOf": [ { "enum": [ 0, 1, 2 ], "type": "integer" }, { "type": "null" } ], "default": null, "description": "Indicates the modelling and computation of QC scattering:\n\n* 0: no scattering\n* 1: scattering due to non-uniform bathymetry and currents (the latter only if applicable; see command `INPGRID CURRENT`)\n* 2: wave-current interaction under the assumption of a slowly varying bathymetry\n\n(SWAN default: 1)", "title": "Iqcm" }, "rfac": { "anyOf": [ { "minimum": 1.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "The resolution factor through which the incident spectral width ismultiplied (SWAN default: 1.0)", "title": "Rfac" }, "alpha": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The coefficient by which the mean wave number is multiplied to set thelimit on the convolution sum (SWAN default: 1.0)", "title": "Alpha" }, "qmax": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The maximum scattering wave number (in 1/m)", "title": "Qmax" } }, "title": "SCAT", "type": "object" }, "SCHISMConfig": { "additionalProperties": true, "properties": { "model_type": { "const": "schism", "default": "schism", "description": "The model type for SCHISM.", "title": "Model Type", "type": "string" }, "template": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "/opt/hostedtoolcache/Python/3.10.17/x64/lib/python3.10/site-packages/rompy/templates/schism", "description": "The path to the model template", "title": "Template" }, "checkout": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "main", "description": "The git branch to use if the template is a git repo", "title": "Checkout" }, "grid": { "$ref": "#/$defs/SCHISMGrid", "description": "The model grid" }, "data": { "anyOf": [ { "$ref": "#/$defs/SCHISMData" }, { "type": "null" } ], "default": null, "description": "Model inputs" }, "nml": { "anyOf": [ { "$ref": "#/$defs/NML" }, { "type": "null" } ], "default": {}, "description": "The namelist" } }, "required": [ "grid" ], "title": "SCHISMConfig", "type": "object" }, "SCHISMData": { "additionalProperties": false, "description": "This class is used to gather all required input forcing for SCHISM", "properties": { "data_type": { "const": "schism", "default": "schism", "description": "Model type discriminator", "title": "Data Type", "type": "string" }, "atmos": { "anyOf": [ { "$ref": "#/$defs/SCHISMDataSflux" }, { "type": "null" } ], "default": null, "description": "atmospheric data" }, "ocean": { "anyOf": [ { "$ref": "#/$defs/SCHISMDataOcean" }, { "type": "null" } ], "default": null, "description": "ocean data" }, "wave": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "$ref": "#/$defs/SCHISMDataWave" }, { "type": "null" } ], "default": null, "description": "wave data", "title": "Wave" }, "tides": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "$ref": "#/$defs/SCHISMDataTides" }, { "type": "null" } ], "default": null, "description": "tidal data", "title": "Tides" } }, "title": "SCHISMData", "type": "object" }, "SCHISMDataBoundary": { "additionalProperties": false, "description": "This class is used to extract ocean boundary data from a griddd dataset at all open\nboundary nodes.", "properties": { "model_type": { "const": "boundary", "default": "data_boundary", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "id": { "choices": [ "elev2D", "uv3D", "TEM_3D", "SAL_3D", "bnd" ], "default": "bnd", "description": "SCHISM th id of the source", "title": "Id", "type": "string" }, "source": { "description": "Source reader, must return an xarray gridded dataset in the open method", "discriminator": { "mapping": { "csv": "#/$defs/SourceTimeseriesCSV", "datamesh": "#/$defs/SourceDatamesh", "file": "#/$defs/SourceFile", "intake": "#/$defs/SourceIntake", "wavespectra": "#/$defs/SourceWavespectra" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/SourceTimeseriesCSV" }, { "$ref": "#/$defs/SourceDatamesh" }, { "$ref": "#/$defs/SourceFile" }, { "$ref": "#/$defs/SourceIntake" }, { "$ref": "#/$defs/SourceWavespectra" } ], "title": "Source" }, "link": { "default": false, "description": "Whether to create a symbolic link instead of copying the file", "title": "Link", "type": "boolean" }, "filter": { "anyOf": [ { "$ref": "#/$defs/Filter" }, { "type": "null" } ], "description": "Optional filter specification to apply to the dataset" }, "variables": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": [], "description": "Subset of variables to extract from the dataset", "title": "Variables" }, "coords": { "anyOf": [ { "$ref": "#/$defs/DatasetCoords" }, { "type": "null" } ], "default": { "t": "time", "x": "longitude", "y": "latitude", "z": "depth", "s": "site" }, "description": "Names of the coordinates in the dataset" }, "crop_data": { "default": true, "description": "Update crop filter from Time object if passed to get method", "title": "Crop Data", "type": "boolean" }, "buffer": { "default": 0.0, "description": "Space to buffer the grid bounding box if `filter_grid` is True", "title": "Buffer", "type": "number" }, "time_buffer": { "default": [ 0, 1 ], "description": "Number of source data timesteps to buffer the time range if `filter_time` is True", "items": { "type": "integer" }, "title": "Time Buffer", "type": "array" }, "spacing": { "anyOf": [ { "type": "number" }, { "const": "parent", "type": "string" }, { "type": "null" } ], "default": null, "description": "Spacing between points along the grid boundary to retrieve data for. If None (default), points are defined from the the actual grid object passed to the `get` method. If 'parent', the resolution of the parent dataset is used to define the spacing.", "title": "Spacing" }, "sel_method": { "default": "interp", "description": "Xarray method to use for selecting boundary points from the dataset", "enum": [ "sel", "interp" ], "title": "Sel Method", "type": "string" }, "sel_method_kwargs": { "additionalProperties": true, "default": {}, "description": "Keyword arguments for sel_method", "title": "Sel Method Kwargs", "type": "object" }, "data_type": { "const": "boundary", "default": "boundary", "description": "Model type discriminator", "title": "Data Type", "type": "string" }, "variable": { "description": "variable name in the dataset", "title": "Variable", "type": "string" }, "interpolate_missing_coastal": { "default": true, "description": "interpolate_missing coastal data points", "title": "Interpolate Missing Coastal", "type": "boolean" } }, "required": [ "source", "variable" ], "title": "SCHISMDataBoundary", "type": "object" }, "SCHISMDataOcean": { "additionalProperties": false, "description": "This class is used define all ocean boundary forcing", "properties": { "data_type": { "const": "ocean", "default": "ocean", "description": "Model type discriminator", "title": "Data Type", "type": "string" }, "elev2D": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "$ref": "#/$defs/SCHISMDataBoundary" }, { "type": "null" } ], "default": null, "description": "elev2D", "title": "Elev2D" }, "uv3D": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "$ref": "#/$defs/SCHISMDataBoundary" }, { "type": "null" } ], "default": null, "description": "uv3D", "title": "Uv3D" }, "TEM_3D": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "$ref": "#/$defs/SCHISMDataBoundary" }, { "type": "null" } ], "default": null, "description": "TEM_3D", "title": "Tem 3D" }, "SAL_3D": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "$ref": "#/$defs/SCHISMDataBoundary" }, { "type": "null" } ], "default": null, "description": "SAL_3D", "title": "Sal 3D" } }, "title": "SCHISMDataOcean", "type": "object" }, "SCHISMDataSflux": { "additionalProperties": false, "properties": { "data_type": { "const": "sflux", "default": "sflux", "description": "Model type discriminator", "title": "Data Type", "type": "string" }, "air_1": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "$ref": "#/$defs/SfluxAir" }, { "type": "null" } ], "default": null, "description": "sflux air source 1", "title": "Air 1" }, "air_2": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "$ref": "#/$defs/SfluxAir" }, { "type": "null" } ], "default": null, "description": "sflux air source 2", "title": "Air 2" }, "rad_1": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "$ref": "#/$defs/SfluxRad" }, { "type": "null" } ], "default": null, "description": "sflux rad source 1", "title": "Rad 1" }, "rad_2": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "$ref": "#/$defs/SfluxRad" }, { "type": "null" } ], "default": null, "description": "sflux rad source 2", "title": "Rad 2" }, "prc_1": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "$ref": "#/$defs/SfluxPrc" }, { "type": "null" } ], "default": null, "description": "sflux prc source 1", "title": "Prc 1" }, "prc_2": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "$ref": "#/$defs/SfluxPrc" }, { "type": "null" } ], "default": null, "description": "sflux prc source 2", "title": "Prc 2" } }, "title": "SCHISMDataSflux", "type": "object" }, "SCHISMDataTides": { "additionalProperties": false, "description": "This class is used to define the tidal forcing for SCHISM.", "properties": { "data_type": { "const": "tides", "default": "tide", "description": "Model type discriminator", "title": "Data Type", "type": "string" }, "tidal_data": { "$ref": "#/$defs/TidalDataset", "description": "tidal dataset" }, "cutoff_depth": { "default": 50.0, "description": "cutoff depth for tides", "title": "Cutoff Depth", "type": "number" }, "flags": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ [ 5, 3, 0, 0 ] ], "description": "nested list of bctypes", "title": "Flags" }, "constituents": { "anyOf": [ { "type": "string" }, { "items": {}, "type": "array" } ], "default": "major", "description": "constituents", "title": "Constituents" }, "database": { "choices": [ "tpxo", "fes2014" ], "default": "tpxo", "description": "database", "title": "Database", "type": "string" }, "add_earth_tidal": { "default": true, "description": "add_earth_tidal", "title": "Add Earth Tidal", "type": "boolean" }, "ethconst": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [], "description": "constant elevation value for each open boundary", "title": "Ethconst" }, "vthconst": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [], "description": "constant discharge value for each open boundary", "title": "Vthconst" }, "tthconst": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [], "description": "constant temperature value for each open boundary", "title": "Tthconst" }, "sthconst": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [], "description": "constant salinity value for each open boundary", "title": "Sthconst" }, "tobc": { "anyOf": [ { "items": { "type": "number" }, "type": "array" }, { "type": "null" } ], "default": [ 1 ], "description": "nuding factor of temperature for each open boundary", "title": "Tobc" }, "sobc": { "anyOf": [ { "items": { "type": "number" }, "type": "array" }, { "type": "null" } ], "default": [ 1 ], "description": "nuding factor of salinity for each open boundary", "title": "Sobc" }, "relax": { "anyOf": [ { "items": { "type": "number" }, "type": "array" }, { "type": "null" } ], "default": [], "description": "relaxation constants for inflow and outflow", "title": "Relax" } }, "required": [ "tidal_data" ], "title": "SCHISMDataTides", "type": "object" }, "SCHISMDataWave": { "additionalProperties": false, "description": "This class is used to write wave spectral boundary data. Spectral data is extracted\nfrom the nearest points along the grid boundary", "properties": { "model_type": { "const": "boundary", "default": "data_boundary", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "id": { "description": "Unique identifier for this data source", "title": "Id", "type": "string" }, "source": { "description": "Dataset source reader, must return a wavespectra-enabled xarray dataset in the open method", "discriminator": { "mapping": { "csv": "#/$defs/SourceTimeseriesCSV", "datamesh": "#/$defs/SourceDatamesh", "file": "#/$defs/SourceFile", "intake": "#/$defs/SourceIntake", "wavespectra": "#/$defs/SourceWavespectra" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/SourceTimeseriesCSV" }, { "$ref": "#/$defs/SourceDatamesh" }, { "$ref": "#/$defs/SourceFile" }, { "$ref": "#/$defs/SourceIntake" }, { "$ref": "#/$defs/SourceWavespectra" } ], "title": "Source" }, "link": { "default": false, "description": "Whether to create a symbolic link instead of copying the file", "title": "Link", "type": "boolean" }, "filter": { "anyOf": [ { "$ref": "#/$defs/Filter" }, { "type": "null" } ], "description": "Optional filter specification to apply to the dataset" }, "variables": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": [], "description": "Subset of variables to extract from the dataset", "title": "Variables" }, "coords": { "anyOf": [ { "$ref": "#/$defs/DatasetCoords" }, { "type": "null" } ], "default": { "t": "time", "x": "longitude", "y": "latitude", "z": "depth", "s": "site" }, "description": "Names of the coordinates in the dataset" }, "crop_data": { "default": true, "description": "Update crop filter from Time object if passed to get method", "title": "Crop Data", "type": "boolean" }, "buffer": { "default": 2.0, "description": "Space to buffer the grid bounding box if `filter_grid` is True", "title": "Buffer", "type": "number" }, "time_buffer": { "default": [ 0, 1 ], "description": "Number of source data timesteps to buffer the time range if `filter_time` is True", "items": { "type": "integer" }, "title": "Time Buffer", "type": "array" }, "spacing": { "anyOf": [ { "type": "number" }, { "const": "parent", "type": "string" }, { "type": "null" } ], "default": null, "description": "Spacing between points along the grid boundary to retrieve data for. If None (default), points are defined from the the actual grid object passed to the `get` method. If 'parent', the resolution of the parent dataset is used to define the spacing.", "title": "Spacing" }, "sel_method": { "additionalProperties": true, "default": "nearest", "description": "Keyword arguments for sel_method", "title": "Sel Method", "type": "object" }, "sel_method_kwargs": { "additionalProperties": true, "default": { "unique": true }, "description": "Keyword arguments for sel_method", "title": "Sel Method Kwargs", "type": "object" }, "grid_type": { "const": "boundary_wave_station", "default": "boundary_wave_station", "description": "Model type discriminator", "title": "Grid Type", "type": "string" }, "data_type": { "const": "wave", "default": "wave", "description": "Model type discriminator", "title": "Data Type", "type": "string" } }, "required": [ "id", "source" ], "title": "SCHISMDataWave", "type": "object" }, "SCHISMGrid": { "additionalProperties": false, "description": "SCHISM grid in geographic space.", "properties": { "grid_type": { "const": "schism", "default": "schism", "description": "Model descriminator", "title": "Grid Type", "type": "string" }, "hgrid": { "$ref": "#/$defs/DataBlob", "description": "Path to hgrid.gr3 file" }, "vgrid": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "$ref": "#/$defs/VgridGenerator" }, { "type": "null" } ], "default": null, "description": "Path to vgrid.in file", "title": "Vgrid" }, "drag": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "type": "number" }, { "$ref": "#/$defs/GR3Generator" }, { "type": "null" } ], "default": null, "description": "Path to drag.gr3 file", "title": "Drag" }, "rough": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "type": "number" }, { "$ref": "#/$defs/GR3Generator" }, { "type": "null" } ], "default": null, "description": "Path to rough.gr3 file", "title": "Rough" }, "manning": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "type": "number" }, { "$ref": "#/$defs/GR3Generator" }, { "type": "null" } ], "default": null, "description": "Path to manning.gr3 file", "title": "Manning" }, "hgridll": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "type": "integer" }, { "$ref": "#/$defs/GridLinker" }, { "type": "null" } ], "default": null, "description": "Path to hgrid.ll file", "title": "Hgridll" }, "diffmin": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "type": "number" }, { "$ref": "#/$defs/GR3Generator" }, { "type": "null" } ], "default": 1e-06, "description": "Path to diffmax.gr3 file or constant value", "title": "Diffmin" }, "diffmax": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "type": "number" }, { "$ref": "#/$defs/GR3Generator" }, { "type": "null" } ], "default": 1.0, "description": "Path to diffmax.gr3 file or constant value", "title": "Diffmax" }, "albedo": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "type": "number" }, { "$ref": "#/$defs/GR3Generator" }, { "type": "null" } ], "default": 0.15, "description": "Path to albedo.gr3 file or constant value", "title": "Albedo" }, "watertype": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "type": "integer" }, { "$ref": "#/$defs/GR3Generator" }, { "type": "null" } ], "default": 1, "description": "Path to watertype.gr3 file or constant value", "title": "Watertype" }, "windrot_geo2proj": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "type": "number" }, { "$ref": "#/$defs/GR3Generator" }, { "type": "null" } ], "default": 0.0, "description": "Path to windrot_geo2proj.gr3 file or constant value", "title": "Windrot Geo2Proj" }, "hgrid_WWM": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "$ref": "#/$defs/GridLinker" }, { "type": "null" } ], "default": null, "description": "Path to hgrid_WWM.gr3 file", "title": "Hgrid Wwm" }, "wwmbnd": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "$ref": "#/$defs/WWMBNDGR3Generator" }, { "type": "null" } ], "default": null, "description": "Path to wwmbnd.gr3 file", "title": "Wwmbnd" }, "crs": { "default": "epsg:4326", "description": "Coordinate reference system", "title": "Crs", "type": "string" } }, "required": [ "hgrid" ], "title": "SCHISMGrid", "type": "object" }, "SEGMENT": { "additionalProperties": false, "description": "Boundary over a segment defined from points.\n\n.. code-block:: text\n\n SEGMENT XY < [x] [y] >\n SEGMENT IJ < [i] [j] >\n\nThe segment is defined either by means of a series of points in terms of problem\ncoordinates (`XY`) or by means of a series of points in terms of grid indices\n(`IJ`). The points do not have to include all or coincide with actual grid points.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.boundary import SEGMENT\n seg = SEGMENT(\n points=dict(\n model_type=\"xy\",\n x=[172, 172, 172, 172.5, 173],\n y=[-41, -40.5, -40, -40, -40],\n fmt=\"0.2f\",\n ),\n )\n print(seg.render())\n seg = SEGMENT(\n points=dict(\n model_type=\"ij\",\n i=[0, 0, 5],\n j=[0, 19, 19],\n ),\n )\n print(seg.render())", "properties": { "model_type": { "default": "segment", "description": "Model type discriminator", "enum": [ "segment", "SEGMENT" ], "title": "Model Type", "type": "string" }, "points": { "description": "Points to define the segment", "discriminator": { "mapping": { "IJ": "#/$defs/IJ", "XY": "#/$defs/XY", "ij": "#/$defs/IJ", "xy": "#/$defs/XY" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/XY" }, { "$ref": "#/$defs/IJ" } ], "title": "Points" } }, "required": [ "points" ], "title": "SEGMENT", "type": "object" }, "SET": { "additionalProperties": false, "description": "SWAN setting commands.\n\n.. code-block:: text\n\n SET [level] [nor] [depmin] [maxmes] [maxerr] [grav] [rho] [cdcap] &\n [inrhog] [hsrerr] NAUTICAL|->CARTESIAN [pwtail] [froudmax] [icewind]\n\nWith this optional command the user assigns values to various general parameters.\n\nNotes\n-----\nThe error level `maxerr` is coded as follows:\n\n* 1: warnings\n* 2: errors (possibly automatically repaired or repairable by SWAN)\n* 3: severe errors\n\nDefault values for `pwtail` depend on formulations of physics:\n\n* command GEN1: `pwtail = 5`\n* command GEN2: `pwtail = 5`\n* command GEN3 KOMEN: `pwtail = 4`\n* command GEN3 WESTH: `pwtail = 4`\n* command GEN3 JANSSEN: `pwtail = 5`\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.startup import SET\n set = SET(level=0.5, direction_convention=\"nautical\")\n print(set.render())\n set = SET(\n level=-1.0,\n nor=90,\n depmin=0.01,\n maxerr=3,\n grav=9.81,\n rho=1025,\n cdcap=2.5e-3,\n inrhog=0,\n hsrerr=0.1,\n direction_convention=\"nautical\",\n )\n print(set.render())", "properties": { "model_type": { "default": "set", "description": "Model type discriminator", "enum": [ "set", "SET" ], "title": "Model Type", "type": "string" }, "level": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Increase in water level that is constant in space and time can be given with this option, `level` is the value of this increase (in m). For a variable water level reference is made to the commands INPGRID and READINP (SWAN default: 0)", "examples": [ 0 ], "title": "Level" }, "nor": { "anyOf": [ { "maximum": 360.0, "minimum": -360.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Direction of North with respect to the x-axis (measured counterclockwise); default `nor = 90`, i.e. x-axis of the problem coordinate system points East. When spherical coordinates are used (see command COORD) the value of `nor` may not be modified", "title": "Nor" }, "depmin": { "anyOf": [ { "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Threshold depth (in m). In the computation any positive depth smaller than `depmin` is made equal to `depmin` (SWAN default: 0.05)", "title": "Depmin" }, "maxmes": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null, "description": "Maximum number of error messages during the computation at which the computation is terminated. During the computational process messages are written to the print file (SWAN default: 200)", "title": "Maxmes" }, "maxerr": { "anyOf": [ { "enum": [ 1, 2, 3 ], "type": "integer" }, { "type": "null" } ], "default": null, "description": "During pre-processing SWAN checks input data. Depending on the severity of the errors encountered during this pre-processing, SWAN does not start computations. The user can influence the error level above which SWAN will not start computations (at the level indicated the computations will continue) (SWAN default: 1)", "title": "Maxerr" }, "grav": { "anyOf": [ { "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "The gravitational acceleration (in m/s2) (SWAN default: 9.81)", "title": "Grav" }, "rho": { "anyOf": [ { "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "The water density (in kg/m3) (SWAN default: 1025)", "title": "Rho" }, "cdcap": { "anyOf": [ { "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "The maximum value for the wind drag coefficient. A value of 99999 meansno cutting off the drag coefficient. A suggestion for this parameter is `cdcap = 2.5x 10-3` (SWAN default: 99999) ", "title": "Cdcap" }, "inrhog": { "anyOf": [ { "enum": [ 0, 1 ], "type": "integer" }, { "type": "null" } ], "default": null, "description": "To indicate whether the user requires output based on variance or based on true energy (see Section 2.5). `inrhog` = 0: output based on variance, `inrhog` = 1: output based on true energy (SWAN default: 0)", "title": "Inrhog" }, "hsrerr": { "anyOf": [ { "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "The relative difference between the user imposed significant wave height and the significant wave height computed by SWAN (anywhere along the computational grid boundary) above which a warning will be given. This relative difference is the difference normalized with the user provided significant wave height. This warning will be given for each boundary grid point where the problem occurs (with its x- and y-index number of the computational grid). The cause of the difference is explained in Section 2.6.3. To suppress these warnings (in particular for nonstationary computations), set `hsrerr` at a very high value or use command OFF BNDCHK (SWAN default: 0.10) (ONLY MEANT FOR STRUCTURED GRIDS)", "title": "Hsrerr" }, "direction_convention": { "description": "Direction convention: `nautical` indicates that the Nautical convention for wind and wave direction (SWAN input and output) will be used, `cartesian` indicates that the Cartesian convention for wind and wave direction will be used. For definition, see Section 2.5 or Appendix A (SWAN default: `cartesian`)", "enum": [ "nautical", "cartesian" ], "title": "Direction Convention", "type": "string" }, "pwtail": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null, "description": "Power of high frequency tail; defines the shape of the spectral tail above the highest prognostic frequency `fhigh` (see command CGRID). The energy density is assumed to be proportional to frequency to the power `pwtail`. If the user wishes to use another value, then this SET command should be located in the command file after GEN1, GEN2 or GEN3 command (these will override the SET command with respect to `pwtail`)", "title": "Pwtail" }, "froudmax": { "anyOf": [ { "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Is the maximum Froude number (`U/\u221agd` with `U` the current and `d` the water depth). The currents taken from a circulation model may mismatch with given water depth `d` in the sense that the Froude number becomes larger than 1. For this, the current velocities will be maximized by Froude number times `sqrt(gh)` (SWAN default: 0.8)", "title": "Froudmax" }, "icewind": { "anyOf": [ { "enum": [ 0, 1 ], "type": "integer" }, { "type": "null" } ], "default": null, "description": "Controls the scaling of wind input by open water fraction. Default value of zero corresponds to the case where wind input is scaled by the open water fraction. If `icewind = 1` then sea ice does not affect wind input directly. (Though there is still indirect effect via the sea ice sink term; see command SICE) (SWAN default: 0)", "title": "Icewind" } }, "required": [ "direction_convention" ], "title": "SET", "type": "object" }, "SHAPESPEC": { "additionalProperties": false, "description": "Spectral shape specification.\n\n.. code-block:: text\n\n BOUND SHAPESPEC JONSWAP|PM|GAUSS|BIN|TMA PEAK|MEAN DSPR [POWER|DEGREES]\n\nThis command BOUND SHAPESPEC defines the shape of the spectra (both in frequency\nand direction) at the boundary of the computational grid in case of parametric\nspectral input.\n\nNotes\n-----\nWhile technically a component `BOUND SHAPESPEC`, this is only intended to be used\nas a subcomponent of the `BOUNDSPEC` component.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.spectrum import SHAPESPEC\n shapespec = SHAPESPEC()\n print(shapespec.render())\n shapespec = SHAPESPEC(\n shape=dict(model_type=\"tma\", gamma=3.1, d=12),\n per_type=\"mean\",\n dspr_type=\"degrees\",\n )\n print(shapespec.render())", "properties": { "model_type": { "default": "shapespec", "description": "Model type discriminator", "enum": [ "shapespec", "SHAPESPEC" ], "title": "Model Type", "type": "string" }, "shape": { "anyOf": [ { "$ref": "#/$defs/JONSWAP" }, { "$ref": "#/$defs/PM" }, { "$ref": "#/$defs/GAUSS" }, { "$ref": "#/$defs/BIN" }, { "$ref": "#/$defs/TMA" } ], "description": "The spectral shape", "title": "Shape" }, "per_type": { "default": "peak", "description": "The type of characteristic wave period", "enum": [ "peak", "mean" ], "title": "Per Type", "type": "string" }, "dspr_type": { "default": "power", "description": "The type of directional spreading", "enum": [ "power", "degrees" ], "title": "Dspr Type", "type": "string" } }, "title": "SHAPESPEC", "type": "object" }, "SICE": { "additionalProperties": false, "description": "Sea ice dissipation.\n\n.. code-block:: text\n\n SICE [aice]\n\nUsing this command, the user activates a sink term to represent the dissipation of\nwave energy by sea ice. The default method is R19 empirical/parametric: a\npolynomial based on wave frequency (Rogers, 2019). This polynomial (in 1/m) has\nseven dimensional coefficients; see Scientific/Technical documentation for details.\nIf this command is not used, SWAN will not account for sea ice effects.\n\nReferences\n----------\nDoble, M.J., De Carolis, G., Meylan, M.H., Bidlot, J.R. and Wadhams, P., 2015.\nRelating wave attenuation to pancake ice thickness, using field measurements and\nmodel results. Geophysical Research Letters, 42(11), pp.4473-4481.\n\nMeylan, M.H., Bennetts, L.G. and Kohout, A.L., 2014. In situ measurements and\nanalysis of ocean waves in the Antarctic marginal ice zone. Geophysical Research\nLetters, 41(14), pp.5046-5051.\n\nRogers, W.E., Meylan, M.H. and Kohout, A.L., 2018. Frequency distribution of\ndissipation of energy of ocean waves by sea ice using data from Wave Array 3 of\nthe ONR \u201cSea State\u201d field experiment. Nav. Res. Lab. Memo. Rep, pp.18-9801.\n\nRogers, W.E., Meylan, M.H. and Kohout, A.L., 2021. Estimates of spectral wave\nattenuation in Antarctic sea ice, using model/data inversion. Cold Regions Science\nand Technology, 182, p.103198.\n\nNotes\n-----\nIis also necessary to describe the ice, using the `ICE` command (for uniform and\nstationary ice) or `INPGRID`/`READINP` commands (for variable ice).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import SICE\n sice = SICE()\n print(sice.render())\n sice = SICE(aice=0.5)\n print(sice.render())\n\nTODO: Verify if the `aice` parameter should be used with SICE command, it is not\nshown in the command tree but it is described as an option in the description.", "properties": { "model_type": { "default": "sice", "description": "Model type discriminator", "enum": [ "sice", "SICE" ], "title": "Model Type", "type": "string" }, "aice": { "anyOf": [ { "maximum": 1.0, "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Ice concentration as a fraction from 0 to 1. Note that `aice` is allowed to vary over the computational region to account for the zonation of ice concentration. In that case use the commands `INPGRID AICE` and `READINP AICE` to define and read the sea concentration. The value of `aice` in this command is then not required (it will be ignored)", "title": "Aice" } }, "title": "SICE", "type": "object" }, "SICE_D15": { "additionalProperties": false, "description": "Sea ice dissipation based on the method of Doble et al. (2015).\n\n.. code-block:: text\n\n SICE [aice] D15 [chf]\n\nReferences\n----------\nDoble, M.J., De Carolis, G., Meylan, M.H., Bidlot, J.R. and Wadhams, P., 2015.\nRelating wave attenuation to pancake ice thickness, using field measurements and\nmodel results. Geophysical Research Letters, 42(11), pp.4473-4481.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import SICE_D15\n sice = SICE_D15()\n print(sice.render())\n sice = SICE_D15(aice=0.2, chf=0.1)\n print(sice.render())", "properties": { "model_type": { "default": "d15", "description": "Model type discriminator", "enum": [ "d15", "D15" ], "title": "Model Type", "type": "string" }, "aice": { "anyOf": [ { "maximum": 1.0, "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Ice concentration as a fraction from 0 to 1. Note that `aice` is allowed to vary over the computational region to account for the zonation of ice concentration. In that case use the commands `INPGRID AICE` and `READINP AICE` to define and read the sea concentration. The value of `aice` in this command is then not required (it will be ignored)", "title": "Aice" }, "chf": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "A simple coefficient of proportionality (SWAN default: 0.1)", "title": "Chf" } }, "title": "SICE_D15", "type": "object" }, "SICE_M18": { "additionalProperties": false, "description": "Sea ice dissipation based on the method of Meylan et al. (2018).\n\n.. code-block:: text\n\n SICE [aice] M18 [chf]\n\nReferences\n----------\nMeylan, M.H., Bennetts, L.G. and Kohout, A.L., 2014. In situ measurements and\nanalysis of ocean waves in the Antarctic marginal ice zone. Geophysical Research\nLetters, 41(14), pp.5046-5051.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import SICE_M18\n sice = SICE_M18()\n print(sice.render())\n sice = SICE_M18(aice=0.8, chf=0.059)\n print(sice.render())", "properties": { "model_type": { "default": "m18", "description": "Model type discriminator", "enum": [ "m18", "M18" ], "title": "Model Type", "type": "string" }, "aice": { "anyOf": [ { "maximum": 1.0, "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Ice concentration as a fraction from 0 to 1. Note that `aice` is allowed to vary over the computational region to account for the zonation of ice concentration. In that case use the commands `INPGRID AICE` and `READINP AICE` to define and read the sea concentration. The value of `aice` in this command is then not required (it will be ignored)", "title": "Aice" }, "chf": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "A simple coefficient of proportionality (SWAN default: 0.059)", "title": "Chf" } }, "title": "SICE_M18", "type": "object" }, "SICE_R19": { "additionalProperties": false, "description": "Sea ice dissipation based on the method of Rogers et al (2019).\n\n.. code-block:: text\n\n SICE [aice] R19 [c0] [c1] [c2] [c3] [c4] [c5] [c6]\n\nThe default options recover the polynomial of Meylan et al. (2014), calibrated for\na case of ice floes, mostly 10 to 25 m in diameter, in the marginal ice zone near\nAntarctica. Examples for other calibrations can be found in the\nScientific/Technical documentation.\n\nReferences\n----------\nMeylan, M.H., Bennetts, L.G. and Kohout, A.L., 2014. In situ measurements and\nanalysis of ocean waves in the Antarctic marginal ice zone. Geophysical Research\nLetters, 41(14), pp.5046-5051.\n\nRogers, W.E., Meylan, M.H. and Kohout, A.L., 2018. Frequency distribution of\ndissipation of energy of ocean waves by sea ice using data from Wave Array 3 of\nthe ONR \u201cSea State\u201d field experiment. Nav. Res. Lab. Memo. Rep, pp.18-9801.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import SICE_R19\n sice = SICE_R19()\n print(sice.render())\n kwargs = dict(\n aice=0.5,\n c0=0.0,\n c1=0.0,\n c2=1.06e-3,\n c3=0.0,\n c4=0.0,\n c5=0.0,\n c6=0.0,\n )\n sice = SICE_R19(**kwargs)\n print(sice.render())", "properties": { "model_type": { "default": "r19", "description": "Model type discriminator", "enum": [ "r19", "R19" ], "title": "Model Type", "type": "string" }, "aice": { "anyOf": [ { "maximum": 1.0, "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Ice concentration as a fraction from 0 to 1. Note that `aice` is allowed to vary over the computational region to account for the zonation of ice concentration. In that case use the commands `INPGRID AICE` and `READINP AICE` to define and read the sea concentration. The value of `aice` in this command is then not required (it will be ignored)", "title": "Aice" }, "c0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Polynomial coefficient (in 1/m) for determining the rate of sea ice dissipation (SWAN default: 0.0)", "title": "C0" }, "c1": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Polynomial coefficient (in s/m) for determining the rate of sea ice dissipation (SWAN default: 0.0)", "title": "C1" }, "c2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Polynomial coefficient (in s2/m) for determining the rate of sea ice dissipation (SWAN default: 1.06E-3)", "title": "C2" }, "c3": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Polynomial coefficient (in s3/m) for determining the rate of sea ice dissipation (SWAN default: 0.0)", "title": "C3" }, "c4": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Polynomial coefficient (in s4/m) for determining the rate of sea ice dissipation (SWAN default: 2.3E-2)", "title": "C4" }, "c5": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Polynomial coefficient (in s5/m) for determining the rate of sea ice dissipation (SWAN default: 0.0)", "title": "C5" }, "c6": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Polynomial coefficient (in s6/m) for determining the rate of sea ice dissipation (SWAN default: 0.0)", "title": "C6" } }, "title": "SICE_R19", "type": "object" }, "SICE_R21B": { "additionalProperties": false, "description": "Sea ice dissipation based on the method of Rogers et al. (2021).\n\n.. code-block:: text\n\n SICE [aice] R21B [chf] [npf]\n\nReferences\n----------\nRogers, W.E., Meylan, M.H. and Kohout, A.L., 2021. Estimates of spectral wave\nattenuation in Antarctic sea ice, using model/data inversion. Cold Regions Science\nand Technology, 182, p.103198.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import SICE_R21B\n sice = SICE_R21B()\n print(sice.render())\n sice = SICE_R21B(aice=0.8, chf=2.9, npf=4.5)\n print(sice.render())", "properties": { "model_type": { "default": "r21b", "description": "Model type discriminator", "enum": [ "r21b", "R21B" ], "title": "Model Type", "type": "string" }, "aice": { "anyOf": [ { "maximum": 1.0, "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Ice concentration as a fraction from 0 to 1. Note that `aice` is allowed to vary over the computational region to account for the zonation of ice concentration. In that case use the commands `INPGRID AICE` and `READINP AICE` to define and read the sea concentration. The value of `aice` in this command is then not required (it will be ignored)", "title": "Aice" }, "chf": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "A simple coefficient of proportionality (SWAN default: 2.9)", "title": "Chf" }, "npf": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Controls the degree of dependence on frequency and ice thickness (SWAN default: 4.5)", "title": "Npf" } }, "title": "SICE_R21B", "type": "object" }, "SIDE": { "additionalProperties": false, "description": "Boundary over one side of computational domain.\n\n.. code-block:: text\n\n SIDE NORTH|NW|WEST|SW|SOUTH|SE|E|NE CCW|CLOCKWISE\n\nThe boundary is one full side of the computational grid (in 1D cases either of the\ntwo ends of the 1D-grid).\n\nNote\n----\nShould not be used in case of CURVILINEAR grids.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.boundary import SIDE\n side = SIDE(side=\"west\", direction=\"ccw\")\n print(side.render())", "properties": { "model_type": { "default": "side", "description": "Model type discriminator", "enum": [ "side", "SIDE" ], "title": "Model Type", "type": "string" }, "side": { "description": "The side of the grid to apply the boundary to", "enum": [ "north", "nw", "west", "sw", "south", "se", "east", "ne" ], "title": "Side", "type": "string" }, "direction": { "default": "ccw", "description": "The direction to apply the boundary in", "enum": [ "ccw", "clockwise" ], "title": "Direction", "type": "string" } }, "required": [ "side" ], "title": "SIDE", "type": "object" }, "SIDES": { "additionalProperties": false, "description": "Boundary over multiple side of computational domain.\n\n.. code-block:: text\n\n SIDE NORTH|NW|WEST|SW|SOUTH|SE|E|NE CCW|CLOCKWISE\n SIDE NORTH|NW|WEST|SW|SOUTH|SE|E|NE CCW|CLOCKWISE\n ...\n\nNote\n----\nShould not be used in case of CURVILINEAR grids.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.boundary import SIDE, SIDES\n side1 = SIDE(side=\"west\", direction=\"ccw\")\n side2 = SIDE(side=\"north\", direction=\"ccw\")\n sides = SIDES(sides=[side1, side2])\n print(sides.render())", "properties": { "model_type": { "default": "sides", "description": "Model type discriminator", "enum": [ "sides", "SIDES" ], "title": "Model Type", "type": "string" }, "sides": { "description": "The sides of the grid to apply the boundary to", "items": { "$ref": "#/$defs/SIDE" }, "title": "Sides", "type": "array" } }, "required": [ "sides" ], "title": "SIDES", "type": "object" }, "SIGIMPL": { "additionalProperties": false, "description": "Frequency shifting accuracy.\n\n.. code-block:: text\n\n SIGIMpl [cfl] [eps2] [outp] [niter]\n\nControls the accuracy of computing the frequency shifting and the stopping\ncriterion and amount of output for the SIP solver (used in the computations in the\npresence of currents or time varying depth)\n\nExamples\n--------\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.numerics import SIGIMPL\n sigimpl = SIGIMPL()\n print(sigimpl.render())\n sigimpl = SIGIMPL(css=0.5, eps2=1e-4, outp=0, niter=20)\n print(sigimpl.render())", "properties": { "model_type": { "default": "sigimpl", "description": "Model type discriminator", "enum": [ "sigimpl", "SIGIMPL" ], "title": "Model Type", "type": "string" }, "css": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "A value of `css=0` corresponds to a central scheme and has the largest accuracy (diffusion \u2248 0) but the computation may more easily generate spurious fluctuations. A value of `css=1` corresponds to a first order upwind scheme and it is more diffusive and therefore preferable if (strong) gradients in depth or current are present (SWAN default: 0.5)", "title": "Css" }, "eps2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Relative stopping criterion to terminate the linear solver (SIP or SOR). (SWAN default: 1.e-4 in case of SIP and 1.e-6 in case of SOR)", "title": "Eps2" }, "outp": { "anyOf": [ { "enum": [ 0, 1, 2, 3 ], "type": "integer" }, { "type": "null" } ], "default": null, "description": "Output for the iterative solver:\n\n* 0 = no output\n* 1 = additional information about the iteration process is written to the PRINT file \n* 2 = gives a maximal amount of output concerning the iteration process\n* 3 = summary of the iteration process\n\n(SWAN default: 0)", "title": "Outp" }, "niter": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Maximum number of iterations for the linear solver (SWAN default: 20 in case of SIP and 1000 in case of SOR)", "title": "Niter" } }, "title": "SIGIMPL", "type": "object" }, "SPEC1D": { "additionalProperties": false, "description": "Frequency 1D spectra.\n\n.. code-block:: text\n\n SPEC1D\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.output import SPEC1D\n spec = SPEC1D()\n print(spec.render())", "properties": { "model_type": { "default": "spec1d", "description": "Model type discriminator", "enum": [ "spec1d", "SPEC1D" ], "title": "Model Type", "type": "string" } }, "title": "SPEC1D", "type": "object" }, "SPEC2D": { "additionalProperties": false, "description": "Frequency-direction 2D spectra.\n\n.. code-block:: text\n\n SPEC2D\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.output import SPEC2D\n spec = SPEC2D()\n print(spec.render())", "properties": { "model_type": { "default": "spec2d", "description": "Model type discriminator", "enum": [ "spec2d", "SPEC2D" ], "title": "Model Type", "type": "string" } }, "title": "SPEC2D", "type": "object" }, "SPECOUT": { "additionalProperties": false, "description": "Write to data file the wave spectra.\n\n.. code-block:: text\n\n SPECOUT 'sname' SPEC1D|->SPEC2D ->ABS|REL 'fname' &\n (OUTPUT [tbeg] [delt] SEC|MIN|HR|DAY)\n\nWith this optional command the user indicates that for each location of the output\nlocation set 'sname' (see commands `POINTS`, `CURVE`, `FRAME` or `GROUP`) the 1D\nor 2D variance / energy (see command `SET`) density spectrum (either the relative\nfrequency or the absolute frequency spectrum) is to be written to a data file.\n\nNote\n----\nThis write command supports the following location types: `POINTS`, `CURVE`,\n`FRAME` and `GROUP`.\n\nNote\n----\nThis output file can be used for defining boundary conditions for subsequent SWAN\nruns (command `BOUNDSPEC`).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import SPECOUT\n out = SPECOUT(sname=\"outpts\", fname=\"./specout.swn\")\n print(out.render())\n out = SPECOUT(\n sname=\"outpts\",\n dim=dict(model_type=\"spec2d\"),\n freq=dict(model_type=\"rel\"),\n fname=\"./specout.nc\",\n times=dict(tbeg=\"2012-01-01T00:00:00\", delt=\"PT30M\", dfmt=\"min\"),\n )\n print(out.render())", "properties": { "model_type": { "default": "specout", "description": "Model type discriminator", "enum": [ "specout", "SPECOUT" ], "title": "Model Type", "type": "string" }, "sname": { "description": "Name of the set of output locations in which the output is to be written", "maxLength": 8, "title": "Sname", "type": "string" }, "fname": { "description": "Name of the data file where the output is written to The file format is defined by the file extension, use `.mat` for MATLAB binary (single precision) or `.nc` for netCDF format. If any other extension is used the ASCII format is assumed", "title": "Fname", "type": "string" }, "times": { "anyOf": [ { "$ref": "#/$defs/TimeRangeOpen" }, { "type": "null" } ], "default": null, "description": "Time specification if the user requires output at various times. If this option is not specified data will be written for the last time step of the computation" }, "dim": { "anyOf": [ { "description": "Choose between 1D or 2D spectra output", "discriminator": { "mapping": { "SPEC1D": "#/$defs/SPEC1D", "SPEC2D": "#/$defs/SPEC2D", "spec1d": "#/$defs/SPEC1D", "spec2d": "#/$defs/SPEC2D" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/SPEC1D" }, { "$ref": "#/$defs/SPEC2D" } ] }, { "type": "null" } ], "default": null, "title": "Dim" }, "freq": { "anyOf": [ { "description": "Choose between absolute or relative frequency spectra", "discriminator": { "mapping": { "ABS": "#/$defs/ABS", "REL": "#/$defs/REL", "abs": "#/$defs/ABS", "rel": "#/$defs/REL" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/ABS" }, { "$ref": "#/$defs/REL" } ] }, { "type": "null" } ], "default": null, "title": "Freq" } }, "required": [ "sname", "fname" ], "title": "SPECOUT", "type": "object" }, "SPECTRUM": { "additionalProperties": false, "description": "SWAN spectrum specification.\n\n.. code-block:: text\n\n ->CIRCLE|SECTOR ([dir1] [dir2]) [mdc] [flow] [fhigh] [msc]\n\nNotes\n-----\n\nDirections in the spectra are defined either as a CIRCLE or as a SECTOR. In the\ncase of a SECTOR, both `dir1` and `dir2` must be specified. In the case of a\nCIRCLE, neither `dir1` nor `dir2` should be specified.\n\nAt least two of `flow`, `fhigh` and `msc` must be specified in which case the\nthird parameter will be calculated by SWAN such that the frequency resolution\n`df/f = 0.1` (10% increments).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.spectrum import SPECTRUM\n spec = SPECTRUM(mdc=36, flow=0.04, fhigh=1.0)\n print(spec.render())\n spec = SPECTRUM(mdc=36, dir1=0, dir2=180, flow=0.04, msc=31)\n print(spec.render())", "properties": { "model_type": { "default": "spectrum", "description": "Model type discriminator", "enum": [ "spectrum", "SPECTRUM" ], "title": "Model Type", "type": "string" }, "mdc": { "description": "Number of meshes in theta-space. In the case of CIRCLE, this is the number of subdivisions of the 360 degrees of a circle so `dtheta = [360]/[mdc]` is the spectral directional resolution. In the case of SECTOR, `dtheta = ([dir2] - [dir1])/[mdc]`. The minimum number of directional bins is 3 per directional quadrant.", "title": "Mdc", "type": "integer" }, "flow": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Lowest discrete frequency that is used in the calculation (in Hz).", "title": "Flow" }, "fhigh": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Highest discrete frequency that is used in the calculation (in Hz).", "title": "Fhigh" }, "msc": { "anyOf": [ { "minimum": 3, "type": "integer" }, { "type": "null" } ], "default": null, "description": "One less than the number of frequencies. This defines the grid resolution in frequency-space between the lowest discrete frequency `flow` and the highest discrete frequency `fhigh`. This resolution is not constant, since the frequencies are distributed logarithmical: `fi+1 = yfi` where `y` is a constant. The minimum number of frequencies is 4", "title": "Msc" }, "dir1": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The direction of the right-hand boundary of the sector when looking outward from the sector (required for option SECTOR) in degrees.", "title": "Dir1" }, "dir2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The direction of the left-hand boundary of the sector when looking outward from the sector (required for option SECTOR) in degrees.", "title": "Dir2" } }, "required": [ "mdc" ], "title": "SPECTRUM", "type": "object" }, "SPHERICAL": { "additionalProperties": false, "description": "Spherical coordinates.\n\n.. code-block:: text\n\n SPHERICAL [->CCM|QC]\n\nNotes\n-----\n\nprojection options:\n\n* CCM: central conformal Mercator. The horizontal and vertical scales are\n uniform in terms of cm/degree over the area shown. In the centre of the scale\n is identical to that of the conventional Mercator projection (but only at\n that centre). The area in the projection centre is therefore exactly conformal.\n* QC: the projection method is quasi-cartesian, i.e. the horizontal and vertical\n scales are equal to one another in terms of cm/degree.\n\nAll coordinates of locations and geographical grid sizes are given in degrees;`x`\nis longitude with `x = 0` being the Greenwich meridian and `x > 0` is East of this\nmeridian; `y` is latitude with `y > 0` being the Northern hemisphere. Input and\noutput grids have to be oriented with their x-axis to the East; mesh sizes are in\ndegrees. All other distances are in meters.\n\nNote that spherical coordinates can also be used for relatively small areas, say 10\nor 20 km horizontal dimension. This may be useful if one obtains the boundary\nconditions by nesting in an oceanic model which is naturally formulated in\nspherical coordinates. Note that in case of spherical coordinates regular grids\nmust always be oriented E-W, N-S, i.e. `alpc=0`, `alpinp=0`, `alpfr=0`\n(see commands CGRID, INPUT GRID and FRAME, respectively).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.startup import SPHERICAL\n coords = SPHERICAL()\n print(coords.render())\n coords = SPHERICAL(projection=\"qc\")\n print(coords.render())", "properties": { "model_type": { "default": "spherical", "description": "Model type discriminator", "enum": [ "spherical", "SPHERICAL" ], "title": "Model Type", "type": "string" }, "projection": { "default": "ccm", "description": "Defines the projection method in case of spherical coordinates, `ccm` Central Conformal Mercator, `qc` means Quasi-cartesian", "enum": [ "ccm", "qc" ], "title": "Projection", "type": "string" } }, "title": "SPHERICAL", "type": "object" }, "SSWELL_ARDHUIN": { "additionalProperties": false, "description": "Nonbreaking dissipation of Ardhuin et al. (2010).\n\n.. code-block:: text\n\n SSWELL ARDHUIN [cdsv]\n\nReferences\n----------\nArdhuin, F., Rogers, E., Babanin, A.V., Filipot, J.F., Magne, R., Roland, A.,\nVan Der Westhuysen, A., Queffeulou, P., Lefevre, J.M., Aouf, L. and Collard, F.,\n2010. Semiempirical dissipation source functions for ocean waves. Part I:\nDefinition, calibration, and validation. Journal of Physical Oceanography, 40(9),\npp.1917-1941.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import SSWELL_ARDHUIN\n sswell = SSWELL_ARDHUIN()\n print(sswell.render())\n sswell = SSWELL_ARDHUIN(cdsv=1.2)\n print(sswell.render())", "properties": { "model_type": { "default": "ardhuin", "description": "Model type discriminator", "enum": [ "ardhuin", "ARDHUIN" ], "title": "Model Type", "type": "string" }, "cdsv": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Coefficient related to laminar atmospheric boundary layer (SWAN default: 1.2)", "title": "Cdsv" } }, "title": "SSWELL_ARDHUIN", "type": "object" }, "SSWELL_ROGERS": { "additionalProperties": false, "description": "Nonbreaking dissipation of Rogers et al. (2012).\n\n.. code-block:: text\n\n SSWELL ROGERS [cdsv] [feswell]\n\nReferences\n----------\nRogers, W.E., Babanin, A.V. and Wang, D.W., 2012. Observation-consistent input and\nwhitecapping dissipation in a model for wind-generated surface waves: Description\nand simple calculations. Journal of Atmospheric and Oceanic Technology, 29(9),\npp.1329-1346.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import SSWELL_ROGERS\n sswell = SSWELL_ROGERS()\n print(sswell.render())\n sswell = SSWELL_ROGERS(cdsv=1.2, feswell=0.5)\n print(sswell.render())", "properties": { "model_type": { "default": "rogers", "description": "Model type discriminator", "enum": [ "rogers", "ROGERS" ], "title": "Model Type", "type": "string" }, "cdsv": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Coefficient related to laminar atmospheric boundary layer (SWAN default: 1.2)", "title": "Cdsv" }, "feswell": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Swell dissipation factor", "title": "Feswell" } }, "title": "SSWELL_ROGERS", "type": "object" }, "SSWELL_ZIEGER": { "additionalProperties": false, "description": "Nonbreaking dissipation of Zieger et al. (2015).\n\n.. code-block:: text\n\n SSWELL ZIEGER [b1]\n\nSwell dissipation of Young et al. (2013) updated by Zieger et al. (2015). The\nZieger option is intended for use with negative wind input via the NEGATINP\ncommand. Zieger non-breaking dissipation follows the method used in WAVEWATCH III\nversion 4 and does not include the steepness-dependent swell coefficient introduced\nin WAVEWATCH III version 5.\n\nReferences\n----------\nZieger, S., Babanin, A.V., Rogers, W.E. and Young, I.R., 2015. Observation-based\nsource terms in the third-generation wave model WAVEWATCH. Ocean Modelling, 96,\npp.2-25.\n\nYoung, I.R., Babanin, A.V. and Zieger, S., 2013. The decay rate of ocean swell\nobserved by altimeter. Journal of physical oceanography, 43(11), pp.2322-2333.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import SSWELL_ZIEGER\n sswell = SSWELL_ZIEGER()\n print(sswell.render())\n sswell = SSWELL_ZIEGER(b1=0.00025)\n print(sswell.render())", "properties": { "model_type": { "default": "zieger", "description": "Model type discriminator", "enum": [ "zieger", "ZIEGER" ], "title": "Model Type", "type": "string" }, "b1": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Non-dimensional proportionality coefficient (SWAN default: 0.00025)", "title": "B1" } }, "title": "SSWELL_ZIEGER", "type": "object" }, "ST6": { "additionalProperties": false, "description": "St6 source terms subcomponent.\n\n.. code-block:: text\n\n ST6 [a1sds] [a2sds] [p1sds] [p2sds] UP|DOWN HWANG|FAN|ECMWF VECTAU|SCATAU &\n TRUE10|U10PROXY [windscaling] DEBIAS [cdfac] (AGROW [a])\n\nwind input and whitecapping from Rogers et al. (2012) (RBW12).\n\nNotes\n-----\nThe two arguments are specified in the Appendix C of the User manual but not in the\ncommand description for WESTH in Section 4.5.4. They are also options in the\nWCAPPING command. It is not entirely clear if they should/could be specified here.\n\nReferences\n----------\nFan, Y., Lin, S.J., Held, I.M., Yu, Z. and Tolman, H.L., 2012. Global ocean surface\nwave simulation using a coupled atmosphere\u2013wave model. Journal of Climate, 25(18),\npp.6233-6252.\n\nRogers, W.E., Babanin, A.V. and Wang, D.W., 2012. Observation-consistent input and\nwhitecapping dissipation in a model for wind-generated surface waves: Description\nand simple calculations. Journal of Atmospheric and Oceanic Technology, 29(9),\npp.1329-1346.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import ST6\n st6 = ST6(a1sds=4.7e-7, a2sds=6.6e-6)\n print(st6.render())\n kwargs = dict(\n a1sds=2.8e-6,\n a2sds=3.5e-5,\n normalization=\"up\",\n wind_drag=\"hwang\",\n tau=\"vectau\",\n u10=\"u10proxy\",\n windscaling=32.0,\n cdfac=0.89,\n agrow=True,\n a=0.0015,\n )\n st6 = ST6(**kwargs)\n print(st6.render())", "properties": { "model_type": { "const": "st6", "default": "st6", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "wind_drag": { "default": "hwang", "description": "Wind drag formula, `hwang` is the default and is unchanged from RBW12, `fan` is from Fan et al. (2012), `ecmwf` follows WAM Cycle 4 methodology", "enum": [ "hwang", "fan", "ecmwf" ], "title": "Wind Drag", "type": "string" }, "agrow": { "default": false, "description": "Activate the Cavaleri and Malanotte (1981) wave growth term", "title": "Agrow", "type": "boolean" }, "a": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Proportionality coefficient when activating the Cavaleri and Malanotte (1981) wave growth term (SWAN default: 0.0015)", "title": "A" }, "a1sds": { "description": "Coefficient related to local dissipation term T1 (a1 in RBW12)", "title": "A1Sds", "type": "number" }, "a2sds": { "description": "Coefficient related to local dissipation term T2 (a2 in RBW12)", "title": "A2Sds", "type": "number" }, "p1sds": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Power coefficient controlling strength of dissipation term T1 (L in RBW12, SWAN default: 4)", "title": "P1Sds" }, "p2sds": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Power coefficient controlling strength of dissipation term T2 (M in RBW12, SWAN default: 4)", "title": "P2Sds" }, "normalization": { "default": "up", "description": "Selection of normalization of exceedance level by ET(f) (`up`) or E(f) (`down`) as in RBW12 (right column, page 1333), `up` is default and strongly recommended", "enum": [ "up", "down" ], "title": "Normalization", "type": "string" }, "tau": { "default": "vectau", "description": "Use vector (vectau) or scalar (scatau) calculation for the wind strerss (Eq. 12 in RBW12), `vectau` is the default and strongly recommended", "enum": [ "vectau", "scatau" ], "title": "Tau", "type": "string" }, "u10": { "default": "u10proxy", "description": "Wind velocity definition", "enum": [ "u10proxy", "true10" ], "title": "U10", "type": "string" }, "windscaling": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 32.0, "description": "Factor to scale U10 with U* when using U10PROXY", "title": "Windscaling" }, "cdfac": { "anyOf": [ { "exclusiveMinimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Counter bias in the input wind fields by providing a multiplier on the drag coefficient", "title": "Cdfac" } }, "required": [ "a1sds", "a2sds" ], "title": "ST6", "type": "object" }, "ST6C1": { "additionalProperties": false, "description": "First ST6 calibration in the SWAN user manual.\n\n.. code-block:: text\n\n ST6 4.7e-7 6.6e-6 4.0 4.0 UP HWANG VECTAU U10PROXY 28.0 AGROW\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import ST6C1\n st6 = ST6C1()\n print(st6.render())", "properties": { "model_type": { "const": "st6c1", "default": "st6c1", "title": "Model Type", "type": "string" }, "wind_drag": { "default": "hwang", "description": "Wind drag formula, `hwang` is the default and is unchanged from RBW12, `fan` is from Fan et al. (2012), `ecmwf` follows WAM Cycle 4 methodology", "enum": [ "hwang", "fan", "ecmwf" ], "title": "Wind Drag", "type": "string" }, "agrow": { "const": true, "default": true, "title": "Agrow", "type": "boolean" }, "a": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Proportionality coefficient when activating the Cavaleri and Malanotte (1981) wave growth term (SWAN default: 0.0015)", "title": "A" }, "a1sds": { "const": 4.7e-07, "default": 4.7e-07, "title": "A1Sds", "type": "number" }, "a2sds": { "const": 6.6e-06, "default": 6.6e-06, "title": "A2Sds", "type": "number" }, "p1sds": { "const": 4.0, "default": 4.0, "title": "P1Sds", "type": "number" }, "p2sds": { "const": 4.0, "default": 4.0, "title": "P2Sds", "type": "number" }, "normalization": { "default": "up", "description": "Selection of normalization of exceedance level by ET(f) (`up`) or E(f) (`down`) as in RBW12 (right column, page 1333), `up` is default and strongly recommended", "enum": [ "up", "down" ], "title": "Normalization", "type": "string" }, "tau": { "default": "vectau", "description": "Use vector (vectau) or scalar (scatau) calculation for the wind strerss (Eq. 12 in RBW12), `vectau` is the default and strongly recommended", "enum": [ "vectau", "scatau" ], "title": "Tau", "type": "string" }, "u10": { "default": "u10proxy", "description": "Wind velocity definition", "enum": [ "u10proxy", "true10" ], "title": "U10", "type": "string" }, "windscaling": { "const": 28.0, "default": 28.0, "title": "Windscaling", "type": "number" }, "cdfac": { "anyOf": [ { "exclusiveMinimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Counter bias in the input wind fields by providing a multiplier on the drag coefficient", "title": "Cdfac" } }, "title": "ST6C1", "type": "object" }, "ST6C2": { "additionalProperties": false, "description": "Second ST6 calibration in the SWAN user manual.\n\n.. code-block:: text\n\n ST6 4.7e-7 6.6e-6 4.0 4.0 UP FAN VECTAU U10PROXY 28.0 AGROW\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import ST6C2\n st6 = ST6C2()\n print(st6.render())\n\nTODO: Ensure validator is reused here so fan and debias are not used together.", "properties": { "model_type": { "const": "st6c2", "default": "st6c2", "title": "Model Type", "type": "string" }, "wind_drag": { "const": "fan", "default": "fan", "title": "Wind Drag", "type": "string" }, "agrow": { "const": true, "default": true, "title": "Agrow", "type": "boolean" }, "a": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Proportionality coefficient when activating the Cavaleri and Malanotte (1981) wave growth term (SWAN default: 0.0015)", "title": "A" }, "a1sds": { "const": 4.7e-07, "default": 4.7e-07, "title": "A1Sds", "type": "number" }, "a2sds": { "const": 6.6e-06, "default": 6.6e-06, "title": "A2Sds", "type": "number" }, "p1sds": { "const": 4.0, "default": 4.0, "title": "P1Sds", "type": "number" }, "p2sds": { "const": 4.0, "default": 4.0, "title": "P2Sds", "type": "number" }, "normalization": { "default": "up", "description": "Selection of normalization of exceedance level by ET(f) (`up`) or E(f) (`down`) as in RBW12 (right column, page 1333), `up` is default and strongly recommended", "enum": [ "up", "down" ], "title": "Normalization", "type": "string" }, "tau": { "default": "vectau", "description": "Use vector (vectau) or scalar (scatau) calculation for the wind strerss (Eq. 12 in RBW12), `vectau` is the default and strongly recommended", "enum": [ "vectau", "scatau" ], "title": "Tau", "type": "string" }, "u10": { "default": "u10proxy", "description": "Wind velocity definition", "enum": [ "u10proxy", "true10" ], "title": "U10", "type": "string" }, "windscaling": { "const": 28.0, "default": 28.0, "title": "Windscaling", "type": "number" }, "cdfac": { "anyOf": [ { "exclusiveMinimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Counter bias in the input wind fields by providing a multiplier on the drag coefficient", "title": "Cdfac" } }, "title": "ST6C2", "type": "object" }, "ST6C3": { "additionalProperties": false, "description": "Third ST6 calibration in the SWAN user manual.\n\n.. code-block:: text\n\n ST6 2.8e-6 3.5e-5 4.0 4.0 UP HWANG VECTAU U10PROXY 32.0 AGROW\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import ST6C3\n st6 = ST6C3()\n print(st6.render())", "properties": { "model_type": { "const": "st6c3", "default": "st6c3", "title": "Model Type", "type": "string" }, "wind_drag": { "default": "hwang", "description": "Wind drag formula, `hwang` is the default and is unchanged from RBW12, `fan` is from Fan et al. (2012), `ecmwf` follows WAM Cycle 4 methodology", "enum": [ "hwang", "fan", "ecmwf" ], "title": "Wind Drag", "type": "string" }, "agrow": { "const": true, "default": true, "title": "Agrow", "type": "boolean" }, "a": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Proportionality coefficient when activating the Cavaleri and Malanotte (1981) wave growth term (SWAN default: 0.0015)", "title": "A" }, "a1sds": { "const": 2.8e-06, "default": 2.8e-06, "title": "A1Sds", "type": "number" }, "a2sds": { "const": 3.5e-05, "default": 3.5e-05, "title": "A2Sds", "type": "number" }, "p1sds": { "const": 4.0, "default": 4.0, "title": "P1Sds", "type": "number" }, "p2sds": { "const": 4.0, "default": 4.0, "title": "P2Sds", "type": "number" }, "normalization": { "default": "up", "description": "Selection of normalization of exceedance level by ET(f) (`up`) or E(f) (`down`) as in RBW12 (right column, page 1333), `up` is default and strongly recommended", "enum": [ "up", "down" ], "title": "Normalization", "type": "string" }, "tau": { "default": "vectau", "description": "Use vector (vectau) or scalar (scatau) calculation for the wind strerss (Eq. 12 in RBW12), `vectau` is the default and strongly recommended", "enum": [ "vectau", "scatau" ], "title": "Tau", "type": "string" }, "u10": { "default": "u10proxy", "description": "Wind velocity definition", "enum": [ "u10proxy", "true10" ], "title": "U10", "type": "string" }, "windscaling": { "const": 32.0, "default": 32.0, "title": "Windscaling", "type": "number" }, "cdfac": { "anyOf": [ { "exclusiveMinimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Counter bias in the input wind fields by providing a multiplier on the drag coefficient", "title": "Cdfac" } }, "title": "ST6C3", "type": "object" }, "ST6C4": { "additionalProperties": false, "description": "Fourth ST6 calibration in the SWAN user manual.\n\n.. code-block:: text\n\n ST6 2.8e-6 3.5e-5 4.0 4.0 UP HWANG VECTAU U10PROXY 32.0 DEBIAS 0.89 AGROW\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import ST6C4\n st6 = ST6C4()\n print(st6.render())", "properties": { "model_type": { "const": "st6c4", "default": "st6c4", "title": "Model Type", "type": "string" }, "wind_drag": { "default": "hwang", "description": "Wind drag formula, `hwang` is the default and is unchanged from RBW12, `fan` is from Fan et al. (2012), `ecmwf` follows WAM Cycle 4 methodology", "enum": [ "hwang", "fan", "ecmwf" ], "title": "Wind Drag", "type": "string" }, "agrow": { "const": true, "default": true, "title": "Agrow", "type": "boolean" }, "a": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Proportionality coefficient when activating the Cavaleri and Malanotte (1981) wave growth term (SWAN default: 0.0015)", "title": "A" }, "a1sds": { "const": 2.8e-06, "default": 2.8e-06, "title": "A1Sds", "type": "number" }, "a2sds": { "const": 3.5e-05, "default": 3.5e-05, "title": "A2Sds", "type": "number" }, "p1sds": { "const": 4.0, "default": 4.0, "title": "P1Sds", "type": "number" }, "p2sds": { "const": 4.0, "default": 4.0, "title": "P2Sds", "type": "number" }, "normalization": { "default": "up", "description": "Selection of normalization of exceedance level by ET(f) (`up`) or E(f) (`down`) as in RBW12 (right column, page 1333), `up` is default and strongly recommended", "enum": [ "up", "down" ], "title": "Normalization", "type": "string" }, "tau": { "default": "vectau", "description": "Use vector (vectau) or scalar (scatau) calculation for the wind strerss (Eq. 12 in RBW12), `vectau` is the default and strongly recommended", "enum": [ "vectau", "scatau" ], "title": "Tau", "type": "string" }, "u10": { "default": "u10proxy", "description": "Wind velocity definition", "enum": [ "u10proxy", "true10" ], "title": "U10", "type": "string" }, "windscaling": { "const": 32.0, "default": 32.0, "title": "Windscaling", "type": "number" }, "cdfac": { "const": 0.89, "default": 0.89, "title": "Cdfac", "type": "number" } }, "title": "ST6C4", "type": "object" }, "ST6C5": { "additionalProperties": false, "description": "Fifth ST6 calibration in the SWAN user manual.\n\n.. code-block:: text\n\n ST6 4.7e-7 6.6e-6 4.0 4.0 UP HWANG VECTAU U10PROXY 28.0 AGROW\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import ST6C5\n st6 = ST6C5()\n print(st6.render())", "properties": { "model_type": { "const": "st6c5", "default": "st6c5", "title": "Model Type", "type": "string" }, "wind_drag": { "default": "hwang", "description": "Wind drag formula, `hwang` is the default and is unchanged from RBW12, `fan` is from Fan et al. (2012), `ecmwf` follows WAM Cycle 4 methodology", "enum": [ "hwang", "fan", "ecmwf" ], "title": "Wind Drag", "type": "string" }, "agrow": { "const": true, "default": true, "title": "Agrow", "type": "boolean" }, "a": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Proportionality coefficient when activating the Cavaleri and Malanotte (1981) wave growth term (SWAN default: 0.0015)", "title": "A" }, "a1sds": { "const": 6.5e-06, "default": 6.5e-06, "title": "A1Sds", "type": "number" }, "a2sds": { "const": 8.5e-05, "default": 8.5e-05, "title": "A2Sds", "type": "number" }, "p1sds": { "const": 4.0, "default": 4.0, "title": "P1Sds", "type": "number" }, "p2sds": { "const": 4.0, "default": 4.0, "title": "P2Sds", "type": "number" }, "normalization": { "default": "up", "description": "Selection of normalization of exceedance level by ET(f) (`up`) or E(f) (`down`) as in RBW12 (right column, page 1333), `up` is default and strongly recommended", "enum": [ "up", "down" ], "title": "Normalization", "type": "string" }, "tau": { "default": "vectau", "description": "Use vector (vectau) or scalar (scatau) calculation for the wind strerss (Eq. 12 in RBW12), `vectau` is the default and strongly recommended", "enum": [ "vectau", "scatau" ], "title": "Tau", "type": "string" }, "u10": { "default": "u10proxy", "description": "Wind velocity definition", "enum": [ "u10proxy", "true10" ], "title": "U10", "type": "string" }, "windscaling": { "const": 35.0, "default": 35.0, "title": "Windscaling", "type": "number" }, "cdfac": { "const": 0.89, "default": 0.89, "title": "Cdfac", "type": "number" } }, "title": "ST6C5", "type": "object" }, "STARTUP": { "additionalProperties": false, "description": "Startup group component.\n\n.. code-block:: text\n\n PROJECT ...\n SET ...\n MODE ...\n COORDINATES ...\n\nThis group component is used to group individual startup components. Only fields\nthat are explicitly prescribed are rendered by this group component.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.startup import PROJECT, SET, MODE, COORDINATES\n from rompy.swan.components.group import STARTUP\n proj = PROJECT(nr=\"01\")\n set = SET(level=0.5, direction_convention=\"nautical\")\n mode = MODE(kind=\"nonstationary\", dim=\"twodimensional\")\n coords = COORDINATES(kind=dict(model_type=\"spherical\", projection=\"ccm\"))\n startup = STARTUP(\n project=proj,\n set=set,\n mode=mode,\n coordinates=coords,\n )\n print(startup.render())", "properties": { "model_type": { "default": "startup", "description": "Model type discriminator", "enum": [ "startup", "STARTUP" ], "title": "Model Type", "type": "string" }, "project": { "anyOf": [ { "$ref": "#/$defs/PROJECT", "description": "Project component" }, { "type": "null" } ], "default": null }, "set": { "anyOf": [ { "$ref": "#/$defs/SET", "description": "Set component" }, { "type": "null" } ], "default": null }, "mode": { "anyOf": [ { "$ref": "#/$defs/MODE", "description": "Mode component" }, { "type": "null" } ], "default": null }, "coordinates": { "anyOf": [ { "$ref": "#/$defs/COORDINATES", "description": "Coordinates component" }, { "type": "null" } ], "default": null } }, "title": "STARTUP", "type": "object" }, "STAT": { "additionalProperties": false, "description": "Computation parameters in stationary computation.", "properties": { "model_type": { "default": "stat", "description": "Model type discriminator", "enum": [ "stat", "STAT" ], "title": "Model Type", "type": "string" }, "mxitst": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "The maximum number of iterations for stationary computations. The computation stops when this number is exceeded (SWAN default: 50)", "title": "Mxitst" }, "alfa": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Proportionality constant used in the frequency-dependent under-relaxation technique. Based on experiences, a suggestion for this parameter is `alfa = 0.01`. In case of diffraction computations, the use of this parameter is recommended (SWAN default: 0.00)", "title": "Alfa" } }, "title": "STAT", "type": "object" }, "STATIONARY": { "additionalProperties": false, "description": "Stationary time specification.\n\n.. code-block:: text\n\n STATIONARY [time]\n\nNote\n----\nThe field `time` is optional to allow for the case where the user wants to set the\ntime dynamically after instantiating this component.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.time import STATIONARY\n stat = STATIONARY(time=\"2012-01-01T00:00:00\")\n print(stat.render())", "properties": { "model_type": { "default": "stationary", "description": "Model type discriminator", "enum": [ "stationary", "STATIONARY" ], "title": "Model Type", "type": "string" }, "time": { "default": "1970-01-01T00:00:00", "description": "Stationary time", "format": "date-time", "title": "Time", "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" } }, "title": "STATIONARY", "type": "object" }, "STOPC": { "additionalProperties": false, "description": "Stopping criteria of Zijlema and Van der Westhuysen (2005).\n\n.. code-block:: text\n\n STOPC [dabs] [drel] [curvat] [npnts] ->STAT|NONSTAT [limiter]\n\nWith this option the user can influence the criterion for terminating the iterative\nprocedure in the SWAN computations (both stationary and nonstationary). The\ncriterion makes use of the second derivative, or curvature, of the iteration curve\nof the significant wave height. As the solution of a simulation approaches full\nconvergence, the curvature of the iteration curve will tend to zero. SWAN stops the\nprocess if the relative change in Hs from one iteration to the next is less than\n`drel` and the curvature of the iteration curve of Hs normalized with Hs is less\nthan `curvat` or the absolute change in Hs from one iteration to the next is less\nthan `dabs`. Both conditions need to be fulfilled in more than fraction `npnts`\npercent of all wet grid points.\n\nWith respect to the QC modelling, another stopping criteria will be employed.\nNamely, SWAN stops the iteration process if the absolute change in Hs from one\niterate to another is less than `dabs` * Hinc, where Hinc is the representative\nincident wave height, or the relative change in Hs from one to the next iteration\nis less than `drel`. These criteria must be fulfilled in more than `npnts`\npercent of all active, well-defined points.\n\nReferences\n----------\n- Zijlema, M. and Van der Westhuysen, A. (2005). On convergence behaviour and\n numerical accuracy in stationary SWAN simulations of nearshore wind wave spectra,\n Coastal Engineering, 52(3), p. 337-256.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.numerics import STOPC\n stop = STOPC()\n print(stop.render())\n stop = STOPC(\n dabs=0.005,\n drel=0.01,\n curvat=0.005,\n npnts=99.5,\n mode=dict(model_type=\"nonstat\", mxitns=1),\n limiter=0.1,\n )\n print(stop.render())", "properties": { "model_type": { "default": "stopc", "description": "Model type discriminator", "enum": [ "stopc", "STOPC" ], "title": "Model Type", "type": "string" }, "dabs": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Maximum absolute change in Hs from one iteration to the next (SWAN default: 0.005 [m] or 0.05 [-] in case of QC model)", "title": "Dabs" }, "drel": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Maximum relative change in Hs from one iteration to the next (SWAN default: 0.01 [-])", "title": "Drel" }, "curvat": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Maximum curvature of the iteration curve of Hs normalised with Hs (SWAN default: 0.005 [-] (not used in the QC model))", "title": "Curvat" }, "npnts": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Percentage of points in the computational grid above which the stopping criteria needs to be satisfied (SWAN default: 99.5 [-])", "title": "Npnts" }, "mode": { "anyOf": [ { "discriminator": { "mapping": { "NONSTAT": "#/$defs/NONSTAT", "STAT": "#/$defs/STAT", "nonstat": "#/$defs/NONSTAT", "stat": "#/$defs/STAT" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/STAT" }, { "$ref": "#/$defs/NONSTAT" } ] }, { "type": "null" } ], "default": null, "description": "Termination criteria for stationary or nonstationary runs", "title": "Mode" }, "limiter": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Determines the maximum change per iteration of the energy density per spectral-bin given in terms of a fraction of the omni-directional Phillips level (SWAN default: 0.1)", "title": "Limiter" } }, "title": "STOPC", "type": "object" }, "SURFBEAT": { "additionalProperties": false, "description": "Surfbeat.\n\n.. code-block:: text\n\n SURFBEAT [df] [nmax] [emin] UNIFORM/LOGARITHMIC\n\nUsing this optional command, the user activates the Infragravity Energy Module\n(IEM) of Reniers and Zijlema (2022). Besides the energy balance equation for a\nsea-swell wave field, another energy balance is included to account for the\ntransfer of sea-swell energy to the bound infragravity (BIG) wave. This\ninfragravity energy balance also involves a nonlinear transfer, expressed by the\nbiphase, through the phase coupling between the radiation stress forcing and the\nBIG wave. For the prediction of the biphase for obliquely incident waves, an\nevolution equation is provided under the assumption that the bottom slopes are mild\nand alongshore uniform.\n\nReferences\n----------\nReniers, A. and Zijlema, M., 2022. Swan surfbeat-1d. Coastal Engineering, 172,\np.104068.\n\nExamples:\n---------\n\n.. ipython:: python\n\n from rompy.swan.components.physics import SURFBEAT\n surfbeat = SURFBEAT()\n print(surfbeat.render())\n surfbeat = SURFBEAT(df=0.01, nmax=50000, emin=0.05, spacing=\"logarithmic\")\n print(surfbeat.render())", "properties": { "model_type": { "default": "surfbeat", "description": "Model type discriminator", "enum": [ "surfbeat", "SURFBEAT" ], "title": "Model Type", "type": "string" }, "df": { "anyOf": [ { "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "The constant size of BIG frequency bin (in Hz) (SWAN default: 0.01)", "title": "Df" }, "nmax": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null, "description": "The maximum number of short-wave pairs for creating bichromatic wave groups (SWAN default: 50000)", "title": "Nmax" }, "emin": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The energy threshold in fraction of energy spectrum peak. With this threshold one takes into account those short wave components to create bichromatic wave groups while their energy levels are larger than `emin x E_max` with `E_max` the peak of the spectrum (SWAN default: 0.05)", "title": "Emin" }, "spacing": { "anyOf": [ { "enum": [ "uniform", "logarithmic" ], "type": "string" }, { "type": "null" } ], "default": null, "description": "Define if frequencies for reflected ig waves are uniformly or logarithmically distributed", "title": "Spacing" } }, "title": "SURFBEAT", "type": "object" }, "Sav": { "additionalProperties": false, "properties": { "spatch0": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -999, "description": "Region flag for SAV. 1 indicates SAV is active on all elements, -999 indicates spatial distribution", "title": "Spatch0" }, "stleaf0": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -999, "description": "Initial concentration of total SAV leaf biomass", "title": "Stleaf0" }, "ststem0": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -999, "description": "Initial concentration of total SAV stem biomass", "title": "Ststem0" }, "stroot0": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -999, "description": "Initial concentration of total SAV root biomass", "title": "Stroot0" }, "sgpm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Maximum growth rate of SAV per day", "title": "Sgpm" }, "stgp": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 32, "description": "Optimal growth temperature for SAV in degrees Celsius", "title": "Stgp" }, "sktgp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.003, 0.005 ], "description": "Temperature dependence coefficients for SAV growth (for T<=sTGP and T>sTGP)", "title": "Sktgp" }, "sfam": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.2, "description": "Fraction of SAV leaf production allocated to active metabolism", "title": "Sfam" }, "sfcp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.6, 0.3, 0.1 ], "description": "Fractions of SAV production allocated to leaf, stem, and root biomass", "title": "Sfcp" }, "smtb": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.02, 0.02, 0.02 ], "description": "Metabolism rates of SAV leaf, stem, and root", "title": "Smtb" }, "stmt": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 20, 20, 20 ], "description": "Reference temperatures for SAV leaf, stem, and root metabolism in degrees Celsius", "title": "Stmt" }, "sktmt": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.069, 0.069, 0.069 ], "description": "Temperature dependence coefficients for SAV leaf, stem, and root metabolism", "title": "Sktmt" }, "sfcm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.05, 0.15, 0.3, 0.5 ], "description": "Fractions of SAV metabolism carbon allocated to RPOC, LPOC, DOC, and CO2", "title": "Sfcm" }, "sfnm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.05, 0.15, 0.3, 0.5 ], "description": "Fractions of SAV metabolism nitrogen allocated to RPON, LPON, DON, and NH4", "title": "Sfnm" }, "sfpm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.05, 0.1, 0.35, 0.5 ], "description": "Fractions of SAV metabolism phosphorus allocated to RPOP, LPOP, DOP, and PO4", "title": "Sfpm" }, "skhnw": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.01, "description": "Nitrogen half-saturation constant for SAV in water column", "title": "Skhnw" }, "skhns": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Nitrogen half-saturation constant for SAV in sediments", "title": "Skhns" }, "skhnh4": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Ammonium half-saturation constant for SAV", "title": "Skhnh4" }, "skhpw": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.001, "description": "Phosphorus half-saturation constant for SAV in water column", "title": "Skhpw" }, "skhps": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.01, "description": "Phosphorus half-saturation constant for SAV in sediments", "title": "Skhps" }, "salpha": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.006, "description": "Initial slope of the SAV photosynthesis-irradiance curve", "title": "Salpha" }, "ske": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.045, "description": "Light attenuation coefficient due to SAV absorption", "title": "Ske" }, "shtm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.054, 2.0 ], "description": "Minimum (base) and maximum SAV canopy height", "title": "Shtm" }, "s2ht": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0036, 0.0036, 0.0 ], "description": "Coefficients for converting SAV leaf, stem, and root biomass to canopy height", "title": "S2Ht" }, "sc2dw": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.38, "description": "Carbon to dry weight ratio of SAV", "title": "Sc2Dw" }, "s2den": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 10, "description": "Coefficient for computing SAV density from leaf biomass", "title": "S2Den" } }, "title": "Sav", "type": "object" }, "SchismCSIROConfig": { "additionalProperties": true, "properties": { "model_type": { "const": "schismcsiro", "default": "schismcsiro", "description": "The model type for SCHISM.", "title": "Model Type", "type": "string" }, "template": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "/opt/hostedtoolcache/Python/3.10.17/x64/lib/python3.10/site-packages/rompy/templates/schismcsiro", "description": "The path to the model template", "title": "Template" }, "checkout": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "main", "description": "The git branch to use if the template is a git repo", "title": "Checkout" }, "grid": { "$ref": "#/$defs/SCHISMGrid", "description": "The model grid" }, "data": { "$ref": "#/$defs/SCHISMData", "description": "Model inputs" }, "project": { "default": "WAXA", "description": "TODO", "title": "Project", "type": "string" }, "utc_start": { "default": 0, "description": "TODO", "title": "Utc Start", "type": "integer" }, "time_step": { "default": 120.0, "description": "TODO", "title": "Time Step", "type": "number" }, "msc2": { "default": 36, "description": "same as msc in .nml ... for consitency check between SCHISM and WWM", "title": "Msc2", "type": "integer" }, "mdc2": { "default": 36, "description": "same as mdc in .nml", "title": "Mdc2", "type": "integer" }, "ihfskip": { "default": 720, "description": "stack spool; every ihfskip steps will be put into 1_*, 2_*, etc... use 22320.0 for 31 days; 5040 for 7 days; 21600 for 30 days; 20880 for 29 days", "title": "Ihfskip", "type": "number" }, "icou_elfe_wwm": { "default": 1, "description": "If WWM is used, set coupling/decoupling flag. Not used if USE_WWM is distabled in Makefile. 0: decoupled so 2 models will run independently; 1: full coupled (elevation, vel, and wind are all passed to WWM); 2: elevation and currents in wwm, no wave force in SCHISM; 3: no elevation and no currents in wwm, wave force in SCHISM; 4: elevation but no currents in wwm, wave force in SCHISM; 5: elevation but no currents in wwm, no wave force in SCHISM; 6: no elevation but currents in wwm, wave force in SCHISM; 7: no elevation but currents in wwm, no wave force in SCHISM; Note that all these parameters must be present in this file (even though not used).", "title": "Icou Elfe Wwm", "type": "integer" }, "nstep_wwm": { "default": 3, "description": "call WWM every this many time steps. If /=1, consider using quasi-steady mode in WWM", "title": "Nstep Wwm", "type": "integer" }, "deltc": { "default": 360, "description": "TODO", "title": "Deltc", "type": "integer" }, "h1_bcc": { "default": 50.0, "description": "Baroclinicity calculation in off/nearshore with iunder_deep=ibc=0. The 'below-bottom' gradient is zeroed out if h>=h2_bcc (i.e. like Z) or uses const extrap (i.e. like terrain-following) if h<=h1_bcc(<h2_bcc) (and linear transition in between based on local depth)", "title": "H1 Bcc", "type": "number" }, "h2_bcc": { "default": 100.0, "description": "Baroclinicity calculation in off/nearshore with iunder_deep=ibc=0. The 'below-bottom' gradient is zeroed out if h>=h2_bcc (i.e. like Z) or uses const extrap (i.e. like terrain-following) if h<=h1_bcc(<h2_bcc) (and linear transition in between based on local depth)", "title": "H2 Bcc", "type": "number" }, "h_bcc1": { "default": 100.0, "description": "Cut-off depth for cubic spline interpolation near bottom when computing horizontal gradients", "title": "H Bcc1", "type": "number" }, "thetai": { "default": 0.8, "description": "Implicitness factor (0.5<thetai<=1).", "title": "Thetai", "type": "number" }, "iwbl": { "default": 0, "description": "wave boundary layer formulation (used only if USE_WMM and icou_elfe_wwm/=0 and nchi=1. If icou_elfe_wwm=0, set iwbl=0): 1-modified Grant-Madsen formulation; 2-Soulsby (1997)", "title": "Iwbl", "type": "integer" }, "slam0": { "default": 120.0, "description": "Reference latitude for beta-plane approximation when ncor=1 (not used if ics=2)", "title": "Slam0", "type": "number" }, "sfea0": { "default": -29.0, "description": "Reference latitude for beta-plane approximation when ncor=1 (not used if ics=2)", "title": "Sfea0", "type": "number" }, "nchi": { "default": -1, "description": "bottom friction", "title": "Nchi", "type": "integer" }, "dzb_decayYN": { "default": "!", "description": "TODO", "title": "Dzb Decayyn", "type": "string" }, "rlatitude": { "default": -29, "description": "if ncor=-1", "title": "Rlatitude", "type": "number" }, "ic_elev": { "default": 0, "description": "elevation initial condition flag for cold start only", "title": "Ic Elev", "type": "integer" }, "inv_atm_bnd": { "default": 1, "description": "TODO", "title": "Inv Atm Bnd", "type": "integer" }, "ibtrack_openbndYN": { "default": "!", "description": "TODO", "title": "Ibtrack Openbndyn", "type": "string" }, "iwindoffYN": { "default": "!", "description": "TODO", "title": "Iwindoffyn", "type": "string" }, "iwind_form": { "default": 1, "description": "Needed if nws/=0 !usually use -1, trialling -2 to see if makes a difference", "title": "Iwind Form", "type": "integer" }, "sav_cdYN": { "default": "!", "description": "Save current direction (T/F)", "title": "Sav Cdyn", "type": "string" }, "iout_sta": { "default": 0, "description": "Station output option", "title": "Iout Sta", "type": "integer" }, "lindsprdeg": { "default": "F", "description": "Linear interpolation of directional spread (T/F)", "title": "Lindsprdeg", "type": "string" }, "wbdm": { "default": 90, "description": "Wave boundary data mode (1-4)", "title": "Wbdm", "type": "integer" }, "extrapYN": { "default": "!", "description": "Extrapolation of wave boundary data (T/F)", "title": "Extrapyn", "type": "string" }, "extrap": { "default": "T", "description": "Extrapolation of wave boundary data (T/F)", "title": "Extrap", "type": "string" }, "windYN": { "default": "!", "description": "Wind data (T/F)", "title": "Windyn", "type": "string" }, "filewind": { "default": "wind.dat", "description": "Name of the wind data file", "title": "Filewind", "type": "string" }, "currYN": { "default": "!", "description": "Current data (T/F)", "title": "Curryn", "type": "string" }, "walvYN": { "default": "!", "description": "Wave-induced current data (T/F)", "title": "Walvyn", "type": "string" }, "mesin": { "default": 1, "description": "Input message level (0-2)", "title": "Mesin", "type": "integer" }, "mesbf": { "default": 2, "description": "Output message level (0-2)", "title": "Mesbf", "type": "integer" }, "fricc": { "default": 0.11, "description": "Bottom friction factor", "title": "Fricc", "type": "number" }, "ibreak": { "default": 1, "description": "Wave breaking parameterization (1-3)", "title": "Ibreak", "type": "integer" }, "brcrYN": { "default": "", "description": "Wave breaking parameterization (T/F)", "title": "Brcryn", "type": "string" }, "melim": { "default": 1, "description": "Wave energy limit (1-3)", "title": "Melim", "type": "integer" }, "limfak": { "default": 0.1, "description": "Wave energy limit factor", "title": "Limfak", "type": "number" }, "lsourceswam": { "default": "F", "description": "Source term for SWAN (T/F)", "title": "Lsourceswam", "type": "string" }, "deltc_out": { "default": 3600, "description": "Output time step (s)", "title": "Deltc Out", "type": "integer" }, "definetc": { "default": -1, "description": "Definition of output time step (1-3)", "title": "Definetc", "type": "integer" }, "outstyle": { "default": "NC", "description": "Output style (NC/WW3)", "title": "Outstyle", "type": "string" }, "wwm1": { "default": 1, "description": "sig. height (m) {sigWaveHeight} 2D", "title": "Wwm1", "type": "integer" }, "wwm2": { "default": 1, "description": "Mean average period (sec) - TM01 {meanWavePeriod} 2D", "title": "Wwm2", "type": "integer" }, "wwm3": { "default": 0, "description": "Zero down crossing period for comparison with buoy (s) - TM02 {zeroDowncrossPeriod} 2D", "title": "Wwm3", "type": "integer" }, "wwm4": { "default": 0, "description": "Average period of wave runup/overtopping - TM10 {TM10} 2D", "title": "Wwm4", "type": "integer" }, "wwm5": { "default": 0, "description": "Mean wave number (1/m) {meanWaveNumber} 2D", "title": "Wwm5", "type": "integer" }, "wwm6": { "default": 0, "description": "Mean wave length (m) {meanWaveLength} 2D", "title": "Wwm6", "type": "integer" }, "wwm7": { "default": 0, "description": "Mean average energy transport direction (degr) - MWD in NDBC? {meanWaveDirection} 2D", "title": "Wwm7", "type": "integer" }, "wwm8": { "default": 1, "description": "Mean directional spreading (degr) {meanDirSpreading} 2D", "title": "Wwm8", "type": "integer" }, "wwm9": { "default": 1, "description": "Discrete peak period (sec) - Tp {peakPeriod} 2D", "title": "Wwm9", "type": "integer" }, "wwm10": { "default": 0, "description": "Continuous peak period based on higher order moments (sec) {continuousPeakPeriod} 2D", "title": "Wwm10", "type": "integer" }, "wwm11": { "default": 0, "description": "Peak phase vel. (m/s) {peakPhaseVel} 2D", "title": "Wwm11", "type": "integer" }, "wwm12": { "default": 0, "description": "Peak n-factor {peakNFactor} 2D", "title": "Wwm12", "type": "integer" }, "wwm13": { "default": 0, "description": "Peak group vel. (m/s) {peakGroupVel} 2D", "title": "Wwm13", "type": "integer" }, "wwm14": { "default": 0, "description": "Peak wave number {peakWaveNumber} 2D", "title": "Wwm14", "type": "integer" }, "wwm15": { "default": 0, "description": "Peak wave length {peakWaveLength} 2D", "title": "Wwm15", "type": "integer" }, "wwm16": { "default": 1, "description": "Peak (dominant) direction (degr) {dominantDirection} 2D", "title": "Wwm16", "type": "integer" }, "wwm17": { "default": 1, "description": "Peak directional spreading {peakSpreading} 2D", "title": "Wwm17", "type": "integer" }, "wwm18": { "default": 1, "description": "Discrete peak direction (radian?) {discretePeakDirectio} 2D", "title": "Wwm18", "type": "integer" }, "wwm19": { "default": 0, "description": "Orbital vel. (m/s) {orbitalVelocity} 2D", "title": "Wwm19", "type": "integer" }, "wwm20": { "default": 0, "description": "RMS Orbital vel. (m/s) {rmsOrbitalVelocity} 2D", "title": "Wwm20", "type": "integer" }, "wwm21": { "default": 0, "description": "Bottom excursion period (sec?) {bottomExcursionPerio} 2D", "title": "Wwm21", "type": "integer" }, "wwm22": { "default": 0, "description": "Bottom wave period (sec) {bottomWavePeriod} 2D", "title": "Wwm22", "type": "integer" }, "wwm23": { "default": 0, "description": "Uresell number based on peak period {UresellNumber} 2D", "title": "Wwm23", "type": "integer" }, "wwm24": { "default": 0, "description": "Friction velocity (m/s?) {frictionalVelocity} 2D", "title": "Wwm24", "type": "integer" }, "wwm25": { "default": 0, "description": "Charnock coefficient {CharnockCoeff} 2D", "title": "Wwm25", "type": "integer" }, "wwm26": { "default": 0, "description": "Rougness length {rougnessLength} 2D", "title": "Wwm26", "type": "integer" }, "wwm27": { "default": 0, "description": "Roller energy dissipation rate (W/m\u00b2) @nodes {Drol} 2D", "title": "Wwm27", "type": "integer" }, "wwm28": { "default": 0, "description": "Total wave energy dissipation rate by depth-induced breaking (W/m\u00b2) @nodes {wave_sbrtot} 2D", "title": "Wwm28", "type": "integer" }, "wwm29": { "default": 0, "description": "Total wave energy dissipation rate by bottom friction (W/m\u00b2) @nodes {wave_sbftot} 2D", "title": "Wwm29", "type": "integer" }, "wwm30": { "default": 0, "description": "Total wave energy dissipation rate by whitecapping (W/m\u00b2) @nodes {wave_sdstot} 2D", "title": "Wwm30", "type": "integer" }, "wwm31": { "default": 0, "description": "Total wave energy dissipation rate by vegetation (W/m\u00b2) @nodes {wave_svegtot} 2D", "title": "Wwm31", "type": "integer" }, "wwm32": { "default": 0, "description": "Total wave energy input rate from atmospheric forcing (W/m\u00b2) @nodes {wave_sintot} 2D", "title": "Wwm32", "type": "integer" }, "wwm33": { "default": 0, "description": "WWM_energy vector {waveEnergyDirX,Y} 2D vector", "title": "Wwm33", "type": "integer" }, "wwm34": { "default": 0, "description": "Vertical Stokes velocity (m.s-1) @sides and whole levels {stokes_wvel} 3D", "title": "Wwm34", "type": "integer" }, "wwm35": { "default": 0, "description": "Wave force vector (m.s-2) computed by wwm @side centers and whole levels {waveForceX,Y} 3D vector", "title": "Wwm35", "type": "integer" }, "wwm36": { "default": 0, "description": "Horizontal Stokes velocity (m.s-1) @nodes and whole levels {stokes_hvel} 3D vector", "title": "Wwm36", "type": "integer" }, "wwm37": { "default": 0, "description": "Roller contribution to horizontal Stokes velocity (m.s-1) @nodes and whole levels {roller_stokes_hvel} 3D vector", "title": "Wwm37", "type": "integer" }, "wwm31YN": { "default": "!", "description": "Total wave energy dissipation rate by vegetation (W/m2) @nodes {wave_svegtot} 2D", "title": "Wwm31Yn", "type": "string" }, "wwm32YN": { "default": "!", "description": "Total wave energy input rate from atmospheric forcing (W/m2) @nodes {wave_sintot} 2D", "title": "Wwm32Yn", "type": "string" }, "wwm33YN": { "default": "!", "description": "WWM_energy vector {waveEnergyDirX,Y} 2D vector", "title": "Wwm33Yn", "type": "string" }, "wwm34YN": { "default": "!", "description": "Vertical Stokes velocity (m.s-1) @sides and whole levels {stokes_wvel} 3D", "title": "Wwm34Yn", "type": "string" }, "wwm35YN": { "default": "!", "description": "Wave force vector (m.s-2) computed by wwm @side centers and whole levels {waveForceX,Y} 3D vector", "title": "Wwm35Yn", "type": "string" }, "wwm36YN": { "default": "!", "description": "Horizontal Stokes velocity (m.s-1) @nodes and whole levels {stokes_hvel} 3D vector", "title": "Wwm36Yn", "type": "string" }, "wwm37YN": { "default": "!", "description": "Roller contribution to horizontal Stokes velocity (m.s-1) @nodes and whole levels {roller_stokes_hvel} 3D vector ", "title": "Wwm37Yn", "type": "string" }, "HS": { "default": "T", "description": "significant wave height", "title": "Hs", "type": "string" }, "TM01": { "default": "T", "description": "mean period", "title": "Tm01", "type": "string" }, "TM02": { "default": "F", "description": "zero-crossing mean period", "title": "Tm02", "type": "string" }, "DM": { "default": "T", "description": "mean wave direction", "title": "Dm", "type": "string" }, "DSPR": { "default": "T", "description": "directional spreading", "title": "Dspr", "type": "string" }, "TPP": { "default": "T", "description": "peak period", "title": "Tpp", "type": "string" }, "TPPD": { "default": "T", "description": "direaction of the peak ... check source code", "title": "Tppd", "type": "string" }, "CPP": { "default": "F", "description": "peak phase velocity", "title": "Cpp", "type": "string" }, "WNPP": { "default": "F", "description": "peak wave number", "title": "Wnpp", "type": "string" }, "CGPP": { "default": "F", "description": "peak group speed", "title": "Cgpp", "type": "string" }, "KPP": { "default": "F", "description": "peak wave number", "title": "Kpp", "type": "string" }, "LPP": { "default": "F", "description": "peak wave length", "title": "Lpp", "type": "string" }, "PEAKD": { "default": "T", "description": "peak direction", "title": "Peakd", "type": "string" }, "DPEAK": { "default": "T", "description": "peak direction", "title": "Dpeak", "type": "string" }, "PEAKDSPR": { "default": "T", "description": "peak directional spreading", "title": "Peakdspr", "type": "string" }, "UBOT": { "default": "F", "description": "bottom exc. velocity", "title": "Ubot", "type": "string" }, "ORBITAL": { "default": "F", "description": "bottom orbital velocity", "title": "Orbital", "type": "string" }, "iouts": { "default": 15, "title": "Iouts", "type": "string" }, "nouts": { "default": "'AWAC_in','AWAC_mid','AWAC_off','SPOT_1002','SPOT_1011','SPOT_1018','SPOT_1026'", "description": "TODO", "title": "Nouts", "type": "string" }, "xouts": { "default": "115.6208687,115.5941886,115.58077,115.5942931,115.5830497,115.5807825,115.5960683", "description": "TODO", "title": "Xouts", "type": "string" }, "youts": { "default": "-32.611605,-32.611605,-32.613682,-32.6253914,-32.6135870,-32.6294226,-32.6096741", "description": "TODO", "title": "Youts", "type": "string" }, "lsp2d": { "default": "T", "description": "TODO", "title": "Lsp2D", "type": "string" }, "ac": { "default": "T", "description": "TODO", "title": "Ac", "type": "string" }, "drampwafo": { "default": 1.0, "description": "TODO", "title": "Drampwafo", "type": "number" }, "nadv": { "default": 1, "description": "TODO", "title": "Nadv", "type": "integer" }, "drampwind": { "default": 1.0, "description": "TODO", "title": "Drampwind", "type": "number" }, "dramp": { "default": 1.0, "description": "TODO", "title": "Dramp", "type": "number" }, "wwminput_history_DEP": { "default": "F", "description": "TODO", "title": "Wwminput History Dep", "type": "string" }, "wwminput_history_TAUW": { "default": "F", "description": "TODO", "title": "Wwminput History Tauw", "type": "string" }, "wwminput_history_TAUHF": { "default": "T", "description": "TODO", "title": "Wwminput History Tauhf", "type": "string" }, "wwminput_history_TAUTOT": { "default": "T", "description": "TODO", "title": "Wwminput History Tautot", "type": "string" }, "wwminput_history_STOKESSURFX": { "default": "T", "description": "TODO", "title": "Wwminput History Stokessurfx", "type": "string" }, "wwminput_history_STOKESSURFY": { "default": "T", "description": "TODO", "title": "Wwminput History Stokessurfy", "type": "string" }, "wwminput_history_STOKESBAROX": { "default": "T", "description": "TODO", "title": "Wwminput History Stokesbarox", "type": "string" }, "wwminput_history_STOKESBAROY": { "default": "T", "description": "TODO", "title": "Wwminput History Stokesbaroy", "type": "string" }, "wwminput_station_DEP": { "default": "T", "description": "TODO", "title": "Wwminput Station Dep", "type": "string" }, "wwminput_station_TAUW": { "default": "T", "description": "TODO", "title": "Wwminput Station Tauw", "type": "string" }, "wwminput_station_TAUHF": { "default": "T", "description": "TODO", "title": "Wwminput Station Tauhf", "type": "string" }, "wwminput_station_TAUTOT": { "default": "T", "description": "TODO", "title": "Wwminput Station Tautot", "type": "string" }, "wwminput_station_STOKESSURFX": { "default": "T", "description": "TODO", "title": "Wwminput Station Stokessurfx", "type": "string" }, "wwminput_station_STOKESSURFY": { "default": "T", "description": "TODO", "title": "Wwminput Station Stokessurfy", "type": "string" }, "wwminput_station_STOKESBAROX": { "default": "T", "description": "TODO", "title": "Wwminput Station Stokesbarox", "type": "string" }, "wwminput_station_STOKESBAROY": { "default": "T", "description": "TODO", "title": "Wwminput Station Stokesbaroy", "type": "string" }, "wwminput_station_OUTSTYLE": { "default": "NO", "description": "'NO' no output 'STE' classic station output (default) 'NC' for netcdf output", "title": "Wwminput Station Outstyle", "type": "string" }, "wwminput_LHOTF": { "default": "F", "description": "wwminput Write hotfile", "title": "Wwminput Lhotf", "type": "string" }, "param_nhot": { "default": 0, "description": "use 1 to write out hotstart: output *_hotstart every 'hotout_write' steps", "title": "Param Nhot", "type": "integer" }, "param_nhot_writeYN": { "default": "!", "description": "enables or disables (!) the nhot write field", "title": "Param Nhot Writeyn", "type": "string" }, "param_nhot_write": { "default": 22320.0, "description": "if enabled when nhot and nhotwriteYN enabled then must be a multiple of ihfskip if nhot=1", "title": "Param Nhot Write", "type": "number" }, "wwminput_LHOTR": { "default": "F", "description": "Use hotstart file (see &HOTFILE section)", "title": "Wwminput Lhotr", "type": "string" }, "wwminput_LINID": { "default": "T", "description": " Initial condition; F for default; use T if using WW3 as i.c. etc", "title": "Wwminput Linid", "type": "string" }, "param_iof_hydro1": { "default": 1, "description": "output 0: off; 1: on - elev. [m] {elev} 2D - Default 1", "title": "Param Iof Hydro1", "type": "integer" }, "param_iof_hydro2": { "default": 0, "description": "output 0: off; 1: on - air pressure [Pa] {air_pressure} 2D - Default 0", "title": "Param Iof Hydro2", "type": "integer" }, "param_iof_hydro3": { "default": 0, "description": "output 0: off; 1: on - air temperature [C] {air_temperature} 2D - Default 0", "title": "Param Iof Hydro3", "type": "integer" }, "param_iof_hydro4": { "default": 0, "description": "output 0: off; 1: on - Specific humidity [-] {specific_humidity} 2D - Default 0", "title": "Param Iof Hydro4", "type": "integer" }, "param_iof_hydro5": { "default": 0, "description": "output 0: off; 1: on - solar (shortwave) radiation [W/m/m] {solar_radiation} 2D - Default 0", "title": "Param Iof Hydro5", "type": "integer" }, "param_iof_hydro6": { "default": 0, "description": "output 0: off; 1: on - sensible flux (positive upward) [W/m/m] {sensible_flux} 2D - Default 0", "title": "Param Iof Hydro6", "type": "integer" }, "param_iof_hydro7": { "default": 0, "description": "output 0: off; 1: on - latent heat flux (positive upward) [W/m/m] {latent_heat} 2D - Default 0", "title": "Param Iof Hydro7", "type": "integer" }, "param_iof_hydro8": { "default": 0, "description": "output 0: off; 1: on - upward longwave radiation (positive upward) [W/m/m] {upward_longwave} 2D - Default 0", "title": "Param Iof Hydro8", "type": "integer" }, "param_iof_hydro9": { "default": 0, "description": "output 0: off; 1: on - downward longwave radiation (positive downward) [W/m/m] {downward_longwave} 2D - Default 0", "title": "Param Iof Hydro9", "type": "integer" }, "param_iof_hydro10": { "default": 0, "description": "output 0: off; 1: on - total flux=-flsu-fllu-(radu-radd) [W/m/m] {total_heat_flux} 2D - Default 0", "title": "Param Iof Hydro10", "type": "integer" }, "param_iof_hydro11": { "default": 0, "description": "output 0: off; 1: on - evaporation rate [kg/m/m/s] {evaporation} 2D - Default 0", "title": "Param Iof Hydro11", "type": "integer" }, "param_iof_hydro12": { "default": 0, "description": "output 0: off; 1: on - precipitation rate [kg/m/m/s] {precipitation} 2D - Default 0", "title": "Param Iof Hydro12", "type": "integer" }, "param_iof_hydro13": { "default": 0, "description": "output 0: off; 1: on - Bottom stress vector [kg/m/s^2(Pa)] {bottom_stress} 2D vector - Default 0", "title": "Param Iof Hydro13", "type": "integer" }, "param_iof_hydro14": { "default": 0, "description": "output 0: off; 1: on - wind velocity vector [m/s] {wind_speed} 2D vector - Default 0", "title": "Param Iof Hydro14", "type": "integer" }, "param_iof_hydro15": { "default": 0, "description": "output 0: off; 1: on - wind stress vector [m^2/s/s] {wind_stress} 2D vector - Default 0", "title": "Param Iof Hydro15", "type": "integer" }, "param_iof_hydro16": { "default": 1, "description": "output 0: off; 1: on - depth-averaged vel vector [m/s] {dahv} 2D vector - Default 1", "title": "Param Iof Hydro16", "type": "integer" }, "param_iof_hydro17": { "default": 0, "description": "output 0: off; 1: on - vertical velocity [m/s] {vertical_velocity} 3D - Default 0", "title": "Param Iof Hydro17", "type": "integer" }, "param_iof_hydro18": { "default": 0, "description": "output 0: off; 1: on - water temperature [C] {temp} 3D - Default 0", "title": "Param Iof Hydro18", "type": "integer" }, "param_iof_hydro19": { "default": 0, "description": "output 0: off; 1: on - water salinity [PSU] {salt} 3D - Default 0", "title": "Param Iof Hydro19", "type": "integer" }, "param_iof_hydro20": { "default": 0, "description": "output 0: off; 1: on - water density [kg/m^3] {water_density} 3D - Default 0", "title": "Param Iof Hydro20", "type": "integer" }, "param_iof_hydro21": { "default": 0, "description": "output 0: off; 1: on - eddy diffusivity [m^2/s] {diffusivity} 3D - Default 0", "title": "Param Iof Hydro21", "type": "integer" }, "param_iof_hydro22": { "default": 0, "description": "output 0: off; 1: on - eddy viscosity [m^2/s] {viscosity} 3D - Default 0", "title": "Param Iof Hydro22", "type": "integer" }, "param_iof_hydro23": { "default": 0, "description": "output 0: off; 1: on - turbulent kinetic energy {TKE} 3D - Default 0", "title": "Param Iof Hydro23", "type": "integer" }, "param_iof_hydro24": { "default": 0, "description": "output 0: off; 1: on - turbulent mixing length [m] {mixing_length} 3D - Default 0", "title": "Param Iof Hydro24", "type": "integer" }, "param_iof_hydro25": { "default": 0, "description": "output 0: off; 1: on - horizontal vel vector [m/s] {hvel} 3D vector - Default 0", "title": "Param Iof Hydro25", "type": "integer" }, "param_iof_hydro26": { "default": 0, "description": "output 0: off; 1: on - horizontal vel vector defined @side [m/s] {hvel_side} 3D vector - Default 0", "title": "Param Iof Hydro26", "type": "integer" }, "param_iof_hydro27": { "default": 0, "description": "output 0: off; 1: on - vertical vel. @elem [m/s] {wvel_elem} 3D vector - Default 0", "title": "Param Iof Hydro27", "type": "integer" }, "param_iof_hydro28": { "default": 0, "description": "output 0: off; 1: on - T @prism centers [C] {temp_elem} 3D - Default 0", "title": "Param Iof Hydro28", "type": "integer" }, "param_iof_hydro29": { "default": 0, "description": "output 0: off; 1: on - S @prism centers [PSU] {salt_elem} 3D - Default 0", "title": "Param Iof Hydro29", "type": "integer" }, "param_iof_hydro30": { "default": 0, "description": "output 0: off; 1: on - Barotropic pressure gradient force vector (m.s-2) @side centers {pressure_gradient} 2D vector - Default 0", "title": "Param Iof Hydro30", "type": "integer" }, "wwminput_history_OUTSTYLE": { "default": "NC", "description": "'output option - use 'NO' for no output", "title": "Wwminput History Outstyle", "type": "string" }, "param_nspool_sta": { "default": 30, "description": "needed if iout_sta/=0; mod(nhot_write,nspool_sta) must=0 defaults to 30", "title": "Param Nspool Sta", "type": "integer" }, "ihot": { "default": 0, "description": "hotstart 0: off; 1: on - whether to expect hotstarts - Default - 0-", "title": "Ihot", "type": "integer" }, "wwminput_hotfile_DELTC": { "default": 0, "description": "hotfile time in UNITC (typically seconds) when hotfile should be written, defaults to 3600", "title": "Wwminput Hotfile Deltc", "type": "integer" }, "wwminput_station_DELTC": { "default": 3600, "description": "Time step for output; if smaller than simulation time step, the latter is used (output every step for better 1D 2D spectra analysis)", "title": "Wwminput Station Deltc", "type": "integer" }, "wwminput_history_DELTC": { "default": 3600, "description": "Time step for output; if smaller than simulation time step, the latter is used (output every step for better 1D 2D spectra analysis)", "title": "Wwminput History Deltc", "type": "integer" } }, "required": [ "grid", "data" ], "title": "SchismCSIROConfig", "type": "object" }, "SchismCSIROMigrationConfig": { "additionalProperties": true, "properties": { "model_type": { "const": "schismcsiromigration", "default": "schismcsiromigration", "description": "The model type for SCHISM.", "title": "Model Type", "type": "string" }, "template": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "/opt/hostedtoolcache/Python/3.10.17/x64/lib/python3.10/site-packages/rompy/templates/schism", "description": "The path to the model template", "title": "Template" }, "checkout": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "main", "description": "The git branch to use if the template is a git repo", "title": "Checkout" }, "grid": { "$ref": "#/$defs/SCHISMGrid", "description": "The model grid" }, "data": { "$ref": "#/$defs/SCHISMData", "description": "Model inputs" }, "project": { "default": "WAXA", "description": "TODO", "title": "Project", "type": "string" }, "utc_start": { "default": 0, "description": "TODO", "title": "Utc Start", "type": "integer" }, "time_step": { "default": 120.0, "description": "TODO", "title": "Time Step", "type": "number" }, "msc2": { "default": 36, "description": "same as msc in .nml ... for consitency check between SCHISM and WWM", "title": "Msc2", "type": "integer" }, "mdc2": { "default": 36, "description": "same as mdc in .nml", "title": "Mdc2", "type": "integer" }, "ihfskip": { "default": 720, "description": "stack spool; every ihfskip steps will be put into 1_*, 2_*, etc... use 22320.0 for 31 days; 5040 for 7 days; 21600 for 30 days; 20880 for 29 days", "title": "Ihfskip", "type": "number" }, "icou_elfe_wwm": { "default": 1, "description": "If WWM is used, set coupling/decoupling flag. Not used if USE_WWM is distabled in Makefile. 0: decoupled so 2 models will run independently; 1: full coupled (elevation, vel, and wind are all passed to WWM); 2: elevation and currents in wwm, no wave force in SCHISM; 3: no elevation and no currents in wwm, wave force in SCHISM; 4: elevation but no currents in wwm, wave force in SCHISM; 5: elevation but no currents in wwm, no wave force in SCHISM; 6: no elevation but currents in wwm, wave force in SCHISM; 7: no elevation but currents in wwm, no wave force in SCHISM; Note that all these parameters must be present in this file (even though not used).", "title": "Icou Elfe Wwm", "type": "integer" }, "nstep_wwm": { "default": 3, "description": "call WWM every this many time steps. If /=1, consider using quasi-steady mode in WWM", "title": "Nstep Wwm", "type": "integer" }, "deltc": { "default": 360, "description": "TODO", "title": "Deltc", "type": "integer" }, "h1_bcc": { "default": 50.0, "description": "Baroclinicity calculation in off/nearshore with iunder_deep=ibc=0. The 'below-bottom' gradient is zeroed out if h>=h2_bcc (i.e. like Z) or uses const extrap (i.e. like terrain-following) if h<=h1_bcc(<h2_bcc) (and linear transition in between based on local depth)", "title": "H1 Bcc", "type": "number" }, "h2_bcc": { "default": 100.0, "description": "Baroclinicity calculation in off/nearshore with iunder_deep=ibc=0. The 'below-bottom' gradient is zeroed out if h>=h2_bcc (i.e. like Z) or uses const extrap (i.e. like terrain-following) if h<=h1_bcc(<h2_bcc) (and linear transition in between based on local depth)", "title": "H2 Bcc", "type": "number" }, "h_bcc1": { "default": 100.0, "description": "Cut-off depth for cubic spline interpolation near bottom when computing horizontal gradients", "title": "H Bcc1", "type": "number" }, "thetai": { "default": 0.8, "description": "Implicitness factor (0.5<thetai<=1).", "title": "Thetai", "type": "number" }, "iwbl": { "default": 0, "description": "wave boundary layer formulation (used only if USE_WMM and icou_elfe_wwm/=0 and nchi=1. If icou_elfe_wwm=0, set iwbl=0): 1-modified Grant-Madsen formulation; 2-Soulsby (1997)", "title": "Iwbl", "type": "integer" }, "slam0": { "default": 120.0, "description": "Reference latitude for beta-plane approximation when ncor=1 (not used if ics=2)", "title": "Slam0", "type": "number" }, "sfea0": { "default": -29.0, "description": "Reference latitude for beta-plane approximation when ncor=1 (not used if ics=2)", "title": "Sfea0", "type": "number" }, "nchi": { "default": -1, "description": "bottom friction", "title": "Nchi", "type": "integer" }, "dzb_decayYN": { "default": "!", "description": "TODO", "title": "Dzb Decayyn", "type": "string" }, "rlatitude": { "default": -29, "description": "if ncor=-1", "title": "Rlatitude", "type": "number" }, "ic_elev": { "default": 0, "description": "elevation initial condition flag for cold start only", "title": "Ic Elev", "type": "integer" }, "inv_atm_bnd": { "default": 1, "description": "TODO", "title": "Inv Atm Bnd", "type": "integer" }, "ibtrack_openbndYN": { "default": "!", "description": "TODO", "title": "Ibtrack Openbndyn", "type": "string" }, "iwindoffYN": { "default": "!", "description": "TODO", "title": "Iwindoffyn", "type": "string" }, "iwind_form": { "default": 1, "description": "Needed if nws/=0 !usually use -1, trialling -2 to see if makes a difference", "title": "Iwind Form", "type": "integer" }, "sav_cdYN": { "default": "!", "description": "Save current direction (T/F)", "title": "Sav Cdyn", "type": "string" }, "iout_sta": { "default": 0, "description": "Station output option", "title": "Iout Sta", "type": "integer" }, "lindsprdeg": { "default": "F", "description": "Linear interpolation of directional spread (T/F)", "title": "Lindsprdeg", "type": "string" }, "wbdm": { "default": 90, "description": "Wave boundary data mode (1-4)", "title": "Wbdm", "type": "integer" }, "extrapYN": { "default": "!", "description": "Extrapolation of wave boundary data (T/F)", "title": "Extrapyn", "type": "string" }, "extrap": { "default": "T", "description": "Extrapolation of wave boundary data (T/F)", "title": "Extrap", "type": "string" }, "windYN": { "default": "!", "description": "Wind data (T/F)", "title": "Windyn", "type": "string" }, "filewind": { "default": "wind.dat", "description": "Name of the wind data file", "title": "Filewind", "type": "string" }, "currYN": { "default": "!", "description": "Current data (T/F)", "title": "Curryn", "type": "string" }, "walvYN": { "default": "!", "description": "Wave-induced current data (T/F)", "title": "Walvyn", "type": "string" }, "mesin": { "default": 1, "description": "Input message level (0-2)", "title": "Mesin", "type": "integer" }, "mesbf": { "default": 2, "description": "Output message level (0-2)", "title": "Mesbf", "type": "integer" }, "fricc": { "default": 0.11, "description": "Bottom friction factor", "title": "Fricc", "type": "number" }, "ibreak": { "default": 1, "description": "Wave breaking parameterization (1-3)", "title": "Ibreak", "type": "integer" }, "brcrYN": { "default": "", "description": "Wave breaking parameterization (T/F)", "title": "Brcryn", "type": "string" }, "melim": { "default": 1, "description": "Wave energy limit (1-3)", "title": "Melim", "type": "integer" }, "limfak": { "default": 0.1, "description": "Wave energy limit factor", "title": "Limfak", "type": "number" }, "lsourceswam": { "default": "F", "description": "Source term for SWAN (T/F)", "title": "Lsourceswam", "type": "string" }, "deltc_out": { "default": 3600, "description": "Output time step (s)", "title": "Deltc Out", "type": "integer" }, "definetc": { "default": -1, "description": "Definition of output time step (1-3)", "title": "Definetc", "type": "integer" }, "outstyle": { "default": "NC", "description": "Output style (NC/WW3)", "title": "Outstyle", "type": "string" }, "wwm1": { "default": 1, "description": "sig. height (m) {sigWaveHeight} 2D", "title": "Wwm1", "type": "integer" }, "wwm2": { "default": 1, "description": "Mean average period (sec) - TM01 {meanWavePeriod} 2D", "title": "Wwm2", "type": "integer" }, "wwm3": { "default": 0, "description": "Zero down crossing period for comparison with buoy (s) - TM02 {zeroDowncrossPeriod} 2D", "title": "Wwm3", "type": "integer" }, "wwm4": { "default": 0, "description": "Average period of wave runup/overtopping - TM10 {TM10} 2D", "title": "Wwm4", "type": "integer" }, "wwm5": { "default": 0, "description": "Mean wave number (1/m) {meanWaveNumber} 2D", "title": "Wwm5", "type": "integer" }, "wwm6": { "default": 0, "description": "Mean wave length (m) {meanWaveLength} 2D", "title": "Wwm6", "type": "integer" }, "wwm7": { "default": 0, "description": "Mean average energy transport direction (degr) - MWD in NDBC? {meanWaveDirection} 2D", "title": "Wwm7", "type": "integer" }, "wwm8": { "default": 1, "description": "Mean directional spreading (degr) {meanDirSpreading} 2D", "title": "Wwm8", "type": "integer" }, "wwm9": { "default": 1, "description": "Discrete peak period (sec) - Tp {peakPeriod} 2D", "title": "Wwm9", "type": "integer" }, "wwm10": { "default": 0, "description": "Continuous peak period based on higher order moments (sec) {continuousPeakPeriod} 2D", "title": "Wwm10", "type": "integer" }, "wwm11": { "default": 0, "description": "Peak phase vel. (m/s) {peakPhaseVel} 2D", "title": "Wwm11", "type": "integer" }, "wwm12": { "default": 0, "description": "Peak n-factor {peakNFactor} 2D", "title": "Wwm12", "type": "integer" }, "wwm13": { "default": 0, "description": "Peak group vel. (m/s) {peakGroupVel} 2D", "title": "Wwm13", "type": "integer" }, "wwm14": { "default": 0, "description": "Peak wave number {peakWaveNumber} 2D", "title": "Wwm14", "type": "integer" }, "wwm15": { "default": 0, "description": "Peak wave length {peakWaveLength} 2D", "title": "Wwm15", "type": "integer" }, "wwm16": { "default": 1, "description": "Peak (dominant) direction (degr) {dominantDirection} 2D", "title": "Wwm16", "type": "integer" }, "wwm17": { "default": 1, "description": "Peak directional spreading {peakSpreading} 2D", "title": "Wwm17", "type": "integer" }, "wwm18": { "default": 1, "description": "Discrete peak direction (radian?) {discretePeakDirectio} 2D", "title": "Wwm18", "type": "integer" }, "wwm19": { "default": 0, "description": "Orbital vel. (m/s) {orbitalVelocity} 2D", "title": "Wwm19", "type": "integer" }, "wwm20": { "default": 0, "description": "RMS Orbital vel. (m/s) {rmsOrbitalVelocity} 2D", "title": "Wwm20", "type": "integer" }, "wwm21": { "default": 0, "description": "Bottom excursion period (sec?) {bottomExcursionPerio} 2D", "title": "Wwm21", "type": "integer" }, "wwm22": { "default": 0, "description": "Bottom wave period (sec) {bottomWavePeriod} 2D", "title": "Wwm22", "type": "integer" }, "wwm23": { "default": 0, "description": "Uresell number based on peak period {UresellNumber} 2D", "title": "Wwm23", "type": "integer" }, "wwm24": { "default": 0, "description": "Friction velocity (m/s?) {frictionalVelocity} 2D", "title": "Wwm24", "type": "integer" }, "wwm25": { "default": 0, "description": "Charnock coefficient {CharnockCoeff} 2D", "title": "Wwm25", "type": "integer" }, "wwm26": { "default": 0, "description": "Rougness length {rougnessLength} 2D", "title": "Wwm26", "type": "integer" }, "wwm27": { "default": 0, "description": "Roller energy dissipation rate (W/m\u00b2) @nodes {Drol} 2D", "title": "Wwm27", "type": "integer" }, "wwm28": { "default": 0, "description": "Total wave energy dissipation rate by depth-induced breaking (W/m\u00b2) @nodes {wave_sbrtot} 2D", "title": "Wwm28", "type": "integer" }, "wwm29": { "default": 0, "description": "Total wave energy dissipation rate by bottom friction (W/m\u00b2) @nodes {wave_sbftot} 2D", "title": "Wwm29", "type": "integer" }, "wwm30": { "default": 0, "description": "Total wave energy dissipation rate by whitecapping (W/m\u00b2) @nodes {wave_sdstot} 2D", "title": "Wwm30", "type": "integer" }, "wwm31": { "default": 0, "description": "Total wave energy dissipation rate by vegetation (W/m\u00b2) @nodes {wave_svegtot} 2D", "title": "Wwm31", "type": "integer" }, "wwm32": { "default": 0, "description": "Total wave energy input rate from atmospheric forcing (W/m\u00b2) @nodes {wave_sintot} 2D", "title": "Wwm32", "type": "integer" }, "wwm33": { "default": 0, "description": "WWM_energy vector {waveEnergyDirX,Y} 2D vector", "title": "Wwm33", "type": "integer" }, "wwm34": { "default": 0, "description": "Vertical Stokes velocity (m.s-1) @sides and whole levels {stokes_wvel} 3D", "title": "Wwm34", "type": "integer" }, "wwm35": { "default": 0, "description": "Wave force vector (m.s-2) computed by wwm @side centers and whole levels {waveForceX,Y} 3D vector", "title": "Wwm35", "type": "integer" }, "wwm36": { "default": 0, "description": "Horizontal Stokes velocity (m.s-1) @nodes and whole levels {stokes_hvel} 3D vector", "title": "Wwm36", "type": "integer" }, "wwm37": { "default": 0, "description": "Roller contribution to horizontal Stokes velocity (m.s-1) @nodes and whole levels {roller_stokes_hvel} 3D vector", "title": "Wwm37", "type": "integer" }, "wwm31YN": { "default": "!", "description": "Total wave energy dissipation rate by vegetation (W/m2) @nodes {wave_svegtot} 2D", "title": "Wwm31Yn", "type": "string" }, "wwm32YN": { "default": "!", "description": "Total wave energy input rate from atmospheric forcing (W/m2) @nodes {wave_sintot} 2D", "title": "Wwm32Yn", "type": "string" }, "wwm33YN": { "default": "!", "description": "WWM_energy vector {waveEnergyDirX,Y} 2D vector", "title": "Wwm33Yn", "type": "string" }, "wwm34YN": { "default": "!", "description": "Vertical Stokes velocity (m.s-1) @sides and whole levels {stokes_wvel} 3D", "title": "Wwm34Yn", "type": "string" }, "wwm35YN": { "default": "!", "description": "Wave force vector (m.s-2) computed by wwm @side centers and whole levels {waveForceX,Y} 3D vector", "title": "Wwm35Yn", "type": "string" }, "wwm36YN": { "default": "!", "description": "Horizontal Stokes velocity (m.s-1) @nodes and whole levels {stokes_hvel} 3D vector", "title": "Wwm36Yn", "type": "string" }, "wwm37YN": { "default": "!", "description": "Roller contribution to horizontal Stokes velocity (m.s-1) @nodes and whole levels {roller_stokes_hvel} 3D vector ", "title": "Wwm37Yn", "type": "string" }, "HS": { "default": "T", "description": "significant wave height", "title": "Hs", "type": "string" }, "TM01": { "default": "T", "description": "mean period", "title": "Tm01", "type": "string" }, "TM02": { "default": "F", "description": "zero-crossing mean period", "title": "Tm02", "type": "string" }, "DM": { "default": "T", "description": "mean wave direction", "title": "Dm", "type": "string" }, "DSPR": { "default": "T", "description": "directional spreading", "title": "Dspr", "type": "string" }, "TPP": { "default": "T", "description": "peak period", "title": "Tpp", "type": "string" }, "TPPD": { "default": "T", "description": "direaction of the peak ... check source code", "title": "Tppd", "type": "string" }, "CPP": { "default": "F", "description": "peak phase velocity", "title": "Cpp", "type": "string" }, "WNPP": { "default": "F", "description": "peak wave number", "title": "Wnpp", "type": "string" }, "CGPP": { "default": "F", "description": "peak group speed", "title": "Cgpp", "type": "string" }, "KPP": { "default": "F", "description": "peak wave number", "title": "Kpp", "type": "string" }, "LPP": { "default": "F", "description": "peak wave length", "title": "Lpp", "type": "string" }, "PEAKD": { "default": "T", "description": "peak direction", "title": "Peakd", "type": "string" }, "DPEAK": { "default": "T", "description": "peak direction", "title": "Dpeak", "type": "string" }, "PEAKDSPR": { "default": "T", "description": "peak directional spreading", "title": "Peakdspr", "type": "string" }, "UBOT": { "default": "F", "description": "bottom exc. velocity", "title": "Ubot", "type": "string" }, "ORBITAL": { "default": "F", "description": "bottom orbital velocity", "title": "Orbital", "type": "string" }, "iouts": { "default": 15, "title": "Iouts", "type": "string" }, "nouts": { "default": "'AWAC_in','AWAC_mid','AWAC_off','SPOT_1002','SPOT_1011','SPOT_1018','SPOT_1026'", "description": "TODO", "title": "Nouts", "type": "string" }, "xouts": { "default": "115.6208687,115.5941886,115.58077,115.5942931,115.5830497,115.5807825,115.5960683", "description": "TODO", "title": "Xouts", "type": "string" }, "youts": { "default": "-32.611605,-32.611605,-32.613682,-32.6253914,-32.6135870,-32.6294226,-32.6096741", "description": "TODO", "title": "Youts", "type": "string" }, "lsp2d": { "default": "T", "description": "TODO", "title": "Lsp2D", "type": "string" }, "ac": { "default": "T", "description": "TODO", "title": "Ac", "type": "string" }, "drampwafo": { "default": 1.0, "description": "TODO", "title": "Drampwafo", "type": "number" }, "nadv": { "default": 1, "description": "TODO", "title": "Nadv", "type": "integer" }, "drampwind": { "default": 1.0, "description": "TODO", "title": "Drampwind", "type": "number" }, "dramp": { "default": 1.0, "description": "TODO", "title": "Dramp", "type": "number" }, "wwminput_history_DEP": { "default": "F", "description": "TODO", "title": "Wwminput History Dep", "type": "string" }, "wwminput_history_TAUW": { "default": "F", "description": "TODO", "title": "Wwminput History Tauw", "type": "string" }, "wwminput_history_TAUHF": { "default": "T", "description": "TODO", "title": "Wwminput History Tauhf", "type": "string" }, "wwminput_history_TAUTOT": { "default": "T", "description": "TODO", "title": "Wwminput History Tautot", "type": "string" }, "wwminput_history_STOKESSURFX": { "default": "T", "description": "TODO", "title": "Wwminput History Stokessurfx", "type": "string" }, "wwminput_history_STOKESSURFY": { "default": "T", "description": "TODO", "title": "Wwminput History Stokessurfy", "type": "string" }, "wwminput_history_STOKESBAROX": { "default": "T", "description": "TODO", "title": "Wwminput History Stokesbarox", "type": "string" }, "wwminput_history_STOKESBAROY": { "default": "T", "description": "TODO", "title": "Wwminput History Stokesbaroy", "type": "string" }, "wwminput_station_DEP": { "default": "T", "description": "TODO", "title": "Wwminput Station Dep", "type": "string" }, "wwminput_station_TAUW": { "default": "T", "description": "TODO", "title": "Wwminput Station Tauw", "type": "string" }, "wwminput_station_TAUHF": { "default": "T", "description": "TODO", "title": "Wwminput Station Tauhf", "type": "string" }, "wwminput_station_TAUTOT": { "default": "T", "description": "TODO", "title": "Wwminput Station Tautot", "type": "string" }, "wwminput_station_STOKESSURFX": { "default": "T", "description": "TODO", "title": "Wwminput Station Stokessurfx", "type": "string" }, "wwminput_station_STOKESSURFY": { "default": "T", "description": "TODO", "title": "Wwminput Station Stokessurfy", "type": "string" }, "wwminput_station_STOKESBAROX": { "default": "T", "description": "TODO", "title": "Wwminput Station Stokesbarox", "type": "string" }, "wwminput_station_STOKESBAROY": { "default": "T", "description": "TODO", "title": "Wwminput Station Stokesbaroy", "type": "string" }, "wwminput_station_OUTSTYLE": { "default": "NO", "description": "'NO' no output 'STE' classic station output (default) 'NC' for netcdf output", "title": "Wwminput Station Outstyle", "type": "string" }, "wwminput_LHOTF": { "default": "F", "description": "wwminput Write hotfile", "title": "Wwminput Lhotf", "type": "string" }, "param_nhot": { "default": 0, "description": "use 1 to write out hotstart: output *_hotstart every 'hotout_write' steps", "title": "Param Nhot", "type": "integer" }, "param_nhot_writeYN": { "default": "!", "description": "enables or disables (!) the nhot write field", "title": "Param Nhot Writeyn", "type": "string" }, "param_nhot_write": { "default": 22320.0, "description": "if enabled when nhot and nhotwriteYN enabled then must be a multiple of ihfskip if nhot=1", "title": "Param Nhot Write", "type": "number" }, "wwminput_LHOTR": { "default": "F", "description": "Use hotstart file (see &HOTFILE section)", "title": "Wwminput Lhotr", "type": "string" }, "wwminput_LINID": { "default": "T", "description": " Initial condition; F for default; use T if using WW3 as i.c. etc", "title": "Wwminput Linid", "type": "string" }, "param_iof_hydro1": { "default": 1, "description": "output 0: off; 1: on - elev. [m] {elev} 2D - Default 1", "title": "Param Iof Hydro1", "type": "integer" }, "param_iof_hydro2": { "default": 0, "description": "output 0: off; 1: on - air pressure [Pa] {air_pressure} 2D - Default 0", "title": "Param Iof Hydro2", "type": "integer" }, "param_iof_hydro3": { "default": 0, "description": "output 0: off; 1: on - air temperature [C] {air_temperature} 2D - Default 0", "title": "Param Iof Hydro3", "type": "integer" }, "param_iof_hydro4": { "default": 0, "description": "output 0: off; 1: on - Specific humidity [-] {specific_humidity} 2D - Default 0", "title": "Param Iof Hydro4", "type": "integer" }, "param_iof_hydro5": { "default": 0, "description": "output 0: off; 1: on - solar (shortwave) radiation [W/m/m] {solar_radiation} 2D - Default 0", "title": "Param Iof Hydro5", "type": "integer" }, "param_iof_hydro6": { "default": 0, "description": "output 0: off; 1: on - sensible flux (positive upward) [W/m/m] {sensible_flux} 2D - Default 0", "title": "Param Iof Hydro6", "type": "integer" }, "param_iof_hydro7": { "default": 0, "description": "output 0: off; 1: on - latent heat flux (positive upward) [W/m/m] {latent_heat} 2D - Default 0", "title": "Param Iof Hydro7", "type": "integer" }, "param_iof_hydro8": { "default": 0, "description": "output 0: off; 1: on - upward longwave radiation (positive upward) [W/m/m] {upward_longwave} 2D - Default 0", "title": "Param Iof Hydro8", "type": "integer" }, "param_iof_hydro9": { "default": 0, "description": "output 0: off; 1: on - downward longwave radiation (positive downward) [W/m/m] {downward_longwave} 2D - Default 0", "title": "Param Iof Hydro9", "type": "integer" }, "param_iof_hydro10": { "default": 0, "description": "output 0: off; 1: on - total flux=-flsu-fllu-(radu-radd) [W/m/m] {total_heat_flux} 2D - Default 0", "title": "Param Iof Hydro10", "type": "integer" }, "param_iof_hydro11": { "default": 0, "description": "output 0: off; 1: on - evaporation rate [kg/m/m/s] {evaporation} 2D - Default 0", "title": "Param Iof Hydro11", "type": "integer" }, "param_iof_hydro12": { "default": 0, "description": "output 0: off; 1: on - precipitation rate [kg/m/m/s] {precipitation} 2D - Default 0", "title": "Param Iof Hydro12", "type": "integer" }, "param_iof_hydro13": { "default": 0, "description": "output 0: off; 1: on - Bottom stress vector [kg/m/s^2(Pa)] {bottom_stress} 2D vector - Default 0", "title": "Param Iof Hydro13", "type": "integer" }, "param_iof_hydro14": { "default": 0, "description": "output 0: off; 1: on - wind velocity vector [m/s] {wind_speed} 2D vector - Default 0", "title": "Param Iof Hydro14", "type": "integer" }, "param_iof_hydro15": { "default": 0, "description": "output 0: off; 1: on - wind stress vector [m^2/s/s] {wind_stress} 2D vector - Default 0", "title": "Param Iof Hydro15", "type": "integer" }, "param_iof_hydro16": { "default": 1, "description": "output 0: off; 1: on - depth-averaged vel vector [m/s] {dahv} 2D vector - Default 1", "title": "Param Iof Hydro16", "type": "integer" }, "param_iof_hydro17": { "default": 0, "description": "output 0: off; 1: on - vertical velocity [m/s] {vertical_velocity} 3D - Default 0", "title": "Param Iof Hydro17", "type": "integer" }, "param_iof_hydro18": { "default": 0, "description": "output 0: off; 1: on - water temperature [C] {temp} 3D - Default 0", "title": "Param Iof Hydro18", "type": "integer" }, "param_iof_hydro19": { "default": 0, "description": "output 0: off; 1: on - water salinity [PSU] {salt} 3D - Default 0", "title": "Param Iof Hydro19", "type": "integer" }, "param_iof_hydro20": { "default": 0, "description": "output 0: off; 1: on - water density [kg/m^3] {water_density} 3D - Default 0", "title": "Param Iof Hydro20", "type": "integer" }, "param_iof_hydro21": { "default": 0, "description": "output 0: off; 1: on - eddy diffusivity [m^2/s] {diffusivity} 3D - Default 0", "title": "Param Iof Hydro21", "type": "integer" }, "param_iof_hydro22": { "default": 0, "description": "output 0: off; 1: on - eddy viscosity [m^2/s] {viscosity} 3D - Default 0", "title": "Param Iof Hydro22", "type": "integer" }, "param_iof_hydro23": { "default": 0, "description": "output 0: off; 1: on - turbulent kinetic energy {TKE} 3D - Default 0", "title": "Param Iof Hydro23", "type": "integer" }, "param_iof_hydro24": { "default": 0, "description": "output 0: off; 1: on - turbulent mixing length [m] {mixing_length} 3D - Default 0", "title": "Param Iof Hydro24", "type": "integer" }, "param_iof_hydro25": { "default": 0, "description": "output 0: off; 1: on - horizontal vel vector [m/s] {hvel} 3D vector - Default 0", "title": "Param Iof Hydro25", "type": "integer" }, "param_iof_hydro26": { "default": 0, "description": "output 0: off; 1: on - horizontal vel vector defined @side [m/s] {hvel_side} 3D vector - Default 0", "title": "Param Iof Hydro26", "type": "integer" }, "param_iof_hydro27": { "default": 0, "description": "output 0: off; 1: on - vertical vel. @elem [m/s] {wvel_elem} 3D vector - Default 0", "title": "Param Iof Hydro27", "type": "integer" }, "param_iof_hydro28": { "default": 0, "description": "output 0: off; 1: on - T @prism centers [C] {temp_elem} 3D - Default 0", "title": "Param Iof Hydro28", "type": "integer" }, "param_iof_hydro29": { "default": 0, "description": "output 0: off; 1: on - S @prism centers [PSU] {salt_elem} 3D - Default 0", "title": "Param Iof Hydro29", "type": "integer" }, "param_iof_hydro30": { "default": 0, "description": "output 0: off; 1: on - Barotropic pressure gradient force vector (m.s-2) @side centers {pressure_gradient} 2D vector - Default 0", "title": "Param Iof Hydro30", "type": "integer" }, "wwminput_history_OUTSTYLE": { "default": "NC", "description": "'output option - use 'NO' for no output", "title": "Wwminput History Outstyle", "type": "string" }, "param_nspool_sta": { "default": 30, "description": "needed if iout_sta/=0; mod(nhot_write,nspool_sta) must=0 defaults to 30", "title": "Param Nspool Sta", "type": "integer" }, "ihot": { "default": 0, "description": "hotstart 0: off; 1: on - whether to expect hotstarts - Default - 0-", "title": "Ihot", "type": "integer" }, "wwminput_hotfile_DELTC": { "default": 0, "description": "hotfile time in UNITC (typically seconds) when hotfile should be written, defaults to 3600", "title": "Wwminput Hotfile Deltc", "type": "integer" }, "wwminput_station_DELTC": { "default": 3600, "description": "Time step for output; if smaller than simulation time step, the latter is used (output every step for better 1D 2D spectra analysis)", "title": "Wwminput Station Deltc", "type": "integer" }, "wwminput_history_DELTC": { "default": 3600, "description": "Time step for output; if smaller than simulation time step, the latter is used (output every step for better 1D 2D spectra analysis)", "title": "Wwminput History Deltc", "type": "integer" } }, "required": [ "grid", "data" ], "title": "SchismCSIROMigrationConfig", "type": "object" }, "Schout": { "additionalProperties": false, "properties": { "nc_out": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Main switch to control netcdf output. If 0, SCHISM won't output nc files at all.", "title": "Nc Out" }, "iof_ugrid": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "UGRID option for 3D outputs. If non-zero, 3D outputs will have UGRID metadata.", "title": "Iof Ugrid" }, "nhot": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Option for hotstart outputs. If 1, outputs hotstart every 'nhot_write' steps.", "title": "Nhot" }, "nhot_write": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 8640, "description": "Number of steps between hotstart outputs. Must be a multiple of ihfskip if nhot=1.", "title": "Nhot Write" }, "iout_sta": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Station output option. If non-zero, requires output skip (nspool_sta) and a station.in file.", "title": "Iout Sta" }, "nspool_sta": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 10, "description": "Number of steps between station outputs. Required if iout_sta is non-zero.", "title": "Nspool Sta" }, "iof_hydro__1": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "0: off; 1: on - elev. [m] {elevation} 2D", "title": "Iof Hydro 1" }, "iof_hydro__2": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "air pressure [Pa] {airPressure} 2D", "title": "Iof Hydro 2" }, "iof_hydro__3": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "air temperature [C] {airTemperature} 2D", "title": "Iof Hydro 3" }, "iof_hydro__4": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Specific humidity [-] {specificHumidity} 2D", "title": "Iof Hydro 4" }, "iof_hydro__5": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Net downward solar (shortwave) radiation after albedo [W/m/m] {solarRadiation} 2D", "title": "Iof Hydro 5" }, "iof_hydro__6": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "sensible flux (positive upward) [W/m/m] {sensibleHeat} 2D", "title": "Iof Hydro 6" }, "iof_hydro__7": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "latent heat flux (positive upward) [W/m/m] {latentHeat} 2D", "title": "Iof Hydro 7" }, "iof_hydro__8": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "upward longwave radiation (positive upward) [W/m/m] {upwardLongwave} 2D", "title": "Iof Hydro 8" }, "iof_hydro__9": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "downward longwave radiation (positive downward) [W/m/m] {downwardLongwave} 2D", "title": "Iof Hydro 9" }, "iof_hydro__10": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "total flux=-flsu-fllu-(radu-radd) [W/m/m] {totalHeat} 2D", "title": "Iof Hydro 10" }, "iof_hydro__11": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "evaporation rate [kg/m/m/s] {evaporationRate} 2D", "title": "Iof Hydro 11" }, "iof_hydro__12": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "precipitation rate [kg/m/m/s] {precipitationRate} 2D", "title": "Iof Hydro 12" }, "iof_hydro__13": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Bottom stress vector [kg/m/s^2(Pa)] {bottomStressX,Y} 2D vector", "title": "Iof Hydro 13" }, "iof_hydro__14": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "wind velocity vector [m/s] {windSpeedX,Y} 2D vector", "title": "Iof Hydro 14" }, "iof_hydro__15": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "wind stress vector [m^2/s/s] {windStressX,Y} 2D vector", "title": "Iof Hydro 15" }, "iof_hydro__16": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "depth-averaged vel vector [m/s] {depthAverageVelX,Y} 2D vector", "title": "Iof Hydro 16" }, "iof_hydro__17": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "vertical velocity [m/s] {verticalVelocity} 3D", "title": "Iof Hydro 17" }, "iof_hydro__18": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "water temperature [C] {temperature} 3D", "title": "Iof Hydro 18" }, "iof_hydro__19": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "water salinity [PSU] {salinity} 3D", "title": "Iof Hydro 19" }, "iof_hydro__20": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "water density [kg/m^3] {waterDensity} 3D", "title": "Iof Hydro 20" }, "iof_hydro__21": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "vertical eddy diffusivity [m^2/s] {diffusivity} 3D", "title": "Iof Hydro 21" }, "iof_hydro__22": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "vertical eddy viscosity [m^2/s] {viscosity} 3D", "title": "Iof Hydro 22" }, "iof_hydro__23": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "turbulent kinetic energy {turbulentKineticEner} 3D", "title": "Iof Hydro 23" }, "iof_hydro__24": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "turbulent mixing length [m] {mixingLength} 3D", "title": "Iof Hydro 24" }, "iof_hydro__26": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "horizontal vel vector [m/s] {horizontalVelX,Y} 3D vector", "title": "Iof Hydro 26" }, "iof_hydro__27": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "horizontal vel vector defined @side [m/s] {horizontalSideVelX,Y} 3D vector", "title": "Iof Hydro 27" }, "iof_hydro__28": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "vertical vel. @elem [m/s] {verticalVelAtElement} 3D", "title": "Iof Hydro 28" }, "iof_hydro__29": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "T @prism centers [C] {temperatureAtElement} 3D", "title": "Iof Hydro 29" }, "iof_hydro__30": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "S @prism centers [PSU] {salinityAtElement} 3D", "title": "Iof Hydro 30" }, "iof_hydro__31": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Barotropic pressure gradient force vector (m.s-2) @side centers {pressure_gradient} 2D vector", "title": "Iof Hydro 31" }, "iof_wwm__1": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "sig. height (m) {sigWaveHeight} 2D", "title": "Iof Wwm 1" }, "iof_wwm__2": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Mean average period (sec) - TM01 {meanWavePeriod} 2D", "title": "Iof Wwm 2" }, "iof_wwm__3": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Zero down crossing period for comparison with buoy (s) - TM02 {zeroDowncrossPeriod} 2D", "title": "Iof Wwm 3" }, "iof_wwm__4": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Average period of wave runup/overtopping - TM10 {TM10} 2D", "title": "Iof Wwm 4" }, "iof_wwm__5": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Mean wave number (1/m) {meanWaveNumber} 2D", "title": "Iof Wwm 5" }, "iof_wwm__6": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Mean wave length (m) {meanWaveLength} 2D", "title": "Iof Wwm 6" }, "iof_wwm__7": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Mean average energy transport direction (degr) - MWD in NDBC? {meanWaveDirection} 2D", "title": "Iof Wwm 7" }, "iof_wwm__8": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Mean directional spreading (degr) {meanDirSpreading} 2D", "title": "Iof Wwm 8" }, "iof_wwm__9": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Discrete peak period (sec) - Tp {peakPeriod} 2D", "title": "Iof Wwm 9" }, "iof_wwm__10": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Continuous peak period based on higher order moments (sec) {continuousPeakPeriod} 2D", "title": "Iof Wwm 10" }, "iof_wwm__11": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Peak phase vel. (m/s) {peakPhaseVel} 2D", "title": "Iof Wwm 11" }, "iof_wwm__12": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Peak n-factor {peakNFactor} 2D", "title": "Iof Wwm 12" }, "iof_wwm__13": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Peak group vel. (m/s) {peakGroupVel} 2D", "title": "Iof Wwm 13" }, "iof_wwm__14": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Peak wave number {peakWaveNumber} 2D", "title": "Iof Wwm 14" }, "iof_wwm__15": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Peak wave length {peakWaveLength} 2D", "title": "Iof Wwm 15" }, "iof_wwm__16": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Peak (dominant) direction (degr) {dominantDirection} 2D", "title": "Iof Wwm 16" }, "iof_wwm__17": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Peak directional spreading {peakSpreading} 2D", "title": "Iof Wwm 17" }, "iof_wwm__18": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Discrete peak direction (radian?) {discretePeakDirectio} 2D", "title": "Iof Wwm 18" }, "iof_wwm__19": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Orbital vel. (m/s) {orbitalVelocity} 2D", "title": "Iof Wwm 19" }, "iof_wwm__20": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "RMS Orbital vel. (m/s) {rmsOrbitalVelocity} 2D", "title": "Iof Wwm 20" }, "iof_wwm__21": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Bottom excursion period (sec?) {bottomExcursionPerio} 2D", "title": "Iof Wwm 21" }, "iof_wwm__22": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Bottom wave period (sec) {bottomWavePeriod} 2D", "title": "Iof Wwm 22" }, "iof_wwm__23": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Uresell number based on peak period {UresellNumber} 2D", "title": "Iof Wwm 23" }, "iof_wwm__24": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Friction velocity (m/s?) {frictionalVelocity} 2D", "title": "Iof Wwm 24" }, "iof_wwm__25": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Charnock coefficient {CharnockCoeff} 2D", "title": "Iof Wwm 25" }, "iof_wwm__26": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Rougness length {rougnessLength} 2D", "title": "Iof Wwm 26" }, "iof_wwm__27": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Roller energy dissipation rate (W/m\u00b2) @nodes {Drol} 2D", "title": "Iof Wwm 27" }, "iof_wwm__28": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Total wave energy dissipation rate by depth-induced breaking (W/m\u00b2) @nodes {wave_sbrtot} 2D", "title": "Iof Wwm 28" }, "iof_wwm__29": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Total wave energy dissipation rate by bottom friction (W/m\u00b2) @nodes {wave_sbftot} 2D", "title": "Iof Wwm 29" }, "iof_wwm__30": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Total wave energy dissipation rate by whitecapping (W/m\u00b2) @nodes {wave_sdstot} 2D", "title": "Iof Wwm 30" }, "iof_wwm__31": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Total wave energy dissipation rate by vegetation (W/m\u00b2) @nodes {wave_svegtot} 2D", "title": "Iof Wwm 31" }, "iof_wwm__32": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Total wave energy input rate from atmospheric forcing (W/m\u00b2) @nodes {wave_sintot} 2D", "title": "Iof Wwm 32" }, "iof_wwm__33": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "WWM_energy vector {waveEnergyDirX,Y} 2D vector", "title": "Iof Wwm 33" }, "iof_wwm__34": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Vertical Stokes velocity (m.s-1) @sides and whole levels {stokes_wvel} 3D", "title": "Iof Wwm 34" }, "iof_wwm__35": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Wave force vector (m.s-2) computed by wwm @side centers and whole levels {waveForceX,Y} 3D vector", "title": "Iof Wwm 35" }, "iof_wwm__36": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Horizontal Stokes velocity (m.s-1) @nodes and whole levels {stokes_hvel} 3D vector", "title": "Iof Wwm 36" }, "iof_wwm__37": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Roller contribution to horizontal Stokes velocity (m.s-1) @nodes and whole levels {roller_stokes_hvel} 3D vector", "title": "Iof Wwm 37" } }, "title": "Schout", "type": "object" }, "Sed_core": { "additionalProperties": false, "properties": { "sd50": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ "0.12d0", "0.18d0", "0.39d0", "0.60d0", "1.2d0" ], "description": "Median sediment grain diameter (D50) for each sediment tracer, specified in millimeters. This is a list of values corresponding to the number of sediment tracers (Ntracers).", "title": "Sd50" }, "erate": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ "1.6d-3", "1.6d-3", "1.6d-3", "1.6d-3", "1.6d-3" ], "description": "Surface erosion rate for each sediment tracer. The interpretation and units depend on the 'ierosion' parameter. If ierosion=0, the units are kg/m\u00b2/s. If ierosion=1, the units are s/m (as per M_E in Winterwerp et al. 2012, JGR, vol 117).", "title": "Erate" } }, "title": "Sed_core", "type": "object" }, "Sed_opt": { "additionalProperties": false, "properties": { "isedtype": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 1, 1, 1, 1, 1 ], "description": "Sediment type for each class. 0: MUD-like (suspension only), 1: SAND-like (suspension + bedload), 2: GRAVEL-like (not available)", "title": "Isedtype" }, "srho": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ "2650.0d0", "2650.0d0", "2650.0d0", "2650.0d0", "2650.0d0" ], "description": "Sediment grain density (kg/m3) for each sediment class", "title": "Srho" }, "comp_ws": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Flag to enable/disable computation of sediment settling velocity. 0: Disabled (user-defined), 1: Enabled (computed from SAND_SD50 and SAND_SRHO)", "title": "Comp Ws" }, "comp_tauce": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Flag to enable/disable computation of sediment critical shear stress. 0: Disabled (user-defined), 1: Enabled (computed from SAND_SD50 and SAND_SRHO)", "title": "Comp Tauce" }, "wsed": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ "1.06d0", "3.92d0", "5.43d0", "10.19d0", "28.65d0" ], "description": "Particle settling velocity (mm/s) for each sediment class", "title": "Wsed" }, "tau_ce": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ "0.15d0", "0.17d0", "0.23d0", "0.3d0", "0.6d0" ], "description": "Critical shear stress for erosion (Pa) for each sediment class", "title": "Tau Ce" }, "sed_debug": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Debug flag. 0: silent, 1: output variables to outputs/nonfatal_*", "title": "Sed Debug" }, "ised_dump": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Dumping/dredging option. 0: no, 1: needs input sed_dump.in", "title": "Ised Dump" }, "bedload": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Bedload transport formula. 0: Disabled, 1: van Rijn (2007), 3: Soulsby and Damgaard (2005), 4: Wu and Lin (2014)", "title": "Bedload" }, "bedload_filter": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Flag to enable/disable diffusive filter for bedload fluxes. 0: Disabled, 1: Enabled", "title": "Bedload Filter" }, "bedload_limiter": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Flag to enable/disable limiting of bedload flux components. 0: Disabled, 1: Enabled", "title": "Bedload Limiter" }, "suspended_load": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Flag to enable/disable suspended load transport. 0: Disabled, 1: Enabled", "title": "Suspended Load" }, "iasym": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Iasym" }, "w_asym_max": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "0.4d0", "description": "", "title": "W Asym Max" }, "elfrink_filter": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Elfrink Filter" }, "ech_uorb": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 200, "description": "", "title": "Ech Uorb" }, "bedload_acc": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Bedload Acc" }, "bedload_acc_filter": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Bedload Acc Filter" }, "kacc_hoe": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "1.4d-4", "description": "", "title": "Kacc Hoe" }, "kacc_dub": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "0.631d-4", "description": "", "title": "Kacc Dub" }, "thresh_acc_opt": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "", "title": "Thresh Acc Opt" }, "acrit": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "0.2d0", "description": "", "title": "Acrit" }, "tau_option": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "", "title": "Tau Option" }, "tau_max": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "10.0d0", "description": "[Pa]", "title": "Tau Max" }, "zstress": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "0.2d0", "description": "[m]; only used if tau_option/=1", "title": "Zstress" }, "ierosion": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Ierosion" }, "slope_formulation": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 4, "description": "", "title": "Slope Formulation" }, "alpha_bs": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "1.0d0", "description": "only used if slope_formulation=4", "title": "Alpha Bs" }, "alpha_bn": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "1.5d0", "description": "only used if slope_formulation=4", "title": "Alpha Bn" }, "ised_bc_bot": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "", "title": "Ised Bc Bot" }, "alphd": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "", "title": "Alphd" }, "refht": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.75, "description": "suggested value: 0.75;", "title": "Refht" }, "tbp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 100.0, "description": "suggested value: 100;", "title": "Tbp" }, "im_pick_up": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 4, "description": "", "title": "Im Pick Up" }, "sed_morph": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Sed Morph" }, "sed_morph_time": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "1.d0", "description": "", "title": "Sed Morph Time" }, "morph_fac": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "1.0d0", "description": "for all classes", "title": "Morph Fac" }, "drag_formulation": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "", "title": "Drag Formulation" }, "ddensed": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Ddensed" }, "bedforms_rough": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Bedforms Rough" }, "iwave_ripple": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "", "title": "Iwave Ripple" }, "irough_bdld": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "", "title": "Irough Bdld" }, "slope_avalanching": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "", "title": "Slope Avalanching" }, "dry_slope_cr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "", "title": "Dry Slope Cr" }, "wet_slope_cr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.3, "description": "", "title": "Wet Slope Cr" }, "bedmass_filter": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Bedmass Filter" }, "bedmass_threshold": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.025, "description": "", "title": "Bedmass Threshold" }, "bdldiffu": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.5, "description": "", "title": "Bdldiffu" }, "bedload_coeff": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "1.0d0", "description": "", "title": "Bedload Coeff" }, "cdb_min": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "1.d-6", "description": "", "title": "Cdb Min" }, "cdb_max": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.01, "description": "", "title": "Cdb Max" }, "actv_max": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "0.05d0", "description": "", "title": "Actv Max" }, "nbed": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "", "title": "Nbed" }, "sedlay_ini_opt": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "", "title": "Sedlay Ini Opt" }, "toplay_inithick": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "10.0d-2", "description": "", "title": "Toplay Inithick" }, "newlayer_thick": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "0.001d0", "description": "", "title": "Newlayer Thick" }, "imeth_bed_evol": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "", "title": "Imeth Bed Evol" }, "poro_option": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "", "title": "Poro Option" }, "porosity": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.4, "description": "", "title": "Porosity" }, "awooster": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.42, "description": "", "title": "Awooster" }, "bwooster": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": -0.458, "description": "", "title": "Bwooster" } }, "title": "Sed_opt", "type": "object" }, "Sediment": { "additionalProperties": false, "properties": { "sed_core": { "anyOf": [ { "$ref": "#/$defs/Sed_core" }, { "type": "null" } ] }, "sed_opt": { "anyOf": [ { "$ref": "#/$defs/Sed_opt" }, { "type": "null" } ] } }, "title": "Sediment", "type": "object" }, "SfluxAir": { "additionalProperties": false, "description": "This is a single variable source for and sflux input", "properties": { "model_type": { "const": "grid", "default": "grid", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "id": { "choices": [ "air", "rad", "prc" ], "default": null, "description": "id of the source", "title": "Id", "type": "string" }, "source": { "description": "Source reader, must return an xarray gridded dataset in the open method", "discriminator": { "mapping": { "csv": "#/$defs/SourceTimeseriesCSV", "datamesh": "#/$defs/SourceDatamesh", "file": "#/$defs/SourceFile", "intake": "#/$defs/SourceIntake", "wavespectra": "#/$defs/SourceWavespectra" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/SourceTimeseriesCSV" }, { "$ref": "#/$defs/SourceDatamesh" }, { "$ref": "#/$defs/SourceFile" }, { "$ref": "#/$defs/SourceIntake" }, { "$ref": "#/$defs/SourceWavespectra" } ], "title": "Source" }, "link": { "default": false, "description": "Whether to create a symbolic link instead of copying the file", "title": "Link", "type": "boolean" }, "filter": { "anyOf": [ { "$ref": "#/$defs/Filter" }, { "type": "null" } ], "description": "Optional filter specification to apply to the dataset" }, "variables": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": [], "description": "Subset of variables to extract from the dataset", "title": "Variables" }, "coords": { "anyOf": [ { "$ref": "#/$defs/DatasetCoords" }, { "type": "null" } ], "default": { "t": "time", "x": "longitude", "y": "latitude", "z": "depth", "s": "site" }, "description": "Names of the coordinates in the dataset" }, "crop_data": { "default": true, "description": "Update crop filters from Grid and Time objects if passed to get method", "title": "Crop Data", "type": "boolean" }, "buffer": { "default": 0.0, "description": "Space to buffer the grid bounding box if `filter_grid` is True", "title": "Buffer", "type": "number" }, "time_buffer": { "default": [ 0, 1 ], "description": "Number of source data timesteps to buffer the time range if `filter_time` is True", "items": { "type": "integer" }, "title": "Time Buffer", "type": "array" }, "data_type": { "const": "sflux_air", "default": "sflux_air", "description": "Model type discriminator", "title": "Data Type", "type": "string" }, "relative_weight": { "default": 1.0, "description": "relative weight of the source file if two files are provided", "title": "Relative Weight", "type": "number" }, "max_window_hours": { "default": 120.0, "description": "maximum number of hours (offset from start time in each file) in each file of set 1", "title": "Max Window Hours", "type": "number" }, "fail_if_missing": { "default": true, "description": "Fail if the source file is missing", "title": "Fail If Missing", "type": "boolean" }, "uwind_name": { "default": null, "description": "name of zonal wind variable in source", "title": "Uwind Name", "type": "string" }, "vwind_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "name of meridional wind variable in source", "title": "Vwind Name" }, "prmsl_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "name of mean sea level pressure variable in source", "title": "Prmsl Name" }, "stmp_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "name of surface air temperature variable in source", "title": "Stmp Name" }, "spfh_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "name of specific humidity variable in source", "title": "Spfh Name" } }, "required": [ "source" ], "title": "SfluxAir", "type": "object" }, "SfluxPrc": { "additionalProperties": false, "description": "This is a single variable source for and sflux input", "properties": { "model_type": { "const": "grid", "default": "grid", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "id": { "choices": [ "air", "rad", "prc" ], "default": null, "description": "id of the source", "title": "Id", "type": "string" }, "source": { "description": "Source reader, must return an xarray gridded dataset in the open method", "discriminator": { "mapping": { "csv": "#/$defs/SourceTimeseriesCSV", "datamesh": "#/$defs/SourceDatamesh", "file": "#/$defs/SourceFile", "intake": "#/$defs/SourceIntake", "wavespectra": "#/$defs/SourceWavespectra" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/SourceTimeseriesCSV" }, { "$ref": "#/$defs/SourceDatamesh" }, { "$ref": "#/$defs/SourceFile" }, { "$ref": "#/$defs/SourceIntake" }, { "$ref": "#/$defs/SourceWavespectra" } ], "title": "Source" }, "link": { "default": false, "description": "Whether to create a symbolic link instead of copying the file", "title": "Link", "type": "boolean" }, "filter": { "anyOf": [ { "$ref": "#/$defs/Filter" }, { "type": "null" } ], "description": "Optional filter specification to apply to the dataset" }, "variables": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": [], "description": "Subset of variables to extract from the dataset", "title": "Variables" }, "coords": { "anyOf": [ { "$ref": "#/$defs/DatasetCoords" }, { "type": "null" } ], "default": { "t": "time", "x": "longitude", "y": "latitude", "z": "depth", "s": "site" }, "description": "Names of the coordinates in the dataset" }, "crop_data": { "default": true, "description": "Update crop filters from Grid and Time objects if passed to get method", "title": "Crop Data", "type": "boolean" }, "buffer": { "default": 0.0, "description": "Space to buffer the grid bounding box if `filter_grid` is True", "title": "Buffer", "type": "number" }, "time_buffer": { "default": [ 0, 1 ], "description": "Number of source data timesteps to buffer the time range if `filter_time` is True", "items": { "type": "integer" }, "title": "Time Buffer", "type": "array" }, "data_type": { "const": "sflux_prc", "default": "sflux_rad", "description": "Model type discriminator", "title": "Data Type", "type": "string" }, "relative_weight": { "default": 1.0, "description": "relative weight of the source file if two files are provided", "title": "Relative Weight", "type": "number" }, "max_window_hours": { "default": 120.0, "description": "maximum number of hours (offset from start time in each file) in each file of set 1", "title": "Max Window Hours", "type": "number" }, "fail_if_missing": { "default": true, "description": "Fail if the source file is missing", "title": "Fail If Missing", "type": "boolean" }, "prate_name": { "default": null, "description": "name of precipitation rate variable in source", "title": "Prate Name", "type": "string" } }, "required": [ "source" ], "title": "SfluxPrc", "type": "object" }, "SfluxRad": { "additionalProperties": false, "description": "This is a single variable source for and sflux input", "properties": { "model_type": { "const": "grid", "default": "grid", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "id": { "choices": [ "air", "rad", "prc" ], "default": null, "description": "id of the source", "title": "Id", "type": "string" }, "source": { "description": "Source reader, must return an xarray gridded dataset in the open method", "discriminator": { "mapping": { "csv": "#/$defs/SourceTimeseriesCSV", "datamesh": "#/$defs/SourceDatamesh", "file": "#/$defs/SourceFile", "intake": "#/$defs/SourceIntake", "wavespectra": "#/$defs/SourceWavespectra" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/SourceTimeseriesCSV" }, { "$ref": "#/$defs/SourceDatamesh" }, { "$ref": "#/$defs/SourceFile" }, { "$ref": "#/$defs/SourceIntake" }, { "$ref": "#/$defs/SourceWavespectra" } ], "title": "Source" }, "link": { "default": false, "description": "Whether to create a symbolic link instead of copying the file", "title": "Link", "type": "boolean" }, "filter": { "anyOf": [ { "$ref": "#/$defs/Filter" }, { "type": "null" } ], "description": "Optional filter specification to apply to the dataset" }, "variables": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": [], "description": "Subset of variables to extract from the dataset", "title": "Variables" }, "coords": { "anyOf": [ { "$ref": "#/$defs/DatasetCoords" }, { "type": "null" } ], "default": { "t": "time", "x": "longitude", "y": "latitude", "z": "depth", "s": "site" }, "description": "Names of the coordinates in the dataset" }, "crop_data": { "default": true, "description": "Update crop filters from Grid and Time objects if passed to get method", "title": "Crop Data", "type": "boolean" }, "buffer": { "default": 0.0, "description": "Space to buffer the grid bounding box if `filter_grid` is True", "title": "Buffer", "type": "number" }, "time_buffer": { "default": [ 0, 1 ], "description": "Number of source data timesteps to buffer the time range if `filter_time` is True", "items": { "type": "integer" }, "title": "Time Buffer", "type": "array" }, "data_type": { "const": "sflux_rad", "default": "sflux_rad", "description": "Model type discriminator", "title": "Data Type", "type": "string" }, "relative_weight": { "default": 1.0, "description": "relative weight of the source file if two files are provided", "title": "Relative Weight", "type": "number" }, "max_window_hours": { "default": 120.0, "description": "maximum number of hours (offset from start time in each file) in each file of set 1", "title": "Max Window Hours", "type": "number" }, "fail_if_missing": { "default": true, "description": "Fail if the source file is missing", "title": "Fail If Missing", "type": "boolean" }, "dlwrf_name": { "default": null, "description": "name of downward long wave radiation variable in source", "title": "Dlwrf Name", "type": "string" }, "dswrf_name": { "default": null, "description": "name of downward short wave radiation variable in source", "title": "Dswrf Name", "type": "string" } }, "required": [ "source" ], "title": "SfluxRad", "type": "object" }, "Sfm": { "additionalProperties": false, "properties": { "btemp0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 5.0, "description": "Initial temperature of the sediment layer in degrees Celsius", "title": "Btemp0" }, "bstc0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Initial surface transfer coefficient for the sediment layer", "title": "Bstc0" }, "bstr0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "Initial benthic stress in days", "title": "Bstr0" }, "bthp0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "Initial consecutive days of hypoxia", "title": "Bthp0" }, "btox0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "Initial consecutive days of oxic condition after hypoxia event", "title": "Btox0" }, "bnh40": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 4.0, "description": "Initial NH4 concentration in the sediment layer (g/m3)", "title": "Bnh40" }, "bno30": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "Initial NO3 concentration in the sediment layer (g/m3)", "title": "Bno30" }, "bpo40": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 5.0, "description": "Initial PO4 concentration in the sediment layer (g/m3)", "title": "Bpo40" }, "bh2s0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 250.0, "description": "Initial H2S concentration in the sediment layer (g/m3)", "title": "Bh2S0" }, "bch40": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 40.0, "description": "Initial CH4 concentration in the sediment layer (g/m3)", "title": "Bch40" }, "bpos0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 500.0, "description": "Initial POS (Particulate Organic Silica) concentration in the sediment layer (g/m3)", "title": "Bpos0" }, "bsa0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 500.0, "description": "Initial SA (Salinity) concentration in the sediment layer (g/m3)", "title": "Bsa0" }, "bpoc0": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 1000.0, 3000.0, 5000.0 ], "description": "Initial POC (Particulate Organic Carbon) concentrations for 3 classes (G1, G2, G3) in the sediment layer (g/m3)", "title": "Bpoc0" }, "bpon0": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 150.0, 500.0, 1500.0 ], "description": "Initial PON (Particulate Organic Nitrogen) concentrations for 3 classes (G1, G2, G3) in the sediment layer (g/m3)", "title": "Bpon0" }, "bpop0": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 30.0, 300.0, 500.0 ], "description": "Initial POP (Particulate Organic Phosphorus) concentrations for 3 classes (G1, G2, G3) in the sediment layer (g/m3)", "title": "Bpop0" }, "bdz": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Sediment thickness (m)", "title": "Bdz" }, "bvb": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.37e-05, "description": "Burial rate (m/day)", "title": "Bvb" }, "bsolid": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.5, 0.5 ], "description": "Sediment solid concentrations in Layer 1 and Layer 2 (Kg/L)", "title": "Bsolid" }, "bdiff": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.8e-07, "description": "Diffusion coefficient for sediment temperature (m2/s)", "title": "Bdiff" }, "btr": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 20, "description": "Reference temperature for sediment processes (\u00b0C)", "title": "Btr" }, "bvpmin": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 3e-06, "description": "minimum particle mixing velocity coefficient (m.day-1)", "title": "Bvpmin" }, "bvp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.00012, "description": "particle mixing velocity coefficient (m.day-1)", "title": "Bvp" }, "bvd": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.001, "description": "diffusion velocity coefficient (m.day-1)", "title": "Bvd" }, "bktvp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.117, "description": "temp. dependece of particle mixing velocity", "title": "Bktvp" }, "bktvd": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.08, "description": "temp. dependece of diffusion velocity", "title": "Bktvd" }, "bkst": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.03, "description": "1st order decay rate of benthic stress (day-1)", "title": "Bkst" }, "bstmax": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 20.0, "description": "maximum value of benthic stress (day) (note: smaller than 1/bKST)", "title": "Bstmax" }, "bkhdo_vp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 4.0, "description": "DO half-saturation of particle mixing (mg/L)", "title": "Bkhdo Vp" }, "bdoc_st": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "DO criteria for benthic stress (mg/L)", "title": "Bdoc St" }, "banoxic": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 10.0, "description": "consective days of hypoxia causing maximum benthic stress (day)", "title": "Banoxic" }, "boxic": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 45.0, "description": "time lag for bethos recovery from hypoxia event (day)", "title": "Boxic" }, "bp2d": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "ratio from mixing coef. to diffusion coef. (benthos enhanced effect)", "title": "Bp2D" }, "bkc": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.035, 0.0018, 0.0 ], "description": "decay rate of POC (3G class) at bTR (day-1)", "title": "Bkc" }, "bkn": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.035, 0.0018, 0.0 ], "description": "decay rate of PON (3G class) at bTR (day-1)", "title": "Bkn" }, "bkp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.035, 0.0018, 0.0 ], "description": "decay rate of POP (3G class) at bTR (day-1)", "title": "Bkp" }, "bktc": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 1.1, 1.15, 1.17 ], "description": "temp. dependence of POC decay (oC-1)", "title": "Bktc" }, "bktn": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 1.1, 1.15, 1.17 ], "description": "temp. dependence of PON decay (oC-1)", "title": "Bktn" }, "bktp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 1.1, 1.15, 1.17 ], "description": "temp. dependence of POP decay (oC-1)", "title": "Bktp" }, "bfcp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.35, 0.55, 0.01, 0.35, 0.55, 0.01, 0.35, 0.55, 0.01 ], "description": "Phyto POC into sed POC (G3,PB=1:3)", "title": "Bfcp" }, "bfnp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.35, 0.55, 0.01, 0.35, 0.55, 0.01, 0.35, 0.55, 0.01 ], "description": "Phyto PON into sed PON (G3,PB=1:3)", "title": "Bfnp" }, "bfpp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.35, 0.55, 0.01, 0.35, 0.55, 0.01, 0.35, 0.55, 0.01 ], "description": "Phyto POP into sed POP (G3,PB=1:3)", "title": "Bfpp" }, "bfcm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0, 0.43, 0.57 ], "description": "refractory POC into sed POC(3G)", "title": "Bfcm" }, "bfnm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0, 0.54, 0.46 ], "description": "refractory PON into sed PON(3G)", "title": "Bfnm" }, "bfpm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0, 0.43, 0.57 ], "description": "refractory POP into sed POP(3G)", "title": "Bfpm" }, "bknh4f": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.2, "description": "NH4 reaction rate in freshwater at bTR (1st layer) (m/day)", "title": "Bknh4F" }, "bknh4s": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.14, "description": "NH4 reaction rate in salty water at bTR (1st layer) (m/day)", "title": "Bknh4S" }, "bktnh4": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.08, "description": "temp. dependency for NH4 reaction (oC-1)", "title": "Bktnh4" }, "bkhnh4": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.5, "description": "half-stauration NH4 for nitrification (g/m3)", "title": "Bkhnh4" }, "bkhdo_nh4": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 2.0, "description": "half-stauration DO for nitrification (g/m3)", "title": "Bkhdo Nh4" }, "bpienh4": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "partition coefficients of NH4 in Layer 1 & 2 (Kg-1.L)", "title": "Bpienh4" }, "bsaltn": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "salinity criteria of fresh/salty water for NH4/NO3 reaction (PSU)", "title": "Bsaltn" }, "bkno3f": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.3, "description": "NO3 reaction rate in freshwater at bTR (1st layer) (m/day)", "title": "Bkno3F" }, "bkno3s": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.125, "description": "NO3 reaction rate in salty water at bTR (1st layer) (m/day)", "title": "Bkno3S" }, "bkno3": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.25, "description": "NO3 reaction rate (2nd layer) (m/day)", "title": "Bkno3" }, "bktno3": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.08, "description": "temp. dependency for NO3 reaction (oC-1)", "title": "Bktno3" }, "bkh2sd": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.2, "description": "dissolved H2S reaction rate at bTR (1st layer) (m/day)", "title": "Bkh2Sd" }, "bkh2sp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.4, "description": "particulate H2S reaction rate at bTR (1st layer) (m/day)", "title": "Bkh2Sp" }, "bkth2s": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.08, "description": "temp. dependency for H2S reaction (oC-1)", "title": "Bkth2S" }, "bpieh2ss": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 100.0, "description": "partition coefficient of NH4 in Layer 1 (Kg-1.L)", "title": "Bpieh2Ss" }, "bpieh2sb": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 100.0, "description": "partition coefficient of NH4 in Layer 2 (Kg-1.L)", "title": "Bpieh2Sb" }, "bkhdo_h2s": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 8.0, "description": "O2 constant to normalize H2S oxidation (g[O2]/m3)", "title": "Bkhdo H2S" }, "bsaltc": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "salinity criteria of fresh/salty water for carbon reaction (PSU)", "title": "Bsaltc" }, "bkch4": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.2, "description": "CH4 reaction rate at bTR (1st layer) (m/day)", "title": "Bkch4" }, "bktch4": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.08, "description": "temp. dependency for CH4 reaction", "title": "Bktch4" }, "bkhdo_ch4": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.2, "description": "half-saturation DO for CH4 oxidation (g[O2]/m3)", "title": "Bkhdo Ch4" }, "bo2n": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 2.86, "description": "oxygen to nitrogen ratio in sediment (denitrification)", "title": "Bo2N" }, "bpiepo4": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 50.0, "description": "partition coefficient of PO4 in Layer 2 (Kg-1.L)", "title": "Bpiepo4" }, "bkopo4f": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 3000.0, "description": "oxygen dependency for PO4 sorption in freshwater in Layer 1", "title": "Bkopo4F" }, "bkopo4s": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 300.0, "description": "oxygen dependency for PO4 sorption in salty water in Layer 1", "title": "Bkopo4S" }, "bdoc_po4": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "DO criteria for PO4 sorptiona (g[O2]/m3)", "title": "Bdoc Po4" }, "bsaltp": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "salinity criteria of fresh/salty water for PO4 partition (PSU)", "title": "Bsaltp" }, "bks": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.5, "description": "decay rate of POS (3G class) at bTR", "title": "Bks" }, "bkts": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.1, "description": "temp. dependence of POS decay", "title": "Bkts" }, "bsisat": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 40.0, "description": "silica saturation conc. in pore water (g[Si]/m3)", "title": "Bsisat" }, "bpiesi": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 100.0, "description": "partition coefficient of silica in Layer 2 (Kg-1.L)", "title": "Bpiesi" }, "bkosi": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 10.0, "description": "oxygen dependency for silica sorption in Layer 1", "title": "Bkosi" }, "bkhpos": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 50000.0, "description": "POS half saturation for POS dissolution (g/m3)", "title": "Bkhpos" }, "bdoc_si": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "DO criteria for silica sorptiona (g[O2]/m3)", "title": "Bdoc Si" }, "bjposa": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "additional POS flux associated with POM detrius beside algea (g.m-2.day-1)", "title": "Bjposa" }, "bfcs": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.65, 0.255, 0.095 ], "description": "SAV POC into 3G sed 3G POC", "title": "Bfcs" }, "bfns": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.65, 0.3, 0.05 ], "description": "SAV PON into 3G sed 3G PON", "title": "Bfns" }, "bfps": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.65, 0.255, 0.095 ], "description": "SAV POP into 3G sed 3G POP", "title": "Bfps" }, "bfcv": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.65, 0.255, 0.095, 0.65, 0.255, 0.095, 0.65, 0.255, 0.095 ], "description": "VEG POC into sed POC (G3,PB=1:3)", "title": "Bfcv" }, "bfnv": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.65, 0.3, 0.05, 0.65, 0.3, 0.05, 0.65, 0.3, 0.05 ], "description": "VEG PON into sed PON (G3,PB=1:3)", "title": "Bfnv" }, "bfpv": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.65, 0.255, 0.095, 0.65, 0.255, 0.095, 0.65, 0.255, 0.095 ], "description": "VEG POP into sed POP (G3,PB=1:3)", "title": "Bfpv" } }, "title": "Sfm", "type": "object" }, "Silica": { "additionalProperties": false, "properties": { "fsp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.9, 0.1 ], "description": "fractions of diatom silica into (SU,SA)", "title": "Fsp" }, "fsm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.5, 0.5 ], "description": "fractions of diatom metabolism Si into (SU,SA)", "title": "Fsm" }, "ks": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.03, "description": "dissolution rate of SU at TRS (day-1)", "title": "Ks" }, "trs": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 20.0, "description": "reference temp. for SU dissolution (oC)", "title": "Trs" }, "ktrs": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.092, "description": "temp. dependence for SU dissolution (oC-1)", "title": "Ktrs" }, "khs": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.05, 0.0, 0.0 ], "description": "silica half saturation (mg/L); (0.0: no Si limitation)", "title": "Khs" }, "s2c": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.5, 0.0, 0.0 ], "description": "silica to carbon ratio for phytolankton; (0.0: no Si uptake)", "title": "S2C" }, "ksap": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "coefficient relating Silicate(SA) sorption to TSS", "title": "Ksap" } }, "title": "Silica", "type": "object" }, "SourceDatamesh": { "additionalProperties": false, "description": "Source dataset from Datamesh.\n\nDatamesh documentation: https://docs.oceanum.io/datamesh/index.html", "properties": { "model_type": { "const": "datamesh", "default": "datamesh", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "datasource": { "description": "The id of the datasource on Datamesh", "title": "Datasource", "type": "string" }, "token": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Datamesh API token, taken from the environment if not provided", "title": "Token" }, "kwargs": { "additionalProperties": true, "default": {}, "description": "Keyword arguments to pass to `oceanum.datamesh.Connector`", "title": "Kwargs", "type": "object" } }, "required": [ "datasource", "token" ], "title": "SourceDatamesh", "type": "object" }, "SourceFile": { "additionalProperties": false, "description": "Source dataset from file to open with xarray.open_dataset.", "properties": { "model_type": { "const": "file", "default": "file", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "uri": { "anyOf": [ { "type": "string" }, { "format": "path", "type": "string" } ], "description": "Path to the dataset", "title": "Uri" }, "kwargs": { "additionalProperties": true, "default": {}, "description": "Keyword arguments to pass to xarray.open_dataset", "title": "Kwargs", "type": "object" } }, "required": [ "uri" ], "title": "SourceFile", "type": "object" }, "SourceIntake": { "additionalProperties": false, "description": "Source dataset from intake catalog.\n\nnote\n----\nThe intake catalog can be prescribed either by the URI of an existing catalog file\nor by a YAML string defining the catalog. The YAML string can be obtained from\ncalling the `yaml()` method on an intake dataset instance.", "properties": { "model_type": { "const": "intake", "default": "intake", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "dataset_id": { "description": "The id of the dataset to read in the catalog", "title": "Dataset Id", "type": "string" }, "catalog_uri": { "anyOf": [ { "type": "string" }, { "format": "path", "type": "string" }, { "type": "null" } ], "default": null, "description": "The URI of the catalog to read from", "title": "Catalog Uri" }, "catalog_yaml": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The YAML string of the catalog to read from", "title": "Catalog Yaml" }, "kwargs": { "additionalProperties": true, "default": {}, "description": "Keyword arguments to define intake dataset parameters", "title": "Kwargs", "type": "object" } }, "required": [ "dataset_id" ], "title": "SourceIntake", "type": "object" }, "SourceTimeseriesCSV": { "additionalProperties": false, "description": "Timeseries source class from CSV file.\n\nThis class should return a timeseries from a CSV file. The dataset variables are\ndefined from the column headers, therefore the appropriate read_csv kwargs must be\npassed to allow defining the columns. The time index is defined from column name\nidentified by the tcol field.", "properties": { "model_type": { "const": "csv", "default": "csv", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "filename": { "anyOf": [ { "type": "string" }, { "format": "path", "type": "string" } ], "description": "Path to the csv file", "title": "Filename" }, "tcol": { "default": "time", "description": "Name of the column containing the time data", "title": "Tcol", "type": "string" }, "read_csv_kwargs": { "additionalProperties": true, "default": {}, "description": "Keyword arguments to pass to pandas.read_csv", "title": "Read Csv Kwargs", "type": "object" } }, "required": [ "filename" ], "title": "SourceTimeseriesCSV", "type": "object" }, "SourceWavespectra": { "additionalProperties": false, "description": "Wavespectra dataset from wavespectra reader.", "properties": { "model_type": { "const": "wavespectra", "default": "wavespectra", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "uri": { "anyOf": [ { "type": "string" }, { "format": "path", "type": "string" } ], "description": "Path to the dataset", "title": "Uri" }, "reader": { "description": "Name of the wavespectra reader to use, e.g., read_swan", "title": "Reader", "type": "string" }, "kwargs": { "additionalProperties": true, "default": {}, "description": "Keyword arguments to pass to the wavespectra reader", "title": "Kwargs", "type": "object" } }, "required": [ "uri", "reader" ], "title": "SourceWavespectra", "type": "object" }, "SpecOutput": { "additionalProperties": false, "description": "Spectral outputs for SWAN", "properties": { "period": { "anyOf": [ { "$ref": "#/$defs/TimeRange" }, { "type": "null" } ], "default": null, "description": "Time range for which the spectral outputs are requested" }, "locations": { "anyOf": [ { "$ref": "#/$defs/OutputLocs" }, { "type": "null" } ], "default": { "coords": [] }, "description": "Output locations for which the spectral outputs are requested" } }, "title": "SpecOutput", "type": "object" }, "Station": { "additionalProperties": false, "properties": { "begtc": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "20200101.000000", "description": "Start simulation time in 'yyyymmdd.hhmmss' format. Must fit the simulation time, otherwise no output is generated. Defaults to PROC%BEGTC if not specified.", "title": "Begtc" }, "deltc": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 3600, "description": "Time step for output in seconds. If smaller than simulation time step, the latter is used. Used for better 1D and 2D spectra analysis.", "title": "Deltc" }, "unitc": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "SEC", "description": "Time unit for DELTC. Only 'SEC' is currently supported.", "title": "Unitc" }, "endtc": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "20200201.000000", "description": "Stop time for simulation in 'yyyymmdd.hhmmss' format. Defaults to PROC%ENDC if not specified.", "title": "Endtc" }, "definetc": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -1, "description": "Time for definition of station files in seconds. If negative or unset, only one file is generated. Otherwise, it defines the interval for creating output files (e.g., 86400 for daily files).", "title": "Definetc" }, "outstyle": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "NC", "description": "Output option. 'NO' for no output, 'STE' for classic station output (default), 'NC' for netCDF output.", "title": "Outstyle" }, "multipleout": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Output file configuration. 0 for a single netCDF file using MPI_reduce (default), 1 for separate netCDF files for each process.", "title": "Multipleout" }, "use_single_out": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Use single precision in the output of model variables. True by default.", "title": "Use Single Out" }, "paramwrite": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Write the physical parametrization and chosen numerical method in the netCDF file. True by default.", "title": "Paramwrite" }, "fileout": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "wwm_sta.nc", "description": "Output file name (not used).", "title": "Fileout" }, "loutiter": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Boolean flag for output iteration.", "title": "Loutiter" }, "iouts": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 12, "description": "Number of output stations.", "title": "Iouts" }, "nouts": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": [ "BatemansBay", "Brisbane", "ByronBay", "Cairns", "CoffsHbr", "CrowdyHead", "Eden", "HayPt", "Mackay", "PortKembla", "Tsv", "Mandurah" ], "description": "Names of output stations.", "title": "Nouts" }, "xouts": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 150.31972, 153.63166, 153.745, 145.715167, 153.27722, 152.85333, 150.15833, 149.31025, 149.5467, 151.01667, 147.059333, 115.572227 ], "description": "Longitude coordinates of output stations.", "title": "Xouts" }, "youts": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ -35.75528, -27.48716, -28.67167, -16.7305, -30.34361, -31.82694, -37.175, -21.2715, -21.037333, -34.46694, -19.159167, -32.452787 ], "description": "Latitude coordinates of output stations.", "title": "Youts" }, "cutoff": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "Cutoff frequency (Hz) for each station, consistent with buoys.", "title": "Cutoff" }, "lsp1d": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Enable 1D spectral station output.", "title": "Lsp1D" }, "lsp2d": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Enable 2D spectral station output.", "title": "Lsp2D" }, "lsigmax": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Adjust the cut-off frequency for the output (e.g., consistent with buoy cut-off frequency).", "title": "Lsigmax" }, "ac": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output spectrum.", "title": "Ac" }, "wk": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output variable WK.", "title": "Wk" }, "acout_1d": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output variable ACOUT_1D.", "title": "Acout 1D" }, "acout_2d": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output variable ACOUT_2D.", "title": "Acout 2D" }, "hs": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output significant wave height.", "title": "Hs" }, "tm01": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output mean period.", "title": "Tm01" }, "tm02": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output zero-crossing mean period.", "title": "Tm02" }, "klm": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output mean wave number.", "title": "Klm" }, "wlm": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output mean wave length.", "title": "Wlm" }, "etotc": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output variable ETOTC.", "title": "Etotc" }, "etots": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output variable ETOTS.", "title": "Etots" }, "dm": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output mean wave direction.", "title": "Dm" }, "dspr": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output directional spreading.", "title": "Dspr" }, "tppd": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output discrete peak period.", "title": "Tppd" }, "tpp": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output peak period.", "title": "Tpp" }, "cpp": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output variable CPP.", "title": "Cpp" }, "wnpp": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output peak wave number.", "title": "Wnpp" }, "cgpp": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output peak group speed.", "title": "Cgpp" }, "kpp": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output peak wave number.", "title": "Kpp" }, "lpp": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output peak wavelength.", "title": "Lpp" }, "peakd": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output peak direction.", "title": "Peakd" }, "peakdspr": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output peak directional spreading.", "title": "Peakdspr" }, "dpeak": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output variable DPEAK.", "title": "Dpeak" }, "ubot": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output variable UBOT.", "title": "Ubot" }, "orbital": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output orbital velocity.", "title": "Orbital" }, "botexper": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output bottom excursion period.", "title": "Botexper" }, "tmbot": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output variable TMBOT.", "title": "Tmbot" }, "ursell": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output Ursell number.", "title": "Ursell" }, "ufric": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output air friction velocity.", "title": "Ufric" }, "z0": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output air roughness length.", "title": "Z0" }, "alpha_ch": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output Charnock coefficient for air.", "title": "Alpha Ch" }, "windx": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output wind in X direction.", "title": "Windx" }, "windy": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output wind in Y direction.", "title": "Windy" }, "cd": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output drag coefficient.", "title": "Cd" }, "currtx": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output current in X direction.", "title": "Currtx" }, "currty": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output current in Y direction.", "title": "Currty" }, "watlev": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output water level.", "title": "Watlev" }, "watlevold": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output water level at previous time step.", "title": "Watlevold" }, "depdt": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output change of water level in time.", "title": "Depdt" }, "dep": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output depth.", "title": "Dep" }, "tauw": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output surface stress from the wave.", "title": "Tauw" }, "tauhf": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output high frequency surface stress.", "title": "Tauhf" }, "tautot": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output total surface stress.", "title": "Tautot" }, "stokessurfx": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output surface Stokes drift in X direction.", "title": "Stokessurfx" }, "stokessurfy": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "Output surface Stokes drift in Y direction.", "title": "Stokessurfy" }, "stokesbarox": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output barotropic Stokes drift in X direction.", "title": "Stokesbarox" }, "stokesbaroy": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output barotropic Stokes drift in Y direction.", "title": "Stokesbaroy" }, "rsxx": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output RSXX potential of LH.", "title": "Rsxx" }, "rsxy": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output RSXY potential of LH.", "title": "Rsxy" }, "rsyy": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output RSYY potential of LH.", "title": "Rsyy" }, "cfl1": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output CFL number 1.", "title": "Cfl1" }, "cfl2": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output CFL number 2.", "title": "Cfl2" }, "cfl3": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": false, "description": "Output CFL number 3.", "title": "Cfl3" } }, "title": "Station", "type": "object" }, "Stem": { "additionalProperties": false, "properties": { "sn2c": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.09, "description": "Nitrogen to carbon ratio of submerged aquatic vegetation (SAV)", "title": "Sn2C" }, "sp2c": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.01, "description": "Phosphorus to carbon ratio", "title": "Sp2C" }, "so2c": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 2.67, "description": "Oxygen to carbon ratio", "title": "So2C" } }, "title": "Stem", "type": "object" }, "SwanConfig": { "additionalProperties": true, "description": "SWAN configuration", "properties": { "model_type": { "const": "swan", "default": "swan", "description": "The model type for SWAN.", "title": "Model Type", "type": "string" }, "template": { "default": "/opt/hostedtoolcache/Python/3.10.17/x64/lib/python3.10/site-packages/rompy/templates/swan", "description": "The template for SWAN.", "title": "Template", "type": "string" }, "checkout": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "main", "description": "The git branch to use if the template is a git repo", "title": "Checkout" }, "grid": { "$ref": "#/$defs/SwanGrid", "description": "The model grid for the SWAN run" }, "spectral_resolution": { "$ref": "#/$defs/SwanSpectrum", "default": { "fmin": 0.0464, "fmax": 1.0, "nfreqs": 31, "ndirs": 36 }, "description": "The spectral resolution for SWAN." }, "forcing": { "$ref": "#/$defs/ForcingData", "default": { "bottom": null, "wind": null, "current": null, "boundary": null }, "description": "The forcing data for SWAN." }, "physics": { "$ref": "#/$defs/SwanPhysics", "default": { "friction": "MAD", "friction_coeff": 0.1 }, "description": "The physics options for SWAN." }, "outputs": { "$ref": "#/$defs/Outputs", "default": { "grid": { "period": null, "variables": [ "DEPTH", "UBOT", "HSIGN", "HSWELL", "DIR", "TPS", "TM01", "WIND" ] }, "spec": { "locations": { "coords": [] }, "period": null } }, "description": "The outputs for SWAN." }, "spectra_file": { "default": "boundary.spec", "description": "The spectra file for SWAN.", "title": "Spectra File", "type": "string" } }, "required": [ "grid" ], "title": "SwanConfig", "type": "object" }, "SwanConfigComponents": { "additionalProperties": true, "description": "SWAN config class.\n\nTODO: Combine boundary and inpgrid into a single input type.\n\nNote\n----\nThe `cgrid` is the only required field since it is used to define the swan grid\nobject which is passed to other components.", "properties": { "model_type": { "default": "swanconfig", "description": "Model type discriminator", "enum": [ "swanconfig", "SWANCONFIG" ], "title": "Model Type", "type": "string" }, "template": { "default": "/opt/hostedtoolcache/Python/3.10.17/x64/lib/python3.10/site-packages/rompy/templates/swancomp", "description": "The template for SWAN.", "title": "Template", "type": "string" }, "checkout": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "main", "description": "The git branch to use if the template is a git repo", "title": "Checkout" }, "cgrid": { "description": "Cgrid component", "discriminator": { "mapping": { "CURVILINEAR": "#/$defs/rompy__swan__components__cgrid__CURVILINEAR", "REGULAR": "#/$defs/rompy__swan__components__cgrid__REGULAR", "curvilinear": "#/$defs/rompy__swan__components__cgrid__CURVILINEAR", "regular": "#/$defs/rompy__swan__components__cgrid__REGULAR", "unstructured": "#/$defs/rompy__swan__components__cgrid__UNSTRUCTURED" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/rompy__swan__components__cgrid__REGULAR" }, { "$ref": "#/$defs/rompy__swan__components__cgrid__CURVILINEAR" }, { "$ref": "#/$defs/rompy__swan__components__cgrid__UNSTRUCTURED" } ], "title": "Cgrid" }, "startup": { "anyOf": [ { "$ref": "#/$defs/STARTUP", "description": "Startup components" }, { "type": "null" } ], "default": null }, "inpgrid": { "anyOf": [ { "description": "Input grid components", "discriminator": { "mapping": { "DATA_INTERFACE": "#/$defs/DataInterface", "data_interface": "#/$defs/DataInterface", "inpgrids": "#/$defs/INPGRIDS" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/INPGRIDS" }, { "$ref": "#/$defs/DataInterface" } ] }, { "type": "null" } ], "default": null, "title": "Inpgrid" }, "boundary": { "anyOf": [ { "description": "Boundary component", "discriminator": { "mapping": { "BOUNDARY_INTERFACE": "#/$defs/BoundaryInterface", "BOUNDNEST1": "#/$defs/BOUNDNEST1", "BOUNDNEST2": "#/$defs/BOUNDNEST2", "BOUNDNEST3": "#/$defs/BOUNDNEST3", "BOUNDSPEC": "#/$defs/BOUNDSPEC", "boundary_interface": "#/$defs/BoundaryInterface", "boundnest1": "#/$defs/BOUNDNEST1", "boundnest2": "#/$defs/BOUNDNEST2", "boundnest3": "#/$defs/BOUNDNEST3", "boundspec": "#/$defs/BOUNDSPEC" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/BOUNDSPEC" }, { "$ref": "#/$defs/BOUNDNEST1" }, { "$ref": "#/$defs/BOUNDNEST2" }, { "$ref": "#/$defs/BOUNDNEST3" }, { "$ref": "#/$defs/BoundaryInterface" } ] }, { "type": "null" } ], "default": null, "title": "Boundary" }, "initial": { "anyOf": [ { "$ref": "#/$defs/INITIAL", "description": "Initial component" }, { "type": "null" } ], "default": null }, "physics": { "anyOf": [ { "$ref": "#/$defs/PHYSICS", "description": "Physics components" }, { "type": "null" } ], "default": null }, "prop": { "anyOf": [ { "$ref": "#/$defs/PROP", "description": "Propagation components" }, { "type": "null" } ], "default": null }, "numeric": { "anyOf": [ { "$ref": "#/$defs/NUMERIC", "description": "Numerics components" }, { "type": "null" } ], "default": null }, "output": { "anyOf": [ { "$ref": "#/$defs/OUTPUT", "description": "Output components" }, { "type": "null" } ], "default": null }, "lockup": { "anyOf": [ { "$ref": "#/$defs/LOCKUP", "description": "Output components" }, { "type": "null" } ], "default": null } }, "required": [ "cgrid" ], "title": "SwanConfigComponents", "type": "object" }, "SwanDataGrid": { "additionalProperties": false, "description": "This class is used to write SWAN data from a dataset.", "properties": { "model_type": { "const": "grid", "default": "grid", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "id": { "default": "data", "description": "Unique identifier for this data source", "title": "Id", "type": "string" }, "source": { "description": "Source reader, must return an xarray gridded dataset in the open method", "discriminator": { "mapping": { "csv": "#/$defs/SourceTimeseriesCSV", "datamesh": "#/$defs/SourceDatamesh", "file": "#/$defs/SourceFile", "intake": "#/$defs/SourceIntake", "wavespectra": "#/$defs/SourceWavespectra" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/SourceTimeseriesCSV" }, { "$ref": "#/$defs/SourceDatamesh" }, { "$ref": "#/$defs/SourceFile" }, { "$ref": "#/$defs/SourceIntake" }, { "$ref": "#/$defs/SourceWavespectra" } ], "title": "Source" }, "link": { "default": false, "description": "Whether to create a symbolic link instead of copying the file", "title": "Link", "type": "boolean" }, "filter": { "anyOf": [ { "$ref": "#/$defs/Filter" }, { "type": "null" } ], "description": "Optional filter specification to apply to the dataset" }, "variables": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": [], "description": "Subset of variables to extract from the dataset", "title": "Variables" }, "coords": { "anyOf": [ { "$ref": "#/$defs/DatasetCoords" }, { "type": "null" } ], "default": { "t": "time", "x": "longitude", "y": "latitude", "z": "depth", "s": "site" }, "description": "Names of the coordinates in the dataset" }, "crop_data": { "default": true, "description": "Update crop filters from Grid and Time objects if passed to get method", "title": "Crop Data", "type": "boolean" }, "buffer": { "default": 0.0, "description": "Space to buffer the grid bounding box if `filter_grid` is True", "title": "Buffer", "type": "number" }, "time_buffer": { "default": [ 0, 0 ], "description": "Number of source data timesteps to buffer the time range if `filter_time` is True", "items": { "type": "integer" }, "title": "Time Buffer", "type": "array" }, "z1": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Name of the data variable in dataset representing either a scaler parameter or the u-componet of a vector field", "title": "Z1" }, "z2": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Name of the data variable in dataset representing the v-componet of a vector field", "title": "Z2" }, "var": { "$ref": "#/$defs/GridOptions", "description": "SWAN input grid name" }, "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`", "title": "Fac", "type": "number" } }, "required": [ "source", "var" ], "title": "SwanDataGrid", "type": "object" }, "SwanGrid": { "additionalProperties": false, "description": "Regular SWAN grid in geographic space.", "properties": { "grid_type": { "default": "REG", "description": "Type of grid (REG=regular, CURV=curvilinear)", "enum": [ "REG", "CURV" ], "title": "Grid Type", "type": "string" }, "x0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "X coordinate of the grid origin", "title": "X0" }, "y0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Y coordinate of the grid origin", "title": "Y0" }, "rot": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "Rotation angle of the grid in degrees", "title": "Rot" }, "dx": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Spacing between grid points in the x direction", "title": "Dx" }, "dy": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Spacing between grid points in the y direction", "title": "Dy" }, "nx": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Number of grid points in the x direction", "title": "Nx" }, "ny": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Number of grid points in the y direction", "title": "Ny" }, "exc": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Missing value", "title": "Exc" }, "gridfile": { "anyOf": [ { "maxLength": 36, "type": "string" }, { "type": "null" } ], "default": null, "description": "Name of grid file to load", "title": "Gridfile" } }, "title": "SwanGrid", "type": "object" }, "SwanPhysics": { "additionalProperties": false, "description": "Container class represting configuraable SWAN physics options", "properties": { "friction": { "default": "MAD", "description": "The type of friction, either MAD, COLL, JON or RIP", "title": "Friction", "type": "string" }, "friction_coeff": { "default": 0.1, "description": "The coefficient of friction for the given surface and object.", "title": "Friction Coeff", "type": "number" } }, "title": "SwanPhysics", "type": "object" }, "SwanSpectrum": { "additionalProperties": false, "description": "SWAN Spectrum", "properties": { "fmin": { "default": 0.0464, "description": "Minimum frequency in Hz", "title": "Fmin", "type": "number" }, "fmax": { "default": 1.0, "description": "Maximum frequency in Hz", "title": "Fmax", "type": "number" }, "nfreqs": { "default": 31, "description": "Number of frequency components", "title": "Nfreqs", "type": "integer" }, "ndirs": { "default": 36, "description": "Number of directional components", "title": "Ndirs", "type": "integer" } }, "title": "SwanSpectrum", "type": "object" }, "TABLE": { "additionalProperties": false, "description": "Write spatial distributions.\n\n.. code-block:: text\n\n TABLE 'sname' ->HEADER|NOHEADER|INDEXED 'fname' < output > &\n (OUTPUT [tbegblk] [deltblk]) SEC|MIN|HR|DAY\n\nWith this optional command the user indicates that for each location of the output\nlocation set 'sname' (see commands `POINTS`, `CURVE`, `FRAME` or `GROUP`) one or\nmore variables should be written to a file. The keywords `HEADER` and `NOHEADER`\ndetermine the appearance of the table; the filename determines the destination of\nthe data.\n\nNote\n----\n**HEADER**:\noutput is written in fixed format to file with headers giving name of variable\nand unit per column (numbers too large to be written will be shown as `****`.\nThe number of header lines is 4.\n\n**NOHEADER**:\noutput is written in floating point format to file and has no headers.\n\n**INDEXED**:\noutput compatible with GIS tools such as ARCVIEW, ARCINFO, etc. The user should\ngive two TABLE commands, one to produce one file with `XP` and `YP` as output\nquantities, the other with `HS`, `RTM01` or other output quantities.\n\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import TABLE\n table = TABLE(\n sname=\"outpts\",\n format=\"noheader\",\n fname=\"./output_table.nc\",\n output=[\"hsign\", \"hswell\", \"dir\", \"tps\", \"tm01\", \"watlev\", \"qp\"],\n times=dict(tbeg=\"2012-01-01T00:00:00\", delt=\"PT30M\", dfmt=\"min\"),\n )\n print(table.render())", "properties": { "model_type": { "default": "table", "description": "Model type discriminator", "enum": [ "table", "TABLE" ], "title": "Model Type", "type": "string" }, "sname": { "description": "Name of the set of output locations in which the output is to be written", "maxLength": 8, "title": "Sname", "type": "string" }, "fname": { "description": "Name of the data file where the output is written to The file format is defined by the file extension, use `.mat` for MATLAB binary (single precision) or `.nc` for netCDF format. If any other extension is used the ASCII format is assumed", "title": "Fname", "type": "string" }, "times": { "anyOf": [ { "$ref": "#/$defs/TimeRangeOpen" }, { "type": "null" } ], "default": null, "description": "Time specification if the user requires output at various times. If this option is not specified data will be written for the last time step of the computation" }, "format": { "anyOf": [ { "enum": [ "header", "noheader", "indexed" ], "type": "string" }, { "type": "null" } ], "default": null, "description": "Indicate if the table should be written to a file as a HEADER, NOHEADER or INDEXED table format (SWAN default: HEADER)", "title": "Format" }, "output": { "description": "The output variables to output to block file", "items": { "$ref": "#/$defs/BlockOptions" }, "minItems": 1, "title": "Output", "type": "array" } }, "required": [ "sname", "fname", "output" ], "title": "TABLE", "type": "object" }, "TEST": { "additionalProperties": false, "description": "Write intermediate results.\n\n.. code-block:: text\n\n TEST [itest] [itrace] POINTS XY|IJ (PAR 'fname') (S1D 'fname') (S2D 'fname')\n\nNote\n----\nThe 6 source terms written due to the presence of the keyword S1D or S2D are: wind\ninput, whitecapping, bottom friction, breaking, 3- and 4- wave interactions.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.output import TEST\n test = TEST(\n itest=10,\n points=dict(model_type=\"ij\", i=[0, 0], j=[10, 20]),\n fname_par=\"integral_parameters.test\",\n fname_s1d=\"1d_variance_density.test\",\n fname_s2d=\"2d_variance_density.test\",\n )\n print(test.render())\n import numpy as np\n test = TEST(\n points=dict(\n model_type=\"xy\",\n x=np.linspace(172.5, 174.0, 25),\n y=25*[-38],\n ),\n fname_s2d=\"2d_variance_density.test\",\n )\n print(test.render())\n\nTODO: Support `k` in POINTS IJ.", "properties": { "model_type": { "default": "test", "description": "Model type discriminator", "enum": [ "test", "TEST" ], "title": "Model Type", "type": "string" }, "itest": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "The level of test output, for values under 100 the amount is usually reasonable, for values above 200 it can be very large. Values of up to 50 can be interpreted by the user (SWAN default: 1)", "title": "Itest" }, "itrace": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "SWAN writes a message (name of subroutine) to the PRINT file at the first `itrace` entries of each subroutine (SWAN default: 0)", "title": "Itrace" }, "points": { "description": "Points where detailed print output is produced (max of 50 points)", "discriminator": { "mapping": { "IJ": "#/$defs/IJ", "XY": "#/$defs/XY", "ij": "#/$defs/IJ", "xy": "#/$defs/XY" }, "propertyName": "model_type" }, "oneOf": [ { "$ref": "#/$defs/XY" }, { "$ref": "#/$defs/IJ" } ], "title": "Points" }, "fname_par": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Name of the file where the integral parameters are written to", "title": "Fname Par" }, "fname_s1d": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Name of the file where the 1D variance density and 6 source terms are written to", "title": "Fname S1D" }, "fname_s2d": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Name of the file where the 2D variance density and 6 source terms are written to", "title": "Fname S2D" } }, "required": [ "points" ], "title": "TEST", "type": "object" }, "TMA": { "additionalProperties": false, "description": "TMA spectral shape.\n\n.. code-block:: text\n\n TMA [gamma] [d]\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.spectrum import TMA\n shape = TMA(gamma=2.0, d=18)\n print(shape.render())", "properties": { "model_type": { "default": "tma", "description": "Model type discriminator", "enum": [ "tma", "TMA" ], "title": "Model Type", "type": "string" }, "gamma": { "default": 3.3, "description": "Peak enhancement parameter of the JONSWAP spectrum.", "exclusiveMinimum": 0.0, "title": "Gamma", "type": "number" }, "d": { "description": "The reference depth at the wave maker in meters.", "exclusiveMinimum": 0.0, "title": "D", "type": "number" } }, "required": [ "d" ], "title": "TMA", "type": "object" }, "TRANS1D": { "additionalProperties": false, "description": "Frequency dependent transmission.\n\n.. code-block:: text\n\n TRANS1D < [trcoef] >\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import TRANS1D\n transm = TRANS1D(trcoef=[0.0, 0.0, 0.2, 0.5, 0.2, 0.0, 0.0])\n print(transm.render())", "properties": { "model_type": { "default": "trans1d", "description": "Model type discriminator", "enum": [ "trans1d", "TRANS1D" ], "title": "Model Type", "type": "string" }, "trcoef": { "description": "Transmission coefficient (ratio of transmitted over incoming significant wave height) per frequency. The number of these transmission values must be equal to the number of frequencies, i.e. `msc` + 1", "items": { "maximum": 1.0, "minimum": 0.0, "type": "number" }, "title": "Trcoef", "type": "array" } }, "required": [ "trcoef" ], "title": "TRANS1D", "type": "object" }, "TRANS2D": { "additionalProperties": false, "description": "Frequency-direction dependent transmission.\n\n.. code-block:: text\n\n TRANS2D < [trcoef] >\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import TRANS2D\n trcoef = np.array([[0.0, 0.0], [0.1, 0.1], [0.2, 0.2]])\n transm = TRANS2D(trcoef=trcoef)\n print(transm.render())", "properties": { "model_type": { "default": "trans2d", "description": "Model type discriminator", "enum": [ "trans2d", "TRANS2D" ], "title": "Model Type", "type": "string" }, "trcoef": { "description": "Transmission coefficient (ratio of transmitted over incoming significant wave height) per frequency and direction, rows represent directions and columns represent frequencies", "properties": { "data_type": { "default": "Any", "title": "dtype", "type": "string" }, "data": { "items_schema": { "items_schema": { "type": "any" }, "type": "list" }, "max_length": 2, "min_length": 2, "type": "list" } }, "required": [ "data_type", "data" ], "title": "Numpy Array", "type": "np.ndarray[tuple[int, int], np.dtype[Any]]" } }, "required": [ "trcoef" ], "title": "TRANS2D", "type": "object" }, "TRANSM": { "additionalProperties": false, "description": "Constant transmission coefficient.\n\n.. code-block:: text\n\n TRANSM [trcoef]\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import TRANSM\n transm = TRANSM()\n print(transm.render())\n transm = TRANSM(trcoef=0.5)\n print(transm.render())", "properties": { "model_type": { "default": "transm", "description": "Model type discriminator", "enum": [ "transm", "TRANSM" ], "title": "Model Type", "type": "string" }, "trcoef": { "anyOf": [ { "maximum": 1.0, "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Constant transmission coefficient (ratio of transmitted over incoming significant wave height) (SWAN default: 0.0) (no transmission = complete blockage)", "title": "Trcoef" } }, "title": "TRANSM", "type": "object" }, "TRIAD": { "additionalProperties": false, "description": "Wave triad interactions.\n\n.. code-block:: text\n\n TRIAD [itriad] [trfac] [cutfr] [a] [b] [urcrit] [urslim]\n\nWith this command the user can activate the triad wave-wave interactions. If this\ncommand is not used, SWAN will not account for triads.\n\nNote\n----\nThis is the TRIAD specification in SWAN < 41.45.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import TRIAD\n triad = TRIAD()\n print(triad.render())\n triad = TRIAD(\n itriad=1,\n trfac=0.8,\n cutfr=2.5,\n a=0.95,\n b=-0.75,\n ucrit=0.2,\n urslim=0.01,\n )\n print(triad.render())", "properties": { "model_type": { "default": "triad", "description": "Model type discriminator", "enum": [ "triad", "TRIAD" ], "title": "Model Type", "type": "string" }, "itriad": { "anyOf": [ { "enum": [ 1, 2 ], "type": "integer" }, { "type": "null" } ], "default": null, "description": "Approximation method for the triad computation: \n\n* 1: the LTA method of Eldeberky (1996) \n* 2: the SPB method of Becq-Girard et al. (1999) (SWAN default: 1)", "title": "Itriad" }, "trfac": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Proportionality coefficient (SWAN default: 0.8 in case of LTA method, 0.9 in case of SPB method)", "title": "Trfac" }, "cutfr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Controls the maximum frequency that is considered in the LTA computation. The value of `cutfr` is the ratio of this maximum frequency over the mean frequency (SWAN default: 2.5)", "title": "Cutfr" }, "a": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "First calibration parameter for tuning K in Eq. (5.1) of Becq-Girard et al. (1999). This parameter is associated with broadening of the resonance condition (SWAN default: 0.95)", "title": "A" }, "b": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Second calibration parameter for tuning K in Eq. (5.1) of Becq-Girard et al. (1999). This parameter is associated with broadening of the resonance condition (SWAN default: -0.75 for 1D, 0.0 for 2D", "title": "B" }, "ucrit": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The critical Ursell number appearing in the expression for the biphase (SWAN default: 0.2)", "title": "Ucrit" }, "urslim": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The lower threshold for Ursell number, if the actual Ursell number is below this value triad interactions are be computed (SWAN default: 0.01)", "title": "Urslim" } }, "title": "TRIAD", "type": "object" }, "TRIAD_DCTA": { "additionalProperties": false, "description": "Triad interactions with the DCTA method of Booij et al. (2009).\n\n.. code-block:: text\n\n TRIAD DCTA [trfac] [p] COLL|NONC BIPHHASE ELDEBERKY|DEWIT\n\nReferences\n----------\nBooij, N., Holthuijsen, L.H. and B\u00e9nit, M.P., 2009. A distributed collinear triad\napproximation in SWAN. In Proceedings Of Coastal Dynamics 2009: Impacts of Human\nActivities on Dynamic Coastal Processes (With CD-ROM) (pp. 1-10).\n\nNote\n----\nThis is the default method to compute the triad interactions in SWAN >= 41.45, it\nis not supported in earlier versions of the model.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import TRIAD_DCTA\n triad = TRIAD_DCTA()\n print(triad.render())\n triad = TRIAD_DCTA(\n trfac=4.4,\n p=1.3,\n noncolinear=True,\n biphase={\"model_type\": \"dewit\", \"lpar\": 0.0},\n )\n print(triad.render())", "properties": { "model_type": { "default": "dcta", "description": "Model type discriminator", "enum": [ "dcta", "DCTA" ], "title": "Model Type", "type": "string" }, "trfac": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Scaling factor that controls the intensity of the triad interaction due to DCTA (SWAN default: 4.4)", "title": "Trfac" }, "p": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Shape coefficient to force the high-frequency tail(SWAN default: 4/3)", "title": "P" }, "noncolinear": { "default": false, "description": "If True, the noncolinear triad interactions with the DCTA framework are accounted for", "title": "Noncolinear", "type": "boolean" }, "biphase": { "anyOf": [ { "$ref": "#/$defs/ELDEBERKY" }, { "$ref": "#/$defs/DEWIT" }, { "type": "null" } ], "default": null, "description": "Defines the parameterization of biphase (self-self interaction) (SWAN default: ELDEBERKY)", "title": "Biphase" } }, "title": "TRIAD_DCTA", "type": "object" }, "TRIAD_LTA": { "additionalProperties": false, "description": "Triad interactions with the LTA method of Eldeberky (1996).\n\n.. code-block:: text\n\n TRIAD LTA [trfac] [cutfr] BIPHHASE ELDEBERKY|DEWIT\n\nReferences\n----------\nEldeberky, Y., Polnikov, V. and Battjes, J.A., 1996. A statistical approach for\nmodeling triad interactions in dispersive waves. In Coastal Engineering 1996\n(pp. 1088-1101).\n\nNote\n----\nThis method to compute the triad interactions is only supported in SWAN >= 41.45.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import TRIAD_LTA\n triad = TRIAD_LTA()\n print(triad.render())\n triad = TRIAD_LTA(\n trfac=0.8,\n cutfr=2.5,\n biphase={\"model_type\": \"eldeberky\", \"urcrit\": 0.63},\n )\n print(triad.render())", "properties": { "model_type": { "default": "lta", "description": "Model type discriminator", "enum": [ "lta", "LTA" ], "title": "Model Type", "type": "string" }, "trfac": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Scaling factor that controls the intensity of the triad interaction due to LTA (SWAN default: 0.8)", "title": "Trfac" }, "cutfr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Controls the maximum frequency that is considered in the LTA computation. The value of `cutfr` is the ratio of this maximum frequency over the mean frequency (SWAN default: 2.5)", "title": "Cutfr" }, "biphase": { "anyOf": [ { "$ref": "#/$defs/ELDEBERKY" }, { "$ref": "#/$defs/DEWIT" }, { "type": "null" } ], "default": null, "description": "Defines the parameterization of biphase (self-self interaction) (SWAN default: ELDEBERKY)", "title": "Biphase" } }, "title": "TRIAD_LTA", "type": "object" }, "TRIAD_SPB": { "additionalProperties": false, "description": "Triad interactions with the SPB method of Becq-Girard et al. (1999).\n\n.. code-block:: text\n\n TRIAD SPB [trfac] [a] [b] BIPHHASE ELDEBERKY|DEWIT\n\nReferences\n----------\nBecq-Girard, F., Forget, P. and Benoit, M., 1999. Non-linear propagation of\nunidirectional wave fields over varying topography. Coastal Engineering, 38(2),\npp.91-113.\n\nNote\n----\nThis method to compute the triad interactions is only supported in SWAN >= 41.45.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import TRIAD_SPB\n triad = TRIAD_SPB()\n print(triad.render())\n triad = TRIAD_SPB(\n trfac=0.9,\n a=0.95,\n b=0.0,\n biphase={\"model_type\": \"eldeberky\", \"urcrit\": 0.63},\n )\n print(triad.render())", "properties": { "model_type": { "default": "spb", "description": "Model type discriminator", "enum": [ "spb", "SPB" ], "title": "Model Type", "type": "string" }, "trfac": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Scaling factor that controls the intensity of the triad interaction due to SPB (SWAN default: 0.9)", "title": "Trfac" }, "a": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "First calibration parameter for tuning K in Eq. (5.1) of Becq-Girard et al. (1999). This parameter is associated with broadening of the resonance condition. The default value is 0.95 and is calibrated by means of laboratory experiments (SWAN default: 0.95)", "title": "A" }, "b": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Second calibration parameter for tuning K in Eq. (5.1) of Becq-Girard et al. (1999). This parameter is associated with broadening of the resonance condition. The default value is -0.75 and is calibrated by means of laboratory experiments. However, it may not be appropriate for true 2D field cases as it does not scale with the wave field characteristics. Hence, this parameter is set to zero (SWAN default: 0.0)", "title": "B" }, "biphase": { "anyOf": [ { "$ref": "#/$defs/ELDEBERKY" }, { "$ref": "#/$defs/DEWIT" }, { "type": "null" } ], "default": null, "description": "Defines the parameterization of biphase (self-self interaction) (SWAN default: ELDEBERKY)", "title": "Biphase" } }, "title": "TRIAD_SPB", "type": "object" }, "TURBULENCE": { "additionalProperties": false, "description": "Turbulent viscosity.\n\n.. code-block:: text\n\n TURBULENCE [ctb] (CURRENT [tbcur])\n\nWith this optional command the user can activate turbulent viscosity. This physical\neffect is also activated by reading values of the turbulent viscosity using the\n`READGRID TURB` command, but then with the default value of `ctb`. The command\n`READGRID TURB` is necessary if this command `TURB` is used since the value of the\nviscosity is assumed to vary over space.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import TURBULENCE\n turbulence = TURBULENCE(current=False)\n print(turbulence.render())\n turbulence = TURBULENCE(ctb=0.01, current=True, tbcur=0.004)\n print(turbulence.render())", "properties": { "model_type": { "default": "turbulence", "description": "Model type discriminator", "enum": [ "turbulence", "TURBULENCE" ], "title": "Model Type", "type": "string" }, "ctb": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The value of the proportionality coefficient appearing in the energy dissipation term (SWAN default: 0.01)", "title": "Ctb" }, "current": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": true, "description": "If this keyword is present the turbulent viscosity will be derived from the product of the depth and the absolute value of the current velocity. If the command `READGRID TURB` is used, this option is ignored; the values read from file will prevail", "title": "Current" }, "tbcur": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The factor by which depth x current velocity is multiplied in order to get the turbulent viscosity (SWAN default: 0.004)", "title": "Tbcur" } }, "title": "TURBULENCE", "type": "object" }, "TidalDataset": { "additionalProperties": false, "description": "This class is used to define the tidal dataset", "properties": { "data_type": { "const": "tidal_dataset", "default": "tidal_dataset", "description": "Model type discriminator", "title": "Data Type", "type": "string" }, "elevations": { "description": "Path to elevations file", "title": "Elevations" }, "velocities": { "description": "Path to currents file", "title": "Velocities" } }, "required": [ "elevations", "velocities" ], "title": "TidalDataset", "type": "object" }, "TimeRange": { "description": "A time range object\n\nExamples\n--------\n>>> from rompy import TimeRange\n>>> tr = TimeRange(start=\"2020-01-01\", end=\"2020-01-02\")\n>>> tr\nTimeRange(start=datetime.datetime(2020, 1, 1, 0, 0), end=datetime.datetime(2020, 1, 2, 0, 0), duration=None, interval=None, include_end=True)\n>>> tr = TimeRange(start=\"2020-01-01\", duration=\"1d\")\n>>> tr\nTimeRange(start=datetime.datetime(2020, 1, 1, 0, 0), end=datetime.datetime(2020, 1, 2, 0, 0), duration=timedelta(days=1), interval=None, include_end=True)\n>>> tr = TimeRange(start=\"2020-01-01\", duration=\"1d\", interval=\"1h\")\n>>> tr\nTimeRange(start=datetime.datetime(2020, 1, 1, 0, 0), end=None, duration=timedelta(days=1), interval=timedelta(hours=1), include_end=True)", "properties": { "start": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null, "description": "The start date of the time range", "examples": [ "2020-01-01" ], "title": "Start" }, "end": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null, "description": "The end date of the time range", "examples": [ "2020-01-02" ], "title": "End" }, "duration": { "anyOf": [ { "type": "string" }, { "format": "duration", "type": "string" }, { "type": "null" } ], "default": null, "description": "The duration of the time range", "examples": [ "1d" ], "title": "Duration" }, "interval": { "anyOf": [ { "type": "string" }, { "format": "duration", "type": "string" }, { "type": "null" } ], "default": "1h", "description": "The frequency of the time range", "examples": [ "1h", "'1h'" ], "title": "Interval" }, "include_end": { "default": true, "description": "Determines if the end date should be included in the range", "title": "Include End", "type": "boolean" } }, "title": "TimeRange", "type": "object" }, "TimeRangeOpen": { "additionalProperties": false, "description": "Regular times with an open boundary.\n\n.. code-block:: text\n\n [tbeg] [delt] SEC|MIN|HR|DAY\n\nTime is rendered in one of the following formats:\n\n* 1: ISO-notation 19870530.153000\n* 2: (as in HP compiler) '30-May-87 15:30:00'\n* 3: (as in Lahey compiler) 05/30/87.15:30:00\n* 4: 15:30:00\n* 5: 87/05/30 15:30:00'\n* 6: as in WAM 8705301530\n\nNote\n----\nThe `tbeg` field can be specified as:\n\n* existing datetime object\n* int or float, assumed as Unix time, i.e. seconds (if >= -2e10 or <= 2e10) or\n milliseconds (if < -2e10 or > 2e10) since 1 January 1970.\n* ISO 8601 time string.\n\nNote\n----\nThe `tdelta` field can be specified as:\n\n* existing timedelta object\n* int or float, assumed as seconds\n* ISO 8601 duration string, following formats work:\n\n * `[-][DD ][HH:MM]SS[.ffffff]`\n * `[\u00b1]P[DD]DT[HH]H[MM]M[SS]S` (ISO 8601 format for timedelta)\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 TimeRangeOpen\n from datetime import datetime, timedelta\n times = TimeRangeOpen(\n tbeg=datetime(1990, 1, 1), delt=timedelta(minutes=30), dfmt=\"min\"\n )\n print(times.render())\n times = TimeRangeOpen(\n tbeg=\"2012-01-01T00:00:00\", delt=\"PT1H\", tfmt=2, dfmt=\"hr\", suffix=\"blk\"\n )\n print(times.render())", "properties": { "model_type": { "default": "open", "description": "Model type discriminator", "enum": [ "open", "OPEN" ], "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" } }, "title": "TimeRangeOpen", "type": "object" }, "VARIABLEFILE": { "additionalProperties": false, "description": "Variable file specification.\n\n.. code-block:: text\n\n VARIABLE FILE < [len] 'fname' [seq] >\n\nThere are three types of files:\n\n- TPAR files containing nonstationary wave parameters\n- files containing stationary or nonstationary 1D spectra\n (usually from measurements)\n- files containing stationary or nonstationary 2D spectra\n (from other computer programs or other SWAN runs)\n\nA TPAR file is for only one location; it has the string TPAR on the first\nline of the file and a number of lines which each contain 5 numbers, i.e.:\nTime (ISO-notation), Hs, Period (average or peak period depending on the\nchoice given in command BOUND SHAPE), Peak Direction (Nautical or Cartesian,\ndepending on command SET), Directional spread (in degrees or as power of cos\ndepending on the choice given in command BOUND SHAPE).\n\nNote\n----\nExample of a TPAR file:\n\n.. code-block:: text\n\n TPAR\n 19920516.130000 4.2 12. -110. 22.\n 19920516.180000 4.2 12. -110. 22.\n 19920517.000000 1.2 8. -110. 22.\n 19920517.120000 1.4 8.5 -80. 26\n 19920517.200000 0.9 6.5 -95. 28\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.boundary import VARIABLEFILE\n par = VARIABLEFILE(\n fname=[\"tpar1.txt\", \"tpar2.txt\", \"tpar3.txt\"],\n len=[0.0, 0.5, 1.0],\n )\n print(par.render())", "properties": { "model_type": { "default": "variablefile", "description": "Model type discriminator", "enum": [ "variablefile", "VARIABLEFILE" ], "title": "Model Type", "type": "string" }, "fname": { "description": "Names of the files containing the boundary condition", "items": { "maxLength": 36, "type": "string" }, "title": "Fname", "type": "array" }, "seq": { "anyOf": [ { "items": { "minimum": 1, "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "sequence number of geographic location in the file (see Appendix D); useful for files which contain spectra for more than one location. Note: a TPAR file always contains only one location so in this case [seq] must always be 1.", "title": "Seq" }, "len": { "description": "Is the distance from the first point of the side or segment to the point along the side or segment for which the incident wave spectrum is prescribed. Note: these points do no have to coincide with grid points of the computational grid. [len] is the distance in m or degrees in the case of spherical coordinates, not in grid steps. The values of `len` should be given in ascending order. The length along a SIDE is measured in clockwise or counterclockwise direction, depending on the options CCW or CLOCKWISE (see above). The option CCW is default. In case of a SEGMENT the length is measured from the indicated begin point of the segment.", "items": { "minimum": 0, "type": "number" }, "title": "Len", "type": "array" } }, "required": [ "fname", "len" ], "title": "VARIABLEFILE", "type": "object" }, "VARIABLEPAR": { "additionalProperties": false, "description": "Variable spectral parameter.\n\n.. code-block:: text\n\n VARIABLE PAR < [len] [hs] [per] [dir] [dd] >\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.boundary import VARIABLEPAR\n par = VARIABLEPAR(\n hs=[1.5, 1.4, 1.1],\n per=[8.1, 8.0, 8.1],\n dir=[225, 226, 228],\n dd=[25, 22, 23],\n len=[0, 0.5, 1.0],\n )\n print(par.render())", "properties": { "model_type": { "default": "variablepar", "description": "Model type discriminator", "enum": [ "variablepar", "VARIABLEPAR" ], "title": "Model Type", "type": "string" }, "hs": { "description": "The significant wave height (m)", "items": { "minimum": 0.0, "type": "number" }, "title": "Hs", "type": "array" }, "per": { "description": "The characteristic period (s) of the energy spectrum (relative frequency; which is equal to absolute frequency in the absence of currents); `per` is the value of the peak period if option PEAK is chosen in command BOUND SHAPE or `per` is the value of the mean period, if option MEAN was chosen in command BOUND SHAPE", "items": { "minimum": 0.0, "type": "number" }, "title": "Per", "type": "array" }, "dir": { "description": "The peak wave direction thetapeak (degrees), constant over frequencies", "items": { "maximum": 360.0, "minimum": -360.0, "type": "number" }, "title": "Dir", "type": "array" }, "dd": { "description": "Coefficient of directional spreading; a $cos^m(\u03b8)$ distribution is assumed. `dd` is interpreted as the directional standard deviation in degrees, if the option DEGREES is chosen in the command BOUND SHAPE (SWAN default: 30). `dd` is interpreted as the power `m`, if the option POWER is chosen in the command BOUND SHAPE (SWAN default: 2)", "items": { "maximum": 360.0, "minimum": 0.0, "type": "number" }, "title": "Dd", "type": "array" }, "len": { "description": "Is the distance from the first point of the side or segment to the point along the side or segment for which the incident wave spectrum is prescribed. Note: these points do no have to coincide with grid points of the computational grid. `len` is the distance in m or degrees in the case of spherical coordinates, not in grid steps. The values of `len` should be given in ascending order. The length along a SIDE is measured in clockwise or counterclockwise direction, depending on the options CCW or CLOCKWISE (see above). The option CCW is default. In case of a SEGMENT the length is measured from the indicated begin point of the segment", "items": { "minimum": 0, "type": "number" }, "title": "Len", "type": "array" } }, "required": [ "hs", "per", "dir", "dd", "len" ], "title": "VARIABLEPAR", "type": "object" }, "VEGETATION": { "additionalProperties": false, "description": "Vegetation dumping.\n\n.. code-block:: text\n\n VEGETATION [iveg] < [height] [diamtr] [nstems] [drag] >\n\nWith this command the user can activate wave damping due to vegetation based on the\nDalrymple's formula (1984) as implemented by Suzuki et al. (2011). This damping is\nuniform over the wave frequencies. An alternative is the frequency-dependent\n(canopy) dissipation model of Jacobsen et al. (2019). If this command is not used,\nSWAN will not account for vegetation effects.\n\nThe vegetation (rigid plants) can be divided over a number of vertical segments and\nso, the possibility to vary the vegetation vertically is included. Each vertical\nlayer represents some characteristics of the plants. These variables as indicated\nbelow can be repeated as many vertical layers to be chosen.\n\nReferences\n----------\nDalrymple, R.A., Kirby, J.T. and Hwang, P.A., 1984. Wave diffraction due to areas\nof energy dissipation. Journal of waterway, port, coastal, and ocean engineering,\n110(1), pp.67-79.\n\nJacobsen, N.G., Bakker, W., Uijttewaal, W.S. and Uittenbogaard, R., 2019.\nExperimental investigation of the wave-induced motion of and force distribution\nalong a flexible stem. Journal of Fluid Mechanics, 880, pp.1036-1069.\n\nSuzuki, T., Zijlema, M., Burger, B., Meijer, M.C. and Narayan, S., 2012. Wave\ndissipation by vegetation with layer schematization in SWAN. Coastal Engineering,\n59(1), pp.64-71.\n\nNotes\n-----\nVertical layering of the vegetation is not yet implemented for the\nJacobsen et al. (2019) method.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import VEGETATION\n # Single layer\n vegetation = VEGETATION(\n height=1.2,\n diamtr=0.1,\n drag=0.5,\n nstems=10,\n )\n print(vegetation.render())\n # 2 vertical layers\n vegetation = VEGETATION(\n iveg=1,\n height=[1.2, 0.8],\n diamtr=[0.1, 0.1],\n drag=[0.5, 0.5],\n nstems=[10, 5],\n )\n print(vegetation.render())", "properties": { "model_type": { "default": "vegetation", "description": "Model type discriminator", "enum": [ "vegetation", "VEGETATION" ], "title": "Model Type", "type": "string" }, "iveg": { "default": 1, "description": "Indicates the method for the vegetation computation (SWAN default: 1):\n\n* 1: Suzuki et al. (2011)\n* 2: Jacobsen et al. (2019)\n", "enum": [ 1, 2 ], "title": "Iveg", "type": "integer" }, "height": { "anyOf": [ { "type": "number" }, { "items": { "type": "number" }, "type": "array" } ], "description": "The plant height per layer (in m)", "title": "Height" }, "diamtr": { "anyOf": [ { "type": "number" }, { "items": { "type": "number" }, "type": "array" } ], "description": "The diameter of each plant stand per layer (in m)", "title": "Diamtr" }, "drag": { "anyOf": [ { "type": "number" }, { "items": { "type": "number" }, "type": "array" } ], "description": "The drag coefficient per layer", "title": "Drag" }, "nstems": { "anyOf": [ { "type": "integer" }, { "items": { "type": "integer" }, "type": "array" } ], "default": 1, "description": "The number of plant stands per square meter for each layer. Note that `nstems` is allowed to vary over the computational region to account for the zonation of vegetation. In that case use the commands `IMPGRID NPLANTS` and `READINP NPLANTS` to define and read the vegetation density. The (vertically varying) value of `nstems` in this command will be multiplied by this horizontally varying plant density (SWAN default: 1)", "title": "Nstems" } }, "required": [ "height", "diamtr", "drag" ], "title": "VEGETATION", "type": "object" }, "Veg": { "additionalProperties": false, "properties": { "vpatch0": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": -999, "description": "Region flag for VEG. (1: ON for all elements; -999: spatial distribution)", "title": "Vpatch0" }, "vtleaf0": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 100.0, 100.0, 100.0 ], "description": "Initial concentration for total vegetation leaf biomass (3 values for different vegetation types)", "title": "Vtleaf0" }, "vtstem0": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 100.0, 100.0, 100.0 ], "description": "Initial concentration for total vegetation stem biomass (3 values for different vegetation types)", "title": "Vtstem0" }, "vtroot0": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 30.0, 30.0, 30.0 ], "description": "Initial concentration for total vegetation root biomass (3 values for different vegetation types)", "title": "Vtroot0" }, "vgpm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.1, 0.1, 0.1 ], "description": "Maximum growth rate for vegetation (day^-1) (3 values for different vegetation types)", "title": "Vgpm" }, "vfam": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.2, 0.2, 0.2 ], "description": "Fractions of leaf production allocated to active metabolism (3 values for different vegetation types)", "title": "Vfam" }, "vtgp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 32.0, 32.0, 32.0 ], "description": "Optimal growth temperature for vegetation (\u00b0C) (3 values for different vegetation types)", "title": "Vtgp" }, "vktgp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.003, 0.003, 0.003, 0.005, 0.005, 0.005 ], "description": "Temperature dependence coefficients for growth (6 values: 3 for T<=vTGP and 3 for T>vTGP, for different vegetation types)", "title": "Vktgp" }, "vfcp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.6, 0.6, 0.6, 0.3, 0.3, 0.3, 0.1, 0.1, 0.1 ], "description": "Fractions of production allocated to leaf/stem/root biomass (9 values: 3 for each vegetation type, 3 for each biomass component)", "title": "Vfcp" }, "vmtb": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01 ], "description": "Metabolism rates for leaf/stem/root (9 values: 3 for each vegetation type, 3 for each biomass component)", "title": "Vmtb" }, "vtmt": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0 ], "description": "Reference temperatures for leaf/stem/root metabolism (9 values: 3 for each vegetation type, 3 for each biomass component)", "title": "Vtmt" }, "vktmt": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.069, 0.069, 0.069, 0.069, 0.069, 0.069, 0.069, 0.069, 0.069 ], "description": "Temperature dependence coefficients for leaf/stem/root metabolism (9 values: 3 for each vegetation type, 3 for each biomass component)", "title": "Vktmt" }, "vfnm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.05, 0.05, 0.05, 0.15, 0.15, 0.15, 0.3, 0.3, 0.3, 0.5, 0.5, 0.5 ], "description": "Fractions of metabolism N into RPON, LPON, DON, NH4 (12 values: 3 for each vegetation type, 4 for each N form)", "title": "Vfnm" }, "vfpm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.05, 0.05, 0.05, 0.1, 0.1, 0.1, 0.35, 0.35, 0.35, 0.5, 0.5, 0.5 ], "description": "Fractions of metabolism P into RPOP, LPOP, DOP, PO4 (12 values: 3 for each vegetation type, 4 for each P form)", "title": "Vfpm" }, "vfcm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.05, 0.05, 0.05, 0.15, 0.15, 0.15, 0.3, 0.3, 0.3, 0.5, 0.5, 0.5 ], "description": "Fractions of metabolism C into RPOC, LPOC, DOC, CO2 (12 values: 3 for each vegetation type, 4 for each C form)", "title": "Vfcm" }, "ivnc": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Flag for recycled vegetation N destination (0: sediment; 1: water)", "title": "Ivnc" }, "ivpc": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Flag for recycled vegetation P destination (0: sediment; 1: water)", "title": "Ivpc" }, "vkhns": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.1, 0.1, 0.1 ], "description": "Nitrogen half-saturation constant in sediments (3 values for different vegetation types)", "title": "Vkhns" }, "vkhps": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.01, 0.01, 0.01 ], "description": "Phosphorus half-saturation constant in sediments (3 values for different vegetation types)", "title": "Vkhps" }, "vscr": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 35.0, 35.0, 35.0 ], "description": "Reference salinity for computing vegetation growth (3 values for different vegetation types)", "title": "Vscr" }, "vsopt": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 35.0, 15.0, 0.0 ], "description": "Optimal salinity for vegetation growth (3 values for different vegetation types)", "title": "Vsopt" }, "vinun": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 1.0, 1.0, 1.0 ], "description": "Reference value for inundation stress (nondimensional) (3 values for different vegetation types)", "title": "Vinun" }, "ivns": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Flag for N limitation on vegetation growth (0: OFF; 1: ON)", "title": "Ivns" }, "ivps": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Flag for P limitation on vegetation growth (0: OFF; 1: ON)", "title": "Ivps" }, "ivmrt": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Flag for vegetation mortality term (0: OFF; 1: ON)", "title": "Ivmrt" }, "vtmr": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 17.0, 17.0, 17.0, 17.0, 17.0, 17.0 ], "description": "Reference temperatures for leaf/stem mortality (6 values: 3 for each vegetation type, 2 for leaf/stem)", "title": "Vtmr" }, "vktmr": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 ], "description": "Temperature dependence coefficients for leaf/stem mortality (6 values: 3 for each vegetation type, 2 for leaf/stem)", "title": "Vktmr" }, "vmr0": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 12.8, 12.8, 12.8, 12.8, 12.8, 12.8 ], "description": "Base value of temperature effect on mortality (6 values: 3 for each vegetation type, 2 for leaf/stem)", "title": "Vmr0" }, "vmrcr": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 15.0, 15.0, 15.0, 15.0, 15.0, 15.0 ], "description": "Reference value for computing mortality (6 values: 3 for each vegetation type, 2 for leaf/stem)", "title": "Vmrcr" }, "valpha": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.006, 0.006, 0.006 ], "description": "Initial slope of P-I curve (3 values for different vegetation types)", "title": "Valpha" }, "vke": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.045, 0.045, 0.045 ], "description": "Light attenuation coefficient from vegetation absorption (3 values for different vegetation types)", "title": "Vke" }, "vht0": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.054, 0.054, 0.054 ], "description": "Base vegetation canopy height (3 values for different vegetation types)", "title": "Vht0" }, "vcrit": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 250.0, 250.0, 250.0 ], "description": "Critical mass for computing vegetation height (3 values for different vegetation types)", "title": "Vcrit" }, "v2ht": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0036, 0.0036, 0.0036, 0.001, 0.001, 0.001 ], "description": "Coefficients to convert mass to canopy height (6 values: 3 for each vegetation type, 2 for different conditions)", "title": "V2Ht" }, "vc2dw": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.38, 0.38, 0.38 ], "description": "Carbon to dry weight ratio of vegetation (3 values for different vegetation types)", "title": "Vc2Dw" }, "v2den": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 10, 10, 10 ], "description": "Coefficient for computing vegetation density (3 values for different vegetation types)", "title": "V2Den" }, "vp2c": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.01, 0.01, 0.01 ], "description": "Phosphorus to carbon ratio in vegetation (3 values for different vegetation types)", "title": "Vp2C" }, "vn2c": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.09, 0.09, 0.09 ], "description": "Nitrogen to carbon ratio in vegetation (3 values for different vegetation types)", "title": "Vn2C" }, "vo2c": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 2.67, 2.67, 2.67 ], "description": "Oxygen to carbon ratio in vegetation (3 values for different vegetation types)", "title": "Vo2C" } }, "title": "Veg", "type": "object" }, "Vertical": { "additionalProperties": false, "properties": { "vnh1": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 400, "description": "Vertical nudging depth 1 in meters. Used in vertical relaxation scheme.", "title": "Vnh1" }, "vnf1": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "Vertical relaxation factor for depth 1. Must be between 0 and 1.", "title": "Vnf1" }, "vnh2": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 500, "description": "Vertical nudging depth 2 in meters. Must be greater than vnh1.", "title": "Vnh2" }, "vnf2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "Vertical relaxation factor for depth 2. Must be between 0 and 1.", "title": "Vnf2" }, "step_nu_tr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 86400.0, "description": "Time step in seconds for all *_nu.nc files when inu_[MOD]=2.", "title": "Step Nu Tr" }, "h_bcc1": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 100.0, "description": "Cut-off depth for cubic spline interpolation near bottom when computing horizontal gradients.", "title": "H Bcc1" }, "s1_mxnbt": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.5, "description": "Dimensioning parameter for inter-subdomain backtracking.", "title": "S1 Mxnbt" }, "s2_mxnbt": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 3.5, "description": "Another dimensioning parameter for inter-subdomain backtracking.", "title": "S2 Mxnbt" }, "iharind": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Flag for harmonic analysis of elevation. 0 for off, non-zero for on.", "title": "Iharind" }, "iflux": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Conservation check option. 0: off, 1: basic output, 2: more elaborate outputs.", "title": "Iflux" }, "izonal5": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Flag for Williamson test #5 (zonal flow over an isolated mount). 0 for off, non-zero for on.", "title": "Izonal5" }, "ibtrack_test": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Flag for rotating Gausshill test with stratified T,S. 0: off, 1: on.", "title": "Ibtrack Test" }, "irouse_test": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Flag for Rouse profile test. 0: off, 1: on. Requires USE_TIMOR to be on if enabled.", "title": "Irouse Test" }, "flag_fib": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Flag to choose FIB model for bacteria decay. 1: Constant decay rate, 2: Canteras et al., 1995, 3: Servais et al., 2007.", "title": "Flag Fib" }, "slr_rate": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 120.0, "description": "Sea-level rise rate in mm/year for marsh model. Only used if USE_MARSH is on.", "title": "Slr Rate" }, "isav": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Flag for vegetation model. 0: off, 1: on. Requires additional input files if enabled.", "title": "Isav" }, "nstep_ice": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Number of SCHISM steps between calls to the ICE module.", "title": "Nstep Ice" }, "rearth_pole": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 6378206.4, "description": "Earth's radius at the pole in meters.", "title": "Rearth Pole" }, "rearth_eq": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 6378206.4, "description": "Earth's radius at the equator in meters.", "title": "Rearth Eq" }, "shw": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "4184.d0", "description": "Specific heat of water (C_p) in J/kg/K.", "title": "Shw" }, "rho0": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": "1000.d0", "description": "Reference water density for Boussinesq approximation in kg/m^3.", "title": "Rho0" }, "vclose_surf_frac": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "Fraction of vertical flux closure adjustment applied at surface for T,S.", "title": "Vclose Surf Frac" }, "iadjust_mass_consv0__1": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "T", "title": "Iadjust Mass Consv0 1" }, "iadjust_mass_consv0__2": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "S", "title": "Iadjust Mass Consv0 2" }, "iadjust_mass_consv0__3": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "GEN", "title": "Iadjust Mass Consv0 3" }, "iadjust_mass_consv0__4": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "AGE", "title": "Iadjust Mass Consv0 4" }, "iadjust_mass_consv0__5": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "SED3D (code won't allow non-0 for this module)", "title": "Iadjust Mass Consv0 5" }, "iadjust_mass_consv0__6": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "EcoSim", "title": "Iadjust Mass Consv0 6" }, "iadjust_mass_consv0__7": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "ICM", "title": "Iadjust Mass Consv0 7" }, "iadjust_mass_consv0__8": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "CoSiNE", "title": "Iadjust Mass Consv0 8" }, "iadjust_mass_consv0__9": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Feco", "title": "Iadjust Mass Consv0 9" }, "iadjust_mass_consv0__10": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "TIMOR", "title": "Iadjust Mass Consv0 10" }, "iadjust_mass_consv0__11": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "FABM", "title": "Iadjust Mass Consv0 11" }, "iadjust_mass_consv0__12": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "DVD (must=0)", "title": "Iadjust Mass Consv0 12" }, "h_massconsv": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 2.0, "description": "Threshold depth for ICM mass conservation in meters.", "title": "H Massconsv" }, "rinflation_icm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.001, "description": "Maximum ratio between H^{n+1} and H^n allowed for ICM mass conservation.", "title": "Rinflation Icm" } }, "title": "Vertical", "type": "object" }, "Vgrid2D": { "additionalProperties": false, "properties": { "model_type": { "const": "vgrid2D_generator", "default": "vgrid2D_generator", "description": "Model descriminator", "title": "Model Type", "type": "string" } }, "title": "Vgrid2D", "type": "object" }, "Vgrid3D_LSC2": { "additionalProperties": false, "properties": { "model_type": { "const": "vgrid3D_lsc2", "default": "vgrid3D_lsc2", "description": "Model descriminator", "title": "Model Type", "type": "string" }, "hgrid": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "format": "path", "type": "string" } ], "description": "Path to hgrid.gr3 file", "title": "Hgrid" }, "hsm": { "description": "Depth for each master grid", "items": { "type": "number" }, "title": "Hsm", "type": "array" }, "nv": { "description": "Total number of vertical levels", "items": { "type": "integer" }, "title": "Nv", "type": "array" }, "h_c": { "description": "Transition depth between sigma and z-coordinates", "title": "H C", "type": "number" }, "theta_b": { "description": "Vertical resolution near the surface", "title": "Theta B", "type": "number" }, "theta_f": { "description": "Vertical resolution near the seabed", "title": "Theta F", "type": "number" }, "crs": { "default": "epsg:4326", "description": "Coordinate reference system", "title": "Crs", "type": "string" } }, "required": [ "hgrid", "hsm", "nv", "h_c", "theta_b", "theta_f" ], "title": "Vgrid3D_LSC2", "type": "object" }, "Vgrid3D_SZ": { "additionalProperties": false, "properties": { "model_type": { "const": "vgrid3D_sz", "default": "vgrid3D_sz", "description": "Model descriminator", "title": "Model Type", "type": "string" }, "hgrid": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "format": "path", "type": "string" } ], "description": "Path to hgrid.gr3 file", "title": "Hgrid" }, "h_s": { "description": "Depth for each master grid", "title": "H S", "type": "number" }, "ztot": { "description": "Total number of vertical levels", "items": { "type": "integer" }, "title": "Ztot", "type": "array" }, "h_c": { "description": "Transition depth between sigma and z-coordinates", "title": "H C", "type": "number" }, "theta_b": { "description": "Vertical resolution near the surface", "title": "Theta B", "type": "number" }, "theta_f": { "description": "Vertical resolution near the seabed", "title": "Theta F", "type": "number" }, "sigma": { "description": "Sigma levels", "items": { "type": "number" }, "title": "Sigma", "type": "array" } }, "required": [ "hgrid", "h_s", "ztot", "h_c", "theta_b", "theta_f", "sigma" ], "title": "Vgrid3D_SZ", "type": "object" }, "VgridGenerator": { "additionalProperties": false, "description": "Generate vgrid.in.\nThis is all hardcoded for now, may look at making this more flexible in the future.", "properties": { "model_type": { "const": "vgrid_generator", "default": "vgrid_generator", "description": "Model descriminator", "title": "Model Type", "type": "string" }, "vgrid": { "anyOf": [ { "$ref": "#/$defs/Vgrid2D" }, { "$ref": "#/$defs/Vgrid3D_LSC2" }, { "$ref": "#/$defs/Vgrid3D_SZ" } ], "description": "Type of vgrid to generate. 2d will create the minimum required for a 2d model. LSC2 will create a full vgrid for a 3d model using pyschsim's LSC2 class", "title": "Vgrid" } }, "title": "VgridGenerator", "type": "object" }, "WCAPPING_AB": { "additionalProperties": false, "description": "Whitecapping according to Alves and Banner (2003).\n\n.. code-block:: text\n\n WCAPPING AB [cds2] [br] CURRENT [cds3]\n\nReferences\n----------\nAlves, J.H.G. and Banner, M.L., 2003. Performance of a saturation-based\ndissipation-rate source term in modeling the fetch-limited evolution of wind waves.\nJournal of Physical Oceanography, 33(6), pp.1274-1298.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import WCAPPING_AB\n wcapping = WCAPPING_AB()\n print(wcapping.render())\n wcapping = WCAPPING_AB(cds2=5.0e-5, br=1.75e-3, current=True, cds3=0.8)\n print(wcapping.render())", "properties": { "model_type": { "default": "ab", "description": "Model type discriminator", "enum": [ "ab", "AB" ], "title": "Model Type", "type": "string" }, "cds2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "proportionality coefficient due to Alves and Banner (2003) (SWAN default: 5.0e-5)", "title": "Cds2" }, "br": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Threshold saturation level\t(SWAN default: 1.75e-3)", "title": "Br" }, "current": { "default": false, "description": "Indicates that enhanced current-induced dissipation as proposed by Van der Westhuysen (2012) is to be added", "title": "Current", "type": "boolean" }, "cds3": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Proportionality coefficient (SWAN default: 0.8)", "title": "Cds3" } }, "title": "WCAPPING_AB", "type": "object" }, "WCAPPING_KOMEN": { "additionalProperties": false, "description": "Whitecapping according to Komen (1984).\n\n.. code-block:: text\n\n WCAPPING KOMEN [cds2] [stpm] [powst] [delta] [powk]\n\nNotes\n-----\nThe SWAN default for `delta` has been changed since version 40.91A. The setting\n`delta = 1` will improve the prediction of the wave energy at low frequencies, and\nhence the mean wave period. The original default was `delta = 0`, which corresponds\nto WAM Cycle 3. See the Scientific/Technical documentation for further details.\n\nReferences\n----------\nKomen, G.J., Hasselmann, S. and Hasselmann, K., 1984. On the existence of a fully\ndeveloped wind-sea spectrum. Journal of physical oceanography, 14(8), pp.1271-1285.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import WCAPPING_KOMEN\n wcapping = WCAPPING_KOMEN()\n print(wcapping.render())\n wcapping = WCAPPING_KOMEN(cds2=2.36e-5, stpm=3.02e-3, powst=2, delta=1, powk=2)\n print(wcapping.render())", "properties": { "model_type": { "default": "komen", "description": "Model type discriminator", "enum": [ "komen", "KOMEN" ], "title": "Model Type", "type": "string" }, "cds2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Coefficient for determining the rate of whitecapping dissipation ($Cds$) (SWAN default: 2.36e-5)", "title": "Cds2" }, "stpm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Value of the wave steepness for a Pierson-Moskowitz spectrum ($s^2_{PM}$) (SWAN default: 3.02e-3)", "title": "Stpm" }, "powst": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Power of steepness normalized with the wave steepness of a Pierson-Moskowitz spectrum (SWAN default: 2)", "title": "Powst" }, "delta": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Coefficient which determines the dependency of the whitecapping on wave number (SWAN default: 1)", "title": "Delta" }, "powk": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "power of wave number normalized with the mean wave number (SWAN default: 1)", "title": "Powk" } }, "title": "WCAPPING_KOMEN", "type": "object" }, "WESTHUYSEN": { "additionalProperties": false, "description": "Westhuysen source terms subcomponent.\n\n.. code-block:: text\n\n WESTHUYSEN [cds2] [br] (AGROW [a])\n\nNonlinear saturation-based whitecapping combined with wind input of Yan (1987).\n\nNotes\n-----\nThe two arguments are specified in the Appendix C of the User manual but not in the\ncommand description for WESTH in Section 4.5.4. They are also options in the\nWCAPPING command. It is not entirely clear if they should/could be specified here.\n\nReferences\n----------\nvan der Westhuysen, A.J., Zijlema, M. and Battjes, J.A., 2007. Nonlinear\nsaturation-based whitecapping dissipation in SWAN for deep and shallow water.\nCoastal Engineering, 54(2), pp.151-170.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.physics import WESTHUYSEN\n westhuysen = WESTHUYSEN()\n print(westhuysen.render())\n westhuysen = WESTHUYSEN(cds2=5.0e-5, br=1.75e-3)\n print(westhuysen.render())", "properties": { "model_type": { "default": "westhuysen", "description": "Model type discriminator", "enum": [ "westhuysen", "WESTHUYSEN" ], "title": "Model Type", "type": "string" }, "wind_drag": { "default": "wu", "description": "Indicates the wind drag formulation", "enum": [ "wu", "fit" ], "title": "Wind Drag", "type": "string" }, "agrow": { "default": false, "description": "Activate the Cavaleri and Malanotte (1981) wave growth term", "title": "Agrow", "type": "boolean" }, "a": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Proportionality coefficient when activating the Cavaleri and Malanotte (1981) wave growth term (SWAN default: 0.0015)", "title": "A" }, "cds2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "proportionality coefficient due to Alves and Banner (2003) (SWAN default: 5.0e-5).", "title": "Cds2" }, "br": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Threshold saturation level\t(SWAN default: 1.75e-3)", "title": "Br" } }, "title": "WESTHUYSEN", "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" }, "WWMBNDGR3Generator": { "additionalProperties": false, "properties": { "model_type": { "const": "wwmbnd_generator", "default": "wwmbnd_generator", "description": "Model discriminator", "title": "Model Type", "type": "string" }, "hgrid": { "anyOf": [ { "$ref": "#/$defs/DataBlob" }, { "format": "path", "type": "string" } ], "description": "Path to hgrid.gr3 file", "title": "Hgrid" }, "bcflags": { "default": null, "description": "List of boundary condition flags. This replicates the functionality of the gen_wwmbnd.in file. Must be the same length as the number of open boundaries in the hgrid.gr3 file. If not specified, it is assumed that all open hgrid files are open to waves", "items": { "type": "integer" }, "title": "Bcflags", "type": "array" } }, "required": [ "hgrid" ], "title": "WWMBNDGR3Generator", "type": "object" }, "Walv": { "additionalProperties": false, "description": "Empty class to fill empty wavl namelist", "properties": {}, "title": "Walv", "type": "object" }, "Wind": { "additionalProperties": false, "description": "Empty class to fill empty wind namelist", "properties": {}, "title": "Wind", "type": "object" }, "Wwminput": { "additionalProperties": false, "properties": { "proc": { "anyOf": [ { "$ref": "#/$defs/Proc" }, { "type": "null" } ] }, "coupl": { "anyOf": [ { "$ref": "#/$defs/Coupl" }, { "type": "null" } ] }, "grid": { "anyOf": [ { "$ref": "#/$defs/Grid" }, { "type": "null" } ] }, "init": { "anyOf": [ { "$ref": "#/$defs/Init" }, { "type": "null" } ] }, "bouc": { "anyOf": [ { "$ref": "#/$defs/Bouc" }, { "type": "null" } ] }, "wind": { "anyOf": [ { "$ref": "#/$defs/Wind" }, { "type": "null" } ] }, "curr": { "anyOf": [ { "$ref": "#/$defs/Curr" }, { "type": "null" } ] }, "walv": { "anyOf": [ { "$ref": "#/$defs/Walv" }, { "type": "null" } ] }, "engs": { "anyOf": [ { "$ref": "#/$defs/Engs" }, { "type": "null" } ] }, "nums": { "anyOf": [ { "$ref": "#/$defs/Nums" }, { "type": "null" } ] }, "history": { "anyOf": [ { "$ref": "#/$defs/History" }, { "type": "null" } ] }, "station": { "anyOf": [ { "$ref": "#/$defs/Station" }, { "type": "null" } ] }, "hotfile": { "anyOf": [ { "$ref": "#/$defs/Hotfile" }, { "type": "null" } ] }, "petscoptions": { "anyOf": [ { "$ref": "#/$defs/Petscoptions" }, { "type": "null" } ] }, "nesting": { "anyOf": [ { "$ref": "#/$defs/Nesting" }, { "type": "null" } ] } }, "title": "Wwminput", "type": "object" }, "XY": { "additionalProperties": false, "description": "Points in problem coordinates.\n\n.. code-block:: text\n\n < [x] [y] >\n\nNote\n----\nCoordinates should be given in m when Cartesian coordinates are used or degrees\nwhen Spherical coordinates are used (see command `COORD`).\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.base import XY\n points = XY(\n x=[172, 172, 172, 172.5, 173],\n y=[-41, -40.5, -40, -40, -40],\n fmt=\"0.2f\",\n )\n print(points.render())", "properties": { "model_type": { "default": "xy", "description": "Model type discriminator", "enum": [ "xy", "XY" ], "title": "Model Type", "type": "string" }, "x": { "description": "Problem x-coordinate values", "items": { "type": "number" }, "title": "X", "type": "array" }, "y": { "description": "Problem y-coordinate values", "items": { "type": "number" }, "title": "Y", "type": "array" }, "fmt": { "default": "0.8f", "description": "The format to render floats values", "title": "Fmt", "type": "string" } }, "required": [ "x", "y" ], "title": "XY", "type": "object" }, "ZERO": { "additionalProperties": false, "description": "Zero initial conditions.\n\n.. code-block:: text\n\n ZERO\n\nThe initial spectral densities are all 0; note that if waves are generated in the\nmodel only by wind, waves can become non-zero only by the presence of the\n\u201dA\u201d term in the growth model; see the keyword AGROW in command GEN3.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.boundary import ZERO\n init = ZERO()\n print(init.render())", "properties": { "model_type": { "default": "zero", "description": "Model type discriminator", "enum": [ "zero", "ZERO" ], "title": "Model Type", "type": "string" } }, "title": "ZERO", "type": "object" }, "Zb": { "additionalProperties": false, "properties": { "zgpm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0, 0.0, 1.75, 1.75, 1.75, 1.75, 1.75, 1.75, 1.0, 0.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0 ], "description": "Zooplankton predation rate (day^-1) for different prey types and zooplankton groups. Dimension: (prey=1:8, ZB=1:2)", "title": "Zgpm" }, "zkhg": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175 ], "description": "Reference prey concentration (mg/L) for zooplankton growth. Dimension: (prey=1:8, ZB=1:2)", "title": "Zkhg" }, "ztgp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 25.0, 25.0 ], "description": "Optimal temperature for zooplankton growth (\u00b0C)", "title": "Ztgp" }, "zktgp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0035, 0.008, 0.025, 0.03 ], "description": "Temperature dependence for zooplankton growth (\u00b0C^-2). Dimension: (ZB=1:2, 1:2) for T<=zTGP & T>zTGP", "title": "Zktgp" }, "zag": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.75, "description": "Zooplankton assimilation efficiency ratio (0-1)", "title": "Zag" }, "zrg": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Zooplankton respiration ratio when grazing (0-1)", "title": "Zrg" }, "zmrt": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.02, 0.02 ], "description": "Zooplankton mortality rates (day^-1)", "title": "Zmrt" }, "zmtb": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.254, 0.186 ], "description": "Zooplankton metabolism rates (day^-1)", "title": "Zmtb" }, "ztmt": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 20.0, 20.0 ], "description": "Reference temperature for zooplankton metabolism (\u00b0C)", "title": "Ztmt" }, "zktmt": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0693, 0.0693 ], "description": "Temperature dependence for zooplankton metabolism (\u00b0C^-1)", "title": "Zktmt" }, "zfcp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.35, 0.55, 0.1 ], "description": "Fractions of zooplankton carbon partitioned into (RPOC, LPOC, DOC)", "title": "Zfcp" }, "zfnp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.35, 0.5, 0.1, 0.05 ], "description": "Fractions of zooplankton nitrogen partitioned into (RPON, LPON, DON, NH4)", "title": "Zfnp" }, "zfpp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.1, 0.2, 0.5, 0.2 ], "description": "Fractions of zooplankton phosphorus partitioned into (RPOP, LPOP, DOP, PO4)", "title": "Zfpp" }, "zfsp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.7, 0.25 ], "description": "Fractions of zooplankton silica partitioned into (SU, SA)", "title": "Zfsp" }, "zfcm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.1, 0.0 ], "description": "Fractions of zooplankton metabolism carbon partitioned into DOC. Dimension: (ZB=1:2)", "title": "Zfcm" }, "zfnm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.35, 0.3, 0.5, 0.4, 0.1, 0.2, 0.05, 0.1 ], "description": "Fractions of zooplankton metabolism nitrogen partitioned into (RPON, LPON, DON, NH4). Dimension: (ZB=1:2, 4)", "title": "Zfnm" }, "zfpm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.35, 0.3, 0.5, 0.4, 0.1, 0.2, 0.05, 0.1 ], "description": "Fractions of zooplankton metabolism phosphorus partitioned into (RPOP, LPOP, DOP, PO4). Dimension: (ZB=1:2, 4)", "title": "Zfpm" }, "zfsm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.5, 0.4, 0.5, 0.6 ], "description": "Fractions of zooplankton metabolism silica partitioned into (SU, SA). Dimension: (ZB=1:2, 2)", "title": "Zfsm" }, "zkhdo": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.5, 0.5 ], "description": "Dissolved oxygen half-saturation for zooplankton's DOC excretion (mg/L)", "title": "Zkhdo" }, "zn2c": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.2, 0.2 ], "description": "Nitrogen to carbon ratio for zooplankton", "title": "Zn2C" }, "zp2c": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.02, 0.02 ], "description": "Phosphorus to carbon ratio for zooplankton", "title": "Zp2C" }, "zs2c": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.5, 0.5 ], "description": "Silica to carbon ratio for zooplankton", "title": "Zs2C" }, "z2pr": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.5, 0.5 ], "description": "Ratio converting zooplankton and phytoplankton biomass to predation rates on zooplankton (L.mg^-1.day^-1)", "title": "Z2Pr" }, "p2pr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.25, "description": "Ratio converting zooplankton and phytoplankton biomass to predation rates on phytoplankton (L.mg^-1.day^-1)", "title": "P2Pr" } }, "title": "Zb", "type": "object" }, "rompy__schism__namelists__cosine__Core": { "additionalProperties": false, "properties": { "gmaxs": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 2.0, 2.5 ], "description": "Maximum growth rates for two phytoplankton types", "title": "Gmaxs" }, "gammas": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.2, 0.075 ], "description": "Mortality rates for two phytoplankton types", "title": "Gammas" }, "pis": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 1.5, 1.5 ], "description": "Ammonium inhibition parameters for two phytoplankton types", "title": "Pis" }, "kno3s": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 1.0, 3.0 ], "description": "NO3 half-saturation constants for two phytoplankton types", "title": "Kno3S" }, "knh4s": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.15, 0.45 ], "description": "NH4 half-saturation constants for two phytoplankton types", "title": "Knh4S" }, "kpo4s": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.1, 0.1 ], "description": "PO4 half-saturation constants for two phytoplankton types", "title": "Kpo4S" }, "kco2s": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 50.0, 50.0 ], "description": "CO2 half-saturation constants for two phytoplankton types", "title": "Kco2S" }, "ksio4": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 4.5, "description": "SiO4 half-saturation constant for diatoms", "title": "Ksio4" }, "kns": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0, 0.0 ], "description": "Nighttime uptake rates of NH4 for two phytoplankton types", "title": "Kns" }, "alphas": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.1, 0.1 ], "description": "Initial slopes of P-I curve for two phytoplankton types", "title": "Alphas" }, "betas": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0, 0.0 ], "description": "Slopes for photo-inhibition for two phytoplankton types", "title": "Betas" }, "aks": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.75, 0.03, 0.066 ], "description": "Light extinction coefficients for phytoplankton and suspended particulate matter", "title": "Aks" }, "betaz": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 1.35, 0.4 ], "description": "Maximum grazing rates for two zooplankton types", "title": "Betaz" }, "alphaz": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.75, 0.75 ], "description": "Assimilation rates for two zooplankton types", "title": "Alphaz" }, "gammaz": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.2, 0.2 ], "description": "Mortality rates for two zooplankton types", "title": "Gammaz" }, "kez": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.2, 0.2 ], "description": "Excretion rates for two zooplankton types", "title": "Kez" }, "kgz": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.5, 0.25 ], "description": "Reference prey concentrations for grazing for two zooplankton types", "title": "Kgz" }, "rhoz": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.6, 0.3, 0.1 ], "description": "Prey preference factors of Z2 on (S2, Z1, DN)", "title": "Rhoz" }, "ipo4": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Flag to add additional PO4 from biogenic silica dissolution", "title": "Ipo4" }, "tr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 20.0, "description": "Reference temperature for temperature adjustment for CoSiNE sink and source", "title": "Tr" }, "kox": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 30.0, "description": "Reference oxygen concentration for oxidation", "title": "Kox" }, "wss2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.2, "description": "Settling velocity of S2 (phytoplankton type 2)", "title": "Wss2" }, "wsdn": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "Settling velocity of DN (detrital nitrogen)", "title": "Wsdn" }, "wsdsi": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "Settling velocity of DSi (dissolved silica)", "title": "Wsdsi" }, "si2n": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.2, "description": "Silica to nitrogen conversion coefficient", "title": "Si2N" }, "p2n": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0625, "description": "Phosphorus to nitrogen conversion coefficient", "title": "P2N" }, "o2no": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 8.625, "description": "Oxygen to nitrogen (NO3) conversion coefficient", "title": "O2No" }, "o2nh": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 6.625, "description": "Oxygen to nitrogen (NH4) conversion coefficient", "title": "O2Nh" }, "c2n": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 7.3, "description": "Carbon to nitrogen conversion coefficient", "title": "C2N" }, "gamman": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.07, "description": "Nitrification coefficient", "title": "Gamman" }, "pco2a": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 391.63, "description": "Atmospheric CO2 concentration", "title": "Pco2A" }, "kmdn": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.009, 0.075 ], "description": "Remineralization coefficients for DN (detrital nitrogen)", "title": "Kmdn" }, "kmdsi": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0114, 0.015 ], "description": "Remineralization coefficients for DSi (dissolved silica)", "title": "Kmdsi" } }, "title": "Core", "type": "object" }, "rompy__schism__namelists__cosine__Marco": { "additionalProperties": false, "properties": { "idelay": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Switch for 7-day delay in zooplankton predation (0: off, 1: on)", "title": "Idelay" }, "ndelay": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 7, "description": "Number of days for zooplankton predation delay when idelay is active", "title": "Ndelay" }, "ibgraze": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Switch for bottom grazing function (0: off, 1: on)", "title": "Ibgraze" }, "idapt": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Switch for light adaptation (0: off, 1: on)", "title": "Idapt" }, "alpha_corr": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.25, "description": "Correction factor for light adaptation when idapt is active", "title": "Alpha Corr" }, "zeptic": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 10.0, "description": "Euphotic zone depth parameter for light adaptation when idapt is active", "title": "Zeptic" }, "iz2graze": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Switch for Z2 grazing on S2, Z1, and DN (0: off, 1: on)", "title": "Iz2Graze" }, "iout_cosine": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "CoSiNE model station output option (0: off, 1-5: various output levels)", "title": "Iout Cosine" }, "nspool_cosine": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 30, "description": "Output interval (number of time steps) for CoSiNE model station output", "title": "Nspool Cosine" }, "ico2s": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Switch for CO2 limitation on phytoplankton growth (0: off, 1: on)", "title": "Ico2S" }, "ispm": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Suspended Particulate Matter (SPM) calculation method (0: constant, 1: spatial varying, 2: SED model)", "title": "Ispm" }, "spm0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 20.0, "description": "Constant SPM value used when ispm is 0", "title": "Spm0" }, "ised": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Switch for sediment flux model (0: off, 1: on)", "title": "Ised" } }, "title": "Marco", "type": "object" }, "rompy__schism__namelists__icm__Core": { "additionalProperties": false, "properties": { "gpm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 2.5, 2.8, 3.5 ], "description": "Phytoplankton growth rates for three different species (day^-1)", "title": "Gpm" }, "tgp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 15.0, 22.0, 27.0 ], "description": "Optimal temperatures for phytoplankton growth for three different species (\u00b0C)", "title": "Tgp" }, "ktgp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.005, 0.004, 0.003, 0.008, 0.006, 0.004 ], "description": "Temperature dependence for phytoplankton growth, dimensioned as (PB=1:3,1:2) (\u00b0C^-2)", "title": "Ktgp" }, "mtr": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0, 0.0, 0.0 ], "description": "Phytoplankton photorespiration coefficients for three species (0 < MTR < 1)", "title": "Mtr" }, "mtb": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.01, 0.02, 0.03 ], "description": "Phytoplankton metabolism rates for three species (day^-1)", "title": "Mtb" }, "tmt": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 20.0, 20.0, 20.0 ], "description": "Reference temperatures for phytoplankton metabolism for three species (\u00b0C)", "title": "Tmt" }, "ktmt": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0322, 0.0322, 0.0322 ], "description": "Temperature dependence for phytoplankton metabolism for three species (\u00b0C^-1)", "title": "Ktmt" }, "fcp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.35, 0.3, 0.2, 0.55, 0.5, 0.5, 0.1, 0.2, 0.3, 0.0, 0.0, 0.0 ], "description": "Fractions of phytoplankton carbon into (RPOC,LPOC,DOC,SRPOC) for three species", "title": "Fcp" }, "fnp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.35, 0.35, 0.35, 0.5, 0.5, 0.5, 0.1, 0.1, 0.1, 0.05, 0.05, 0.05, 0.0, 0.0, 0.0 ], "description": "Fractions of phytoplankton nitrogen into (RPON,LPON,DON,NH4,SRPON) for three species", "title": "Fnp" }, "fpp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.1, 0.1, 0.1, 0.2, 0.2, 0.2, 0.5, 0.5, 0.5, 0.2, 0.2, 0.2, 0.0, 0.0, 0.0 ], "description": "Fractions of phytoplankton Phosphorus into (RPOP,LPOP,DOP,PO4,SRPOP) for three species", "title": "Fpp" }, "fcm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.1, 0.0, 0.0, 0.0 ], "description": "Fractions of phytoplankton metabolism carbon into (RPOC,LPOC,DOC,SRPOC) for three species", "title": "Fcm" }, "fnm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "description": "Fractions of phytoplankton metabolism nitrogen into (RPON,LPON,DON,NH4,SRPON) for three species", "title": "Fnm" }, "fpm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], "description": "Fractions of phytoplankton metabolism phosphorus into (RPOP,LPOP,DOP,PO4,SRPOP) for three species", "title": "Fpm" }, "nit": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.07, "description": "Maximum nitrification rate (day^-1)", "title": "Nit" }, "tnit": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 27.0, "description": "Optimal temperature for nitrification (\u00b0C)", "title": "Tnit" }, "ktnit": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0045, 0.0045 ], "description": "Temperature dependence for nitrification (T<=TNit & T>TNit) (\u00b0C^-2)", "title": "Ktnit" }, "khdon": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "Dissolved Oxygen half saturation for nitrification (mg/L)", "title": "Khdon" }, "khdoox": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.5, "description": "Dissolved Oxygen half saturation for denitrification & DOC's oxic respiration (mg/L)", "title": "Khdoox" }, "khno3dn": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.1, "description": "Nitrate half saturation for denitrification (mg/L)", "title": "Khno3Dn" }, "kc0": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.005, 0.075, 0.2 ], "description": "Minimum decay rates of RPOC, LPOC, DOC (day^-1)", "title": "Kc0" }, "kn0": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.005, 0.075, 0.2 ], "description": "Minimum decay rates of RPON, LPON, DON (day^-1)", "title": "Kn0" }, "kp0": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.005, 0.075, 0.2 ], "description": "Minimum decay rates of RPOP, LPOP, DOP (day^-1)", "title": "Kp0" }, "kcalg": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0, 0.0, 0.0 ], "description": "Algae effect on RPOC, LPOC, DOC decay (day^-1.m3.g[C]^-1)", "title": "Kcalg" }, "knalg": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0, 0.0, 0.0 ], "description": "Algae effect on RPON, LPON, DON decay (day^-1.m3.g[C]^-1)", "title": "Knalg" }, "kpalg": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.0, 0.0, 0.0 ], "description": "Algae effect on RPOP, LPOP, DOP decay (day^-1.m3.g[C]^-1)", "title": "Kpalg" }, "trm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 20.0, 20.0, 20.0 ], "description": "Reference temperatures for (RPOM,LPOM,DOM) decay (\u00b0C)", "title": "Trm" }, "ktrm": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.069, 0.069, 0.069 ], "description": "Temperature dependence for (RPOM,LPOM,DOM) decay (\u00b0C^-1)", "title": "Ktrm" }, "ksr0": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.001, 0.001, 0.001 ], "description": "Decay rates of SRPOC, SRPON, SRPOP (day^-1)", "title": "Ksr0" }, "trsr": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 20.0, 20.0, 20.0 ], "description": "Reference temperatures for (SRPOC,SRPON,SRPOP) decay (\u00b0C)", "title": "Trsr" }, "ktrsr": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.069, 0.069, 0.069 ], "description": "Temperature dependence for (SRPOC,SRPON,SRPOP) decay (\u00b0C^-1)", "title": "Ktrsr" }, "kpip": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "Dissolution rate of PIP (day^-1)", "title": "Kpip" }, "kcd": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.0, "description": "Oxidation rate of COD at TRCOD (day^-1)", "title": "Kcd" }, "trcod": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 20.0, "description": "Reference temperature for COD oxidation (\u00b0C)", "title": "Trcod" }, "ktrcod": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.041, "description": "Temperature dependence for COD oxidation (\u00b0C^-1)", "title": "Ktrcod" }, "khcod": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 1.5, "description": "COD half saturation for COD oxidation (mg[O2]/L)", "title": "Khcod" }, "khn": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.01, 0.01, 0.01 ], "description": "Nitrogen half saturation for three phytoplankton species (mg/L)", "title": "Khn" }, "khp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.001, 0.001, 0.001 ], "description": "Phosphorus half saturation for three phytoplankton species (mg/L)", "title": "Khp" }, "khsal": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 1000000.0, 1000000.0, 0.1 ], "description": "Salinity when phytoplankton growth is halved for three species (PSU); (1e6: no salinity stress)", "title": "Khsal" }, "c2chl": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.059, 0.059, 0.059 ], "description": "Carbon to chlorophyll ratio for three phytoplankton species (g[C]/mg[Chl])", "title": "C2Chl" }, "n2c": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.167, 0.167, 0.167 ], "description": "Nitrogen to carbon ratio for three phytoplankton species", "title": "N2C" }, "p2c": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.02, 0.02, 0.02 ], "description": "Phosphorus to carbon ratio for three phytoplankton species", "title": "P2C" }, "o2c": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 2.67, "description": "Oxygen to carbon ratio in respiration", "title": "O2C" }, "o2n": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 4.33, "description": "Oxygen to ammonium ratio (g[O2]/g[NH4])", "title": "O2N" }, "dn2c": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.933, "description": "Mass of NO3 consumed per mass of DOC oxidized in denitrification (g[N]/g[C])", "title": "Dn2C" }, "an2c": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.5, "description": "Ratio of denitrification rate to oxic DOC respiration rate", "title": "An2C" }, "khdo": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.5, 0.5, 0.5 ], "description": "DO half saturation for phytoplankton's DOC excretion (mg/L) for three species", "title": "Khdo" }, "kpo4p": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "Coefficient relating PO4 sorption to TSS", "title": "Kpo4P" }, "wrea": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.0, "description": "Baseline wind-induced reaeration coefficient for DO (day^-1)", "title": "Wrea" }, "pbmin": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.01, 0.01, 0.01 ], "description": "Minimum phytoplankton concentration (mg[C]/L) for three species", "title": "Pbmin" }, "dz_flux": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 1.0, 1.0 ], "description": "Surface/bottom thickness (m) within which surface flux/bottom flux are redistributed", "title": "Dz Flux" } }, "title": "Core", "type": "object" }, "rompy__schism__namelists__icm__Marco": { "additionalProperties": false, "properties": { "nsub": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Number of subcycles in ICM kinetics", "title": "Nsub" }, "ike": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Option for computing light attenuation coefficients. 0: Ke=Ke0+KeC*Chl+KeS*(tss2c*POC), 1: Ke=Ke0+KeC*Chl+KeS*TSS, 2: Ke=Ke0+KeC*Chl+KeSalt*Salt", "title": "Ike" }, "ke0": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.26, "description": "Background light extinction coefficient (1/m)", "title": "Ke0" }, "kec": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.017, "description": "Light attenuation due to chlorophyll", "title": "Kec" }, "kes": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 0.07, "description": "Light attenuation due to TSS", "title": "Kes" }, "kesalt": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": -0.02, "description": "Light attenuation due to CDOM (related to salinity)", "title": "Kesalt" }, "tss2c": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 6.0, "description": "TSS to carbon ratio", "title": "Tss2C" }, "ilight": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Option for computing light limitation factor. 0: Carl Cerco method (unit: E/m^2)", "title": "Ilight" }, "alpha": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 8.0, 8.0, 8.0 ], "description": "Initial slope of P-I curve (g[C]*m2/g[Chl]/E) for each phytoplankton group", "title": "Alpha" }, "ipr": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Option for phytoplankton predation term. 0: linear formulation, 1: quadratic", "title": "Ipr" }, "prr": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.1, 0.2, 0.05 ], "description": "Predation rate by higher trophic level (day-1 or day-1.g-1.m3) for each phytoplankton group", "title": "Prr" }, "wqc0": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 1.0, 0.5, 0.05, 1.0, 0.5, 0.5, 0.15, 0.15, 0.05, 0.01, 0.05, 0.005, 0.005, 0.01, 0.05, 0.0, 12.0 ], "description": "Initial values for ICM state variables", "title": "Wqc0" }, "wsp": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.3, 0.1, 0.0, 0.25, 0.25, 0.0, 0.25, 0.25, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0, 1.0, 0.0, 0.0 ], "description": "Settling velocity for ICM state variables (m.day-1)", "title": "Wsp" }, "wspn": { "anyOf": [ { "items": {}, "type": "array" }, { "type": "null" } ], "default": [ 0.3, 0.1, 0.0, 0.25, 0.25, 0.0, 0.25, 0.25, 0.0, 0.0, 0.0, 0.25, 0.25, 0.0, 1.0, 0.0, 0.0 ], "description": "Net settling velocity for ICM state variables (m.day-1)", "title": "Wspn" }, "isilica": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Silica model switch. 0: OFF, 1: ON", "title": "Isilica" }, "izb": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Zooplankton dynamics switch. 0: don't use, 1: use zooplankton dynamics", "title": "Izb" }, "iph": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "PH model switch. 0: OFF, 1: ON", "title": "Iph" }, "icbp": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Chesapeake Bay Program Model switch. 0: OFF, 1: ON", "title": "Icbp" }, "isav_icm": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Submerged Aquatic Vegetation switch. 0: OFF, 1: ON", "title": "Isav Icm" }, "iveg_icm": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Intertidal vegetation switch. 0: OFF, 1: ON", "title": "Iveg Icm" }, "ised": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Sediment module switch. 0: OFF, 1: Use sediment flux model", "title": "Ised" }, "iba": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Benthic Algae switch. 0: OFF, 1: ON", "title": "Iba" }, "irad": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Solar radiation option. 0: short wave from sflux, 1: short wave from ICM_rad.th.nc", "title": "Irad" }, "isflux": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Atmospheric fluxes option. 0: OFF, 1: additional nutrient fluxes from ICM_sflux.th.nc", "title": "Isflux" }, "ibflux": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Bottom fluxes option. 0: OFF, 1: additional nutrient fluxes from ICM_bflux.th.nc", "title": "Ibflux" }, "iout_icm": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "ICM station outputs switch. 0: OFF, 1: ON (requires istation.in with *.bp format)", "title": "Iout Icm" }, "nspool_icm": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 24, "description": "Output frequency for ICM station outputs", "title": "Nspool Icm" }, "ilimit": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Option for nutrient limitation on phytoplankton growth. 0: f=min[f(N),f(P)]*f(I), 1: f=min[f(N),f(P),f(I)]", "title": "Ilimit" }, "idry_icm": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Shallow kinetic biochemical process option. 0: jump dry elements, keep last wet value, 1: turn on shallow kinetic biochemical process", "title": "Idry Icm" } }, "title": "Marco", "type": "object" }, "rompy__schism__namelists__param__Core": { "additionalProperties": false, "properties": { "ipre": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Pre-processor flag (1: on; 0: off). Useful for checking grid errors etc. Use 1 core only for compute (plus necessary scribe cores) when enabled. Under scribe I/O, the code (scribe part) will hang but outputs will be available. Job should be manually terminated.", "title": "Ipre" }, "ibc": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 0, "description": "Baroclinic option flag. If set to 0 (baroclinic model), ibtp is not used.", "title": "Ibc" }, "ibtp": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 1, "description": "Barotropic option flag. Only used when ibc is not 0.", "title": "Ibtp" }, "rnday": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 30, "description": "Total run time in days.", "title": "Rnday" }, "dt": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": 100.0, "description": "Time step in seconds.", "title": "Dt" }, "msc2": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 24, "description": "Number of spectral frequencies for WWM grid. Must be the same as msc in .nml for consistency between SCHISM and WWM.", "title": "Msc2" }, "mdc2": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 24, "description": "Number of directional bins for WWM grid. Must be the same as mdc in .nml for consistency between SCHISM and WWM.", "title": "Mdc2" }, "ntracer_gen": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 2, "description": "Number of tracers in user-defined module (USE_GEN).", "title": "Ntracer Gen" }, "ntracer_age": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 4, "description": "Number of tracers for age calculation (USE_AGE). Must be equal to 2*N where N is the number of age tracers.", "title": "Ntracer Age" }, "sed_class": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 5, "description": "Number of sediment classes for SED3D module (USE_SED).", "title": "Sed Class" }, "eco_class": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 27, "description": "Number of ecological variables for EcoSim module (USE_ECO). Must be between 25 and 60, inclusive.", "title": "Eco Class" }, "nspool": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 36, "description": "Output step spool for global output controls.", "title": "Nspool" }, "ihfskip": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 864, "description": "Stack spool for global output controls. Every ihfskip steps will be put into 1_*, 2_*, etc.", "title": "Ihfskip" } }, "title": "Core", "type": "object" }, "rompy__swan__components__cgrid__CURVILINEAR": { "additionalProperties": false, "description": "SWAN curvilinear computational grid.\n\n.. code-block:: text\n\n CGRID CURVILINEAR [mxc] [myc] (EXCEPTION [xexc] [yexc])\n ->CIRCLE|SECTOR [mdc] [flow] [fhigh] [msc]\n READGRID COORDINATES [fac] 'fname' [idla] [nhedf] [nhedvec] &\n FREE|FORMAT ('form'|[idfm])\n\nThis is a group component that includes a `CGRID` and a `READGRID` component.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.cgrid import CURVILINEAR\n cgrid = CURVILINEAR(\n mxc=199,\n myc=199,\n readcoord=dict(fname=\"./coords.txt\"),\n spectrum=dict(mdc=36, flow=0.04, fhigh=1.0),\n )\n print(cgrid.render())", "properties": { "model_type": { "default": "curvilinear", "description": "Model type discriminator", "enum": [ "curvilinear", "CURVILINEAR" ], "title": "Model Type", "type": "string" }, "spectrum": { "$ref": "#/$defs/SPECTRUM", "description": "Spectrum subcomponent" }, "mxc": { "description": "Number of meshes in computational grid in \u03be-direction (this number is one less than the number of grid points in this domain).", "title": "Mxc", "type": "integer" }, "myc": { "description": "Number of meshes in computational grid in \u03b7-direction (this number is one less than the number of grid points in this domain).", "title": "Myc", "type": "integer" }, "xexc": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "the value which the user uses to indicate that a grid point is to be ignored in the computations (this value is provided by the user at the location of the x-coordinate considered in the file of the x-coordinates, see command READGRID COOR).", "title": "Xexc" }, "yexc": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "the value which the user uses to indicate that a grid point is to be ignored in the computations (this value is provided by the user at the location of the y-coordinate considered in the file of the y-coordinates, see command READGRID COOR).", "title": "Yexc" }, "readcoord": { "$ref": "#/$defs/READCOORD", "description": "Grid coordinates reader." } }, "required": [ "spectrum", "mxc", "myc", "readcoord" ], "title": "CURVILINEAR", "type": "object" }, "rompy__swan__components__cgrid__REGULAR": { "additionalProperties": false, "description": "SWAN regular computational grid.\n\n.. code-block:: text\n\n CGRID REGULAR [xpc] [ypc] [alpc] [xlenc] [ylenc] [mxc] [myc] &\n ->CIRCLE|SECTOR [mdc] [flow] [fhigh] [msc]\n\nThis is a group component that includes a `CGRID` and a `READGRID` component.\n\nNote\n----\nIn 1D-mode, `alpc` should be equal to the direction `alpinp`.\n\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.cgrid import REGULAR\n cgrid = REGULAR(\n grid=dict(xp=0, yp=0, alp=0, xlen=2000, ylen=1300, mx=100, my=100),\n spectrum=dict(mdc=36, flow=0.04, fhigh=1.0),\n )\n print(cgrid.render())", "properties": { "model_type": { "default": "regular", "description": "Model type discriminator", "enum": [ "regular", "REGULAR" ], "title": "Model Type", "type": "string" }, "spectrum": { "$ref": "#/$defs/SPECTRUM", "description": "Spectrum subcomponent" }, "grid": { "$ref": "#/$defs/GRIDREGULAR", "description": "Computational grid definition" } }, "required": [ "spectrum", "grid" ], "title": "REGULAR", "type": "object" }, "rompy__swan__components__cgrid__UNSTRUCTURED": { "additionalProperties": false, "description": "SWAN unstructured computational grid.\n\n.. code-block:: text\n\n CGRID UNSTRUCTURED CIRCLE|SECTOR [mdc] [flow] [fhigh] [msc]\n READGRID UNSTRUCTURED [grid_type] ('fname')\n\nThis is a group component that includes a `CGRID` and a `READGRID` component.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.cgrid import UNSTRUCTURED\n cgrid = UNSTRUCTURED(\n grid_type=\"adcirc\",\n spectrum=dict(mdc=36, flow=0.04, fhigh=1.0),\n )\n print(cgrid.render())", "properties": { "model_type": { "const": "unstructured", "default": "unstructured", "description": "Model type discriminator", "title": "Model Type", "type": "string" }, "spectrum": { "$ref": "#/$defs/SPECTRUM", "description": "Spectrum subcomponent" }, "grid_type": { "default": "adcirc", "description": "Unstructured grid type", "enum": [ "adcirc", "triangle", "easymesh" ], "title": "Grid Type", "type": "string" }, "fname": { "anyOf": [ { "maxLength": 36, "type": "string" }, { "type": "null" } ], "default": null, "description": "Name of the file containing the unstructured grid", "title": "Fname" } }, "required": [ "spectrum" ], "title": "UNSTRUCTURED", "type": "object" }, "rompy__swan__components__inpgrid__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" }, "rompy__swan__components__inpgrid__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" }, "rompy__swan__components__inpgrid__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" }, "rompy__swan__components__physics__SETUP": { "additionalProperties": false, "description": "Wave setup.\n\n.. code-block:: text\n\n SETUP [supcor]\n\nIf this command is given, the wave-induced set-up is computed and accounted for in\nthe wave computations (during the computation it is added to the depth that is\nobtained from the `READ BOTTOM` and `READ WLEVEL` commands). This approximation in\nSWAN can only be applied to open coast (unlimited supply of water from outside the\ndomain, e.g. nearshore coasts) in contrast to closed basin, e.g. lakes and\nestuaries, where this option should not be used. Note that set-up is not computed\ncorrectly with spherical coordinates.\n\nNotes\n-----\n\n* The SETUP command cannot be used in case of unstructured grids.\n* Set-up is not supported in case of parallel runs using either MPI or OpenMP.\n\nExamples\n--------\n\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.components.physics import SETUP\n setup = SETUP()\n print(setup.render())\n setup = SETUP(supcor=0.5)\n print(setup.render())", "properties": { "model_type": { "default": "setup", "description": "Model type discriminator", "enum": [ "setup", "SETUP" ], "title": "Model Type", "type": "string" }, "supcor": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "By default the wave-induced set-up is computed with a constant added such that the set-up is zero in the deepest point in the computational grid. The user can modify this constant by the value of `supcor`. The user can thus impose a set-up in any one point (and only one) in the computational grid by first running SWAN, then reading the set-up in that point and adding or subtracting the required value of `supcor` (in m; positive if the set-up has to rise) (SWAN default: 0.0)", "title": "Supcor" } }, "title": "SETUP", "type": "object" }, "rompy__swan__subcomponents__numerics__SETUP": { "additionalProperties": false, "description": "Stop criteria in the computation of wave setup.\n\n.. code-block:: text\n\n SETUP [eps2] [outp] [niter]\n\nControls the stopping criterion and amount of output for the SOR solver in the\ncomputation of the wave-induced set-up.\n\nExamples\n--------\n.. ipython:: python\n :okwarning:\n\n from rompy.swan.subcomponents.numerics import SETUP\n setup = SETUP()\n print(setup.render())\n setup = SETUP(eps2=1e-4, outp=0, niter=20)\n print(setup.render())", "properties": { "model_type": { "default": "setup", "description": "Model type discriminator", "enum": [ "setup", "SETUP" ], "title": "Model Type", "type": "string" }, "eps2": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Relative stopping criterion to terminate the linear solver (SIP or SOR). (SWAN default: 1.e-4 in case of SIP and 1.e-6 in case of SOR)", "title": "Eps2" }, "outp": { "anyOf": [ { "enum": [ 0, 1, 2, 3 ], "type": "integer" }, { "type": "null" } ], "default": null, "description": "Output for the iterative solver:\n\n* 0 = no output\n* 1 = additional information about the iteration process is written to the PRINT file \n* 2 = gives a maximal amount of output concerning the iteration process \n* 3 = summary of the iteration process\n\n(SWAN default: 0)", "title": "Outp" }, "niter": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Maximum number of iterations for the linear solver (SWAN default: 20 in case of SIP and 1000 in case of SOR)", "title": "Niter" } }, "title": "SETUP", "type": "object" } }, "additionalProperties": false }
- Fields:
- field config: BaseConfig | SCHISMConfig | SchismCSIROConfig | SchismCSIROMigrationConfig | SwanConfig | SwanConfigComponents [Optional]#
The configuration object
- field delete_existing: bool = False#
Delete existing output directory
- field output_dir: Path = './simulations'#
The output directory
- field period: TimeRange = TimeRange(start=datetime.datetime(2020, 2, 21, 4, 0), end=datetime.datetime(2020, 2, 24, 4, 0), duration=datetime.timedelta(days=3), interval=datetime.timedelta(seconds=900), include_end=True)#
The time period to run the model
- field run_id: str = 'run_id'#
The run id
- field run_id_subdir: bool = True#
Use run_id subdirectory in the output directory
- model_post_init(context: Any, /) None #
This function is meant to behave like a BaseModel method to initialise private attributes.
It takes context as an argument since that’s what pydantic-core passes when calling it.
- Parameters:
self – The BaseModel instance.
context – The context.
- zip() str [source]#
Zip the input files for the model run
This function zips the input files for the model run and returns the name of the zip file. It also cleans up the staging directory leaving only the settings.json file that can be used to repoducte the run.
- Returns:
zip_fn
- Return type:
str
- property staging_dir#
The directory where the model is staged for execution
- Returns:
staging_dir
- Return type:
str