source: trunk/LMDZ.COMMON/libf/dyn3dpar/inithist_p.F @ 2902

Last change on this file since 2902 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: 6.5 KB
Line 
1!
2! $Id: inithist_p.F 1279 2009-12-10 09:02:56Z fairhead $
3!
4      subroutine inithist_p(infile,day0,anne0,tstep,t_ops,t_wrt,
5     .                      fileid,filevid)
6
7#ifdef CPP_IOIPSL
8! This routine needs IOIPSL
9       USE IOIPSL
10#endif
11       use parallel_lmdz
12       use Write_field
13       use misc_mod
14       USE infotrac
15       USE comvert_mod, ONLY: nivsigs
16       USE comconst_mod, ONLY: pi
17       USE temps_mod, ONLY: itau_dyn
18
19      implicit none
20
21C
22C   Routine d'initialisation des ecritures des fichiers histoires LMDZ
23C   au format IOIPSL
24C
25C   Appels succesifs des routines: histbeg
26C                                  histhori
27C                                  histver
28C                                  histdef
29C                                  histend
30C
31C   Entree:
32C
33C      infile: nom du fichier histoire a creer
34C      day0,anne0: date de reference
35C      tstep: duree du pas de temps en seconde
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      filevid:ID du fichier netcdf pour la grille v
42C
43C   L. Fairhead, LMD, 03/99
44C
45C =====================================================================
46C
47C   Declarations
48#include "dimensions.h"
49#include "paramet.h"
50#include "comgeom.h"
51#include "iniprint.h"
52
53C   Arguments
54C
55      character*(*) infile
56      integer*4 day0, anne0
57      real tstep, t_ops, t_wrt
58      integer fileid, filevid
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, zvertiid
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 :: dynu_domain_id
84      INTEGER :: dynv_domain_id
85
86C
87C  Initialisations
88C
89      if (adjust) return
90       
91      pi = 4. * atan (1.)
92C
93C  Appel a histbeg: creation du fichier netcdf et initialisations diverses
94C         
95
96      zan = anne0
97      dayref = day0
98      CALL ymds2ju(zan, 1, dayref, 0.0, zjulian)
99      tau0 = itau_dyn
100     
101      do jj = 1, jjp1
102        do ii = 1, iip1
103          rlong(ii,jj) = rlonu(ii) * 180. / pi
104          rlat(ii,jj) = rlatu(jj) * 180. / pi
105        enddo
106      enddo
107     
108      jjb=jj_begin
109      jje=jj_end
110      jjn=jj_nb
111
112
113      ddid=(/ 1,2 /)
114      dsg=(/ iip1,jjp1 /)
115      dsl=(/ iip1,jjn /)
116      dpf=(/ 1,jjb /)
117      dpl=(/ iip1,jje /)
118      dhs=(/ 0,0 /)
119      dhe=(/ 0,0 /)
120
121      call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe,
122     .                 'box',dynu_domain_id)
123     
124       call histbeg(trim(infile),iip1, rlong(:,1), jjn,
125     .              rlat(1,jjb:jje), 1, iip1, 1, jjn, tau0,
126     .              zjulian, tstep, uhoriid, fileid,dynu_domain_id)
127C
128C  Creation du fichier histoire pour la grille en V (oblige pour l'instant,
129C  IOIPSL ne permet pas de grilles avec des nombres de point differents dans
130C  un meme fichier)
131
132      do jj = 1, jjm
133        do ii = 1, iip1
134          rlong(ii,jj) = rlonv(ii) * 180. / pi
135          rlat(ii,jj) = rlatv(jj) * 180. / pi
136        enddo
137      enddo
138
139      jjb=jj_begin
140      jje=jj_end
141      jjn=jj_nb
142      if (pole_sud) jje=jj_end-1
143      if (pole_sud) jjn=jj_nb-1
144
145      ddid=(/ 1,2 /)
146      dsg=(/ iip1,jjm /)
147      dsl=(/ iip1,jjn /)
148      dpf=(/ 1,jjb /)
149      dpl=(/ iip1,jje /)
150      dhs=(/ 0,0 /)
151      dhe=(/ 0,0 /)
152
153      call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe,
154     .                 'box',dynv_domain_id)
155     
156      call histbeg('dyn_histv', iip1, rlong(:,1), jjn, rlat(1,jjb:jje),
157     .             1, iip1, 1, jjn, tau0, zjulian, tstep, vhoriid,
158     .             filevid,dynv_domain_id)
159C
160C  Appel a histhori pour rajouter les autres grilles horizontales
161C
162     
163      do jj = 1, jjp1
164        do ii = 1, iip1
165          rlong(ii,jj) = rlonv(ii) * 180. / pi
166          rlat(ii,jj) = rlatu(jj) * 180. / pi
167        enddo
168      enddo
169
170      jjb=jj_begin
171      jje=jj_end
172      jjn=jj_nb
173
174      call histhori(fileid, iip1, rlong(:,jjb:jje),jjn,rlat(:,jjb:jje),
175     .              'scalar','Grille points scalaires', thoriid)
176C
177C  Appel a histvert pour la grille verticale
178C
179      call histvert(fileid, 'sig_s', 'Niveaux sigma','-',
180     .              llm, nivsigs, zvertiid)
181C Pour le fichier V
182      call histvert(filevid, 'sig_s', 'Niveaux sigma','-',
183     .              llm, nivsigs, zvertiid)
184C
185C  Appels a histdef pour la definition des variables a sauvegarder
186C
187C  Vents U
188C
189      jjn=jj_nb
190
191      call histdef(fileid, 'ucov', 'vents u covariants', 'm/s',
192     .             iip1, jjn, uhoriid, llm, 1, llm, zvertiid,
193     .             32, 'inst(X)', t_ops, t_wrt)
194C
195C  Vents V
196C
197      if (pole_sud) jjn=jj_nb-1
198     
199      call histdef(filevid, 'vcov', 'vents v covariants', 'm/s',
200     .             iip1, jjn, vhoriid, llm, 1, llm, zvertiid,
201     .             32, 'inst(X)', t_ops, t_wrt)
202
203C
204C  Temperature potentielle
205C
206      jjn=jj_nb
207     
208      call histdef(fileid, 'teta', 'temperature potentielle', '-',
209     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
210     .             32, 'inst(X)', t_ops, t_wrt)
211C
212C  Geopotentiel
213C
214      call histdef(fileid, 'phi', 'geopotentiel instantane', '-',
215     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
216     .             32, 'inst(X)', t_ops, t_wrt)
217C
218C  Traceurs
219C
220        DO iq=1,nqtot
221          call histdef(fileid, ttext(iq),  ttext(iq), '-',
222     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
223     .             32, 'inst(X)', t_ops, t_wrt)
224        enddo
225C
226C  Masse
227C
228      call histdef(fileid, 'masse', 'masse', 'kg',
229     .             iip1, jjn, thoriid, 1, 1, 1, -99,
230     .             32, 'inst(X)', t_ops, t_wrt)
231C
232C  Pression au sol
233C
234      call histdef(fileid, 'ps', 'pression naturelle au sol', 'Pa',
235     .             iip1, jjn, thoriid, 1, 1, 1, -99,
236     .             32, 'inst(X)', t_ops, t_wrt)
237C
238C  Pression au sol
239C
240      call histdef(fileid, 'phis', 'geopotentiel au sol', '-',
241     .             iip1, jjn, thoriid, 1, 1, 1, -99,
242     .             32, 'inst(X)', t_ops, t_wrt)
243C
244C  Fin
245C
246      call histend(fileid)
247      call histend(filevid)
248#else
249      write(lunout,*)'inithist_p: Needs IOIPSL to function'
250#endif
251! #endif of #ifdef CPP_IOIPSL
252      return
253      end
Note: See TracBrowser for help on using the repository browser.