source: trunk/LMDZ.GENERIC/libf/phy_common/regular_lonlat_mod.F90 @ 1529

Last change on this file since 1529 was 1523, checked in by emillour, 9 years ago

All models: More updates to make planetary codes (+Earth) setups converge.

  • in dyn3d_common:
  • convmas.F => convmas.F90
  • enercin.F => enercin.F90
  • flumass.F => flumass.F90
  • massbar.F => massbar.F90
  • tourpot.F => tourpot.F90
  • vitvert.F => vitvert.F90
  • in misc:
  • move "q_sat" from "dyn3d_common" to "misc" (in Earth model, it is also called by the physics)
  • move "write_field" from "dyn3d_common" to "misc"(may be called from physics or dynamics and depends on neither).
  • in phy_common:
  • move "write_field_phy" here since it may be called from any physics package)
  • add module "regular_lonlat_mod" to store global information on lon-lat grid
  • in dynlonlat_phylonlat/phy*:
  • turn "iniphysiq.F90" into module "iniphysiq_mod.F90" (and of course adapt gcm.F[90] and 1D models accordingly)

EM

File size: 1.9 KB
Line 
1MODULE regular_lonlat_mod
2
3  ! Store information on the global physics grid
4  ! for a regular (longitude-latitude) grid
5 
6  INTEGER, PARAMETER :: north_east=1     ! boundaries of regular lontlat
7  INTEGER, PARAMETER :: north_west=2     ! boundaries of regular lontlat
8  INTEGER, PARAMETER :: south_west=3     ! boundaries of regular lontlat
9  INTEGER, PARAMETER :: south_east=4     ! boundaries of regular lontlat
10  INTEGER, PARAMETER :: east=1           ! boundaries of regular lontlat
11  INTEGER, PARAMETER :: west=2           ! boundaries of regular lontlat
12  INTEGER, PARAMETER :: north=1          ! boundaries of regular lontlat
13  INTEGER, PARAMETER :: south=2          ! boundaries of regular lontlat
14
15! Global definition, shared by all threads
16! Do not set threadprivate directives
17
18  REAL,SAVE,ALLOCATABLE :: lon_reg(:)      ! value of longitude cell (rad)
19
20  REAL,SAVE,ALLOCATABLE :: lat_reg(:)      ! value of longitude cell (rad)
21
22  REAL,SAVE,ALLOCATABLE :: boundslon_reg(:,:)      ! value of boundaries cell (1=>east, 2=>west)(rad)
23
24  REAL,SAVE,ALLOCATABLE :: boundslat_reg(:,:)      ! value of longitude cell (1=>north, 2=>south)(rad)
25
26
27CONTAINS
28 
29  SUBROUTINE init_regular_lonlat(nbp_lon, nbp_lat, lon_reg_, lat_reg_, boundslon_reg_, boundslat_reg_)
30    IMPLICIT NONE
31    INTEGER,INTENT(IN) :: nbp_lon
32    INTEGER,INTENT(IN) :: nbp_lat
33    REAL,   INTENT(IN) :: lon_reg_(nbp_lon) 
34    REAL,   INTENT(IN) :: lat_reg_(nbp_lat)
35    REAL,   INTENT(IN) :: boundslon_reg_(nbp_lon,2)
36    REAL,   INTENT(IN) :: boundslat_reg_(nbp_lat,2) 
37
38   
39    ALLOCATE(lon_reg(nbp_lon))
40    lon_reg(:)=lon_reg_(:)
41
42    ALLOCATE(lat_reg(nbp_lat))
43    lat_reg(:)=lat_reg_(:)
44
45    ALLOCATE(boundslon_reg(nbp_lon,2))
46    boundslon_reg(:,:)=boundslon_reg_(:,:)
47
48    ALLOCATE(boundslat_reg(nbp_lat,2)) 
49    boundslat_reg(:,:)=boundslat_reg_(:,:)
50
51 
52  END SUBROUTINE init_regular_lonlat   
53
54END MODULE regular_lonlat_mod
55
Note: See TracBrowser for help on using the repository browser.