/[lmdze]/trunk/libf/phylmd/phyetat0.f90
ViewVC logotype

Diff of /trunk/libf/phylmd/phyetat0.f90

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

revision 3 by guez, Wed Feb 27 13:16:39 2008 UTC revision 12 by guez, Mon Jul 21 16:05:07 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, klev, zmasq
4      
5    IMPLICIT none    IMPLICIT none
6    
7    REAL, save:: rlat(klon), rlon(klon)    REAL, save:: rlat(klon), rlon(klon)
# Line 11  module phyetat0_m Line 11  module phyetat0_m
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,clesphy0, &
18         zmea,zstd,zsig,zgam,zthe,zpic,zval,rugsrel,tabcntr0, &         zmea,zstd,zsig,zgam,zthe,zpic,zval,rugsrel, &
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 clesphys2, ONLY : cycle_diurne, iflag_con, nbapp_rad, new_oliq, &
30             ok_limitvrai, ok_orodr, ok_orolf, soil_model
31        use netcdf, only: nf90_get_att, nf90_global
32        use netcdf95, only: handle_err
33    
34      include "netcdf.inc"      include "netcdf.inc"
35    
36      CHARACTER*(*) fichnom      CHARACTER(len=*) fichnom
     REAL, intent(out):: dtime  
     INTEGER radpas  
     REAL, intent(out):: co2_ppm_etat0  
     REAL, intent(out):: solaire_etat0  
37      REAL tsol(klon,nbsrf)      REAL tsol(klon,nbsrf)
38      REAL tsoil(klon,nsoilmx,nbsrf)      REAL tsoil(klon,nsoilmx,nbsrf)
39      !IM "slab" ocean      !IM "slab" ocean
# Line 73  contains Line 68  contains
68      real rnebcon(klon,klev),clwcon(klon,klev),ratqs(klon,klev)      real rnebcon(klon,klev),clwcon(klon,klev),ratqs(klon,klev)
69      LOGICAL ancien_ok      LOGICAL ancien_ok
70    
71      CHARACTER*6 ocean      CHARACTER(len=*), intent(in):: ocean
72    
73      INTEGER        longcles      INTEGER        longcles
74      PARAMETER    ( longcles = 20 )      PARAMETER    ( longcles = 20 )
75      REAL clesphy0( longcles )      REAL, intent(in):: clesphy0( longcles )
76    
77      REAL xmin, xmax      REAL xmin, xmax
78    
# Line 85  contains Line 80  contains
80      INTEGER ierr, i, nsrf, isoil      INTEGER ierr, i, nsrf, isoil
81      INTEGER length      INTEGER length
82      PARAMETER (length=100)      PARAMETER (length=100)
     REAL tab_cntrl(length), tabcntr0(length)  
83      CHARACTER*7 str7      CHARACTER*7 str7
84      CHARACTER*2 str2      CHARACTER*2 str2
85    
# Line 103  contains Line 97  contains
97         STOP 1         STOP 1
98      ENDIF      ENDIF
99    
100      ! Lecture des parametres de controle:      iflag_con    = clesphy0(1)
101        nbapp_rad    = clesphy0(2)
102      ierr = NF_INQ_VARID (nid, "controle", nvarid)      cycle_diurne  = clesphy0(3) == 1
103      IF (ierr.NE.NF_NOERR) THEN      soil_model = clesphy0(4) == 1
104         PRINT*, 'phyetat0: Le champ <controle> est absent'      new_oliq = clesphy0(5) == 1
105         stop 1      ok_orodr = clesphy0(6) == 1
106      ENDIF      ok_orolf = clesphy0(7) == 1
107      ierr = NF_GET_VAR_REAL(nid, nvarid, tab_cntrl)      ok_limitvrai = clesphy0(8) == 1
     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)  
108    
109        ierr = nf90_get_att(nid, nf90_global, "itau_phy", itau_phy)
110        call handle_err("phyetat0 itau_phy", ierr, nid, nf90_global)
111    
112      ! Lecture des latitudes (coordonnees):      ! Lecture des latitudes (coordonnees):
113    

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

  ViewVC Help
Powered by ViewVC 1.1.21