How to convert raw echam5 grib files to clm4 conformal int2clm pre-processable Netcdf files




Yüklə 102.38 Kb.
tarix28.02.2016
ölçüsü102.38 Kb.

How to convert raw ECHAM5 GRIB files to CLM4 conformal int2clm pre-processable NetCDF files


a user manual by

Andreas Dobler

dobler@iau.uni-frankfurt.de

Hans-Jürgen Panitz

panitz@imk.fzk.de

28.04.2008

1. Introduction

This manual describes how to convert raw ECHAM5 GRIB files to global NetCDF files. These files are constructed such that they can be converted with the int2clm tool to CLM forcing data.



2. Versions in use

  • netcdf library version: 3.6.0-p1 of Apr 25 2005

  • GRIB library version: 1.0.6 of Jul 31 2007

  • Climate Data Operators version: 1.0.9.1 of Oct 22 2007

  • NCO netCDF Operators version: 3.1.6 of Aug 23 2006

3. Application

An example script automatically doing conversion for several years year can be found in Appendix A. The present application is designed for



  • int2lm version: 1.7.3_clm_2 from Feb., 05, 2008 and higher

  • COSMO-CLM version: 4.0 from May, 25, 2007 and higher

The script can be run on the DKRZ front-end (cross) directly. A batch version which can be submitted to the pre-processing queue at DKRZ is also available (dobler@iau.uni-frankfurt.de, panitz@imk.fzk.de)

4. Additional input

For successful conversion the following files are needed:



  • trunc.cdl: Basic structure for the cas-files and dimensions. See Appendix B for an example.

  • tab.txt: GRIB variable number description (NetCDF name, long name and units). See Appendix C for an example.

  • grid.txt: Grid description for the cas-files. See Appendix D for an example.

  • FR_LAND.grb: Land-sea mask, invariant. Can be generated using the following file archived on the DKRZ front-end (cross): /ut/k/k204076/EXP000/run009/echam5_t63/31009_S09/output/output200/31009_S09_200001.01 with 'cdo -r selcode,172 -invertlat -sp2gp -seltimestep,1 file FR_LAND.grb'.

5. How it works

Conversion consists of the following steps:



  1. ncgen -o trunc.nc trunc.cdl

Generate the NetCDF file trunc.nc from the CDL (network Common Data form Language) file trunc.cdl.

  1. cdo splitday grb-file day_

Split the input ECAHM5 GRIB file into single days. The output file names are day_DD.grb.

  1. For each day:

cdo splithour day_DD.grb YYYYMMDD

Split the single days into single time steps (6h). The output file names are YYYYMMDDhh.grb.



  1. For each time step:

  • cdo dv2uv YYYYMMDDhh.grb YYYYMMDDhh_uv

Convert divergence and vorticity to U and V wind.

  • cdo selcode,129,130,131,132, 134,141, 193-invertlat -sp2gp YYYYMMDDhh_uv tmp1.grb

Transforms fields with spectral coefficients to Gaussian grids, invert latitude and select variables FIS, T, U, V, PS, W_SNOW, and W_I

  • cdo selcode,102,103,210 -invertlat -sp2gp YYYYMMDDhh_uv tmp2.grb

Transforms fields with spectral coefficients to Gaussian grids, invert latitude and select variables TSI, TSW and FR_SEA_ICE.

  • cdo selcode,139 -invertlat -sp2gp YYYYMMDDhh_uv tmp3.grb

Transforms fields with spectral coefficients to Gaussian grids, invert latitude and select variable TSLM1.

  • cdo expr,"var1=seaice*tsi+tsw-seaice*tsw;" tmp2.grb tmp_t_sea.grb

Calculate sea surface temperature.

  • cdo expr,"var1=tslm1;" tmp3.grb tmp_t_land.grb

Calculate land surface temperature.

  • cdo ifthenelse FR_LAND.grb tmp_t_land.grb tmp_t_sea.grb tmp_t_s.grb

Merge land and sea surface temperature according to land-sea mask.

  • cdo selcode,140,229,207 -invertlat -sp2gp YYYYMMDDhh_uv tmp4.grb

Transforms fields with spectral coefficients to Gaussian grids, invert latitude and select variables W_SO, WSMAX and T_SO.

  • cdo setcode,2 -expr,"var2=tsoil-tsoil+ws/wsmx;" tmp4.grb tmp5.grb

Calculate volumetric soil water content and set variable number to 2.

  • cdo gtc,1 tmp5.grb tmp_vw_so_gtone.grb

Generate mask with volumetric soil water content >1.

  • cdo ifthenelse tmp_vw_so_gtone.grb tmp_vw_so_gtone.grb tmp5.grb tmp_vw_so_land.grb

Limit soil water content to 1.

  • cdo ifthen FR_LAND.grb tmp_vw_so_land.grb tmp_vw_so.grb

Set soil water content over sea to missing value.

  • cdo selcode, 207 -invertlat -sp2gp YYYYMMDDhh_uv tmp6.grb

Transforms fields with spectral coefficients to Gaussian grids, invert latitude and select variable T_SO.

  • cdo ifthen FR_LAND.grb tmp_ tmp6.grb tmp_t_so.grb

Set soil temperature over sea to missing value

      • cdo selcode, 133 -invertlat -sp2gp YYYYMMDDhh_uv tmp7.grb

Transforms fields with spectral coefficients to Gaussian grids, invert latitude and select variable QV.

  • cdo gec, 0.0 tmp7.grb tmp_qv_gezero.grb

Generate mask with 1 if QV >= 0., with 0 if QV < 0

  • cdo ifthenelse tmp_qv_gezero.grb tmp_ tmp7.grb tmp_qv_gezero.grb tmp tmp_qv.grb

nullify negative values of QV.

  • cdo selcode, 153 -invertlat -sp2gp YYYYMMDDhh_uv tmp8.grb

Transforms fields with spectral coefficients to Gaussian grids, invert latitude and select variable QC.

  • cdo gec, 0.0 tmp8.grb tmp_qc_gezero.grb

Generate mask with 1 if QC >= 0., with 0 if QC < 0

  • cdo ifthenelse tmp_qc_gezero.grb tmp_ tm8.grb tmp_qc_gezero.grb tmp tmp_qc.grb

nullify negative values of QC.

  • cdo selcode, 154 -invertlat -sp2gp YYYYMMDDhh_uv tmp9.grb

Transforms fields with spectral coefficients to Gaussian grids, invert latitude and select variable QI.

  • cdo gec, 0.0 tmp9.grb tmp_qi_gezero.grb

Generate mask with 1 if QI >= 0., with 0 if QI < 0

  • cdo ifthenelse tmp_qi_gezero.grb tmp_ tm9.grb tmp_ic_gezero.grb tmp tmp_qi.grb

nullify negative values of QI.

  • cdo settaxis,YYYY-MM-DD,hh:00 FR_LAND.grb FR_LAND_timeset.grb

Correct time axis in land-sea mask file.

  • cdo merge tmp1.grb tmp_qv.grb tmp_qc.grb tmp_qi.grb tmp_t_s.grbtmp_t_so.grb tmp_vw_so.grb FR_LAND_timeset.grb tmp_merge.grb

Merge variables FIS, T, U, V, QV, PS, W_SNOW, QC, QI, W_I, T_SO, T_S, VW_SO, FR_LAND to one file.

  • cdo -r -t tab.txt -f nc remapbil,grid.txt tmp_merge.grb tmp_merge.nc

Convert to a NetCDF file (with a relative time axis) using the GRIB variable number description in tab.txt and set the longitude to span from -180 to 178.125 instead of 0 to 358.125.

  • cdo setmissval,-1e20 tmp_merge.nc casYYYYMMDDhh.nc

Set missing values to -1e20.

  • ncrename -d ilev,level1 casYYYYMMDDhh.nc

  • ncrename -d mlev,level casYYYYMMDDhh.nc

  • ncrename -d depth,soil1 casYYYYMMDDhh.nc

Rename dimensions in cas-file casYYYYMMDDhh.nc.

  • ncks -A trunc.nc casYYYYMMDDhh.nc

Append variables and attributes from trunc.nc to cas-file casYYYYMMDDhh.nc.

  • ncatted -O -a standard_name,T,c,c,"air_temperature" \

-O -a missing_value,T,c,f,-1e20 \

-O -a standard_name,U,c,c,"grid_eastward_wind" \

-O -a missing_value,U,c,f,-1e20 \

-O -a standard_name,V,c,c,"grid_northward_wind" \

-O -a missing_value,V,c,f,-1e20 \

-O -a standard_name,PS,c,c,"surface_air_pressure" \

-O -a missing_value,PS,c,f,-1e20 \

-O -a standard_name,QV,c,c,"specific_humidity" \

-O -a missing_value,QV,c,f,-1e20 \

-O -a standard_name,QC,c,c,"mass_fraction_of_cloud_liquid_water_in_air" \

-O -a missing_value,QC,c,f,-1e20 \

-O -a standard_name,QI,c,c,"mass_fraction_of_cloud_ice_in_air" \

-O -a missing_value,QI,c,f,-1e20 \

-O -a standard_name,FIS,c,c,"surface_geopotential_height" \

-O -a missing_value,FIS,c,f,-1e20 \

-O -a standard_name,T_S,c,c,"temperature_at_bottom_of_snow" \

-O -a missing_value,T_S,c,f,-1e20 \

-O -a standard_name,W_SNOW,c,c,"surface_snow_amount" \

-O -a missing_value,W_SNOW,c,f,-1e20 \

-O -a standard_name,FR_LAND,c,c,"land_area_fraction" \

-O -a missing_value,FR_LAND,c,f,-1e20 \

-O -a standard_name,W_SO_REL,c,c,"relative /scaled to max. field capacity) volume_fraction_of_soil_moisture" \

-O -a missing_value,W_SO_REL,c,f,-1e20 \

-O -a standard_name,T_SO,c,c,"soil_temperature" \

-O -a missing_value,T_SO,c,f,-1e20 \

-O -a standard_name,W_I,c,c,"canopy_water_amount" \

-O -a missing_value,W_I,c,f,-1e20 casYYYYMMDDhh.nc

Change some attributes in cas-file casYYYYMMDDhh.nc.



Appendix A: An example script (for SRES scenario A1B)

#!/bin/bash


#Convert raw ECHAM5 GRIB data to global casYYYYMMDDhh.nc NetCDF files

#which can then be converted with int2clm to lafYYYYMMDDhh.nc files used to drive the CLM model

#INPUT: RAW ECHAM5 GRIB files (e.g. files 31012_S12_200101.01 to 31012_S12_200112.01)

#OUTPUT: Global NetCDF files casYYYYMMDDhh.nc

#

#usage: ECHAM_to_cas_CLM4.sh



#the script can be run on the DKRZ frontend (cross) directly

#adapt the variables in the userdefinition section according to your needs

#

#the following files are needed:



# -trunc.cdl: basic structure for the cas file and its dimensions

# -tab.txt: GRIB var number description (NetCDF name, long name and units)

# -grid.txt: grid description for the cas file

# -FR_LAND.grb: Land sea mask (invariant!).

# Can be generated from file /ut/k/k204076/EXP000/run009/echam5_t63/31009_S09/output/output200/31009_S09_200001.01

# with e.g. cdo -r selcode,172 -invertlat -sp2gp -seltimestep,1 file FR_LAND.grb

# -and of course the echam5 grib files!

#

#Contact: dobler@iau.uni-frankfurt.de, panitz@imk.fzk.de



#

#Version: 1.0

#Date: 2008-04-28

########################################################################################################################

#

# Variables in user defintion section



#

# indir: Directory where to find this script ECHAM_to_cas.sh

# sourcedir: Directory where to find the source data which will be converted to CLM4 compatible format

# targetdir: Directory where the converted data will be stored; don't include the of year; will be added by the program

#

# remotehost: Name of a remote host to where the converted data can be transferd using scp;



# to enable this work it is necessary to create a "password free" connection to the remote host using ssh-keygen

# see "man ssh-keygen" for further details

# furthermore it is useful to creat an ssh-agent

# if you don't want to transfer the converted data to remote host, set remotehost=dummy

# remotedir: Name of directory on remote host where the data will be stored; Name will be extended by the number of the corresponding year

#

# archivedir: directory for long-time archiving the data; the data can be gathered by year and month in a tar-file



# some editing might be necessary!! Look close to the end of the scripts

# head_archive_file: head of name of tar-file; the filename will be extended by "cas$year$month"

#

# year_first: first year that will be treated



# year_last : last year that will be treated

# filehead: header of source data files without number of year; denotes the experiment no. of ECHAM5

# filetail: tail of source data files without number of year

#

########################################################################################################################



# nco and cdo are needed

########################################################################################################################

export PATH=$PATH:/pool/ia64/cdo/bin/:/pool/ia64/netcdf/nco/bin

#

dummy=dummy



#

###########################################################################

#

# User definition section begin



#

indir=/import/ds9b/ipf2/b/b364034/Programme_Panitz/ECHAM5_to_cas

sourcedir=/ut/3/k204098/EXP000/run012/echam5_t63/31012_S12/output/output

targetdir=$WRKSHR/Daten_Panitz/echam2cas_a1b_1


remotehost=hlrs

remotedir=/nfs/nas/scr/ws/imkclm1-Daten_20080415-0/ECHAM5_T63L31_A1B_1_CLM4_Daten/cas


archivedir=/ut/10/prj/bm0162/b364034/EH5_T63L31_OM-GR1.5L40_A1B_1_CLM4/

head_archive_file=ECHAM5_31012_S12_CLM4


year_first=2036

year_last=2041

#

# Structure of name of Inputfile with global data



# $filehead_$year$month$filetail

#

filehead=31012_S12_



filetail=.01
#

# User definition section end

#

###########################################################################


for ((year=${year_first};year<=${year_last};year++)) # loop over years

do

#



# create the archive directory for the current year

#

archive=${archivedir}/${year}



mkdir -p ${archive}
#

# create the target directory on remote host if desired

#

if [ ${remotehost} != ${dummy} ]



then

ssh ${remotehost} mkdir -p ${remotedir}/${year}

fi
work_dir=${targetdir}_${year}

mkdir -p ${work_dir}

cd ${work_dir}
mkdir -p cas/${year}

mkdir -p tmp

mkdir -p grib/${year}

cp ${indir}/trunc.cdl ${indir}/tab.txt ${indir}/grid.txt ${indir}/FR_LAND.grb .


ncgen -o trunc.nc trunc.cdl
cp ${sourcedir}${year:0:3}/${filehead}${year}* ./grib/${year}/

#

# untar the sourcefile if necessary



#

cd ./grib/${year}/

tar -xvf *.tar

rm *.tar


cd ${work_dir}
#####################################

# all months and days

#####################################
for ((i=1;i<13;i++)) # loop over month

do
if(($i <10))

then

month=0$i



else

month=$i


fi
#get number of days in month MM of year YYYY

nod=`cal ${month} ${year} | grep -v '[A-Za-z]' | wc -w`

#####################################
#####################################

# #one day only (debugging)

# cp /ut/3/k204098/EXP000/run012/echam5_t63/31012_S12/output/output${year:0:3}/31012_S12_${year}01* ./grib/${year}/

#

#month=01



#let "nod=1"

#for ((i=1;i<2;i++))

#do

#####################################


file=./grib/${year}/${filehead}${year}${month}${filetail}
if [ -s ${file} ]

then


echo

echo File $file will be treated

echo

else


echo File $file does not exist

echo Stop Conversion Program

exit

fi
cdo splitday $file ./tmp/day_


for ((day=1;day<=nod;day++)) # loop over days

do
if ((day < 10))

then

day2=0${day}



else

day2=${day}

fi
date=${year}${month}${day2}
cdo splithour ./tmp/day_${day2}.grb ./tmp/${date}

rm ./tmp/day_${day2}.grb

done # loop over days
for ((t=1;t<=nod*4;t++)) # loop over hours

do

let "hour=($t-1)*6 % 24"



let "day=(($t-1)*6 - hour)/24+1"
if ((hour < 10))

then


hour2=0${hour}

else


hour2=${hour}

fi
if ((day < 10))

then

day2=0${day}



else

day2=${day}

fi
d=${year}${month}${day2}${hour2}
cdo dv2uv ./tmp/${d}.grb ./tmp/${d}_uv

#

# T_SO (Code 207) not selected here; select it in an own tmp-file



# QV (Code 133), QC(Code 153) and QI(Code 154) not selected here, they will be selected in # an own file each

cdo selcode,129,130,131,132,134,141,193 -invertlat -sp2gp ./tmp/${d}_uv ./tmp/tmp1.grb


cdo selcode,102,103,210 -invertlat -sp2gp ./tmp/${d}_uv ./tmp/tmp2.grb

cdo selcode,139 -invertlat -sp2gp ./tmp/${d}_uv ./tmp/tmp3.grb

cdo expr,"var1=seaice*tsi+tsw-seaice*tsw;" ./tmp/tmp2.grb ./tmp/tmp_t_sea.grb

cdo expr,"var1=tslm1;" ./tmp/tmp3.grb ./tmp/tmp_t_land.grb

cdo ifthenelse FR_LAND.grb ./tmp/tmp_t_land.grb ./tmp/tmp_t_sea.grb ./tmp/tmp_t_s.grb
cdo selcode,140,229,207 -invertlat -sp2gp ./tmp/${d}_uv ./tmp/tmp4.grb

cdo setcode,2 -expr,"var2=tsoil-tsoil+ws/wsmx;" ./tmp/tmp4.grb ./tmp/tmp5.grb

cdo gtc,1 ./tmp/tmp5.grb ./tmp/tmp_vw_so_gtone.grb

cdo ifthenelse ./tmp/tmp_vw_so_gtone.grb ./tmp/tmp_vw_so_gtone.grb ./tmp/tmp5.grb ./tmp/tmp_vw_so_land.grb

#

cdo ifthen FR_LAND.grb ./tmp/tmp_vw_so_land.grb ./tmp/tmp_vw_so.grb



#

# select T_SO (Code 207) here at its own; set T_SO over water to missing value

cdo selcode,207 -invertlat -sp2gp ./tmp/${d}_uv ./tmp/tmp6.grb

cdo ifthen FR_LAND.grb ./tmp/tmp6.grb ./tmp/tmp_t_so.grb


# select QV (Code 133) here at its own; nullify negative values

cdo selcode,133 -invertlat -sp2gp ./tmp/${d}_uv ./tmp/tmp7.grb

cdo gec,0.0 ./tmp/tmp7.grb ./tmp/tmp_qv_gezero.grb

cdo ifthenelse ./tmp/tmp_qv_gezero.grb ./tmp/tmp7.grb ./tmp/tmp_qv_gezero.grb ./tmp/tmp_qv.grb


# select QC (Code 153) here at its own; nullify negative values

cdo selcode,153 -invertlat -sp2gp ./tmp/${d}_uv ./tmp/tmp8.grb

cdo gec,0.0 ./tmp/tmp8.grb ./tmp/tmp_qc_gezero.grb

cdo ifthenelse ./tmp/tmp_qc_gezero.grb ./tmp/tmp8.grb ./tmp/tmp_qc_gezero.grb ./tmp/tmp_qc.grb


# select QI (Code 154) here at its own; nullify negative values

cdo selcode,154 -invertlat -sp2gp ./tmp/${d}_uv ./tmp/tmp9.grb

cdo gec,0.0 ./tmp/tmp9.grb ./tmp/tmp_qi_gezero.grb

cdo ifthenelse ./tmp/tmp_qi_gezero.grb ./tmp/tmp9.grb ./tmp/tmp_qi_gezero.grb ./tmp/tmp_qi.grb


cdo settaxis,${year}-${month}-${day2},${hour2}:00 FR_LAND.grb ./tmp/FR_LAND_timeset.grb
#

# merge also the file with T_SO, QV, QC , and QI

#

cdo merge ./tmp/tmp1.grb ./tmp/tmp_qv.grb ./tmp/tmp_qc.grb ./tmp/tmp_qi.grb ./tmp/tmp_t_s.grb ./tmp/tmp_t_so.grb ./tmp/tmp_vw_so.grb ./tmp/FR_LAND_timeset.grb ./tmp/tmp_merge.grb


cdo -r -t tab.txt -f nc remapbil,grid.txt ./tmp/tmp_merge.grb ./tmp/tmp_merge.nc

cdo setmissval,-1e20 ./tmp/tmp_merge.nc cas${d}.nc

rm -f ./tmp/t*.*

rm -f ./tmp/FR_LAND_timeset.grb


ncrename -d ilev,level1 cas${d}.nc

ncrename -d mlev,level cas${d}.nc

ncrename -d depth,soil1 cas${d}.nc
ncks -A trunc.nc cas${d}.nc
ncatted -O -a standard_name,T,c,c,"air_temperature" \

-O -a missing_value,T,c,f,-1e20 \

-O -a standard_name,U,c,c,"grid_eastward_wind" \

-O -a missing_value,U,c,f,-1e20 \

-O -a standard_name,V,c,c,"grid_northward_wind" \

-O -a missing_value,V,c,f,-1e20 \

-O -a standard_name,PS,c,c,"surface_air_pressure" \

-O -a missing_value,PS,c,f,-1e20 \

-O -a standard_name,QV,c,c,"specific_humidity" \

-O -a missing_value,QV,c,f,-1e20 \

-O -a standard_name,QC,c,c,"mass_fraction_of_cloud_liquid_water_in_air" \

-O -a missing_value,QC,c,f,-1e20 \

-O -a standard_name,QI,c,c,"mass_fraction_of_cloud_ice_in_air" \

-O -a missing_value,QI,c,f,-1e20 \

-O -a standard_name,FIS,c,c,"surface_geopotential_height" \

-O -a missing_value,FIS,c,f,-1e20 \

-O -a standard_name,T_S,c,c,"surface temperature" \

-O -a missing_value,T_S,c,f,-1e20 \

-O -a standard_name,W_SNOW,c,c,"surface_snow_amount" \

-O -a missing_value,W_SNOW,c,f,-1e20 \

-O -a standard_name,FR_LAND,c,c,"land_area_fraction" \

-O -a missing_value,FR_LAND,c,f,-1e20 \

-O -a standard_name,W_SO_REL,c,c,"relative (scaled to max. field capacity) volume_fraction_of_soil_moisture" \

-O -a missing_value,W_SO_REL,c,f,-1e20 \

-O -a standard_name,T_SO,c,c,"soil_temperature" \

-O -a missing_value,T_SO,c,f,-1e20 \

-O -a standard_name,W_I,c,c,"canopy_water_amount" \

-O -a missing_value,W_I,c,f,-1e20 cas${d}.nc


rm -f ./tmp/${d}_uv

rm -f ./tmp/${d}.grb


mv cas${d}.nc cas/${year}

echo


echo File cas${d}.nc finished

echo
done # loop over hours


cd cas/${year}

liste=$( ls "cas"${year}${month}*".nc" )

#

# for each month copy the converted data to remote host if desired



#

if [ ${remotehost} != ${dummy} ]

then

nohup scp $liste ${remotehost}:${remotedir}/${year}



fi

#

# tar the converted data on a monthly base and move the tar-file to the archive



#

# afterwards delete the cas-files in work-directory in order to save storage space

# (max. 150GB)

#

# tar -cvf ${head_archive_file}_cas${year}${month}.tar $liste



# mv ${head_archive_file}_cas${year}${month}.tar ${archive}

mv $liste ${archive}


rm $liste
cd ${work_dir}
done # loop over month

rm -r trunc.nc trunc.cdl tab.txt grid.txt FR_LAND.grb

rm -rf grib tmp
done #loop over years
Appendix B: trunc.cdl

netcdf trunc { // netCDF specifications

dimensions:

lon = 192 ;

lat = 96 ;

level = 31 ;

level1 = 32 ;

time = UNLIMITED ; // (4 currently)

soil1 = 5 ;

bnds = 2 ;

soil = 4 ;

variables:

float lat(lat), lon(lon), ak(level1), bk(level1), soil1(soil1), soil1_bnds(soil1,bnds), soil(soil);

double time(time), time_bnds(time, bnds) ;

// variable attributes

lat:axis = "Y";

lat:standard_name = "latitude";

lat:long_name = "latitude";

lat:units = "degrees_north";

lon:axis = "X";

lon:standard_name = "longitude";

lon:long_name = "longitude";

lon:units = "degrees_east";

ak:axis = "Z" ;

ak:standard_name = "atmosphere_hybrid_sigma_pressure_coordinate";

ak:long_name = "hybrid coordinate (sigma-pressure)" ;

ak:units = "Pa" ;

ak:positive = "down" ;

ak:formula-terms = "ap: ak b: bk" ;

bk:axis = "Z" ;

bk:standard_name = "atmosphere_hybrid_sigma_pressure_coordinate";

bk:long_name = "hybrid coordinate (sigma-pressure)" ;

bk:units = "Pa" ;

bk:positive = "down" ;

bk:formula-terms = "ap: ak b: bk" ;

soil1:standard_name = "depth" ;

soil1:long_name = "depth of soil layers" ;

soil1:units = "m" ;

soil1:positive = "down" ;

time:calendar = "standard" ;

data:

lat = -88.57217, -86.72253, -84.86197, -82.99894, -81.13498, -79.27056,



-77.40589, -75.54106, -73.67613, -71.81113, -69.94608, -68.08099,

-66.21587, -64.35073, -62.48557, -60.6204, -58.75521, -56.89001,

-55.02481, -53.1596, -51.29438, -49.42915, -47.56393, -45.69869,

-43.83346, -41.96822, -40.10298, -38.23774, -36.37249, -34.50724,

-32.64199, -30.77674, -28.91149, -27.04624, -25.18099, -23.31573,

-21.45048, -19.58522, -17.71996, -15.8547, -13.98945, -12.12419,

-10.25893, -8.393669, -6.528409, -4.66315, -2.79789, -0.9326299,

0.9326299, 2.79789, 4.66315, 6.528409, 8.393669, 10.25893, 12.12419,

13.98945, 15.8547, 17.71996, 19.58522, 21.45048, 23.31573, 25.18099,

27.04624, 28.91149, 30.77674, 32.64199, 34.50724, 36.37249, 38.23774,

40.10298, 41.96822, 43.83346, 45.69869, 47.56393, 49.42915, 51.29438,

53.1596, 55.02481, 56.89001, 58.75521, 60.6204, 62.48557, 64.35073,

66.21587, 68.08099, 69.94608, 71.81113, 73.67613, 75.54106, 77.40589,

79.27056, 81.13498, 82.99894, 84.86197, 86.72253, 88.57217 ;

lon = -180, -178.125, -176.25, -174.375, -172.5, -170.625, -168.75,

-166.875, -165, -163.125, -161.25, -159.375, -157.5, -155.625, -153.75,

-151.875, -150, -148.125, -146.25, -144.375, -142.5, -140.625, -138.75,

-136.875, -135, -133.125, -131.25, -129.375, -127.5, -125.625, -123.75,

-121.875, -120, -118.125, -116.25, -114.375, -112.5, -110.625, -108.75,

-106.875, -105, -103.125, -101.25, -99.375, -97.5, -95.625, -93.75,

-91.875, -90, -88.125, -86.25, -84.375, -82.5, -80.625, -78.75, -76.875,

-75, -73.125, -71.25, -69.375, -67.5, -65.625, -63.75, -61.875, -60,

-58.125, -56.25, -54.375, -52.5, -50.625, -48.75, -46.875, -45, -43.125,

-41.25, -39.375, -37.5, -35.625, -33.75, -31.875, -30, -28.125, -26.25,

-24.375, -22.5, -20.625, -18.75, -16.875, -15, -13.125, -11.25, -9.375,

-7.5, -5.625, -3.75, -1.875, 0, 1.875, 3.75, 5.625, 7.5, 9.375, 11.25,

13.125, 15, 16.875, 18.75, 20.625, 22.5, 24.375, 26.25, 28.125, 30,

31.875, 33.75, 35.625, 37.5, 39.375, 41.25, 43.125, 45, 46.875, 48.75,

50.625, 52.5, 54.375, 56.25, 58.125, 60, 61.875, 63.75, 65.625, 67.5,

69.375, 71.25, 73.125, 75, 76.875, 78.75, 80.625, 82.5, 84.375, 86.25,

88.125, 90, 91.875, 93.75, 95.625, 97.5, 99.375, 101.25, 103.125, 105,

106.875, 108.75, 110.625, 112.5, 114.375, 116.25, 118.125, 120, 121.875,

123.75, 125.625, 127.5, 129.375, 131.25, 133.125, 135, 136.875, 138.75,

140.625, 142.5, 144.375, 146.25, 148.125, 150, 151.875, 153.75, 155.625,

157.5, 159.375, 161.25, 163.125, 165, 166.875, 168.75, 170.625, 172.5,

174.375, 176.25, 178.125 ;

ak = 0, 2000, 4000, 6000, 8000, 9976.13671875, 11820.5390625,

13431.39453125, 14736.35546875, 15689.20703125, 16266.609375,

16465.00390625, 16297.62109375, 15791.59765625, 14985.26953125,

13925.51953125, 12665.29296875, 11261.23046875, 9771.40625, 8253.2109375,

6761.33984375, 5345.9140625, 4050.7177734375, 2911.5693359375,

1954.80517578125, 1195.88989257812, 638.14892578125, 271.62646484375,

72.0635833740234, 0, 0, 0 ;

bk = 0, 0, 0, 0, 0, 0.000390858156606555, 0.00291970069520175,

0.00919413194060326, 0.0203191563487053, 0.0369748584926128,

0.0594876408576965, 0.0878949761390686, 0.122003614902496,

0.161441504955292, 0.205703258514404, 0.254188597202301,

0.306235373020172, 0.36114501953125, 0.41820228099823, 0.476688146591187,

0.535886585712433, 0.595084249973297, 0.65356457233429,

0.710594415664673, 0.765405237674713, 0.817166984081268,

0.864955842494965, 0.907715857028961, 0.944213211536407,

0.972985208034515, 0.992281496524811, 1 ;

soil1 = 0.03, 0.19, 0.78, 2.68, 6.98;

soil1_bnds =

0, 0.06,

0.06, 0.32,

0.32, 1.24,

1.24, 4.12,

4.12, 9.84 ;

time_bnds =

0, 0 ;

time = 0;



}

The values for ak, bk, lat, lon and soil1 can be found in the GRIB files. Use e.g., cdo -r -f nc -invertlat -sp2gp -seltimestep,1 31012_S12_203601.01 tmp.nc and browse the resulting NetCDF file tmp.nc for the necessary values:



  • Use ncdump -c tmp.nc for lat, lon and soil levels (subtract 180 in longtitude and divide depth by 100 for soil1)

  • Use ncdump -v hyai tmp.nc for ak

  • Use ncdump -v hybi tmp.nc for bk

Appendix C: tab.txt

102 TSI surface temperature of ice

103 TSW surface temperature of water

129 FIS surface geopotential height [m2 s-2]

130 T temperature

131 U U-component of wind [m s-1]

132 V V-component of wind [m s-1]

133 QV specific humidity [kg kg-1]

134 PS surface pressure

139 TSLM1 surface temperature of land

140 W_SO soil wetness

141 W_SNOW surface snow amount [m_H2O]

153 QC cloud liquid water content [kg kg-1]

154 QI cloud ice content [kg kg-1]

172 FR_LAND sea land fraction [1]

193 W_I canopy water amount [m_H2O]

207 T_SO soil temperature

210 FR_SEA_ICE ice cover

229 WSMAX field capacity of soil

1 T_S temperature at bottom of snow [K]

2 W_SO_REL relative volumetric soil water content scales to field capac.

Appendix D: grid.txt

gridtype : gaussian

gridsize : 18432

xname : lon

xlongname : longitude

xunits : degrees_east

yname : lat

ylongname : latitude

yunits : degrees_north

xsize : 192

ysize : 96

xfirst : -180.0

xinc : 1.875

yvals : -88.5721685 -86.722531 -84.8619703 -82.9989416 -81.1349768 -79.270559

-77.4058881 -75.5410615 -73.6761323 -71.8111321 -69.9460806 -68.080991

-66.2158721 -64.3507304 -62.4855705 -60.6203959 -58.7552093 -56.8900126

-55.0248075 -53.1595954 -51.2943771 -49.4291537 -47.5639257 -45.6986939

-43.8334586 -41.9682203 -40.1029793 -38.237736 -36.3724906 -34.5072433

-32.6419944 -30.7767441 -28.9114924 -27.0462395 -25.1809856 -23.3157307

-21.450475 -19.5852186 -17.7199615 -15.8547039 -13.9894457 -12.1241871

-10.2589282 -8.39366891 -6.5284094 -4.66314971 -2.79788988 -0.932629968

0.932629968 2.79788988 4.66314971 6.5284094 8.39366891 10.2589282 12.1241871

13.9894457 15.8547039 17.7199615 19.5852186 21.450475 23.3157307 25.1809856

27.0462395 28.9114924 30.7767441 32.6419944 34.5072433 36.3724906 38.237736

40.1029793 41.9682203 43.8334586 45.6986939 47.5639257 49.4291537 51.2943771

53.1595954 55.0248075 56.8900126 58.7552093 60.6203959 62.4855705 64.3507304

66.2158721 68.080991 69.9460806 71.8111321 73.6761323 75.5410615 77.4058881

79.270559 81.1349768 82.9989416 84.8619703 86.722531 88.5721685



The grid description can be obtained via cdo griddes FR_LAND.grb. However, note that therein xfirst is 0 and thus longitude spans from 0 to 358.125. For int2clm, longitude must be from -180 to 178.125 and thus xfirst set to -180. All other entries can be copied from the output of cdo griddes FR_LAND.grb.



Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azrefs.org 2016
rəhbərliyinə müraciət

    Ana səhifə