Data Structures@author caronList VertTimeCoord double[] values
List TimeCoord double[] offsetHour
List RunSeq List Run - runHour dependent TimeCoord double hour TimeCoord
List Grid String name VertTimeCoord - time dependent vertical coordinate VertCoord TimeCoord (optional)
Abstractly, the data is a table: Run Grid TimeCoord VertCoord Run Grid TimeCoord VertCoord Run Grid TimeCoord VertCoord ...
We will use the notation ({} means list) {Run, Grid, TimeCoord, VertCoord}
The simplest case would be if all runs have the same grids, which all use the same time coord, and each grid always uses the same vert coord : (1) {runTime} X {Grid, VertCoord} X TimeCoord (X means product)
The usual case is that there are multiple TimeCoords, but a grid always uses the same one: (2) {runTime} X {Grid, VertCoord, TimeCoord}
Since all runTimes are the same, the definition only need be: (2d) {Grid, VertCoord, TimeCoord}
Another case is that different run hours use different TimeCoords. We will call this a RunSeq, and we associate with each RunSeq the list of grids that use it: Run = runHour, TimeCoord RunSeq = {runHour, TimeCoord} X {Grid, VertCoord}
Different grids use different RunSeqs, so we have a list of RunSeq: (3d) {{runHour, TimeCoord} X {Grid, VertCoord}}
We can recast (2d), when all runHours are the same, as: (2d') {TimeCoord X {Grid, VertCoord}} which means that we are grouping grids by unique TimeCoord. (1d) would be the case where there is only one in the list.
Another case is when the VertCoord depends on the TimeCoord, but all run hours are the same: (4d) {TimeCoord X {Grid, VertCoord(TimeCoord)}}
Which lead us to generalize a VertCoord to a time-dependent one, called VertTimeCoord.
The most general case is then {{runHour, TimeCoord} X {Grid, VertTimeCoord}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|