next_inactive up previous


TMM - TM Meteo

ARJO SEGERS
KNMI


Date: 21/04/2004


Contents

Introduction

Module to access TM meteo.

The main structure provides access to a list of opened meteo files. If a new meteo field is required, the subroutines search in the list wether the field is available. If not, a new file is opened and added to the list. Optionally, a shell script is invoked to search for a file and to store it locally if necessary.

Usage

   ! --- modules -----------------------------------------

   use GO, only : TDate, NewDate

   use grid, only : TllGridInfo, Init, Done
   use grid, only : TLevelInfo, Init, Done

   use TMM, only : TTmMeteo
   use TMM, only : Init, Done
   use TMM, only : ReadField, ReadUVSP

   ! --- local -----------------------------------------

   type(TllGridInfo)           ::  lli
   type(TLevelInfo)            ::  levi_ec, levi

   type(TTmMeteo)              ::  tmmd

   type(TDate)                 ::  tday, t1, t2

   real                        ::  psurf(120,90)
   real                        ::  temper(120,90,25)
   real                        ::  pu(0:120,90,25)

   ! --- begin -----------------------------------------

   ! define horizontal grid
   call Init( lli, -178.5, 3.0, 120, -89.0, 2.0, 90, status )

   ! define vertical hybride levels
   call Init( levi_ec, 'ec60', status )            ! ecmwf levels
   call Init( levi, levi_ec, (/60,..,0/), status ) ! tm half level selection

   ! setup TM meteo access:
   call Init( tmmd, 'tm5.rc', status )

   ! define time range for field:
   tday = NewDate( year=2003, month=01, day=01 )
   t1   = NewDate( year=2002, month=12, day=31, hour=21 )
   t2   = NewDate( year=2003, month=01, day=01, hour=03 )

   ! Read meteo arrays; specify grid, parameter, time, etc.
   !
   ! Type of grid is defined by nuv key:
   !  'n' = normal grid (cell centers)
   !  'u' = u-grid (east/west boundaries)
   !  'v' = v-grid (north/south boundaries)
   !
   ! Requested grid (lli/levi) might be different from the grid in the file.
   ! Horizontal:
   !   o if file contains same resolutions as defined by lli,
   !     a part of the data in the file is selected;
   !   o if file contains higher resolution fields, 
   !     the ll array is filled with combined values from the file;
   !     depending on the parameter, the result is summed/avaraged/etc.
   ! Vertical:
   !   o if a file contains a supperset of the levels in levi,
   !     some levels are combined;
   !     depending on the parameter, the result is summed/avaraged/etc;
   !   o the file might contain fields with reversed level order.
   !
   ! 3D fields require surface pressure for the level definition.
   ! It should be valid for [t1,t2] !
   ! Best is to use the spm from ReadUVSP.

   call ReadUVSP ( tmmd, 'tmpp:od-fc-ml60-glb3x2', tday, t1, t2, lli, levi, sp1, spm, sp2, pu, pv, status )

   call ReadField( tmmd, 'tmpp:od-fc-ml60-glb3x2', 'T' , tday, t1, t2, lli, 'n', levi, spm, temper, status )
   call ReadField( tmmd, 'tmpp:od-fc-ml60-glb3x2', 'pu', tday, t1, t2, lli, 'u', levi, spm, pu    , status )

   !
   ! TMPP surface fields can be called using the 1x1 as well as the 3x2 key.
   !
   call ReadField( tmmd, 'tmpp:od-fc-sfc-glb1x1' , 'ci', tday, t1, t2, lli, 'n', ci, status )
   call ReadField( tmmd, 'tmpp:od-fc-ml60-glb3x2', 'ci', tday, t1, t2, lli, 'n', ci, status )
   !
   ! Similar for spm surface pressures:
   !
   call ReadField( tmmd, 'tmpp:od-fc-ml1-glb3x2' , 'spm', tday, t1, t1, lli, 'n', spm, status )
   call ReadField( tmmd, 'tmpp:od-fc-ml60-glb3x2', 'spm', tday, t1, t1, lli, 'n', spm, status )


   ! *** output

   call WriteField( tmmd, 'tmpp:od-fc-ml60-glb3x2', 'T', 'K', t1, t2, &
                          lli, 'n', levi, spm, temper, status )

   ! *** finish

   call Done( tmmd, status )
   call Done( levi, status    )
   call Done( levi_ec, status )
   call Done( lli )

   ! -- end

Rcfile

   !
   ! Meteo files are linked to or unpacked in a buffer directory.
   !  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 in Mb
   !
   tmm.dir        : ${RUNDIR}/tmm-buf
   tmm.dir.clean  : T
   tmm.dir.size   : 500

   !
   ! TMM requires keys on how to form meteo for a certain region.
   ! A key should be defined for each region, names are in 'dims_grid.F90'
   ! For example:
   !
   !   tmpp:od-fc-ml60-glb3x2 
   !     Read global 3x2, 60 level files produced by TMPP.
   !     Optionally, the meteo is combined over levels or grid cells.
   !     The files are expected to be present in the buffer directory
   !     specified below after 'tmm.buf.dir' .
   !     To have the appropriate files installed at the begin of a run,
   !     use the 'tmm.setup.*' stuff below.
   !
   !   tmppS:od-fc-ml60-glb3x2 
   !     Idem, but also calls a script to search for an appropriate file
   !     from within the fortran program.
   !     The system call to this script turned out to be rather slow.
   !     This source type should be avoided therefore, but might be
   !     very usefull in case of limitted disk space.
   !
   !   prism:
   !     Receive meteo from the prism coupler.
   !
   tmm.sourcekey.glb6x4  : tmpp:od-fc-ml60-glb3x2
   tmm.sourcekey.eur3x2  : tmpp:od-fc-ml60-glb3x2
   tmm.sourcekey.eur1x1  : tmpp:od-fc-tropo25-eur1x1

   !
   ! Meteo files could be setup before the actual program is started.
   ! Fill the following settings:
   !  o set the apply flag apply this feature or not (T|F)
   !  o specify a list of meteo files to be installed (spm,uvsp, etc)
   !  o specify a list of meteo sources (od-fc-ml60-glb3x2 etc)
   !  o specify wether message are printend or not (T|F)
   !
   tmm.setup.apply    :  T
   tmm.setup.files    :  spm uvsp t q cld sub surf
   tmm.setup.sources  :  od-fc-ml60-glb3x2
   tmm.setup.verbose  :  T

   !
   ! Archive(s) to be searched for monthly tar files.
   ! If more than one is specified (space seperated list), 
   ! multiple directories are examined.
   !  o disk archives
   !  o tape archives ecfs/mos ('massive-storage-system')
   !
   tmm.search.disk   : ${DATADIR}/meteo
   tmm.search.mss    : /nlh/TM/meteo

Source and scripts

   tmm.f90                : Main routines and collecting data structure.
                            Provides access to a list of open meteo files.

     tmm_mf.f90           : Search, open, close a meteo file.
                            Calls shell script 'bin/tmm_getmeteo'.
                            Calls specific routines for hdf/etc files.

       tmm_mf_hdf.f90     : Read fields from hdf files.

       tmm_param.f90      : Parameter specific stuff: 
                            what to do with temperature fields, 
                            what to do with mass fluxes etc.





TM5 2009-03-03