1 | MODULE leapfrog_mod |
---|
2 | |
---|
3 | REAL,POINTER,SAVE :: ucov(:,:) ! zonal covariant wind |
---|
4 | REAL,POINTER,SAVE :: vcov(:,:) ! meridional covariant wind |
---|
5 | REAL,POINTER,SAVE :: teta(:,:) ! potential temperature |
---|
6 | REAL,POINTER,SAVE :: ps(:) ! surface pressure |
---|
7 | REAL,POINTER,SAVE :: masse(:,:) ! air mass |
---|
8 | REAL,POINTER,SAVE :: phis(:) ! geopotential at the surface |
---|
9 | REAL,POINTER,SAVE :: q(:,:,:) ! advected tracers |
---|
10 | REAL,POINTER,SAVE :: p(:,:) ! interlayer pressure |
---|
11 | REAL,POINTER,SAVE :: pks(:) ! Exner at the surface |
---|
12 | REAL,POINTER,SAVE :: pk(:,:) ! Exner at mid-layer |
---|
13 | REAL,POINTER,SAVE :: pkf(:,:) ! filtered Exner |
---|
14 | REAL,POINTER,SAVE :: phi(:,:) ! geopotential |
---|
15 | REAL,POINTER,SAVE :: w(:,:) ! vertical velocity |
---|
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 :: flxw(:,:) |
---|
30 | REAL,POINTER,SAVE :: unat(:,:) |
---|
31 | REAL,POINTER,SAVE :: vnat(:,:) |
---|
32 | |
---|
33 | |
---|
34 | |
---|
35 | CONTAINS |
---|
36 | |
---|
37 | SUBROUTINE leapfrog_allocate |
---|
38 | USE bands |
---|
39 | USE allocate_field_mod |
---|
40 | USE parallel_lmdz |
---|
41 | USE lmdz_dimensions |
---|
42 | USE lmdz_paramet |
---|
43 | USE lmdz_infotrac |
---|
44 | USE caldyn_mod,ONLY: caldyn_allocate |
---|
45 | USE integrd_mod,ONLY: integrd_allocate |
---|
46 | USE caladvtrac_mod,ONLY: caladvtrac_allocate |
---|
47 | USE lmdz_call_calfis,ONLY: call_calfis_allocate |
---|
48 | USE call_dissip_mod, ONLY: call_dissip_allocate |
---|
49 | IMPLICIT NONE |
---|
50 | TYPE(distrib),POINTER :: d |
---|
51 | |
---|
52 | |
---|
53 | d=>distrib_caldyn |
---|
54 | CALL allocate_u(ucov,llm,d) |
---|
55 | CALL allocate_v(vcov,llm,d) |
---|
56 | CALL allocate_u(teta,llm,d) |
---|
57 | CALL allocate_u(ps,d) |
---|
58 | CALL allocate_u(masse,llm,d) |
---|
59 | CALL allocate_u(phis,d) |
---|
60 | CALL allocate_u(q,llm,nqtot,d) |
---|
61 | CALL allocate_u(p,llmp1,d) |
---|
62 | CALL allocate_u(pks,d) |
---|
63 | CALL allocate_u(pk,llm,d) |
---|
64 | CALL allocate_u(pkf,llm,d) |
---|
65 | CALL allocate_u(phi,llm,d) |
---|
66 | CALL allocate_u(w,llm,d) |
---|
67 | CALL allocate_u(pbaru,llm,d) |
---|
68 | CALL allocate_v(pbarv,llm,d) |
---|
69 | CALL allocate_v(vcovm1,llm,d) |
---|
70 | CALL allocate_u(ucovm1,llm,d) |
---|
71 | CALL allocate_u(tetam1,llm,d) |
---|
72 | CALL allocate_u(psm1,d) |
---|
73 | CALL allocate_u(massem1,llm,d) |
---|
74 | CALL allocate_v(dv,llm,d) |
---|
75 | CALL allocate_u(du,llm,d) |
---|
76 | CALL allocate_u(dteta,llm,d) |
---|
77 | CALL allocate_u(dp,d) |
---|
78 | CALL allocate_u(dq,llm,nqtot,d) |
---|
79 | CALL allocate_u(finvmaold,llm,d) |
---|
80 | CALL allocate_u(flxw,llm,d) |
---|
81 | CALL allocate_u(unat,llm,d) |
---|
82 | CALL allocate_v(vnat,llm,d) |
---|
83 | |
---|
84 | CALL caldyn_allocate |
---|
85 | CALL integrd_allocate |
---|
86 | CALL caladvtrac_allocate |
---|
87 | CALL call_calfis_allocate |
---|
88 | CALL call_dissip_allocate |
---|
89 | |
---|
90 | END SUBROUTINE leapfrog_allocate |
---|
91 | |
---|
92 | SUBROUTINE leapfrog_switch_caldyn(dist) |
---|
93 | USE allocate_field_mod |
---|
94 | USE bands |
---|
95 | USE parallel_lmdz |
---|
96 | USE caldyn_mod,ONLY: caldyn_switch_caldyn |
---|
97 | USE integrd_mod,ONLY: integrd_switch_caldyn |
---|
98 | USE caladvtrac_mod,ONLY: caladvtrac_switch_caldyn |
---|
99 | IMPLICIT NONE |
---|
100 | TYPE(distrib),INTENT(IN) :: dist |
---|
101 | |
---|
102 | CALL switch_u(ucov,distrib_caldyn,dist) |
---|
103 | CALL switch_v(vcov,distrib_caldyn,dist) |
---|
104 | CALL switch_u(teta,distrib_caldyn,dist) |
---|
105 | CALL switch_u(ps,distrib_caldyn,dist) |
---|
106 | CALL switch_u(masse,distrib_caldyn,dist) |
---|
107 | CALL switch_u(phis,distrib_caldyn,dist,up=halo_max,down=halo_max) |
---|
108 | CALL switch_u(q,distrib_caldyn,dist) |
---|
109 | CALL switch_u(p,distrib_caldyn,dist) |
---|
110 | CALL switch_u(pks,distrib_caldyn,dist) |
---|
111 | CALL switch_u(pk,distrib_caldyn,dist) |
---|
112 | CALL switch_u(pkf,distrib_caldyn,dist) |
---|
113 | CALL switch_u(phi,distrib_caldyn,dist) |
---|
114 | CALL switch_u(w,distrib_caldyn,dist) |
---|
115 | CALL switch_u(pbaru,distrib_caldyn,dist) |
---|
116 | CALL switch_v(pbarv,distrib_caldyn,dist) |
---|
117 | CALL switch_v(vcovm1,distrib_caldyn,dist) |
---|
118 | CALL switch_u(ucovm1,distrib_caldyn,dist) |
---|
119 | CALL switch_u(tetam1,distrib_caldyn,dist) |
---|
120 | CALL switch_u(psm1,distrib_caldyn,dist) |
---|
121 | CALL switch_u(massem1,distrib_caldyn,dist) |
---|
122 | CALL switch_v(dv,distrib_caldyn,dist) |
---|
123 | CALL switch_u(du,distrib_caldyn,dist) |
---|
124 | CALL switch_u(dteta,distrib_caldyn,dist) |
---|
125 | CALL switch_u(dp,distrib_caldyn,dist) |
---|
126 | CALL switch_u(dq,distrib_caldyn,dist) |
---|
127 | CALL switch_u(finvmaold,distrib_caldyn,dist) |
---|
128 | CALL switch_u(flxw,distrib_caldyn,dist) |
---|
129 | CALL switch_u(unat,distrib_caldyn,dist) |
---|
130 | CALL switch_v(vnat,distrib_caldyn,dist) |
---|
131 | |
---|
132 | |
---|
133 | CALL caldyn_switch_caldyn(dist) |
---|
134 | CALL integrd_switch_caldyn(dist) |
---|
135 | CALL caladvtrac_switch_caldyn(dist) |
---|
136 | |
---|
137 | END SUBROUTINE leapfrog_switch_caldyn |
---|
138 | |
---|
139 | SUBROUTINE leapfrog_switch_dissip(dist) |
---|
140 | USE allocate_field_mod |
---|
141 | USE bands |
---|
142 | USE parallel_lmdz |
---|
143 | USE call_dissip_mod,ONLY: call_dissip_switch_dissip |
---|
144 | IMPLICIT NONE |
---|
145 | TYPE(distrib),INTENT(IN) :: dist |
---|
146 | |
---|
147 | CALL call_dissip_switch_dissip(dist) |
---|
148 | |
---|
149 | END SUBROUTINE leapfrog_switch_dissip |
---|
150 | |
---|
151 | END MODULE leapfrog_mod |
---|
152 | |
---|
153 | |
---|
154 | |
---|
155 | |
---|
156 | |
---|
157 | |
---|
158 | |
---|