Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
Please find on this page a *proposal* for netCDF output from the spectral wave model [SWAN|http://swan.tudelft.nl].
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.
Please provide feed-back or comments.

{toc}

h3. SWAN netCDF-CF CDL scheme 

{code}
// 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."
}
{code}

h3. Mapping of SWAN names to CF standard names 

For the complete list where we have to get names from, or have them added to is: [http://cf-pcmdi.llnl.gov/documents/cf-standard-names/]
This table is under construction, please fill in any missing UD units or CF standard names.

|| OVKEYW || OVSNAM || OVLNAM                        || OVUNIT || OVLLIM    || OVULIM   ||    OVEXCV || new: OVCFUD (UD units)||new: OVCFSN (standard name)||
|XP    |Xp       |X user coordinate                        |UL   |-10000000000|10000000000|-10000000000| m| projection_x_coordinate,longitude|
|YP    |Yp       |Y user coordinate                        |UL   |-10000000000|10000000000|-10000000000| m| projection_y_coordinate,latitude|
|DIST  |Dist     |distance along output curve              |UL   |           0|10000000000|         -99| | |
|DEP   |Depth    |Depth                                    |UH   |        -100|        100|         -99| | sea_floor_depth_below_sea_level|
|VEL   |Vel      |Current velocity                         |UV   |          -2|          2|           0| | sea_water_x_velocity + sea_water_y_velocity alias: x_sea_water_velocity + y_sea_water_velocity|
|UBOT  |Ubot     |Orbital velocity at the bottom           |UV   |           0|          1|         -10| | |
|DISS  |Dissip   |Energy dissipation                       |(in W/m2 or m2/s, depending on command INPUT.SET)|           0|        0.1|          -9| | |
|QB    |Qb       |Fraction breaking waves                  |     |           0|          1|          -1| | |
|LEA   |Leak     |Energy leak over spectral boundaries     |m2/s |           0|        100|          -9| | |
|HS    |Hsig     |Significant wave height                  |UH   |           0|         10|          -9| m| sea_surface_wave_significant_height alias: significant_height_of_wind_and_swell_waves, sea_surface_wind_wave_significant_height, alias: significant_height_of_wind_waves|
|TM01  |Tm01     |Average absolute wave period             |UT   |           0|        100|          -9| |  sea_surface_wave_mean_period_from_variance_spectral_density_first_frequency_moment,    sea_surface_wind_wave_mean_period_from_variance_spectral_density_first_frequency_moment|
|RTP   |RTpeak   |Relative peak period                     |UT   |           0|        100|          -9| | |
|DIR   |Dir      |Average wave direction                   | UDI |           0|        360|        -999| degrees_true if nautical| sea_surface_wave_from_direction|
|PDI   |PkDir    |direction of the peak of the spectrum    | UDI |           0|        360|        -999| | |
|TDI   |TDir     |direction of the energy transport        | UDI |           0|        360|        -999| | |
|DSPR  |Dspr     |directional spreading                    | UDI |           0|         60|          -9| | |
|WLEN  |Wlen     |Average wave length                      |UL   |           0|        200|          -9| | |
|STEE  |Steepn   |Wave steepness                           |     |           0|        0.1|          -9| | |
|TRA   |Transp   |Wave energy transport                    |m3/s |         -10|         10|           0| | |
|FOR   |WForce   |Wave driven force per unit surface       |UF   |         -10|         10|           0| | |
|AAAA  |AcDens   |spectral action density                  |m2s  |           0|        100|         -99| | |
|EEEE  |EnDens   |spectral energy density                  |m2   |           0|        100|         -99| | |
|AAAA  |Aux      |auxiliary variable                       |     |-10000000000|10000000000|-10000000000| | |
|XC    |Xc       |X computational grid coordinate          |     |           0|        100|          -9| m| projection_x_coordinate,longitude|
|YC    |Yc       |Y computational grid coordinate          |     |           0|        100|          -9| m| projection_y_coordinate,latitude|
|WIND  |Windv    |Wind velocity at 10 m above sea level    |UV   |         -50|         50|           0| m| wind_speed|
|FRC   |FrCoef   |Bottom friction coefficient              |     |           0|          1|          -9| | |
|RTM01 |RTm01    |Average relative wave period             |UT   |           0|        100|          -9| | |
|EEEE  |EnDens   |energy density integrated over direction |m2   |           0|        100|         -99| | |
|DHS   |dHs      |difference in Hs between iterations      |UH   |           0|          1|          -9| | |
|DRTM01|dTm      |difference in Tm between iterations      |UT   |           0|          2|          -9| | |
|TM02  |Tm02     |Zero-crossing period                     |UT   |           0|        100|          -9| s| sea_surface_wave_zero_upcrossing_period, sea_surface_wind_wave_zero_upcrossing_period, sea_surface_wave_mean_period_from_variance_spectral_density_second_frequency_moment, sea_surface_wind_wave_mean_period_from_variance_spectral_density_second_frequency_moment|
|FSPR  |FSpr     |Frequency spectral width {Kappa}         |     |           0|          1|          -9| | |
|URMS  |Urms     |RMS of orbital velocity at the bottom    |UV   |           0|          1|          -9| | |
|UFRI  |Ufric    |Friction velocity                        |UV   |           0|          1|          -9| | |
|ZLEN  |Zlen     |Zero velocity thickness of boundary layer|UL   |           0|          1|          -9| | |
|TAUW  |TauW     |                                         |     |           0|          1|          -9| | |
|CDRAG |Cdrag    |Drag coefficient                         |     |           0|          1|          -9| | |
|SETUP |Setup    |Setup due to waves                       |m    |          -1|          1|          -9| | |
|TIME  |Time     |Date-time                                |     |           0|          1|      -99999| | |
|TSEC  |Tsec     |Time in seconds from reference time      |s    |     -100000|    1000000|      -99999| | time|
|PER   |Period   |Average absolute wave period             |UT   |           0|        100|          -9| | sea_surface_wind_wave_period, alias: wind_wave_period|
|RPER  |RPeriod  |Average relative wave period             |UT   |           0|        100|          -9| | |
|HSWE  |Hswell   |Wave height of swell part                |UH   |           0|         10|          -9| |  sea_surface_swell_wave_significant_height alias: significant_height_of_swell_waves| sea_surface_swell_wave_period, alias: swell_wave_period
|URSELL|Ursell   |Ursell number                            |     |           0|          1|          -9| | |
|ASTD  |ASTD     |Air-Sea temperature difference           |K    |         -10|         10|         -99| | |
|TMM10 |Tm_10    |Average absolute wave period             |UT   |           0|        100|          -9| | sea_surface_wave_mean_period_from_variance_spectral_density_inverse_frequency_moment, sea_surface_wind_wave_mean_period_from_variance_spectral_density_inverse_frequency_moment|
|RTMM10|RTm_10   |Average relative wave period             |UT   |           0|        100|          -9| | |
|DIFPAR|DifPar   |Diffraction parameter                    |     |         -10|         10|         -99| | |
|TMBOT |TmBot    |Bottom wave period                       |UT   |           0|        100|          -9| | |
|WATL  |Watlev   |Water level                              |UH   |        -100|        100|         -99| | |
|BOTL  |Botlev   |Bottom level                             |UH   |        -100|        100|         -99| | |
|TPS   |TPsmoo   |Relative peak period {smooth}            |UT   |           0|        100|          -9| | |
|DISB  |Disbot   |Bottom friction dissipation              |(in W/m2 or m2/s, depending on command INPUT.SET)|           0|        0.1|          -9| | |
|DISSU |Dissrf   |Wave breaking dissipation                |(in W/m2 or m2/s, depending on command INPUT.SET)|           0|        0.1|          -9| | |
|DISW  |Diswcp   |Whitecapping dissipation                 |(in W/m2 or m2/s, depending on command INPUT.SET)|           0|        0.1|          -9| | |
|DISM  |Dismud   |Fluid mud dissipation                    |(in W/m2 or m2/s, depending on command INPUT.SET)|           0|        0.1|          -9| | |
|WLENMR|Wlenmr   |Average wave length with mud real part   |UL   |           0|        200|          -9| | |
|KI    |ki       |Average wave number with mud imag part   |rad/m|           0|          1|          -9| | |
|MUDL  |Mudlayer |Mudlayer thickness                       |UH   |           0|        100|         -99| | |
|VaDens|VaDens   |spectral variance density                |m2/Hz|           0|        100|         -99| m2 s|     sea_surface_wave_variance_spectral_density| integrated in sp1
|VaDens|VaDens   |spectral variance density                |m2/Hz/degr|           0|        100|         -99| m2 s degr-1| sea_surface_wave_directional_variance_spectral_density| per directional bin in sp2
|Swind |Swind    |wind source term                         |m2   |           0|        100|         -99| | |
|Swcap |Swcap    |whitecapping dissipation                 |m2   |           0|        100|         -99| | |
|Sfric |Sfric    |bottom friction dissipation              |m2   |           0|        100|         -99| | |
|Smud  |Smud     |fluid mud dissipation                    |m2   |           0|        100|         -99| | |
|Ssurf |Ssurf    |surf breaking dissipation                |m2   |           0|        100|         -99| | |
|Snl3  |Snl3     |triad interactions                       |m2   |           0|        100|         -99| | |
|Snl4  |Snl4     |quadruplet interactions                  |m2   |           0|        100|         -99| | |
|KIMAG |KIMAG    |Wave number with mud imag part           |rad/m|         NaN|        NaN|         NaN| | |
|KREAL |KREAL    |Wave number with mud real part           |rad/m|         NaN|        NaN|         NaN| | |
|NDIR  |         |                                         |     |            |           |            | s-1| wave_frequency, sea_surface_wave_frequency|
|CDIR  |         |                                         |     |            |           |            | s-1| wave_frequency, sea_surface_wave_frequency|
|AFREQ |         |                                         |     |            |           |            | s-1| wave_frequency, sea_surface_wave_frequency|
|RFREQ |         |                                         |     |            |           |            | s-1| wave_frequency, sea_surface_wave_frequency|
|QP    |         | peakedness of the wave spectrum (dimensionless).| |        |           |            |    | |
|BFI   |         | Benjamin-Feir index (dimensionless).    |     |            |           |            |    | |
|PROPA |PROPAgat |sum of PROPXY, PROPTHETA and PROPSIGMA                                  |(in W/m2 or m2/s, depending on command INPUT.SET).| | | | | | | |
|PROPX |PROPXy   |energy propagation in geographic space; sum of x- and y-direction, terms|(in W/m2 or m2/s, depending on command INPUT.SET).| | | | | | | |
|PROPT |PROPTheta|energy propagation in theta space                                       |(in W/m2 or m2/s, depending on command INPUT.SET).| | | | | | | |
|PROPS |PROPSigma|energy propagation in sigma space                                       |(in W/m2 or m2/s, depending on command INPUT.SET).| | | | | | | |
|GENE  |GENErat  |total energy generation                                                 |(in W/m2 or m2/s, depending on command INPUT.SET).| | | | | | | |
|GENW  |GENWind  |energy generation due to wind                                           |(in W/m2 or m2/s, depending on command INPUT.SET).| | | | | | | |
|REDI  |REDIst   |total energy redistribution                                             |(in W/m2 or m2/s, depending on command INPUT.SET).| | | | | | | |
|REDQ  |REDQuad  |energy redistribution due to quadruplets                                |(in W/m2 or m2/s, depending on command INPUT.SET).| | | | | | | |
|REDT  |REDTriad |energy redistribution due to triads                                     |(in W/m2 or m2/s, depending on command INPUT.SET).| | | | | | | |
|RADS  |RADStr   |energy transfer between waves and currents due to radiation stress      |(in W/m2 or m2/s, depending on command INPUT.SET).| | | | | | | |

This table was generated with the Matlab code

{code}
[D,D0] = swan_quantity % part of Openearth.eu[addrowcol(char(D0.OVKEYW),0,[-1 1],'|') char(D0.OVSNAM) addrowcol(char(D0.OVLNAM),0,[-1 1],'|') char(D0.OVUNIT) addrowcol(num2str(cell2mat(D0.OVLEXP')),0,[-1 1],'|') addrowcol(num2str(cell2mat(D0.OVHEXP')),0,[1],'|') addrowcol(num2str(cell2mat(D0.OVEXCV')),0,[1],'| | |')]
{code}

using