source: LMDZ5/trunk/libf/dyn3dmem/initdynav_loc.F @ 2597

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

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