/[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 15 by guez, Fri Aug 1 15:24:12 2008 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)
8    ! latitude et longitude pour chaque point, in degrees    ! latitude et longitude pour chaque point, in degrees
9    
10    private klon, klev, zmasq    private klon
11    
12  contains  contains
13    
14    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  
15         qsurf,qsol,snow, &         qsurf,qsol,snow, &
16         albe, alblw, evap, rain_fall, snow_fall, solsw, sollw, &         albe, alblw, evap, rain_fall, snow_fall, solsw, sollw, &
17         fder,radsol,frugs,agesno,clesphy0, &         fder,radsol,frugs,agesno, &
18         zmea,zstd,zsig,zgam,zthe,zpic,zval,rugsrel,tabcntr0, &         zmea,zstd,zsig,zgam,zthe,zpic,zval, &
19         t_ancien,q_ancien,ancien_ok, rnebcon, ratqs,clwcon, &         t_ancien,q_ancien,ancien_ok, rnebcon, ratqs,clwcon, &
20         run_off_lic_0)         run_off_lic_0)
21    
22      ! 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  
   
23      ! Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818      ! Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818
24      ! Objet: Lecture de l'etat initial pour la physique      ! Objet: Lecture de l'etat initial pour la physique
25    
26        USE indicesol, ONLY : epsfra, is_lic, is_oce, is_sic, is_ter, nbsrf
27        USE dimsoil, ONLY : nsoilmx
28        USE temps, ONLY : itau_phy
29        use netcdf, only: nf90_get_att, nf90_global
30        use netcdf95, only: handle_err
31        use dimphy, only: zmasq, klev
32    
33      include "netcdf.inc"      include "netcdf.inc"
34    
35      CHARACTER*(*) fichnom      CHARACTER(len=*) fichnom
     REAL, intent(out):: dtime  
     INTEGER radpas  
     REAL, intent(out):: co2_ppm_etat0  
     REAL, intent(out):: solaire_etat0  
36      REAL tsol(klon,nbsrf)      REAL tsol(klon,nbsrf)
37      REAL tsoil(klon,nsoilmx,nbsrf)      REAL tsoil(klon,nsoilmx,nbsrf)
38      !IM "slab" ocean      !IM "slab" ocean
# Line 58  contains Line 52  contains
52      REAL frugs(klon,nbsrf)      REAL frugs(klon,nbsrf)
53      REAL agesno(klon,nbsrf)      REAL agesno(klon,nbsrf)
54      REAL zmea(klon)      REAL zmea(klon)
55      REAL zstd(klon)      REAL, intent(out):: zstd(klon)
56      REAL zsig(klon)      REAL, intent(out):: zsig(klon)
57      REAL zgam(klon)      REAL zgam(klon)
58      REAL zthe(klon)      REAL zthe(klon)
59      REAL zpic(klon)      REAL zpic(klon)
60      REAL zval(klon)      REAL zval(klon)
     REAL rugsrel(klon)  
61      REAL pctsrf(klon, nbsrf)      REAL pctsrf(klon, nbsrf)
62      REAL fractint(klon)      REAL fractint(klon)
63      REAL run_off_lic_0(klon)      REAL run_off_lic_0(klon)
# Line 73  contains Line 66  contains
66      real rnebcon(klon,klev),clwcon(klon,klev),ratqs(klon,klev)      real rnebcon(klon,klev),clwcon(klon,klev),ratqs(klon,klev)
67      LOGICAL ancien_ok      LOGICAL ancien_ok
68    
69      CHARACTER*6 ocean      CHARACTER(len=*), intent(in):: ocean
   
     INTEGER        longcles  
     PARAMETER    ( longcles = 20 )  
     REAL clesphy0( longcles )  
70    
71      REAL xmin, xmax      REAL xmin, xmax
72    
73      INTEGER nid, nvarid      INTEGER nid, nvarid
74      INTEGER ierr, i, nsrf, isoil      INTEGER ierr, i, nsrf, isoil
     INTEGER length  
     PARAMETER (length=100)  
     REAL tab_cntrl(length), tabcntr0(length)  
75      CHARACTER*7 str7      CHARACTER*7 str7
76      CHARACTER*2 str2      CHARACTER*2 str2
77    
# Line 103  contains Line 89  contains
89         STOP 1         STOP 1
90      ENDIF      ENDIF
91    
92      ! Lecture des parametres de controle:      ierr = nf90_get_att(nid, nf90_global, "itau_phy", itau_phy)
93        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)  
   
94    
95      ! Lecture des latitudes (coordonnees):      ! Lecture des latitudes (coordonnees):
96    
# Line 1067  contains Line 973  contains
973      ENDDO      ENDDO
974      PRINT*,'OROGRAPHIE SOUS-MAILLE zval:', xmin, xmax      PRINT*,'OROGRAPHIE SOUS-MAILLE zval:', xmin, xmax
975    
   
     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  
   
   
976      ancien_ok = .TRUE.      ancien_ok = .TRUE.
977    
978      ierr = NF_INQ_VARID (nid, "TANCIEN", nvarid)      ierr = NF_INQ_VARID (nid, "TANCIEN", nvarid)

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

  ViewVC Help
Powered by ViewVC 1.1.21