My Project
 All Classes Files Functions Variables Macros
leapfrog_mod.F90
Go to the documentation of this file.
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 
37 CONTAINS
38 
39  SUBROUTINE leapfrog_allocate
40  USE bands
41  USE allocate_field
42  USE parallel
43  USE dimensions
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
92 
93  END SUBROUTINE leapfrog_allocate
94 
95  SUBROUTINE leapfrog_switch_caldyn(dist)
96  USE allocate_field
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
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 
156 END MODULE leapfrog_mod
157 
158 
159 
160 
161 
162 
163