30 REAL,
ALLOCATABLE,
DIMENSION(:),
PRIVATE,
SAVE ::
fder
32 REAL,
ALLOCATABLE,
DIMENSION(:,:),
PUBLIC,
SAVE ::
snow
34 REAL,
ALLOCATABLE,
DIMENSION(:,:),
PRIVATE,
SAVE ::
qsurf
36 REAL,
ALLOCATABLE,
DIMENSION(:,:,:),
SAVE ::
ftsoil
56 REAL,
DIMENSION(klon),
INTENT(IN) :: fder_rst
57 REAL,
DIMENSION(klon, nbsrf),
INTENT(IN) :: snow_rst
58 REAL,
DIMENSION(klon, nbsrf),
INTENT(IN) :: qsurf_rst
59 REAL,
DIMENSION(klon, nsoilmx, nbsrf),
INTENT(IN) :: ftsoil_rst
65 CHARACTER(len=80) :: abort_message
66 CHARACTER(len = 20) :: modname =
'pbl_surface_init'
74 IF (ierr /= 0)
CALL abort_physic(
'pbl_surface_init',
'pb in allocation',1)
77 IF (ierr /= 0)
CALL abort_physic(
'pbl_surface_init',
'pb in allocation',1)
80 IF (ierr /= 0)
CALL abort_physic(
'pbl_surface_init',
'pb in allocation',1)
83 IF (ierr /= 0)
CALL abort_physic(
'pbl_surface_init',
'pb in allocation',1)
87 snow(:,:) = snow_rst(:,:)
88 qsurf(:,:) = qsurf_rst(:,:)
89 ftsoil(:,:,:) = ftsoil_rst(:,:,:)
97 WRITE(
lunout,*)
" *** Warning ***"
98 WRITE(
lunout,*)
" is_ter n'est pas le premier surface, is_ter = ",
is_ter
99 WRITE(
lunout,*)
"or on doit commencer par les surfaces continentales"
100 abort_message=
"voir ci-dessus"
105 WRITE(
lunout,*)
' *** Warning ***'
106 WRITE(
lunout,*)
' Pour des raisons de sequencement dans le code'
107 WRITE(
lunout,*)
' l''ocean doit etre traite avant la banquise'
109 abort_message=
'voir ci-dessus'
114 WRITE(
lunout,*)
' *** Warning ***'
115 WRITE(
lunout,*)
' Pour des raisons de sequencement dans le code'
116 WRITE(
lunout,*)
' la glace contineltalle doit etre traite avant la glace de mer'
118 abort_message=
'voir ci-dessus'
128 WRITE(
lunout,*)
' *** Warning ***'
130 abort_message=
'option pour l''ocean non valable'
143 zsig, lwdown_m, pphi, cldt, &
144 rain_f, snow_f, solsw_m, sollw_m, &
149 wake_dlt, wake_dlq, &
150 wake_cstar, wake_s, &
153 ts,sfrwl, alb_dir, alb_dif,ustar, u10m, v10m,wstar, &
154 cdragh, cdragm, zu1, zv1, &
155 alb_dir_m, alb_dif_m, zxsens, zxevap, &
156 alb3_lic, runoff, snowhgt, qsnow, to_ice, sissnow, &
157 zxtsol, zxfluxlat, zt2m, qsat2m, &
158 d_t, d_q, d_u, d_v, d_t_diss, &
163 zxsens_x, zxfluxlat_x,zxsens_w,zxfluxlat_w, &
166 delta_tsurf,wake_dens,cdragh_x,cdragh_w, &
167 cdragm_x,cdragm_w,kh,kh_x,kh_w, &
169 zcoefh, zcoefm, slab_wfbils, &
170 qsol, zq2m, s_pblh, s_plcl, &
173 s_pblh_x, s_plcl_x, s_pblh_w, s_plcl_w, &
175 s_capcl, s_oliqcl, s_cteicl, s_pblt, &
176 s_therm, s_trmb1, s_trmb2, s_trmb3, &
177 zustar,zu10m, zv10m, fder_print, &
178 zxqsurf, rh2m, zxfluxu, zxfluxv, &
179 z0m, z0h, agesno, sollw, solsw, &
180 d_ts, evap, fluxlat, t2m, &
181 wfbils, wfbilo, flux_t, flux_u, flux_v,&
182 dflux_t, dflux_q, zxsnow, &
185 zxfluxt, zxfluxq, q2m, flux_q, tke_x, &
276 REAL,
INTENT(IN) :: dtime
277 REAL,
INTENT(IN) :: date0
278 INTEGER,
INTENT(IN) :: itap
279 INTEGER,
INTENT(IN) :: jour
280 LOGICAL,
INTENT(IN) :: debut
281 LOGICAL,
INTENT(IN) :: lafin
282 REAL,
DIMENSION(klon),
INTENT(IN) :: rlon
283 REAL,
DIMENSION(klon),
INTENT(IN) :: rlat
284 REAL,
DIMENSION(klon),
INTENT(IN) :: rugoro
285 REAL,
DIMENSION(klon),
INTENT(IN) :: rmu0
286 REAL,
DIMENSION(klon),
INTENT(IN) :: rain_f
287 REAL,
DIMENSION(klon),
INTENT(IN) :: snow_f
288 REAL,
DIMENSION(klon),
INTENT(IN) :: solsw_m
289 REAL,
DIMENSION(klon),
INTENT(IN) :: sollw_m
290 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: t
291 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: q
292 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: u
293 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: v
294 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: pplay
295 REAL,
DIMENSION(klon,klev+1),
INTENT(IN) :: paprs
296 REAL,
DIMENSION(klon, nbsrf),
INTENT(IN) :: pctsrf
298 REAL,
DIMENSION(klon),
INTENT(IN) :: zsig
299 REAL,
DIMENSION(klon),
INTENT(IN) :: lwdown_m
300 REAL,
DIMENSION(klon),
INTENT(IN) :: gustiness
302 REAL,
DIMENSION(klon),
INTENT(IN) :: cldt
303 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: pphi
311 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: wake_dlt
312 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: wake_dlq
313 REAL,
DIMENSION(klon),
INTENT(IN) :: wake_s
314 REAL,
DIMENSION(klon),
INTENT(IN) :: wake_cstar
315 REAL,
DIMENSION(klon),
INTENT(IN) :: wake_dens
320 REAL,
DIMENSION(klon, nbsrf),
INTENT(INOUT) :: ts
321 REAL,
DIMENSION(klon, nbsrf),
INTENT(INOUT) :: delta_tsurf
324 REAL,
DIMENSIOn(6),
intent(in) :: SFRWL
325 REAL,
DIMENSION(klon, nsw, nbsrf),
INTENT(INOUT) :: alb_dir,alb_dif
328 REAL,
DIMENSION(klon, nbsrf),
INTENT(INOUT) :: ustar
329 REAL,
DIMENSION(klon, nbsrf+1),
INTENT(INOUT) :: wstar
330 REAL,
DIMENSION(klon, nbsrf),
INTENT(INOUT) :: u10m
331 REAL,
DIMENSION(klon, nbsrf),
INTENT(INOUT) :: v10m
334 REAL,
DIMENSION(klon, klev+1, nbsrf+1),
INTENT(INOUT) :: tke_x
338 REAL,
DIMENSION(klon, klev+1, nbsrf+1),
INTENT(INOUT) :: wake_dltke
343 REAL,
DIMENSION(klon),
INTENT(OUT) :: cdragh
344 REAL,
DIMENSION(klon),
INTENT(OUT) :: cdragm
345 REAL,
DIMENSION(klon),
INTENT(OUT) :: zu1
346 REAL,
DIMENSION(klon),
INTENT(OUT) :: zv1
348 REAL,
DIMENSION(klon, nsw),
INTENT(OUT) :: alb_dir_m,alb_dif_m
351 REAL,
DIMENSION(klon),
INTENT(OUT) :: alb3_lic
353 REAL,
DIMENSION(klon),
INTENT(OUT) :: zxsens
355 REAL,
DIMENSION(klon),
INTENT(OUT) :: zxevap
356 REAL,
DIMENSION(klon),
INTENT(OUT) :: zxtsol
358 REAL,
DIMENSION(klon,klev),
INTENT(OUT) :: d_t_w
359 REAL,
DIMENSION(klon,klev),
INTENT(OUT) :: d_q_w
360 REAL,
DIMENSION(klon,klev),
INTENT(OUT) :: d_t_x
361 REAL,
DIMENSION(klon,klev),
INTENT(OUT) :: d_q_x
363 REAL,
DIMENSION(klon),
INTENT(OUT) :: zxfluxlat
364 REAL,
DIMENSION(klon),
INTENT(OUT) :: zt2m
365 REAL,
DIMENSION(klon),
INTENT(OUT) :: qsat2m
366 REAL,
DIMENSION(klon, klev),
INTENT(OUT) :: d_t
367 REAL,
DIMENSION(klon, klev),
INTENT(OUT) :: d_t_diss
368 REAL,
DIMENSION(klon, klev),
INTENT(OUT) :: d_q
369 REAL,
DIMENSION(klon, klev),
INTENT(OUT) :: d_u
370 REAL,
DIMENSION(klon, klev),
INTENT(OUT) :: d_v
372 REAL,
INTENT(OUT):: zcoefh(:, :, :)
375 REAL,
INTENT(OUT):: zcoefm(:, :, :)
379 REAL,
DIMENSION(klon),
INTENT(OUT) :: zxsens_x
380 REAL,
DIMENSION(klon),
INTENT(OUT) :: zxsens_w
381 REAL,
DIMENSION(klon),
INTENT(OUT) :: zxfluxlat_x
382 REAL,
DIMENSION(klon),
INTENT(OUT) :: zxfluxlat_w
387 REAL,
DIMENSION(klon),
INTENT(OUT) :: cdragh_x
388 REAL,
DIMENSION(klon),
INTENT(OUT) :: cdragh_w
389 REAL,
DIMENSION(klon),
INTENT(OUT) :: cdragm_x
390 REAL,
DIMENSION(klon),
INTENT(OUT) :: cdragm_w
391 REAL,
DIMENSION(klon),
INTENT(OUT) :: kh
392 REAL,
DIMENSION(klon),
INTENT(OUT) :: kh_x
393 REAL,
DIMENSION(klon),
INTENT(OUT) :: kh_w
395 REAL,
DIMENSION(klon),
INTENT(OUT) :: slab_wfbils
396 REAL,
DIMENSION(klon),
INTENT(OUT) :: qsol
397 REAL,
DIMENSION(klon),
INTENT(OUT) :: zq2m
398 REAL,
DIMENSION(klon),
INTENT(OUT) :: s_pblh
400 REAL,
DIMENSION(klon),
INTENT(OUT) :: s_pblh_x
401 REAL,
DIMENSION(klon),
INTENT(OUT) :: s_pblh_w
403 REAL,
DIMENSION(klon),
INTENT(OUT) :: s_plcl
405 REAL,
DIMENSION(klon),
INTENT(OUT) :: s_plcl_x
406 REAL,
DIMENSION(klon),
INTENT(OUT) :: s_plcl_w
408 REAL,
DIMENSION(klon),
INTENT(OUT) :: s_capCL
409 REAL,
DIMENSION(klon),
INTENT(OUT) :: s_oliqCL
410 REAL,
DIMENSION(klon),
INTENT(OUT) :: s_cteiCL
411 REAL,
DIMENSION(klon),
INTENT(OUT) :: s_pblT
412 REAL,
DIMENSION(klon),
INTENT(OUT) :: s_therm
413 REAL,
DIMENSION(klon),
INTENT(OUT) :: s_trmb1
414 REAL,
DIMENSION(klon),
INTENT(OUT) :: s_trmb2
415 REAL,
DIMENSION(klon),
INTENT(OUT) :: s_trmb3
416 REAL,
DIMENSION(klon),
INTENT(OUT) :: zustar
417 REAL,
DIMENSION(klon),
INTENT(OUT) :: zu10m
418 REAL,
DIMENSION(klon),
INTENT(OUT) :: zv10m
419 REAL,
DIMENSION(klon),
INTENT(OUT) :: fder_print
420 REAL,
DIMENSION(klon),
INTENT(OUT) :: zxqsurf
421 REAL,
DIMENSION(klon),
INTENT(OUT) :: rh2m
422 REAL,
DIMENSION(klon, klev),
INTENT(OUT) :: zxfluxu
423 REAL,
DIMENSION(klon, klev),
INTENT(OUT) :: zxfluxv
424 REAL,
DIMENSION(klon, nbsrf+1),
INTENT(INOUT) :: z0m,z0h
425 REAL,
DIMENSION(klon, nbsrf),
INTENT(INOUT) :: agesno
426 REAL,
DIMENSION(klon, nbsrf),
INTENT(OUT) :: solsw
427 REAL,
DIMENSION(klon, nbsrf),
INTENT(OUT) :: sollw
428 REAL,
DIMENSION(klon, nbsrf),
INTENT(OUT) :: d_ts
429 REAL,
DIMENSION(klon, nbsrf),
INTENT(INOUT) :: evap
430 REAL,
DIMENSION(klon, nbsrf),
INTENT(OUT) :: fluxlat
431 REAL,
DIMENSION(klon, nbsrf),
INTENT(OUT) :: t2m
432 REAL,
DIMENSION(klon, nbsrf),
INTENT(OUT) :: wfbils
433 REAL,
DIMENSION(klon, nbsrf),
INTENT(OUT) :: wfbilo
434 REAL,
DIMENSION(klon, klev, nbsrf),
INTENT(OUT) :: flux_t
436 REAL,
DIMENSION(klon, klev, nbsrf),
INTENT(OUT) :: flux_u
437 REAL,
DIMENSION(klon, klev, nbsrf),
INTENT(OUT) :: flux_v
440 REAL,
DIMENSION(klon),
INTENT(OUT) :: dflux_t
441 REAL,
DIMENSION(klon),
INTENT(OUT) :: dflux_q
442 REAL,
DIMENSION(klon),
INTENT(OUT) :: zxsnow
443 REAL,
DIMENSION(klon, klev),
INTENT(OUT) :: zxfluxt
444 REAL,
DIMENSION(klon, klev),
INTENT(OUT) :: zxfluxq
445 REAL,
DIMENSION(klon, nbsrf),
INTENT(OUT) :: q2m
446 REAL,
DIMENSION(klon, klev, nbsrf),
INTENT(OUT) :: flux_q
450 REAL,
DIMENSION(klon),
INTENT(OUT) :: qsnow
451 REAL,
DIMENSION(klon),
INTENT(OUT) :: snowhgt
452 REAL,
DIMENSION(klon),
INTENT(OUT) :: to_ice
453 REAL,
DIMENSION(klon),
INTENT(OUT) :: sissnow
454 REAL,
DIMENSION(klon),
INTENT(OUT) :: runoff
459 INTEGER,
SAVE :: nhoridbg, nidbg
461 LOGICAL,
SAVE :: debugindex=.
false.
463 LOGICAL,
SAVE :: first_call=.
true.
465 CHARACTER(len=8),
DIMENSION(nbsrf),
SAVE :: cl_surf
470 INTEGER :: iflag_split
471 INTEGER :: i, k, nsrf
474 INTEGER ,
DIMENSION(klon) :: ni
476 REAL :: zx_alf1, zx_alf2
479 REAL,
DIMENSION(klon) :: r_co2_ppm
480 REAL,
DIMENSION(klon) :: yts, yz0m, yz0h, ypct
482 REAL,
DIMENSION(klon) :: yalb,yalb_vis
484 REAL,
DIMENSION(klon) :: yu1, yv1
485 REAL,
DIMENSION(klon) :: ysnow, yqsurf, yagesno, yqsol
486 REAL,
DIMENSION(klon) :: yrain_f, ysnow_f
487 REAL,
DIMENSION(klon) :: ysolsw, ysollw
488 REAL,
DIMENSION(klon) :: yfder
489 REAL,
DIMENSION(klon) :: yrugoro
490 REAL,
DIMENSION(klon) :: yfluxlat
491 REAL,
DIMENSION(klon) :: y_d_ts
492 REAL,
DIMENSION(klon) :: y_flux_t1, y_flux_q1
493 REAL,
DIMENSION(klon) :: y_dflux_t, y_dflux_q
494 REAL,
DIMENSION(klon) :: y_flux_u1, y_flux_v1
495 REAL,
DIMENSION(klon) :: yt2m, yq2m, yu10m
496 REAL,
DIMENSION(klon) :: yustar
497 REAL,
DIMENSION(klon) :: ywstar
498 REAL,
DIMENSION(klon) :: ywindsp
499 REAL,
DIMENSION(klon) :: yt10m, yq10m
500 REAL,
DIMENSION(klon) :: ypblh
501 REAL,
DIMENSION(klon) :: ylcl
502 REAL,
DIMENSION(klon) :: ycapCL
503 REAL,
DIMENSION(klon) :: yoliqCL
504 REAL,
DIMENSION(klon) :: ycteiCL
505 REAL,
DIMENSION(klon) :: ypblT
506 REAL,
DIMENSION(klon) :: ytherm
507 REAL,
DIMENSION(klon) :: ytrmb1
508 REAL,
DIMENSION(klon) :: ytrmb2
509 REAL,
DIMENSION(klon) :: ytrmb3
510 REAL,
DIMENSION(klon) :: uzon, vmer
511 REAL,
DIMENSION(klon) :: tair1, qair1, tairsol
512 REAL,
DIMENSION(klon) :: psfce, patm
513 REAL,
DIMENSION(klon) :: qairsol, zgeo1, speed, zri1, pref
514 REAL,
DIMENSION(klon) :: rugo1
515 REAL,
DIMENSION(klon) :: yfluxsens
516 REAL,
DIMENSION(klon) :: AcoefH, AcoefQ, BcoefH, BcoefQ
517 REAL,
DIMENSION(klon) :: AcoefU, AcoefV, BcoefU, BcoefV
518 REAL,
DIMENSION(klon) :: ypsref
519 REAL,
DIMENSION(klon) :: yevap, ytsurf_new, yalb3_new
521 REAL,
DIMENSION(klon,nsw) :: yalb_dir_new, yalb_dif_new
523 REAL,
DIMENSION(klon) :: ztsol
524 REAL,
DIMENSION(klon) :: alb_m
525 REAL,
DIMENSION(klon,klev) :: y_d_t, y_d_q, y_d_t_diss
526 REAL,
DIMENSION(klon,klev) :: y_d_u, y_d_v
527 REAL,
DIMENSION(klon,klev) :: y_flux_t, y_flux_q
528 REAL,
DIMENSION(klon,klev) :: y_flux_u, y_flux_v
529 REAL,
DIMENSION(klon,klev) :: ycoefh, ycoefm,ycoefq
530 REAL,
DIMENSION(klon) :: ycdragh, ycdragm
531 REAL,
DIMENSION(klon,klev) :: yu, yv
532 REAL,
DIMENSION(klon,klev) :: yt, yq
533 REAL,
DIMENSION(klon,klev) :: ypplay, ydelp
534 REAL,
DIMENSION(klon,klev) :: delp
535 REAL,
DIMENSION(klon,klev+1) :: ypaprs
536 REAL,
DIMENSION(klon,klev+1) :: ytke
537 REAL,
DIMENSION(klon,nsoilmx) :: ytsoil
538 CHARACTER(len=80) :: abort_message
539 CHARACTER(len=20) :: modname =
'pbl_surface'
540 LOGICAL,
PARAMETER :: zxli=.
false.
541 LOGICAL,
PARAMETER :: check=.
false.
545 REAL,
DIMENSION(klon) :: ywake_s, ywake_cstar, ywake_dens
547 REAL,
DIMENSION(klon,klev+1) :: ytke_x, ytke_w
548 REAL,
DIMENSION(klon,klev+1) :: ywake_dltke
549 REAL,
DIMENSION(klon,klev) :: yu_x, yv_x, yu_w, yv_w
550 REAL,
DIMENSION(klon,klev) :: yt_x, yq_x, yt_w, yq_w
551 REAL,
DIMENSION(klon,klev) :: ycoefh_x, ycoefm_x, ycoefh_w, ycoefm_w
552 REAL,
DIMENSION(klon,klev) :: ycoefq_x, ycoefq_w
553 REAL,
DIMENSION(klon) :: ycdragh_x, ycdragm_x, ycdragh_w, ycdragm_w
554 REAL,
DIMENSION(klon) :: AcoefH_x, AcoefQ_x, BcoefH_x, BcoefQ_x
555 REAL,
DIMENSION(klon) :: AcoefH_w, AcoefQ_w, BcoefH_w, BcoefQ_w
556 REAL,
DIMENSION(klon) :: AcoefU_x, AcoefV_x, BcoefU_x, BcoefV_x
557 REAL,
DIMENSION(klon) :: AcoefU_w, AcoefV_w, BcoefU_w, BcoefV_w
558 REAL,
DIMENSION(klon) :: y_flux_t1_x, y_flux_q1_x, y_flux_t1_w, y_flux_q1_w
559 REAL,
DIMENSION(klon) :: y_flux_u1_x, y_flux_v1_x, y_flux_u1_w, y_flux_v1_w
560 REAL,
DIMENSION(klon,klev) :: y_flux_t_x, y_flux_q_x, y_flux_t_w, y_flux_q_w
561 REAL,
DIMENSION(klon,klev) :: y_flux_u_x, y_flux_v_x, y_flux_u_w, y_flux_v_w
562 REAL,
DIMENSION(klon) :: yfluxlat_x, yfluxlat_w
563 REAL,
DIMENSION(klon,klev) :: y_d_t_x, y_d_q_x, y_d_t_w, y_d_q_w
564 REAL,
DIMENSION(klon,klev) :: y_d_t_diss_x, y_d_t_diss_w
565 REAL,
DIMENSION(klon,klev) :: d_t_diss_x, d_t_diss_w
566 REAL,
DIMENSION(klon,klev) :: y_d_u_x, y_d_v_x, y_d_u_w, y_d_v_w
567 REAL,
DIMENSION(klon, klev, nbsrf) :: flux_t_x, flux_q_x, flux_t_w, flux_q_w
568 REAL,
DIMENSION(klon, klev, nbsrf) :: flux_u_x, flux_v_x, flux_u_w, flux_v_w
569 REAL,
DIMENSION(klon, nbsrf) :: fluxlat_x, fluxlat_w
570 REAL,
DIMENSION(klon, klev) :: zxfluxt_x, zxfluxq_x, zxfluxt_w, zxfluxq_w
571 REAL,
DIMENSION(klon, klev) :: zxfluxu_x, zxfluxv_x, zxfluxu_w, zxfluxv_w
572 REAL :: zx_qs_surf, zcor_surf, zdelta_surf
573 REAL,
DIMENSION(klon) :: ytsurf_th, yqsatsurf
574 REAL,
DIMENSION(klon) :: ybeta
575 REAL,
DIMENSION(klon, klev) :: d_u_x
576 REAL,
DIMENSION(klon, klev) :: d_u_w
577 REAL,
DIMENSION(klon, klev) :: d_v_x
578 REAL,
DIMENSION(klon, klev) :: d_v_w
580 REAL,
DIMENSION(klon,klev) :: CcoefH, CcoefQ, DcoefH, DcoefQ
581 REAL,
DIMENSION(klon,klev) :: CcoefU, CcoefV, DcoefU, DcoefV
582 REAL,
DIMENSION(klon,klev) :: CcoefH_x, CcoefQ_x, DcoefH_x, DcoefQ_x
583 REAL,
DIMENSION(klon,klev) :: CcoefH_w, CcoefQ_w, DcoefH_w, DcoefQ_w
584 REAL,
DIMENSION(klon,klev) :: CcoefU_x, CcoefV_x, DcoefU_x, DcoefV_x
585 REAL,
DIMENSION(klon,klev) :: CcoefU_w, CcoefV_w, DcoefU_w, DcoefV_w
586 REAL,
DIMENSION(klon,klev) :: Kcoef_hq, Kcoef_m, gama_h, gama_q
587 REAL,
DIMENSION(klon,klev) :: Kcoef_hq_x, Kcoef_m_x, gama_h_x, gama_q_x
588 REAL,
DIMENSION(klon,klev) :: Kcoef_hq_w, Kcoef_m_w, gama_h_w, gama_q_w
589 REAL,
DIMENSION(klon) :: alf_1, alf_2, alf_1_x, alf_2_x, alf_1_w, alf_2_w
592 REAL,
DIMENSION(klon, nbsrf) :: windsp
594 REAL,
DIMENSION(klon, nbsrf) :: t2m_x
595 REAL,
DIMENSION(klon, nbsrf) :: q2m_x
596 REAL,
DIMENSION(klon) :: rh2m_x
597 REAL,
DIMENSION(klon) :: qsat2m_x
598 REAL,
DIMENSION(klon, nbsrf) :: u10m_x
599 REAL,
DIMENSION(klon, nbsrf) :: v10m_x
600 REAL,
DIMENSION(klon, nbsrf) :: ustar_x
601 REAL,
DIMENSION(klon, nbsrf) :: wstar_x
603 REAL,
DIMENSION(klon, nbsrf) :: pblh_x
604 REAL,
DIMENSION(klon, nbsrf) :: plcl_x
605 REAL,
DIMENSION(klon, nbsrf) :: capCL_x
606 REAL,
DIMENSION(klon, nbsrf) :: oliqCL_x
607 REAL,
DIMENSION(klon, nbsrf) :: cteiCL_x
608 REAL,
DIMENSION(klon, nbsrf) :: pblt_x
609 REAL,
DIMENSION(klon, nbsrf) :: therm_x
610 REAL,
DIMENSION(klon, nbsrf) :: trmb1_x
611 REAL,
DIMENSION(klon, nbsrf) :: trmb2_x
612 REAL,
DIMENSION(klon, nbsrf) :: trmb3_x
614 REAL,
DIMENSION(klon, nbsrf) :: t2m_w
615 REAL,
DIMENSION(klon, nbsrf) :: q2m_w
616 REAL,
DIMENSION(klon) :: rh2m_w
617 REAL,
DIMENSION(klon) :: qsat2m_w
618 REAL,
DIMENSION(klon, nbsrf) :: u10m_w
619 REAL,
DIMENSION(klon, nbsrf) :: v10m_w
620 REAL,
DIMENSION(klon, nbsrf) :: ustar_w
621 REAL,
DIMENSION(klon, nbsrf) :: wstar_w
623 REAL,
DIMENSION(klon, nbsrf) :: pblh_w
624 REAL,
DIMENSION(klon, nbsrf) :: plcl_w
625 REAL,
DIMENSION(klon, nbsrf) :: capCL_w
626 REAL,
DIMENSION(klon, nbsrf) :: oliqCL_w
627 REAL,
DIMENSION(klon, nbsrf) :: cteiCL_w
628 REAL,
DIMENSION(klon, nbsrf) :: pblt_w
629 REAL,
DIMENSION(klon, nbsrf) :: therm_w
630 REAL,
DIMENSION(klon, nbsrf) :: trmb1_w
631 REAL,
DIMENSION(klon, nbsrf) :: trmb2_w
632 REAL,
DIMENSION(klon, nbsrf) :: trmb3_w
634 REAL,
DIMENSION(klon) :: yt2m_x
635 REAL,
DIMENSION(klon) :: yq2m_x
636 REAL,
DIMENSION(klon) :: yt10m_x
637 REAL,
DIMENSION(klon) :: yq10m_x
638 REAL,
DIMENSION(klon) :: yu10m_x
639 REAL,
DIMENSION(klon) :: yv10m_x
640 REAL,
DIMENSION(klon) :: yustar_x
641 REAL,
DIMENSION(klon) :: ywstar_x
643 REAL,
DIMENSION(klon) :: ypblh_x
644 REAL,
DIMENSION(klon) :: ylcl_x
645 REAL,
DIMENSION(klon) :: ycapCL_x
646 REAL,
DIMENSION(klon) :: yoliqCL_x
647 REAL,
DIMENSION(klon) :: ycteiCL_x
648 REAL,
DIMENSION(klon) :: ypblt_x
649 REAL,
DIMENSION(klon) :: ytherm_x
650 REAL,
DIMENSION(klon) :: ytrmb1_x
651 REAL,
DIMENSION(klon) :: ytrmb2_x
652 REAL,
DIMENSION(klon) :: ytrmb3_x
654 REAL,
DIMENSION(klon) :: yt2m_w
655 REAL,
DIMENSION(klon) :: yq2m_w
656 REAL,
DIMENSION(klon) :: yt10m_w
657 REAL,
DIMENSION(klon) :: yq10m_w
658 REAL,
DIMENSION(klon) :: yu10m_w
659 REAL,
DIMENSION(klon) :: yv10m_w
660 REAL,
DIMENSION(klon) :: yustar_w
661 REAL,
DIMENSION(klon) :: ywstar_w
663 REAL,
DIMENSION(klon) :: ypblh_w
664 REAL,
DIMENSION(klon) :: ylcl_w
665 REAL,
DIMENSION(klon) :: ycapCL_w
666 REAL,
DIMENSION(klon) :: yoliqCL_w
667 REAL,
DIMENSION(klon) :: ycteiCL_w
668 REAL,
DIMENSION(klon) :: ypblt_w
669 REAL,
DIMENSION(klon) :: ytherm_w
670 REAL,
DIMENSION(klon) :: ytrmb1_w
671 REAL,
DIMENSION(klon) :: ytrmb2_w
672 REAL,
DIMENSION(klon) :: ytrmb3_w
674 REAL,
DIMENSION(klon) :: uzon_x, vmer_x, speed_x, zri1_x, pref_x
675 REAL,
DIMENSION(klon) :: zgeo1_x, tair1_x, qair1_x, tairsol_x
677 REAL,
DIMENSION(klon) :: uzon_w, vmer_w, speed_w, zri1_w, pref_w
678 REAL,
DIMENSION(klon) :: zgeo1_w, tair1_w, qair1_w, tairsol_w
706 REAL,
DIMENSION(klon) :: y_delta_flux_t1, y_delta_flux_q1, y_delta_flux_u1, y_delta_flux_v1
707 REAL,
DIMENSION(klon) :: y_delta_tsurf,delta_coef,tau_eq
708 REAL,
PARAMETER :: facteur=2./sqrt(3.14)
709 REAL,
PARAMETER :: effusivity=2000.
710 REAL,
DIMENSION(klon) :: ytsurf_th_x,ytsurf_th_w,yqsatsurf_x,yqsatsurf_w
711 REAL,
DIMENSION(klon) :: ydtsurf_th
712 REAL :: zdelta_surf_x,zdelta_surf_w,zx_qs_surf_x,zx_qs_surf_w
713 REAL :: zcor_surf_x,zcor_surf_w
714 REAL :: mod_wind_x, mod_wind_w
716 REAL,
DIMENSION(klon) :: Kech_h
717 REAL,
DIMENSION(klon) :: Kech_h_x, Kech_h_w
718 REAL,
DIMENSION(klon) :: Kech_m
719 REAL,
DIMENSION(klon) :: Kech_m_x, Kech_m_w
720 REAL,
DIMENSION(klon) :: yts_x,yts_w
721 REAL,
DIMENSION(klon) :: Kech_Hp, Kech_H_xp, Kech_H_wp
722 REAL,
DIMENSION(klon) :: Kech_Qp, Kech_Q_xp, Kech_Q_wp
723 REAL,
DIMENSION(klon) :: Kech_Up, Kech_U_xp, Kech_U_wp
724 REAL,
DIMENSION(klon) :: Kech_Vp, Kech_V_xp, Kech_V_wp
734 INTEGER,
DIMENSION(nbp_lon*nbp_lat) :: ndexbg
736 REAL,
DIMENSION(klon) :: tabindx
737 REAL,
DIMENSION(nbp_lon,nbp_lat) :: zx_lon, zx_lat
738 REAL,
DIMENSION(nbp_lon,nbp_lat) :: debugtab
741 REAL,
DIMENSION(klon,nbsrf) :: pblh
742 REAL,
DIMENSION(klon,nbsrf) :: plcl
743 REAL,
DIMENSION(klon,nbsrf) :: capCL
744 REAL,
DIMENSION(klon,nbsrf) :: oliqCL
745 REAL,
DIMENSION(klon,nbsrf) :: cteiCL
746 REAL,
DIMENSION(klon,nbsrf) :: pblT
747 REAL,
DIMENSION(klon,nbsrf) :: therm
748 REAL,
DIMENSION(klon,nbsrf) :: trmb1
749 REAL,
DIMENSION(klon,nbsrf) :: trmb2
750 REAL,
DIMENSION(klon,nbsrf) :: trmb3
751 REAL,
DIMENSION(klon,nbsrf) :: zx_rh2m, zx_qsat2m
752 REAL,
DIMENSION(klon,nbsrf) :: zx_t1
753 REAL,
DIMENSION(klon, nbsrf) :: alb
754 REAL,
DIMENSION(klon) :: ylwdown
755 REAL,
DIMENSION(klon) :: ygustiness
757 REAL :: zx_qs1, zcor1, zdelta1
760 REAL,
DIMENSION(klon, nbsrf) :: sollwd
761 REAL,
DIMENSION(klon) :: ytoice
762 REAL,
DIMENSION(klon) :: ysnowhgt, yqsnow, ysissnow, yrunoff
763 REAL,
DIMENSION(klon) :: yzsig
764 REAL,
DIMENSION(klon,klev) :: ypphi
765 REAL,
DIMENSION(klon) :: ycldt
766 REAL,
DIMENSION(klon) :: yrmu0
773 IF (
prt_level >=10) print *,
' -> pbl_surface, itap ',itap
775 iflag_split = mod(iflag_pbl_split,2)
784 print*,
'PBL SURFACE AVEC GUSTINESS'
791 IF (debugindex .AND. mpi_size==1)
THEN
797 zx_lon(i,1) = rlon(i+1)
803 itau_phy,zjulian,dtime,nhoridbg,nidbg)
810 CALL histdef(nidbg, cl_surf(nsrf),cl_surf(nsrf),
"-",
nbp_lon, &
811 nbp_lat,nhoridbg, 1, 1, 1, -99, 32,
"inst", dtime,dtime)
825 print*,
'WARNING : On impose qsol=',qsol0
836 cdragh(:)=0. ; cdragm(:)=0.
837 zu1(:)=0. ; zv1(:)=0.
839 alb_dir_m=0. ; alb_dif_m=0. ; alb3_lic(:)=0.
841 zxsens(:)=0. ; zxevap(:)=0. ; zxtsol(:)=0.
842 d_t_w(:,:)=0. ; d_q_w(:,:)=0. ; d_t_x(:,:)=0. ; d_q_x(:,:)=0.
844 zt2m(:)=0. ; zq2m(:)=0. ; qsat2m(:)=0. ; rh2m(:)=0.
845 d_t(:,:)=0. ; d_t_diss(:,:)=0. ; d_q(:,:)=0. ; d_u(:,:)=0. ; d_v(:,:)=0.
846 zcoefh(:,:,:)=0. ; zcoefm(:,:,:)=0.
847 zxsens_x(:)=0. ; zxsens_w(:)=0. ; zxfluxlat_x(:)=0. ; zxfluxlat_w(:)=0.
848 cdragh_x(:)=0. ; cdragh_w(:)=0. ; cdragm_x(:)=0. ; cdragm_w(:)=0.
849 kh(:)=0. ; kh_x(:)=0. ; kh_w(:)=0.
851 s_pblh(:)=0. ; s_pblh_x(:)=0. ; s_pblh_w(:)=0.
852 s_plcl(:)=0. ; s_plcl_x(:)=0. ; s_plcl_w(:)=0.
853 s_capcl(:)=0. ; s_oliqcl(:)=0. ; s_cteicl(:)=0. ; s_pblt(:)=0.
855 s_trmb1(:)=0. ; s_trmb2(:)=0. ; s_trmb3(:)=0.
857 zu10m(:)=0. ; zv10m(:)=0.
860 zxfluxu(:,:)=0. ; zxfluxv(:,:)=0.
861 solsw(:,:)=0. ; sollw(:,:)=0.
865 wfbils(:,:)=0. ; wfbilo(:,:)=0.
866 flux_t(:,:,:)=0. ; flux_q(:,:,:)=0. ; flux_u(:,:,:)=0. ; flux_v(:,:,:)=0.
867 dflux_t(:)=0. ; dflux_q(:)=0.
869 zxfluxt(:,:)=0. ; zxfluxq(:,:)=0.
870 qsnow(:)=0. ; snowhgt(:)=0. ; to_ice(:)=0. ; sissnow(:)=0.
874 zcoefh(:,1,:) = 999999.
876 zcoefm(:,1,:) = 999999.
892 rh2m(:) = 0. ; qsat2m(:) = 0.
895 rh2m_x(:) = 0. ; qsat2m_x(:) = 0. ; rh2m_w(:) = 0. ; qsat2m_w(:) = 0.
901 ypct = 0.0 ; yts = 0.0 ; ysnow = 0.0
904 yqsurf = 0.0 ; yalb = 0.0 ; yalb_vis = 0.0
906 yrain_f = 0.0 ; ysnow_f = 0.0 ; yfder = 0.0 ; ysolsw = 0.0
907 ysollw = 0.0 ; yz0m = 0.0 ; yz0h = 0.0 ; yu1 = 0.0
908 yv1 = 0.0 ; ypaprs = 0.0 ; ypplay = 0.0
909 ydelp = 0.0 ; yu = 0.0 ; yv = 0.0 ; yt = 0.0
910 yq = 0.0 ; y_dflux_t = 0.0 ; y_dflux_q = 0.0
911 yrugoro = 0.0 ; ywindsp = 0.0
917 ytherm = 0.0 ; ytke=0.
919 ysnowhgt = 0.0; yqsnow = 0.0 ; yrunoff = 0.0 ; ytoice =0.0
920 yalb3_new = 0.0 ; ysissnow = 0.0
921 ypphi = 0.0 ; ycldt = 0.0 ; yrmu0 = 0.0
925 ytke_x=0. ; ytke_w=0. ; ywake_dltke=0.
926 y_d_t_x=0. ; y_d_t_w=0. ; y_d_q_x=0. ; y_d_q_w=0.
930 yfluxlat_x=0. ; yfluxlat_w=0.
931 ywake_s=0. ; ywake_cstar=0. ;ywake_dens=0.
934 tau_eq=0. ; delta_coef=0.
945 d_t_diss_x(:,:) = 0. ; d_t_diss_w(:,:) = 0.
946 d_u_x(:,:)=0. ; d_u_w(:,:)=0.
947 d_v_x(:,:)=0. ; d_v_w(:,:)=0.
948 flux_t_x(:,:,:)=0. ; flux_t_w(:,:,:)=0.
949 flux_q_x(:,:,:)=0. ; flux_q_w(:,:,:)=0.
952 flux_u_x(:,:,:)=0. ; flux_u_w(:,:,:)=0.
953 flux_v_x(:,:,:)=0. ; flux_v_w(:,:,:)=0.
954 fluxlat_x(:,:)=0. ; fluxlat_w(:,:)=0.
964 windsp(:,:) = sqrt(u10m(:,:)**2 + v10m(:,:)**2 )
972 oliqcl(:,:) = 999999.
973 cteicl(:,:) = 999999.
982 ustar_x(:,:) = 999999.
983 wstar_x(:,:) = 999999.
984 u10m_x(:,:) = 999999.
985 v10m_x(:,:) = 999999.
987 pblh_x(:,:) = 999999.
988 plcl_x(:,:) = 999999.
989 capcl_x(:,:) = 999999.
990 oliqcl_x(:,:) = 999999.
991 cteicl_x(:,:) = 999999.
992 pblt_x(:,:) = 999999.
993 therm_x(:,:) = 999999.
994 trmb1_x(:,:) = 999999.
995 trmb2_x(:,:) = 999999.
996 trmb3_x(:,:) = 999999.
1000 ustar_w(:,:) = 999999.
1001 wstar_w(:,:) = 999999.
1002 u10m_w(:,:) = 999999.
1003 v10m_w(:,:) = 999999.
1005 pblh_w(:,:) = 999999.
1006 plcl_w(:,:) = 999999.
1007 capcl_w(:,:) = 999999.
1008 oliqcl_w(:,:) = 999999.
1009 cteicl_w(:,:) = 999999.
1010 pblt_w(:,:) = 999999.
1011 therm_w(:,:) = 999999.
1012 trmb1_w(:,:) = 999999.
1013 trmb2_w(:,:) = 999999.
1014 trmb3_w(:,:) = 999999.
1026 delp(i,k) = paprs(i,k)-paprs(i,k+1)
1037 z0m(i,nsrf) = max(z0m(i,nsrf),z0min)
1038 z0h(i,nsrf) = max(z0h(i,nsrf),z0min)
1049 alb_dir_m(:,:) = 0.0
1050 alb_dif_m(:,:) = 0.0
1054 alb_dir_m(i,k) = alb_dir_m(i,k) + alb_dir(i,k,nsrf) * pctsrf(i,nsrf)
1055 alb_dif_m(i,k) = alb_dif_m(i,k) + alb_dif(i,k,nsrf) * pctsrf(i,nsrf)
1070 alb(i,nsrf) = alb(i,nsrf) + alb_dir(i,k,nsrf)*sfrwl(k)
1078 alb_m(i) = alb_m(i) + alb_dir_m(i,k)*sfrwl(k)
1089 ztsol(i) = ztsol(i) + ts(i,nsrf)*pctsrf(i,nsrf)
1096 sollw(i,nsrf) = sollw_m(i) + 4.0*rsigma*ztsol(i)**3 * (ztsol(i)-ts(i,nsrf))
1105 solsw(i,nsrf) = solsw_m(i) * (1.-alb(i,nsrf)) / (1.-alb_m(i))
1116 loop_nbsrf:
DO nsrf = 1,
nbsrf
1117 IF (
prt_level >=10) print *,
' Loop nsrf ',nsrf
1123 IF (pctsrf(i,nsrf) > 0.)
THEN
1137 IF (debugindex .AND. mpi_size==1)
THEN
1144 CALL gath2cpl(tabindx,debugtab,knon,ni)
1145 CALL histwrite(nidbg,cl_surf(nsrf),itap,debugtab,
nbp_lon*
nbp_lat, ndexbg)
1155 ypct(j) = pctsrf(i,nsrf)
1157 ysnow(j) =
snow(i,nsrf)
1158 yqsurf(j) =
qsurf(i,nsrf)
1159 yalb(j) = alb(i,nsrf)
1161 yalb_vis(j) = alb_dir(i,1,nsrf)
1163 yalb_vis(j)=(alb_dir(i,1,nsrf)*sfrwl(1)+alb_dir(i,2,nsrf)*sfrwl(2) &
1164 +alb_dir(i,3,nsrf)*sfrwl(3))/(sfrwl(1)+sfrwl(2)+sfrwl(3))
1167 yrain_f(j) = rain_f(i)
1168 ysnow_f(j) = snow_f(i)
1169 yagesno(j) = agesno(i,nsrf)
1171 ylwdown(j) = lwdown_m(i)
1172 ygustiness(j) = gustiness(i)
1173 ysolsw(j) = solsw(i,nsrf)
1174 ysollw(j) = sollw(i,nsrf)
1175 yz0m(j) = z0m(i,nsrf)
1176 yz0h(j) = z0h(i,nsrf)
1177 yrugoro(j) = rugoro(i)
1183 ywindsp(j) = windsp(i,nsrf)
1191 y_delta_tsurf(j)=delta_tsurf(i,nsrf)
1198 ypaprs(j,k) = paprs(i,k)
1199 ypplay(j,k) = pplay(i,k)
1200 ydelp(j,k) = delp(i,k)
1209 ytke(j,k) = tke_x(i,k,nsrf)
1218 IF (iflag_split .eq.1)
THEN
1225 yt_x(j,k) = t(i,k)-wake_s(i)*wake_dlt(i,k)
1226 yq_x(j,k) = q(i,k)-wake_s(i)*wake_dlq(i,k)
1229 yt_w(j,k) = t(i,k)+(1.-wake_s(i))*wake_dlt(i,k)
1230 yq_w(j,k) = q(i,k)+(1.-wake_s(i))*wake_dlq(i,k)
1244 ytke_x(j,k) = tke_x(i,k,nsrf)
1245 ytke(j,k) = tke_x(i,k,nsrf)+wake_s(i)*wake_dltke(i,k,nsrf)
1246 ytke_w(j,k) = tke_x(i,k,nsrf)+wake_dltke(i,k,nsrf)
1247 ywake_dltke(j,k) = wake_dltke(i,k,nsrf)
1255 ywake_s(j)=wake_s(i)
1256 ywake_cstar(j)=wake_cstar(i)
1257 ywake_dens(j)=wake_dens(i)
1262 yts_x(j)=yts(j)-ywake_s(j)*y_delta_tsurf(j)
1263 yts_w(j)=yts(j)+(1.-ywake_s(j))*y_delta_tsurf(j)
1271 ytsoil(j,k) =
ftsoil(i,k,nsrf)
1289 IF (iflag_split .eq.0)
THEN
1301 zgeo1(i) = rd * yt(i,1) / (0.5*(ypaprs(i,1)+ypplay(i,1))) &
1302 * (ypaprs(i,1)-ypplay(i,1))
1303 speed(i) = sqrt(yu(i,1)**2+yv(i,1)**2)
1305 CALL cdrag(knon, nsrf, &
1306 speed, yt(:,1), yq(:,1), zgeo1, ypaprs(:,1),&
1307 yts, yqsurf, yz0m, yz0h, &
1308 ycdragm, ycdragh, zri1, pref )
1311 IF (ok_prescr_ust)
then
1313 print *,
'ycdragm avant=',ycdragm(i)
1314 vent= sqrt(yu(i,1)*yu(i,1)+yv(i,1)*yv(i,1))
1318 ycdragm(i) =
ust*
ust/(1.+vent)/vent
1322 IF (
prt_level >=10) print *,
'clcdrag -> ycdragh ', ycdragh
1332 zgeo1_x(i) = rd * yt_x(i,1) / (0.5*(ypaprs(i,1)+ypplay(i,1))) &
1333 * (ypaprs(i,1)-ypplay(i,1))
1334 speed_x(i) = sqrt(yu_x(i,1)**2+yv_x(i,1)**2)
1336 CALL cdrag(knon, nsrf, &
1337 speed_x, yt_x(:,1), yq_x(:,1), zgeo1_x, ypaprs(:,1),&
1338 yts_x, yqsurf, yz0m, yz0h, &
1339 ycdragm_x, ycdragh_x, zri1_x, pref_x )
1342 IF (ok_prescr_ust)
then
1345 vent= sqrt(yu_x(i,1)*yu_x(i,1)+yv_x(i,1)*yv_x(i,1))
1346 ycdragm_x(i) =
ust*
ust/(1.+vent)/vent
1350 IF (
prt_level >=10) print *,
'clcdrag -> ycdragh_x ', ycdragh_x
1359 zgeo1_w(i) = rd * yt_w(i,1) / (0.5*(ypaprs(i,1)+ypplay(i,1))) &
1360 * (ypaprs(i,1)-ypplay(i,1))
1361 speed_w(i) = sqrt(yu_w(i,1)**2+yv_w(i,1)**2)
1363 CALL cdrag(knon, nsrf, &
1364 speed_w, yt_w(:,1), yq_w(:,1), zgeo1_w, ypaprs(:,1),&
1365 yts_w, yqsurf, yz0m, yz0h, &
1366 ycdragm_w, ycdragh_w, zri1_w, pref_w )
1369 IF (ok_prescr_ust)
then
1372 vent= sqrt(yu_w(i,1)*yu_w(i,1)+yv_w(i,1)*yv_w(i,1))
1373 ycdragm_w(i) =
ust*
ust/(1.+vent)/vent
1377 IF (
prt_level >=10) print *,
'clcdrag -> ycdragh_w ', ycdragh_w
1389 IF (iflag_split .eq.0)
THEN
1393 print *,
' args coef_diff_turb: yu ', yu
1394 print *,
' args coef_diff_turb: yv ', yv
1395 print *,
' args coef_diff_turb: yq ', yq
1396 print *,
' args coef_diff_turb: yt ', yt
1397 print *,
' args coef_diff_turb: yts ', yts
1398 print *,
' args coef_diff_turb: yz0m ', yz0m
1399 print *,
' args coef_diff_turb: yqsurf ', yqsurf
1400 print *,
' args coef_diff_turb: ycdragm ', ycdragm
1401 print *,
' args coef_diff_turb: ycdragh ', ycdragh
1402 print *,
' args coef_diff_turb: ytke ', ytke
1405 ypaprs, ypplay, yu, yv, yq, yt, yts, yqsurf, ycdragm, &
1406 ycoefm, ycoefh, ytke)
1412 ycoefh(j,k) = zcoefh(i,k,nsrf)
1413 ycoefm(j,k) = zcoefm(i,k,nsrf)
1417 IF (
prt_level >=10) print *,
'coef_diff_turb -> ycoefh ',ycoefh
1421 print *,
' args coef_diff_turb: yu_x ', yu_x
1422 print *,
' args coef_diff_turb: yv_x ', yv_x
1423 print *,
' args coef_diff_turb: yq_x ', yq_x
1424 print *,
' args coef_diff_turb: yt_x ', yt_x
1425 print *,
' args coef_diff_turb: yts_x ', yts_x
1426 print *,
' args coef_diff_turb: yqsurf ', yqsurf
1427 print *,
' args coef_diff_turb: ycdragm_x ', ycdragm_x
1428 print *,
' args coef_diff_turb: ycdragh_x ', ycdragh_x
1429 print *,
' args coef_diff_turb: ytke_x ', ytke_x
1432 ypaprs, ypplay, yu_x, yv_x, yq_x, yt_x, yts_x, yqsurf, ycdragm_x, &
1433 ycoefm_x, ycoefh_x, ytke_x)
1439 ycoefh_x(j,k) = zcoefh(i,k,nsrf)
1440 ycoefm_x(j,k) = zcoefm(i,k,nsrf)
1444 IF (
prt_level >=10) print *,
'coef_diff_turb -> ycoefh_x ',ycoefh_x
1447 print *,
' args coef_diff_turb: yu_w ', yu_w
1448 print *,
' args coef_diff_turb: yv_w ', yv_w
1449 print *,
' args coef_diff_turb: yq_w ', yq_w
1450 print *,
' args coef_diff_turb: yt_w ', yt_w
1451 print *,
' args coef_diff_turb: yts_w ', yts_w
1452 print *,
' args coef_diff_turb: yqsurf ', yqsurf
1453 print *,
' args coef_diff_turb: ycdragm_w ', ycdragm_w
1454 print *,
' args coef_diff_turb: ycdragh_w ', ycdragh_w
1455 print *,
' args coef_diff_turb: ytke_w ', ytke_w
1458 ypaprs, ypplay, yu_w, yv_w, yq_w, yt_w, yts_w, yqsurf, ycdragm_w, &
1459 ycoefm_w, ycoefh_w, ytke_w)
1465 ycoefh_w(j,k) = zcoefh(i,k,nsrf)
1466 ycoefm_w(j,k) = zcoefm(i,k,nsrf)
1470 IF (
prt_level >=10) print *,
'coef_diff_turb -> ycoefh_w ',ycoefh_w
1477 ycoefh(j,k) = ycoefh_x(j,k) + ywake_s(j)*(ycoefh_w(j,k) - ycoefh_x(j,k))
1478 ycoefm(j,k) = ycoefm_x(j,k) + ywake_s(j)*(ycoefm_w(j,k) - ycoefm_x(j,k))
1497 IF (iflag_split .eq.0)
THEN
1501 ydelp, yt, yq, dtime, &
1503 ccoefh, ccoefq, dcoefh, dcoefq, &
1504 kcoef_hq, gama_q, gama_h, &
1506 acoefh, acoefq, bcoefh, bcoefq)
1509 ydelp, yt_x, yq_x, dtime, &
1511 ccoefh_x, ccoefq_x, dcoefh_x, dcoefq_x, &
1512 kcoef_hq_x, gama_q_x, gama_h_x, &
1514 acoefh_x, acoefq_x, bcoefh_x, bcoefq_x)
1517 ydelp, yt_w, yq_w, dtime, &
1519 ccoefh_w, ccoefq_w, dcoefh_w, dcoefq_w, &
1520 kcoef_hq_w, gama_q_w, gama_h_w, &
1522 acoefh_w, acoefq_w, bcoefh_w, bcoefq_w)
1529 IF (iflag_split .eq.0)
THEN
1531 CALL climb_wind_down(knon, dtime, ycoefm, ypplay, ypaprs, yt, ydelp, yu, yv, &
1533 ccoefu, ccoefv, dcoefu, dcoefv, &
1534 kcoef_m, alf_1, alf_2, &
1536 acoefu, acoefv, bcoefu, bcoefv)
1538 CALL climb_wind_down(knon, dtime, ycoefm_x, ypplay, ypaprs, yt_x, ydelp, yu_x, yv_x, &
1540 ccoefu_x, ccoefv_x, dcoefu_x, dcoefv_x, &
1541 kcoef_m_x, alf_1_x, alf_2_x, &
1543 acoefu_x, acoefv_x, bcoefu_x, bcoefv_x)
1545 CALL climb_wind_down(knon, dtime, ycoefm_w, ypplay, ypaprs, yt_w, ydelp, yu_w, yv_w, &
1547 ccoefu_w, ccoefv_w, dcoefu_w, dcoefv_w, &
1548 kcoef_m_w, alf_1_w, alf_2_w, &
1550 acoefu_w, acoefv_w, bcoefu_w, bcoefv_w)
1561 ypsref(:) = ypaprs(:,1)
1595 IF (iflag_split .eq.1)
THEN
1602 mod_wind_x = 1.0+sqrt(yu_x(j,1)**2+yv_x(j,1)**2)
1603 mod_wind_w = 1.0+sqrt(yu_w(j,1)**2+yv_w(j,1)**2)
1604 rho1 = ypplay(j,1)/(rd*yt(j,1))
1605 kech_h_x(j) = ycdragh_x(j) * mod_wind_x * rho1
1606 kech_h_w(j) = ycdragh_w(j) * mod_wind_w * rho1
1607 kech_m_x(j) = ycdragm_x(j) * mod_wind_x * rho1
1608 kech_m_w(j) = ycdragm_w(j) * mod_wind_w * rho1
1610 dd_kh = kech_h_w(j) - kech_h_x(j)
1611 dd_km = kech_m_w(j) - kech_m_x(j)
1613 print *,
' mod_wind_x, mod_wind_w ', mod_wind_x, mod_wind_w
1614 print *,
' rho1 ',rho1
1615 print *,
' ycdragh_x(j),ycdragm_x(j) ',ycdragh_x(j),ycdragm_x(j)
1616 print *,
' ycdragh_w(j),ycdragm_w(j) ',ycdragh_w(j),ycdragm_w(j)
1617 print *,
' dd_Kh: ',dd_kh
1620 kech_h(j) = kech_h_x(j) + ywake_s(j)*dd_kh
1621 kech_m(j) = kech_m_x(j) + ywake_s(j)*dd_km
1624 kech_h_xp(j) = kech_h_x(j)/(1.-bcoefh_x(j)*kech_h_x(j)*dtime)
1625 kech_h_wp(j) = kech_h_w(j)/(1.-bcoefh_w(j)*kech_h_w(j)*dtime)
1626 kech_q_xp(j) = kech_h_x(j)/(1.-bcoefq_x(j)*kech_h_x(j)*dtime)
1627 kech_q_wp(j) = kech_h_w(j)/(1.-bcoefq_w(j)*kech_h_w(j)*dtime)
1628 kech_u_xp(j) = kech_m_x(j)/(1.-bcoefu_x(j)*kech_m_x(j)*dtime)
1629 kech_u_wp(j) = kech_m_w(j)/(1.-bcoefu_w(j)*kech_m_w(j)*dtime)
1630 kech_v_xp(j) = kech_m_x(j)/(1.-bcoefv_x(j)*kech_m_x(j)*dtime)
1631 kech_v_wp(j) = kech_m_w(j)/(1.-bcoefv_w(j)*kech_m_w(j)*dtime)
1633 dd_khp = kech_h_wp(j) - kech_h_xp(j)
1634 dd_kqp = kech_q_wp(j) - kech_q_xp(j)
1635 dd_kup = kech_u_wp(j) - kech_u_xp(j)
1636 dd_kvp = kech_v_wp(j) - kech_v_xp(j)
1638 kech_hp(j) = kech_h_xp(j) + ywake_s(j)*dd_khp
1639 kech_qp(j) = kech_q_xp(j) + ywake_s(j)*dd_kqp
1640 kech_up(j) = kech_u_xp(j) + ywake_s(j)*dd_kup
1641 kech_vp(j) = kech_v_xp(j) + ywake_s(j)*dd_kvp
1644 dd_cm = ycdragm_w(j) - ycdragm_x(j)
1645 dd_ch = ycdragh_w(j) - ycdragh_x(j)
1646 dd_u = yu_w(j,1) - yu_x(j,1)
1647 dd_v = yv_w(j,1) - yv_x(j,1)
1648 dd_t = yt_w(j,1) - yt_x(j,1)
1649 dd_q = yq_w(j,1) - yq_x(j,1)
1650 dd_ah = acoefh_w(j) - acoefh_x(j)
1651 dd_aq = acoefq_w(j) - acoefq_x(j)
1652 dd_au = acoefu_w(j) - acoefu_x(j)
1653 dd_av = acoefv_w(j) - acoefv_x(j)
1654 dd_bh = bcoefh_w(j) - bcoefh_x(j)
1655 dd_bq = bcoefq_w(j) - bcoefq_x(j)
1656 dd_bu = bcoefu_w(j) - bcoefu_x(j)
1657 dd_bv = bcoefv_w(j) - bcoefv_x(j)
1660 print *,
'Variables pour la fusion : Kech_H_xp(j)' ,kech_h_xp(j)
1661 print *,
'Variables pour la fusion : Kech_H_wp(j)' ,kech_h_wp(j)
1662 print *,
'Variables pour la fusion : Kech_Hp(j)' ,kech_hp(j)
1663 print *,
'Variables pour la fusion : Kech_h(j)' ,kech_h(j)
1668 acoefh(j) = acoefh_x(j) + ywake_s(j)*(kech_h_wp(j)/kech_hp(j))*dd_ah
1669 acoefq(j) = acoefq_x(j) + ywake_s(j)*(kech_q_wp(j)/kech_qp(j))*dd_aq
1670 acoefu(j) = acoefu_x(j) + ywake_s(j)*(kech_u_wp(j)/kech_up(j))*dd_au
1671 acoefv(j) = acoefv_x(j) + ywake_s(j)*(kech_v_wp(j)/kech_vp(j))*dd_av
1673 bcoefh(j) = bcoefh_x(j) + ywake_s(j)*bcoefh_x(j)*(dd_kh/kech_h(j))*(1.+kech_h_wp(j)/kech_hp(j)) &
1674 + ywake_s(j)*(kech_h_wp(j)/kech_hp(j))*(kech_h_w(j)/kech_h(j))*dd_bh
1676 bcoefq(j) = bcoefq_x(j) + ywake_s(j)*bcoefq_x(j)*(dd_kh/kech_h(j))*(1.+kech_q_wp(j)/kech_qp(j)) &
1677 + ywake_s(j)*(kech_q_wp(j)/kech_qp(j))*(kech_h_w(j)/kech_h(j))*dd_bq
1679 bcoefu(j) = bcoefu_x(j) + ywake_s(j)*bcoefu_x(j)*(dd_km/kech_h(j))*(1.+kech_u_wp(j)/kech_up(j)) &
1680 + ywake_s(j)*(kech_u_wp(j)/kech_up(j))*(kech_m_w(j)/kech_m(j))*dd_bu
1682 bcoefv(j) = bcoefv_x(j) + ywake_s(j)*bcoefv_x(j)*(dd_km/kech_h(j))*(1.+kech_v_wp(j)/kech_vp(j)) &
1683 + ywake_s(j)*(kech_v_wp(j)/kech_vp(j))*(kech_m_w(j)/kech_m(j))*dd_bv
1688 ycdragm(j) = ycdragm_x(j) + ywake_s(j)*dd_cm
1689 ycdragh(j) = ycdragh_x(j) + ywake_s(j)*dd_ch
1692 yt(j,1) = yt_x(j,1) + ywake_s(j)*(kech_h_w(j)/kech_h(j))*dd_t
1693 yq(j,1) = yq_x(j,1) + ywake_s(j)*(kech_h_w(j)/kech_h(j))*dd_q
1694 yu(j,1) = yu_x(j,1) + ywake_s(j)*(kech_m_w(j)/kech_m(j))*dd_u
1695 yv(j,1) = yv_x(j,1) + ywake_s(j)*(kech_m_w(j)/kech_m(j))*dd_v
1712 zgeo1(i) = rd * yt(i,1) / (0.5*(ypaprs(i,1)+ypplay(i,1))) &
1713 * (ypaprs(i,1)-ypplay(i,1))
1718 yu(:,1), yv(:,1), yt(:,1), yq(:,1), zgeo1, &
1719 yts, yqsurf, yz0m, yz0h, ypaprs(:,1), ypplay(:,1), &
1720 yt2m, yq2m, yt10m, yq10m, yu10m, yustar)
1735 CALL surf_land(itap, dtime, date0, jour, knon, ni,&
1737 debut, lafin, ydelp(:,1), r_co2_ppm, ysolsw, ysollw, yalb, &
1738 yts, ypplay(:,1), ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),&
1739 acoefh, acoefq, bcoefh, bcoefq, &
1740 acoefu, acoefv, bcoefu, bcoefv, &
1741 ypsref, yu1, yv1, ygustiness, yrugoro, pctsrf, &
1742 ylwdown, yq2m, yt2m, &
1743 ysnow, yqsol, yagesno, ytsoil, &
1744 yz0m, yz0h, sfrwl, yalb_dir_new, yalb_dif_new, yevap, yfluxsens,yfluxlat,&
1745 yqsurf, ytsurf_new, y_dflux_t, y_dflux_q, &
1746 y_flux_u1, y_flux_v1 )
1749 IF (ok_prescr_ust)
THEN
1763 y_flux_u1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yu(j,1)*ypplay(j,1)/rd/yt(j,1)
1764 y_flux_v1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yv(j,1)*ypplay(j,1)/rd/yt(j,1)
1772 rlon, rlat, debut, lafin, &
1773 yrmu0, ylwdown, yalb, ypphi(:,1), &
1774 ysolsw, ysollw, yts, ypplay(:,1), &
1775 ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),&
1776 acoefh, acoefq, bcoefh, bcoefq, &
1777 acoefu, acoefv, bcoefu, bcoefv, &
1778 ypsref, yu1, yv1, ygustiness, yrugoro, pctsrf, &
1779 ysnow, yqsurf, yqsol, yagesno, &
1780 ytsoil, yz0m, yz0h, sfrwl, yalb_dir_new, yalb_dif_new, yevap,yfluxsens,yfluxlat, &
1781 ytsurf_new, y_dflux_t, y_dflux_q, &
1783 ysnowhgt, yqsnow, ytoice, ysissnow, &
1784 yalb3_new, yrunoff, &
1785 y_flux_u1, y_flux_v1)
1792 alb3_lic(i) = yalb3_new(j)
1793 snowhgt(i) = ysnowhgt(j)
1794 qsnow(i) = yqsnow(j)
1795 to_ice(i) = ytoice(j)
1796 sissnow(i) = ysissnow(j)
1797 runoff(i) = yrunoff(j)
1801 IF (ok_prescr_ust)
THEN
1803 y_flux_u1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yu(j,1)*ypplay(j,1)/rd/yt(j,1)
1804 y_flux_v1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yv(j,1)*ypplay(j,1)/rd/yt(j,1)
1809 CALL surf_ocean(rlon, rlat, ysolsw, ysollw, yalb_vis, &
1810 ywindsp, rmu0, yfder, yts, &
1811 itap, dtime, jour, knon, ni, &
1812 ypplay(:,1), zgeo1/
rg, ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),&
1813 acoefh, acoefq, bcoefh, bcoefq, &
1814 acoefu, acoefv, bcoefu, bcoefv, &
1815 ypsref, yu1, yv1, ygustiness, yrugoro, pctsrf, &
1816 ysnow, yqsurf, yagesno, &
1817 yz0m, yz0h, sfrwl,yalb_dir_new, yalb_dif_new, yevap, yfluxsens,yfluxlat,&
1818 ytsurf_new, y_dflux_t, y_dflux_q, slab_wfbils, &
1819 y_flux_u1, y_flux_v1)
1821 print *,
'arg de surf_ocean: ycdragh ',ycdragh
1822 print *,
'arg de surf_ocean: ycdragm ',ycdragm
1823 print *,
'arg de surf_ocean: yt ', yt
1824 print *,
'arg de surf_ocean: yq ', yq
1825 print *,
'arg de surf_ocean: yts ', yts
1826 print *,
'arg de surf_ocean: AcoefH ',acoefh
1827 print *,
'arg de surf_ocean: AcoefQ ',acoefq
1828 print *,
'arg de surf_ocean: BcoefH ',bcoefh
1829 print *,
'arg de surf_ocean: BcoefQ ',bcoefq
1830 print *,
'arg de surf_ocean: yevap ',yevap
1831 print *,
'arg de surf_ocean: yfluxsens ',yfluxsens
1832 print *,
'arg de surf_ocean: yfluxlat ',yfluxlat
1833 print *,
'arg de surf_ocean: ytsurf_new ',ytsurf_new
1836 IF (ok_prescr_ust)
THEN
1838 y_flux_u1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yu(j,1)*ypplay(j,1)/rd/yt(j,1)
1839 y_flux_v1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yv(j,1)*ypplay(j,1)/rd/yt(j,1)
1846 rlon, rlat, ysolsw, ysollw, yalb_vis, yfder, &
1848 itap, dtime, jour, knon, ni, &
1850 yts, ypplay(:,1), ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),&
1851 acoefh, acoefq, bcoefh, bcoefq, &
1852 acoefu, acoefv, bcoefu, bcoefv, &
1853 ypsref, yu1, yv1, ygustiness, pctsrf, &
1854 ysnow, yqsurf, yqsol, yagesno, ytsoil, &
1856 yz0m, yz0h, sfrwl, yalb_dir_new, yalb_dif_new, yevap, yfluxsens,yfluxlat,&
1858 ytsurf_new, y_dflux_t, y_dflux_q, &
1859 y_flux_u1, y_flux_v1)
1862 IF (ok_prescr_ust)
THEN
1864 y_flux_u1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yu(j,1)*ypplay(j,1)/rd/yt(j,1)
1865 y_flux_v1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yv(j,1)*ypplay(j,1)/rd/yt(j,1)
1870 WRITE(
lunout,*)
'Surface index = ', nsrf
1871 abort_message =
'Surface index not valid'
1883 yevap(:)=rlvtt*evap0
1887 y_d_ts(1:knon) = ytsurf_new(1:knon) - yts(1:knon)
1903 print *,
'pbl_surface: fsens flat RLVTT=',fsens,
flat,rlvtt
1905 y_flux_t1(:) = fsens
1906 y_flux_q1(:) =
flat/rlvtt
1909 IF (iflag_split .eq.0)
THEN
1911 kech_h(j) = ycdragh(j) * (1.0+sqrt(yu(j,1)**2+yv(j,1)**2)) * &
1912 ypplay(j,1)/(rd*yt(j,1))
1917 yt1_new=(1./rcpd)*(acoefh(j)+bcoefh(j)*yfluxsens(j)*dtime)
1918 ytsurf_new(j)=yt1_new-yfluxsens(j)/(kech_h(j)*rcpd)
1922 y_d_ts(j) = ytsurf_new(j) - yts(j)
1927 y_flux_t1(j) = yfluxsens(j)
1928 y_flux_q1(j) = -yevap(j)
1934 print*,
'y_flux_t1,yfluxlat,wakes' &
1935 & , y_flux_t1(j), yfluxlat(j), ywake_s(j)
1936 print*,
'beta,ytsurf_new', ybeta(j), ytsurf_new(j)
1937 print*,
'effusivity,facteur,cstar', effusivity, facteur,wake_cstar(j)
1942 IF (iflag_split .eq.1)
THEN
1945 y_delta_flux_t1(j) = ( kech_h_wp(j)*kech_h_xp(j)*(acoefh_w(j)-acoefh_x(j)) + &
1946 y_flux_t1(j)*(kech_h_wp(j)-kech_h_xp(j)) ) / kech_hp(j)
1947 y_delta_flux_q1(j) = ( kech_q_wp(j)*kech_q_xp(j)*(acoefq_w(j)-acoefq_x(j)) + &
1948 y_flux_q1(j)*(kech_q_wp(j)-kech_q_xp(j)) ) / kech_qp(j)
1949 y_delta_flux_u1(j) = ( kech_u_wp(j)*kech_u_xp(j)*(acoefu_w(j)-acoefu_x(j)) + &
1950 y_flux_u1(j)*(kech_u_wp(j)-kech_u_xp(j)) ) / kech_up(j)
1951 y_delta_flux_v1(j) = ( kech_v_wp(j)*kech_v_xp(j)*(acoefv_w(j)-acoefv_x(j)) + &
1952 y_flux_v1(j)*(kech_v_wp(j)-kech_v_xp(j)) ) / kech_vp(j)
1954 y_flux_t1_x(j)=y_flux_t1(j) - ywake_s(j)*y_delta_flux_t1(j)
1955 y_flux_t1_w(j)=y_flux_t1(j) + (1.-ywake_s(j))*y_delta_flux_t1(j)
1956 y_flux_q1_x(j)=y_flux_q1(j) - ywake_s(j)*y_delta_flux_q1(j)
1957 y_flux_q1_w(j)=y_flux_q1(j) + (1.-ywake_s(j))*y_delta_flux_q1(j)
1958 y_flux_u1_x(j)=y_flux_u1(j) - ywake_s(j)*y_delta_flux_u1(j)
1959 y_flux_u1_w(j)=y_flux_u1(j) + (1.-ywake_s(j))*y_delta_flux_u1(j)
1960 y_flux_v1_x(j)=y_flux_v1(j) - ywake_s(j)*y_delta_flux_v1(j)
1961 y_flux_v1_w(j)=y_flux_v1(j) + (1.-ywake_s(j))*y_delta_flux_v1(j)
1963 yfluxlat_x(j)=y_flux_q1_x(j)*rlvtt
1964 yfluxlat_w(j)=y_flux_q1_w(j)*rlvtt
2011 print*,
'Chx,Chw,Ch', ycdragh_x(j), ycdragh_w(j), ycdragh(j)
2012 print*,
'Khx,Khw,Kh', kech_h_x(j), kech_h_w(j), kech_h(j)
2014 print*,
'tsurf_x,t1x,tsurf_w,t1w,tsurf,t1,t1_ancien', &
2015 & ytsurf_th_x(j), yt_x(j,1), ytsurf_th_w(j), yt_w(j,1), ytsurf_th(j), yt(j,1),t(j,1)
2016 print*,
'qsatsurf,qsatsurf_x,qsatsurf_w', yqsatsurf(j), yqsatsurf_x(j), yqsatsurf_w(j)
2017 print*,
'delta_coef,delta_flux,delta_tsurf,tau', delta_coef(j), y_delta_flux_t1(j), y_delta_tsurf(j), tau_eq(j)
2021 print*,
'fluxT_x, fluxT_w, y_flux_t1, fluxQ_x, fluxQ_w, yfluxlat, wakes' &
2022 & , y_flux_t1_x(j), y_flux_t1_w(j), y_flux_t1(j), y_flux_q1_x(j)*rlvtt, y_flux_q1_w(j)*rlvtt, yfluxlat(j), ywake_s(j)
2023 print*,
'beta,ytsurf_new,yqsatsurf', ybeta(j), ytsurf_new(j), yqsatsurf(j)
2024 print*,
'effusivity,facteur,cstar', effusivity, facteur,wake_cstar(j)
2033 IF (iflag_split .eq.0)
THEN
2037 y_flux_q1, y_flux_t1, ypaprs, ypplay, &
2039 acoefh, acoefq, bcoefh, bcoefq, &
2040 ccoefh, ccoefq, dcoefh, dcoefq, &
2041 kcoef_hq, gama_q, gama_h, &
2043 y_flux_q(:,:), y_flux_t(:,:), y_d_q(:,:), y_d_t(:,:))
2046 y_flux_q1_x, y_flux_t1_x, ypaprs, ypplay, &
2048 acoefh_x, acoefq_x, bcoefh_x, bcoefq_x, &
2049 ccoefh_x, ccoefq_x, dcoefh_x, dcoefq_x, &
2050 kcoef_hq_x, gama_q_x, gama_h_x, &
2052 y_flux_q_x(:,:), y_flux_t_x(:,:), y_d_q_x(:,:), y_d_t_x(:,:))
2055 y_flux_q1_w, y_flux_t1_w, ypaprs, ypplay, &
2057 acoefh_w, acoefq_w, bcoefh_w, bcoefq_w, &
2058 ccoefh_w, ccoefq_w, dcoefh_w, dcoefq_w, &
2059 kcoef_hq_w, gama_q_w, gama_h_w, &
2061 y_flux_q_w(:,:), y_flux_t_w(:,:), y_d_q_w(:,:), y_d_t_w(:,:))
2067 IF (iflag_split .eq.0)
THEN
2070 CALL climb_wind_up(knon, dtime, yu, yv, y_flux_u1, y_flux_v1, &
2072 acoefu, acoefv, bcoefu, bcoefv, &
2073 ccoefu, ccoefv, dcoefu, dcoefv, &
2076 y_flux_u, y_flux_v, y_d_u, y_d_v)
2079 CALL yamada_c(knon,dtime,ypaprs,ypplay &
2080 & ,yu,yv,yt,y_d_u,y_d_v,y_d_t,ycdragm,ytke,ycoefm,ycoefh,ycoefq,y_d_t_diss,yustar &
2086 CALL climb_wind_up(knon, dtime, yu_x, yv_x, y_flux_u1_x, y_flux_v1_x, &
2088 acoefu_x, acoefv_x, bcoefu_x, bcoefv_x, &
2089 ccoefu_x, ccoefv_x, dcoefu_x, dcoefv_x, &
2092 y_flux_u_x, y_flux_v_x, y_d_u_x, y_d_v_x)
2094 y_d_t_diss_x(:,:)=0.
2096 CALL yamada_c(knon,dtime,ypaprs,ypplay &
2097 & ,yu_x,yv_x,yt_x,y_d_u_x,y_d_v_x,y_d_t_x,ycdragm_x,ytke_x,ycoefm_x,ycoefh_x &
2098 ,ycoefq_x,y_d_t_diss_x,yustar_x &
2103 CALL climb_wind_up(knon, dtime, yu_w, yv_w, y_flux_u1_w, y_flux_v1_w, &
2105 acoefu_w, acoefv_w, bcoefu_w, bcoefv_w, &
2106 ccoefu_w, ccoefv_w, dcoefu_w, dcoefv_w, &
2109 y_flux_u_w, y_flux_v_w, y_d_u_w, y_d_v_w)
2111 y_d_t_diss_w(:,:)=0.
2113 CALL yamada_c(knon,dtime,ypaprs,ypplay &
2114 & ,yu_w,yv_w,yt_w,y_d_u_w,y_d_v_w,y_d_t_w,ycdragm_w,ytke_w,ycoefm_w,ycoefh_w &
2115 ,ycoefq_w,y_d_t_diss_w,yustar_w &
2121 print *,
'After climbing up, lfuxlat_x, fluxlat_w ', &
2122 yfluxlat_x, yfluxlat_w
2129 y_dflux_t(j) = y_dflux_t(j) * ypct(j)
2130 y_dflux_q(j) = y_dflux_q(j) * ypct(j)
2143 IF (iflag_split .eq.0)
THEN
2148 y_d_t_diss(j,k) = y_d_t_diss(j,k) * ypct(j)
2149 y_d_t(j,k) = y_d_t(j,k) * ypct(j)
2150 y_d_q(j,k) = y_d_q(j,k) * ypct(j)
2151 y_d_u(j,k) = y_d_u(j,k) * ypct(j)
2152 y_d_v(j,k) = y_d_v(j,k) * ypct(j)
2154 flux_t(i,k,nsrf) = y_flux_t(j,k)
2155 flux_q(i,k,nsrf) = y_flux_q(j,k)
2156 flux_u(i,k,nsrf) = y_flux_u(j,k)
2157 flux_v(i,k,nsrf) = y_flux_v(j,k)
2170 y_d_t_diss_x(j,k) = y_d_t_diss_x(j,k) * ypct(j)
2171 y_d_t_x(j,k) = y_d_t_x(j,k) * ypct(j)
2172 y_d_q_x(j,k) = y_d_q_x(j,k) * ypct(j)
2173 y_d_u_x(j,k) = y_d_u_x(j,k) * ypct(j)
2174 y_d_v_x(j,k) = y_d_v_x(j,k) * ypct(j)
2176 flux_t_x(i,k,nsrf) = y_flux_t_x(j,k)
2177 flux_q_x(i,k,nsrf) = y_flux_q_x(j,k)
2178 flux_u_x(i,k,nsrf) = y_flux_u_x(j,k)
2179 flux_v_x(i,k,nsrf) = y_flux_v_x(j,k)
2187 y_d_t_diss_w(j,k) = y_d_t_diss_w(j,k) * ypct(j)
2188 y_d_t_w(j,k) = y_d_t_w(j,k) * ypct(j)
2189 y_d_q_w(j,k) = y_d_q_w(j,k) * ypct(j)
2190 y_d_u_w(j,k) = y_d_u_w(j,k) * ypct(j)
2191 y_d_v_w(j,k) = y_d_v_w(j,k) * ypct(j)
2193 flux_t_w(i,k,nsrf) = y_flux_t_w(j,k)
2194 flux_q_w(i,k,nsrf) = y_flux_q_w(j,k)
2195 flux_u_w(i,k,nsrf) = y_flux_u_w(j,k)
2196 flux_v_w(i,k,nsrf) = y_flux_v_w(j,k)
2204 flux_t(i,k,nsrf) = flux_t_x(i,k,nsrf)+ywake_s(j)*(flux_t_w(i,k,nsrf)-flux_t_x(i,k,nsrf))
2205 flux_q(i,k,nsrf) = flux_q_x(i,k,nsrf)+ywake_s(j)*(flux_q_w(i,k,nsrf)-flux_q_x(i,k,nsrf))
2206 flux_u(i,k,nsrf) = flux_u_x(i,k,nsrf)+ywake_s(j)*(flux_u_w(i,k,nsrf)-flux_u_x(i,k,nsrf))
2207 flux_v(i,k,nsrf) = flux_v_x(i,k,nsrf)+ywake_s(j)*(flux_v_w(i,k,nsrf)-flux_v_x(i,k,nsrf))
2211 yfluxlat(j)=yfluxlat_x(j)+ywake_s(j)*(yfluxlat_w(j)-yfluxlat_x(j))
2214 print *,
' nsrf, flux_t(:,1,nsrf), flux_t_x(:,1,nsrf), flux_t_w(:,1,nsrf) ', &
2215 nsrf, flux_t(:,1,nsrf), flux_t_x(:,1,nsrf), flux_t_w(:,1,nsrf)
2220 y_d_t_diss(j,k) = y_d_t_diss_x(j,k)+ywake_s(j)*(y_d_t_diss_w(j,k) -y_d_t_diss_x(j,k))
2221 y_d_t(j,k) = y_d_t_x(j,k)+ywake_s(j)*(y_d_t_w(j,k) -y_d_t_x(j,k))
2222 y_d_q(j,k) = y_d_q_x(j,k)+ywake_s(j)*(y_d_q_w(j,k) -y_d_q_x(j,k))
2223 y_d_u(j,k) = y_d_u_x(j,k)+ywake_s(j)*(y_d_u_w(j,k) -y_d_u_x(j,k))
2224 y_d_v(j,k) = y_d_v_x(j,k)+ywake_s(j)*(y_d_v_w(j,k) -y_d_v_x(j,k))
2238 evap(i,nsrf) = - flux_q(i,1,nsrf)
2239 d_ts(i,nsrf) = y_d_ts(j)
2242 alb_dir(i,k,nsrf) = yalb_dir_new(j,k)
2243 alb_dif(i,k,nsrf) = yalb_dif_new(j,k)
2246 snow(i,nsrf) = ysnow(j)
2247 qsurf(i,nsrf) = yqsurf(j)
2248 z0m(i,nsrf) = yz0m(j)
2249 z0h(i,nsrf) = yz0h(j)
2250 fluxlat(i,nsrf) = yfluxlat(j)
2251 agesno(i,nsrf) = yagesno(j)
2252 cdragh(i) = cdragh(i) + ycdragh(j)*ypct(j)
2253 cdragm(i) = cdragm(i) + ycdragm(j)*ypct(j)
2254 dflux_t(i) = dflux_t(i) + y_dflux_t(j)
2255 dflux_q(i) = dflux_q(i) + y_dflux_q(j)
2261 IF (iflag_split .eq.1)
THEN
2266 fluxlat_x(i,nsrf) = yfluxlat_x(j)
2267 fluxlat_w(i,nsrf) = yfluxlat_w(j)
2270 delta_tsurf(i,nsrf)=y_delta_tsurf(j)*ypct(j)
2271 cdragh_x(i) = cdragh_x(i) + ycdragh_x(j)*ypct(j)
2272 cdragh_w(i) = cdragh_w(i) + ycdragh_w(j)*ypct(j)
2273 cdragm_x(i) = cdragm_x(i) + ycdragm_x(j)*ypct(j)
2274 cdragm_w(i) = cdragm_w(i) + ycdragm_w(j)*ypct(j)
2275 kh(i) = kh(i) + kech_h(j)*ypct(j)
2276 kh_x(i) = kh_x(i) + kech_h_x(j)*ypct(j)
2277 kh_w(i) = kh_w(i) + kech_h_w(j)*ypct(j)
2303 IF (iflag_split .eq.0)
THEN
2310 tke_x(i,k,nsrf) = ytke(j,k)
2311 tke_x(i,k,
is_ave) = tke_x(i,k,
is_ave) + ytke(j,k)*ypct(j)
2320 wake_dltke(i,k,nsrf) = ytke_w(j,k) - ytke_x(j,k)
2324 tke_x(i,k,nsrf) = ytke_x(j,k)
2325 tke_x(i,k,
is_ave) = tke_x(i,k,
is_ave) + tke_x(i,k,nsrf)*ypct(j)
2326 wake_dltke(i,k,
is_ave) = wake_dltke(i,k,
is_ave) + wake_dltke(i,k,nsrf)*ypct(j)
2336 zcoefh(i,k,nsrf) = ycoefh(j,k)
2337 zcoefm(i,k,nsrf) = ycoefm(j,k)
2338 zcoefh(i,k,
is_ave) = zcoefh(i,k,
is_ave) + ycoefh(j,k)*ypct(j)
2339 zcoefm(i,k,
is_ave) = zcoefm(i,k,
is_ave) + ycoefm(j,k)*ypct(j)
2345 IF ( nsrf .EQ.
is_ter )
THEN
2358 ftsoil(i, k, nsrf) = ytsoil(j,k)
2363 IF (iflag_split .eq.1)
THEN
2369 d_t_diss_x(i,k) = d_t_diss_x(i,k) + y_d_t_diss_x(j,k)
2370 d_t_x(i,k) = d_t_x(i,k) + y_d_t_x(j,k)
2371 d_q_x(i,k) = d_q_x(i,k) + y_d_q_x(j,k)
2372 d_u_x(i,k) = d_u_x(i,k) + y_d_u_x(j,k)
2373 d_v_x(i,k) = d_v_x(i,k) + y_d_v_x(j,k)
2375 d_t_diss_w(i,k) = d_t_diss_w(i,k) + y_d_t_diss_w(j,k)
2376 d_t_w(i,k) = d_t_w(i,k) + y_d_t_w(j,k)
2377 d_q_w(i,k) = d_q_w(i,k) + y_d_q_w(j,k)
2378 d_u_w(i,k) = d_u_w(i,k) + y_d_u_w(j,k)
2379 d_v_w(i,k) = d_v_w(i,k) + y_d_v_w(j,k)
2392 d_t_diss(i,k) = d_t_diss(i,k) + y_d_t_diss(j,k)
2393 d_t(i,k) = d_t(i,k) + y_d_t(j,k)
2394 d_q(i,k) = d_q(i,k) + y_d_q(j,k)
2395 d_u(i,k) = d_u(i,k) + y_d_u(j,k)
2396 d_v(i,k) = d_v(i,k) + y_d_v(j,k)
2403 print *,
'pbl_surface tendencies for w: d_t_w, d_t_x, d_t ', &
2404 d_t_w(:,1), d_t_x(:,1), d_t(:,1)
2423 IF (iflag_split .eq.0)
THEN
2425 uzon(j) = yu(j,1) + y_d_u(j,1)
2426 vmer(j) = yv(j,1) + y_d_v(j,1)
2427 tair1(j) = yt(j,1) + y_d_t(j,1) + y_d_t_diss(j,1)
2428 qair1(j) = yq(j,1) + y_d_q(j,1)
2429 zgeo1(j) = rd * tair1(j) / (0.5*(ypaprs(j,1)+ypplay(j,1))) &
2430 * (ypaprs(j,1)-ypplay(j,1))
2431 tairsol(j) = yts(j) + y_d_ts(j)
2432 qairsol(j) = yqsurf(j)
2436 uzon_x(j) = yu_x(j,1) + y_d_u_x(j,1)
2437 vmer_x(j) = yv_x(j,1) + y_d_v_x(j,1)
2438 tair1_x(j) = yt_x(j,1) + y_d_t_x(j,1) + y_d_t_diss_x(j,1)
2439 qair1_x(j) = yq_x(j,1) + y_d_q_x(j,1)
2440 zgeo1_x(j) = rd * tair1_x(j) / (0.5*(ypaprs(j,1)+ypplay(j,1))) &
2441 * (ypaprs(j,1)-ypplay(j,1))
2442 tairsol(j) = yts(j) + y_d_ts(j)
2443 tairsol_x(j) = tairsol(j) - ywake_s(j)*y_delta_tsurf(j)
2444 qairsol(j) = yqsurf(j)
2447 uzon_w(j) = yu_w(j,1) + y_d_u_w(j,1)
2448 vmer_w(j) = yv_w(j,1) + y_d_v_w(j,1)
2449 tair1_w(j) = yt_w(j,1) + y_d_t_w(j,1) + y_d_t_diss_w(j,1)
2450 qair1_w(j) = yq_w(j,1) + y_d_q_w(j,1)
2451 zgeo1_w(j) = rd * tair1_w(j) / (0.5*(ypaprs(j,1)+ypplay(j,1))) &
2452 * (ypaprs(j,1)-ypplay(j,1))
2453 tairsol_w(j) = tairsol(j) + (1.- ywake_s(j))*y_delta_tsurf(j)
2454 qairsol(j) = yqsurf(j)
2463 rugo1(j) = z0m(i,nsrf)
2465 psfce(j)=ypaprs(j,1)
2475 IF (iflag_split .eq.0)
THEN
2477 uzon, vmer, tair1, qair1, zgeo1, &
2478 tairsol, qairsol, rugo1, rugo1, psfce, patm, &
2479 yt2m, yq2m, yt10m, yq10m, yu10m, yustar)
2482 uzon_x, vmer_x, tair1_x, qair1_x, zgeo1_x, &
2483 tairsol_x, qairsol, rugo1, rugo1, psfce, patm, &
2484 yt2m_x, yq2m_x, yt10m_x, yq10m_x, yu10m_x, yustar_x)
2486 uzon_w, vmer_w, tair1_w, qair1_w, zgeo1_w, &
2487 tairsol_w, qairsol, rugo1, rugo1, psfce, patm, &
2488 yt2m_w, yq2m_w, yt10m_w, yq10m_w, yu10m_w, yustar_w)
2493 IF (iflag_split .eq.0)
THEN
2499 ustar(i,nsrf)=yustar(j)
2500 u10m(i,nsrf)=(yu10m(j) * uzon(j))/sqrt(uzon(j)**2+vmer(j)**2)
2501 v10m(i,nsrf)=(yu10m(j) * vmer(j))/sqrt(uzon(j)**2+vmer(j)**2)
2506 t2m_x(i,nsrf)=yt2m_x(j)
2507 q2m_x(i,nsrf)=yq2m_x(j)
2509 ustar_x(i,nsrf)=yustar_x(j)
2510 u10m_x(i,nsrf)=(yu10m_x(j) * uzon_x(j))/sqrt(uzon_x(j)**2+vmer_x(j)**2)
2511 v10m_x(i,nsrf)=(yu10m_x(j) * vmer_x(j))/sqrt(uzon_x(j)**2+vmer_x(j)**2)
2515 t2m_w(i,nsrf)=yt2m_w(j)
2516 q2m_w(i,nsrf)=yq2m_w(j)
2518 ustar_w(i,nsrf)=yustar_w(j)
2519 u10m_w(i,nsrf)=(yu10m_w(j) * uzon_w(j))/sqrt(uzon_w(j)**2+vmer_w(j)**2)
2520 v10m_w(i,nsrf)=(yu10m_w(j) * vmer_w(j))/sqrt(uzon_w(j)**2+vmer_w(j)**2)
2522 ustar(i,nsrf) = ustar_x(i,nsrf) + wake_s(i)*(ustar_w(i,nsrf)-ustar_x(i,nsrf))
2523 u10m(i,nsrf) = u10m_x(i,nsrf) + wake_s(i)*(u10m_w(i,nsrf)-u10m_x(i,nsrf))
2524 v10m(i,nsrf) = v10m_x(i,nsrf) + wake_s(i)*(v10m_w(i,nsrf)-v10m_x(i,nsrf))
2535 IF (iflag_split .eq.0)
THEN
2538 zdelta1 = max(0.,sign(1., rtt-yt2m(j) ))
2539 zx_qs1 = r2es * foeew(yt2m(j),zdelta1)/paprs(i,1)
2540 zx_qs1 = min(0.5,zx_qs1)
2541 zcor1 = 1./(1.-retv*zx_qs1)
2542 zx_qs1 = zx_qs1*zcor1
2544 rh2m(i) = rh2m(i) + yq2m(j)/zx_qs1 * pctsrf(i,nsrf)
2545 qsat2m(i) = qsat2m(i) + zx_qs1 * pctsrf(i,nsrf)
2550 zdelta1 = max(0.,sign(1., rtt-yt2m_x(j) ))
2551 zx_qs1 = r2es * foeew(yt2m_x(j),zdelta1)/paprs(i,1)
2552 zx_qs1 = min(0.5,zx_qs1)
2553 zcor1 = 1./(1.-retv*zx_qs1)
2554 zx_qs1 = zx_qs1*zcor1
2556 rh2m_x(i) = rh2m_x(i) + yq2m_x(j)/zx_qs1 * pctsrf(i,nsrf)
2557 qsat2m_x(i) = qsat2m_x(i) + zx_qs1 * pctsrf(i,nsrf)
2561 zdelta1 = max(0.,sign(1., rtt-yt2m_w(j) ))
2562 zx_qs1 = r2es * foeew(yt2m_w(j),zdelta1)/paprs(i,1)
2563 zx_qs1 = min(0.5,zx_qs1)
2564 zcor1 = 1./(1.-retv*zx_qs1)
2565 zx_qs1 = zx_qs1*zcor1
2567 rh2m_w(i) = rh2m_w(i) + yq2m_w(j)/zx_qs1 * pctsrf(i,nsrf)
2568 qsat2m_w(i) = qsat2m_w(i) + zx_qs1 * pctsrf(i,nsrf)
2576 print *,
'T2m, q2m, RH2m ', &
2583 IF (iflag_split .eq.0)
THEN
2584 CALL hbtm(knon, ypaprs, ypplay, &
2585 yt2m,yt10m,yq2m,yq10m,yustar,ywstar, &
2586 y_flux_t,y_flux_q,yu,yv,yt,yq, &
2587 ypblh,ycapcl,yoliqcl,ycteicl,ypblt, &
2588 ytherm,ytrmb1,ytrmb2,ytrmb3,ylcl)
2590 print *,
' Arg. de HBTM: yt2m ',yt2m
2591 print *,
' Arg. de HBTM: yt10m ',yt10m
2592 print *,
' Arg. de HBTM: yq2m ',yq2m
2593 print *,
' Arg. de HBTM: yq10m ',yq10m
2594 print *,
' Arg. de HBTM: yustar ',yustar
2595 print *,
' Arg. de HBTM: y_flux_t ',y_flux_t
2596 print *,
' Arg. de HBTM: y_flux_q ',y_flux_q
2597 print *,
' Arg. de HBTM: yu ',yu
2598 print *,
' Arg. de HBTM: yv ',yv
2599 print *,
' Arg. de HBTM: yt ',yt
2600 print *,
' Arg. de HBTM: yq ',yq
2603 CALL hbtm(knon, ypaprs, ypplay, &
2604 yt2m_x,yt10m_x,yq2m_x,yq10m_x,yustar_x,ywstar_x, &
2605 y_flux_t_x,y_flux_q_x,yu_x,yv_x,yt_x,yq_x, &
2606 ypblh_x,ycapcl_x,yoliqcl_x,ycteicl_x,ypblt_x, &
2607 ytherm_x,ytrmb1_x,ytrmb2_x,ytrmb3_x,ylcl_x)
2609 print *,
' Arg. de HBTM: yt2m_x ',yt2m_x
2610 print *,
' Arg. de HBTM: yt10m_x ',yt10m_x
2611 print *,
' Arg. de HBTM: yq2m_x ',yq2m_x
2612 print *,
' Arg. de HBTM: yq10m_x ',yq10m_x
2613 print *,
' Arg. de HBTM: yustar_x ',yustar_x
2614 print *,
' Arg. de HBTM: y_flux_t_x ',y_flux_t_x
2615 print *,
' Arg. de HBTM: y_flux_q_x ',y_flux_q_x
2616 print *,
' Arg. de HBTM: yu_x ',yu_x
2617 print *,
' Arg. de HBTM: yv_x ',yv_x
2618 print *,
' Arg. de HBTM: yt_x ',yt_x
2619 print *,
' Arg. de HBTM: yq_x ',yq_x
2621 CALL hbtm(knon, ypaprs, ypplay, &
2622 yt2m_w,yt10m_w,yq2m_w,yq10m_w,yustar_w,ywstar_w, &
2623 y_flux_t_w,y_flux_q_w,yu_w,yv_w,yt_w,yq_w, &
2624 ypblh_w,ycapcl_w,yoliqcl_w,ycteicl_w,ypblt_w, &
2625 ytherm_w,ytrmb1_w,ytrmb2_w,ytrmb3_w,ylcl_w)
2631 IF (iflag_split .eq.0)
THEN
2635 pblh(i,nsrf) = ypblh(j)
2636 wstar(i,nsrf) = ywstar(j)
2637 plcl(i,nsrf) = ylcl(j)
2638 capcl(i,nsrf) = ycapcl(j)
2639 oliqcl(i,nsrf) = yoliqcl(j)
2640 cteicl(i,nsrf) = ycteicl(j)
2641 pblt(i,nsrf) = ypblt(j)
2642 therm(i,nsrf) = ytherm(j)
2643 trmb1(i,nsrf) = ytrmb1(j)
2644 trmb2(i,nsrf) = ytrmb2(j)
2645 trmb3(i,nsrf) = ytrmb3(j)
2648 print *,
'After HBTM: pblh ', pblh
2649 print *,
'After HBTM: plcl ', plcl
2650 print *,
'After HBTM: cteiCL ', cteicl
2655 pblh_x(i,nsrf) = ypblh_x(j)
2656 wstar_x(i,nsrf) = ywstar_x(j)
2657 plcl_x(i,nsrf) = ylcl_x(j)
2658 capcl_x(i,nsrf) = ycapcl_x(j)
2659 oliqcl_x(i,nsrf) = yoliqcl_x(j)
2660 cteicl_x(i,nsrf) = ycteicl_x(j)
2661 pblt_x(i,nsrf) = ypblt_x(j)
2662 therm_x(i,nsrf) = ytherm_x(j)
2663 trmb1_x(i,nsrf) = ytrmb1_x(j)
2664 trmb2_x(i,nsrf) = ytrmb2_x(j)
2665 trmb3_x(i,nsrf) = ytrmb3_x(j)
2668 print *,
'After HBTM: pblh_x ', pblh_x
2669 print *,
'After HBTM: plcl_x ', plcl_x
2670 print *,
'After HBTM: cteiCL_x ', cteicl_x
2674 pblh_w(i,nsrf) = ypblh_w(j)
2675 wstar_w(i,nsrf) = ywstar_w(j)
2676 plcl_w(i,nsrf) = ylcl_w(j)
2677 capcl_w(i,nsrf) = ycapcl_w(j)
2678 oliqcl_w(i,nsrf) = yoliqcl_w(j)
2679 cteicl_w(i,nsrf) = ycteicl_w(j)
2680 pblt_w(i,nsrf) = ypblt_w(j)
2681 therm_w(i,nsrf) = ytherm_w(j)
2682 trmb1_w(i,nsrf) = ytrmb1_w(j)
2683 trmb2_w(i,nsrf) = ytrmb2_w(j)
2684 trmb3_w(i,nsrf) = ytrmb3_w(j)
2687 print *,
'After HBTM: pblh_w ', pblh_w
2688 print *,
'After HBTM: plcl_w ', plcl_w
2689 print *,
'After HBTM: cteiCL_w ', cteicl_w
2699 print*,
' Warning !!! No T2m calculation. Output is set to zero.'
2713 z0m(:,
nbsrf+1) = 0.0
2714 z0h(:,
nbsrf+1) = 0.0
2717 z0m(i,
nbsrf+1) = z0m(i,
nbsrf+1) + z0m(i,nsrf)*pctsrf(i,nsrf)
2718 z0h(i,
nbsrf+1) = z0h(i,
nbsrf+1) + z0h(i,nsrf)*pctsrf(i,nsrf)
2723 zxfluxt(:,:) = 0.0 ; zxfluxq(:,:) = 0.0
2724 zxfluxu(:,:) = 0.0 ; zxfluxv(:,:) = 0.0
2725 zxfluxt_x(:,:) = 0.0 ; zxfluxq_x(:,:) = 0.0
2726 zxfluxu_x(:,:) = 0.0 ; zxfluxv_x(:,:) = 0.0
2727 zxfluxt_w(:,:) = 0.0 ; zxfluxq_w(:,:) = 0.0
2728 zxfluxu_w(:,:) = 0.0 ; zxfluxv_w(:,:) = 0.0
2731 IF (iflag_split .eq.1)
THEN
2738 zxfluxt_x(i,k) = zxfluxt_x(i,k) + flux_t_x(i,k,nsrf) * pctsrf(i,nsrf)
2739 zxfluxq_x(i,k) = zxfluxq_x(i,k) + flux_q_x(i,k,nsrf) * pctsrf(i,nsrf)
2740 zxfluxu_x(i,k) = zxfluxu_x(i,k) + flux_u_x(i,k,nsrf) * pctsrf(i,nsrf)
2741 zxfluxv_x(i,k) = zxfluxv_x(i,k) + flux_v_x(i,k,nsrf) * pctsrf(i,nsrf)
2743 zxfluxt_w(i,k) = zxfluxt_w(i,k) + flux_t_w(i,k,nsrf) * pctsrf(i,nsrf)
2744 zxfluxq_w(i,k) = zxfluxq_w(i,k) + flux_q_w(i,k,nsrf) * pctsrf(i,nsrf)
2745 zxfluxu_w(i,k) = zxfluxu_w(i,k) + flux_u_w(i,k,nsrf) * pctsrf(i,nsrf)
2746 zxfluxv_w(i,k) = zxfluxv_w(i,k) + flux_v_w(i,k,nsrf) * pctsrf(i,nsrf)
2752 zxsens_x(i) = - zxfluxt_x(i,1)
2753 zxsens_w(i) = - zxfluxt_w(i,1)
2762 zxfluxt(i,k) = zxfluxt(i,k) + flux_t(i,k,nsrf) * pctsrf(i,nsrf)
2763 zxfluxq(i,k) = zxfluxq(i,k) + flux_q(i,k,nsrf) * pctsrf(i,nsrf)
2764 zxfluxu(i,k) = zxfluxu(i,k) + flux_u(i,k,nsrf) * pctsrf(i,nsrf)
2765 zxfluxv(i,k) = zxfluxv(i,k) + flux_v(i,k,nsrf) * pctsrf(i,nsrf)
2771 zxsens(i) = - zxfluxt(i,1)
2772 zxevap(i) = - zxfluxq(i,1)
2773 fder_print(i) =
fder(i) + dflux_t(i) + dflux_q(i)
2780 zxtsol(:) = 0.0 ; zxfluxlat(:) = 0.0
2781 zt2m(:) = 0.0 ; zq2m(:) = 0.0
2782 zustar(:)=0.0 ; zu10m(:) = 0.0 ; zv10m(:) = 0.0
2783 s_pblh(:) = 0.0 ; s_plcl(:) = 0.0
2785 s_pblh_x(:) = 0.0 ; s_plcl_x(:) = 0.0
2786 s_pblh_w(:) = 0.0 ; s_plcl_w(:) = 0.0
2788 s_capcl(:) = 0.0 ; s_oliqcl(:) = 0.0
2789 s_cteicl(:) = 0.0; s_pblt(:) = 0.0
2790 s_therm(:) = 0.0 ; s_trmb1(:) = 0.0
2791 s_trmb2(:) = 0.0 ; s_trmb3(:) = 0.0
2797 zxfluxlat_x(:) = 0.0 ; zxfluxlat_w(:) = 0.0
2802 ts(i,nsrf) = ts(i,nsrf) + d_ts(i,nsrf)
2804 wfbils(i,nsrf) = ( solsw(i,nsrf) + sollw(i,nsrf) &
2805 + flux_t(i,1,nsrf) + fluxlat(i,nsrf) ) * pctsrf(i,nsrf)
2806 wfbilo(i,nsrf) = (evap(i,nsrf) - (rain_f(i) + snow_f(i))) * &
2809 zxtsol(i) = zxtsol(i) + ts(i,nsrf) * pctsrf(i,nsrf)
2810 zxfluxlat(i) = zxfluxlat(i) + fluxlat(i,nsrf) * pctsrf(i,nsrf)
2815 IF (iflag_split .eq.0)
THEN
2818 zt2m(i) = zt2m(i) + t2m(i,nsrf) * pctsrf(i,nsrf)
2819 zq2m(i) = zq2m(i) + q2m(i,nsrf) * pctsrf(i,nsrf)
2820 zustar(i) = zustar(i) + ustar(i,nsrf) * pctsrf(i,nsrf)
2821 wstar(i,
is_ave)=wstar(i,
is_ave)+wstar(i,nsrf)*pctsrf(i,nsrf)
2822 zu10m(i) = zu10m(i) + u10m(i,nsrf) * pctsrf(i,nsrf)
2823 zv10m(i) = zv10m(i) + v10m(i,nsrf) * pctsrf(i,nsrf)
2825 s_pblh(i) = s_pblh(i) + pblh(i,nsrf) * pctsrf(i,nsrf)
2826 s_plcl(i) = s_plcl(i) + plcl(i,nsrf) * pctsrf(i,nsrf)
2827 s_capcl(i) = s_capcl(i) + capcl(i,nsrf) * pctsrf(i,nsrf)
2828 s_oliqcl(i) = s_oliqcl(i) + oliqcl(i,nsrf)* pctsrf(i,nsrf)
2829 s_cteicl(i) = s_cteicl(i) + cteicl(i,nsrf)* pctsrf(i,nsrf)
2830 s_pblt(i) = s_pblt(i) + pblt(i,nsrf) * pctsrf(i,nsrf)
2831 s_therm(i) = s_therm(i) + therm(i,nsrf) * pctsrf(i,nsrf)
2832 s_trmb1(i) = s_trmb1(i) + trmb1(i,nsrf) * pctsrf(i,nsrf)
2833 s_trmb2(i) = s_trmb2(i) + trmb2(i,nsrf) * pctsrf(i,nsrf)
2834 s_trmb3(i) = s_trmb3(i) + trmb3(i,nsrf) * pctsrf(i,nsrf)
2841 zxfluxlat_x(i) = zxfluxlat_x(i) + fluxlat_x(i,nsrf) * pctsrf(i,nsrf)
2842 zxfluxlat_w(i) = zxfluxlat_w(i) + fluxlat_w(i,nsrf) * pctsrf(i,nsrf)
2849 zt2m(i) = zt2m(i) + (t2m_x(i,nsrf)+wake_s(i)*(t2m_w(i,nsrf)-t2m_x(i,nsrf))) * pctsrf(i,nsrf)
2850 zq2m(i) = zq2m(i) + q2m_x(i,nsrf) * pctsrf(i,nsrf)
2851 zustar(i) = zustar(i) + ustar_x(i,nsrf) * pctsrf(i,nsrf)
2852 wstar(i,
is_ave)=wstar(i,
is_ave)+wstar_x(i,nsrf)*pctsrf(i,nsrf)
2853 zu10m(i) = zu10m(i) + u10m_x(i,nsrf) * pctsrf(i,nsrf)
2854 zv10m(i) = zv10m(i) + v10m_x(i,nsrf) * pctsrf(i,nsrf)
2856 s_pblh(i) = s_pblh(i) + pblh_x(i,nsrf) * pctsrf(i,nsrf)
2857 s_pblh_x(i) = s_pblh_x(i) + pblh_x(i,nsrf) * pctsrf(i,nsrf)
2858 s_pblh_w(i) = s_pblh_w(i) + pblh_w(i,nsrf) * pctsrf(i,nsrf)
2860 s_plcl(i) = s_plcl(i) + plcl_x(i,nsrf) * pctsrf(i,nsrf)
2861 s_plcl_x(i) = s_plcl_x(i) + plcl_x(i,nsrf) * pctsrf(i,nsrf)
2862 s_plcl_w(i) = s_plcl_w(i) + plcl_w(i,nsrf) * pctsrf(i,nsrf)
2864 s_capcl(i) = s_capcl(i) + capcl_x(i,nsrf) * pctsrf(i,nsrf)
2865 s_oliqcl(i) = s_oliqcl(i) + oliqcl_x(i,nsrf)* pctsrf(i,nsrf)
2866 s_cteicl(i) = s_cteicl(i) + cteicl_x(i,nsrf)* pctsrf(i,nsrf)
2867 s_pblt(i) = s_pblt(i) + pblt_x(i,nsrf) * pctsrf(i,nsrf)
2868 s_therm(i) = s_therm(i) + therm_x(i,nsrf) * pctsrf(i,nsrf)
2869 s_trmb1(i) = s_trmb1(i) + trmb1_x(i,nsrf) * pctsrf(i,nsrf)
2870 s_trmb2(i) = s_trmb2(i) + trmb2_x(i,nsrf) * pctsrf(i,nsrf)
2871 s_trmb3(i) = s_trmb3(i) + trmb3_x(i,nsrf) * pctsrf(i,nsrf)
2875 qsat2m(i)= qsat2m_x(i)+ wake_s(i)*(qsat2m_x(i)-qsat2m_w(i))
2882 amn=min(ts(1,
is_ter),1000.)
2883 amx=max(ts(1,
is_ter),-1000.)
2885 amn=min(ts(i,
is_ter),amn)
2886 amx=max(ts(i,
is_ter),amx)
2888 print*,
' debut apres d_ts min max ftsol(ts)',itap,amn,amx
2922 fder(i) = - 4.0*rsigma*zxtsol(i)**3
2929 zxqsurf(i) = zxqsurf(i) +
qsurf(i,nsrf) * pctsrf(i,nsrf)
2930 zxsnow(i) = zxsnow(i) +
snow(i,nsrf) * pctsrf(i,nsrf)
2951 REAL,
DIMENSION(klon),
INTENT(OUT) :: fder_rst
2952 REAL,
DIMENSION(klon, nbsrf),
INTENT(OUT) :: snow_rst
2953 REAL,
DIMENSION(klon, nbsrf),
INTENT(OUT) :: qsurf_rst
2954 REAL,
DIMENSION(klon, nsoilmx, nbsrf),
INTENT(OUT) :: ftsoil_rst
2961 fder_rst(:) =
fder(:)
2962 snow_rst(:,:) =
snow(:,:)
2963 qsurf_rst(:,:) =
qsurf(:,:)
2964 ftsoil_rst(:,:,:) =
ftsoil(:,:,:)
2971 IF (
ALLOCATED(
fder))
DEALLOCATE(
fder)
2972 IF (
ALLOCATED(
snow))
DEALLOCATE(
snow)
2983 evap, z0m, z0h, agesno, &
2984 tsurf,alb_dir,alb_dif, ustar, u10m, v10m, tke)
2991 include
"clesphys.h"
2996 INTEGER,
INTENT(IN) :: itime
2997 REAL,
DIMENSION(klon,nbsrf),
INTENT(IN) :: pctsrf_new, pctsrf_old
3001 REAL,
DIMENSION(klon,nbsrf),
INTENT(INOUT) :: tsurf
3003 REAL,
DIMENSION(klon,nsw,nbsrf),
INTENT(INOUT) :: alb_dir, alb_dif
3006 REAL,
DIMENSION(klon,nbsrf),
INTENT(INOUT) :: ustar,u10m, v10m
3007 REAL,
DIMENSION(klon,nbsrf),
INTENT(INOUT) :: evap, agesno
3008 REAL,
DIMENSION(klon,nbsrf+1),
INTENT(INOUT) :: z0m,z0h
3009 REAL,
DIMENSION(klon,klev+1,nbsrf+1),
INTENT(INOUT) :: tke
3013 INTEGER :: nsrf, nsrf_comp1, nsrf_comp2, nsrf_comp3, i
3014 CHARACTER(len=80) :: abort_message
3015 CHARACTER(len=20) :: modname =
'pbl_surface_newfrac'
3016 INTEGER,
DIMENSION(nbsrf) :: nfois=0, mfois=0, pfois=0
3044 IF (pctsrf_new(i,nsrf) > 0. .AND. pctsrf_old(i,nsrf) == 0.)
THEN
3046 IF (pctsrf_old(i,nsrf_comp1) > 0.)
THEN
3049 evap(i,nsrf) = evap(i,nsrf_comp1)
3050 z0m(i,nsrf) = z0m(i,nsrf_comp1)
3051 z0h(i,nsrf) = z0h(i,nsrf_comp1)
3052 tsurf(i,nsrf) = tsurf(i,nsrf_comp1)
3055 alb_dir(i,k,nsrf)=alb_dir(i,k,nsrf_comp1)
3056 alb_dif(i,k,nsrf)=alb_dif(i,k,nsrf_comp1)
3059 ustar(i,nsrf) = ustar(i,nsrf_comp1)
3060 u10m(i,nsrf) = u10m(i,nsrf_comp1)
3061 v10m(i,nsrf) = v10m(i,nsrf_comp1)
3063 tke(i,:,nsrf) = tke(i,:,nsrf_comp1)
3065 mfois(nsrf) = mfois(nsrf) + 1
3068 qsurf(i,nsrf) =
qsurf(i,nsrf_comp2)*pctsrf_old(i,nsrf_comp2) +
qsurf(i,nsrf_comp3)*pctsrf_old(i,nsrf_comp3)
3069 evap(i,nsrf) = evap(i,nsrf_comp2) *pctsrf_old(i,nsrf_comp2) + evap(i,nsrf_comp3) *pctsrf_old(i,nsrf_comp3)
3070 z0m(i,nsrf) = z0m(i,nsrf_comp2)*pctsrf_old(i,nsrf_comp2) + z0m(i,nsrf_comp3)*pctsrf_old(i,nsrf_comp3)
3071 z0h(i,nsrf) = z0h(i,nsrf_comp2)*pctsrf_old(i,nsrf_comp2) + z0h(i,nsrf_comp3)*pctsrf_old(i,nsrf_comp3)
3072 tsurf(i,nsrf) = tsurf(i,nsrf_comp2)*pctsrf_old(i,nsrf_comp2) + tsurf(i,nsrf_comp3)*pctsrf_old(i,nsrf_comp3)
3075 alb_dir(i,k,nsrf)=alb_dir(i,k,nsrf_comp2)*pctsrf_old(i,nsrf_comp2)+&
3076 alb_dir(i,k,nsrf_comp3)*pctsrf_old(i,nsrf_comp3)
3077 alb_dif(i,k,nsrf)=alb_dif(i,k,nsrf_comp2)*pctsrf_old(i,nsrf_comp2)+&
3078 alb_dif(i,k,nsrf_comp3)*pctsrf_old(i,nsrf_comp3)
3081 ustar(i,nsrf) = ustar(i,nsrf_comp2) *pctsrf_old(i,nsrf_comp2) + ustar(i,nsrf_comp3) *pctsrf_old(i,nsrf_comp3)
3082 u10m(i,nsrf) = u10m(i,nsrf_comp2) *pctsrf_old(i,nsrf_comp2) + u10m(i,nsrf_comp3) *pctsrf_old(i,nsrf_comp3)
3083 v10m(i,nsrf) = v10m(i,nsrf_comp2) *pctsrf_old(i,nsrf_comp2) + v10m(i,nsrf_comp3) *pctsrf_old(i,nsrf_comp3)
3085 tke(i,:,nsrf) = tke(i,:,nsrf_comp2)*pctsrf_old(i,nsrf_comp2) + tke(i,:,nsrf_comp3)*pctsrf_old(i,nsrf_comp3)
3091 nfois(nsrf) = nfois(nsrf) + 1
3095 ftsoil(i,:,nsrf) = tsurf(i,nsrf)
3097 pfois(nsrf) = pfois(nsrf)+ 1
subroutine stdlevvar(klon, knon, nsrf, zxli, u1, v1, t1, q1, z1, ts1, qsurf, z0m, z0h, psol, pat1, t_2m, q_2m, t_10m, q_10m, u_10m, ustar)
real, dimension(:,:), allocatable, save, private qsurf
integer, parameter is_ter
!$Id zjulian!correction pour l heure initiale!jyg!jyg CALL ymds2ju(annee_ref, 1, day_ref, hour, zjulian)!jyg CALL histbeg_phy("histrac"
subroutine, public gath2cpl(champ_in, champ_out, knon, knindex)
subroutine, public climb_hq_up(knon, dtime, t_old, q_old,flx_q1, flx_h1, paprs, pplay,
!$Id klon initialisation mois suivants day_rain itap
real, dimension(:), allocatable, save, private fder
!$Header!integer nvarmx dtime
integer, parameter is_ave
subroutine surf_ocean(rlon, rlat, swnet, lwnet, alb1, windsp, rmu0, fder, tsurf_in, itime, dtime, jour, knon, knindex, p1lay, z1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, AcoefH, AcoefQ, BcoefH, BcoefQ, AcoefU, AcoefV, BcoefU, BcoefV, ps, u1, v1, gustiness, rugoro, pctsrf, snow, qsurf, agesno, z0m, z0h, SFRWL, alb_dir_new, alb_dif_new, evap, fluxsens, fluxlat, tsurf_new, dflux_s, dflux_l, lmt_bils, flux_u1, flux_v1)
subroutine coef_diff_turb(dtime, nsrf, knon, ni, ypaprs, ypplay, yu, yv, yq, yt, yts, yqsurf, ycdragm, ycoefm, ycoefh, yq2)
real, dimension(:,:,:), allocatable, save ftsoil
!$Id iflag_pbl_split common compbl iflag_pbl
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
subroutine, public climb_wind_up(knon, dtime, u_old, v_old, flx_u1, flx_v1,
integer, parameter is_lic
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL pplay
!$Id ok_orolf LOGICAL ok_limitvrai LOGICAL ok_all_xml INTEGER iflag_ener_conserv REAL co2_ppm
!FH On elimine toutes les clefs physiques dans la dynamique prt_level
subroutine surf_landice(itime, dtime, knon, knindex, rlon, rlat, debut, lafin, rmu0, lwdownm, albedo, pphi1, swnet, lwnet, tsurf, p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, AcoefH, AcoefQ, BcoefH, BcoefQ, AcoefU, AcoefV, BcoefU, BcoefV, ps, u1, v1, gustiness, rugoro, pctsrf, snow, qsurf, qsol, agesno, tsoil, z0m, z0h, SFRWL, alb_dir, alb_dif, evap, fluxsens, fluxlat, tsurf_new, dflux_s, dflux_l, slope, cloudf, snowhgt, qsnow, to_ice, sissnow, alb3, runoff, flux_u1, flux_v1)
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL &zphi geo500!IM on interpole a chaque pas de temps le paprs
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm u(l)
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
c c $Id c nbregdyn DO klon c rlat(i) c ENDIF!lon c ENDIF!lat ENDIF!pctsrf ENDDO!klon ENDDO!nbregdyn cIM 190504 ENDIF!ok_regdyn cIM somme de toutes les nhistoW BEG IF(debut) THEN DO nreg
character(len=6), save type_ocean
real, dimension(:,:), allocatable, save, public snow
subroutine cdrag(knon, nsrf, speed, t1, q1, zgeop1, psol, tsurf, qsurf, z0m, z0h, pcfm, pcfh, zri, pref)
subroutine yamada_c(ngrid, timestep, plev, play, pu, pv, pt, d_u, d_v, d_t, cd, q2, km, kn, kq, d_t_diss, ustar, iflag_pbl, okiophys)
subroutine gr_fi_ecrit(nfield, nlon, iim, jjmp1, fi, ecrit)
subroutine pbl_surface_init(fder_rst, snow_rst, qsurf_rst, ftsoil_rst)
subroutine pbl_surface_final(fder_rst, snow_rst, qsurf_rst, ftsoil_rst)
integer, parameter is_sic
subroutine abort_physic(modname, message, ierr)
subroutine, public climb_hq_down(knon, coefhq, paprs, pplay,delp, temp, q, dtime,
subroutine hbtm(knon, paprs, pplay, t2m, t10m, q2m, q10m, ustar, wstar, flux_t, flux_q, u, v, t, q, pblh, cape, eauliq, ctei, pblt, therm, trmb1, trmb2, trmb3, plcl)
logical, public carbon_cycle_cpl
real, dimension(:), allocatable, public co2_send
c c zjulian c cym CALL iim cym klev iim cym jjmp1 cym On stoke le fichier bilKP instantanne s jmax_ins print On stoke le fichier bilKP instantanne s s cym cym nid_bilKPins ENDIF c cIM BEG c cIM cf AM BEG region cym CALL histbeg("histbilKP_ins", iim, zx_lon(:, 1), cym.jjmp1, zx_lat(1,:), cym.imin_ins, imax_ins-imin_ins+1, cym.jmin_ins, jmax_ins-jmin_ins+1, cym.itau_phy, zjulian, dtime, cym.nhori, nid_bilKPins) CALL histbeg_phy("histbilKP_ins"
subroutine pbl_surface_newfrac(itime, pctsrf_new, pctsrf_old, evap, z0m, z0h, agesno, tsurf, alb_dir, alb_dif, ustar, u10m, v10m, tke)
subroutine, public climb_wind_down(knon, dtime, coef_in, pplay, paprs, temp, delp, u_old, v_old,
subroutine surf_seaice(rlon, rlat, swnet, lwnet, alb1, fder, itime, dtime, jour, knon, knindex, lafin, tsurf, p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, AcoefH, AcoefQ, BcoefH, BcoefQ, AcoefU, AcoefV, BcoefU, BcoefV, ps, u1, v1, gustiness, pctsrf, snow, qsurf, qsol, agesno, tsoil, z0m, z0h, SFRWL, alb_dir_new, alb_dif_new, evap, fluxsens, fluxlat, tsurf_new, dflux_s, dflux_l, flux_u1, flux_v1)
integer, parameter is_oce
c c $Id c nbregdyn DO klon c rlon(i)
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout
subroutine surf_land(itime, dtime, date0, jour, knon, knindex, rlon, rlat, debut, lafin, zlev, ccanopy, swnet, lwnet, albedo, tsurf, p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, AcoefH, AcoefQ, BcoefH, BcoefQ, AcoefU, AcoefV, BcoefU, BcoefV, pref, u1, v1, gustiness, rugoro, pctsrf, lwdown_m, q2m, t2m, snow, qsol, agesno, tsoil, z0m, z0h, SFRWL, alb_dir_new, alb_dif_new, evap, fluxsens, fluxlat, qsurf, tsurf_new, dflux_s, dflux_l, flux_u1, flux_v1)
subroutine pbl_surface(dtime,date0,itap,jour,debut,lafin,rlon,rlat,rugoro,rmu0,zsig,lwdown_m,pphi,cldt,rain_f,snow_f,solsw_m,sollw_m,gustiness,t,q,u,v,