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

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

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

revision 47 by guez, Fri Jul 1 15:00:48 2011 UTC revision 61 by guez, Fri Apr 20 14:58:43 2012 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 102  contains Line 44  contains
44      USE dynetat0_m, ONLY : day_ini      USE dynetat0_m, ONLY : day_ini
45      USE gath_cpl, ONLY : gath2cpl      USE gath_cpl, ONLY : gath2cpl
46      use hbtm_m, only: hbtm      use hbtm_m, only: hbtm
47      USE histcom, ONLY : histbeg_totreg, histdef, histend, histsync      USE histsync_m, ONLY : histsync
48        USE histbeg_totreg_m, ONLY : histbeg_totreg
49        USE histend_m, ONLY : histend
50        USE histdef_m, ONLY : histdef
51      use histwrite_m, only: histwrite      use histwrite_m, only: histwrite
52      USE indicesol, ONLY : epsfra, is_lic, is_oce, is_sic, is_ter, nbsrf      USE indicesol, ONLY : epsfra, is_lic, is_oce, is_sic, is_ter, nbsrf
53      USE iniprint, ONLY : prt_level      USE conf_gcm_m, ONLY : prt_level
54      USE suphec_m, ONLY : rd, rg, rkappa      USE suphec_m, ONLY : rd, rg, rkappa
55      USE temps, ONLY : annee_ref, itau_phy      USE temps, ONLY : annee_ref, itau_phy
56      use yamada4_m, only: yamada4      use yamada4_m, only: yamada4
57    
58      REAL, INTENT (IN) :: dtime      ! Arguments:
59    
60        REAL, INTENT (IN) :: dtime ! interval du temps (secondes)
61      REAL date0      REAL date0
62        ! date0----input-R- jour initial
63      INTEGER, INTENT (IN) :: itap      INTEGER, INTENT (IN) :: itap
64      REAL t(klon, klev), q(klon, klev)      ! itap-----input-I- numero du pas de temps
65        REAL, INTENT(IN):: t(klon, klev), q(klon, klev)
66        ! t--------input-R- temperature (K)
67        ! q--------input-R- vapeur d'eau (kg/kg)
68      REAL, INTENT (IN):: u(klon, klev), v(klon, klev)      REAL, INTENT (IN):: u(klon, klev), v(klon, klev)
69        ! u--------input-R- vitesse u
70        ! v--------input-R- vitesse v
71      REAL, INTENT (IN):: paprs(klon, klev+1)      REAL, INTENT (IN):: paprs(klon, klev+1)
72        ! paprs----input-R- pression a intercouche (Pa)
73      REAL, INTENT (IN):: pplay(klon, klev)      REAL, INTENT (IN):: pplay(klon, klev)
74        ! pplay----input-R- pression au milieu de couche (Pa)
75      REAL, INTENT (IN):: rlon(klon), rlat(klon)      REAL, INTENT (IN):: rlon(klon), rlat(klon)
76        ! rlat-----input-R- latitude en degree
77      REAL cufi(klon), cvfi(klon)      REAL cufi(klon), cvfi(klon)
78        ! cufi-----input-R- resolution des mailles en x (m)
79        ! cvfi-----input-R- resolution des mailles en y (m)
80      REAL d_t(klon, klev), d_q(klon, klev)      REAL d_t(klon, klev), d_q(klon, klev)
81        ! d_t------output-R- le changement pour "t"
82        ! d_q------output-R- le changement pour "q"
83      REAL d_u(klon, klev), d_v(klon, klev)      REAL d_u(klon, klev), d_v(klon, klev)
84        ! d_u------output-R- le changement pour "u"
85        ! d_v------output-R- le changement pour "v"
86      REAL flux_t(klon, klev, nbsrf), flux_q(klon, klev, nbsrf)      REAL flux_t(klon, klev, nbsrf), flux_q(klon, klev, nbsrf)
87        ! flux_t---output-R- flux de chaleur sensible (CpT) J/m**2/s (W/m**2)
88        !                    (orientation positive vers le bas)
89        ! flux_q---output-R- flux de vapeur d'eau (kg/m**2/s)
90      REAL dflux_t(klon), dflux_q(klon)      REAL dflux_t(klon), dflux_q(klon)
91        ! dflux_t derive du flux sensible
92        ! dflux_q derive du flux latent
93      !IM "slab" ocean      !IM "slab" ocean
94      REAL flux_o(klon), flux_g(klon)      REAL flux_o(klon), flux_g(klon)
95        !IM "slab" ocean
96        ! flux_g---output-R-  flux glace (pour OCEAN='slab  ')
97        ! flux_o---output-R-  flux ocean (pour OCEAN='slab  ')
98      REAL y_flux_o(klon), y_flux_g(klon)      REAL y_flux_o(klon), y_flux_g(klon)
99      REAL tslab(klon), ytslab(klon)      REAL tslab(klon), ytslab(klon)
100        ! tslab-in/output-R temperature du slab ocean (en Kelvin)
101        ! uniqmnt pour slab
102      REAL seaice(klon), y_seaice(klon)      REAL seaice(klon), y_seaice(klon)
103        ! seaice---output-R-  glace de mer (kg/m2) (pour OCEAN='slab  ')
104      REAL y_fqcalving(klon), y_ffonte(klon)      REAL y_fqcalving(klon), y_ffonte(klon)
105      REAL fqcalving(klon, nbsrf), ffonte(klon, nbsrf)      REAL fqcalving(klon, nbsrf), ffonte(klon, nbsrf)
106        ! ffonte----Flux thermique utilise pour fondre la neige
107        ! fqcalving-Flux d'eau "perdue" par la surface et necessaire pour limiter la
108        !           hauteur de neige, en kg/m2/s
109      REAL run_off_lic_0(klon), y_run_off_lic_0(klon)      REAL run_off_lic_0(klon), y_run_off_lic_0(klon)
110    
111      REAL flux_u(klon, klev, nbsrf), flux_v(klon, klev, nbsrf)      REAL flux_u(klon, klev, nbsrf), flux_v(klon, klev, nbsrf)
112        ! flux_u---output-R- tension du vent X: (kg m/s)/(m**2 s) ou Pascal
113        ! flux_v---output-R- tension du vent Y: (kg m/s)/(m**2 s) ou Pascal
114      REAL rugmer(klon), agesno(klon, nbsrf)      REAL rugmer(klon), agesno(klon, nbsrf)
115      REAL, INTENT (IN) :: rugoro(klon)      REAL, INTENT (IN) :: rugoro(klon)
116      REAL cdragh(klon), cdragm(klon)      REAL cdragh(klon), cdragm(klon)
# Line 149  contains Line 127  contains
127    
128      REAL pctsrf(klon, nbsrf)      REAL pctsrf(klon, nbsrf)
129      REAL ts(klon, nbsrf)      REAL ts(klon, nbsrf)
130        ! ts-------input-R- temperature du sol (en Kelvin)
131      REAL d_ts(klon, nbsrf)      REAL d_ts(klon, nbsrf)
132        ! d_ts-----output-R- le changement pour "ts"
133      REAL snow(klon, nbsrf)      REAL snow(klon, nbsrf)
134      REAL qsurf(klon, nbsrf)      REAL qsurf(klon, nbsrf)
135      REAL evap(klon, nbsrf)      REAL evap(klon, nbsrf)
# Line 163  contains Line 143  contains
143    
144      REAL sollw(klon, nbsrf), solsw(klon, nbsrf), sollwdown(klon)      REAL sollw(klon, nbsrf), solsw(klon, nbsrf), sollwdown(klon)
145      REAL rugos(klon, nbsrf)      REAL rugos(klon, nbsrf)
146        ! rugos----input-R- longeur de rugosite (en m)
147      ! la nouvelle repartition des surfaces sortie de l'interface      ! la nouvelle repartition des surfaces sortie de l'interface
148      REAL pctsrf_new(klon, nbsrf)      REAL pctsrf_new(klon, nbsrf)
149    
# Line 182  contains Line 163  contains
163      REAL ytsoil(klon, nsoilmx)      REAL ytsoil(klon, nsoilmx)
164      REAL qsol(klon)      REAL qsol(klon)
165    
166      EXTERNAL clqh, clvent, calbeta, cltrac      EXTERNAL clvent, calbeta, cltrac
167    
168      REAL yts(klon), yrugos(klon), ypct(klon), yz0_new(klon)      REAL yts(klon), yrugos(klon), ypct(klon), yz0_new(klon)
169      REAL yalb(klon)      REAL yalb(klon)
170      REAL yalblw(klon)      REAL yalblw(klon)
171      REAL yu1(klon), yv1(klon)      REAL yu1(klon), yv1(klon)
172        ! on rajoute en output yu1 et yv1 qui sont les vents dans
173        ! la premiere couche
174      REAL ysnow(klon), yqsurf(klon), yagesno(klon), yqsol(klon)      REAL ysnow(klon), yqsurf(klon), yagesno(klon), yqsol(klon)
175      REAL yrain_f(klon), ysnow_f(klon)      REAL yrain_f(klon), ysnow_f(klon)
176      REAL ysollw(klon), ysolsw(klon), ysollwdown(klon)      REAL ysollw(klon), ysolsw(klon), ysollwdown(klon)
# Line 261  contains Line 244  contains
244      !IM cf. AM : pbl, hbtm (Comme les autres diagnostics on cumule ds      !IM cf. AM : pbl, hbtm (Comme les autres diagnostics on cumule ds
245      ! physiq ce qui permet de sortir les grdeurs par sous surface)      ! physiq ce qui permet de sortir les grdeurs par sous surface)
246      REAL pblh(klon, nbsrf)      REAL pblh(klon, nbsrf)
247        ! pblh------- HCL
248      REAL plcl(klon, nbsrf)      REAL plcl(klon, nbsrf)
249      REAL capcl(klon, nbsrf)      REAL capcl(klon, nbsrf)
250      REAL oliqcl(klon, nbsrf)      REAL oliqcl(klon, nbsrf)
251      REAL cteicl(klon, nbsrf)      REAL cteicl(klon, nbsrf)
252      REAL pblt(klon, nbsrf)      REAL pblt(klon, nbsrf)
253        ! pblT------- T au nveau HCL
254      REAL therm(klon, nbsrf)      REAL therm(klon, nbsrf)
255      REAL trmb1(klon, nbsrf)      REAL trmb1(klon, nbsrf)
256        ! trmb1-------deep_cape
257      REAL trmb2(klon, nbsrf)      REAL trmb2(klon, nbsrf)
258        ! trmb2--------inhibition
259      REAL trmb3(klon, nbsrf)      REAL trmb3(klon, nbsrf)
260        ! trmb3-------Point Omega
261      REAL ypblh(klon)      REAL ypblh(klon)
262      REAL ylcl(klon)      REAL ylcl(klon)
263      REAL ycapcl(klon)      REAL ycapcl(klon)
# Line 412  contains Line 400  contains
400      pctsrf_pot(:, is_oce) = 1. - zmasq      pctsrf_pot(:, is_oce) = 1. - zmasq
401      pctsrf_pot(:, is_sic) = 1. - zmasq      pctsrf_pot(:, is_sic) = 1. - zmasq
402    
403      DO nsrf = 1, nbsrf      loop_surface: DO nsrf = 1, nbsrf
404         ! chercher les indices:         ! Chercher les indices :
405         ni = 0         ni = 0
406         knon = 0         knon = 0
407         DO i = 1, klon         DO i = 1, klon
# Line 795  contains Line 783  contains
783               seaice(1:klon) = y_seaice(1:klon)               seaice(1:klon) = y_seaice(1:klon)
784            END IF            END IF
785         END IF         END IF
786      END DO      END DO loop_surface
787    
788      ! On utilise les nouvelles surfaces      ! On utilise les nouvelles surfaces
789    

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

  ViewVC Help
Powered by ViewVC 1.1.21