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

Last change on this file since 1660 was 1632, checked in by Laurent Fairhead, 12 years ago

Import initial du répertoire dyn3dmem

Attention! ceci n'est qu'une version préliminaire du code "basse mémoire":
le code contenu dans ce répertoire est basé sur la r1320 et a donc besoin
d'être mis à jour par rapport à la dynamique parallèle d'aujourd'hui.
Ce code est toutefois mis à disposition pour circonvenir à des problèmes
de mémoire que certaines configurations du modèle pourraient rencontrer.
Dans l'état, il compile et tourne sur vargas et au CCRT


Initial import of dyn3dmem

Warning! this is just a preliminary version of the memory light code:
it is based on r1320 of the code and thus needs to be updated before
it can replace the present dyn3dpar code. It is nevertheless put at your
disposal to circumvent some memory problems some LMDZ configurations may
encounter. In its present state, it will compile and run on vargas and CCRT

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
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
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
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 
156END MODULE leapfrog_mod 
157
158
159
160
161
162
163
Note: See TracBrowser for help on using the repository browser.