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

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

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

revision 47 by guez, Fri Jul 1 15:00:48 2011 UTC revision 49 by guez, Wed Aug 24 11:43:14 2011 UTC
# Line 33  contains Line 33  contains
33      ! en leur ajoutant une dimension, c'est-à-dire "nbsrf" (nombre de      ! en leur ajoutant une dimension, c'est-à-dire "nbsrf" (nombre de
34      ! sous-surfaces).      ! sous-surfaces).
35    
     ! Arguments:  
     ! dtime----input-R- interval du temps (secondes)  
     ! itap-----input-I- numero du pas de temps  
     ! date0----input-R- jour initial  
     ! t--------input-R- temperature (K)  
     ! q--------input-R- vapeur d'eau (kg/kg)  
     ! u--------input-R- vitesse u  
     ! v--------input-R- vitesse v  
     ! ts-------input-R- temperature du sol (en Kelvin)  
     ! paprs----input-R- pression a intercouche (Pa)  
     ! pplay----input-R- pression au milieu de couche (Pa)  
     ! radsol---input-R- flux radiatif net (positif vers le sol) en W/m**2  
     ! rlat-----input-R- latitude en degree  
     ! rugos----input-R- longeur de rugosite (en m)  
     ! cufi-----input-R- resolution des mailles en x (m)  
     ! cvfi-----input-R- resolution des mailles en y (m)  
   
     ! d_t------output-R- le changement pour "t"  
     ! d_q------output-R- le changement pour "q"  
     ! d_u------output-R- le changement pour "u"  
     ! d_v------output-R- le changement pour "v"  
     ! d_ts-----output-R- le changement pour "ts"  
     ! flux_t---output-R- flux de chaleur sensible (CpT) J/m**2/s (W/m**2)  
     !                    (orientation positive vers le bas)  
     ! flux_q---output-R- flux de vapeur d'eau (kg/m**2/s)  
     ! flux_u---output-R- tension du vent X: (kg m/s)/(m**2 s) ou Pascal  
     ! flux_v---output-R- tension du vent Y: (kg m/s)/(m**2 s) ou Pascal  
     ! dflux_t derive du flux sensible  
     ! dflux_q derive du flux latent  
     !IM "slab" ocean  
     ! flux_g---output-R-  flux glace (pour OCEAN='slab  ')  
     ! flux_o---output-R-  flux ocean (pour OCEAN='slab  ')  
   
     ! tslab-in/output-R temperature du slab ocean (en Kelvin)  
     ! uniqmnt pour slab  
   
     ! seaice---output-R-  glace de mer (kg/m2) (pour OCEAN='slab  ')  
     !cc  
     ! ffonte----Flux thermique utilise pour fondre la neige  
     ! fqcalving-Flux d'eau "perdue" par la surface et necessaire pour limiter la  
     !           hauteur de neige, en kg/m2/s  
     ! on rajoute en output yu1 et yv1 qui sont les vents dans  
     ! la premiere couche  
     ! ces 4 variables sont maintenant traites dans phytrac  
     ! itr--------input-I- nombre de traceurs  
     ! tr---------input-R- q. de traceurs  
     ! flux_surf--input-R- flux de traceurs a la surface  
     ! d_tr-------output-R tendance de traceurs  
     !IM cf. AM : PBL  
     ! trmb1-------deep_cape  
     ! trmb2--------inhibition  
     ! trmb3-------Point Omega  
     ! Cape(klon)-------Cape du thermique  
     ! EauLiq(klon)-------Eau liqu integr du thermique  
     ! ctei(klon)-------Critere d'instab d'entrainmt des nuages de CL  
     ! lcl------- Niveau de condensation  
     ! pblh------- HCL  
     ! pblT------- T au nveau HCL  
   
36      use calendar, ONLY : ymds2ju      use calendar, ONLY : ymds2ju
37        use clqh_m, only: clqh
38      use coefkz_m, only: coefkz      use coefkz_m, only: coefkz
39      use coefkzmin_m, only: coefkzmin      use coefkzmin_m, only: coefkzmin
40      USE conf_phys_m, ONLY : iflag_pbl      USE conf_phys_m, ONLY : iflag_pbl
# Line 110  contains Line 52  contains
52      USE temps, ONLY : annee_ref, itau_phy      USE temps, ONLY : annee_ref, itau_phy
53      use yamada4_m, only: yamada4      use yamada4_m, only: yamada4
54    
55      REAL, INTENT (IN) :: dtime      ! Arguments:
56    
57        REAL, INTENT (IN) :: dtime ! interval du temps (secondes)
58      REAL date0      REAL date0
59        ! date0----input-R- jour initial
60      INTEGER, INTENT (IN) :: itap      INTEGER, INTENT (IN) :: itap
61        ! itap-----input-I- numero du pas de temps
62      REAL t(klon, klev), q(klon, klev)      REAL t(klon, klev), q(klon, klev)
63        ! t--------input-R- temperature (K)
64        ! q--------input-R- vapeur d'eau (kg/kg)
65      REAL, INTENT (IN):: u(klon, klev), v(klon, klev)      REAL, INTENT (IN):: u(klon, klev), v(klon, klev)
66        ! u--------input-R- vitesse u
67        ! v--------input-R- vitesse v
68      REAL, INTENT (IN):: paprs(klon, klev+1)      REAL, INTENT (IN):: paprs(klon, klev+1)
69        ! paprs----input-R- pression a intercouche (Pa)
70      REAL, INTENT (IN):: pplay(klon, klev)      REAL, INTENT (IN):: pplay(klon, klev)
71        ! pplay----input-R- pression au milieu de couche (Pa)
72      REAL, INTENT (IN):: rlon(klon), rlat(klon)      REAL, INTENT (IN):: rlon(klon), rlat(klon)
73        ! rlat-----input-R- latitude en degree
74      REAL cufi(klon), cvfi(klon)      REAL cufi(klon), cvfi(klon)
75        ! cufi-----input-R- resolution des mailles en x (m)
76        ! cvfi-----input-R- resolution des mailles en y (m)
77      REAL d_t(klon, klev), d_q(klon, klev)      REAL d_t(klon, klev), d_q(klon, klev)
78        ! d_t------output-R- le changement pour "t"
79        ! d_q------output-R- le changement pour "q"
80      REAL d_u(klon, klev), d_v(klon, klev)      REAL d_u(klon, klev), d_v(klon, klev)
81        ! d_u------output-R- le changement pour "u"
82        ! d_v------output-R- le changement pour "v"
83      REAL flux_t(klon, klev, nbsrf), flux_q(klon, klev, nbsrf)      REAL flux_t(klon, klev, nbsrf), flux_q(klon, klev, nbsrf)
84        ! flux_t---output-R- flux de chaleur sensible (CpT) J/m**2/s (W/m**2)
85        !                    (orientation positive vers le bas)
86        ! flux_q---output-R- flux de vapeur d'eau (kg/m**2/s)
87      REAL dflux_t(klon), dflux_q(klon)      REAL dflux_t(klon), dflux_q(klon)
88        ! dflux_t derive du flux sensible
89        ! dflux_q derive du flux latent
90      !IM "slab" ocean      !IM "slab" ocean
91      REAL flux_o(klon), flux_g(klon)      REAL flux_o(klon), flux_g(klon)
92        !IM "slab" ocean
93        ! flux_g---output-R-  flux glace (pour OCEAN='slab  ')
94        ! flux_o---output-R-  flux ocean (pour OCEAN='slab  ')
95      REAL y_flux_o(klon), y_flux_g(klon)      REAL y_flux_o(klon), y_flux_g(klon)
96      REAL tslab(klon), ytslab(klon)      REAL tslab(klon), ytslab(klon)
97        ! tslab-in/output-R temperature du slab ocean (en Kelvin)
98        ! uniqmnt pour slab
99      REAL seaice(klon), y_seaice(klon)      REAL seaice(klon), y_seaice(klon)
100        ! seaice---output-R-  glace de mer (kg/m2) (pour OCEAN='slab  ')
101      REAL y_fqcalving(klon), y_ffonte(klon)      REAL y_fqcalving(klon), y_ffonte(klon)
102      REAL fqcalving(klon, nbsrf), ffonte(klon, nbsrf)      REAL fqcalving(klon, nbsrf), ffonte(klon, nbsrf)
103        ! ffonte----Flux thermique utilise pour fondre la neige
104        ! fqcalving-Flux d'eau "perdue" par la surface et necessaire pour limiter la
105        !           hauteur de neige, en kg/m2/s
106      REAL run_off_lic_0(klon), y_run_off_lic_0(klon)      REAL run_off_lic_0(klon), y_run_off_lic_0(klon)
107    
108      REAL flux_u(klon, klev, nbsrf), flux_v(klon, klev, nbsrf)      REAL flux_u(klon, klev, nbsrf), flux_v(klon, klev, nbsrf)
109        ! flux_u---output-R- tension du vent X: (kg m/s)/(m**2 s) ou Pascal
110        ! flux_v---output-R- tension du vent Y: (kg m/s)/(m**2 s) ou Pascal
111      REAL rugmer(klon), agesno(klon, nbsrf)      REAL rugmer(klon), agesno(klon, nbsrf)
112      REAL, INTENT (IN) :: rugoro(klon)      REAL, INTENT (IN) :: rugoro(klon)
113      REAL cdragh(klon), cdragm(klon)      REAL cdragh(klon), cdragm(klon)
# Line 149  contains Line 124  contains
124    
125      REAL pctsrf(klon, nbsrf)      REAL pctsrf(klon, nbsrf)
126      REAL ts(klon, nbsrf)      REAL ts(klon, nbsrf)
127        ! ts-------input-R- temperature du sol (en Kelvin)
128      REAL d_ts(klon, nbsrf)      REAL d_ts(klon, nbsrf)
129        ! d_ts-----output-R- le changement pour "ts"
130      REAL snow(klon, nbsrf)      REAL snow(klon, nbsrf)
131      REAL qsurf(klon, nbsrf)      REAL qsurf(klon, nbsrf)
132      REAL evap(klon, nbsrf)      REAL evap(klon, nbsrf)
# Line 163  contains Line 140  contains
140    
141      REAL sollw(klon, nbsrf), solsw(klon, nbsrf), sollwdown(klon)      REAL sollw(klon, nbsrf), solsw(klon, nbsrf), sollwdown(klon)
142      REAL rugos(klon, nbsrf)      REAL rugos(klon, nbsrf)
143        ! rugos----input-R- longeur de rugosite (en m)
144      ! la nouvelle repartition des surfaces sortie de l'interface      ! la nouvelle repartition des surfaces sortie de l'interface
145      REAL pctsrf_new(klon, nbsrf)      REAL pctsrf_new(klon, nbsrf)
146    
# Line 182  contains Line 160  contains
160      REAL ytsoil(klon, nsoilmx)      REAL ytsoil(klon, nsoilmx)
161      REAL qsol(klon)      REAL qsol(klon)
162    
163      EXTERNAL clqh, clvent, calbeta, cltrac      EXTERNAL clvent, calbeta, cltrac
164    
165      REAL yts(klon), yrugos(klon), ypct(klon), yz0_new(klon)      REAL yts(klon), yrugos(klon), ypct(klon), yz0_new(klon)
166      REAL yalb(klon)      REAL yalb(klon)
167      REAL yalblw(klon)      REAL yalblw(klon)
168      REAL yu1(klon), yv1(klon)      REAL yu1(klon), yv1(klon)
169        ! on rajoute en output yu1 et yv1 qui sont les vents dans
170        ! la premiere couche
171      REAL ysnow(klon), yqsurf(klon), yagesno(klon), yqsol(klon)      REAL ysnow(klon), yqsurf(klon), yagesno(klon), yqsol(klon)
172      REAL yrain_f(klon), ysnow_f(klon)      REAL yrain_f(klon), ysnow_f(klon)
173      REAL ysollw(klon), ysolsw(klon), ysollwdown(klon)      REAL ysollw(klon), ysolsw(klon), ysollwdown(klon)
# Line 261  contains Line 241  contains
241      !IM cf. AM : pbl, hbtm (Comme les autres diagnostics on cumule ds      !IM cf. AM : pbl, hbtm (Comme les autres diagnostics on cumule ds
242      ! physiq ce qui permet de sortir les grdeurs par sous surface)      ! physiq ce qui permet de sortir les grdeurs par sous surface)
243      REAL pblh(klon, nbsrf)      REAL pblh(klon, nbsrf)
244        ! pblh------- HCL
245      REAL plcl(klon, nbsrf)      REAL plcl(klon, nbsrf)
246      REAL capcl(klon, nbsrf)      REAL capcl(klon, nbsrf)
247      REAL oliqcl(klon, nbsrf)      REAL oliqcl(klon, nbsrf)
248      REAL cteicl(klon, nbsrf)      REAL cteicl(klon, nbsrf)
249      REAL pblt(klon, nbsrf)      REAL pblt(klon, nbsrf)
250        ! pblT------- T au nveau HCL
251      REAL therm(klon, nbsrf)      REAL therm(klon, nbsrf)
252      REAL trmb1(klon, nbsrf)      REAL trmb1(klon, nbsrf)
253        ! trmb1-------deep_cape
254      REAL trmb2(klon, nbsrf)      REAL trmb2(klon, nbsrf)
255        ! trmb2--------inhibition
256      REAL trmb3(klon, nbsrf)      REAL trmb3(klon, nbsrf)
257        ! trmb3-------Point Omega
258      REAL ypblh(klon)      REAL ypblh(klon)
259      REAL ylcl(klon)      REAL ylcl(klon)
260      REAL ycapcl(klon)      REAL ycapcl(klon)
# Line 412  contains Line 397  contains
397      pctsrf_pot(:, is_oce) = 1. - zmasq      pctsrf_pot(:, is_oce) = 1. - zmasq
398      pctsrf_pot(:, is_sic) = 1. - zmasq      pctsrf_pot(:, is_sic) = 1. - zmasq
399    
400      DO nsrf = 1, nbsrf      loop_surface: DO nsrf = 1, nbsrf
401         ! chercher les indices:         ! Chercher les indices :
402         ni = 0         ni = 0
403         knon = 0         knon = 0
404         DO i = 1, klon         DO i = 1, klon
# Line 795  contains Line 780  contains
780               seaice(1:klon) = y_seaice(1:klon)               seaice(1:klon) = y_seaice(1:klon)
781            END IF            END IF
782         END IF         END IF
783      END DO      END DO loop_surface
784    
785      ! On utilise les nouvelles surfaces      ! On utilise les nouvelles surfaces
786    

Legend:
Removed from v.47  
changed lines
  Added in v.49

  ViewVC Help
Powered by ViewVC 1.1.21