source: LMDZ5/trunk/libf/dyn3dmem/leapfrog_mod.F90 @ 1810

Last change on this file since 1810 was 1810, checked in by Ehouarn Millour, 11 years ago

Updating makelmdz and create_makelmdz for :

1 parallelism
2 compilation with various versions of orchidee
3 compilation in 1D mode
4 some cleaning

Also some updates in dyn3dmem:
1 allocate_field_mod.f90 renamed allocate_field_mod.F90
2 module dimensions renamed dimensions_mod
3 module allocate_field renamed allocate_field

FH

File size: 4.7 KB
Line 
1MODULE leapfrog_mod
2
3  REAL,POINTER,SAVE :: ucov(:,:)
4  REAL,POINTER,SAVE :: vcov(:,:)
5  REAL,POINTER,SAVE :: teta(:,:)
6  REAL,POINTER,SAVE :: ps(:)
7  REAL,POINTER,SAVE :: masse(:,:)
8  REAL,POINTER,SAVE :: phis(:)
9  REAL,POINTER,SAVE :: q(:,:,:)
10  REAL,POINTER,SAVE :: p(:,:)
11  REAL,POINTER,SAVE :: pks(:)
12  REAL,POINTER,SAVE :: pk(:,:)
13  REAL,POINTER,SAVE :: pkf(:,:)
14  REAL,POINTER,SAVE :: phi(:,:)
15  REAL,POINTER,SAVE :: w(:,:)
16  REAL,POINTER,SAVE :: pbaru(:,:)
17  REAL,POINTER,SAVE :: pbarv(:,:)
18  REAL,POINTER,SAVE :: vcovm1(:,:)
19  REAL,POINTER,SAVE :: ucovm1(:,:)
20  REAL,POINTER,SAVE :: tetam1(:,:)
21  REAL,POINTER,SAVE :: psm1(:)
22  REAL,POINTER,SAVE :: massem1(:,:)
23  REAL,POINTER,SAVE :: dv(:,:)
24  REAL,POINTER,SAVE :: du(:,:)
25  REAL,POINTER,SAVE :: dteta(:,:)
26  REAL,POINTER,SAVE :: dp(:)
27  REAL,POINTER,SAVE :: dq(:,:,:)
28  REAL,POINTER,SAVE :: finvmaold(:,:)
29  REAL,POINTER,SAVE :: alpha(:,:)
30  REAL,POINTER,SAVE :: beta(:,:)
31  REAL,POINTER,SAVE :: flxw(:,:)
32  REAL,POINTER,SAVE :: unat(:,:)
33  REAL,POINTER,SAVE :: vnat(:,:)
34 
35
36 
37CONTAINS
38
39  SUBROUTINE leapfrog_allocate
40  USE bands
41  USE allocate_field_mod
42  USE parallel
43  USE dimensions_mod
44  USE infotrac
45  USE caldyn_mod,ONLY : caldyn_allocate
46  USE integrd_mod,ONLY : integrd_allocate
47  USE caladvtrac_mod,ONLY : caladvtrac_allocate
48  USE call_calfis_mod,ONLY : call_calfis_allocate
49  USE call_dissip_mod, ONLY : call_dissip_allocate
50  IMPLICIT NONE
51  TYPE(distrib),POINTER :: d
52
53
54    d=>distrib_caldyn
55    CALL allocate_u(ucov,llm,d)
56    CALL allocate_v(vcov,llm,d)
57    CALL allocate_u(teta,llm,d)
58    CALL allocate_u(ps,d)
59    CALL allocate_u(masse,llm,d)
60    CALL allocate_u(phis,d)
61    CALL allocate_u(q,llm,nqtot,d)
62    CALL allocate_u(p,llmp1,d)
63    CALL allocate_u(pks,d)
64    CALL allocate_u(pk,llm,d)
65    CALL allocate_u(pkf,llm,d)
66    CALL allocate_u(phi,llm,d)
67    CALL allocate_u(w,llm,d)
68    CALL allocate_u(pbaru,llm,d)
69    CALL allocate_v(pbarv,llm,d)
70    CALL allocate_v(vcovm1,llm,d)
71    CALL allocate_u(ucovm1,llm,d)
72    CALL allocate_u(tetam1,llm,d)
73    CALL allocate_u(psm1,d)
74    CALL allocate_u(massem1,llm,d)
75    CALL allocate_v(dv,llm,d)
76    CALL allocate_u(du,llm,d)
77    CALL allocate_u(dteta,llm,d)
78    CALL allocate_u(dp,d)
79    CALL allocate_u(dq,llm,nqtot,d)
80    CALL allocate_u(finvmaold,llm,d)
81    CALL allocate_u(alpha,llm,d)
82    CALL allocate_u(beta,llm,d)
83    CALL allocate_u(flxw,llm,d)
84    CALL allocate_u(unat,llm,d)
85    CALL allocate_v(vnat,llm,d)
86   
87    CALL caldyn_allocate
88    CALL integrd_allocate
89    CALL caladvtrac_allocate
90    CALL call_calfis_allocate
91    CALL call_dissip_allocate
92       
93  END SUBROUTINE leapfrog_allocate
94 
95  SUBROUTINE leapfrog_switch_caldyn(dist)
96  USE allocate_field_mod
97  USE bands
98  USE parallel
99  USE caldyn_mod,ONLY : caldyn_switch_caldyn
100  USE integrd_mod,ONLY : integrd_switch_caldyn
101  USE caladvtrac_mod,ONLY : caladvtrac_switch_caldyn
102  IMPLICIT NONE
103    TYPE(distrib),INTENT(IN) :: dist
104
105    CALL switch_u(ucov,distrib_caldyn,dist)
106    CALL switch_v(vcov,distrib_caldyn,dist)
107    CALL switch_u(teta,distrib_caldyn,dist)
108    CALL switch_u(ps,distrib_caldyn,dist)
109    CALL switch_u(masse,distrib_caldyn,dist)
110    CALL switch_u(phis,distrib_caldyn,dist,up=halo_max,down=halo_max)
111    CALL switch_u(q,distrib_caldyn,dist)
112    CALL switch_u(p,distrib_caldyn,dist)
113    CALL switch_u(pks,distrib_caldyn,dist)
114    CALL switch_u(pk,distrib_caldyn,dist)
115    CALL switch_u(pkf,distrib_caldyn,dist)
116    CALL switch_u(phi,distrib_caldyn,dist)
117    CALL switch_u(w,distrib_caldyn,dist)
118    CALL switch_u(pbaru,distrib_caldyn,dist)
119    CALL switch_v(pbarv,distrib_caldyn,dist)
120    CALL switch_v(vcovm1,distrib_caldyn,dist)
121    CALL switch_u(ucovm1,distrib_caldyn,dist)
122    CALL switch_u(tetam1,distrib_caldyn,dist)
123    CALL switch_u(psm1,distrib_caldyn,dist)
124    CALL switch_u(massem1,distrib_caldyn,dist)
125    CALL switch_v(dv,distrib_caldyn,dist)
126    CALL switch_u(du,distrib_caldyn,dist)
127    CALL switch_u(dteta,distrib_caldyn,dist)
128    CALL switch_u(dp,distrib_caldyn,dist)
129    CALL switch_u(dq,distrib_caldyn,dist)
130    CALL switch_u(finvmaold,distrib_caldyn,dist)
131    CALL switch_u(alpha,distrib_caldyn,dist)
132    CALL switch_u(beta,distrib_caldyn,dist)
133    CALL switch_u(flxw,distrib_caldyn,dist)
134    CALL switch_u(unat,distrib_caldyn,dist)
135    CALL switch_v(vnat,distrib_caldyn,dist)
136
137   
138    CALL caldyn_switch_caldyn(dist)
139    CALL integrd_switch_caldyn(dist)
140    CALL caladvtrac_switch_caldyn(dist)
141   
142  END SUBROUTINE leapfrog_switch_caldyn
143 
144  SUBROUTINE leapfrog_switch_dissip(dist)
145  USE allocate_field_mod
146  USE bands
147  USE parallel
148  USE call_dissip_mod,ONLY : call_dissip_switch_dissip
149  IMPLICIT NONE
150    TYPE(distrib),INTENT(IN) :: dist
151
152    CALL call_dissip_switch_dissip(dist)
153   
154  END SUBROUTINE leapfrog_switch_dissip
155 
156END MODULE leapfrog_mod 
157
158
159
160
161
162
163
Note: See TracBrowser for help on using the repository browser.