Please find on this page a proposal for netCDf output from the spectral wave model SWAN.
Elements from the SWAN input file are refered to by INPUT*, elements from the SWAN Fortran code swanmain.for are referred to by OV*IVTYPE.
CDL
// A working draft proposal for CF compliance for netCDF output for SWAN NetCDF SWAN.nc { // proposal for CF and SWAN meta data in SWAN dimensions: time = 1; // also put time in for single times mx = 2; // (mxc+1) for 2D grids my = 3; // (myc+1) for 2D grids md = 4; // (mdc+1) directions ms = 5; // (msc+1) frequencies loc = 6; // for 1D grids, for UNSTRUC and for squeezed [mx by my] grids variables: // dimensions consistent with ncBrowse, not with native MATLAB netcdf package. // ----------------- COORDINATES ----------------- // Options: // * like SWAN use same variable for CARTESIAN and SPHERICAL, but change attributes // * use different variables for CARTESIAN and SPHERICAL, but change attributes // if INPUT.CGRID.REGular double mx(mx), shape = [2] mx(mx):swan_xpc = // INPUT value: optional for input, implemented in output mx(mx):swan_xlenc = // INPUT value: optional for input, implemented in output mx(mx):swan_alpc = // INPUT value: optional for input, implemented in output mx(mx):swan_comment = "mxc+1" mx(mx):_FillValue = // INPUT.CGRID.xexc or OVEXCV{IVTYPE} mx:actual_range = [~ ~] // if INPUT.CGRID.CARTESIAN mx:standard_name = "projected_x_coordinate" mx:units = "m" mx(mx):grid_mapping = "projected_coordinate_system" // elseif INPUT.CGRID.SPHERICAL mx:standard_name = "longitude" mx:units = "degrees_east" mx(mx):grid_mapping = "wgs84" // end ... double my(my), shape = [3] my(my):swan_ypc = // INPUT value: optional for input, implemented in output my(my):swan_ylenc = // INPUT value: optional for input, implemented in output my(my):swan_alpc = // INPUT value: optional for input, implemented in output my(my):swan_comment = "myc+1" my(my):_FillValue = // INPUT.CGRID.yexc or OVEXCV{IVTYPE} my:actual_range = [~ ~] // if INPUT.CGRID.CARTESIAN my:standard_name = "projected_y_coordinate" my:units = "m" my(my):grid_mapping = "projected_coordinate_system" // elseif INPUT.CGRID.SPHERICAL my:standard_name = "latitude" my:units = "degrees_north" my(my):grid_mapping = "wgs84" // end ... // - - - - - - - - - - - - - - - - - - - - - - - - - - - // elseif INPUT.CGRID.CURVilinear double XP(mx,my), shape = [2] // idem ... double YP(mx,my), shape = [3] // idem ... // - - - - - - - - - - - - - - - - - - - - - - - - - - - // elseif INPUT.CGRID.UNSTRUCtured double XP(loc), shape = [6] // idem ... double YP(loc), shape = [6] // idem ... // end // ----------------- DIRECTIONS ----------------- double CDIR(), shape = [4] CDIR:standard_name = "" CDIR:units = "degrees_true" CDIR:long_name = "spectral Cartesian direction" CDIR.dir1 = // INPUT value: optional for input, implemented in output CDIR.dir2 = // INPUT value: optional for input, implemented in output CDIR:swan_comment = "mdc+1" ... double NDIR(), shape = [4] NDIR:standard_name = "" NDIR:units = "degrees_true" CDIR:long_name = "spectral nautical direction" NDIR.dir1 = // INPUT value: optional for input, implemented in output NDIR.dir2 = // INPUT value: optional for input, implemented in output NDIR:swan_comment = "mdc+1" ... // ----------------- FREQUENCY ----------------- double AFREQ(), shape = [5] AFREQ:standard_name = "" AFREQ:long_name = "absolute frequencies" AFREQ:units = "degrees_true" AFREQ.swan_flow = // INPUT value: optional for input, implemented in output AFREQ.swan_fhigh = // INPUT value: optional for input, implemented in output AFREQ:swan_comment = "msc+1" ... double NFREQ(), shape = [5] NFREQ:standard_name = "" NFREQ:long_name = "relative frequencies" NFREQ:units = "degrees_true" NFREQ.swan_flow = // INPUT value: optional for input, implemented in output NFREQ.swan_fhigh = // INPUT value: optional for input, implemented in output NFREQ:swan_comment = "msc+1" ... // ----------------- COORDINATE SYSTEMS ----------------- // The projected_coordinate_system information could optionally be added to // either SWAN input or in a post-processing step. // if INPUT.CGRID.CARTESIAN // int32 projected_coordinate_system([]), shape = [1] // epsg:name = "Amersfoort / RD New" // epsg:epsg = 28992 // epsg:epsg_name = "Oblique Stereographic" // epsg:grid_mapping_name = " " // epsg:semi_major_axis = 6.3774e+006 // epsg:semi_minor_axis = 6.35608e+006 // epsg:inverse_flattening = 299.153 // epsg:latitude_of_projection_origin = 52.0922 // epsg:longitude_of_projection_origin = 5.23155 // epsg:false_easting = 155000 // epsg:false_northing = 463000 // epsg:scale_factor_at_projection_origin = 0.999908 // // optional PROJ4 REQUIRED FOR ADAGUC.KNMI.NL // epsg:proj4_params = "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.999908 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +towgs84=565.4174,50.3319,465.5542,-0.398957388243134,0.343987817378283,-1.87740163998045,4.0725 +no_defs" // epsg:EPSG_code = "EPSG:28992" // epsg:projection_name = "Dutch rijksdriekhoek system" // - - - - - - - - - - - - - - - - - - - - - - - - - - - // elseif INPUT.CGRID.SPHERICAL // The (lat,lon) coordinates information could be hard-coded into SWAN // with each of the options: CCM, QC or REPEATING int32 wgs84([]), shape = [1] wgs84:name = "WGS 84" wgs84:epsg = 4326 wgs84:grid_mapping_name = "latitude_longitude" wgs84:semi_major_axis = 6.37814e+006 wgs84:semi_minor_axis = 6.35675e+006 wgs84:inverse_flattening = 298.257 // optional PROJ4 REQUIRED FOR ADAGUC.KNMI.NL wgs84:proj4_params = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs " wgs84:EPSG_code = "EPSG:4326" wgs84:projection_name = "Latitude Longitude" wgs84:wkt = "GEOGCS["WGS 84", // end // ----------------- PRIMARY VARIABLES ----------------- single VaDens(), shape = [~ ~] VaDens:swan_code = // OVKEYW{IVTYPE} = 'VaDens'; VaDens:swan_name = // OVSNAM{IVTYPE} = 'VaDens'; VaDens:long_name = // OVLNAM{IVTYPE} = 'spectral variance density'; VaDens:swan_units = // OVUNIT{IVTYPE} = 'm2/Hz'; VaDens:valid_range(1) = // OVLEXP{IVTYPE} = 0.; VaDens:valid_range(2) = // OVHEXP{IVTYPE} = 100.; VaDens:_FillValue = // OVEXCV{IVTYPE} = -99.; // - - - - - - - - - - - - - - - - - - - - - - - - - - - VaDens:units = // OVCFUD{IVTYPE} = ''; NEW TABLE NEEDED INSIDE SWAN VaDens:standard_name = // OVCFSN{IVTYPE} = ''; NEW TABLE NEEDED INSIDE SWAN // these do not need to be mapped // OVSVTY{IVTYPE} = 5; // means vector, scalar etc. // these do not need to be mapped // OVLLIM{IVTYPE} = 0.; // print width for ascii output // these do not need to be mapped // OVULIM{IVTYPE} = 1000.; // print width for ascii output // - - - - - - - - - - - - - - - - - - - - - - - - - - - VaDens:actual_range = [~ ~] // add optionally as extra service to user VaDens:coordinates = "XP YP" // // if INPUT.CGRID.CARTESIAN VaDens():grid_mapping = "projected_coordinate_system" // elseif INPUT.CGRID.SPHERICAL VaDens():grid_mapping = "wgs84" // end // ----------------- GLOBAL META_DATA ----------------- //global Attributes: :title = "INPUT.PROJECT.name,INPUT.PROJECT.nr" :institution = "" :source = "" :history = "Data produced by SWAN version 40.72AB" :references = "" :email = "" :comment = "INPUT.PROJECT.title1,INPUT.PROJECT.title2,INPUT.PROJECT.title3" :version = "" :Conventions = "CF-1.5" :CF:featureType = "Grid" :terms_for_use = "These data can be used freely for research purposes provided that the following source is acknowledged: institution" :disclaimer = "This data is made available in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." }
Standard names
OVKEYW |
OVSNAM |
OVLNAM |
OVUNIT |
OVSVTY |
OVLLIM |
OVULIM |
OVLEXP |
OVHEXP |
OVEXCV |
OVEXCV |
---|---|---|---|---|---|---|---|---|---|---|
XP |
||||||||||
YP |
||||||||||
DIST |
||||||||||
DEP |
||||||||||
VEL |
||||||||||
UBOT |
||||||||||
DISS |
||||||||||
QB |
||||||||||
LEA |
||||||||||
HS |
||||||||||
TM01 |
||||||||||
RTP |
||||||||||
DIR |
||||||||||
PDI |
||||||||||
TDI |
||||||||||
DSPR |
||||||||||
WLEN |
||||||||||
STEE |
||||||||||
TRA |
||||||||||
FOR |
||||||||||
AAAA |
||||||||||
EEEE |
||||||||||
AAAA |
||||||||||
XC |
||||||||||
YC |
||||||||||
WIND |
||||||||||
FRC |
||||||||||
RTM01 |
||||||||||
EEEE |
||||||||||
DHS |
||||||||||
DRTM01 |
||||||||||
TM02 |
||||||||||
FSPR |
||||||||||
URMS |
||||||||||
UFRI |
||||||||||
ZLEN |
||||||||||
TAUW |
||||||||||
CDRAG |
||||||||||
SETUP |
||||||||||
TIME |
||||||||||
TSEC |
||||||||||
PER |
||||||||||
RPER |
||||||||||
HSWE |
||||||||||
URSELL |
||||||||||
ASTD |
||||||||||
TMM10 |
||||||||||
RTMM10 |
||||||||||
DIFPAR |
||||||||||
TMBOT |
||||||||||
WATL |
||||||||||
BOTL |
||||||||||
TPS |
||||||||||
DISB |
||||||||||
DISSU |
||||||||||
DISW |
||||||||||
DISM |
||||||||||
WLENMR |
||||||||||
KI |
||||||||||
MUDL |
||||||||||
VaDens |
||||||||||
Swind |
||||||||||
Swcap |
||||||||||
Sfric |
||||||||||
Smud |
||||||||||
Ssurf |
||||||||||
Snl3 |
||||||||||
Snl4 |
||||||||||
KIMAG |
||||||||||
KREAL |