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

  ViewVC Help
Powered by ViewVC 1.1.21