source: LMDZ5/branches/IPSLCM5A2.1_ISO/libf/dyn3dmem/initdynav_loc.F @ 4003

Last change on this file since 4003 was 2603, checked in by Ehouarn Millour, 8 years ago

Cleanup in the dynamics: turn logic.h into module logic_mod.F90
EM

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
File size: 7.6 KB
Line 
1!
2! $Id: initdynav_p.F 1279 2009-12-10 09:02:56Z fairhead $
3!
4      subroutine initdynav_loc(day0,anne0,tstep,t_ops,t_wrt)
5
6#ifdef CPP_IOIPSL
7! This routine needs IOIPSL
8       USE IOIPSL
9#endif
10       USE parallel_lmdz
11       use Write_field
12       use misc_mod
13       USE infotrac
14       use com_io_dyn_mod, only : histaveid,histvaveid,histuaveid,       &
15     &        dynhistave_file,dynhistvave_file,dynhistuave_file
16       USE comconst_mod, ONLY: pi
17       USE comvert_mod, ONLY: presnivs
18       USE temps_mod, ONLY: itau_dyn
19       
20       implicit none
21
22C
23C   Routine d'initialisation des ecritures des fichiers histoires LMDZ
24C   au format IOIPSL. Initialisation du fichier histoire moyenne.
25C
26C   Appels succesifs des routines: histbeg
27C                                  histhori
28C                                  histver
29C                                  histdef
30C                                  histend
31C
32C   Entree:
33C
34C      day0,anne0: date de reference
35C      tstep : frequence d'ecriture
36C      t_ops: frequence de l'operation pour IOIPSL
37C      t_wrt: frequence d'ecriture sur le fichier
38C
39C   Sortie:
40C      fileid: ID du fichier netcdf cree
41C
42C   L. Fairhead, LMD, 03/99
43C
44C =====================================================================
45C
46C   Declarations
47      include "dimensions.h"
48      include "paramet.h"
49      include "comgeom.h"
50      include "ener.h"
51      include "description.h"
52      include "iniprint.h"
53
54C   Arguments
55C
56      integer*4 day0, anne0
57      real tstep, t_ops, t_wrt
58
59#ifdef CPP_IOIPSL
60! This routine needs IOIPSL
61C   Variables locales
62C
63      integer tau0
64      real zjulian
65      integer iq
66      real rlong(iip1,jjp1), rlat(iip1,jjp1)
67      integer uhoriid, vhoriid, thoriid
68      integer zvertiid,zvertiidv,zvertiidu
69      integer ii,jj
70      integer zan, dayref
71      integer :: jjb,jje,jjn
72
73! definition du domaine d'ecriture pour le rebuild
74
75      INTEGER,DIMENSION(2) :: ddid
76      INTEGER,DIMENSION(2) :: dsg
77      INTEGER,DIMENSION(2) :: dsl
78      INTEGER,DIMENSION(2) :: dpf
79      INTEGER,DIMENSION(2) :: dpl
80      INTEGER,DIMENSION(2) :: dhs
81      INTEGER,DIMENSION(2) :: dhe
82     
83      INTEGER :: dynhistave_domain_id
84      INTEGER :: dynhistvave_domain_id
85      INTEGER :: dynhistuave_domain_id
86     
87      if (adjust) return
88
89C
90C  Initialisations
91C
92      pi = 4. * atan (1.)
93C
94C  Appel a histbeg: creation du fichier netcdf et initialisations diverses
95C         
96
97      zan = anne0
98      dayref = day0
99      CALL ymds2ju(zan, 1, dayref, 0.0, zjulian)
100      tau0 = itau_dyn
101     
102      do jj = 1, jjp1
103        do ii = 1, iip1
104          rlong(ii,jj) = rlonv(ii) * 180. / pi
105          rlat(ii,jj)  = rlatu(jj) * 180. / pi
106        enddo
107      enddo
108
109
110! Creation de 3 fichiers pour les differentes grilles horizontales
111! Restriction de IOIPSL: seulement 2 coordonnees dans le meme fichier
112! Grille Scalaire       
113
114      jjb=jj_begin
115      jje=jj_end
116      jjn=jj_nb
117
118      ddid=(/ 1,2 /)
119      dsg=(/ iip1,jjp1 /)
120      dsl=(/ iip1,jjn /)
121      dpf=(/ 1,jjb /)
122      dpl=(/ iip1,jje /)
123      dhs=(/ 0,0 /)
124      dhe=(/ 0,0 /)
125
126
127      call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe,
128     .                 'box',dynhistave_domain_id)
129             
130      call histbeg(dynhistave_file,iip1, rlong(:,1), jjn,
131     .             rlat(1,jjb:jje), 1, iip1, 1, jjn,tau0,
132     .             zjulian, tstep, thoriid,
133     .             histaveid,dynhistave_domain_id)
134
135
136C  Creation du fichier histoire pour les grilles en V et U (oblige pour l'instant,
137C  IOIPSL ne permet pas de grilles avec des nombres de point differents dans
138C  un meme fichier)
139! Grille V
140
141      jjb=jj_begin
142      jje=jj_end
143      jjn=jj_nb
144      IF (pole_sud) jjn=jjn-1
145      IF (pole_sud) jje=jje-1
146     
147      do jj = jjb, jje
148        do ii = 1, iip1
149          rlong(ii,jj) = rlonv(ii) * 180. / pi
150          rlat(ii,jj) = rlatv(jj) * 180. / pi
151        enddo
152      enddo
153
154      ddid=(/ 1,2 /)
155      dsg=(/ iip1,jjm /)
156      dsl=(/ iip1,jjn /)
157      dpf=(/ 1,jjb /)
158      dpl=(/ iip1,jje /)
159      dhs=(/ 0,0 /)
160      dhe=(/ 0,0 /)
161
162
163      call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe,
164     .                 'box',dynhistvave_domain_id)
165
166      call histbeg(dynhistvave_file,iip1, rlong(:,1), jjn,
167     .             rlat(1,jjb:jje), 1, iip1, 1, jjn,tau0,
168     .             zjulian, tstep, vhoriid,
169     .             histvaveid,dynhistvave_domain_id)
170     
171! Grille U
172
173      do jj = 1, jjp1
174        do ii = 1, iip1
175          rlong(ii,jj) = rlonu(ii) * 180. / pi
176          rlat(ii,jj) = rlatu(jj) * 180. / pi
177        enddo
178      enddo
179
180      jjb=jj_begin
181      jje=jj_end
182      jjn=jj_nb
183
184      ddid=(/ 1,2 /)
185      dsg=(/ iip1,jjp1 /)
186      dsl=(/ iip1,jjn /)
187      dpf=(/ 1,jjb /)
188      dpl=(/ iip1,jje /)
189      dhs=(/ 0,0 /)
190      dhe=(/ 0,0 /)
191
192
193      call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe,
194     .                 'box',dynhistuave_domain_id)
195             
196      call histbeg(dynhistuave_file,iip1, rlong(:,1), jjn,
197     .             rlat(1,jjb:jje), 1, iip1, 1, jjn,tau0,
198     .             zjulian, tstep, uhoriid,
199     .             histuaveid,dynhistuave_domain_id)
200     
201     
202C
203C  Appel a histvert pour la grille verticale
204C
205      call histvert(histaveid,'presnivs','Niveaux Pression
206     &     approximatifs','mb',llm, presnivs/100., zvertiid,'down')
207      call histvert(histuaveid,'presnivs','Niveaux Pression
208     &     approximatifs','mb',llm, presnivs/100., zvertiidv,'down')
209      call histvert(histvaveid,'presnivs','Niveaux Pression
210     &     approximatifs','mb',llm, presnivs/100., zvertiidu,'down')
211
212C
213C  Appels a histdef pour la definition des variables a sauvegarder
214C
215C  Vents U
216C
217      jjn=jj_nb
218      call histdef(histuaveid, 'u', 'vent u moyen ',
219     .             'm/s', iip1, jjn, uhoriid, llm, 1, llm, zvertiidu,
220     .             32, 'ave(X)', t_ops, t_wrt)
221
222C
223C  Vents V
224C
225      if (pole_sud) jjn=jj_nb-1
226      call histdef(histvaveid, 'v', 'vent v moyen',
227     .             'm/s', iip1, jjn, vhoriid, llm, 1, llm, zvertiidv,
228     .             32, 'ave(X)', t_ops, t_wrt)
229
230C
231C  Temperature
232C
233      jjn=jj_nb
234      call histdef(histaveid, 'temp', 'temperature moyenne', 'K',
235     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
236     .             32, 'ave(X)', t_ops, t_wrt)
237C
238C  Temperature potentielle
239C
240      call histdef(histaveid, 'theta', 'temperature potentielle', 'K',
241     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
242     .             32, 'ave(X)', t_ops, t_wrt)
243
244
245C
246C  Geopotentiel
247C
248      call histdef(histaveid, 'phi', 'geopotentiel moyen', '-',
249     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
250     .             32, 'ave(X)', t_ops, t_wrt)
251C
252C  Traceurs
253C
254!        DO iq=1,nqtot
255!          call histdef(histaveid, ttext(iq), ttext(iq), '-',
256!     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
257!     .             32, 'ave(X)', t_ops, t_wrt)
258!        enddo
259C
260C  Masse
261C
262      call histdef(histaveid, 'masse', 'masse moyenne', 'kg',
263     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
264     .             32, 'ave(X)', t_ops, t_wrt)
265C
266C  Pression au sol
267C
268      call histdef(histaveid, 'ps', 'pression naturelle au sol', 'Pa',
269     .             iip1, jjn, thoriid, 1, 1, 1, -99,
270     .             32, 'ave(X)', t_ops, t_wrt)
271C
272C  Geopotentiel au sol
273C
274!      call histdef(histaveid, 'phis', 'geopotentiel au sol', '-',
275!     .             iip1, jjn, thoriid, 1, 1, 1, -99,
276!     .             32, 'ave(X)', t_ops, t_wrt)
277C
278C  Fin
279C
280      call histend(histaveid)
281      call histend(histuaveid)
282      call histend(histvaveid)
283#else
284      write(lunout,*)'initdynav_loc: Needs IOIPSL to function'
285#endif
286! #endif of #ifdef CPP_IOIPSL
287      end
Note: See TracBrowser for help on using the repository browser.