/[lmdze]/trunk/Sources/phylmd/phyetat0.f
ViewVC logotype

Diff of /trunk/Sources/phylmd/phyetat0.f

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

revision 3 by guez, Wed Feb 27 13:16:39 2008 UTC revision 22 by guez, Fri Jul 31 15:18:47 2009 UTC
# Line 1  Line 1 
1  module phyetat0_m  module phyetat0_m
2    
3    use dimphy, only: klon, klev, zmasq    use dimphy, only: klon
4      
5    IMPLICIT none    IMPLICIT none
6    
7    REAL, save:: rlat(klon), rlon(klon)    REAL, save:: rlat(klon), rlon(klon) ! latitude and longitude, in degrees
   ! latitude et longitude pour chaque point, in degrees  
8    
9    private klon, klev, zmasq    private klon
10    
11  contains  contains
12    
13    SUBROUTINE phyetat0(fichnom,dtime,co2_ppm_etat0,solaire_etat0, &    SUBROUTINE phyetat0(fichnom, pctsrf, tsol,tsoil, ocean, tslab,seaice, &
        pctsrf, tsol,tsoil, &  
        ocean, tslab,seaice, & !IM "slab" ocean  
14         qsurf,qsol,snow, &         qsurf,qsol,snow, &
15         albe, alblw, evap, rain_fall, snow_fall, solsw, sollw, &         albe, alblw, evap, rain_fall, snow_fall, solsw, sollw, &
16         fder,radsol,frugs,agesno,clesphy0, &         fder,radsol,frugs,agesno, &
17         zmea,zstd,zsig,zgam,zthe,zpic,zval,rugsrel,tabcntr0, &         zmea,zstd,zsig,zgam,zthe,zpic,zval, &
18         t_ancien,q_ancien,ancien_ok, rnebcon, ratqs,clwcon, &         t_ancien,q_ancien,ancien_ok, rnebcon, ratqs,clwcon, &
19         run_off_lic_0)         run_off_lic_0)
20    
21      ! From phylmd/phyetat0.F,v 1.4 2005/06/03 10:03:07      ! From phylmd/phyetat0.F,v 1.4 2005/06/03 10:03:07
   
     use dimens_m  
     use indicesol  
     use dimsoil  
     use temps  
     use clesphys  
   
22      ! Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818      ! Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818
23      ! Objet: Lecture de l'etat initial pour la physique      ! Objet: Lecture de l'etat initial pour la physique
24    
25        USE indicesol, ONLY : epsfra, is_lic, is_oce, is_sic, is_ter, nbsrf
26        USE dimsoil, ONLY : nsoilmx
27        USE temps, ONLY : itau_phy
28        use netcdf, only: nf90_get_att, nf90_global
29        use netcdf95, only: handle_err
30        use dimphy, only: zmasq, klev
31    
32      include "netcdf.inc"      include "netcdf.inc"
33    
34      CHARACTER*(*) fichnom      CHARACTER(len=*) fichnom
     REAL, intent(out):: dtime  
     INTEGER radpas  
     REAL, intent(out):: co2_ppm_etat0  
     REAL, intent(out):: solaire_etat0  
35      REAL tsol(klon,nbsrf)      REAL tsol(klon,nbsrf)
36      REAL tsoil(klon,nsoilmx,nbsrf)      REAL tsoil(klon,nsoilmx,nbsrf)
37      !IM "slab" ocean      !IM "slab" ocean
# Line 58  contains Line 51  contains
51      REAL frugs(klon,nbsrf)      REAL frugs(klon,nbsrf)
52      REAL agesno(klon,nbsrf)      REAL agesno(klon,nbsrf)
53      REAL zmea(klon)      REAL zmea(klon)
54      REAL zstd(klon)      REAL, intent(out):: zstd(klon)
55      REAL zsig(klon)      REAL, intent(out):: zsig(klon)
56      REAL zgam(klon)      REAL zgam(klon)
57      REAL zthe(klon)      REAL zthe(klon)
58      REAL zpic(klon)      REAL zpic(klon)
59      REAL zval(klon)      REAL zval(klon)
     REAL rugsrel(klon)  
60      REAL pctsrf(klon, nbsrf)      REAL pctsrf(klon, nbsrf)
61      REAL fractint(klon)      REAL fractint(klon)
62      REAL run_off_lic_0(klon)      REAL run_off_lic_0(klon)
# Line 73  contains Line 65  contains
65      real rnebcon(klon,klev),clwcon(klon,klev),ratqs(klon,klev)      real rnebcon(klon,klev),clwcon(klon,klev),ratqs(klon,klev)
66      LOGICAL ancien_ok      LOGICAL ancien_ok
67    
68      CHARACTER*6 ocean      CHARACTER(len=*), intent(in):: ocean
   
     INTEGER        longcles  
     PARAMETER    ( longcles = 20 )  
     REAL clesphy0( longcles )  
69    
70      REAL xmin, xmax      REAL xmin, xmax
71    
72      INTEGER nid, nvarid      INTEGER nid, nvarid
73      INTEGER ierr, i, nsrf, isoil      INTEGER ierr, i, nsrf, isoil
     INTEGER length  
     PARAMETER (length=100)  
     REAL tab_cntrl(length), tabcntr0(length)  
74      CHARACTER*7 str7      CHARACTER*7 str7
75      CHARACTER*2 str2      CHARACTER*2 str2
76    
# Line 103  contains Line 88  contains
88         STOP 1         STOP 1
89      ENDIF      ENDIF
90    
91      ! Lecture des parametres de controle:      ierr = nf90_get_att(nid, nf90_global, "itau_phy", itau_phy)
92        call handle_err("phyetat0 itau_phy", ierr, nid, nf90_global)
     ierr = NF_INQ_VARID (nid, "controle", nvarid)  
     IF (ierr.NE.NF_NOERR) THEN  
        PRINT*, 'phyetat0: Le champ <controle> est absent'  
        stop 1  
     ENDIF  
     ierr = NF_GET_VAR_REAL(nid, nvarid, tab_cntrl)  
     IF (ierr.NE.NF_NOERR) THEN  
        PRINT*, 'phyetat0: Lecture echouee pour <controle>'  
        stop 1  
     ELSE  
        DO i = 1, length  
           tabcntr0( i ) = tab_cntrl( i )  
        ENDDO  
   
        cycle_diurne   = .FALSE.  
        soil_model     = .FALSE.  
        new_oliq       = .FALSE.  
        ok_orodr       = .FALSE.  
        ok_orolf       = .FALSE.  
        ok_limitvrai   = .FALSE.  
   
   
        IF( clesphy0(1).NE.tab_cntrl( 5 ) )  THEN  
           tab_cntrl( 5 ) = clesphy0(1)  
        ENDIF  
   
        IF( clesphy0(2).NE.tab_cntrl( 6 ) )  THEN  
           tab_cntrl( 6 ) = clesphy0(2)  
        ENDIF  
   
        IF( clesphy0(3).NE.tab_cntrl( 7 ) )  THEN  
           tab_cntrl( 7 ) = clesphy0(3)  
        ENDIF  
   
        IF( clesphy0(4).NE.tab_cntrl( 8 ) )  THEN  
           tab_cntrl( 8 ) = clesphy0(4)  
        ENDIF  
   
        IF( clesphy0(5).NE.tab_cntrl( 9 ) )  THEN  
           tab_cntrl( 9 ) = clesphy0( 5 )  
        ENDIF  
   
        IF( clesphy0(6).NE.tab_cntrl( 10 ) )  THEN  
           tab_cntrl( 10 ) = clesphy0( 6 )  
        ENDIF  
   
        IF( clesphy0(7).NE.tab_cntrl( 11 ) )  THEN  
           tab_cntrl( 11 ) = clesphy0( 7 )  
        ENDIF  
   
        IF( clesphy0(8).NE.tab_cntrl( 12 ) )  THEN  
           tab_cntrl( 12 ) = clesphy0( 8 )  
        ENDIF  
   
   
        dtime        = tab_cntrl(1)  
        radpas       = int(tab_cntrl(2))  
        co2_ppm_etat0      = tab_cntrl(3)  
        solaire_etat0      = tab_cntrl(4)  
        iflag_con    = tab_cntrl(5)  
        nbapp_rad    = tab_cntrl(6)  
   
   
        cycle_diurne    = .FALSE.  
        soil_model      = .FALSE.  
        new_oliq        = .FALSE.  
        ok_orodr        = .FALSE.  
        ok_orolf        = .FALSE.  
        ok_limitvrai    = .FALSE.  
   
        IF( tab_cntrl( 7) .EQ. 1. )    cycle_diurne  = .TRUE.  
        IF( tab_cntrl( 8) .EQ. 1. )       soil_model = .TRUE.  
        IF( tab_cntrl( 9) .EQ. 1. )         new_oliq = .TRUE.  
        IF( tab_cntrl(10) .EQ. 1. )         ok_orodr = .TRUE.  
        IF( tab_cntrl(11) .EQ. 1. )         ok_orolf = .TRUE.  
        IF( tab_cntrl(12) .EQ. 1. )     ok_limitvrai = .TRUE.  
     ENDIF  
   
     itau_phy = tab_cntrl(15)  
   
93    
94      ! Lecture des latitudes (coordonnees):      ! Lecture des latitudes (coordonnees):
95    
# Line 1067  contains Line 972  contains
972      ENDDO      ENDDO
973      PRINT*,'OROGRAPHIE SOUS-MAILLE zval:', xmin, xmax      PRINT*,'OROGRAPHIE SOUS-MAILLE zval:', xmin, xmax
974    
   
     ierr = NF_INQ_VARID (nid, "RUGSREL", nvarid)  
     IF (ierr.NE.NF_NOERR) THEN  
        PRINT*, 'phyetat0: Le champ <RUGSREL> est absent'  
        stop 1  
     ENDIF  
     ierr = NF_GET_VAR_REAL(nid, nvarid, rugsrel)  
     IF (ierr.NE.NF_NOERR) THEN  
        PRINT*, 'phyetat0: Lecture echouee pour <RUGSREL>'  
        stop 1  
     ENDIF  
     xmin = 1.0E+20  
     xmax = -1.0E+20  
     DO i = 1, klon  
        xmin = MIN(rugsrel(i),xmin)  
        xmax = MAX(rugsrel(i),xmax)  
     ENDDO  
     PRINT*,'Rugosite relief (ecart-type) rugsrel:', xmin, xmax  
   
   
975      ancien_ok = .TRUE.      ancien_ok = .TRUE.
976    
977      ierr = NF_INQ_VARID (nid, "TANCIEN", nvarid)      ierr = NF_INQ_VARID (nid, "TANCIEN", nvarid)

Legend:
Removed from v.3  
changed lines
  Added in v.22

  ViewVC Help
Powered by ViewVC 1.1.21