Output NetCDF template
An updated output template is shown below (as of Sep. 6, 2012).
The difference with the previous version is a more standard set of dimensions
for lat, lon and time and the addition
of attributes for lev (in order to facilitate post-processing using standard NetCDF
software). If you have already written the results using the
previous template
and do not wish to rewrite your results,
just let us know and we will do the transform ourselves.
netcdf ISBA_Oueme_L_2007 {
dimensions:
lat = 25 ;
lon = 28 ;
time = UNLIMITED ; // (17520 currently)
lev = 3 ;
variables:
double lat(lat) ;
lat:long_name = "latitude" ;
lat:units = "degrees_north" ;
double lon(lon) ;
lon:long_name = "longitude" ;
lon:units = "degrees_east" ;
int lev(lev) ;
lev:long_name = "level" ;
lev:positive = "down" ;
lev:units = "level" ;
double time(time) ;
time:units = "seconds since 2005-01-01 00:00:00" ;
float SoilThick(lev, lat, lon) ;
SoilThick:units = "m" ;
SoilThick:long_name = "soil layer thicknesses" ;
SoilThick:missing_value = 1.e+20f ;
float RootDist(lev, lat, lon) ;
RootDist:units = "-" ;
RootDist:long_name = "cumulative root fraction" ;
RootDist:missing_value = 1.e+20f ;
float SoilSat(lev, lat, lon) ;
SoilSat:units = "m^3/m^3" ;
SoilSat:long_name = "soil porosity" ;
SoilSat:missing_value = 1.e+20f ;
float SoilWilt(lev, lat, lon) ;
SoilWilt:units = "m^3/m^3" ;
SoilWilt:long_name = "soil wilting point" ;
SoilWilt:missing_value = 1.e+20f ;
float SoilFC(lev, lat, lon) ;
SoilFC:units = "m^3/m^3" ;
SoilFC:long_name = "soil field capacity" ;
SoilFC:missing_value = 1.e+20f ;
float Rainf(time, lat, lon) ;
Rainf:units = "kg/m^2/s" ;
Rainf:long_name = "Rainfall rate" ;
Rainf:missing_value = 1.e+20f ;
Rainf:time_representation = "average over past output interval" ;
float SWdown(time, lat, lon) ;
SWdown:units = "W/m^2" ;
SWdown:long_name = "Total downwelling shortwave radiation" ;
SWdown:missing_value = 1.e+20f ;
SWdown:time_representation = "average over past output interval" ;
float LWdown(time, lat, lon) ;
LWdown:units = "W/m^2" ;
LWdown:long_name = "Total downwelling longwave radiation" ;
LWdown:missing_value = 1.e+20f ;
LWdown:time_representation = "average over past output interval" ;
float SWnet(time, lat, lon) ;
SWnet:units = "W/m^2" ;
SWnet:long_name = "Net shortwave radiation" ;
SWnet:missing_value = 1.e+20f ;
float LWnet(time, lat, lon) ;
LWnet:units = "W/m^2" ;
LWnet:long_name = "Net longwave radiation" ;
LWnet:missing_value = 1.e+20f ;
float SWnetVeg(time, lat, lon) ;
SWnetVeg:units = "W/m^2" ;
SWnetVeg:long_name = "Net shortwave radiation of vegetation canopy" ;
SWnetVeg:missing_value = 1.e+20f ;
float LWnetVeg(time, lat, lon) ;
LWnetVeg:units = "W/m^2" ;
LWnetVeg:long_name = "Net longwave radiation of vegetation canopy" ;
LWnetVeg:missing_value = 1.e+20f ;
float RadT(time, lat, lon) ;
RadT:units = "K" ;
RadT:long_name = "Total Surface radiative temperature" ;
RadT:missing_value = 1.e+20f ;
float Qle(time, lat, lon) ;
Qle:units = "W/m^2" ;
Qle:long_name = "Average latent heat flux" ;
Qle:missing_value = 1.e+20f ;
float Qh(time, lat, lon) ;
Qh:units = "W/m^2" ;
Qh:long_name = "Average sensible heat flux" ;
Qh:missing_value = 1.e+20f ;
float QleVeg(time, lat, lon) ;
QleVeg:units = "W/m^2" ;
QleVeg:long_name = "Average latent heat flux from vegetation" ;
QleVeg:missing_value = 1.e+20f ;
float QhVeg(time, lat, lon) ;
QhVeg:units = "W/m^2" ;
QhVeg:long_name = "Average sensible heat flux from vegetation" ;
QhVeg:missing_value = 1.e+20f ;
float Qg(time, lat, lon) ;
Qg:units = "W/m^2" ;
Qg:long_name = "Average soil heat flux" ;
Qg:missing_value = 1.e+20f ;
float DelSoilHeat(time, lat, lon) ;
DelSoilHeat:units = "J/m^2" ;
DelSoilHeat:long_name = "Average soil heat content change" ;
DelSoilHeat:missing_value = 1.e+20f ;
float DelPond(time, lat, lon) ;
DelPond:units = "kg/m^2" ;
DelPond:long_name = "Ponded surface water storage change" ;
DelPond:missing_value = 1.e+20f ;
DelPond:time_representation = "change over past output interval" ;
float DelIntercept(time, lat, lon) ;
DelIntercept:units = "kg/m^2" ;
DelIntercept:long_name = "Vegetation Interception storage change" ;
DelIntercept:missing_value = 1.e+20f ;
DelIntercept:time_representation = "change over past output interval" ;
float Qs(time, lat, lon) ;
Qs:units = "kg/m^2/s" ;
Qs:long_name = "Surface runoff" ;
Qs:missing_value = 1.e+20f ;
Qs:time_representation = "average over past output interval" ;
float Qsb(time, lat, lon) ;
Qsb:units = "kg/m^2/s" ;
Qsb:long_name = "Subsurface runoff" ;
Qsb:missing_value = 1.e+20f ;
Qsb:time_representation = "average over past output interval" ;
float Qrec(time, lat, lon) ;
Qrec:units = "kg/m^2/s" ;
Qrec:long_name = "Recharge from river to the flood plain" ;
Qrec:missing_value = 1.e+20f ;
Qrec:time_representation = "average over past output interval" ;
float WaterTableD(time, lat, lon) ;
WaterTableD:units = "m" ;
WaterTableD:long_name = "Depth of the water table (LSM)" ;
WaterTableD:missing_value = 1.e+20f ;
float BaresoilT(time, lat, lon) ;
BaresoilT:units = "K" ;
BaresoilT:long_name = "Temperature for bare soil" ;
BaresoilT:missing_value = 1.e+20f ;
float VegT(time, lat, lon) ;
VegT:units = "K" ;
VegT:long_name = "Vegetation temperature" ;
VegT:missing_value = 1.e+20f ;
float CanopInt(time, lat, lon) ;
CanopInt:units = "kg/m^2" ;
CanopInt:long_name = "Canopy interception depth" ;
CanopInt:missing_value = 1.e+20f ;
float ECanop(time, lat, lon) ;
ECanop:units = "kg/m^2/s" ;
ECanop:long_name = "Interception evaporation" ;
ECanop:missing_value = 1.e+20f ;
ECanop:time_representation = "average over past output interval" ;
float EPondInt(time, lat, lon) ;
EPondInt:units = "kg/m^2/s" ;
EPondInt:long_name = "Interception evaporation from ponded surface water" ;
EPondInt:missing_value = 1.e+20f ;
EPondInt:time_representation = "average over past output interval" ;
float TVeg(time, lat, lon) ;
TVeg:units = "kg/m^2/s" ;
TVeg:long_name = "Vegetation transpiration" ;
TVeg:missing_value = 1.e+20f ;
TVeg:time_representation = "average over past output interval" ;
float ESoil(time, lat, lon) ;
ESoil:units = "kg/m^2/s" ;
ESoil:long_name = "Bare soil evaporation" ;
ESoil:missing_value = 1.e+20f ;
ESoil:time_representation = "average over past output interval" ;
float GPP(time, lat, lon) ;
GPP:units = "kg/m^2/s" ;
GPP:long_name = "Gross Primary Production" ;
GPP:missing_value = 1.e+20f ;
GPP:time_representation = "average over past output interval" ;
float NPP(time, lat, lon) ;
NPP:units = "kg/m^2/s" ;
NPP:long_name = "Net Primary Production" ;
NPP:missing_value = 1.e+20f ;
NPP:time_representation = "average over past output interval" ;
float NEE(time, lat, lon) ;
NEE:units = "kg/m^2/s" ;
NEE:long_name = "Net Ecosystem Exchange" ;
NEE:missing_value = 1.e+20f ;
NEE:time_representation = "average over past output interval" ;
float AutoResp(time, lat, lon) ;
AutoResp:units = "kg/m^2/s" ;
AutoResp:long_name = "Autotrophic Respiration" ;
AutoResp:missing_value = 1.e+20f ;
AutoResp:time_representation = "average over past output interval" ;
float HeteroResp(time, lat, lon) ;
HeteroResp:units = "kg/m^2/s" ;
HeteroResp:long_name = "Heterotrophic Respiration" ;
HeteroResp:missing_value = 1.e+20f ;
HeteroResp:time_representation = "average over past output interval" ;
float TotSoilCarb(time, lat, lon) ;
TotSoilCarb:units = "kg/m^2/s" ;
TotSoilCarb:long_name = "Total Soil Carbon" ;
TotSoilCarb:missing_value = 1.e+20f ;
float TotLivBiom(time, lat, lon) ;
TotLivBiom:units = "kg/m^2/s" ;
TotLivBiom:long_name = "Total Living Biomass" ;
TotLivBiom:missing_value = 1.e+20f ;
float LAI(time, lat, lon) ;
LAI:units = "m^2/m^2" ;
LAI:long_name = "Leaf Area Index" ;
LAI:missing_value = 1.e+20f ;
float SoilTemp(time, lev, lat, lon) ;
SoilTemp:units = "K" ;
SoilTemp:long_name = "soil temperature" ;
SoilTemp:missing_value = 1.e+20f ;
float SoilMoist(time, lev, lat, lon) ;
SoilMoist:units = "kg/m^2" ;
SoilMoist:long_name = "soil moisture content per layer" ;
SoilMoist:missing_value = 1.e+20f ;
float DelSoilMoist(time, lat, lon) ;
DelSoilMoist:units = "Kg/m^2" ;
DelSoilMoist:long_name = "total soil moisture content change" ;
DelSoilMoist:missing_value = 1.e+20f ;
// global attributes:
:modelID = "ISBA" ;
:versionID = "SURFEX7.2" ;
:SurfSgn_convention = "Mathematical" ;
:history = "Draft 2" ;
}
Output: Average or instantaneous
Estimate of Output File Sizes
The sample NetCDF template is used here
to give an approximate estimate of output file sizes for the mantatory
mesoscale experiments (in 32-bit binary,
which would correspond to an approximate minimum NetCDF filesize)
for 1 year assuming a 30 minute timestep output
and 5 soil layers. The actual outputs may vary depending on the version of NetCDF
(since more recent versions offer compression options)
and if gzip or some other compression is used.
The output filesize for a single 366 day year assuming a DT=1800 s for Niger
is approximately 2.2 gigabytes per file per year. So for the Niger mesoscale site,
the mandatory experiments
total 4 years x 2 Experiments so we have approximately 17.8 gigabytes
(note, this is a slight overestimate since 3 of 4 years have 365
days). Using the same model,
the 8 mandatory runs for Benin total approximately 15 gigabytes
and the 8 mandatory runs for Mali total approximately 4.2 gigabytes.
Thus, the grand total for the mandatory runs for the 3 sites for all years
is approximately 37 gigabytes (in single precision binary).
And again, the file sizes will be less if a model reports fewer variables or has
less than 5 soil layers etc.
The output filesize estimates for the local scale simulations is not given here
as they will be much smaller. However, the same NetCDF template is to be used
but with no horizontal spatial dimension.
Output Server