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

  ViewVC Help
Powered by ViewVC 1.1.21