ARJO SEGERS
KNMI
Date: 21/04/2004
NAME grid - grid definitions, interpolations, etc LAT/LON GRIDS ! conect grid module: use grid ! declare grid definition and grid: type(TllGridInfo) :: lli real, allocatable :: ll(:,:) ! define global grid of 2.5x2.5 degrees: ! (mid point west, dlon, nlon, mid point south, dlat, nlat) call Init( lli, -180.0, 2.5, 144, -90.0, 2.5, 72 ) ! storage of grid: allocate( ll(lli%im,lli%jm) ) ! check if grid size is ok: call Check( lli, ll ) ! devide or multiply all cells with their area: call AreaOper( lli, ll, '/', 'rad2' ) ! [ll]/rad^2 call AreaOper( lli, ll, '/', 'm2' ) ! [ll]/m^2 call AreaOper( lli, ll, '*', 'rad2' ) ! [ll] rad^2 call AreaOper( lli, ll, '*', 'm2' ) ! [ll] m^2 ! ! Fill ll (defined by lli,nuv) with values from llX (defined by lliX,nuvX) ! call FillGrid( lli, nuv, ll, lliX, nuvX, llX, combkey, status ) ! ! Key to identify data positions: ! 'n' : value valid for cell (center) ll(1:nlon ,1:nlat ) ! 'u' : value valid for east/west boundaries ll(1:nlon+1,1:nlat ) ! 'v' : value valid for north/south boundaries ll(1:nlon ,1:nlat+1) ! ! Coverage of lli by lliX : ! o lliX is larger than or equal to lli -> all cells in ll changed ! o lliX is smaller than lli -> only part of ll is changed ! ! Create new ll from llX: ! o llX is superset -> copy values from llX into ll ! o llX is fine -> fill ll by combining cells in llX ! (average/sum/etc given the combine key) ! ! Combine keys: 'aver', 'sum' ! ! clear memory: deallocate( ll ) call Done( lli ) HIARCHY binas # general constants (pi etc) singleton # FFT routine grid_tools # area of a rectangle etc grid_type_ll # define lat/lon grid grid_type_gg # define Gaussian grid grid_type_sh # define spherical harmonic grid grid_interpol # interpolate between grid types grid_type_hyb # hybride level definition grid_3d # transform 3D fields grid # main module, collects all grid stuff CHANGES Arjo Segers