!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! Include this METEO rc file in your main rcfile: ! ! #include /path/to/thisfile.rc ! ! The following variables are used and should have been defined: ! ! * in the main rcfile: ! ! ! short names for regions: ! my.region1 : glb600x400 ! my.region2 : eur300x200 ! my.region3 : eur100x100 ! ! ! grid names for meteo input: ! my.region1m : ${my.region1} ! my.region2m : ${my.region2} ! my.region3m : eux100x100 ! ! ! Number of model levels: ! my.levs : all | tropo25 | tropo31 | tropo34 ! ! ! ECMWF meteo class ('ei' or 'od') ! my.meteo.class : ei ! ! ! what kind of meteo archive ? One of the following two: ! my.meteo.resol : glb100x100 ! main archive with all ECMWF layers and 1.00x1.00 grid ! my.meteo.resol : coarsened ! coarsened to ${LEVS} and regions ! ! ! file format: "tm5-nc" for netcdf, "tm5-hdf" for hdf ! my.meteo.format : tm5-nc ! ! ! call meteo setup script (T|F) ? ! my.tmm.setup.apply : F ! ! * in the machine rc file: ! ! ! local directory with unpacked meteo files: ! my.meteo.dir : /scratch/shared/meteo ! ! ! where to search of missing files ? ! my.meteo.search : ec:ecfs[nlh]:TM/meteo ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! The keys that define meteo usage have the form: ! ! . ! ! or, if the property depends on the zoom region: ! ! .. ! ! The region_name is either a '*' or names like 'glb300x200' etc. ! ! Multipe names could apply to the same field; see the table below. ! A '*' applies to all fields. ! If more than name applies to a field, the last one defines the value. ! For example, the following 3 keys all apply to the 'oro' field, ! but the resulting temporal interpolation will be 'const' : ! ! meteo.tinterp.* : interp3 ! meteo.tinterp.sfc.an : interp6 ! meteo.tinterp.oro : const ! ! Summary of possible name(s) : ! ! field name(s) that apply to this field ! -------- ------------------------------------------------------ ! sp ml sp ! mfw ml mflux_w ! tsp ml mflux_w ! mfu ml mflux_uv ! mfv ml mflux_uv ! T ml temper ! Q ml humid ! CLWC ml cloud ! CIWC ml cloud ! CC ml cloud ! CCO ml cloud ! CCU ml cloud ! eu ml convec ! ed ml convec ! du ml convec ! dd ml convec ! oro sfc sfc.const sfc.an oro ! lsm sfc sfc.const sfc.an lsm ! ci sfc sfc.inst sfc.day sfc.fc ci ! sst sfc sfc.inst sfc.fc sst ! u10m sfc sfc.inst sfc.fc u10m ! v10m sfc sfc.inst sfc.fc u10m ! g10m sfc sfc.inst sfc.fc g10m ! src sfc sfc.inst sfc.fc src ! d2m sfc sfc.inst sfc.fc d2m ! t2m sfc sfc.inst sfc.fc t2m ! skt sfc sfc.inst sfc.fc blh ! blh sfc sfc.inst sfc.fc skt ! sshf sfc sfc.aver sfc.fc sshf ! slhf sfc sfc.aver sfc.fc slhf ! ewss sfc sfc.aver sfc.fc ewss ! nsss sfc sfc.aver sfc.fc nsss ! cp sfc sfc.aver sfc.fc cp ! lsp sfc sfc.aver sfc.fc lsp ! sf sfc sfc.aver sfc.fc sf ! ssr sfc sfc.aver sfc.fc ssr ! sd sfc sfc.inst sfc.day sfc.fc sd ! swvl1 sfc sfc.inst sfc.day sfc.fc swvl1 ! tv sfc sfc.inst sfc.day sfc.an veg ! cvl sfc sfc.inst sfc.day sfc.an veg ! cvh sfc sfc.inst sfc.day sfc.an veg ! albedo sfc sfc.inst sfc.day sfc.an albedo ! sr sfc sfc.inst sfc.day sfc.an sr ! srols sfc sfc.inst sfc.day sfc.an srols ! ! Background: ! o 'ml' and 'sfc' indicate model levels and surface level ! o surface fields could have a constant value (sfc.const), ! have instananeous values (sfc.inst), ! or averaged over an accumulation interval (sfc.aver). ! o when meteo was produced by TMPP, some fields were stored ! as daily averages (sfc.day) ! o surface fields could originate from an ecmwf forecast (sfc.fc) ! or from the analysis (sfc.an) ! o group names apply to fields that usually belong together, ! for example the vegation fields (veg) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !---------------------------------------------------------- ! ** get number of meteo levels, ! set class variable for filenames, and which convective fluxes to use !---------------------------------------------------------- !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #if "${my.meteo.class}" == "od" : !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! ~ number of levels for od data increases in time ... #if int("${timerange.start}"[0:4]) <= 2005 : my.meteo.nlev : 60 #else my.meteo.nlev : 91 #endif my.ecclass_ecl : ${my.meteo.class}_L${my.meteo.nlev} tiedtke:T !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #elif "${my.meteo.class}" == "ei" : !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! ~ era interim my.meteo.nlev : 60 my.ecclass_ecl : ${my.meteo.class} #if "${convective.fluxes.tiedtke}" == "T": tiedtke:T #else tiedtke:F #endif !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #else : #error "unsupported meteo class : ${my.meteo.class}" #endif !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !previously ECLEVS: my.eclevs : ml${my.meteo.nlev} !---------------------------------------------------------- ! ** name for choice of number of model levels (previously LEVS) !---------------------------------------------------------- #if "${my.levs}" in ["all",""] : my.mlevs : ml${my.meteo.nlev} #elif "${my.levs}" in ["tropo25","tropo31","tropo34","ml40"] : my.mlevs : ${my.levs} #else : #error "unsupported number of model levels : ${my.levs}" #endif !---------------------------------------------------------- ! ** which files should be read ? !---------------------------------------------------------- ! by default, load nothing; ! processes will set flags if meteo is needed: meteo.read.*.* : F !---------------------------------------------------------- ! ** temporal interpolation !---------------------------------------------------------- ! ! Temporal interpolation is defined first by general key: ! ! meteo.tinterp.* : const6 ! ! Optionally, different settings might be chosen for specific meteo: ! ! sp mflux_uv mflux_w temper humid cloud convec surf.inst surf.aver surf.day albedo sr ! ! Possible time interpolations: ! o month : constant in month ! o const : constant ! o const24 : constant in 24hr intervals [00:00,24:00] ! o const6 : constant in 6hr intervals [21:00,03:00] [03:00,09:00] ... ! o const3 : constant in 3hr intervals [22:30,01:30] [01:30,04:30] ... ! o interp6 : interpoloated between 00, 06, 12, 18 ! o interp6_3 : interpoloated between 03, 09, 15, 21 ! o interp3 : interpoloated between 00, 03, 06, 09, 12, 15, 18, 21 ! o aver6 : time averages over intervals ]00,06], [06,12], ... ! o aver3 : time averages over intervals [00,03], [03,06], ... ! o aver24 : time averages over interval [00,24] ! o aver24_3 : time averages over interval [21,21] ! ! ! ~~~ od meteo processed by TM5 ! ! ~ fc fields are 3 hourly instantaneous, ! except for the accumulated fields which have been averaged over 3 hour: meteo.tinterp.* : interp3 meteo.tinterp.sfc.aver : aver3 ! ~ an fields 6 hourly instantaneous, ! except oro and lsm which are constant: meteo.tinterp.sfc.an : interp6 ! ~ constant meteo.tinterp.oro : const meteo.tinterp.lsm : const ! ~ surface roughness Olsson/Ganzeveld is per month: meteo.tinterp.srols : month #if "${tiedtke}" == "F": ! convec files meteo.tinterp.convec : aver3 #endif !---------------------------------------------------------- ! ** source keys : how to form a file name ? !---------------------------------------------------------- ! ! TMM requires keys on how to form a meteo filename. ! A key should be defined for each region (names are in 'dims_grid.F90'): ! ! tmm.sourcekey.glb600x400.* : tmpp:class=od;type=fc;levs=ml60;grid=glb3x2;tres=_21p06 ! ! Optionally, some specific fields might be read from a different set: ! ! tmm.sourcekey.glb600x400.sp : ecmwf:form=3hr;class=od;type=fc;nlev=60;sh=159;tres=_fc012up2tr3 ! ! Possible specific fields: ! ! sp mflux_uv mflux_w temper humid cloud convec ! surf oro lsm albedo sr ! ! Examples of source keys: ! ! * tmpp:class=od;type=fc;levs=ml60;grid=glb3x2;tres=_21p06 ! ! Identifies the regular TMPP hdf files: ! xxxx/od-fc-2000-01-ml60-glb3x2-uvsp_20000101_21p06.hdf ! etc ! ! * tmpp:class=od;type=fc;levs=ml60;grid=glb3x2;tres=_21p06;pathsep=\;namesep=\ ! ! Idem, but then for full Windows path names: ! xxxx\od\fc\2000\01\ml60\glb3x2\uvsp_20000101_21p06.hdf ! etc ! ! * tm5-hdf:mdir=ec-fc012up2-ml60-tropo25-glb600x400;tres=_00p06 ! ! TM5 produced meteo files, hdf format. ! ! * tm5-nc:mdir=ec-fc012up2-ml60-tropo25-glb600x400-;tres=_00p06 ! ! TM5 produced meteo files, netcdf format. ! The '' key will be replaced by the year. ! ! * msc-data:nlev=71;sh=47;mdir=cmam;type=iau;tres=_6hrly;sp_unit=hPa ! ! * ncep-gfs: ! * ncep-cdc: ! #if "${my.meteo.format}" == "tm5-nc" : my.mext : - #else : my.mext : -- #endif ! ! ~~~ TM5 produced ! #if "${my.meteo.resol}" == "glb100x100" : ! ! From global 1.00x1.00 set on all layers: tmm.sourcekey.*.* : ${my.meteo.format}:mdir=ec-${my.ecclass_ecl}-fc012up2tr3-${my.eclevs}-glb100x100${my.mext};tres=_00p03 tmm.sourcekey.*.sfc.fc : ${my.meteo.format}:mdir=ec-${my.ecclass_ecl}-fc012up2tr3-sfc-glb100x100${my.mext};tres=_00p03 tmm.sourcekey.*.sfc.an : ${my.meteo.format}:mdir=ec-${my.ecclass_ecl}-an0tr6-sfc-glb100x100${my.mext};tres=_00p06 tmm.sourcekey.*.convec : ${my.meteo.format}:mdir=ec-${my.ecclass_ecl}-fc012up2tr3-${my.eclevs}-glb100x100${my.mext};tres=_00p03 ! #elif "${my.meteo.resol}" == "coarsened" : ! ! Coarsened to zoom regions and combined layers: tmm.sourcekey.${my.region1}.ml : ${my.meteo.format}:mdir=ec-${my.ecclass_ecl}-fc012up2tr3-${my.mlevs}-${my.region1m}${my.mext};tres=_00p03 tmm.sourcekey.${my.region1}.convec : ${my.meteo.format}:mdir=ec-${my.ecclass_ecl}-fc012up2tr3-${my.mlevs}-${my.region1m}${my.mext};tres=_00p03 tmm.sourcekey.*.sfc.fc : ${my.meteo.format}:mdir=ec-${my.ecclass_ecl}-fc012up2tr3-sfc-${region.glbsfc}${my.mext};tres=_00p03 tmm.sourcekey.*.sfc.an : ${my.meteo.format}:mdir=ec-${my.ecclass_ecl}-an0tr6-sfc-${region.glbsfc}${my.mext};tres=_00p06 ! #else #error "unsupported value of my.meteo.resol : ${my.meteo.resol}" #endif !---------------------------------------------------------- ! ** install meteo files !---------------------------------------------------------- ! location of meteo files; ! either a permanent archive, or a temporary scratch: tmm.dir : ${my.meteo.dir} ! Clean up the temporary meteo ? ! o Set the clean flag (T|F) such that files that have not been accessed ! for a long time are removed if a maximum buffer usage is exceeded. ! o specify a maximum size: 500k, 1M, 2G ! tmm.dir.clean : F tmm.dir.size : 4G ! ! Meteo files could be setup before the actual program is started. ! First set the main switch to apply this or not. ! If to be applied, specify details for a number of sets; ! each set can be applied by a seperate flag. ! tmm.setup.apply : ${my.tmm.setup.apply} ! display progress ? tmm.setup.verbose : T ! file permission mode for newly created files: ! o user archive : 644 ! o archive shared by group : 664 tmm.setup.mode : 664 ! number of sets defined below: !tmm.setup.nset : 5 ! ** TM5 produced hdf/nc files: ! tmm.setup.001.apply : T tmm.setup.001.files : oro lsm albedo sr srols veg !tmm.setup.001.sources : ${my.meteo.format}:mdir=ec-${my.ecclass_ecl}-an0tr6-sfc-${region.glbsfc}${my.mext};tres=_00p06 tmm.setup.001.sources : ${my.meteo.format}:mdir=ec-${my.ecclass_ecl}-an0tr6-sfc-glb100x100${my.mext};tres=_00p06 tmm.setup.001.search : ${my.meteo.search} ! tmm.setup.002.apply : T tmm.setup.002.files : ci cp d2m lsp sd skt blh slhf src sshf ssr sst ewss nsss swvl1 t2m u10m v10m !tmm.setup.002.sources : ${my.meteo.format}:mdir=ec-${my.ecclass_ecl}-fc012up2tr3-sfc-${region.glbsfc}${my.mext};tres=_00p03 tmm.setup.002.sources : ${my.meteo.format}:mdir=ec-${my.ecclass_ecl}-fc012up2tr3-sfc-glb100x100${my.mext};tres=_00p03 tmm.setup.002.search : ${my.meteo.search} ! #if "${my.meteo.resol}" == "glb100x100" : ! ! number of sets defined below: tmm.setup.nset : 3 ! tmm.setup.003.apply : T #if "${tiedtke}" == "T": tmm.setup.003.files : sp mfuv mfw t q cld sub #else tmm.setup.003.files : sp mfuv mfw t q cld convec #endif tmm.setup.003.sources : ${my.meteo.format}:mdir=ec-${my.ecclass_ecl}-fc012up2tr3-${my.eclevs}-glb100x100${my.mext};tres=_00p03 tmm.setup.003.search : ${my.meteo.search} ! #elif "${my.meteo.resol}" == "coarsened" : ! ! number of sets defined below: tmm.setup.nset : 3 ! tmm.setup.003.apply : T #if "${tiedtke}" == "T": tmm.setup.003.files : sp mfuv mfw t q cld sub #else tmm.setup.003.files : sp mfuv mfw t q cld convec #endif tmm.setup.003.sources : ${my.meteo.format}:mdir=ec-${my.ecclass_ecl}-fc012up2tr3-${my.mlevs}-${my.region1m}${my.mext};tres=_00p03 tmm.setup.003.search : ${my.meteo.search} ! #else #error "unsupported value of my.meteo.resol : ${my.meteo.resol}" #endif !================================================ ! ** output meteo !================================================ ! Write output (T/F)? tmm.output : F ! Write all fields (T/F)? tmm.output.* : F ! Write all fields (T/F)? tmm.output.*.ml : F ! ~ surface fields on global surface region: tmm.output.${my.region1}.sfc : F tmm.destkey.${my.region1}.ml : ${my.meteo.format}:mdir=ec-${my.ecclass_ecl}-fc012up2tr3-${my.mlevs}-${my.region1}${my.mext};tres=_00p03 tmm.destkey.${my.region1}.sfc : ${my.meteo.format}:mdir=ec-${my.ecclass_ecl}-fc012up2tr3-sfc-${my.region1}${my.mext};tres=_00p03 tmm.destkey.${my.region1}.sfc.an : ${my.meteo.format}:mdir=ec-${my.ecclass_ecl}-an0tr6-sfc-${my.region1}${my.mext};tres=_00p06 ! TM5 writes new meteo files to: tmm.output.dir : ${my.scratch}/tm5_meteo_in ! ensure creation via 'install' facilty: tmm.output.install.dir : ${tmm.output.dir} !---------------------------------------------------------- ! ** CF conventions !---------------------------------------------------------- ! file with standard name table: #if "${my.meteo.format}" == "tm5-nc" cf-standard-name-table : ${PWD}/tools/cf/data/cf-standard-name-table-v15.xml !cf-standard-name-table : /scratch/ms/nl/nm6/cf-standard-name-table-v15.xml #endif