Changeset 274
- Timestamp:
- Sep 18, 2001, 4:09:28 PM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ.3.3/branches/rel-LF/libf/phylmd/interface_surf.F90
r273 r274 312 312 cal(1:knon) = RCPD / soilcap(1:knon) 313 313 radsol(1:knon) = radsol(1:knon) + soilflux(1:knon) 314 !!$ WRITE(*,*) 'radsol'315 !!$ WRITE(*,*) radsol(1 : knon)316 !!$ WRITE(*,*) 'soilflux'317 !!$ WRITE(*,*) soilflux(1 : knon)318 314 ELSE 319 ! if (check) write(*,*)'Sortie calbeta'320 ! if (check) write(*,*)'RCPD = ',RCPD,' capsol = '321 ! if (check) write(*,*)capsol322 315 cal = RCPD * capsol 323 316 !!$ cal = capsol … … 337 330 & tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l) 338 331 339 !!$ DO ii = 1, knon340 !!$ index = knindex(ii)341 !!$ alb_neig(ii) = alb_neig_grid(index)342 !!$ agesno(index) = (agesno(index) + (1.-agesno(index)/50.)*dtime/86400.)&343 !!$ & * EXP(-1.*MAX(0.0,precip_snow(ii))*dtime/0.3)344 !!$ agesno(index) = MAX(agesno(index),0.0)345 !!$ IF(snow(ii) .LT. 0.0001) agesno(index) = 0.346 !!$ ENDDO347 332 348 333 call albsno(klon,knon,dtime,agesno(:),alb_neig(:), precip_snow(:)) … … 399 384 & swdown, sollw, precip_rain, precip_snow, evap, tsurf, & 400 385 & fluxlat, fluxsens, fder, albedo, taux, tauy, zmasq, & 401 & tsurf_new, alb_new, alb_ice,pctsrf_new)386 & tsurf_new, alb_new, pctsrf_new) 402 387 403 388 ! else if (ocean == 'slab ') then … … 440 425 & swdown, sollw, precip_rain, precip_snow, evap, tsurf, & 441 426 & fluxlat, fluxsens, fder, albedo, taux, tauy, zmasq, & 442 & tsurf_new, alb_new, alb_ice,pctsrf_new)427 & tsurf_new, alb_new, pctsrf_new) 443 428 444 429 ! else if (ocean == 'slab ') then … … 460 445 enddo 461 446 462 z0_new = rugos447 z0_new = sqrt(rugos**2 + rugoro**2) 463 448 ! 464 449 else if (nisurf == is_sic) then … … 479 464 & swdown, sollw, precip_rain, precip_snow, evap, tsurf, & 480 465 & fluxlat, fluxsens, fder, albedo, taux, tauy, zmasq, & 481 & tsurf_new, alb_new, alb_ice,pctsrf_new)466 & tsurf_new, alb_new, pctsrf_new) 482 467 483 468 tsurf_temp = tsurf_new … … 488 473 ! else if (ocean == 'slab ') then 489 474 ! call interfoce(nisurf) 490 475 ELSE 491 476 ! ! lecture conditions limites 492 477 CALL interfoce(itime, dtime, jour, & 493 478 & klon, nisurf, knon, knindex, & 494 479 & debut, & 495 480 & tsurf_new, pctsrf_new) 496 481 497 482 CALL calbeta(dtime, nisurf, knon, snow, qsol, beta, capsol, dif_grnd) 498 483 499 IF (soil_model) THEN 500 CALL soil(dtime, nisurf, knon,snow, tsurf, tsoil,soilcap, soilflux) 501 cal(1:knon) = RCPD / soilcap(1:knon) 502 radsol(1:knon) = radsol(1:knon) + soilflux(1:knon) 503 dif_grnd = 0. 504 !!$ WRITE(*,*) 'radsol' 505 !!$ WRITE(*,*) radsol(1 : knon) 506 !!$ WRITE(*,*) 'soilflux' 507 !!$ WRITE(*,*) soilflux(1 : knon) 508 ELSE 509 ! if (check) write(*,*)'Sortie calbeta' 510 ! if (check) write(*,*)'RCPD = ',RCPD,' capsol = ' 511 ! if (check) write(*,*)capsol 512 dif_grnd = 1.0 / tau_gl 513 cal = RCPD * calice 514 WHERE (snow > 0.0) cal = RCPD * calsno 515 ENDIF 516 tsurf_temp = tsurf 517 beta = 1.0 484 IF (soil_model) THEN 485 CALL soil(dtime, nisurf, knon,snow, tsurf, tsoil,soilcap, soilflux) 486 cal(1:knon) = RCPD / soilcap(1:knon) 487 radsol(1:knon) = radsol(1:knon) + soilflux(1:knon) 488 dif_grnd = 0. 489 ELSE 490 dif_grnd = 1.0 / tau_gl 491 cal = RCPD * calice 492 WHERE (snow > 0.0) cal = RCPD * calsno 518 493 ENDIF 519 520 CALL calcul_fluxs( klon, knon, nisurf, dtime, & 494 tsurf_temp = tsurf 495 beta = 1.0 496 ENDIF 497 498 CALL calcul_fluxs( klon, knon, nisurf, dtime, & 521 499 & tsurf_temp, p1lay, cal, beta, tq_cdrag, ps, & 522 500 & precip_rain, precip_snow, snow, qsol, & … … 525 503 & tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l) 526 504 527 fder = fder + dflux_s + dflux_l 528 529 IF (ocean /= 'couple') THEN 530 CALL fonte_neige( klon, knon, nisurf, dtime, & 505 IF (ocean /= 'couple') THEN 506 CALL fonte_neige( klon, knon, nisurf, dtime, & 531 507 & tsurf_temp, p1lay, cal, beta, tq_cdrag, ps, & 532 508 & precip_rain, precip_snow, snow, qsol, & … … 534 510 & petAcoef, peqAcoef, petBcoef, peqBcoef, & 535 511 & tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l) 536 ENDIF 512 513 ! calcul albedo 514 515 CALL albsno(klon,knon,dtime,agesno(:),alb_neig(:), precip_snow(:)) 516 WHERE (snow(1 : knon) .LT. 0.0001) agesno(1 : knon) = 0. 517 zfra = MAX(0.0,MIN(1.0,snow/(snow+10.0))) 518 alb_new(1 : knon) = alb_neig(1 : knon) *zfra + 0.6 * (1.0-zfra) 519 !! alb_new(1 : knon) = 0.6 520 ENDIF 521 522 fder = fder + dflux_s + dflux_l 523 537 524 ! 538 525 ! 2eme appel a interfoce pour le cumul et le passage des flux a l'ocean … … 547 534 & swdown, sollw, precip_rain, precip_snow, evap, tsurf, & 548 535 & fluxlat, fluxsens, fder, albedo, taux, tauy, zmasq, & 549 & tsurf_new, alb_new, alb_ice,pctsrf_new)536 & tsurf_new, alb_new, pctsrf_new) 550 537 551 538 ! else if (ocean == 'slab ') then … … 554 541 endif 555 542 556 !557 ! calcul albedo558 !559 !560 CALL albsno(klon,knon,dtime,agesno(:),alb_neig(:), precip_snow(:))561 WHERE (snow(1 : knon) .LT. 0.0001) agesno(1 : knon) = 0.562 zfra = MAX(0.0,MIN(1.0,snow/(snow+10.0)))563 !!$ alb_new(1 : knon) = alb_neig(1 : knon) *zfra + 0.6 * (1.0-zfra)564 alb_new(1 : knon) = 0.6565 543 566 544 z0_new = 0.001 … … 579 557 cal(1:knon) = RCPD / soilcap(1:knon) 580 558 radsol(1:knon) = radsol(1:knon) + soilflux(1:knon) 581 !!$ WRITE(*,*) 'radsol'582 !!$ WRITE(*,'(16f17.4)') radsol(1 : knon)583 !!$ WRITE(*,*) 'soilflux'584 !!$ WRITE(*,'(16f17.4)')soilflux(1:knon)585 559 ELSE 586 560 cal = RCPD * calice … … 610 584 WHERE (snow(1 : knon) .LT. 0.0001) agesno(1 : knon) = 0. 611 585 zfra = MAX(0.0,MIN(1.0,snow/(snow+10.0))) 612 !!$alb_new(1 : knon) = alb_neig(1 : knon)*zfra + 0.6 * (1.0-zfra)613 alb_new(1 : knon) = 0.6586 alb_new(1 : knon) = alb_neig(1 : knon)*zfra + 0.6 * (1.0-zfra) 587 !! alb_new(1 : knon) = 0.6 614 588 ! 615 589 ! Rugosite … … 901 875 endif 902 876 endif 903 neighbours = 0.877 neighbours = -1. 904 878 if (( .not. allocated(contfrac))) then 905 879 allocate(contfrac(knon), stat = error) … … 1011 985 & swdown, lwdown, precip_rain, precip_snow, evap, tsurf, & 1012 986 & fluxlat, fluxsens, fder, albsol, taux, tauy, zmasq, & 1013 & tsurf_new, alb_new, alb_ice,pctsrf_new)987 & tsurf_new, alb_new, pctsrf_new) 1014 988 1015 989 ! Cette routine sert d'interface entre le modele atmospherique et un … … 1088 1062 1089 1063 ! Parametres de sortie 1090 real, dimension(klon), intent(OUT):: tsurf_new, alb_new , alb_ice1064 real, dimension(klon), intent(OUT):: tsurf_new, alb_new 1091 1065 real, dimension(klon,nbsrf), intent(OUT) :: pctsrf_new 1092 1066 … … 1249 1223 1250 1224 ! Initialisations 1251 alb_ice= 0.01252 1225 1253 1226 ! calcul des fluxs a passer
Note: See TracChangeset
for help on using the changeset viewer.