Changeset 385
- Timestamp:
- Jul 15, 2002, 1:29:54 PM (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ.3.3/branches/rel-LF/libf/phylmd/physiq.F
r373 r385 551 551 save ok_newmicro 552 552 save fact_cldcon,facttemps 553 real facteur 553 554 554 555 integer iflag_cldcon … … 578 579 c 579 580 REAL t_seri(klon,klev), q_seri(klon,klev) 580 REAL ql_seri(klon,klev) 581 REAL ql_seri(klon,klev),qs_seri(klon,klev) 581 582 REAL u_seri(klon,klev), v_seri(klon,klev) 582 583 c … … 619 620 character*40 vartitle 620 621 character*20 varunits 622 C Variables liees au bilan d'energie et d'enthalpi 623 INTEGER if_ebil ! level for energy conserv. dignostics 624 SAVE if_ebil 625 REAL ztsol(klon) 626 REAL h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot 627 $ , h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot 628 SAVE h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot 629 $ , h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot 630 REAL d_h_vcol, d_h_dair, d_qt, d_qw, d_ql, d_qs, d_ec 631 REAL d_h_vcol_phy 632 REAL fs_bound, fq_bound 633 SAVE d_h_vcol_phy 634 REAL zero_v(klon) 635 CHARACTER*15 ztit 636 INTEGER ip_ebil ! PRINT level for energy conserv. diag. 637 SAVE ip_ebil 638 DATA ip_ebil/2/ 621 639 c 622 640 c Declaration des constantes et des fonctions thermodynamiques … … 627 645 c====================================================================== 628 646 modname = 'physiq' 647 if_ebil = 2 648 IF (if_ebil.ge.1) THEN 649 DO i=1,klon 650 zero_v(i)=0. 651 END DO 652 END IF 629 653 ok_sync=.TRUE. 630 654 IF (nqmax .LT. 2) THEN … … 644 668 c 645 669 IF (debut) THEN 646 670 C 671 IF (if_ebil.ge.1) d_h_vcol_phy=0. 647 672 c 648 673 c appel a la lecture du run.def physique … … 1526 1551 . "inst(X)", zsto,zout) 1527 1552 c 1553 CALL histdef(nid_ins, "cdrm", "Momentum drag coef.", "-", 1554 . iim,jjmp1,nhori, 1,1,1, -99, 32, 1555 . "inst(X)", zsto,zout) 1556 c 1557 CALL histdef(nid_ins, "cdrh", "Heat drag coef.", "-", 1558 . iim,jjmp1,nhori, 1,1,1, -99, 32, 1559 . "inst(X)", zsto,zout) 1560 c 1528 1561 CALL histdef(nid_ins, "rain", "Precipitation", "mm/day", 1529 1562 . iim,jjmp1,nhori, 1,1,1, -99, 32, … … 1731 1764 q_seri(i,k) = qx(i,k,ivap) 1732 1765 ql_seri(i,k) = qx(i,k,iliq) 1766 qs_seri(i,k) = 0. 1733 1767 ENDDO 1734 1768 ENDDO … … 1748 1782 ENDDO 1749 1783 ENDIF 1750 c 1784 C 1785 IF (if_ebil.ge.1) THEN 1786 DO i = 1, klon 1787 ztsol(i) = 0. 1788 ENDDO 1789 DO i = 1, klon 1790 ztsol(i) = ztsol(i) + ftsol(i,nsrf)*pctsrf(i,nsrf) 1791 ENDDO 1792 ztit='after dynamic' 1793 CALL diagetpq(paire,ztit,ip_ebil,1,1,dtime 1794 e , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay 1795 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 1796 C Comme les tendances de la physique sont ajoute dans la dynamique, 1797 C on devrait avoir que la variation d'entalpie par la dynamique 1798 C est egale a la variation de la physique au pas de temps precedent. 1799 C Donc la somme de ces 2 variations devrait etre nulle. 1800 call diagphy(paire,ztit,ip_ebil 1801 e , zero_v, zero_v, zero_v, zero_v, zero_v 1802 e , zero_v, zero_v, zero_v, ztsol 1803 e , d_h_vcol+d_h_vcol_phy, d_qt, 0. 1804 s , fs_bound, fq_bound ) 1805 END IF 1806 1751 1807 c Diagnostiquer la tendance dynamique 1752 1808 c … … 1812 1868 ENDDO 1813 1869 c 1870 IF (if_ebil.ge.2) THEN 1871 ztit='after reevap' 1872 CALL diagetpq(paire,ztit,ip_ebil,2,2,dtime 1873 e , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay 1874 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 1875 call diagphy(paire,ztit,ip_ebil 1876 e , zero_v, zero_v, zero_v, zero_v, zero_v 1877 e , zero_v, zero_v, zero_v, ztsol 1878 e , d_h_vcol, d_qt, d_ec 1879 s , fs_bound, fq_bound ) 1880 C 1881 END IF 1882 C 1883 c 1814 1884 c Appeler la diffusion verticale (programme de couche limite) 1815 1885 c … … 1825 1895 DO nsrf = 1, nbsrf 1826 1896 DO i = 1, klon 1827 frugs(i,nsrf) = MAX(frugs(i,nsrf),0.001) 1897 c$$$ frugs(i,nsrf) = MAX(frugs(i,nsrf),0.001 1898 frugs(i,nsrf) = MAX(frugs(i,nsrf),0.000015) 1828 1899 ENDDO 1829 1900 ENDDO … … 1899 1970 ENDDO 1900 1971 ENDDO 1972 c 1973 IF (if_ebil.ge.2) THEN 1974 ztit='after clmain' 1975 CALL diagetpq(paire,ztit,ip_ebil,2,2,dtime 1976 e , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay 1977 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 1978 call diagphy(paire,ztit,ip_ebil 1979 e , zero_v, zero_v, zero_v, zero_v, sens 1980 e , evap , zero_v, zero_v, ztsol 1981 e , d_h_vcol, d_qt, d_ec 1982 s , fs_bound, fq_bound ) 1983 END IF 1984 C 1901 1985 c 1902 1986 c Incrementer la temperature du sol … … 2072 2156 ENDDO 2073 2157 ENDDO 2158 c 2159 IF (if_ebil.ge.2) THEN 2160 ztit='after convect' 2161 CALL diagetpq(paire,ztit,ip_ebil,2,2,dtime 2162 e , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay 2163 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 2164 call diagphy(paire,ztit,ip_ebil 2165 e , zero_v, zero_v, zero_v, zero_v, zero_v 2166 e , zero_v, rain_con, snow_con, ztsol 2167 e , d_h_vcol, d_qt, d_ec 2168 s , fs_bound, fq_bound ) 2169 END IF 2170 C 2074 2171 IF (check) THEN 2075 2172 za = qcheck(klon,klev,paprs,q_seri,ql_seri,paire) … … 2130 2227 ENDDO 2131 2228 ENDDO 2229 c 2230 IF (if_ebil.ge.2) THEN 2231 ztit='after dry_adjust' 2232 CALL diagetpq(paire,ztit,ip_ebil,2,2,dtime 2233 e , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay 2234 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 2235 END IF 2132 2236 2133 2237 … … 2168 2272 c 1e4 (en gros 3 heures), en dur pour le moment, est le temps de 2169 2273 c relaxation des ratqs 2170 facttemps=exp(-pdtphys/1.e4) 2171 ratqs(:,:)=max(ratqs(:,:)*facttemps,ratqss(:,:)) 2274 c facttemps=exp(-pdtphys/1.e4) 2275 facteur=exp(-pdtphys*facttemps) 2276 ratqs(:,:)=max(ratqs(:,:)*facteur,ratqss(:,:)) 2172 2277 ratqs(:,:)=max(ratqs(:,:),ratqsc(:,:)) 2173 2278 c print*,'calcul des ratqs fini' … … 2214 2319 ENDIF 2215 2320 c 2321 IF (if_ebil.ge.2) THEN 2322 ztit='after fisrt' 2323 CALL diagetpq(paire,ztit,ip_ebil,2,2,dtime 2324 e , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay 2325 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 2326 call diagphy(paire,ztit,ip_ebil 2327 e , zero_v, zero_v, zero_v, zero_v, zero_v 2328 e , zero_v, rain_lsc, snow_lsc, ztsol 2329 e , d_h_vcol, d_qt, d_ec 2330 s , fs_bound, fq_bound ) 2331 END IF 2332 c 2216 2333 c------------------------------------------------------------------- 2217 2334 c PRESCRIPTION DES NUAGES POUR LE RAYONNEMENT … … 2239 2356 c convection et du calcul du pas de temps précédent diminué d'un facteur 2240 2357 c facttemps 2241 facttemps=pdtphys/1.e4 2358 c facttemps=pdtphys/1.e4 2359 facteur = pdtphys *facttemps 2242 2360 do k=1,klev 2243 2361 do i=1,klon 2244 rnebcon(i,k)=rnebcon(i,k)*fact temps2362 rnebcon(i,k)=rnebcon(i,k)*facteur 2245 2363 if (rnebcon0(i,k)*clwcon0(i,k).gt.rnebcon(i,k)*clwcon(i,k)) 2246 2364 s then … … 2278 2396 snow_fall(i) = snow_con(i) + snow_lsc(i) 2279 2397 ENDDO 2398 c 2399 IF (if_ebil.ge.2) THEN 2400 ztit="after diagcld" 2401 CALL diagetpq(paire,ztit,ip_ebil,2,2,dtime 2402 e , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay 2403 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 2404 END IF 2280 2405 c 2281 2406 c Calculer l'humidite relative pour diagnostique … … 2356 2481 ENDDO 2357 2482 c 2483 IF (if_ebil.ge.2) THEN 2484 ztit='after rad' 2485 CALL diagetpq(paire,ztit,ip_ebil,2,2,dtime 2486 e , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay 2487 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 2488 call diagphy(paire,ztit,ip_ebil 2489 e , topsw, toplw, solsw, sollw, zero_v 2490 e , zero_v, zero_v, zero_v, ztsol 2491 e , d_h_vcol, d_qt, d_ec 2492 s , fs_bound, fq_bound ) 2493 END IF 2494 c 2495 c 2358 2496 c Calculer l'hydrologie de la surface 2359 2497 c … … 2457 2595 c 2458 2596 ENDIF ! fin de test sur ok_orolf 2597 c 2598 IF (if_ebil.ge.2) THEN 2599 ztit='after orography' 2600 CALL diagetpq(paire,ztit,ip_ebil,2,2,dtime 2601 e , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay 2602 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 2603 END IF 2604 c 2459 2605 c 2460 2606 cAA … … 2520 2666 c 2521 2667 c 2522 2668 IF (if_ebil.ge.1) THEN 2669 ztit='after physic' 2670 CALL diagetpq(paire,ztit,ip_ebil,1,1,dtime 2671 e , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay 2672 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 2673 C Comme les tendances de la physique sont ajoute dans la dynamique, 2674 C on devrait avoir que la variation d'entalpie par la dynamique 2675 C est egale a la variation de la physique au pas de temps precedent. 2676 C Donc la somme de ces 2 variations devrait etre nulle. 2677 call diagphy(paire,ztit,ip_ebil 2678 e , topsw, toplw, solsw, sollw, sens 2679 e , evap, rain_fall, snow_fall, ztsol 2680 e , d_h_vcol, d_qt, d_ec 2681 s , fs_bound, fq_bound ) 2682 C 2683 d_h_vcol_phy=d_h_vcol 2684 C 2685 END IF 2686 C 2523 2687 IF (ok_journe) THEN 2524 2688 c … … 3272 3436 CALL histwrite(nid_ins,"snow",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d) 3273 3437 3438 CALL gr_fi_ecrit(1, klon,iim,jjmp1, cdragm,zx_tmp_2d) 3439 CALL histwrite(nid_ins,"cdrm",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d) 3440 c 3441 CALL gr_fi_ecrit(1, klon,iim,jjmp1, cdragh,zx_tmp_2d) 3442 CALL histwrite(nid_ins,"cdrh",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d) 3274 3443 c 3275 3444 CALL gr_fi_ecrit(1, klon,iim,jjmp1, toplw,zx_tmp_2d)
Note: See TracChangeset
for help on using the changeset viewer.