/[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 15 by guez, Fri Aug 1 15:24:12 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)    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, rlong(:,1), 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', rlong(:,1),  
110       .             rlat(1,:jjm),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        call histbeg_totreg('defstoke.nc', (/1./), (/1./),    !  Appel a histvert pour la grille verticale                            
114       .             1, 1, 1, 1,  
115       .             tau0, zjulian, tstep, dhoriid, filedid)    CALL histvert(fileid, 'sig_s', 'Niveaux sigma', 'sigma_level', llm, &
116           nivsigs, zvertiid)
117  C    ! Pour le fichier V                                                    
118  C  Appel a histhori pour rajouter les autres grilles horizontales    CALL histvert(filevid, 'sig_s', 'Niveaux sigma', 'sigma_level', llm, &
119  C         nivsigs, zvertiid)
120        do jj = 1, jjp1    ! pour le fichier def                                                  
121          do ii = 1, iip1    nivd(1) = 1
122            rlong(ii,jj) = rlonv(ii) * 180. / pi    CALL histvert(filedid, 'sig_s', 'Niveaux sigma', 'sigma_level', 1, nivd, &
123            rlat(ii,jj) = rlatu(jj) * 180. / pi         dvertiid)
124          enddo  
125        enddo    !  Appels a histdef pour la definition des variables a sauvegarder      
126      CALL histdef(fileid, 'phis', 'Surface geop. height', '-', iip1, jjp1, &
127        call histhori_regular(fileid, iip1, rlong, jjp1, rlat, 'scalar',         thoriid, 1, 1, 1, -99, 'once', t_ops, t_wrt)
128       .              'Grille points scalaires', thoriid)    CALL histdef(fileid, 'aire', 'Grid area', '-', iip1, jjp1, thoriid, 1, 1, &
129                   1, -99, 'once', t_ops, t_wrt)
130  C    CALL histdef(filedid, 'dtvr', 'tps dyn', 's', 1, 1, dhoriid, 1, 1, 1, -99, &
131  C  Appel a histvert pour la grille verticale         'once', t_ops, t_wrt)
132  C    CALL histdef(filedid, 'istdyn', 'tps stock', 's', 1, 1, dhoriid, 1, 1, 1, &
133        call histvert(fileid, 'sig_s', 'Niveaux sigma',         -99, 'once', t_ops, t_wrt)
134       . 'sigma_level',    CALL histdef(filedid, 'istphy', 'tps stock phy', 's', 1, 1, dhoriid, 1, 1, &
135       .              llm, nivsigs, zvertiid)         1, -99, 'once', t_ops, t_wrt)
136  C Pour le fichier V    CALL histdef(fileid, 'masse', 'Masse', 'kg', iip1, jjp1, thoriid, llm, 1, &
137        call histvert(filevid, 'sig_s', 'Niveaux sigma',         llm, zvertiid, 'inst(X)', t_ops, t_wrt)
138       .  'sigma_level',    CALL histdef(fileid, 'pbaru', 'flx de masse zonal', 'kg m/s', iip1, jjp1, &
139       .              llm, nivsigs, zvertiid)         uhoriid, llm, 1, llm, zvertiid, 'inst(X)', t_ops, t_wrt)
140  c pour le fichier def    CALL histdef(filevid, 'pbarv', 'flx de masse mer', 'kg m/s', iip1, jjm, &
141        nivd(1) = 1         vhoriid, llm, 1, llm, zvertiid, 'inst(X)', t_ops, t_wrt)
142        call histvert(filedid, 'sig_s', 'Niveaux sigma',    CALL histdef(fileid, 'w', 'flx de masse vert', 'kg m/s', iip1, jjp1, &
143       .  'sigma_level',         thoriid, llm, 1, llm, zvertiid, 'inst(X)', t_ops, t_wrt)
144       .              1, nivd, dvertiid)    CALL histdef(fileid, 'teta', 'temperature potentielle', '-', iip1, jjp1, &
145           thoriid, llm, 1, llm, zvertiid, 'inst(X)', t_ops, t_wrt)
146  C    CALL histdef(fileid, 'phi', 'geopotentiel instantane', '-', iip1, jjp1, &
147  C  Appels a histdef pour la definition des variables a sauvegarder         thoriid, llm, 1, llm, zvertiid, 'inst(X)', t_ops, t_wrt)
148            
149          CALL histdef(fileid, "phis", "Surface geop. height", "-",    CALL histend(fileid)
150       .                iip1,jjp1,thoriid, 1,1,1, -99,    CALL histend(filevid)
151       .                "once", t_ops, t_wrt)    CALL histend(filedid)
152      IF (ok_sync) THEN
153           CALL histdef(fileid, "aire", "Grid area", "-",       CALL histsync(fileid)
154       .                iip1,jjp1,thoriid, 1,1,1, -99,       CALL histsync(filevid)
155       .                "once", t_ops, t_wrt)       CALL histsync(filedid)
156              END IF
157          CALL histdef(filedid, "dtvr", "tps dyn", "s",  
158       .                1,1,dhoriid, 1,1,1, -99,  END SUBROUTINE initfluxsto
      .                "once", t_ops, t_wrt)  
           
          CALL histdef(filedid, "istdyn", "tps stock", "s",  
      .                1,1,dhoriid, 1,1,1, -99,  
      .                "once", t_ops, t_wrt)  
           
          CALL histdef(filedid, "istphy", "tps stock phy", "s",  
      .                1,1,dhoriid, 1,1,1, -99,  
      .                "once", t_ops, t_wrt)  
   
   
 C  
 C Masse  
 C  
       call histdef(fileid, 'masse', 'Masse', 'kg',  
      .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,  
      .             '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,  
      .             '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,  
      .             '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,  
      .             'inst(X)', t_ops, t_wrt)  
   
 C  
 C  Temperature potentielle  
 C  
       call histdef(fileid, 'teta', 'temperature potentielle', '-',  
      .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,  
      .             'inst(X)', t_ops, t_wrt)  
 C  
   
 C  
 C Geopotentiel  
 C  
       call histdef(fileid, 'phi', 'geopotentiel instantane', '-',  
      .             iip1, jjp1, thoriid, llm, 1, llm, zvertiid,  
      .             '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.15  
changed lines
  Added in v.31

  ViewVC Help
Powered by ViewVC 1.1.21