Changeset 109 for LMDZ.3.3/branches/rel-LF/libf
- Timestamp:
- Jul 26, 2000, 2:58:36 PM (24 years ago)
- Location:
- LMDZ.3.3/branches/rel-LF/libf/phylmd
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ.3.3/branches/rel-LF/libf/phylmd/clmain.F
r105 r109 1 1 SUBROUTINE clmain(dtime,pctsrf,t,q,u,v, 2 . jour, rmu0, 2 3 . ok_veget,ts, 3 4 . paprs,pplay,radsol,snow,qsol,evap,albe, … … 85 86 REAL rugmer(klon) 86 87 REAL cdragh(klon), cdragm(klon) 88 integer jour ! jour de l'annee en cours 89 real rmu0(klon) ! cosinus de l'angle solaire zenithal 87 90 LOGICAL debut, lafin, ok_veget 88 91 cAA INTEGER itr … … 112 115 EXTERNAL clqh, clvent, coefkz, calbeta, cltrac 113 116 c====================================================================== 114 REAL yts(klon), yrugos(klon), ypct(klon) 117 REAL yts(klon), yrugos(klon), ypct(klon), yz0_new(klon) 115 118 REAL ycal(klon), ybeta(klon), ydif(klon), yalb(klon),yevap(klon) 116 119 REAL yu1(klon), yv1(klon) … … 329 332 c calculer la diffusion de "q" et de "h" 330 333 CALL clqh(knon, dtime, nsrf, ni, pctsrf, rlon, rlat, 331 e yu1, yv1, 332 e ycoefh,yt,yq,yts,ypaprs,ypplay,ydelp,yrads, 333 e yevap,yalb, ysnow, yqsol, yrain_f, ysnow_f, 334 e yfder, ytaux, ytauy, ysollw, ysolsw, 334 e jour, rmu0, 335 e yu1, yv1, ycoefh, 336 e yt,yq,yts,ypaprs,ypplay, 337 e ydelp,yrads, yevap,yalb, ysnow, yqsol, 338 e yrain_f, ysnow_f, yfder, ytaux, ytauy, 339 e ysollw, ysolsw, 335 340 s pctsrf_new, 336 s y_d_t, y_d_q, y_d_ts, 341 s y_d_t, y_d_q, y_d_ts, yz0_new, 337 342 s y_flux_t, y_flux_q, y_dflux_t, y_dflux_q) 338 343 c … … 391 396 snow(i,nsrf) = ysnow(j) 392 397 qsol(i,nsrf) = yqsol(j) 398 rugos(i,nsrf) = yz0_new(j) 393 399 rugmer(i) = yrugm(j) 394 400 cdragh(i) = cdragh(i) + ycoefh(j,1) … … 445 451 END 446 452 SUBROUTINE clqh(knon,dtime,nisurf,knindex,pctsrf, rlon, rlat, 453 e jour, rmu0 447 454 e u1lay,v1lay,coef, 448 455 e t,q,ts,paprs,pplay, … … 451 458 e lwdown, swdown, 452 459 s pctsrf_new, 453 s d_t, d_q, d_ts, flux_t, flux_q,dflux_s,dflux_l) 460 s d_t, d_q, d_ts, z0_new, 461 s flux_t, flux_q,dflux_s,dflux_l) 454 462 455 463 USE interface_surf … … 491 499 REAL qsol(klon) ! humidite de la surface 492 500 real precip_rain(klon), precip_snow(klon) 501 integer jour ! jour de l'annee en cours 502 real rmu0(klon) ! cosinus de l'angle solaire zenithal 493 503 integer knindex(klon) 494 504 real pctsrf(klon,nbsrf) … … 554 564 c Rajout pour l'interface 555 565 integer itime 556 integer jour557 566 integer nisurf 558 567 logical debut, lafin, ok_veget … … 699 708 ccanopy = 0. 700 709 701 CALL interfsurf(itime, dtime, jour, 702 .klon, iim, jjm, nisurf, knon, knindex, pctsrf, rlon, rlat,703 .debut, lafin, ok_veget,704 .zlev1, u1lay, v1lay, temp_air, spechum, hum_air, ccanopy,705 .tq_cdrag, petAcoef, peqAcoef, petBcoef, peqBcoef,706 .precip_rain, precip_snow, lwdown, swnet, swdown,707 .fder, taux, tauy,708 .albedo, snow, qsol,709 .ts, p1lay, psref, radsol,710 . ocean,zmasq711 .evap, fluxsens, fluxlat, dflux_l, dflux_s,712 .tsol_rad, tsurf_new, alb_new, emis_new, z0_new, pctsrf_new)710 CALL interfsurf(itime, dtime, jour, rmu0, 711 e klon, iim, jjm, nisurf, knon, knindex, pctsrf, rlon, rlat, 712 e debut, lafin, ok_veget, 713 e zlev1, u1lay, v1lay, temp_air, spechum, hum_air, ccanopy, 714 e tq_cdrag, petAcoef, peqAcoef, petBcoef, peqBcoef, 715 e precip_rain, precip_snow, lwdown, swnet, swdown, 716 e fder, taux, tauy, 717 e albedo, snow, qsol, 718 e ts, p1lay, psref, radsol, 719 e ocean,zmasq, 720 s evap, fluxsens, fluxlat, dflux_l, dflux_s, 721 s tsol_rad, tsurf_new, alb_new, emis_new, z0_new, pctsrf_new) 713 722 714 723 flux_t(:,1) = fluxsens -
LMDZ.3.3/branches/rel-LF/libf/phylmd/interface_surf.F90
r105 r109 35 35 END INTERFACE 36 36 37 38 ! run_off ruissellement total 37 #include "YOMCST.inc" 38 39 40 ! run_off ruissellement total 39 41 real, allocatable, dimension(:),save :: run_off 40 #include "YOMCST.inc" 42 41 43 42 44 … … 45 47 !############################################################################ 46 48 ! 47 SUBROUTINE interfsurf_hq(itime, dtime, jour, &49 SUBROUTINE interfsurf_hq(itime, dtime, jour, rmu0, & 48 50 & klon, iim, jjm, nisurf, knon, knindex, pctsrf, rlon, rlat, & 49 51 & debut, lafin, ok_veget, & … … 72 74 ! iim, jjm nbres de pts de grille 73 75 ! dtime pas de temps de la physique (en s) 74 ! jour jour dans l'annee en cours 76 ! jour jour dans l'annee en cours, 77 ! rmu0 cosinus de l'angle solaire zenithal 75 78 ! nexca pas de temps couplage 76 79 ! nisurf index de la surface a traiter (1 = sol continental) … … 130 133 real, intent(IN) :: dtime 131 134 integer, intent(IN) :: jour 135 real, intent(IN) :: rmu0(klon) 132 136 integer, intent(IN) :: nisurf 133 137 integer, intent(IN) :: knon … … 170 174 real, dimension(knon):: alb_ice 171 175 real, dimension(knon):: tsurf_temp 172 173 #include "YOMCST.inc" 176 real, dimension(klon):: agesno, alb_neig_grid, alb_eau 177 real, dimension(knon):: alb_neig 174 178 175 179 if (check) write(*,*) 'Entree ', modname … … 201 205 endif 202 206 first_call = .false. 203 !204 ! Calcul age de la neige205 !206 207 207 208 ! Aiguillage vers les differents schemas de surface … … 229 230 endif 230 231 ! 232 ! Calcul age de la neige 233 ! 234 235 CALL albsno(agesno,alb_neig_grid) 236 ! 237 ! 238 ! 231 239 if (.not. ok_veget) then 232 240 ! … … 245 253 ! calcul albedo: lecture albedo fichier CL puis ajout albedo neige 246 254 ! 255 call interfsur_lim(itime, dtime, jour, & 256 & klon, nisurf, knon, knindex, debut, & 257 & lmt_alb, lmt_rug) 258 alb_neig = alb_neig_grid(knindex) 259 zfra = MAX(0.0,MIN(1.0,snow/(snow+10.0))) 260 alb_new = alb_neig*zfra + lmt_alb(knindex)*(1.0-zfra) 261 z0_new = lmt_rug(knindex) 262 247 263 else 248 264 ! … … 286 302 ! else if (ocean == 'slab ') then 287 303 ! call interfoce(nisurf) 288 !else ! lecture conditions limites289 !call interfoce(itime, dtime, jour, &290 !& klon, nisurf, knon, knindex, &291 !& debut, &292 ! & tsurf_new, alb_new, z0_new, pctsrf_new)293 ! 304 else ! lecture conditions limites 305 call interfoce(itime, dtime, jour, & 306 & klon, nisurf, knon, knindex, & 307 & debut, & 308 & tsurf_new, pctsrf_new) 309 294 310 endif 295 311 … … 298 314 dif_grnd = 0. 299 315 300 endif301 316 call calcul_fluxs( knon, nisurf, dtime, & 302 317 & tsurf_temp, p1lay, cal, beta, tq_cdrag, ps, & … … 305 320 & petAcoef, peqAcoef, petBcoef, peqBcoef, & 306 321 & tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l) 307 308 309 322 ! 310 323 ! calcul albedo 311 324 ! 325 326 if ( minval(rmu0) == maxval(rmu0) && minval(rmu0) = -999.999 ) then 327 CALL alboc(FLOAT(jour),rlat,alb_eau) 328 else ! cycle diurne 329 CALL alboc_cd(rmu0,alb_eau) 330 endif 331 alb_new = alb_eau(knindex) 312 332 313 333 ! … … 340 360 ! & klon, nisurf, knon, knindex, & 341 361 ! & debut, & 342 ! & tsurf_new, alb_new, z0_new, pctsrf_new)endif 362 ! & tsurf_new, pctsrf_new) 363 ! endif 343 364 344 365 cal = calice … … 356 377 & tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l) 357 378 379 ! 380 ! calcul albedo 381 ! 382 zfra = MAX(0.0,MIN(1.0,snow/(snow+10.0))) 383 alb_neig = alb_neig_grid(knindex) 384 alb_new = alb_neig*zfra + 0.6 * (1.0-zfra) 358 385 359 386 else if (nisurf == is_lic) then … … 377 404 & petAcoef, peqAcoef, petBcoef, peqBcoef, & 378 405 & tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l) 406 407 ! 408 ! calcul albedo 409 ! 410 zfra = MAX(0.0,MIN(1.0,snow/(snow+10.0))) 411 alb_neig = alb_neig_grid(knindex) 412 alb_new = alb_neig*zfra + 0.6 * (1.0-zfra) 379 413 380 414 else … … 790 824 endif ! fin if (debut) 791 825 792 ! fichier restart et fichiers histoires793 794 ! calcul des fluxs a passer826 !! fichier restart et fichiers histoires 827 828 !! calcul des fluxs a passer 795 829 796 830 cpl_sols(:,nisurf) = cpl_sols(:,nisurf) + swdown / FLOAT(nexca) … … 981 1015 & klon, nisurf, knon, knindex, & 982 1016 & debut, & 983 & lmt_sst, lmt_alb, lmt_rug,pctsrf_new)1017 & lmt_sst, pctsrf_new) 984 1018 985 1019 ! Cette routine sert d'interface entre le modele atmospherique et un fichier … … 1000 1034 ! output: 1001 1035 ! lmt_sst SST lues dans le fichier de CL 1002 ! lmt_alb Albedo lu1003 ! lmt_rug longueur de rugosité lue1004 1036 ! pctsrf_new sous-maille fractionnelle 1005 1037 ! … … 1019 1051 ! Parametres de sortie 1020 1052 real, intent(out), dimension(knon) :: lmt_sst 1021 real, intent(out), dimension(knon) :: lmt_alb1022 real, intent(out), dimension(knon) :: lmt_rug1023 1053 real, intent(out), dimension(klon,nbsrf) :: pctsrf_new 1024 1054 … … 1053 1083 jour_lu = jour - 1 1054 1084 allocate(sst_lu(klon)) 1055 allocate(alb_lu(klon))1056 allocate(rug_lu(klon))1057 1085 allocate(nat_lu(klon)) 1058 1086 allocate(pct_tmp(klon,nbsrf)) … … 1201 1229 call abort_gcm(modname,abort_message,1) 1202 1230 endif 1231 1232 ! 1233 ! Fin de lecture 1234 ! 1235 ierr = NF_CLOSE(nid) 1236 deja_lu = .true. 1237 jour_lu = jour 1238 endif 1239 ! 1240 ! Recopie des variables dans les champs de sortie 1241 ! 1242 lmt_sst = sst_lu(knindex) 1243 pctsrf_new = pct_tmp 1244 1245 END SUBROUTINE interfoce_lim 1246 1247 ! 1248 !######################################################################### 1249 ! 1250 SUBROUTINE interfsur_lim(itime, dtime, jour, & 1251 & klon, nisurf, knon, knindex, & 1252 & debut, & 1253 & lmt_alb, lmt_rug) 1254 1255 ! Cette routine sert d'interface entre le modele atmospherique et un fichier 1256 ! de conditions aux limites 1257 ! 1258 ! L. Fairhead 02/2000 1259 ! 1260 ! input: 1261 ! itime numero du pas de temps courant 1262 ! dtime pas de temps de la physique (en s) 1263 ! jour jour a lire dans l'annee 1264 ! nisurf index de la surface a traiter (1 = sol continental) 1265 ! knon nombre de points dans le domaine a traiter 1266 ! knindex index des points de la surface a traiter 1267 ! klon taille de la grille 1268 ! debut logical: 1er appel a la physique (initialisation) 1269 ! 1270 ! output: 1271 ! lmt_sst SST lues dans le fichier de CL 1272 ! lmt_alb Albedo lu 1273 ! lmt_rug longueur de rugosité lue 1274 ! pctsrf_new sous-maille fractionnelle 1275 ! 1276 1277 #include "indicesol.h" 1278 1279 ! Parametres d'entree 1280 integer, intent(IN) :: itime 1281 real , intent(IN) :: dtime 1282 integer, intent(IN) :: jour 1283 integer, intent(IN) :: nisurf 1284 integer, intent(IN) :: knon 1285 integer, intent(IN) :: klon 1286 integer, dimension(knon), intent(in) :: knindex 1287 logical, intent(IN) :: debut 1288 1289 ! Parametres de sortie 1290 real, intent(out), dimension(knon) :: lmt_alb 1291 real, intent(out), dimension(knon) :: lmt_rug 1292 1293 ! Variables locales 1294 integer :: ii 1295 integer :: lmt_pas ! frequence de lecture des conditions limites 1296 ! (en pas de physique) 1297 logical,save :: deja_lu_sur! pour indiquer que le jour a lire a deja 1298 ! lu pour une surface precedente 1299 integer,save :: jour_lu_sur 1300 integer :: ierr 1301 character (len = 20) :: modname = 'interfoce_lim' 1302 character (len = 80) :: abort_message 1303 character (len = 20) :: fich ='limit' 1304 logical :: newlmt = .false. 1305 logical :: check = .true. 1306 ! Champs lus dans le fichier de CL 1307 real, allocatable , save, dimension(:) :: alb_lu, rug_lu 1308 ! 1309 ! quelques variables pour netcdf 1310 ! 1311 #include "netcdf.inc" 1312 integer :: nid, nvarid 1313 integer, dimension(2) :: start, epais 1314 ! 1315 ! Fin déclaration 1316 ! 1317 1318 if (debut) then 1319 lmt_pas = nint(86400./dtime * 1.0) ! pour une lecture une fois par jour 1320 jour_lu_sur = jour - 1 1321 allocate(alb_lu(klon)) 1322 allocate(rug_lu(klon)) 1323 endif 1324 1325 if ((jour - jour_lu_sur) /= 0) deja_lu = .false. 1326 1327 if (check) write(*,*)modname,':: jour_lu, deja_lu_sur', jour_lu, deja_lu_sur 1328 1329 ! Tester d'abord si c'est le moment de lire le fichier 1330 if (mod(itime-1, lmt_pas) == 0 .and. .not. deja_lu_sur) then 1331 ! 1332 ! Ouverture du fichier 1333 ! 1334 ierr = NF_OPEN (fich, NF_NOWRITE,nid) 1335 if (ierr.NE.NF_NOERR) then 1336 abort_message = 'Pb d''ouverture du fichier de conditions aux limites' 1337 call abort_gcm(modname,abort_message,1) 1338 endif 1339 ! 1340 ! La tranche de donnees a lire: 1341 ! 1342 start(1) = 1 1343 start(2) = jour + 1 1344 epais(1) = klon 1345 epais(2) = 1 1203 1346 ! 1204 1347 ! Lecture Albedo … … 1240 1383 ! 1241 1384 ierr = NF_CLOSE(nid) 1242 deja_lu = .true.1243 jour_lu = jour1385 deja_lu_sur = .true. 1386 jour_lu_sur = jour 1244 1387 endif 1245 1388 ! 1246 1389 ! Recopie des variables dans les champs de sortie 1247 1390 ! 1248 do ii = 1, knon 1249 lmt_sst(ii) = sst_lu(knindex(ii)) 1250 lmt_alb(ii) = alb_lu(knindex(ii)) 1251 lmt_rug(ii) = rug_lu(knindex(ii)) 1252 enddo 1253 pctsrf_new = pct_tmp 1254 1255 END SUBROUTINE interfoce_lim 1391 lmt_alb = alb_lu(knindex) 1392 lmt_rug = rug_lu(knindex) 1393 1394 END SUBROUTINE interfsur_lim 1256 1395 1257 1396 ! … … 1300 1439 ! 1301 1440 1302 #include "YOMCST.inc"1303 1441 #include "YOETHF.inc" 1304 1442 #include "FCTTRE.inc" … … 1668 1806 !######################################################################### 1669 1807 ! 1808 ! 1809 !######################################################################### 1810 ! 1811 SUBROUTINE albsno(agesno,alb_neig_grid) 1812 IMPLICIT none 1813 c 1814 #include "dimensions.h" 1815 #include "dimphy.h" 1816 INTEGER nvm 1817 PARAMETER (nvm=8) 1818 REAL veget(klon,nvm) 1819 REAL alb_neig(klon) 1820 REAL agesno(klon) 1821 c 1822 INTEGER i, nv 1823 c 1824 REAL init(nvm), decay(nvm), as 1825 SAVE init, decay 1826 DATA init /0.55, 0.14, 0.18, 0.29, 0.15, 0.15, 0.14, 0./ 1827 DATA decay/0.30, 0.67, 0.63, 0.45, 0.40, 0.14, 0.06, 1./ 1828 c 1829 veget = 0. 1830 veget(:,1) = 1. ! desert partout 1831 DO i = 1, klon 1832 alb_neig(i) = 0.0 1833 ENDDO 1834 DO nv = 1, nvm 1835 DO i = 1, klon 1836 as = init(nv)+decay(nv)*EXP(-agesno(i)/5.) 1837 alb_neig(i) = alb_neig(i) + veget(i,nv)*as 1838 ENDDO 1839 ENDDO 1840 c 1841 END SUBROUTINE albsno 1842 ! 1843 !######################################################################### 1844 ! 1670 1845 END MODULE interface_surf -
LMDZ.3.3/branches/rel-LF/libf/phylmd/oasis.F
r105 r109 501 501 END 502 502 503 SUBROUTINE halte 504 print *, 'Attention dans oasis.F, halte est non defini' 505 RETURN 506 END 507 508 SUBROUTINE locread 509 print *, 'Attention dans oasis.F, locread est non defini' 510 RETURN 511 END 512 513 SUBROUTINE locwrite 514 print *, 'Attention dans oasis.F, locwrite est non defini' 515 RETURN 516 END 517 518 SUBROUTINE pipe_model_define 519 print*,'Attention dans oasis.F, pipe_model_define est non defini' 520 RETURN 521 END 522 523 SUBROUTINE pipe_model_stepi 524 print*,'Attention dans oasis.F, pipe_model_stepi est non defini' 525 RETURN 526 END 527 528 SUBROUTINE pipe_model_recv 529 print *, 'Attention dans oasis.F, pipe_model_recv est non defini' 530 RETURN 531 END 532 533 SUBROUTINE pipe_model_send 534 print *, 'Attention dans oasis.F, pipe_model_send est non defini' 535 RETURN 536 END 537 538 SUBROUTINE clim_stepi 539 print *, 'Attention dans oasis.F, clim_stepi est non defini' 540 RETURN 541 END 542 543 SUBROUTINE clim_start 544 print *, 'Attention dans oasis.F, clim_start est non defini' 545 RETURN 546 END 547 548 SUBROUTINE clim_import 549 print *, 'Attention dans oasis.F, clim_import est non defini' 550 RETURN 551 END 552 553 SUBROUTINE clim_export 554 print *, 'Attention dans oasis.F, clim_export est non defini' 555 RETURN 556 END 557 558 SUBROUTINE clim_init 559 print *, 'Attention dans oasis.F, clim_init est non defini' 560 RETURN 561 END 562 563 SUBROUTINE clim_define 564 print *, 'Attention dans oasis.F, clim_define est non defini' 565 RETURN 566 END 567 568 SUBROUTINE clim_quit 569 print *, 'Attention dans oasis.F, clim_quit est non defini' 570 RETURN 571 END 572 573 SUBROUTINE svipc_write 574 print *, 'Attention dans oasis.F, svipc_write est non defini' 575 RETURN 576 END 577 578 SUBROUTINE svipc_close 579 print *, 'Attention dans oasis.F, svipc_close est non defini' 580 RETURN 581 END 582 583 SUBROUTINE svipc_read 584 print *, 'Attention dans oasis.F, svipc_read est non defini' 585 RETURN 586 END 587 588 SUBROUTINE quitcpl 589 print *, 'Attention dans oasis.F, quitcpl est non defini' 590 RETURN 591 END 592 593 SUBROUTINE sipc_write_model 594 print *, 'Attention dans oasis.F, sipc_write_model est non defini' 595 RETURN 596 END 597 598 SUBROUTINE sipc_attach 599 print *, 'Attention dans oasis.F, sipc_attach est non defini' 600 RETURN 601 END 602 603 SUBROUTINE sipc_init_model 604 print *, 'Attention dans oasis.F, sipc_init_model est non defini' 605 RETURN 606 END 607 608 SUBROUTINE sipc_read_model 609 print *, 'Attention dans oasis.F, sipc_read_model est non defini' 610 RETURN 611 END -
LMDZ.3.3/branches/rel-LF/libf/phylmd/param_cou.h
r98 r109 1 C $Id$ 1 2 C 2 3 C -- param_cou.h 3 4 C 4 5 INTEGER jpmaxfld 5 PARAMETER(jpmaxfld = 100) ! Number of maximum fields 6 ! exchange betwwen ocean and atmosphere 7 INTEGER jpflda2o 8 PARAMETER(jpflda2o = 8) ! Number of fields exchanged from 9 ! atmosphere to ocean 6 PARAMETER(jpmaxfld = 40) ! Maximum number of fields exchanged 7 ! between ocean and atmosphere 8 INTEGER jpflda2o1 9 PARAMETER(jpflda2o1 = 11) ! Number of fields exchanged from 10 ! atmosphere to ocean via flx.F 11 INTEGER jpflda2o2 12 PARAMETER(jpflda2o2 = 4) ! Number of fields exchanged from 13 ! atmosphere to ocean via tau.F 10 14 C 11 15 INTEGER jpfldo2a 12 PARAMETER(jpfldo2a = 2) ! Number of fields exchanged from16 PARAMETER(jpfldo2a = 4) ! Number of fields exchanged from 13 17 ! ocean to atmosphere 14 18 C -
LMDZ.3.3/branches/rel-LF/libf/phylmd/physiq.F
r101 r109 1509 1509 idayvrai = NINT(xjour) 1510 1510 PRINT *,' PHYS cond julien ',julien,idayvrai 1511 CALL condsurf(julien,idayvrai, pctsrf ,1512 . lmt_sst,lmt_alb,lmt_rug,lmt_bils )1511 c CALL condsurf(julien,idayvrai, pctsrf , 1512 c . lmt_sst,lmt_alb,lmt_rug,lmt_bils ) 1513 1513 CALL ozonecm( FLOAT(julien), rlat, paprs, wo) 1514 1514 ENDIF … … 1535 1535 c 1536 1536 DO i = 1, klon 1537 frugs(i,is_ter) = SQRT(lmt_rug(i)**2+rugoro(i)**2) 1537 if (.not. ok_veget) then 1538 frugs(i,is_ter) = SQRT(frugs(i,is_ter)**2+rugoro(i)**2) 1538 1539 frugs(i,is_lic) = rugoro(i) 1539 1540 frugs(i,is_oce) = rugmer(i) … … 1552 1553 ENDDO 1553 1554 c 1555 C calculs necessaires au calcul de l'albedo dans l'interface 1556 c 1557 CALL orbite(FLOAT(julien),zlongi,dist) 1558 IF (cycle_diurne) THEN 1559 zdtime=dtime*FLOAT(radpas) ! pas de temps du rayonnement (s) 1560 CALL zenang(zlongi,gmtime,zdtime,rlat,rlon,rmu0,fract) 1561 ELSE 1562 rmu0 = -999.999 1563 ENDIF 1564 1554 1565 CALL clmain(dtime,pctsrf, 1555 e t_seri,q_seri,u_seri,v_seri,ok_veget, 1556 e ftsol,paprs,pplay,radsol, 1557 e fsnow,fqsol,fevap,falbe, 1566 e t_seri,q_seri,u_seri,v_seri, 1567 e julien, rmu0, 1568 e ok_veget, ftsol, 1569 e paprs,pplay,radsol, fsnow,fqsol,fevap,falbe, 1558 1570 e rain_fall, snow_fall, solsw, sollw, fder, 1559 1571 e rlon, rlat, frugs, … … 1858 1870 c 1859 1871 IF (MOD(itaprad,radpas).EQ.0) THEN 1860 CALL orbite(FLOAT(julien),zlongi,dist)1861 IF (cycle_diurne) THEN1862 zdtime=dtime*FLOAT(radpas) ! pas de temps du rayonnement (s)1863 CALL zenang(zlongi,gmtime,zdtime,rlat,rlon,rmu0,fract)1872 c CALL orbite(FLOAT(julien),zlongi,dist) 1873 c IF (cycle_diurne) THEN 1874 c zdtime=dtime*FLOAT(radpas) ! pas de temps du rayonnement (s) 1875 c CALL zenang(zlongi,gmtime,zdtime,rlat,rlon,rmu0,fract) 1864 1876 c CALL zenith(zlongi,gmtime,rlat,rlon,rmu0,fract) !va disparaitre 1865 CALL alboc_cd(rmu0,alb_eau)1866 ELSE1867 CALL angle(zlongi,rlat,fract,rmu0)1868 CALL alboc(FLOAT(julien),rlat,alb_eau)1869 ENDIF1870 CALL albsno(veget,agesno,alb_neig)1871 DO i = 1, klon 1872 falbe(i,is_oce) = alb_eau(i)1873 IF (pctsrf(i,is_oce).GT.epsfra .AND. ftsol(i,is_oce).LT.271.35)1874 . falbe(i,is_oce) = 0.6 ! pour slab_ocean1875 zfra = MAX(0.0,MIN(1.0,fsnow(i,is_lic)/(fsnow(i,is_lic)+10.0)))1876 falbe(i,is_lic) = alb_neig(i)*zfra + 0.6*(1.0-zfra)1877 zfra = MAX(0.0,MIN(1.0,fsnow(i,is_ter)/(fsnow(i,is_ter)+10.0)))1878 falbe(i,is_ter) = alb_neig(i)*zfra + lmt_alb(i)*(1.0-zfra)1879 zfra = MAX(0.0,MIN(1.0,fsnow(i,is_sic)/(fsnow(i,is_sic)+10.0)))1877 c CALL alboc_cd(rmu0,alb_eau) 1878 c ELSE 1879 c CALL angle(zlongi,rlat,fract,rmu0) 1880 c CALL alboc(FLOAT(julien),rlat,alb_eau) 1881 c ENDIF 1882 c CALL albsno(veget,agesno,alb_neig) 1883 DO i = 1, klon 1884 c falbe(i,is_oce) = alb_eau(i) 1885 c IF (pctsrf(i,is_oce).GT.epsfra .AND. ftsol(i,is_oce).LT.271.35) 1886 c . falbe(i,is_oce) = 0.6 ! pour slab_ocean 1887 c zfra = MAX(0.0,MIN(1.0,fsnow(i,is_lic)/(fsnow(i,is_lic)+10.0))) 1888 c falbe(i,is_lic) = alb_neig(i)*zfra + 0.6*(1.0-zfra) 1889 c zfra = MAX(0.0,MIN(1.0,fsnow(i,is_ter)/(fsnow(i,is_ter)+10.0))) 1890 c falbe(i,is_ter) = alb_neig(i)*zfra + lmt_alb(i)*(1.0-zfra) 1891 c zfra = MAX(0.0,MIN(1.0,fsnow(i,is_sic)/(fsnow(i,is_sic)+10.0))) 1880 1892 falbe(i,is_sic) = alb_neig(i)*zfra + 0.6*(1.0-zfra) 1881 1893 albsol(i) = falbe(i,is_oce) * pctsrf(i,is_oce)
Note: See TracChangeset
for help on using the changeset viewer.