source: trunk/LMDZ.COMMON/libf/dyn3d_common/initdynav.F90 @ 2757

Last change on this file since 2757 was 1422, checked in by milmd, 10 years ago

In GENERIC, MARS and COMMON models replace some include files by modules (usefull for decoupling physics with dynamics).

File size: 5.2 KB
Line 
1! $Id: initdynav.F90 1611 2012-01-25 14:31:54Z lguez $
2
3subroutine initdynav(day0,anne0,tstep,t_ops,t_wrt)
4
5#ifdef CPP_IOIPSL
6  USE IOIPSL
7#endif
8  USE infotrac, ONLY : nqtot, ttext
9  use com_io_dyn_mod, only : histaveid,histvaveid,histuaveid, &
10       dynhistave_file,dynhistvave_file,dynhistuave_file
11  USE comvert_mod, ONLY: presnivs
12  USE comconst_mod, ONLY: pi
13  USE temps_mod, ONLY: itau_dyn
14  implicit none
15
16
17  !   Routine d'initialisation des ecritures des fichiers histoires LMDZ
18  !   au format IOIPSL. Initialisation du fichier histoire moyenne.
19
20  !   Appels succesifs des routines: histbeg
21  !                                  histhori
22  !                                  histver
23  !                                  histdef
24  !                                  histend
25
26  !   Entree:
27
28  !      infile: nom du fichier histoire a creer
29  !      day0,anne0: date de reference
30  !      tstep : frequence d'ecriture
31  !      t_ops: frequence de l'operation pour IOIPSL
32  !      t_wrt: frequence d'ecriture sur le fichier
33
34
35  !   L. Fairhead, LMD, 03/99
36
37  include "dimensions.h"
38  include "paramet.h"
39  include "comgeom.h"
40  include "iniprint.h"
41
42  !   Arguments
43
44  integer day0, anne0
45  real tstep, t_ops, t_wrt
46
47#ifdef CPP_IOIPSL
48  ! This routine needs IOIPSL to work
49  !   Variables locales
50
51  integer tau0
52  real zjulian
53  integer iq
54  real rlong(iip1,jjp1), rlat(iip1,jjp1)
55  integer uhoriid, vhoriid, thoriid, zvertiid
56  integer ii,jj
57  integer zan, dayref
58
59  !--------------------------------------------------------------------
60
61  !  Initialisations
62
63  pi = 4. * atan (1.)
64
65  !  Appel a histbeg: creation du fichier netcdf et initialisations diverses
66
67
68  zan = anne0
69  dayref = day0
70  CALL ymds2ju(zan, 1, dayref, 0.0, zjulian)
71  tau0 = itau_dyn
72
73  do jj = 1, jjp1
74     do ii = 1, iip1
75        rlong(ii,jj) = rlonv(ii) * 180. / pi
76        rlat(ii,jj)  = rlatu(jj) * 180. / pi
77     enddo
78  enddo
79
80  ! Creation de 3 fichiers pour les differentes grilles horizontales
81  ! Restriction de IOIPSL: seulement 2 coordonnees dans le meme fichier
82  ! Grille Scalaire       
83  call histbeg(dynhistave_file, iip1, rlong(:,1), jjp1, rlat(1,:), &
84       1, iip1, 1, jjp1, &
85       tau0, zjulian, tstep, thoriid,histaveid)
86
87  ! Creation du fichier histoire pour les grilles en V et U (oblige
88  ! pour l'instant, IOIPSL ne permet pas de grilles avec des nombres
89  ! de point differents dans  un meme fichier)
90  ! Grille V
91  do jj = 1, jjm
92     do ii = 1, iip1
93        rlong(ii,jj) = rlonv(ii) * 180. / pi
94        rlat(ii,jj) = rlatv(jj) * 180. / pi
95     enddo
96  enddo
97
98  call histbeg(dynhistvave_file, iip1, rlong(:,1), jjm, rlat(1,:), &
99       1, iip1, 1, jjm, &
100       tau0, zjulian, tstep, vhoriid,histvaveid)
101  ! Grille U
102  do jj = 1, jjp1
103     do ii = 1, iip1
104        rlong(ii,jj) = rlonu(ii) * 180. / pi
105        rlat(ii,jj) = rlatu(jj) * 180. / pi
106     enddo
107  enddo
108
109  call histbeg(dynhistuave_file, iip1, rlong(:,1),jjp1, rlat(1,:), &
110       1, iip1, 1, jjp1, &
111       tau0, zjulian, tstep, uhoriid,histuaveid)
112
113  !  Appel a histvert pour la grille verticale
114
115  call histvert(histaveid,'presnivs','Niveaux Pression approximatifs','mb', &
116       llm, presnivs/100., zvertiid,'down')
117  call histvert(histuaveid,'presnivs','Niveaux Pression approximatifs','mb', &
118       llm, presnivs/100., zvertiid,'down')
119  call histvert(histvaveid,'presnivs','Niveaux Pression approximatifs','mb', &
120       llm, presnivs/100., zvertiid,'down')
121
122  !  Appels a histdef pour la definition des variables a sauvegarder
123
124  !  Vents U
125
126  call histdef(histuaveid, 'u', 'vent u moyen ', &
127       'm/s', iip1, jjp1, uhoriid, llm, 1, llm, zvertiid, &
128       32, 'ave(X)', t_ops, t_wrt)
129
130  !  Vents V
131
132  call histdef(histvaveid, 'v', 'vent v moyen', &
133       'm/s', iip1, jjm, vhoriid, llm, 1, llm, zvertiid, &
134       32, 'ave(X)', t_ops, t_wrt)
135
136
137  !  Temperature
138
139  call histdef(histaveid, 'temp', 'temperature moyenne', 'K', &
140       iip1, jjp1, thoriid, llm, 1, llm, zvertiid, &
141       32, 'ave(X)', t_ops, t_wrt)
142
143  !  Temperature potentielle
144
145  call histdef(histaveid, 'theta', 'temperature potentielle', 'K', &
146       iip1, jjp1, thoriid, llm, 1, llm, zvertiid, &
147       32, 'ave(X)', t_ops, t_wrt)
148
149  !  Geopotentiel
150
151  call histdef(histaveid, 'phi', 'geopotentiel moyen', '-', &
152       iip1, jjp1, thoriid, llm, 1, llm, zvertiid, &
153       32, 'ave(X)', t_ops, t_wrt)
154
155  !  Traceurs
156
157  !        DO iq=1,nqtot
158  !          call histdef(histaveid, ttext(iq), ttext(iq), '-', &
159  !                  iip1, jjp1, thoriid, llm, 1, llm, zvertiid, &
160  !                  32, 'ave(X)', t_ops, t_wrt)
161  !        enddo
162
163  !  Masse
164
165  call histdef(histaveid, 'masse', 'masse', 'kg', &
166       iip1, jjp1, thoriid, llm, 1, llm, zvertiid, &
167       32, 'ave(X)', t_ops, t_wrt)
168
169  !  Pression au sol
170
171  call histdef(histaveid, 'ps', 'pression naturelle au sol', 'Pa', &
172       iip1, jjp1, thoriid, 1, 1, 1, -99, &
173       32, 'ave(X)', t_ops, t_wrt)
174
175  !  Geopotentiel au sol
176
177  !      call histdef(histaveid, 'phis', 'geopotentiel au sol', '-', &
178  !                  iip1, jjp1, thoriid, 1, 1, 1, -99, &
179  !                  32, 'ave(X)', t_ops, t_wrt)
180
181  call histend(histaveid)
182  call histend(histuaveid)
183  call histend(histvaveid)
184#else
185  write(lunout,*)"initdynav: Warning this routine should not be", &
186       " used without ioipsl"
187#endif
188  ! of #ifdef CPP_IOIPSL
189
190end subroutine initdynav
Note: See TracBrowser for help on using the repository browser.