123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- !
- !ProTeX: 1.15
- !
- !BOI
- !
- ! !TITLE: Grid - grid definitions and transformations
- ! !AUTHORS: Arjo Segers
- ! !AFFILIATION: KNMI
- ! !DATE: 21/04/2004
- !
- ! !INTRODUCTION: Introduction
- !
- ! \bv
- !
- ! 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
- !
- ! \ev
- !
- !EOI
- !
- module grid
- use grid_tools
- use grid_type_ll
- use grid_type_gg
- use grid_type_sh
- use grid_interpol
- use grid_type_hyb
-
- use grid_3d
- implicit none
-
- public
-
- end module grid
|