source: LMDZ4/branches/LMDZ4-dev/libf/dyn3dpar/initfluxsto_p.F @ 1110

Last change on this file since 1110 was 1000, checked in by Laurent Fairhead, 16 years ago
  • Modifs sur le parallelisme: masquage dans la physique
  • Inclusion strato
  • mise en coherence etat0
  • le mode offline fonctionne maintenant en parallele,
  • les fichiers de la dynamiques sont correctement sortis et peuvent etre reconstruit avec rebuild
  • la version parallele de la dynamique peut s'executer sans MPI (sur 1 proc)
  • L'OPENMP fonctionne maintenant sans la parallelisation MPI.

YM
LF

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 7.4 KB
Line 
1!
2! $Header$
3!
4      subroutine initfluxsto_p
5     .  (infile,tstep,t_ops,t_wrt,nq,
6     .                    fileid,filevid,filedid)
7
8       USE IOIPSL
9       use parallel
10       use Write_field
11       use misc_mod
12       
13      implicit none
14
15C
16C   Routine d'initialisation des ecritures des fichiers histoires LMDZ
17C   au format IOIPSL
18C
19C   Appels succesifs des routines: histbeg
20C                                  histhori
21C                                  histver
22C                                  histdef
23C                                  histend
24C
25C   Entree:
26C
27C      infile: nom du fichier histoire a creer
28C      day0,anne0: date de reference
29C      tstep: duree du pas de temps en seconde
30C      t_ops: frequence de l'operation pour IOIPSL
31C      t_wrt: frequence d'ecriture sur le fichier
32C      nq: nombre de traceurs
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 "comconst.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
54C   Arguments
55C
56      character*(*) infile
57      integer*4 itau
58      real tstep, t_ops, t_wrt
59      integer fileid, filevid,filedid
60      integer nq,ndex(1)
61      real nivd(1)
62
63C   Variables locales
64C
65      integer tau0
66      real zjulian
67      character*3 str
68      character*10 ctrac
69      integer iq
70      real rlong(iip1,jjp1), rlat(iip1,jjp1),rl(1,1)
71      integer uhoriid, vhoriid, thoriid, zvertiid,dhoriid,dvertiid
72      integer ii,jj
73      integer zan, idayref
74      logical ok_sync
75      integer :: jjb,jje,jjn
76
77! definition du domaine d'ecriture pour le rebuild
78
79      INTEGER,DIMENSION(2) :: ddid
80      INTEGER,DIMENSION(2) :: dsg
81      INTEGER,DIMENSION(2) :: dsl
82      INTEGER,DIMENSION(2) :: dpf
83      INTEGER,DIMENSION(2) :: dpl
84      INTEGER,DIMENSION(2) :: dhs
85      INTEGER,DIMENSION(2) :: dhe
86     
87      INTEGER :: dynu_domain_id
88      INTEGER :: dynv_domain_id
89
90
91C
92C  Initialisations
93C
94      pi = 4. * atan (1.)
95      str='q  '
96      ctrac = 'traceur   '
97      ok_sync = .true.
98C
99C  Appel a histbeg: creation du fichier netcdf et initialisations diverses
100C         
101
102      zan = annee_ref
103      idayref = day_ref
104      CALL ymds2ju(zan, 1, idayref, 0.0, zjulian)
105      tau0 = itau_dyn
106       
107        do jj = 1, jjp1
108        do ii = 1, iip1
109          rlong(ii,jj) = rlonu(ii) * 180. / pi
110          rlat(ii,jj) = rlatu(jj) * 180. / pi
111        enddo
112      enddo
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      call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe,
127     .                 'box',dynu_domain_id)
128       
129      call histbeg(trim(infile),iip1, rlong(:,1), jjn, rlat(1,jjb:jje),
130     .             1, iip1, 1, jjn, tau0, zjulian, tstep, uhoriid,
131     .             fileid,dynu_domain_id)
132C
133C  Creation du fichier histoire pour la grille en V (oblige pour l'instant,
134C  IOIPSL ne permet pas de grilles avec des nombres de point differents dans
135C  un meme fichier)
136
137
138      do jj = 1, jjm
139        do ii = 1, iip1
140          rlong(ii,jj) = rlonv(ii) * 180. / pi
141          rlat(ii,jj) = rlatv(jj) * 180. / pi
142        enddo
143      enddo
144
145      jjb=jj_begin
146      jje=jj_end
147      jjn=jj_nb
148      if (pole_sud) jje=jj_end-1
149      if (pole_sud) jjn=jj_nb-1
150
151      ddid=(/ 1,2 /)
152      dsg=(/ iip1,jjm /)
153      dsl=(/ iip1,jjn /)
154      dpf=(/ 1,jjb /)
155      dpl=(/ iip1,jje /)
156      dhs=(/ 0,0 /)
157      dhe=(/ 0,0 /)
158
159      call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe,
160     .                 'box',dynv_domain_id)
161     
162      call histbeg('fluxstokev',iip1, rlong(:,1), jjn, rlat(1,jjb:jje),
163     .             1, iip1, 1, jjn,tau0, zjulian, tstep, vhoriid,
164     .             filevid,dynv_domain_id)
165       
166      rl(1,1) = 1.     
167     
168      if (mpi_rank==0) then
169         
170        call histbeg('defstoke.nc', 1, rl, 1, rl,
171     .               1, 1, 1, 1,
172     .               tau0, zjulian, tstep, dhoriid, filedid)
173     
174      endif
175C
176C  Appel a histhori pour rajouter les autres grilles horizontales
177C
178      do jj = 1, jjp1
179        do ii = 1, iip1
180          rlong(ii,jj) = rlonv(ii) * 180. / pi
181          rlat(ii,jj) = rlatu(jj) * 180. / pi
182        enddo
183      enddo
184
185      jjb=jj_begin
186      jje=jj_end
187      jjn=jj_nb
188
189      call histhori(fileid, iip1, rlong(:,jjb:jje),jjn,rlat(:,jjb:jje),
190     .             'scalar','Grille points scalaires', thoriid)
191       
192C
193C  Appel a histvert pour la grille verticale
194C
195      call histvert(fileid, 'sig_s', 'Niveaux sigma',
196     . 'sigma_level',
197     .              llm, nivsigs, zvertiid)
198C Pour le fichier V
199      call histvert(filevid, 'sig_s', 'Niveaux sigma',
200     .  'sigma_level',
201     .              llm, nivsigs, zvertiid)
202c pour le fichier def
203      nivd(1) = 1
204      call histvert(filedid, 'sig_s', 'Niveaux sigma',
205     .  'sigma_level',
206     .              1, nivd, dvertiid)
207
208C
209C  Appels a histdef pour la definition des variables a sauvegarder
210       
211        CALL histdef(fileid, "phis", "Surface geop. height", "-",
212     .                iip1,jjn,thoriid, 1,1,1, -99, 32,
213     .                "once", t_ops, t_wrt)
214
215         CALL histdef(fileid, "aire", "Grid area", "-",
216     .                iip1,jjn,thoriid, 1,1,1, -99, 32,
217     .                "once", t_ops, t_wrt)
218       
219        if (mpi_rank==0) then
220       
221        CALL histdef(filedid, "dtvr", "tps dyn", "s",
222     .                1,1,dhoriid, 1,1,1, -99, 32,
223     .                "once", t_ops, t_wrt)
224       
225         CALL histdef(filedid, "istdyn", "tps stock", "s",
226     .                1,1,dhoriid, 1,1,1, -99, 32,
227     .                "once", t_ops, t_wrt)
228         
229         CALL histdef(filedid, "istphy", "tps stock phy", "s",
230     .                1,1,dhoriid, 1,1,1, -99, 32,
231     .                "once", t_ops, t_wrt)
232
233        endif
234C
235C Masse
236C
237      call histdef(fileid, 'masse', 'Masse', 'kg',
238     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
239     .             32, 'inst(X)', t_ops, t_wrt)
240C
241C  Pbaru
242C
243      call histdef(fileid, 'pbaru', 'flx de masse zonal', 'kg m/s',
244     .             iip1, jjn, uhoriid, llm, 1, llm, zvertiid,
245     .             32, 'inst(X)', t_ops, t_wrt)
246
247C
248C  Pbarv
249C
250      if (pole_sud) jjn=jj_nb-1
251     
252      call histdef(filevid, 'pbarv', 'flx de masse mer', 'kg m/s',
253     .             iip1, jjn, vhoriid, llm, 1, llm, zvertiid,
254     .             32, 'inst(X)', t_ops, t_wrt)
255C
256C  w
257C
258      if (pole_sud) jjn=jj_nb
259      call histdef(fileid, 'w', 'flx de masse vert', 'kg m/s',
260     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
261     .             32, 'inst(X)', t_ops, t_wrt)
262
263C
264C  Temperature potentielle
265C
266      call histdef(fileid, 'teta', 'temperature potentielle', '-',
267     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
268     .             32, 'inst(X)', t_ops, t_wrt)
269C
270
271C
272C Geopotentiel
273C
274      call histdef(fileid, 'phi', 'geopotentiel instantane', '-',
275     .             iip1, jjn, thoriid, llm, 1, llm, zvertiid,
276     .             32, 'inst(X)', t_ops, t_wrt)
277C
278C  Fin
279C
280      call histend(fileid)
281      call histend(filevid)
282      call histend(filedid)
283      if (ok_sync) then
284        call histsync(fileid)
285        call histsync(filevid)
286        call histsync(filedid)
287      endif
288       
289      return
290      end
Note: See TracBrowser for help on using the repository browser.