/[lmdze]/trunk/bibio/initfluxsto.f
ViewVC logotype

Diff of /trunk/bibio/initfluxsto.f

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 57 by guez, Mon Jan 30 12:54:02 2012 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 conf_gcm_m
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    USE nr_util, ONLY : pi
38         use dimens_m  
39        use paramet_m    IMPLICIT NONE
40        use comconst  
41        use comvert    !   Arguments                                                          
42        use logic    INTEGER itau
43        use comgeom    REAL, INTENT (IN) :: tstep
44        use serre    REAL t_ops, t_wrt
45        use temps, only: annee_ref, day_ref, itau_dyn    INTEGER fileid, filevid, filedid
46        use ener    INTEGER nq, ndex(1)
47        implicit none    REAL nivd(1)
48    
49  C   Arguments    !   Variables locales                                                  
50  C    REAL zjulian
51        character*(*) infile    CHARACTER*3 str
52        integer*4 itau    CHARACTER*10 ctrac
53        real tstep, t_ops, t_wrt    INTEGER iq
54        integer fileid, filevid,filedid    REAL rlong(iip1, jjp1), rlat(iip1, jjp1)
55        integer nq,ndex(1)    INTEGER uhoriid, vhoriid, thoriid, zvertiid, dhoriid, dvertiid
56        real nivd(1)    INTEGER ii, jj
57      INTEGER zan, idayref
58  C   Variables locales    LOGICAL ok_sync
59  C  
60        integer tau0    !---------------------------------------------------------
61        real zjulian  
62        character*3 str    !  Initialisations                                                      
63        character*10 ctrac    str = 'q  '
64        integer iq    ctrac = 'traceur   '
65        real rlong(iip1,jjp1), rlat(iip1,jjp1)    ok_sync = .TRUE.
66        integer uhoriid, vhoriid, thoriid, zvertiid,dhoriid,dvertiid  
67        integer ii,jj    !  Appel a histbeg: creation du fichier netcdf et initialisations diverses
68        integer zan, idayref  
69        logical ok_sync    zan = annee_ref
70  C    idayref = day_ref
71  C  Initialisations    CALL ymds2ju(zan, 1, idayref, 0.0, zjulian)
72  C  
73        pi = 4. * atan (1.)    DO jj = 1, jjp1
74        str='q  '       DO ii = 1, iip1
75        ctrac = 'traceur   '          rlong(ii, jj) = rlonu(ii)*180./pi
76        ok_sync = .true.          rlat(ii, jj) = rlatu(jj)*180./pi
77  C       END DO
78  C  Appel a histbeg: creation du fichier netcdf et initialisations diverses    END DO
79  C          
80      CALL histbeg_totreg('fluxstoke', rlong(:, 1), rlat(1, :), 1, iip1, 1, jjp1, &
81        zan = annee_ref         itau_dyn, zjulian, tstep, uhoriid, fileid)
82        idayref = day_ref  
83        CALL ymds2ju(zan, 1, idayref, 0.0, zjulian)    !  Creation du fichier histoire pour la grille en V (oblige pour l'instant,
84        tau0 = itau_dyn    !  IOIPSL ne permet pas de grilles avec des nombres de point differents dans
85              !  un meme fichier)                                                    
86          do jj = 1, jjp1  
87          do ii = 1, iip1    DO jj = 1, jjm
88            rlong(ii,jj) = rlonu(ii) * 180. / pi       DO ii = 1, iip1
89            rlat(ii,jj) = rlatu(jj) * 180. / pi          rlong(ii, jj) = rlonv(ii)*180./pi
90          enddo          rlat(ii, jj) = rlatv(jj)*180./pi
91        enddo       END DO
92      END DO
93        call histbeg_totreg(infile, rlong(:,1), rlat(1,:),  
94       .             1, iip1, 1, jjp1,    CALL histbeg_totreg('fluxstokev.nc', rlong(:, 1), rlat(1, :jjm), 1, iip1, &
95       .             tau0, zjulian, tstep, uhoriid, fileid)         1, jjm, itau_dyn, zjulian, tstep, vhoriid, filevid)
96  C  
97  C  Creation du fichier histoire pour la grille en V (oblige pour l'instant,    CALL histbeg_totreg('defstoke.nc', (/1./), (/1./), 1, 1, 1, 1, itau_dyn, &
98  C  IOIPSL ne permet pas de grilles avec des nombres de point differents dans         zjulian, tstep, dhoriid, filedid)
99  C  un meme fichier)  
100      !  Appel a histhori pour rajouter les autres grilles horizontales      
101    
102        do jj = 1, jjm    DO jj = 1, jjp1
103          do ii = 1, iip1       DO ii = 1, iip1
104            rlong(ii,jj) = rlonv(ii) * 180. / pi          rlong(ii, jj) = rlonv(ii)*180./pi
105            rlat(ii,jj) = rlatv(jj) * 180. / pi          rlat(ii, jj) = rlatu(jj)*180./pi
106          enddo       END DO
107        enddo    END DO
108    
109        call histbeg_totreg('fluxstokev.nc', rlong(:,1),    CALL histhori_regular(fileid, iip1, rlong, jjp1, rlat, 'scalar', &
110       .             rlat(1,:jjm),1, iip1, 1, jjm,         'Grille points scalaires', thoriid)
111       .             tau0, zjulian, tstep, vhoriid, filevid)  
112              !  Appel a histvert pour la grille verticale                            
113        call histbeg_totreg('defstoke.nc', (/1./), (/1./),  
114       .             1, 1, 1, 1,    CALL histvert(fileid, 'sig_s', 'Niveaux sigma', 'sigma_level', llm, &
115       .             tau0, zjulian, tstep, dhoriid, filedid)         nivsigs, zvertiid)
116      ! Pour le fichier V                                                    
117  C    CALL histvert(filevid, 'sig_s', 'Niveaux sigma', 'sigma_level', llm, &
118  C  Appel a histhori pour rajouter les autres grilles horizontales         nivsigs, zvertiid)
119  C    ! pour le fichier def                                                  
120        do jj = 1, jjp1    nivd(1) = 1
121          do ii = 1, iip1    CALL histvert(filedid, 'sig_s', 'Niveaux sigma', 'sigma_level', 1, nivd, &
122            rlong(ii,jj) = rlonv(ii) * 180. / pi         dvertiid)
123            rlat(ii,jj) = rlatu(jj) * 180. / pi  
124          enddo    !  Appels a histdef pour la definition des variables a sauvegarder      
125        enddo    CALL histdef(fileid, 'phis', 'Surface geop. height', '-', iip1, jjp1, &
126           thoriid, 1, 1, 1, -99, 'once', t_ops, t_wrt)
127        call histhori_regular(fileid, iip1, rlong, jjp1, rlat, 'scalar',    CALL histdef(fileid, 'aire', 'Grid area', '-', iip1, jjp1, thoriid, 1, 1, &
128       .              'Grille points scalaires', thoriid)         1, -99, 'once', t_ops, t_wrt)
129              CALL histdef(filedid, 'dtvr', 'tps dyn', 's', 1, 1, dhoriid, 1, 1, 1, -99, &
130  C         'once', t_ops, t_wrt)
131  C  Appel a histvert pour la grille verticale    CALL histdef(filedid, 'istdyn', 'tps stock', 's', 1, 1, dhoriid, 1, 1, 1, &
132  C         -99, 'once', t_ops, t_wrt)
133        call histvert(fileid, 'sig_s', 'Niveaux sigma',    CALL histdef(filedid, 'istphy', 'tps stock phy', 's', 1, 1, dhoriid, 1, 1, &
134       . 'sigma_level',         1, -99, 'once', t_ops, t_wrt)
135       .              llm, nivsigs, zvertiid)    CALL histdef(fileid, 'masse', 'Masse', 'kg', iip1, jjp1, thoriid, llm, 1, &
136  C Pour le fichier V         llm, zvertiid, 'inst(X)', t_ops, t_wrt)
137        call histvert(filevid, 'sig_s', 'Niveaux sigma',    CALL histdef(fileid, 'pbaru', 'flx de masse zonal', 'kg m/s', iip1, jjp1, &
138       .  'sigma_level',         uhoriid, llm, 1, llm, zvertiid, 'inst(X)', t_ops, t_wrt)
139       .              llm, nivsigs, zvertiid)    CALL histdef(filevid, 'pbarv', 'flx de masse mer', 'kg m/s', iip1, jjm, &
140  c pour le fichier def         vhoriid, llm, 1, llm, zvertiid, 'inst(X)', t_ops, t_wrt)
141        nivd(1) = 1    CALL histdef(fileid, 'w', 'flx de masse vert', 'kg m/s', iip1, jjp1, &
142        call histvert(filedid, 'sig_s', 'Niveaux sigma',         thoriid, llm, 1, llm, zvertiid, 'inst(X)', t_ops, t_wrt)
143       .  'sigma_level',    CALL histdef(fileid, 'teta', 'temperature potentielle', '-', iip1, jjp1, &
144       .              1, nivd, dvertiid)         thoriid, llm, 1, llm, zvertiid, 'inst(X)', t_ops, t_wrt)
145      CALL histdef(fileid, 'phi', 'geopotentiel instantane', '-', iip1, jjp1, &
146  C         thoriid, llm, 1, llm, zvertiid, 'inst(X)', t_ops, t_wrt)
147  C  Appels a histdef pour la definition des variables a sauvegarder  
148              CALL histend(fileid)
149          CALL histdef(fileid, "phis", "Surface geop. height", "-",    CALL histend(filevid)
150       .                iip1,jjp1,thoriid, 1,1,1, -99,    CALL histend(filedid)
151       .                "once", t_ops, t_wrt)    IF (ok_sync) THEN
152         CALL histsync(fileid)
153           CALL histdef(fileid, "aire", "Grid area", "-",       CALL histsync(filevid)
154       .                iip1,jjp1,thoriid, 1,1,1, -99,       CALL histsync(filedid)
155       .                "once", t_ops, t_wrt)    END IF
156            
157          CALL histdef(filedid, "dtvr", "tps dyn", "s",  END SUBROUTINE initfluxsto
      .                1,1,dhoriid, 1,1,1, -99,  
      .                "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.57

  ViewVC Help
Powered by ViewVC 1.1.21