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

  ViewVC Help
Powered by ViewVC 1.1.21