You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

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

  • No labels