My Project
Main Page
Data Types List
Files
File List
File Members
All
Classes
Files
Functions
Variables
Macros
mod_grid_phy_lmdz.F90
Go to the documentation of this file.
1
!
2
!$Id $
3
!
4
MODULE
mod_grid_phy_lmdz
5
6
PUBLIC
7
PRIVATE
::
grid1dto2d_glo_igen
,
grid1dto2d_glo_rgen
,
grid1dto2d_glo_lgen
, &
8
grid2dto1d_glo_igen
,
grid2dto1d_glo_rgen
,
grid2dto1d_glo_lgen
9
10
INTEGER
,
SAVE
:: nbp_lon
! == iim
11
INTEGER
,
SAVE
:: nbp_lat
! == jjmp1
12
INTEGER
,
SAVE
:: nbp_lev
! == llm
13
INTEGER
,
SAVE
:: klon_glo
14
15
INTERFACE
grid1dto2d_glo
16
MODULE PROCEDURE
grid1dto2d_glo_i
,
grid1dto2d_glo_i1
,
grid1dto2d_glo_i2
,
grid1dto2d_glo_i3
, &
17
grid1dto2d_glo_r
,
grid1dto2d_glo_r1
,
grid1dto2d_glo_r2
,
grid1dto2d_glo_r3
, &
18
grid1dto2d_glo_l
,
grid1dto2d_glo_l1
,
grid1dto2d_glo_l2
,
grid1dto2d_glo_l3
19
END INTERFACE
20
21
INTERFACE
grid2dto1d_glo
22
MODULE PROCEDURE
grid2dto1d_glo_i
,
grid2dto1d_glo_i1
,
grid2dto1d_glo_i2
,
grid2dto1d_glo_i3
, &
23
grid2dto1d_glo_r
,
grid2dto1d_glo_r1
,
grid2dto1d_glo_r2
,
grid2dto1d_glo_r3
, &
24
grid2dto1d_glo_l
,
grid2dto1d_glo_l1
,
grid2dto1d_glo_l2
,
grid2dto1d_glo_l3
25
END INTERFACE
26
27
CONTAINS
28
29
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
30
!! SUBROUTINE grid1dTo2d !!
31
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
32
33
34
SUBROUTINE
init_grid_phy_lmdz
(iim,jjp1,llm)
35
IMPLICIT NONE
36
INTEGER
,
INTENT(in)
::
iim
37
INTEGER
,
INTENT(in)
::
jjp1
38
INTEGER
,
INTENT(in)
:: llm
39
40
nbp_lon=
iim
41
nbp_lat=
jjp1
42
nbp_lev=llm
43
klon_glo=(
iim
*
jjp1
)-2*(
iim
-1)
44
45
END SUBROUTINE
init_grid_phy_lmdz
46
47
48
SUBROUTINE
grid1dto2d_glo_i
(VarIn,VarOut)
49
IMPLICIT NONE
50
INTEGER
,
INTENT(IN)
,
DIMENSION(:)
:: varin
51
INTEGER
,
INTENT(OUT)
,
DIMENSION(:,:)
:: varout
52
53
CALL
grid1dto2d_glo_igen
(varin,varout,1)
54
55
END SUBROUTINE
grid1dto2d_glo_i
56
57
58
SUBROUTINE
grid1dto2d_glo_i1
(VarIn,VarOut)
59
IMPLICIT NONE
60
INTEGER
,
INTENT(IN)
,
DIMENSION(:,:)
:: varin
61
INTEGER
,
INTENT(OUT)
,
DIMENSION(:,:,:)
:: varout
62
63
CALL
grid1dto2d_glo_igen
(varin,varout,
size
(varin,2))
64
65
END SUBROUTINE
grid1dto2d_glo_i1
66
67
SUBROUTINE
grid1dto2d_glo_i2
(VarIn,VarOut)
68
IMPLICIT NONE
69
INTEGER
,
INTENT(IN)
,
DIMENSION(:,:,:)
:: varin
70
INTEGER
,
INTENT(OUT)
,
DIMENSION(:,:,:,:)
:: varout
71
72
CALL
grid1dto2d_glo_igen
(varin,varout,
size
(varin,2)*
size
(varin,3))
73
74
END SUBROUTINE
grid1dto2d_glo_i2
75
76
SUBROUTINE
grid1dto2d_glo_i3
(VarIn,VarOut)
77
IMPLICIT NONE
78
INTEGER
,
INTENT(IN)
,
DIMENSION(:,:,:,:)
:: varin
79
INTEGER
,
INTENT(OUT)
,
DIMENSION(:,:,:,:,:)
:: varout
80
81
CALL
grid1dto2d_glo_igen
(varin,varout,
size
(varin,2)*
size
(varin,3)*
size
(varin,4))
82
83
END SUBROUTINE
grid1dto2d_glo_i3
84
85
86
SUBROUTINE
grid1dto2d_glo_r
(VarIn,VarOut)
87
IMPLICIT NONE
88
REAL
,
INTENT(IN)
,
DIMENSION(:)
:: varin
89
REAL
,
INTENT(OUT)
,
DIMENSION(:,:)
:: varout
90
91
CALL
grid1dto2d_glo_rgen
(varin,varout,1)
92
93
END SUBROUTINE
grid1dto2d_glo_r
94
95
96
SUBROUTINE
grid1dto2d_glo_r1
(VarIn,VarOut)
97
IMPLICIT NONE
98
REAL
,
INTENT(IN)
,
DIMENSION(:,:)
:: varin
99
REAL
,
INTENT(OUT)
,
DIMENSION(:,:,:)
:: varout
100
101
CALL
grid1dto2d_glo_rgen
(varin,varout,
size
(varin,2))
102
103
END SUBROUTINE
grid1dto2d_glo_r1
104
105
SUBROUTINE
grid1dto2d_glo_r2
(VarIn,VarOut)
106
IMPLICIT NONE
107
REAL
,
INTENT(IN)
,
DIMENSION(:,:,:)
:: varin
108
REAL
,
INTENT(OUT)
,
DIMENSION(:,:,:,:)
:: varout
109
110
CALL
grid1dto2d_glo_rgen
(varin,varout,
size
(varin,2)*
size
(varin,3))
111
112
END SUBROUTINE
grid1dto2d_glo_r2
113
114
SUBROUTINE
grid1dto2d_glo_r3
(VarIn,VarOut)
115
IMPLICIT NONE
116
REAL
,
INTENT(IN)
,
DIMENSION(:,:,:,:)
:: varin
117
REAL
,
INTENT(OUT)
,
DIMENSION(:,:,:,:,:)
:: varout
118
119
CALL
grid1dto2d_glo_rgen
(varin,varout,
size
(varin,2)*
size
(varin,3)*
size
(varin,4))
120
121
END SUBROUTINE
grid1dto2d_glo_r3
122
123
124
125
SUBROUTINE
grid1dto2d_glo_l
(VarIn,VarOut)
126
IMPLICIT NONE
127
LOGICAL
,
INTENT(IN)
,
DIMENSION(:)
:: varin
128
LOGICAL
,
INTENT(OUT)
,
DIMENSION(:,:)
:: varout
129
130
CALL
grid1dto2d_glo_lgen
(varin,varout,1)
131
132
END SUBROUTINE
grid1dto2d_glo_l
133
134
135
SUBROUTINE
grid1dto2d_glo_l1
(VarIn,VarOut)
136
IMPLICIT NONE
137
LOGICAL
,
INTENT(IN)
,
DIMENSION(:,:)
:: varin
138
LOGICAL
,
INTENT(OUT)
,
DIMENSION(:,:,:)
:: varout
139
140
CALL
grid1dto2d_glo_lgen
(varin,varout,
size
(varin,2))
141
142
END SUBROUTINE
grid1dto2d_glo_l1
143
144
SUBROUTINE
grid1dto2d_glo_l2
(VarIn,VarOut)
145
IMPLICIT NONE
146
LOGICAL
,
INTENT(IN)
,
DIMENSION(:,:,:)
:: varin
147
LOGICAL
,
INTENT(OUT)
,
DIMENSION(:,:,:,:)
:: varout
148
149
CALL
grid1dto2d_glo_lgen
(varin,varout,
size
(varin,2)*
size
(varin,3))
150
151
END SUBROUTINE
grid1dto2d_glo_l2
152
153
SUBROUTINE
grid1dto2d_glo_l3
(VarIn,VarOut)
154
IMPLICIT NONE
155
LOGICAL
,
INTENT(IN)
,
DIMENSION(:,:,:,:)
:: varin
156
LOGICAL
,
INTENT(OUT)
,
DIMENSION(:,:,:,:,:)
:: varout
157
158
CALL
grid1dto2d_glo_lgen
(varin,varout,
size
(varin,2)*
size
(varin,3)*
size
(varin,4))
159
160
END SUBROUTINE
grid1dto2d_glo_l3
161
162
SUBROUTINE
grid2dto1d_glo_i
(VarIn,VarOut)
163
IMPLICIT NONE
164
INTEGER
,
INTENT(IN)
,
DIMENSION(:,:)
:: varin
165
INTEGER
,
INTENT(OUT)
,
DIMENSION(:)
:: varout
166
167
CALL
grid2dto1d_glo_igen
(varin,varout,1)
168
169
END SUBROUTINE
grid2dto1d_glo_i
170
171
172
SUBROUTINE
grid2dto1d_glo_i1
(VarIn,VarOut)
173
IMPLICIT NONE
174
INTEGER
,
INTENT(IN)
,
DIMENSION(:,:,:)
:: varin
175
INTEGER
,
INTENT(OUT)
,
DIMENSION(:,:)
:: varout
176
177
CALL
grid2dto1d_glo_igen
(varin,varout,
size
(varin,3))
178
179
END SUBROUTINE
grid2dto1d_glo_i1
180
181
SUBROUTINE
grid2dto1d_glo_i2
(VarIn,VarOut)
182
IMPLICIT NONE
183
INTEGER
,
INTENT(IN)
,
DIMENSION(:,:,:,:)
:: varin
184
INTEGER
,
INTENT(OUT)
,
DIMENSION(:,:,:)
:: varout
185
186
CALL
grid2dto1d_glo_igen
(varin,varout,
size
(varin,3)*
size
(varin,4))
187
188
END SUBROUTINE
grid2dto1d_glo_i2
189
190
SUBROUTINE
grid2dto1d_glo_i3
(VarIn,VarOut)
191
IMPLICIT NONE
192
INTEGER
,
INTENT(IN)
,
DIMENSION(:,:,:,:,:)
:: varin
193
INTEGER
,
INTENT(OUT)
,
DIMENSION(:,:,:,:)
:: varout
194
195
CALL
grid2dto1d_glo_igen
(varin,varout,
size
(varin,3)*
size
(varin,4)*
size
(varin,5))
196
197
END SUBROUTINE
grid2dto1d_glo_i3
198
199
200
201
202
SUBROUTINE
grid2dto1d_glo_r
(VarIn,VarOut)
203
IMPLICIT NONE
204
REAL
,
INTENT(IN)
,
DIMENSION(:,:)
:: varin
205
REAL
,
INTENT(OUT)
,
DIMENSION(:)
:: varout
206
207
CALL
grid2dto1d_glo_rgen
(varin,varout,1)
208
209
END SUBROUTINE
grid2dto1d_glo_r
210
211
212
SUBROUTINE
grid2dto1d_glo_r1
(VarIn,VarOut)
213
IMPLICIT NONE
214
REAL
,
INTENT(IN)
,
DIMENSION(:,:,:)
:: varin
215
REAL
,
INTENT(OUT)
,
DIMENSION(:,:)
:: varout
216
217
CALL
grid2dto1d_glo_rgen
(varin,varout,
size
(varin,3))
218
219
END SUBROUTINE
grid2dto1d_glo_r1
220
221
SUBROUTINE
grid2dto1d_glo_r2
(VarIn,VarOut)
222
IMPLICIT NONE
223
REAL
,
INTENT(IN)
,
DIMENSION(:,:,:,:)
:: varin
224
REAL
,
INTENT(OUT)
,
DIMENSION(:,:,:)
:: varout
225
226
CALL
grid2dto1d_glo_rgen
(varin,varout,
size
(varin,3)*
size
(varin,4))
227
228
END SUBROUTINE
grid2dto1d_glo_r2
229
230
SUBROUTINE
grid2dto1d_glo_r3
(VarIn,VarOut)
231
IMPLICIT NONE
232
REAL
,
INTENT(IN)
,
DIMENSION(:,:,:,:,:)
:: varin
233
REAL
,
INTENT(OUT)
,
DIMENSION(:,:,:,:)
:: varout
234
235
CALL
grid2dto1d_glo_rgen
(varin,varout,
size
(varin,3)*
size
(varin,4)*
size
(varin,5))
236
237
END SUBROUTINE
grid2dto1d_glo_r3
238
239
240
241
SUBROUTINE
grid2dto1d_glo_l
(VarIn,VarOut)
242
IMPLICIT NONE
243
LOGICAL
,
INTENT(IN)
,
DIMENSION(:,:)
:: varin
244
LOGICAL
,
INTENT(OUT)
,
DIMENSION(:)
:: varout
245
246
CALL
grid2dto1d_glo_lgen
(varin,varout,1)
247
248
END SUBROUTINE
grid2dto1d_glo_l
249
250
251
SUBROUTINE
grid2dto1d_glo_l1
(VarIn,VarOut)
252
IMPLICIT NONE
253
LOGICAL
,
INTENT(IN)
,
DIMENSION(:,:,:)
:: varin
254
LOGICAL
,
INTENT(OUT)
,
DIMENSION(:,:)
:: varout
255
256
CALL
grid2dto1d_glo_lgen
(varin,varout,
size
(varin,3))
257
258
END SUBROUTINE
grid2dto1d_glo_l1
259
260
SUBROUTINE
grid2dto1d_glo_l2
(VarIn,VarOut)
261
IMPLICIT NONE
262
LOGICAL
,
INTENT(IN)
,
DIMENSION(:,:,:,:)
:: varin
263
LOGICAL
,
INTENT(OUT)
,
DIMENSION(:,:,:)
:: varout
264
265
CALL
grid2dto1d_glo_lgen
(varin,varout,
size
(varin,3)*
size
(varin,4))
266
267
END SUBROUTINE
grid2dto1d_glo_l2
268
269
SUBROUTINE
grid2dto1d_glo_l3
(VarIn,VarOut)
270
IMPLICIT NONE
271
LOGICAL
,
INTENT(IN)
,
DIMENSION(:,:,:,:,:)
:: varin
272
LOGICAL
,
INTENT(OUT)
,
DIMENSION(:,:,:,:)
:: varout
273
274
CALL
grid2dto1d_glo_lgen
(varin,varout,
size
(varin,3)*
size
(varin,4)*
size
(varin,5))
275
276
END SUBROUTINE
grid2dto1d_glo_l3
277
278
!----------------------------------------------------------------
279
! Generic (private) fonctions
280
!----------------------------------------------------------------
281
282
SUBROUTINE
grid1dto2d_glo_igen
(VarIn,VarOut,dimsize)
283
284
IMPLICIT NONE
285
286
INTEGER
,
INTENT(IN)
:: dimsize
287
INTEGER
,
INTENT(IN)
,
DIMENSION(klon_glo,dimsize)
:: varin
288
INTEGER
,
INTENT(OUT)
,
DIMENSION(nbp_lon*nbp_lat,dimsize)
:: varout
289
INTEGER
::
i
,
ij
,offset
290
291
292
offset=nbp_lon
293
294
DO
i
=1,dimsize
295
DO
ij
=1,klon_glo
296
varout(
ij
+offset-1,
i
)=varin(
ij
,
i
)
297
ENDDO
298
ENDDO
299
300
301
DO
i
=1,dimsize
302
DO
ij
=1,nbp_lon
303
varout(
ij
,
i
)=varin(1,
i
)
304
ENDDO
305
ENDDO
306
307
308
DO
i
=1,dimsize
309
DO
ij
=nbp_lon*(nbp_lat-1)+1,nbp_lat*nbp_lon
310
varout(
ij
,
i
)=varin(klon_glo,
i
)
311
ENDDO
312
ENDDO
313
314
END SUBROUTINE
grid1dto2d_glo_igen
315
316
317
SUBROUTINE
grid1dto2d_glo_rgen
(VarIn,VarOut,dimsize)
318
319
IMPLICIT NONE
320
321
INTEGER
,
INTENT(IN)
:: dimsize
322
REAL
,
INTENT(IN)
,
DIMENSION(klon_glo,dimsize)
:: varin
323
REAL
,
INTENT(OUT)
,
DIMENSION(nbp_lon*nbp_lat,dimsize)
:: varout
324
INTEGER
::
i
,
ij
,offset
325
326
327
offset=nbp_lon
328
329
DO
i
=1,dimsize
330
DO
ij
=1,klon_glo
331
varout(
ij
+offset-1,
i
)=varin(
ij
,
i
)
332
ENDDO
333
ENDDO
334
335
336
DO
i
=1,dimsize
337
DO
ij
=1,nbp_lon
338
varout(
ij
,
i
)=varin(1,
i
)
339
ENDDO
340
ENDDO
341
342
343
DO
i
=1,dimsize
344
DO
ij
=nbp_lon*(nbp_lat-1)+1,nbp_lat*nbp_lon
345
varout(
ij
,
i
)=varin(klon_glo,
i
)
346
ENDDO
347
ENDDO
348
349
END SUBROUTINE
grid1dto2d_glo_rgen
350
351
SUBROUTINE
grid1dto2d_glo_lgen
(VarIn,VarOut,dimsize)
352
353
IMPLICIT NONE
354
355
INTEGER
,
INTENT(IN)
:: dimsize
356
LOGICAL
,
INTENT(IN)
,
DIMENSION(klon_glo,dimsize)
:: varin
357
LOGICAL
,
INTENT(OUT)
,
DIMENSION(nbp_lon*nbp_lat,dimsize)
:: varout
358
INTEGER
::
i
,
ij
,offset
359
360
offset=nbp_lon
361
362
DO
i
=1,dimsize
363
DO
ij
=1,klon_glo
364
varout(
ij
+offset-1,
i
)=varin(
ij
,
i
)
365
ENDDO
366
ENDDO
367
368
369
DO
i
=1,dimsize
370
DO
ij
=1,nbp_lon
371
varout(
ij
,
i
)=varin(1,
i
)
372
ENDDO
373
ENDDO
374
375
376
DO
i
=1,dimsize
377
DO
ij
=nbp_lon*(nbp_lat-1)+1,nbp_lat*nbp_lon
378
varout(
ij
,
i
)=varin(klon_glo,
i
)
379
ENDDO
380
ENDDO
381
382
END SUBROUTINE
grid1dto2d_glo_lgen
383
384
385
SUBROUTINE
grid2dto1d_glo_igen
(VarIn,VarOut,dimsize)
386
387
IMPLICIT NONE
388
389
INTEGER
,
INTENT(IN)
:: dimsize
390
INTEGER
,
INTENT(IN)
,
DIMENSION(nbp_lon*nbp_lat,dimsize)
:: varin
391
INTEGER
,
INTENT(OUT)
,
DIMENSION(klon_glo,dimsize)
:: varout
392
INTEGER
::
i
,
ij
,offset
393
394
offset=nbp_lon
395
396
DO
i
=1,dimsize
397
DO
ij
=1,klon_glo
398
varout(
ij
,
i
)=varin(
ij
+offset-1,
i
)
399
ENDDO
400
ENDDO
401
402
DO
i
=1,dimsize
403
varout(1,
i
)=varin(1,
i
)
404
ENDDO
405
406
END SUBROUTINE
grid2dto1d_glo_igen
407
408
SUBROUTINE
grid2dto1d_glo_rgen
(VarIn,VarOut,dimsize)
409
410
IMPLICIT NONE
411
412
INTEGER
,
INTENT(IN)
:: dimsize
413
REAL
,
INTENT(IN)
,
DIMENSION(nbp_lon*nbp_lat,dimsize)
:: varin
414
REAL
,
INTENT(OUT)
,
DIMENSION(klon_glo,dimsize)
:: varout
415
INTEGER
::
i
,
ij
,offset
416
417
offset=nbp_lon
418
419
DO
i
=1,dimsize
420
DO
ij
=1,klon_glo
421
varout(
ij
,
i
)=varin(
ij
+offset-1,
i
)
422
ENDDO
423
ENDDO
424
425
DO
i
=1,dimsize
426
varout(1,
i
)=varin(1,
i
)
427
ENDDO
428
429
END SUBROUTINE
grid2dto1d_glo_rgen
430
431
SUBROUTINE
grid2dto1d_glo_lgen
(VarIn,VarOut,dimsize)
432
433
IMPLICIT NONE
434
435
INTEGER
,
INTENT(IN)
:: dimsize
436
LOGICAL
,
INTENT(IN)
,
DIMENSION(nbp_lon*nbp_lat,dimsize)
:: varin
437
LOGICAL
,
INTENT(OUT)
,
DIMENSION(klon_glo,dimsize)
:: varout
438
INTEGER
::
i
,
ij
,offset
439
440
offset=nbp_lon
441
442
DO
i
=1,dimsize
443
DO
ij
=1,klon_glo
444
varout(
ij
,
i
)=varin(
ij
+offset-1,
i
)
445
ENDDO
446
ENDDO
447
448
DO
i
=1,dimsize
449
varout(1,
i
)=varin(1,
i
)
450
ENDDO
451
452
END SUBROUTINE
grid2dto1d_glo_lgen
453
454
END MODULE
mod_grid_phy_lmdz
libf
phydev
mod_grid_phy_lmdz.F90
Generated on Fri Jun 28 2013 15:58:44 for My Project by
1.8.1.2