source: trunk/LMDZ.COMMON/libf/dyn3d_common/initfluxsto.F @ 3493

Last change on this file since 3493 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.2 KB
Line 
1!
2! $Id: initfluxsto.F 1279 2009-12-10 09:02:56Z fairhead $
3!
4      subroutine initfluxsto
5     .  (infile,tstep,t_ops,t_wrt,
6     .                    fileid,filevid,filedid)
7
8#ifdef CPP_IOIPSL
9       USE IOIPSL
10#endif
11       USE comvert_mod, ONLY: nivsigs
12       USE comconst_mod, ONLY: pi
13       USE temps_mod, ONLY: annee_ref,day_ref,itau_dyn
14      implicit none
15
16C
17C   Routine d'initialisation des ecritures des fichiers histoires LMDZ
18C   au format IOIPSL
19C
20C   Appels succesifs des routines: histbeg
21C                                  histhori
22C                                  histver
23C                                  histdef
24C                                  histend
25C
26C   Entree:
27C
28C      infile: nom du fichier histoire a creer
29C      day0,anne0: date de reference
30C      tstep: duree du pas de temps en seconde
31C      t_ops: frequence de l'operation pour IOIPSL
32C      t_wrt: frequence d'ecriture sur le fichier
33C
34C   Sortie:
35C      fileid: ID du fichier netcdf cree
36C      filevid:ID du fichier netcdf pour la grille v
37C
38C   L. Fairhead, LMD, 03/99
39C
40C =====================================================================
41C
42C   Declarations
43#include "dimensions.h"
44#include "paramet.h"
45#include "comgeom.h"
46#include "iniprint.h"
47
48C   Arguments
49C
50      character*(*) infile
51      real tstep, t_ops, t_wrt
52      integer fileid, filevid,filedid
53
54#ifdef CPP_IOIPSL
55! This routine needs IOIPSL to work
56C   Variables locales
57C
58      real nivd(1)
59      integer tau0
60      real zjulian
61      character*3 str
62      character*10 ctrac
63      integer iq
64      real rlong(iip1,jjp1), rlat(iip1,jjp1),rl(1,1)
65      integer uhoriid, vhoriid, thoriid, zvertiid,dhoriid,dvertiid
66      integer ii,jj
67      integer zan, idayref
68      logical ok_sync
69C
70C  Initialisations
71C
72      pi = 4. * atan (1.)
73      str='q  '
74      ctrac = 'traceur   '
75      ok_sync = .true.
76C
77C  Appel a histbeg: creation du fichier netcdf et initialisations diverses
78C         
79
80      zan = annee_ref
81      idayref = day_ref
82      CALL ymds2ju(zan, 1, idayref, 0.0, zjulian)
83      tau0 = itau_dyn
84       
85        do jj = 1, jjp1
86        do ii = 1, iip1
87          rlong(ii,jj) = rlonu(ii) * 180. / pi
88          rlat(ii,jj) = rlatu(jj) * 180. / pi
89        enddo
90      enddo
91 
92      call histbeg(infile, iip1, rlong(:,1), jjp1, rlat(1,:),
93     .             1, iip1, 1, jjp1,
94     .             tau0, zjulian, tstep, uhoriid, fileid)
95C
96C  Creation du fichier histoire pour la grille en V (oblige pour l'instant,
97C  IOIPSL ne permet pas de grilles avec des nombres de point differents dans
98C  un meme fichier)
99
100
101      do jj = 1, jjm
102        do ii = 1, iip1
103          rlong(ii,jj) = rlonv(ii) * 180. / pi
104          rlat(ii,jj) = rlatv(jj) * 180. / pi
105        enddo
106      enddo
107
108      call histbeg('fluxstokev.nc', iip1, rlong(:,1), jjm, rlat(1,:),
109     .             1, iip1, 1, jjm,
110     .             tau0, zjulian, tstep, vhoriid, filevid)
111       
112        rl(1,1) = 1.   
113      call histbeg('defstoke.nc', 1, rl, 1, rl,
114     .             1, 1, 1, 1,
115     .             tau0, zjulian, tstep, dhoriid, filedid)
116
117C
118C  Appel a histhori pour rajouter les autres grilles horizontales
119C
120      do jj = 1, jjp1
121        do ii = 1, iip1
122          rlong(ii,jj) = rlonv(ii) * 180. / pi
123          rlat(ii,jj) = rlatu(jj) * 180. / pi
124        enddo
125      enddo
126
127      call histhori(fileid, iip1, rlong, jjp1, rlat, 'scalar',
128     .              'Grille points scalaires', thoriid)
129       
130C
131C  Appel a histvert pour la grille verticale
132C
133      call histvert(fileid, 'sig_s', 'Niveaux sigma',
134     . 'sigma_level',
135     .              llm, nivsigs, zvertiid)
136C Pour le fichier V
137      call histvert(filevid, 'sig_s', 'Niveaux sigma',
138     .  'sigma_level',
139     .              llm, nivsigs, zvertiid)
140c pour le fichier def
141      nivd(1) = 1
142      call histvert(filedid, 'sig_s', 'Niveaux sigma',
143     .  'sigma_level',
144     .              1, nivd, dvertiid)
145
146C
147C  Appels a histdef pour la definition des variables a sauvegarder
148       
149        CALL histdef(fileid, "phis", "Surface geop. height", "-",
150     .                iip1,jjp1,thoriid, 1,1,1, -99, 32,
151     .                "once", t_ops, t_wrt)
152
153         CALL histdef(fileid, "aire", "Grid area", "-",
154     .                iip1,jjp1,thoriid, 1,1,1, -99, 32,
155     .                "once", t_ops, t_wrt)
156       
157        CALL histdef(filedid, "dtvr", "tps dyn", "s",
158     .                1,1,dhoriid, 1,1,1, -99, 32,
159     .                "once", t_ops, t_wrt)
160       
161         CALL histdef(filedid, "istdyn", "tps stock", "s",
162     .                1,1,dhoriid, 1,1,1, -99, 32,
163     .                "once", t_ops, t_wrt)
164         
165         CALL histdef(filedid, "istphy", "tps stock phy", "s",
166     .                1,1,dhoriid, 1,1,1, -99, 32,
167     .                "once", t_ops, t_wrt)
168
169
170C
171C Masse
172C
173      call histdef(fileid, 'masse', 'Masse', 'kg',
174     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
175     .             32, 'inst(X)', t_ops, t_wrt)
176C
177C  Pbaru
178C
179      call histdef(fileid, 'pbaru', 'flx de masse zonal', 'kg m/s',
180     .             iip1, jjp1, uhoriid, llm, 1, llm, zvertiid,
181     .             32, 'inst(X)', t_ops, t_wrt)
182
183C
184C  Pbarv
185C
186      call histdef(filevid, 'pbarv', 'flx de masse mer', 'kg m/s',
187     .             iip1, jjm, vhoriid, llm, 1, llm, zvertiid,
188     .             32, 'inst(X)', t_ops, t_wrt)
189C
190C  w
191C
192      call histdef(fileid, 'w', 'flx de masse vert', 'kg m/s',
193     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
194     .             32, 'inst(X)', t_ops, t_wrt)
195
196C
197C  Temperature potentielle
198C
199      call histdef(fileid, 'teta', 'temperature potentielle', '-',
200     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
201     .             32, 'inst(X)', t_ops, t_wrt)
202C
203
204C
205C Geopotentiel
206C
207      call histdef(fileid, 'phi', 'geopotentiel instantane', '-',
208     .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,
209     .             32, 'inst(X)', t_ops, t_wrt)
210C
211C  Fin
212C
213      call histend(fileid)
214      call histend(filevid)
215      call histend(filedid)
216      if (ok_sync) then
217        call histsync(fileid)
218        call histsync(filevid)
219        call histsync(filedid)
220      endif
221       
222#else
223! tell the user this routine should be run with ioipsl
224      write(lunout,*)"initfluxsto: Warning this routine should not be",
225     &               " used without ioipsl"
226#endif
227! of #ifdef CPP_IOIPSL
228      return
229      end
Note: See TracBrowser for help on using the repository browser.