Changeset 177 for LMDZ.3.3/branches/rel-LF/libf/phylmd/physiq.F
- Timestamp:
- Mar 9, 2001, 4:36:10 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ.3.3/branches/rel-LF/libf/phylmd/physiq.F
r171 r177 3 3 . paprs,pplay,pphi,pphis,paire,presnivs,clesphy0, 4 4 . u,v,t,qx, 5 . omega, 5 . omega, cufi, cvfi, 6 6 . d_u, d_v, d_t, d_qx, d_ps) 7 7 USE ioipsl 8 USE histcom 9 8 10 IMPLICIT none 9 11 c====================================================================== … … 89 91 ccc PARAMETER (soil_model=.FALSE.) 90 92 logical ok_veget 91 parameter (ok_veget = . false.)93 parameter (ok_veget = .true.) 92 94 c====================================================================== 93 95 c Dans les versions precedentes, l'eau liquide nuageuse utilisee dans … … 217 219 REAL fevap(klon,nbsrf) 218 220 SAVE fevap ! evaporation 221 REAL fluxlat(klon,nbsrf) 222 SAVE fluxlat 219 223 c 220 224 REAL deltat(klon) … … 339 343 cAA 340 344 EXTERNAL hgardfou ! verifier les temperatures 341 EXTERNAL hydrol ! hydrologie du sol342 345 EXTERNAL nuage ! calculer les proprietes radiatives 343 346 EXTERNAL o3cm ! initialiser l'ozone … … 379 382 REAL cool0(klon,klev) ! refroidissement infrarouge ciel clair 380 383 REAL topsw(klon), toplw(klon), solsw(klon), sollw(klon) 384 real sollwdown(klon) ! downward LW flux at surface 381 385 REAL topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon) 382 386 REAL albpla(klon) 383 387 c Le rayonnement n'est pas calcule tous les pas, il faut donc 384 388 c sauvegarder les sorties du rayonnement 385 SAVE heat,cool,albpla,topsw,toplw,solsw,sollw 389 SAVE heat,cool,albpla,topsw,toplw,solsw,sollw,sollwdown 386 390 SAVE topsw0,toplw0,solsw0,sollw0, heat0, cool0 387 391 INTEGER itaprad … … 492 496 logical ok_sync 493 497 498 494 499 c 495 500 c Declaration des constantes et des fonctions thermodynamiques … … 538 543 CALL phyetat0 ("startphy.nc",dtime,co2_ppm,solaire, 539 544 . rlat,rlon,pctsrf, ftsol,ftsoil,deltat,fqsol,fsnow, 540 . falbe, fevap, rain_fall,snow_fall,solsw, sollw ,545 . falbe, fevap, rain_fall,snow_fall,solsw, sollwdown, 541 546 . fder,radsol,frugs,agesno,clesphy0, 542 547 . zmea,zstd,zsig,zgam,zthe,zpic,zval,rugoro,tabcntr0, … … 718 723 . "ave(X)", zsto,zout) 719 724 c 725 CALL histdef(nid_day, "solldown", "Down. IR rad. at surface", 726 . "W/m2", iim,jjmp1,nhori, 1,1,1, -99, 32, 727 . "ave(X)", zsto,zout) 728 c 720 729 CALL histdef(nid_day, "bils", "Surf. total heat flux", "W/m2", 721 730 . iim,jjmp1,nhori, 1,1,1, -99, 32, … … 746 755 $ iim,jjmp1,nhori, 1,1,1, -99, 32, 747 756 $ "ave(X)", zsto,zout) 748 757 C 758 call histdef(nid_day, "tsol_"//clnsurf(nsrf), 759 $ "Fraction"//clnsurf(nsrf), "W/m2", 760 $ iim,jjmp1,nhori, 1,1,1, -99, 32, 761 $ "ave(X)", zsto,zout) 762 C 749 763 call histdef(nid_day, "sens_"//clnsurf(nsrf), 750 764 $ "Sensible heat flux "//clnsurf(nsrf), "W/m2", … … 766 780 $ iim,jjmp1,nhori, 1,1,1, -99, 32, 767 781 $ "ave(X)", zsto,zout) 782 C 783 call histdef(nid_day, "albe_"//clnsurf(nsrf), 784 $ "Latent heat flux "//clnsurf(nsrf), "W/m2", 785 $ iim,jjmp1,nhori, 1,1,1, -99, 32, 786 $ "ave(X)", zsto,zout) 787 C 788 call histdef(nid_day, "rugs_"//clnsurf(nsrf), 789 $ "Latent heat flux "//clnsurf(nsrf), "W/m2", 790 $ iim,jjmp1,nhori, 1,1,1, -99, 32, 791 $ "ave(X)", zsto,zout) 792 768 793 C§§§ 769 794 END DO … … 921 946 . "ave(X)", zsto,zout) 922 947 c 948 CALL histdef(nid_mth, "solldown", "Down. IR rad. at surface", 949 . "W/m2", iim,jjmp1,nhori, 1,1,1, -99, 32, 950 . "ave(X)", zsto,zout) 951 c 923 952 CALL histdef(nid_mth, "tops0", "Solar rad. at TOA", "W/m2", 924 953 . iim,jjmp1,nhori, 1,1,1, -99, 32, … … 964 993 $ "ave(X)", zsto,zout) 965 994 C 995 call histdef(nid_mth, "tsol_"//clnsurf(nsrf), 996 $ "Fraction "//clnsurf(nsrf), "W/m2", 997 $ iim,jjmp1,nhori, 1,1,1, -99, 32, 998 $ "ave(X)", zsto,zout) 999 C 966 1000 call histdef(nid_mth, "sens_"//clnsurf(nsrf), 967 1001 $ "Sensible heat flux "//clnsurf(nsrf), "W/m2", … … 981 1015 call histdef(nid_mth, "tauy_"//clnsurf(nsrf), 982 1016 $ "Meridional xind stress "//clnsurf(nsrf), "Pa", 1017 $ iim,jjmp1,nhori, 1,1,1, -99, 32, 1018 $ "ave(X)", zsto,zout) 1019 c 1020 call histdef(nid_mth, "albe_"//clnsurf(nsrf), 1021 $ "Latent heat flux "//clnsurf(nsrf), "W/m2", 1022 $ iim,jjmp1,nhori, 1,1,1, -99, 32, 1023 $ "ave(X)", zsto,zout) 1024 c 1025 call histdef(nid_mth, "rugs_"//clnsurf(nsrf), 1026 $ "Latent heat flux "//clnsurf(nsrf), "W/m2", 983 1027 $ iim,jjmp1,nhori, 1,1,1, -99, 32, 984 1028 $ "ave(X)", zsto,zout) … … 1258 1302 . "inst(X)", zsto,zout) 1259 1303 c 1304 CALL histdef(nid_ins, "solldown", "Down. IR rad. at surface", 1305 . "W/m2", iim,jjmp1,nhori, 1,1,1, -99, 32, 1306 . "ave(X)", zsto,zout) 1307 c 1260 1308 CALL histdef(nid_ins, "bils", "Surf. total heat flux", "W/m2", 1261 1309 . iim,jjmp1,nhori, 1,1,1, -99, 32, … … 1526 1574 DO nsrf = 1, nbsrf 1527 1575 DO i = 1, klon 1528 zxrugs(i) = zxrugs(i) + frugs(i,nsrf)*pctsrf(i,nsrf)1576 zxrugs(i) = zxrugs(i) + frugs(i,nsrf)*pctsrf(i,nsrf) 1529 1577 ENDDO 1530 1578 ENDDO … … 1546 1594 e julien, rmu0, 1547 1595 e ok_veget, ocean, npas, nexca, ftsol, 1548 e paprs,pplay,radsol, fsnow,fqsol,fevap,falbe, 1549 e rain_fall, snow_fall, solsw, sollw, fder, 1596 $ soil_model,ftsoil, 1597 $ paprs,pplay,radsol, fsnow,fqsol,fevap,falbe,fluxlat, 1598 e rain_fall, snow_fall, solsw, sollw, sollwdown, fder, 1550 1599 e rlon, rlat, cufi, cvfi, frugs, 1551 1600 e debut, lafin, agesno,rugoro , … … 1605 1654 DO nsrf = 1, nbsrf 1606 1655 DO i = 1, klon 1607 ftsol(i,nsrf) = ftsol(i,nsrf) + d_ts(i,nsrf) 1608 zxtsol(i) = zxtsol(i) + ftsol(i,nsrf)*pctsrf(i,nsrf) 1656 c$$$ IF (pctsrf(i,nsrf) .GE. EPSFRA) THEN 1657 ftsol(i,nsrf) = ftsol(i,nsrf) + d_ts(i,nsrf) 1658 zxtsol(i) = zxtsol(i) + ftsol(i,nsrf)*pctsrf(i,nsrf) 1659 c$$$ ENDIF 1609 1660 ENDDO 1610 1661 ENDDO … … 1668 1719 s pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, 1669 1720 s kcbot, kctop, kdtop, pmflxr, pmflxs) 1721 WHERE (rain_con < 0.) rain_con = 0. 1722 WHERE (snow_con < 0.) snow_con = 0. 1670 1723 DO i = 1, klon 1671 1724 ibas_con(i) = klev+1 - kcbot(i) … … 1758 1811 . frac_impa, frac_nucl, 1759 1812 . prfl, psfl) 1813 WHERE (rain_lsc < 0) rain_lsc = 0. 1814 WHERE (snow_lsc < 0) snow_lsc = 0. 1760 1815 DO k = 1, klev 1761 1816 DO i = 1, klon … … 1861 1916 s heat,heat0,cool,cool0,radsol,albpla, 1862 1917 s topsw,toplw,solsw,sollw, 1918 s sollwdown, 1863 1919 s topsw0,toplw0,solsw0,sollw0) 1864 1920 itaprad = 0 … … 1893 1949 c Si une sous-fraction n'existe pas, elle prend la valeur moyenne 1894 1950 c 1895 DO nsrf = 1, nbsrf1896 DO i = 1, klon1897 IF (pctsrf(i,nsrf).LT.epsfra) THEN1898 fqsol(i,nsrf) = zxqsol(i)1899 fsnow(i,nsrf) = zxsnow(i)1900 ENDIF1901 ENDDO1902 ENDDO1951 c$$$ DO nsrf = 1, nbsrf 1952 c$$$ DO i = 1, klon 1953 c$$$ IF (pctsrf(i,nsrf).LT.epsfra) THEN 1954 c$$$ fqsol(i,nsrf) = zxqsol(i) 1955 c$$$ fsnow(i,nsrf) = zxsnow(i) 1956 c$$$ ENDIF 1957 c$$$ ENDDO 1958 c$$$ ENDDO 1903 1959 c 1904 1960 c Calculer le bilan du sol et la derive de temperature (couplage) … … 2092 2148 CALL histwrite(nid_day,"soll",itap,zx_tmp_2d,iim*jjmp1,ndex2d) 2093 2149 c 2150 CALL gr_fi_ecrit(1, klon,iim,jjmp1, sollwdown,zx_tmp_2d) 2151 CALL histwrite(nid_day,"solldown",itap,zx_tmp_2d,iim*jjmp1,ndex2d) 2152 c 2094 2153 CALL gr_fi_ecrit(1, klon,iim,jjmp1, bils,zx_tmp_2d) 2095 2154 CALL histwrite(nid_day,"bils",itap,zx_tmp_2d,iim*jjmp1,ndex2d) … … 2108 2167 CALL histwrite(nid_day,"pourc_"//clnsurf(nsrf),itap, 2109 2168 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2169 C 2170 zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf) 2171 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2172 CALL histwrite(nid_day,"tsol_"//clnsurf(nsrf),itap, 2173 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2110 2174 C 2111 zx_tmp_fi2d(1 : klon) = -fluxt( 1 : klon, 1, nsrf)2175 zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf) 2112 2176 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2113 2177 CALL histwrite(nid_day,"sens_"//clnsurf(nsrf),itap, 2114 2178 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2115 2179 C 2116 zx_tmp_fi2d(1 : klon) = - fluxq( 1 : klon, 1, nsrf)2180 zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf) 2117 2181 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2118 2182 CALL histwrite(nid_day,"lat_"//clnsurf(nsrf),itap, 2119 2183 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2120 2184 C 2121 zx_tmp_fi2d(1 : klon) = -fluxu( 1 : klon, 1, nsrf)2185 zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf) 2122 2186 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2123 2187 CALL histwrite(nid_day,"taux_"//clnsurf(nsrf),itap, 2124 2188 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2125 2189 C 2126 zx_tmp_fi2d(1 : klon) = -fluxv( 1 : klon, 1, nsrf)2190 zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf) 2127 2191 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2128 2192 CALL histwrite(nid_day,"tauy_"//clnsurf(nsrf),itap, 2129 2193 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2194 C 2195 zx_tmp_fi2d(1 : klon) = falbe( 1 : klon, nsrf) 2196 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2197 CALL histwrite(nid_day,"albe_"//clnsurf(nsrf),itap, 2198 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2199 C 2200 zx_tmp_fi2d(1 : klon) = frugs( 1 : klon, nsrf) 2201 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2202 CALL histwrite(nid_day,"rugs_"//clnsurf(nsrf),itap, 2203 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2130 2204 C 2131 2205 END DO … … 2258 2332 CALL gr_fi_ecrit(1, klon,iim,jjmp1, sollw,zx_tmp_2d) 2259 2333 CALL histwrite(nid_mth,"soll",itap,zx_tmp_2d,iim*jjmp1,ndex2d) 2334 c 2335 CALL gr_fi_ecrit(1, klon,iim,jjmp1, sollwdown,zx_tmp_2d) 2336 CALL histwrite(nid_mth,"solldown",itap,zx_tmp_2d,iim*jjmp1,ndex2d) 2260 2337 c 2261 2338 CALL gr_fi_ecrit(1, klon,iim,jjmp1, topsw0,zx_tmp_2d) … … 2300 2377 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2301 2378 C 2302 zx_tmp_fi2d(1 : klon) = - fluxt( 1 : klon, 1, nsrf) 2379 zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf) 2380 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2381 CALL histwrite(nid_mth,"tsol_"//clnsurf(nsrf),itap, 2382 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2383 C 2384 zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf) 2303 2385 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2304 2386 CALL histwrite(nid_mth,"sens_"//clnsurf(nsrf),itap, 2305 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2306 C 2307 zx_tmp_fi2d(1 : klon) = - fluxq( 1 : klon, 1, nsrf)2387 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2388 C 2389 zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf) 2308 2390 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2309 2391 CALL histwrite(nid_mth,"lat_"//clnsurf(nsrf),itap, 2310 2392 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2311 2393 C 2312 zx_tmp_fi2d(1 : klon) = -fluxu( 1 : klon, 1, nsrf)2394 zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf) 2313 2395 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2314 2396 CALL histwrite(nid_mth,"taux_"//clnsurf(nsrf),itap, 2315 2397 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2316 2398 C 2317 zx_tmp_fi2d(1 : klon) = -fluxv( 1 : klon, 1, nsrf)2399 zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf) 2318 2400 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2319 2401 CALL histwrite(nid_mth,"tauy_"//clnsurf(nsrf),itap, 2320 2402 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2321 2403 C 2404 zx_tmp_fi2d(1 : klon) = falbe( 1 : klon, nsrf) 2405 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2406 CALL histwrite(nid_mth,"albe_"//clnsurf(nsrf),itap, 2407 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2408 C 2409 zx_tmp_fi2d(1 : klon) = frugs( 1 : klon, nsrf) 2410 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2411 CALL histwrite(nid_mth,"rugs_"//clnsurf(nsrf),itap, 2412 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2413 2322 2414 END DO 2323 2415 c$$$ DO i = 1, klon … … 2559 2651 CALL gr_fi_ecrit(1, klon,iim,jjmp1, sollw,zx_tmp_2d) 2560 2652 CALL histwrite(nid_ins,"soll",itap,zx_tmp_2d,iim*jjmp1,ndex2d) 2653 c 2654 CALL gr_fi_ecrit(1, klon,iim,jjmp1, sollwdown,zx_tmp_2d) 2655 CALL histwrite(nid_ins,"solldown",itap,zx_tmp_2d,iim*jjmp1,ndex2d) 2561 2656 c 2562 2657 CALL gr_fi_ecrit(1, klon,iim,jjmp1, bils,zx_tmp_2d) … … 2588 2683 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2589 2684 C 2590 zx_tmp_fi2d(1 : klon) = -fluxt( 1 : klon, 1, nsrf)2685 zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf) 2591 2686 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2592 2687 CALL histwrite(nid_ins,"sens_"//clnsurf(nsrf),itap, 2593 2688 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2594 2689 C 2595 zx_tmp_fi2d(1 : klon) = - fluxq( 1 : klon, 1, nsrf)2690 zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf) 2596 2691 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2597 2692 CALL histwrite(nid_ins,"lat_"//clnsurf(nsrf),itap, … … 2603 2698 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2604 2699 C 2605 zx_tmp_fi2d(1 : klon) = -fluxu( 1 : klon, 1, nsrf)2700 zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf) 2606 2701 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2607 2702 CALL histwrite(nid_ins,"taux_"//clnsurf(nsrf),itap, 2608 2703 $ zx_tmp_2d,iim*jjmp1,ndex2d) 2609 2704 C 2610 zx_tmp_fi2d(1 : klon) = -fluxv( 1 : klon, 1, nsrf)2705 zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf) 2611 2706 CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d , zx_tmp_2d) 2612 2707 CALL histwrite(nid_ins,"tauy_"//clnsurf(nsrf),itap, … … 2752 2847 . rlat, rlon, pctsrf, ftsol, ftsoil, deltat, fqsol, fsnow, 2753 2848 . falbe, fevap, rain_fall, snow_fall, 2754 . solsw, sollw ,fder,2849 . solsw, sollwdown,fder, 2755 2850 . radsol,frugs,agesno, 2756 2851 . zmea,zstd,zsig,zgam,zthe,zpic,zval,rugoro,
Note: See TracChangeset
for help on using the changeset viewer.