source: lmdz_wrf/WRFV3/frame/module_alloc_space.h @ 1

Last change on this file since 1 was 1, checked in by lfita, 10 years ago
  • -- --- Opening of the WRF+LMDZ coupling repository --- -- -

WRF: version v3.3
LMDZ: version v1818

More details in:

File size: 8.5 KB
Line 
1   SUBROUTINE ROUTINENAME ( grid,   id, setinitval_in ,  tl_in , inter_domain_in , num_bytes_allocated , &
2                                  sd31, ed31, sd32, ed32, sd33, ed33, &
3                                  sm31 , em31 , sm32 , em32 , sm33 , em33 , &
4                                  sp31 , ep31 , sp32 , ep32 , sp33 , ep33 , &
5                                  sp31x, ep31x, sp32x, ep32x, sp33x, ep33x, &
6                                  sp31y, ep31y, sp32y, ep32y, sp33y, ep33y, &
7                                  sm31x, em31x, sm32x, em32x, sm33x, em33x, &
8                                  sm31y, em31y, sm32y, em32y, sm33y, em33y )
9
10      USE module_domain_type
11      USE module_configure, ONLY : model_config_rec, grid_config_rec_type, in_use_for_config, model_to_grid_config_rec
12!      USE module_state_description
13      USE module_scalar_tables ! this includes module_state_description too
14
15      IMPLICIT NONE
16
17      !  Input data.
18
19      TYPE(domain)               , POINTER          :: grid
20      INTEGER , INTENT(IN)            :: id
21      INTEGER , INTENT(IN)            :: setinitval_in   ! 3 = everything, 1 = arrays only, 0 = none
22      INTEGER , INTENT(IN)            :: sd31, ed31, sd32, ed32, sd33, ed33
23      INTEGER , INTENT(IN)            :: sm31, em31, sm32, em32, sm33, em33
24      INTEGER , INTENT(IN)            :: sp31, ep31, sp32, ep32, sp33, ep33
25      INTEGER , INTENT(IN)            :: sp31x, ep31x, sp32x, ep32x, sp33x, ep33x
26      INTEGER , INTENT(IN)            :: sp31y, ep31y, sp32y, ep32y, sp33y, ep33y
27      INTEGER , INTENT(IN)            :: sm31x, em31x, sm32x, em32x, sm33x, em33x
28      INTEGER , INTENT(IN)            :: sm31y, em31y, sm32y, em32y, sm33y, em33y
29
30      ! this argument is a bitmask. First bit is time level 1, second is time level 2, and so on.
31      ! e.g. to set both 1st and second time level, use 3
32      !      to set only 1st                        use 1
33      !      to set only 2st                        use 2
34      INTEGER , INTENT(IN)            :: tl_in
35 
36      ! true if the allocation is for an intermediate domain (for nesting); only certain fields allocated
37      ! false otherwise (all allocated, modulo tl above)
38      LOGICAL , INTENT(IN)            :: inter_domain_in
39
40      INTEGER(KIND=8) , INTENT(INOUT)         :: num_bytes_allocated
41
42
43      !  Local data.
44      INTEGER idum1, idum2, spec_bdy_width
45      REAL    initial_data_value
46      CHARACTER (LEN=256) message
47      INTEGER tl
48      LOGICAL inter_domain
49      INTEGER setinitval
50      INTEGER sr_x, sr_y
51
52      !declare ierr variable for error checking ALLOCATE calls
53      INTEGER ierr
54
55      INTEGER                              :: loop
56
57   ! Local data
58
59      TYPE ( grid_config_rec_type ) :: config_flags
60
61      INTEGER                         :: k_start , k_end, its, ite, jts, jte
62      INTEGER                         :: ids , ide , jds , jde , kds , kde , &
63                                         ims , ime , jms , jme , kms , kme , &
64                                         ips , ipe , jps , jpe , kps , kpe
65
66      INTEGER                         :: sids , side , sjds , sjde , skds , skde , &
67                                         sims , sime , sjms , sjme , skms , skme , &
68                                         sips , sipe , sjps , sjpe , skps , skpe
69
70
71      INTEGER ::              imsx, imex, jmsx, jmex, kmsx, kmex,    &
72                              ipsx, ipex, jpsx, jpex, kpsx, kpex,    &
73                              imsy, imey, jmsy, jmey, kmsy, kmey,    &
74                              ipsy, ipey, jpsy, jpey, kpsy, kpey
75
76      data_ordering : SELECT CASE ( model_data_order )
77         CASE  ( DATA_ORDER_XYZ )
78             ids = sd31 ; ide = ed31 ; jds = sd32 ; jde = ed32 ; kds = sd33 ; kde = ed33 ;
79             ims = sm31 ; ime = em31 ; jms = sm32 ; jme = em32 ; kms = sm33 ; kme = em33 ;
80             ips = sp31 ; ipe = ep31 ; jps = sp32 ; jpe = ep32 ; kps = sp33 ; kpe = ep33 ;
81             imsx = sm31x ; imex = em31x ; jmsx = sm32x ; jmex = em32x ; kmsx = sm33x ; kmex = em33x ;
82             ipsx = sp31x ; ipex = ep31x ; jpsx = sp32x ; jpex = ep32x ; kpsx = sp33x ; kpex = ep33x ;
83             imsy = sm31y ; imey = em31y ; jmsy = sm32y ; jmey = em32y ; kmsy = sm33y ; kmey = em33y ;
84             ipsy = sp31y ; ipey = ep31y ; jpsy = sp32y ; jpey = ep32y ; kpsy = sp33y ; kpey = ep33y ;
85         CASE  ( DATA_ORDER_YXZ )
86             ids = sd32  ; ide = ed32  ; jds = sd31  ; jde = ed31  ; kds = sd33  ; kde = ed33  ;
87             ims = sm32  ; ime = em32  ; jms = sm31  ; jme = em31  ; kms = sm33  ; kme = em33  ;
88             ips = sp32  ; ipe = ep32  ; jps = sp31  ; jpe = ep31  ; kps = sp33  ; kpe = ep33  ;
89             imsx = sm32x  ; imex = em32x  ; jmsx = sm31x  ; jmex = em31x  ; kmsx = sm33x  ; kmex = em33x  ;
90             ipsx = sp32x  ; ipex = ep32x  ; jpsx = sp31x  ; jpex = ep31x  ; kpsx = sp33x  ; kpex = ep33x  ;
91             imsy = sm32y  ; imey = em32y  ; jmsy = sm31y  ; jmey = em31y  ; kmsy = sm33y  ; kmey = em33y  ;
92             ipsy = sp32y  ; ipey = ep32y  ; jpsy = sp31y  ; jpey = ep31y  ; kpsy = sp33y  ; kpey = ep33y  ;
93         CASE  ( DATA_ORDER_ZXY )
94             ids = sd32  ; ide = ed32  ; jds = sd33  ; jde = ed33  ; kds = sd31  ; kde = ed31  ;
95             ims = sm32  ; ime = em32  ; jms = sm33  ; jme = em33  ; kms = sm31  ; kme = em31  ;
96             ips = sp32  ; ipe = ep32  ; jps = sp33  ; jpe = ep33  ; kps = sp31  ; kpe = ep31  ;
97             imsx = sm32x  ; imex = em32x  ; jmsx = sm33x  ; jmex = em33x  ; kmsx = sm31x  ; kmex = em31x  ;
98             ipsx = sp32x  ; ipex = ep32x  ; jpsx = sp33x  ; jpex = ep33x  ; kpsx = sp31x  ; kpex = ep31x  ;
99             imsy = sm32y  ; imey = em32y  ; jmsy = sm33y  ; jmey = em33y  ; kmsy = sm31y  ; kmey = em31y  ;
100             ipsy = sp32y  ; ipey = ep32y  ; jpsy = sp33y  ; jpey = ep33y  ; kpsy = sp31y  ; kpey = ep31y  ;
101         CASE  ( DATA_ORDER_ZYX )
102             ids = sd33  ; ide = ed33  ; jds = sd32  ; jde = ed32  ; kds = sd31  ; kde = ed31  ;
103             ims = sm33  ; ime = em33  ; jms = sm32  ; jme = em32  ; kms = sm31  ; kme = em31  ;
104             ips = sp33  ; ipe = ep33  ; jps = sp32  ; jpe = ep32  ; kps = sp31  ; kpe = ep31  ;
105             imsx = sm33x  ; imex = em33x  ; jmsx = sm32x  ; jmex = em32x  ; kmsx = sm31x  ; kmex = em31x  ;
106             ipsx = sp33x  ; ipex = ep33x  ; jpsx = sp32x  ; jpex = ep32x  ; kpsx = sp31x  ; kpex = ep31x  ;
107             imsy = sm33y  ; imey = em33y  ; jmsy = sm32y  ; jmey = em32y  ; kmsy = sm31y  ; kmey = em31y  ;
108             ipsy = sp33y  ; ipey = ep33y  ; jpsy = sp32y  ; jpey = ep32y  ; kpsy = sp31y  ; kpey = ep31y  ;
109         CASE  ( DATA_ORDER_XZY )
110             ids = sd31  ; ide = ed31  ; jds = sd33  ; jde = ed33  ; kds = sd32  ; kde = ed32  ;
111             ims = sm31  ; ime = em31  ; jms = sm33  ; jme = em33  ; kms = sm32  ; kme = em32  ;
112             ips = sp31  ; ipe = ep31  ; jps = sp33  ; jpe = ep33  ; kps = sp32  ; kpe = ep32  ;
113             imsx = sm31x  ; imex = em31x  ; jmsx = sm33x  ; jmex = em33x  ; kmsx = sm32x  ; kmex = em32x  ;
114             ipsx = sp31x  ; ipex = ep31x  ; jpsx = sp33x  ; jpex = ep33x  ; kpsx = sp32x  ; kpex = ep32x  ;
115             imsy = sm31y  ; imey = em31y  ; jmsy = sm33y  ; jmey = em33y  ; kmsy = sm32y  ; kmey = em32y  ;
116             ipsy = sp31y  ; ipey = ep31y  ; jpsy = sp33y  ; jpey = ep33y  ; kpsy = sp32y  ; kpey = ep32y  ;
117         CASE  ( DATA_ORDER_YZX )
118             ids = sd33  ; ide = ed33  ; jds = sd31  ; jde = ed31  ; kds = sd32  ; kde = ed32  ;
119             ims = sm33  ; ime = em33  ; jms = sm31  ; jme = em31  ; kms = sm32  ; kme = em32  ;
120             ips = sp33  ; ipe = ep33  ; jps = sp31  ; jpe = ep31  ; kps = sp32  ; kpe = ep32  ;
121             imsx = sm33x  ; imex = em33x  ; jmsx = sm31x  ; jmex = em31x  ; kmsx = sm32x  ; kmex = em32x  ;
122             ipsx = sp33x  ; ipex = ep33x  ; jpsx = sp31x  ; jpex = ep31x  ; kpsx = sp32x  ; kpex = ep32x  ;
123             imsy = sm33y  ; imey = em33y  ; jmsy = sm31y  ; jmey = em31y  ; kmsy = sm32y  ; kmey = em32y  ;
124             ipsy = sp33y  ; ipey = ep33y  ; jpsy = sp31y  ; jpey = ep31y  ; kpsy = sp32y  ; kpey = ep32y  ;
125      END SELECT data_ordering
126
127      CALL model_to_grid_config_rec ( id , model_config_rec , config_flags )
128
129      CALL nl_get_sr_x( id , sr_x )
130      CALL nl_get_sr_y( id , sr_y )
131
132      tl = tl_in
133      inter_domain = inter_domain_in
134
135#if ( RWORDSIZE == 8 )
136      initial_data_value = 0.
137#else
138      CALL get_initial_data_value ( initial_data_value )
139#endif
140
141#ifdef NO_INITIAL_DATA_VALUE
142      setinitval = 0
143#else
144      setinitval = setinitval_in
145#endif
146
147      CALL nl_get_spec_bdy_width( 1, spec_bdy_width )
148
149# include <allocs.inc>
150
151   END SUBROUTINE ROUTINENAME
Note: See TracBrowser for help on using the repository browser.