/[lmdze]/trunk/dyn3d/dynredem1.f
ViewVC logotype

Diff of /trunk/dyn3d/dynredem1.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 20 by guez, Wed Oct 15 16:19:57 2008 UTC revision 23 by guez, Mon Dec 14 15:25:16 2009 UTC
# Line 1  Line 1 
1  SUBROUTINE dynredem1(fichnom, time, vcov, ucov, teta, q, masse, ps)  SUBROUTINE dynredem1(fichnom, vcov, ucov, teta, q, masse, ps)
2    
3    ! From dyn3d/dynredem.F, v 1.2 2004/06/22 11:45:30    ! From dyn3d/dynredem.F, v 1.2 2004/06/22 11:45:30
   
4    ! Ecriture du fichier de redémarrage au format NetCDF    ! Ecriture du fichier de redémarrage au format NetCDF
5    
6    USE dimens_m, ONLY : iim, jjm, llm, nqmx    USE dimens_m, ONLY : iim, jjm, llm, nqmx
7    USE temps, ONLY : itaufin, itau_dyn    USE temps, ONLY : itaufin, itau_dyn
8    USE iniadvtrac_m, ONLY : tname    USE iniadvtrac_m, ONLY : tname
9    use netcdf, only: nf90_open, nf90_write, nf90_noerr, nf90_put_var, &    use netcdf, only: nf90_write
10         nf90_get_var, nf90_close    use netcdf95, only: nf95_close, nf95_gw_var, nf95_inq_varid, nf95_open, &
11    use netcdf95, only: nf95_inq_varid         nf95_put_var
12    
13    IMPLICIT NONE    IMPLICIT NONE
14    
15      CHARACTER(len=*), INTENT (IN) :: fichnom
16    REAL, INTENT (IN) :: vcov(iim + 1, jjm, llm), ucov(iim+1, jjm+1, llm)    REAL, INTENT (IN) :: vcov(iim + 1, jjm, llm), ucov(iim+1, jjm+1, llm)
17    REAL, INTENT (IN) :: teta(iim+1, jjm+1, llm)    REAL, INTENT (IN) :: teta(iim+1, jjm+1, llm)
   REAL, INTENT (IN) :: ps(iim+1, jjm+1), masse(iim+1, jjm+1, llm)  
18    REAL, INTENT (IN) :: q(iim+1, jjm+1, llm, nqmx)    REAL, INTENT (IN) :: q(iim+1, jjm+1, llm, nqmx)
19    CHARACTER(len=*), INTENT (IN) :: fichnom    REAL, INTENT (IN) :: ps(iim+1, jjm+1), masse(iim+1, jjm+1, llm)
20    
21    REAL :: time    ! Variables local to the procedure:
22    INTEGER :: nid, nvarid    INTEGER nid, nvarid
23    INTEGER :: ierr    INTEGER iq
24    INTEGER :: iq    REAL, pointer:: tab_cntrl(:) ! tableau des paramètres du run
   INTEGER :: length  
   PARAMETER (length=100)  
   REAL :: tab_cntrl(length) ! tableau des parametres du run  
25    INTEGER :: nb = 0    INTEGER :: nb = 0
26    
27    !---------------------------------------------------------    !---------------------------------------------------------
28    
29    PRINT *, 'Call sequence information: dynredem1'    PRINT *, 'Call sequence information: dynredem1'
30    
31    ierr = nf90_open(fichnom, nf90_write, nid)    call nf95_open(fichnom, nf90_write, nid)
   IF (ierr/=nf90_noerr) THEN  
      PRINT *, 'Pb. d ouverture ' // fichnom  
      STOP 1  
   END IF  
   
   !  Ecriture/extension de la coordonnee temps  
32    
33      ! Écriture/extension de la coordonnée temps
34    nb = nb + 1    nb = nb + 1
35    call nf95_inq_varid(nid, 'temps', nvarid)    call nf95_inq_varid(nid, 'temps', nvarid)
36    ierr = nf90_put_var(nid, nvarid, time, (/nb/))    call nf95_put_var(nid, nvarid, values=0., start=(/nb/))
37    PRINT *, 'Enregistrement pour ', nb, time    PRINT *, "Enregistrement pour nb = ", nb
   
38    
39    !  Re-ecriture du tableau de controle, itaufin n'est plus defini quand    ! Récriture du tableau de contrôle, "itaufin" n'est plus défini quand
40    !  on passe dans dynredem0    ! on passe dans "dynredem0"
41    call nf95_inq_varid(nid, 'controle', nvarid)    call nf95_inq_varid(nid, 'controle', nvarid)
42    ierr = nf90_get_var(nid, nvarid, tab_cntrl)    call nf95_gw_var(nid, nvarid, tab_cntrl)
43    tab_cntrl(31) = real(itau_dyn+itaufin)    tab_cntrl(31) = real(itau_dyn + itaufin)
44    ierr = nf90_put_var(nid, nvarid, tab_cntrl)    call nf95_put_var(nid, nvarid, tab_cntrl)
45      deallocate(tab_cntrl) ! pointer
46    
47    !  Ecriture des champs    ! Écriture des champs
48    
49    call nf95_inq_varid(nid, 'ucov', nvarid)    call nf95_inq_varid(nid, 'ucov', nvarid)
50    ierr = nf90_put_var(nid, nvarid, ucov)    call nf95_put_var(nid, nvarid, ucov)
51    
52    call nf95_inq_varid(nid, 'vcov', nvarid)    call nf95_inq_varid(nid, 'vcov', nvarid)
53    ierr = nf90_put_var(nid, nvarid, vcov)    call nf95_put_var(nid, nvarid, vcov)
54    
55    call nf95_inq_varid(nid, 'teta', nvarid)    call nf95_inq_varid(nid, 'teta', nvarid)
56    ierr = nf90_put_var(nid, nvarid, teta)    call nf95_put_var(nid, nvarid, teta)
57    
58    DO iq = 1, nqmx    DO iq = 1, nqmx
59       call nf95_inq_varid(nid, tname(iq), nvarid)       call nf95_inq_varid(nid, tname(iq), nvarid)
60       ierr = nf90_put_var(nid, nvarid, q(:, :, :, iq))       call nf95_put_var(nid, nvarid, q(:, :, :, iq))
61    END DO    END DO
62    
63    call nf95_inq_varid(nid, 'masse', nvarid)    call nf95_inq_varid(nid, 'masse', nvarid)
64    ierr = nf90_put_var(nid, nvarid, masse)    call nf95_put_var(nid, nvarid, masse)
65    
66    call nf95_inq_varid(nid, 'ps', nvarid)    call nf95_inq_varid(nid, 'ps', nvarid)
67    ierr = nf90_put_var(nid, nvarid, ps)    call nf95_put_var(nid, nvarid, ps)
68    
69    ierr = nf90_close(nid)    call nf95_close(nid)
70    
71  END SUBROUTINE dynredem1  END SUBROUTINE dynredem1

Legend:
Removed from v.20  
changed lines
  Added in v.23

  ViewVC Help
Powered by ViewVC 1.1.21