/[lmdze]/trunk/libf/bibio/initfluxsto.f90
ViewVC logotype

Diff of /trunk/libf/bibio/initfluxsto.f90

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/libf/bibio/initfluxsto.f revision 9 by guez, Mon Mar 31 13:58:05 2008 UTC trunk/libf/bibio/initfluxsto.f90 revision 31 by guez, Thu Apr 1 14:59:19 2010 UTC
# Line 1  Line 1 
1  !  SUBROUTINE initfluxsto(tstep, t_ops, t_wrt, nq, fileid, filevid, filedid)
2  ! $Header: /home/cvsroot/LMDZ4/libf/bibio/initfluxsto.F,v 1.1.1.1 2004/05/19 12:53:05 lmdzadmin Exp $  
3  !    ! From bibio/initfluxsto.F, v 1.1.1.1 2004/05/19 12:53:05
4        subroutine initfluxsto  
5       .  (infile,tstep,t_ops,t_wrt,nq,    !   Routine d'initialisation des ecritures des fichiers histoires LMDZ  
6       .                    fileid,filevid,filedid)    !   au format IOIPSL                                                    
7      !   Appels succesifs des routines: histbeg                              
8         USE IOIPSL    !                                  histhori                            
9      !                                  histver                              
10  C    !                                  histdef                              
11  C   Routine d'initialisation des ecritures des fichiers histoires LMDZ    !                                  histend                              
12  C   au format IOIPSL  
13  C    !   Entree:                                                            
14  C   Appels succesifs des routines: histbeg    !      day0, anne0: date de reference                                    
15  C                                  histhori    !      tstep: duree du pas de temps en seconde                          
16  C                                  histver    !      t_ops: frequence de l'operation pour IOIPSL                      
17  C                                  histdef    !      t_wrt: frequence d'ecriture sur le fichier                      
18  C                                  histend    !      nq: nombre de traceurs                                          
19  C  
20  C   Entree:    !   Sortie:                                                            
21  C    !      fileid: ID du fichier netcdf cree                                
22  C      infile: nom du fichier histoire a creer    !      filevid:ID du fichier netcdf pour la grille v                    
23  C      day0,anne0: date de reference  
24  C      tstep: duree du pas de temps en seconde    !   L. Fairhead, 03/99                                            
25  C      t_ops: frequence de l'operation pour IOIPSL  
26  C      t_wrt: frequence d'ecriture sur le fichier    USE calendar
27  C      nq: nombre de traceurs    USE histcom
28  C    USE dimens_m
29  C   Sortie:    USE paramet_m
30  C      fileid: ID du fichier netcdf cree    USE comconst
31  C      filevid:ID du fichier netcdf pour la grille v    USE comvert
32  C    USE logic
33  C   L. Fairhead, LMD, 03/99    USE comgeom
34  C    USE serre
35  C =====================================================================    USE temps, ONLY : annee_ref, day_ref, itau_dyn
36  C    USE ener
37  C   Declarations  
38         use dimens_m    IMPLICIT NONE
39        use paramet_m  
40        use comconst    !   Arguments                                                          
41        use comvert    INTEGER itau
42        use logic    REAL, INTENT (IN) :: tstep
43        use comgeom    REAL t_ops, t_wrt
44        use serre    INTEGER fileid, filevid, filedid
45        use temps, only: annee_ref, day_ref, itau_dyn    INTEGER nq, ndex(1)
46        use ener    REAL nivd(1)
47        implicit none  
48      !   Variables locales                                                  
49  C   Arguments    REAL zjulian
50  C    CHARACTER*3 str
51        character*(*) infile    CHARACTER*10 ctrac
52        integer*4 itau    INTEGER iq
53        real tstep, t_ops, t_wrt    REAL rlong(iip1, jjp1), rlat(iip1, jjp1)
54        integer fileid, filevid,filedid    INTEGER uhoriid, vhoriid, thoriid, zvertiid, dhoriid, dvertiid
55        integer nq,ndex(1)    INTEGER ii, jj
56        real nivd(1)    INTEGER zan, idayref
57      LOGICAL ok_sync
58  C   Variables locales  
59  C    !---------------------------------------------------------
60        integer tau0  
61        real zjulian    !  Initialisations                                                      
62        character*3 str  
63        character*10 ctrac    pi = 4.*atan(1.)
64        integer iq    str = 'q  '
65        real rlong(iip1,jjp1), rlat(iip1,jjp1),rl(1,1)    ctrac = 'traceur   '
66        integer uhoriid, vhoriid, thoriid, zvertiid,dhoriid,dvertiid    ok_sync = .TRUE.
67        integer ii,jj  
68        integer zan, idayref    !  Appel a histbeg: creation du fichier netcdf et initialisations diverses
69        logical ok_sync  
70  C    zan = annee_ref
71  C  Initialisations    idayref = day_ref
72  C    CALL ymds2ju(zan, 1, idayref, 0.0, zjulian)
73        pi = 4. * atan (1.)  
74        str='q  '    DO jj = 1, jjp1
75        ctrac = 'traceur   '       DO ii = 1, iip1
76        ok_sync = .true.          rlong(ii, jj) = rlonu(ii)*180./pi
77  C          rlat(ii, jj) = rlatu(jj)*180./pi
78  C  Appel a histbeg: creation du fichier netcdf et initialisations diverses       END DO
79  C            END DO
80    
81        zan = annee_ref    CALL histbeg_totreg('fluxstoke', rlong(:, 1), rlat(1, :), 1, iip1, 1, jjp1, &
82        idayref = day_ref         itau_dyn, zjulian, tstep, uhoriid, fileid)
83        CALL ymds2ju(zan, 1, idayref, 0.0, zjulian)  
84        tau0 = itau_dyn    !  Creation du fichier histoire pour la grille en V (oblige pour l'instant,
85              !  IOIPSL ne permet pas de grilles avec des nombres de point differents dans
86          do jj = 1, jjp1    !  un meme fichier)                                                    
87          do ii = 1, iip1  
88            rlong(ii,jj) = rlonu(ii) * 180. / pi    DO jj = 1, jjm
89            rlat(ii,jj) = rlatu(jj) * 180. / pi       DO ii = 1, iip1
90          enddo          rlong(ii, jj) = rlonv(ii)*180./pi
91        enddo          rlat(ii, jj) = rlatv(jj)*180./pi
92         END DO
93        call histbeg_totreg(infile, iip1, rlong(:,1), jjp1, rlat(1,:),    END DO
94       .             1, iip1, 1, jjp1,  
95       .             tau0, zjulian, tstep, uhoriid, fileid)    CALL histbeg_totreg('fluxstokev.nc', rlong(:, 1), rlat(1, :jjm), 1, iip1, &
96  C         1, jjm, itau_dyn, zjulian, tstep, vhoriid, filevid)
97  C  Creation du fichier histoire pour la grille en V (oblige pour l'instant,  
98  C  IOIPSL ne permet pas de grilles avec des nombres de point differents dans    CALL histbeg_totreg('defstoke.nc', (/1./), (/1./), 1, 1, 1, 1, itau_dyn, &
99  C  un meme fichier)         zjulian, tstep, dhoriid, filedid)
100    
101      !  Appel a histhori pour rajouter les autres grilles horizontales      
102        do jj = 1, jjm  
103          do ii = 1, iip1    DO jj = 1, jjp1
104            rlong(ii,jj) = rlonv(ii) * 180. / pi       DO ii = 1, iip1
105            rlat(ii,jj) = rlatv(jj) * 180. / pi          rlong(ii, jj) = rlonv(ii)*180./pi
106          enddo          rlat(ii, jj) = rlatu(jj)*180./pi
107        enddo       END DO
108      END DO
109        call histbeg_totreg('fluxstokev.nc', iip1, rlong(:,1), jjm,  
110       .             rlat(1,:),1, iip1, 1, jjm,    CALL histhori_regular(fileid, iip1, rlong, jjp1, rlat, 'scalar', &
111       .             tau0, zjulian, tstep, vhoriid, filevid)         'Grille points scalaires', thoriid)
112            
113          rl(1,1) = 1.        !  Appel a histvert pour la grille verticale                            
114        call histbeg_regular('defstoke.nc', 1, rl, 1, rl,  
115       .             1, 1, 1, 1,    CALL histvert(fileid, 'sig_s', 'Niveaux sigma', 'sigma_level', llm, &
116       .             tau0, zjulian, tstep, dhoriid, filedid)         nivsigs, zvertiid)
117      ! Pour le fichier V                                                    
118  C    CALL histvert(filevid, 'sig_s', 'Niveaux sigma', 'sigma_level', llm, &
119  C  Appel a histhori pour rajouter les autres grilles horizontales         nivsigs, zvertiid)
120  C    ! pour le fichier def                                                  
121        do jj = 1, jjp1    nivd(1) = 1
122          do ii = 1, iip1    CALL histvert(filedid, 'sig_s', 'Niveaux sigma', 'sigma_level', 1, nivd, &
123            rlong(ii,jj) = rlonv(ii) * 180. / pi         dvertiid)
124            rlat(ii,jj) = rlatu(jj) * 180. / pi  
125          enddo    !  Appels a histdef pour la definition des variables a sauvegarder      
126        enddo    CALL histdef(fileid, 'phis', 'Surface geop. height', '-', iip1, jjp1, &
127           thoriid, 1, 1, 1, -99, 'once', t_ops, t_wrt)
128        call histhori(fileid, iip1, rlong, jjp1, rlat, 'scalar',    CALL histdef(fileid, 'aire', 'Grid area', '-', iip1, jjp1, thoriid, 1, 1, &
129       .              'Grille points scalaires', thoriid)         1, -99, 'once', t_ops, t_wrt)
130              CALL histdef(filedid, 'dtvr', 'tps dyn', 's', 1, 1, dhoriid, 1, 1, 1, -99, &
131  C         'once', t_ops, t_wrt)
132  C  Appel a histvert pour la grille verticale    CALL histdef(filedid, 'istdyn', 'tps stock', 's', 1, 1, dhoriid, 1, 1, 1, &
133  C         -99, 'once', t_ops, t_wrt)
134        call histvert(fileid, 'sig_s', 'Niveaux sigma',    CALL histdef(filedid, 'istphy', 'tps stock phy', 's', 1, 1, dhoriid, 1, 1, &
135       . 'sigma_level',         1, -99, 'once', t_ops, t_wrt)
136       .              llm, nivsigs, zvertiid)    CALL histdef(fileid, 'masse', 'Masse', 'kg', iip1, jjp1, thoriid, llm, 1, &
137  C Pour le fichier V         llm, zvertiid, 'inst(X)', t_ops, t_wrt)
138        call histvert(filevid, 'sig_s', 'Niveaux sigma',    CALL histdef(fileid, 'pbaru', 'flx de masse zonal', 'kg m/s', iip1, jjp1, &
139       .  'sigma_level',         uhoriid, llm, 1, llm, zvertiid, 'inst(X)', t_ops, t_wrt)
140       .              llm, nivsigs, zvertiid)    CALL histdef(filevid, 'pbarv', 'flx de masse mer', 'kg m/s', iip1, jjm, &
141  c pour le fichier def         vhoriid, llm, 1, llm, zvertiid, 'inst(X)', t_ops, t_wrt)
142        nivd(1) = 1    CALL histdef(fileid, 'w', 'flx de masse vert', 'kg m/s', iip1, jjp1, &
143        call histvert(filedid, 'sig_s', 'Niveaux sigma',         thoriid, llm, 1, llm, zvertiid, 'inst(X)', t_ops, t_wrt)
144       .  'sigma_level',    CALL histdef(fileid, 'teta', 'temperature potentielle', '-', iip1, jjp1, &
145       .              1, nivd, dvertiid)         thoriid, llm, 1, llm, zvertiid, 'inst(X)', t_ops, t_wrt)
146      CALL histdef(fileid, 'phi', 'geopotentiel instantane', '-', iip1, jjp1, &
147  C         thoriid, llm, 1, llm, zvertiid, 'inst(X)', t_ops, t_wrt)
148  C  Appels a histdef pour la definition des variables a sauvegarder  
149              CALL histend(fileid)
150          CALL histdef(fileid, "phis", "Surface geop. height", "-",    CALL histend(filevid)
151       .                iip1,jjp1,thoriid, 1,1,1, -99, 32,    CALL histend(filedid)
152       .                "once", t_ops, t_wrt)    IF (ok_sync) THEN
153         CALL histsync(fileid)
154           CALL histdef(fileid, "aire", "Grid area", "-",       CALL histsync(filevid)
155       .                iip1,jjp1,thoriid, 1,1,1, -99, 32,       CALL histsync(filedid)
156       .                "once", t_ops, t_wrt)    END IF
157            
158          CALL histdef(filedid, "dtvr", "tps dyn", "s",  END SUBROUTINE initfluxsto
      .                1,1,dhoriid, 1,1,1, -99, 32,  
      .                "once", t_ops, t_wrt)  
           
          CALL histdef(filedid, "istdyn", "tps stock", "s",  
      .                1,1,dhoriid, 1,1,1, -99, 32,  
      .                "once", t_ops, t_wrt)  
           
          CALL histdef(filedid, "istphy", "tps stock phy", "s",  
      .                1,1,dhoriid, 1,1,1, -99, 32,  
      .                "once", t_ops, t_wrt)  
   
   
 C  
 C Masse  
 C  
       call histdef(fileid, 'masse', 'Masse', 'kg',  
      .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,  
      .             32, 'inst(X)', t_ops, t_wrt)  
 C  
 C  Pbaru  
 C  
       call histdef(fileid, 'pbaru', 'flx de masse zonal', 'kg m/s',  
      .             iip1, jjp1, uhoriid, llm, 1, llm, zvertiid,  
      .             32, 'inst(X)', t_ops, t_wrt)  
   
 C  
 C  Pbarv  
 C  
       call histdef(filevid, 'pbarv', 'flx de masse mer', 'kg m/s',  
      .             iip1, jjm, vhoriid, llm, 1, llm, zvertiid,  
      .             32, 'inst(X)', t_ops, t_wrt)  
 C  
 C  w  
 C  
       call histdef(fileid, 'w', 'flx de masse vert', 'kg m/s',  
      .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,  
      .             32, 'inst(X)', t_ops, t_wrt)  
   
 C  
 C  Temperature potentielle  
 C  
       call histdef(fileid, 'teta', 'temperature potentielle', '-',  
      .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,  
      .             32, 'inst(X)', t_ops, t_wrt)  
 C  
   
 C  
 C Geopotentiel  
 C  
       call histdef(fileid, 'phi', 'geopotentiel instantane', '-',  
      .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,  
      .             32, 'inst(X)', t_ops, t_wrt)  
 C  
 C  Fin  
 C  
       call histend(fileid)  
       call histend(filevid)  
       call histend(filedid)  
       if (ok_sync) then  
         call histsync(fileid)  
         call histsync(filevid)  
         call histsync(filedid)  
       endif  
           
       return  
       end  

Legend:
Removed from v.9  
changed lines
  Added in v.31

  ViewVC Help
Powered by ViewVC 1.1.21