Changeset 644 for LMDZ4/trunk/libf/phylmd/physiq.F
- Timestamp:
- May 25, 2005, 3:10:09 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk/libf/phylmd/physiq.F
r625 r644 11 11 . flxmass_w, 12 12 #endif 13 . d_u, d_v, d_t, d_qx, d_ps) 13 . d_u, d_v, d_t, d_qx, d_ps 14 cIM Amip2 15 . , dudyn 16 . , PVteta) 14 17 15 18 USE ioipsl … … 40 43 #define histins 41 44 c#define histISCCP 42 #define histREGDYN43 #define histmthNMC45 c#define histREGDYN 46 c#define histmthNMC 44 47 c====================================================================== 45 48 c modif ( P. Le Van , 12/10/98 ) … … 73 76 c d_qx----output-R-tendance physique de "qx" (kg/kg/s) 74 77 c d_ps----output-R-tendance physique de la pression au sol 78 cIM 79 c PVteta--output-R-vorticite potentielle a des thetas constantes 75 80 c====================================================================== 76 81 #include "dimensions.h" … … 116 121 c parameter (ocean = 'couple') 117 122 logical ok_ocean 123 SAVE ok_ocean 124 c 125 cIM "slab" ocean 126 REAL tslab(klon) !Temperature du slab-ocean 127 REAL seaice(klon) !glace de mer (kg/m2) 128 REAL fluxo(klon) !flux turbulents ocean-glace de mer 129 REAL fluxg(klon) !flux turbulents ocean-atmosphere 130 c 118 131 c====================================================================== 119 132 c Clef controlant l'activation du cycle diurne: … … 188 201 REAL znivsig(klev) 189 202 REAL zsurf(nbsrf) 190 203 cIM 204 INTEGER kinv 205 real pir 206 cMI 191 207 REAL u(klon,klev) 192 208 REAL v(klon,klev) … … 213 229 REAL d_ps(klon) 214 230 real da(klon,klev),phi(klon,klev,klev),mp(klon,klev) 231 c 232 cIM Amip2 PV a theta constante 233 c 234 INTEGER nbteta 235 PARAMETER(nbteta=3) 236 CHARACTER*3 ctetaSTD(nbteta) 237 DATA ctetaSTD/'350','380','405'/ 238 REAL rtetaSTD(nbteta) 239 DATA rtetaSTD/350., 380., 405./ 240 c 241 REAL PVteta(klon,nbteta) 242 REAL zx_tmp_3dte(iim,jjmp1,nbteta) 243 c 244 cMI Amip2 PV a theta constante 215 245 216 246 INTEGER klevp1, klevm1 … … 238 268 SAVE LWdnTOA, LWdnTOAclr 239 269 c 240 c vents meridien et zonal a un niveau de pression 270 cIM Amip2 271 c variables a une pression donnee 241 272 c 242 273 integer nlevSTD … … 246 277 .60000., 50000., 40000., 30000., 25000., 20000., 247 278 .15000., 10000., 7000., 5000., 3000., 2000., 1000./ 248 CHARACTER* 5 clevSTD(nlevSTD), aa, bb279 CHARACTER*4 clevSTD(nlevSTD) 249 280 DATA clevSTD/'1000','925 ','850 ','700 ','600 ', 250 281 .'500 ','400 ','300 ','250 ','200 ','150 ','100 ', 251 282 .'70 ','50 ','30 ','20 ','10 '/ 252 283 c 284 CHARACTER*3 bb2 285 CHARACTER*2 bb3 286 c 253 287 real tlevSTD(klon,nlevSTD), qlevSTD(klon,nlevSTD) 254 288 real rhlevSTD(klon,nlevSTD), philevSTD(klon,nlevSTD) 255 289 real ulevSTD(klon,nlevSTD), vlevSTD(klon,nlevSTD) 256 c 257 cIM ENSEMBLES BEG 258 c 259 integer nlevENS 260 PARAMETER(nlevENS=4) 261 integer indENS(nlevENS) 262 save indENS 263 real rlevENS(nlevENS) 264 DATA rlevENS/85000., 70000., 50000., 20000./ 265 CHARACTER*3 clev(nlevENS) 266 DATA clev/'850','700','500','200'/ 267 268 real tlev(klon,nlevENS), qlev(klon,nlevENS), rhlev(klon,nlevENS) 269 real ulev(klon,nlevENS), vlev(klon,nlevENS), philev(klon,nlevENS) 270 real wlev(klon,nlevENS) 271 cIM ENSEMBLES END 290 real wlevSTD(klon,nlevSTD) 291 c 292 c nout : niveau de output des variables a une pression donnee 293 INTEGER nout 294 PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC 295 c 296 REAL tsumSTD(klon,nlevSTD,nout) 297 REAL usumSTD(klon,nlevSTD,nout), vsumSTD(klon,nlevSTD,nout) 298 REAL wsumSTD(klon,nlevSTD,nout), phisumSTD(klon,nlevSTD,nout) 299 REAL qsumSTD(klon,nlevSTD,nout), rhsumSTD(klon,nlevSTD,nout) 300 c 301 SAVE tsumSTD, usumSTD, vsumSTD, wsumSTD, phisumSTD, 302 . qsumSTD, rhsumSTD 303 c 304 logical oknondef(klon,nlevSTD,nout) 305 real tnondef(klon,nlevSTD,nout) 306 save tnondef 307 c 308 c les produits uvSTD, vqSTD, .., T2STD sont calcules 309 c a partir des valeurs instantannees toutes les 6 h 310 c qui sont moyennees sur le mois 311 c 312 real uvSTD(klon,nlevSTD) 313 real vqSTD(klon,nlevSTD) 314 real vTSTD(klon,nlevSTD) 315 real wqSTD(klon,nlevSTD) 316 c 317 real uvsumSTD(klon,nlevSTD,nout) 318 real vqsumSTD(klon,nlevSTD,nout) 319 real vTsumSTD(klon,nlevSTD,nout) 320 real wqsumSTD(klon,nlevSTD,nout) 321 c 322 real vphiSTD(klon,nlevSTD) 323 real wTSTD(klon,nlevSTD) 324 real u2STD(klon,nlevSTD) 325 real v2STD(klon,nlevSTD) 326 real T2STD(klon,nlevSTD) 327 c 328 real vphisumSTD(klon,nlevSTD,nout) 329 real wTsumSTD(klon,nlevSTD,nout) 330 real u2sumSTD(klon,nlevSTD,nout) 331 real v2sumSTD(klon,nlevSTD,nout) 332 real T2sumSTD(klon,nlevSTD,nout) 333 c 334 SAVE uvsumSTD, vqsumSTD, vTsumSTD, wqsumSTD 335 SAVE vphisumSTD, wTsumSTD, u2sumSTD, v2sumSTD, T2sumSTD 336 cMI Amip2 337 c 338 #include "radepsi.h" 339 #include "radopt.h" 340 c 272 341 c 273 342 c prw: precipitable water … … 282 351 REAL cldt_s(klon),cldq_s(klon) !nuage total, eau liquide integree 283 352 284 INTEGER linv,kp1353 INTEGER kp1 285 354 c flwp, fiwp = Liquid Water Path & Ice Water Path (kg/m2) 286 355 c flwc, fiwc = Liquid Water Content & Ice Water Content (kg/kg) … … 292 361 REAL flwc_s(klon,klev), fiwc_s(klon,klev) 293 362 294 c ISCCP simulator v3.4363 cIM ISCCP simulator v3.4 295 364 c dans clesphys.h top_height, overlap 296 365 cv3.4 … … 322 391 REAL emsfc_lw 323 392 PARAMETER(emsfc_lw=0.99) 324 393 c REAL ran0 ! type for random number fuction 325 394 c 326 395 REAL cldtot(klon,klev) … … 351 420 REAL boxptop(klon,ncol) 352 421 c 353 INTEGER l, ni, nj,kmax, lmax422 INTEGER l, kmax, lmax 354 423 PARAMETER(kmax=8, lmax=8) 355 424 INTEGER kmaxm1, lmaxm1 … … 358 427 PARAMETER(iimx7=iim*kmaxm1, jjmx7=jjm*lmaxm1, 359 428 .jjmp1x7=jjmp1*lmaxm1) 360 REAL fq4d(iim,jjmp1,kmaxm1,lmaxm1)361 REAL fq3d(iimx7, jjmp1x7)362 429 c 363 430 INTEGER iw, iwmax … … 376 443 SAVE nhistoWt 377 444 445 INTEGER linv 378 446 INTEGER pct_ocean(klon,nbregdyn) 379 REAL rlonPOS(klon)380 447 381 448 c sorties ISCCP 382 449 383 384 450 c logical ok_isccp 451 c real ecrit_isccp 385 452 integer nid_isccp 386 save ok_isccp, ecrit_isccp, nid_isccp 387 388 #ifdef histISCCP 389 data ok_isccp/.true./ 390 #else 391 data ok_isccp/.false./ 392 #endif 453 c save ok_isccp, ecrit_isccp, nid_isccp 454 save nid_isccp 455 cIM 090704 BEG 456 INTEGER nbapp_isccp,isccppas 457 458 #undef histISCCP 459 #define histISCCP 460 c data ok_isccp,ecrit_isccp/.true.,0.125/ 461 c data ok_isccp,ecrit_isccp/.true.,1./ 462 cIM 190504 data ok_isccp/.true./ 463 cIM 190504 #else 464 cIM 190504 data ok_isccp/.false./ 465 cIM 190504 #endif 393 466 394 467 c sorties statistiques regime dynamique 395 396 468 c logical ok_regdyn 469 c real ecrit_regdyn 397 470 integer nid_regdyn 398 save ok_regdyn, ecrit_regdyn, nid_regdyn 399 400 #ifdef histREGDYN 471 c save ok_regdyn, ecrit_regdyn, nid_regdyn 472 save nid_regdyn 473 474 #undef histREGDYN 475 #define histREGDYN 476 cIM 190504 #ifdef histREGDYN 401 477 c data ok_regdyn,ecrit_regdyn/.true.,0.125/ 402 478 c data ok_regdyn,ecrit_regdyn/.true.,1./ 403 404 #else405 406 #endif479 cIM 190504 data ok_regdyn/.true./ 480 cIM 190504 #else 481 cIM 190504 data ok_regdyn/.false./ 482 cIM 190504 #endif 407 483 408 484 REAL zx_tau(kmaxm1), zx_pc(lmaxm1), zx_o500(iwmax) … … 418 494 c taulev: numero du niveau de tau dans les sorties ISCCP 419 495 CHARACTER *4 taulev(kmaxm1) 420 DATA taulev/'tau1','tau2','tau3','tau4','tau5','tau6','tau7'/ 421 422 REAL zx_lonx7(iimx7), zx_latx7(jjmp1x7) 423 INTEGER nhorix7 496 c DATA taulev/'tau1','tau2','tau3','tau4','tau5','tau6','tau7'/ 497 DATA taulev/'tau0','tau1','tau2','tau3','tau4','tau5','tau6'/ 498 CHARACTER *3 pclev(lmaxm1) 499 DATA pclev/'pc1','pc2','pc3','pc4','pc5','pc6','pc7'/ 500 c 501 c cnameisccp 502 CHARACTER *27 cnameisccp(lmaxm1,kmaxm1) 503 DATA cnameisccp/'pc< 50hPa, tau< 0.3', 504 . 'pc= 50-180hPa, tau< 0.3', 505 . 'pc= 180-310hPa, tau< 0.3', 506 . 'pc= 310-440hPa, tau< 0.3', 507 . 'pc= 440-560hPa, tau< 0.3', 508 . 'pc= 560-680hPa, tau< 0.3', 509 . 'pc= 680-800hPa, tau< 0.3', 510 . 'pc< 50hPa, tau= 0.3-1.3', 511 . 'pc= 50-180hPa, tau= 0.3-1.3', 512 . 'pc= 180-310hPa, tau= 0.3-1.3', 513 . 'pc= 310-440hPa, tau= 0.3-1.3', 514 . 'pc= 440-560hPa, tau= 0.3-1.3', 515 . 'pc= 560-680hPa, tau= 0.3-1.3', 516 . 'pc= 680-800hPa, tau= 0.3-1.3', 517 . 'pc< 50hPa, tau= 1.3-3.6', 518 . 'pc= 50-180hPa, tau= 1.3-3.6', 519 . 'pc= 180-310hPa, tau= 1.3-3.6', 520 . 'pc= 310-440hPa, tau= 1.3-3.6', 521 . 'pc= 440-560hPa, tau= 1.3-3.6', 522 . 'pc= 560-680hPa, tau= 1.3-3.6', 523 . 'pc= 680-800hPa, tau= 1.3-3.6', 524 . 'pc< 50hPa, tau= 3.6-9.4', 525 . 'pc= 50-180hPa, tau= 3.6-9.4', 526 . 'pc= 180-310hPa, tau= 3.6-9.4', 527 . 'pc= 310-440hPa, tau= 3.6-9.4', 528 . 'pc= 440-560hPa, tau= 3.6-9.4', 529 . 'pc= 560-680hPa, tau= 3.6-9.4', 530 . 'pc= 680-800hPa, tau= 3.6-9.4', 531 . 'pc< 50hPa, tau= 9.4-23', 532 . 'pc= 50-180hPa, tau= 9.4-23', 533 . 'pc= 180-310hPa, tau= 9.4-23', 534 . 'pc= 310-440hPa, tau= 9.4-23', 535 . 'pc= 440-560hPa, tau= 9.4-23', 536 . 'pc= 560-680hPa, tau= 9.4-23', 537 . 'pc= 680-800hPa, tau= 9.4-23', 538 . 'pc< 50hPa, tau= 23-60', 539 . 'pc= 50-180hPa, tau= 23-60', 540 . 'pc= 180-310hPa, tau= 23-60', 541 . 'pc= 310-440hPa, tau= 23-60', 542 . 'pc= 440-560hPa, tau= 23-60', 543 . 'pc= 560-680hPa, tau= 23-60', 544 . 'pc= 680-800hPa, tau= 23-60', 545 . 'pc< 50hPa, tau> 60.', 546 . 'pc= 50-180hPa, tau> 60.', 547 . 'pc= 180-310hPa, tau> 60.', 548 . 'pc= 310-440hPa, tau> 60.', 549 . 'pc= 440-560hPa, tau> 60.', 550 . 'pc= 560-680hPa, tau> 60.', 551 . 'pc= 680-800hPa, tau> 60.'/ 552 c 553 c REAL zx_lonx7(iimx7), zx_latx7(jjmp1x7) 554 c INTEGER nhorix7 424 555 cIM: region='3d' <==> sorties en global 425 556 CHARACTER*3 region 426 557 PARAMETER(region='3d') 427 558 c 559 cIM ISCCP simulator v3.4 560 c 428 561 logical ok_hf 429 real ecrit_hf 562 cIM200505 integer ecrit_hf 563 cIM200505 integer ecrit_hf2mth 564 cIM200505 save ecrit_hf2mth 565 c 430 566 integer nid_hf, nid_hf3d 431 save ok_hf, ecrit_hf, nid_hf, nid_hf3d 567 cIM200505 save ok_hf, ecrit_hf, nid_hf, nid_hf3d 568 save ok_hf, nid_hf, nid_hf3d 432 569 433 570 c QUESTION : noms de variables ? 434 571 435 572 #ifdef histhf 436 data ok_hf,ecrit_hf/.true.,0.25/ 573 cIM 130904 data ok_hf,ecrit_hf/.true.,0.25/ 574 data ok_hf/.true./ 437 575 #else 438 576 data ok_hf/.false./ … … 465 603 REAL rlon(klon) 466 604 SAVE rlon ! longitude pour chaque point 605 c 606 REAL rlonPOS(klon) 607 SAVE rlonPOS ! longitudes > 0. pour chaque point 467 608 c 468 609 cc INTEGER iflag_con … … 534 675 SAVE rugoro ! longueur de rugosite de l'OESM 535 676 c 536 REAL zulow(klon),zvlow(klon),zustr(klon), zvstr(klon) 677 cIM 141004 REAL zulow(klon),zvlow(klon),zustr(klon), zvstr(klon) 678 REAL zulow(klon),zvlow(klon) 537 679 c 538 680 REAL zuthe(klon),zvthe(klon) … … 621 763 REAL snow_fall(klon) ! neige 622 764 save snow_fall, rain_fall 623 cIM 050204 BEG 765 cIM cf FH pour Tiedtke 080604 766 REAL rain_tiedtke(klon),snow_tiedtke(klon) 767 c 624 768 REAL total_rain(klon), nday_rain(klon) 625 save total_rain,nday_rain626 c IM 050204 END769 save nday_rain 770 c 627 771 REAL evap(klon), devap(klon) ! evaporation et sa derivee 628 772 REAL sens(klon), dsens(klon) ! chaleur sensible et sa derivee … … 655 799 REAL pctsrf_new(klon,nbsrf) !pourcentage surfaces issus d'ORCHIDEE 656 800 REAL paire_ter(klon) !surfaces terre 657 c IM801 c 658 802 SAVE pctsrf ! sous-fraction du sol 659 803 REAL albsol(klon) … … 699 843 EXTERNAL lnblnk1 !enleve les blancs a la fin d'une variable de type 700 844 !caracter 845 EXTERNAL ini_undefSTD !initialise a 0 une variable a 1 niveau de pression 846 EXTERNAL undefSTD !somme les valeurs definies d'1 var a 1 niveau de pression 847 c EXTERNAL moy_undefSTD !moyenne d'1 var a 1 niveau de pression 848 c EXTERNAL moyglo_aire !moyenne globale d'1 var ponderee par l'aire de la maille (moyglo_pondaire) 849 c !par la masse/airetot (moyglo_pondaima) et la vraie masse (moyglo_pondmass) 701 850 c 702 851 c Variables locales … … 704 853 real clwcon(klon,klev),rnebcon(klon,klev) 705 854 real clwcon0(klon,klev),rnebcon0(klon,klev) 855 cIM cf. AM 081204 BEG 856 real clwcon0th(klon,klev),rnebcon0th(klon,klev) 857 cIM cf. AM 081204 END 706 858 save rnebcon, clwcon 707 859 … … 770 922 REAL zx_t, zx_qs, zdelta, zcor, zfra, zlvdcp, zlsdcp 771 923 real zqsat(klon,klev) 772 INTEGER i, k, iq, ig, j, iiq,nsrf, ll924 INTEGER i, k, iq, ig, j, nsrf, ll 773 925 REAL t_coup 774 926 PARAMETER (t_coup=234.0) 775 927 c 776 928 REAL zphi(klon,klev) 777 REAL zx_tmp_x(iim), zx_tmp_yjjmp1778 929 REAL zx_relief(iim,jjmp1) 779 930 REAL zx_aire(iim,jjmp1) 931 c 932 cIM cf. AM Variables locales pour la CLA (hbtm2) 933 c 934 REAL pblh(klon, nbsrf) ! Hauteur de couche limite 935 REAL plcl(klon, nbsrf) ! Niveau de condensation de la CLA 936 REAL capCL(klon, nbsrf) ! CAPE de couche limite 937 REAL oliqCL(klon, nbsrf) ! eau_liqu integree de couche limite 938 REAL cteiCL(klon, nbsrf) ! cloud top instab. crit. couche limite 939 REAL pblt(klon, nbsrf) ! T a la Hauteur de couche limite 940 REAL therm(klon, nbsrf) 941 REAL trmb1(klon, nbsrf) ! deep_cape 942 REAL trmb2(klon, nbsrf) ! inhibition 943 REAL trmb3(klon, nbsrf) ! Point Omega 944 c Grdeurs de sorties 945 REAL s_pblh(klon), s_lcl(klon), s_capCL(klon) 946 REAL s_oliqCL(klon), s_cteiCL(klon), s_pblt(klon) 947 REAL s_therm(klon), s_trmb1(klon), s_trmb2(klon) 948 REAL s_trmb3(klon) 780 949 cKE43 781 950 c Variables locales pour la convection de K. Emanuel (sb): … … 796 965 INTEGER iflagctrl(klon) ! flag fonctionnement de convect 797 966 c -- convect43: 798 INTEGER ntra ! nb traceurs 967 INTEGER ntra ! nb traceurs pour convect4.3 799 968 REAL pori_con(klon) ! pressure at the origin level of lifted parcel 800 969 REAL plcl_con(klon),dtma_con(klon),dtlcl_con(klon) … … 820 989 REAL d_u_ajs(klon,klev), d_v_ajs(klon,klev) 821 990 REAL d_t_eva(klon,klev),d_q_eva(klon,klev) 991 REAL d_t_oli(klon,klev) !tendances dues a oro et lif 822 992 REAL rneb(klon,klev) 993 c 994 ********************************************************* 995 * declarations 996 real zqasc(klon,klev) 997 save zqasc 998 999 ********************************************************* 1000 cIM 081204 END 823 1001 c 824 1002 REAL pmfu(klon,klev), pmfd(klon,klev) … … 863 1041 864 1042 logical ptconv(klon,klev) 865 1043 cIM cf. AM 081204 BEG 1044 logical ptconvth(klon,klev) 1045 cIM cf. AM 081204 END 866 1046 c 867 1047 c Variables liees a l'ecriture de la bande histoire physique 868 1048 c 869 INTEGER ecrit_mth 870 SAVE ecrit_mth ! frequence d'ecriture (fichier mensuel) 871 c 872 INTEGER ecrit_day 873 SAVE ecrit_day ! frequence d'ecriture (fichier journalier) 874 c 875 INTEGER ecrit_ins 876 SAVE ecrit_ins ! frequence d'ecriture (fichier instantane) 877 c 878 INTEGER ecrit_reg 879 SAVE ecrit_reg ! frequence d'ecriture 1049 c====================================================================== 1050 cIM200505 INTEGER ecrit_mth 1051 cIM200505 SAVE ecrit_mth ! frequence d'ecriture (fichier mensuel) 1052 c 1053 cIM cf. AM 081204 BEG 1054 c declarations pour sortir sur une sous-region 1055 integer imin_ins,imax_ins,jmin_ins,jmax_ins 1056 save imin_ins,imax_ins,jmin_ins,jmax_ins 1057 c real lonmin_ins,lonmax_ins,latmin_ins 1058 c s ,latmax_ins 1059 c data lonmin_ins,lonmax_ins,latmin_ins 1060 c s ,latmax_ins/ 1061 c valeurs initiales s -5.,20.,41.,55./ 1062 c s 100.,130.,-20.,20./ 1063 c s -180.,180.,-90.,90./ 1064 c====================================================================== 1065 cIM cf. AM 081204 END 1066 1067 c 1068 cIM200505 INTEGER ecrit_day 1069 cIM200505 SAVE ecrit_day ! frequence d'ecriture (fichier journalier) 1070 c 1071 cIM200505 INTEGER ecrit_ins 1072 cIM200505 SAVE ecrit_ins ! frequence d'ecriture (fichier instantane) 1073 c 1074 cIM200505 INTEGER ecrit_reg 1075 cIM200505 SAVE ecrit_reg ! frequence d'ecriture 880 1076 c 881 1077 integer itau_w ! pas de temps ecriture = itap + itau_phy … … 898 1094 c 899 1095 INTEGER ndex2d(iim*jjmp1),ndex3d(iim*jjmp1*klev) 1096 c 1097 cIM AMIP2 BEG 1098 REAL moyglo, mountor 1099 cIM 141004 BEG 1100 REAL zustrdr(klon), zvstrdr(klon) 1101 REAL zustrli(klon), zvstrli(klon) 1102 REAL zustrph(klon), zvstrph(klon) 1103 REAL aam, torsfc 1104 cIM 141004 END 1105 cIM 190504 BEG 1106 INTEGER ij, imp1jmp1 1107 PARAMETER(imp1jmp1=(iim+1)*jjmp1) 1108 REAL zx_tmp(imp1jmp1), airedyn(iim+1,jjmp1) 1109 REAL padyn(iim+1,jjmp1,klev+1) 1110 REAL dudyn(iim+1,jjmp1,klev) 1111 REAL rlatdyn(iim+1,jjmp1) 1112 cIM 190504 END 1113 LOGICAL ok_msk 1114 REAL msk(klon) 1115 cIM 1116 REAL airetot, pi 1117 REAL zm_wo(jjmp1, klev) 1118 cIM AMIP2 END 1119 c 900 1120 REAL zx_tmp_fi2d(klon) ! variable temporaire grille physique 901 1121 REAL zx_tmp_fi3d(klon,klev) ! variable temporaire pour champs 3D 1122 REAL*8 zx_tmp2_fi3d(klon,klev) ! variable temporaire pour champs 3D 902 1123 REAL zx_tmp_2d(iim,jjmp1), zx_tmp_3d(iim,jjmp1,klev) 903 1124 REAL zx_lon(iim,jjmp1), zx_lat(iim,jjmp1) 904 1125 c 905 INTEGER nid_day, nid_mth, nid_ins, nid_nmc 906 SAVE nid_day, nid_mth, nid_ins, nid_nmc 907 c 908 INTEGER nhori, nvert 1126 INTEGER nid_day, nid_mth, nid_ins, nid_nmc, nid_day_seri 1127 SAVE nid_day, nid_mth, nid_ins, nid_nmc, nid_day_seri 1128 c 1129 cIM 280405 BEG 1130 INTEGER nid_bilKPins, nid_bilKPave 1131 SAVE nid_bilKPins, nid_bilKPave 1132 c 1133 REAL ve_lay(klon,klev) ! transport meri. de l'energie a chaque niveau vert. 1134 REAL vq_lay(klon,klev) ! transport meri. de l'eau a chaque niveau vert. 1135 REAL ue_lay(klon,klev) ! transport zonal de l'energie a chaque niveau vert. 1136 REAL uq_lay(klon,klev) ! transport zonal de l'eau a chaque niveau vert. 1137 c 1138 cIM 280405 END 1139 c 1140 INTEGER nhori, nvert, nvert1 1141 c REAL zstok 909 1142 REAL zsto, zout, zsto1, zsto2 1143 c REAL zstoave, zstoin 1144 REAL zstophy, zstorad, zstohf, zstoday, zstomth 910 1145 real zjulian 911 1146 save zjulian … … 954 1189 REAL zu10m(klon), zv10m(klon) !vents a 10m moyennes s/1 maille 955 1190 CHARACTER*40 t2mincels, t2maxcels !t2m min., t2m max 1191 CHARACTER*40 tinst, tave, typeval 956 1192 cjq Aerosol effects (Johannes Quaas, 27/11/2003) 957 1193 REAL sulfate(klon, klev) ! SO4 aerosol concentration [ug/m3] … … 1041 1277 IF (debut) THEN 1042 1278 CALL suphec ! initialiser constantes et parametres phys. 1043 c 1044 cIM 050204 BEG 1045 DO i=1, klon 1046 nday_rain(i)=0. 1047 ENDDO 1048 cIM 050204 END 1049 c 1279 ENDIF 1280 1281 1050 1282 c====================================================================== 1051 cIM BEG1052 DO k=1, nlevENS1053 DO l=1, nlevSTD1054 c1055 bb=clevSTD(l)1056 c1057 IF(l.GE.2) THEN1058 aa=clevSTD(l)1059 bb=aa(1:lnblnk1(aa))1060 ENDIF1061 c1062 IF(bb.EQ.clev(k)) THEN1063 c print*,'k=',k,'l=',l,'clev=',clev(k)1064 indENS(k)=l1065 c print*,'k=',k,'l=',l,'clev=',clev(k),'indENS=',indENS(k)1066 ENDIF1067 c1068 ENDDO1069 ENDDO1070 c1071 ENDIF !debut1072 cIM END1073 1283 xjour = rjourvrai 1074 1284 c … … 1098 1308 itaprad = 0 1099 1309 CALL phyetat0 ("startphy.nc",dtime,co2_ppm_etat0,solaire_etat0, 1100 . rlat,rlon,pctsrf, ftsol,ftsoil,deltat,fqsurf,qsol,fsnow, 1310 . rlat,rlon,pctsrf, ftsol,ftsoil, 1311 cIM "slab" ocean 1312 . tslab,seaice, 1313 . fqsurf,qsol,fsnow, 1101 1314 . falbe, falblw, fevap, rain_fall,snow_fall,solsw, sollwdown, 1102 1315 . dlw,radsol,frugs,agesno,clesphy0, … … 1116 1329 ENDIF 1117 1330 1331 cIM cf. AM 081204 BEG 1332 PRINT*,'cycle_diurne3 =',cycle_diurne 1333 cIM cf. AM 081204 END 1334 c 1335 IF(ocean.NE.'force ') THEN 1336 ok_ocean=.TRUE. 1337 ENDIF 1118 1338 c 1119 1339 CALL printflag( tabcntr0,radpas,ok_ocean,ok_oasis ,ok_journe, … … 1191 1411 . lmt_pas 1192 1412 c 1193 ecrit_mth = NINT(86400./dtime *ecritphy) ! tous les ecritphy jours 1194 IF (ok_mensuel) THEN 1195 WRITE(lunout,*)'La frequence de sortie mensuelle est de ', 1196 . ecrit_mth 1197 ENDIF 1198 ecrit_day = NINT(86400./dtime *1.0) ! tous les jours 1199 IF (ok_journe) THEN 1200 WRITE(lunout,*)'La frequence de sortie journaliere est de ', 1201 . ecrit_day 1202 ENDIF 1413 cIM200505 ecrit_mth = NINT(86400./dtime *ecritphy) ! tous les ecritphy jours 1414 c IF (ok_mensuel) THEN 1415 c WRITE(lunout,*)'La frequence de sortie mensuelle est de ', 1416 c . ecrit_mth 1417 c ENDIF 1418 c ecrit_day = NINT(86400./dtime *1.0) ! tous les jours 1419 c IF (ok_journe) THEN 1420 c WRITE(lunout,*)'La frequence de sortie journaliere est de ', 1421 c . ecrit_day 1422 c ENDIF 1423 cIM 130904 BEG 1424 cIM 080205 ecrit_hf = 86400./dtime *0.25 ! toutes les 6h 1425 cIM 170305 1426 c ecrit_hf = 86400./dtime/12. ! toutes les 2h 1427 cIM 230305 1428 cIM200505 ecrit_hf = 86400./dtime *0.25 ! toutes les 6h 1429 c 1430 cIM200505 ecrit_hf2mth = ecrit_day/ecrit_hf*30 1431 c 1432 cIM200505 IF (ok_journe) THEN 1433 cIM200505 WRITE(lunout,*)'La frequence de sortie hf est de ', 1434 cIM200505 . ecrit_hf 1435 cIM200505 ENDIF 1436 cIM 130904 END 1203 1437 ccc ecrit_ins = NINT(86400./dtime *0.5) ! 2 fois par jour 1204 1438 ccc ecrit_ins = NINT(86400./dtime *0.25) ! 4 fois par jour 1205 ecrit_ins = NINT(86400./dtime/48.) ! a chaque pas de temps ==> PB. dans time_counter pour 1mois 1206 ecrit_ins = NINT(86400./dtime/12.) ! toutes les deux heures 1207 IF (ok_instan) THEN 1208 WRITE(lunout,*)'La frequence de sortie instant. est de ', 1209 . ecrit_ins 1210 ENDIF 1211 ecrit_reg = NINT(86400./dtime *0.25) ! 4 fois par jour 1212 IF (ok_region) THEN 1213 WRITE(lunout,*)'La frequence de sortie region est de ', 1214 . ecrit_reg 1215 ENDIF 1216 1439 c ecrit_ins = NINT(86400./dtime/48.) ! a chaque pas de temps ==> PB. dans time_counter pour 1mois 1440 c ecrit_ins = NINT(86400./dtime/12.) ! toutes les deux heures 1441 cIM200505 ecrit_ins = NINT(86400./dtime/8.) ! toutes les trois heures 1442 cIM200505 IF (ok_instan) THEN 1443 cIM200505 WRITE(lunout,*)'La frequence de sortie instant. est de ', 1444 cIM200505 . ecrit_ins 1445 cIM200505 ENDIF 1446 cIM200505 ecrit_reg = NINT(86400./dtime *0.25) ! 4 fois par jour 1447 cIM200505 IF (ok_region) THEN 1448 cIM200505 WRITE(lunout,*)'La frequence de sortie region est de ', 1449 cIM200505 . ecrit_reg 1450 cIM200505 ENDIF 1451 c 1452 cIM 230505 BEG 1453 ecrit_ins = NINT(ecrit_ins/dtime) 1454 ecrit_hf = NINT(ecrit_hf/dtime) 1455 c ecrit_hf2mth = 4*30 1456 ecrit_day = NINT(ecrit_day/dtime) 1457 ecrit_mth = NINT(ecrit_mth/dtime) 1458 ecrit_tra = NINT(ecrit_tra/dtime) 1459 ecrit_reg = NINT(ecrit_reg/dtime) 1460 cIM 230505 END 1217 1461 c 1218 1462 c Initialiser le couplage si necessaire … … 1229 1473 endif 1230 1474 c 1231 c1232 cIM1233 1475 capemaxcels = 't_max(X)' 1234 1476 t2mincels = 't_min(X)' 1235 1477 t2maxcels = 't_max(X)' 1236 1478 tinst = 'inst(X)' 1479 tave = 'ave(X)' 1480 cIM cf. AM 081204 BEG 1481 write(lunout,*)'AVANT HIST IFLAG_CON=',iflag_con 1482 cIM cf. AM 081204 END 1237 1483 c 1238 1484 c============================================================= … … 1248 1494 #ifdef histday 1249 1495 #include "ini_histday.h" 1496 cIM rajout diagnostiques bilan KP pour analyse MJO par Jun-Ichi Yano 1497 c#include "ini_bilKP_ins.h" 1498 c#include "ini_bilKP_ave.h" 1499 #include "ini_histday_seri.h" 1250 1500 #endif 1251 1501 … … 1273 1523 #include "ini_histISCCP.h" 1274 1524 #endif 1525 1526 c#undef histmthNMC 1527 c#define histmthNMC 1528 #ifdef histmthNMC 1529 #include "ini_histmthNMC.h" 1530 #endif 1531 1275 1532 #endif 1276 1533 … … 1504 1761 rmu0 = -999.999 1505 1762 ENDIF 1506 cIM BEG 1507 DO i=1, klon 1508 sunlit(i)=1 1509 IF(rmu0(i).EQ.0.) sunlit(i)=0 1510 nbsunlit(1,i)=FLOAT(sunlit(i)) 1511 ENDDO 1512 cIM END 1763 c 1513 1764 C Calcul de l'abedo moyen par maille 1514 1765 albsol(:)=0. … … 1545 1796 $ soil_model,cdmmax, cdhmax, 1546 1797 $ ksta, ksta_ter, ok_kzmin, ftsoil, qsol, 1547 $ paprs,pplay,radsol, fsnow,fqsurf,fevap,falbe,falblw, 1798 cIM BAD $ paprs,pplay,radsol, fsnow,fqsurf,fevap,falbe,falblw, 1799 $ paprs,pplay, fsnow,fqsurf,fevap,falbe,falblw, 1548 1800 $ fluxlat, 1549 cIM cf. JLD e rain_fall, snow_fall, solsw, sollw, sollwdown, fder,1550 e rain_fall, snow_fall,fsolsw, fsollw, sollwdown, fder,1801 e rain_fall, snow_fall, 1802 e fsolsw, fsollw, sollwdown, fder, 1551 1803 e rlon, rlat, cuphy, cvphy, frugs, 1552 1804 e debut, lafin, agesno,rugoro , … … 1556 1808 s dsens, devap, 1557 1809 s ycoefh,yu1,yv1, t2m, q2m, u10m, v10m, 1558 s fqcalving, ffonte, run_off_lic_0) 1810 cIM cf. AM 081204 BEG 1811 s pblh,capCL,oliqCL,cteiCL,pblT, 1812 s therm,trmb1,trmb2,trmb3,plcl, 1813 cIM cf. AM 081204 END 1814 s fqcalving, ffonte, run_off_lic_0, 1815 cIM "slab" ocean 1816 s fluxo, fluxg, tslab, seaice) 1559 1817 c 1560 1818 CXXX PB … … 1623 1881 zxffonte(i) = 0.0 1624 1882 zxfqcalving(i) = 0.0 1883 cIM cf. AM 081204 BEG 1884 c 1885 s_pblh(i) = 0.0 1886 s_lcl(i) = 0.0 1887 s_capCL(i) = 0.0 1888 s_oliqCL(i) = 0.0 1889 s_cteiCL(i) = 0.0 1890 s_pblT(i) = 0.0 1891 s_therm(i) = 0.0 1892 s_trmb1(i) = 0.0 1893 s_trmb2(i) = 0.0 1894 s_trmb3(i) = 0.0 1625 1895 c 1626 1896 IF ( abs( pctsrf(i, is_ter) + pctsrf(i, is_lic) + … … 1649 1919 zxfqcalving(i) = zxfqcalving(i) + 1650 1920 . fqcalving(i,nsrf)*pctsrf(i,nsrf) 1921 cIM cf. AM 081204 BEG 1922 s_pblh(i) = s_pblh(i) + pblh(i,nsrf)*pctsrf(i,nsrf) 1923 s_lcl(i) = s_lcl(i) + plcl(i,nsrf)*pctsrf(i,nsrf) 1924 s_capCL(i) = s_capCL(i) + capCL(i,nsrf) *pctsrf(i,nsrf) 1925 s_oliqCL(i) = s_oliqCL(i) + oliqCL(i,nsrf) *pctsrf(i,nsrf) 1926 s_cteiCL(i) = s_cteiCL(i) + cteiCL(i,nsrf) *pctsrf(i,nsrf) 1927 s_pblT(i) = s_pblT(i) + pblT(i,nsrf) *pctsrf(i,nsrf) 1928 s_therm(i) = s_therm(i) + therm(i,nsrf) *pctsrf(i,nsrf) 1929 s_trmb1(i) = s_trmb1(i) + trmb1(i,nsrf) *pctsrf(i,nsrf) 1930 s_trmb2(i) = s_trmb2(i) + trmb2(i,nsrf) *pctsrf(i,nsrf) 1931 s_trmb3(i) = s_trmb3(i) + trmb3(i,nsrf) *pctsrf(i,nsrf) 1651 1932 c ENDIF 1652 1933 ENDDO … … 1668 1949 IF (pctsrf(i,nsrf) .LT. epsfra) 1669 1950 . fqcalving(i,nsrf) = zxfqcalving(i) 1951 cIM cf. AM 081204 BEG 1952 IF (pctsrf(i,nsrf) .LT. epsfra) pblh(i,nsrf)=s_pblh(i) 1953 IF (pctsrf(i,nsrf) .LT. epsfra) plcl(i,nsrf)=s_lcl(i) 1954 IF (pctsrf(i,nsrf) .LT. epsfra) capCL(i,nsrf)=s_capCL(i) 1955 IF (pctsrf(i,nsrf) .LT. epsfra) oliqCL(i,nsrf)=s_oliqCL(i) 1956 IF (pctsrf(i,nsrf) .LT. epsfra) cteiCL(i,nsrf)=s_cteiCL(i) 1957 IF (pctsrf(i,nsrf) .LT. epsfra) pblT(i,nsrf)=s_pblT(i) 1958 IF (pctsrf(i,nsrf) .LT. epsfra) therm(i,nsrf)=s_therm(i) 1959 IF (pctsrf(i,nsrf) .LT. epsfra) trmb1(i,nsrf)=s_trmb1(i) 1960 IF (pctsrf(i,nsrf) .LT. epsfra) trmb2(i,nsrf)=s_trmb2(i) 1961 IF (pctsrf(i,nsrf) .LT. epsfra) trmb3(i,nsrf)=s_trmb3(i) 1670 1962 ENDDO 1671 1963 ENDDO … … 2040 2332 c 1. NUAGES CONVECTIFS 2041 2333 c 2042 IF (iflag_cldcon.eq.-1) THEN ! seulement pour Tiedtke 2334 cIM cf FH 2335 c IF (iflag_cldcon.eq.-1) THEN ! seulement pour Tiedtke 2336 IF (iflag_cldcon.le.-1) THEN ! seulement pour Tiedtke 2337 snow_tiedtke=0. 2338 c print*,'avant calcul de la pseudo precip ' 2339 c print*,'iflag_cldcon',iflag_cldcon 2340 if (iflag_cldcon.eq.-1) then 2341 rain_tiedtke=rain_con 2342 else 2343 c print*,'calcul de la pseudo precip ' 2344 rain_tiedtke=0. 2345 c print*,'calcul de la pseudo precip 0' 2346 do k=1,klev 2347 do i=1,klon 2348 if (d_q_con(i,k).lt.0.) then 2349 rain_tiedtke(i)=rain_tiedtke(i)-d_q_con(i,k)/pdtphys 2350 s *(paprs(i,k)-paprs(i,k+1))/rg 2351 endif 2352 enddo 2353 enddo 2354 endif 2355 c 2356 c call dump2d(iim,jjm,rain_tiedtke(2:klon-1),'PSEUDO PRECIP ') 2357 c 2043 2358 2044 2359 c Nuages diagnostiques pour Tiedtke 2045 2360 CALL diagcld1(paprs,pplay, 2046 . rain_con,snow_con,ibas_con,itop_con, 2361 cIM cf FH . rain_con,snow_con,ibas_con,itop_con, 2362 . rain_tiedtke,snow_tiedtke,ibas_con,itop_con, 2047 2363 . diafra,dialiq) 2048 2364 DO k = 1, klev … … 2072 2388 enddo 2073 2389 2390 c 2074 2391 cIM calcul nuages par le simulateur ISCCP 2392 c 2075 2393 IF (ok_isccp) THEN 2076 cIM calcul tau. emi nuages convectifs 2077 convfra(:,:)=rnebcon(:,:) 2078 convliq(:,:)=rnebcon(:,:)*clwcon(:,:) 2079 CALL newmicro (paprs, pplay,ok_newmicro, 2080 . t_seri, convliq, convfra, dtau_c, dem_c, 2081 . cldh_c, cldl_c, cldm_c, cldt_c, cldq_c, 2082 . flwp_c, fiwp_c, flwc_c, fiwc_c, 2083 e ok_aie, 2084 e sulfate, sulfate_pi, 2085 e bl95_b0, bl95_b1, 2086 s cldtaupi, re, fl) 2087 c 2088 cIM calcul tau. emi nuages startiformes 2089 CALL newmicro (paprs, pplay,ok_newmicro, 2090 . t_seri, cldliq, cldfra, dtau_s, dem_s, 2091 . cldh_s, cldl_s, cldm_s, cldt_s, cldq_s, 2092 . flwp_s, fiwp_s, flwc_s, fiwc_s, 2093 e ok_aie, 2094 e sulfate, sulfate_pi, 2095 e bl95_b0, bl95_b1, 2096 s cldtaupi, re, fl) 2097 c 2098 cldtot(:,:)=min(max(cldfra(:,:),rnebcon(:,:)),1.) 2099 2100 cIM inversion des niveaux de pression ==> de haut en bas 2101 CALL haut2bas(klon, klev, pplay, pfull) 2102 CALL haut2bas(klon, klev, q_seri, qv) 2103 CALL haut2bas(klon, klev, cldtot, cc) 2104 CALL haut2bas(klon, klev, rnebcon, conv) 2105 CALL haut2bas(klon, klev, dtau_s, dtau_sH2B) 2106 CALL haut2bas(klon, klev, dtau_c, dtau_cH2B) 2107 CALL haut2bas(klon, klev, t_seri, at) 2108 CALL haut2bas(klon, klev, dem_s, dem_sH2B) 2109 CALL haut2bas(klon, klev, dem_c, dem_cH2B) 2110 CALL haut2bas(klon, klevp1, paprs, phalf) 2111 2112 c open(99,file='tautab.bin',access='sequential', 2113 c $ form='unformatted',status='old') 2114 c read(99) tautab 2115 2116 cIM210503 2117 IF (debut) THEN 2118 open(99,file='tautab.formatted', FORM='FORMATTED') 2119 read(99,'(f30.20)') tautab 2120 close(99) 2121 c 2122 open(99,file='invtau.formatted',form='FORMATTED') 2123 read(99,'(i10)') invtau 2124 close(99) 2125 c 2126 cIM: calcul coordonnees regions pour statistiques distribution 2127 cIM: nuages en ftion du regime dynamique pour regions oceaniques 2128 IF (ok_regdyn) THEN !histREGDYN 2129 nsrf=3 2130 DO nreg=1, nbregdyn 2131 DO i=1, klon 2132 2133 c IF (debut) THEN 2134 IF(rlon(i).LT.0.) THEN 2135 rlonPOS(i)=rlon(i)+360. 2136 ELSE 2137 rlonPOS(i)=rlon(i) 2138 ENDIF 2139 c ENDIF 2140 2141 pct_ocean(i,nreg)=0 2142 2143 c test si c'est 1 point d'ocean 2144 IF(pctsrf(i,nsrf).EQ.1.) THEN 2145 2146 IF(nreg.EQ.1) THEN 2147 2148 c TROP 2149 IF(rlat(i).GE.-30.AND.rlat(i).LE.30.) THEN 2150 pct_ocean(i,nreg)=1 2151 ENDIF 2152 2153 c PACIFIQUE NORD 2154 ELSEIF(nreg.EQ.2) THEN 2155 IF(rlat(i).GE.40.AND.rlat(i).LE.60.) THEN 2156 IF(rlonPOS(i).GE.160..AND.rlonPOS(i).LE.235.) THEN 2157 pct_ocean(i,nreg)=1 2158 ENDIF 2159 ENDIF 2160 c CALIFORNIE ST-CU 2161 ELSEIF(nreg.EQ.3) THEN 2162 IF(rlonPOS(i).GE.220..AND.rlonPOS(i).LE.250.) THEN 2163 IF(rlat(i).GE.15.AND.rlat(i).LE.35.) THEN 2164 pct_ocean(i,nreg)=1 2165 ENDIF 2166 ENDIF 2167 c HAWAI 2168 ELSEIF(nreg.EQ.4) THEN 2169 IF(rlonPOS(i).GE.180..AND.rlonPOS(i).LE.220.) THEN 2170 IF(rlat(i).GE.15.AND.rlat(i).LE.35.) THEN 2171 pct_ocean(i,nreg)=1 2172 ENDIF 2173 ENDIF 2174 c WARM POOL 2175 ELSEIF(nreg.EQ.5) THEN 2176 IF(rlonPOS(i).GE.70..AND.rlonPOS(i).LE.150.) THEN 2177 IF(rlat(i).GE.-5.AND.rlat(i).LE.20.) THEN 2178 pct_ocean(i,nreg)=1 2179 ENDIF 2180 ENDIF 2181 ENDIF !nbregdyn 2182 c TROP 2183 c IF(rlat(i).GE.-30.AND.rlat(i).LE.30.) THEN 2184 c pct_ocean(i)=.TRUE. 2185 c WRITE(*,*) 'pct_ocean =',i, rlon(i), rlat(i) 2186 c ENDIF !lon 2187 c ENDIF !lat 2188 2189 ENDIF !pctsrf 2190 ENDDO !klon 2191 ENDDO !nbregdyn 2192 ENDIF !ok_regdyn 2193 2194 cIM somme de toutes les nhistoW BEG 2195 DO nreg = 1, nbregdyn 2196 DO k = 1, kmaxm1 2197 DO l = 1, lmaxm1 2198 DO iw = 1, iwmax 2199 nhistoWt(k,l,iw,nreg)=0. 2200 ENDDO !iw 2201 ENDDO !l 2202 ENDDO !k 2203 ENDDO !nreg 2204 cIM somme de toutes les nhistoW END 2205 ENDIF 2206 cIM: initialisation de seed 2207 DO i=1, klon 2208 seed(i)=i+100 2209 ENDDO 2210 2211 cIM: pas de debug, debugcol 2212 debug=0 2213 debugcol=0 2214 cIM260503 2215 c o500 ==> distribution nuage ftion du regime dynamique a 500 hPa 2216 DO k=1, klevm1 2217 kp1=k+1 2218 c PRINT*,'k, presnivs',k,presnivs(k), presnivs(kp1) 2219 if(presnivs(k).GT.50000.AND.presnivs(kp1).LT.50000.) THEN 2220 DO i=1, klon 2221 o500(i)=omega(i,k)*RDAY/100. 2222 c if(i.EQ.1) print*,' 500hPa lev',k,presnivs(k),presnivs(kp1) 2223 ENDDO 2224 GOTO 1000 2225 endif 2226 1000 continue 2227 ENDDO 2228 2229 CALL ISCCP_CLOUD_TYPES( 2230 & debug, 2231 & debugcol, 2232 & klon, 2233 & sunlit, 2234 & klev, 2235 & ncol, 2236 & seed, 2237 & pfull, 2238 & phalf, 2239 & qv, cc, conv, dtau_sH2B, dtau_cH2B, 2240 & top_height, 2241 & overlap, 2242 & tautab, 2243 & invtau, 2244 & ztsol, 2245 & emsfc_lw, 2246 & at, dem_sH2B, dem_cH2B, 2247 & fq_isccp, 2248 & totalcldarea, 2249 & meanptop, 2250 & meantaucld, 2251 & boxtau, 2252 & boxptop) 2253 2254 2255 c passage de la grille (klon,7,7) a (iim,jjmp1,7,7) 2256 DO l=1, lmaxm1 2257 DO k=1, kmaxm1 2258 DO i=1, iim 2259 fq4d(i,1,k,l)=fq_isccp(1,k,l) 2260 ENDDO 2261 DO j=2, jjm 2262 DO i=1, iim 2263 ig=i+1+(j-2)*iim 2264 fq4d(i,j,k,l)=fq_isccp(ig,k,l) 2265 ENDDO 2266 ENDDO 2267 DO i=1, iim 2268 fq4d(i,jjmp1,k,l)=fq_isccp(klon,k,l) 2269 ENDDO 2270 ENDDO 2271 ENDDO 2272 c 2273 DO l=1, lmaxm1 2274 DO k=1, kmaxm1 2275 DO j=1, jjmp1 2276 DO i=1, iim 2277 ni=(i-1)*lmaxm1+l 2278 nj=(j-1)*kmaxm1+k 2279 fq3d(ni,nj)=fq4d(i,j,k,l) 2280 ENDDO 2281 ENDDO 2282 ENDDO 2283 ENDDO 2284 2285 c 2286 c calculs statistiques distribution nuage ftion du regime dynamique 2287 c 2288 c Ce calcul doit etre fait a partir de valeurs mensuelles ?? 2289 CALL histo_o500_pctau(nbregdyn,pct_ocean,o500,fq_isccp, 2290 &histoW,nhistoW) 2291 c 2292 c nhistoWt = somme de toutes les nhistoW 2293 DO nreg=1, nbregdyn 2294 DO k = 1, kmaxm1 2295 DO l = 1, lmaxm1 2296 DO iw = 1, iwmax 2297 nhistoWt(k,l,iw,nreg)=nhistoWt(k,l,iw,nreg)+ 2298 & nhistoW(k,l,iw,nreg) 2299 ENDDO 2300 ENDDO 2301 ENDDO 2302 ENDDO 2303 c 2394 #include "calcul_simulISCCP.h" 2304 2395 ENDIF !ok_isccp 2305 2396 … … 2571 2662 e igwd,idx,itest, 2572 2663 e t_seri, u_seri, v_seri, 2573 s zulow, zvlow, zustr, zvstr, 2664 cIM 141004 s zulow, zvlow, zustr, zvstr, 2665 s zulow, zvlow, zustrdr, zvstrdr, 2574 2666 s d_t_oro, d_u_oro, d_v_oro) 2575 2667 c … … 2603 2695 e itest, 2604 2696 e t_seri, u_seri, v_seri, 2605 s zulow, zvlow, zustr , zvstr,2697 s zulow, zvlow, zustrli, zvstrli, 2606 2698 s d_t_lif, d_u_lif, d_v_lif) 2607 2699 c … … 2616 2708 c 2617 2709 ENDIF ! fin de test sur ok_orolf 2710 c 2711 cIM cf. FLott BEG 2712 C STRESS NECESSAIRES: TOUTE LA PHYSIQUE 2713 2714 DO i = 1, klon 2715 zustrph(i)=0. 2716 zvstrph(i)=0. 2717 ENDDO 2718 DO k = 1, klev 2719 DO i = 1, klon 2720 zustrph(i)=zustrph(i)+(u_seri(i,k)-u(i,k))/dtime* 2721 c (paprs(i,k)-paprs(i,k+1))/rg 2722 zvstrph(i)=zvstrph(i)+(v_seri(i,k)-v(i,k))/dtime* 2723 c (paprs(i,k)-paprs(i,k+1))/rg 2724 ENDDO 2725 ENDDO 2726 c 2727 cIM calcul composantes axiales du moment angulaire et couple des montagnes 2728 c 2729 CALL aaam_bud (27,klon,klev,rjourvrai,gmtime, 2730 C ra,rg,romega, 2731 C rlat,rlon,pphis, 2732 C zustrdr,zustrli,zustrph, 2733 C zvstrdr,zvstrli,zvstrph, 2734 C paprs,u,v, 2735 C aam, torsfc) 2736 cIM cf. FLott END 2618 2737 c 2619 2738 IF (if_ebil.ge.2) THEN … … 2712 2831 s ve, vq, ue, uq) 2713 2832 c 2833 cIM diag. bilKP 2834 c 2835 CALL transp_lay (paprs,zxtsol, 2836 e t_seri, q_seri, u_seri, v_seri, zphi, 2837 s ve_lay, vq_lay, ue_lay, uq_lay) 2838 c 2714 2839 c Accumuler les variables a stocker dans les fichiers histoire: 2715 c2716 c2717 2840 c 2718 2841 c+jld ec_conser … … 2750 2873 c======================================================================= 2751 2874 2752 c Interpollation sur quelques niveaux de pression 2753 c ----------------------------------------------- 2754 c 2755 c on moyenne mensuellement les champs 3D et on les interpole sur les niveaux STD 2756 c if(itap.EQ.1.OR.itap.EQ.13.OR.itap.EQ.25.OR.itap.EQ.37) THEN 2757 c if(MOD(itap,12).EQ.1) THEN 2758 cIM 120304 END 2759 DO k=1, nlevSTD 2760 call plevel(klon,klev,.true.,pplay,rlevSTD(k), 2761 . t_seri,tlevSTD(:,k)) 2762 call plevel(klon,klev,.false.,pplay,rlevSTD(k), 2763 . u_seri,ulevSTD(:,k)) 2764 call plevel(klon,klev,.false.,pplay,rlevSTD(k), 2765 . v_seri,vlevSTD(:,k)) 2766 call plevel(klon,klev,.false.,pplay,rlevSTD(k), 2767 . zphi,philevSTD(:,k)) 2768 call plevel(klon,klev,.false.,pplay,rlevSTD(k), 2769 . qx(:,:,ivap),qlevSTD(:,k)) 2770 call plevel(klon,klev,.false.,pplay,rlevSTD(k), 2771 . zx_rh,rhlevSTD(:,k)) 2772 ENDDO !nlevSTD 2773 c ENSEMBLES BEG 2774 DO k=1, nlevENS 2775 cIM 170304 2776 tlev(:,k)=tlevSTD(:,indENS(k)) 2777 ulev(:,k)=ulevSTD(:,indENS(k)) 2778 vlev(:,k)=vlevSTD(:,indENS(k)) 2779 philev(:,k)=philevSTD(:,indENS(k)) 2780 qlev(:,k)=qlevSTD(:,indENS(k)) 2781 rhlev(:,k)=rhlevSTD(:,indENS(k)) 2782 c 2783 call plevel(klon,klevp1,.true.,paprs,rlevENS(k), 2784 . omega,wlev(:,k)) 2785 c 2786 ENDDO !k=1, nlevENS 2787 cIM 100304 BEG 2788 cIM interpolation a chaque pas de temps du SWup(clr) et SWdn(clr) a 200 hPa 2789 call plevel(klon,klevp1,.true.,paprs,20000., 2790 $ swdn0,SWdn200clr) 2791 call plevel(klon,klevp1,.false.,paprs,20000., 2792 $ swdn,SWdn200) 2793 call plevel(klon,klevp1,.false.,paprs,20000., 2794 $ swup0,SWup200clr) 2795 call plevel(klon,klevp1,.false.,paprs,20000., 2796 $ swup,SWup200) 2797 c 2798 call plevel(klon,klevp1,.false.,paprs,20000., 2799 $ lwdn0,LWdn200clr) 2800 call plevel(klon,klevp1,.false.,paprs,20000., 2801 $ lwdn,LWdn200) 2802 call plevel(klon,klevp1,.false.,paprs,20000., 2803 $ lwup0,LWup200clr) 2804 call plevel(klon,klevp1,.false.,paprs,20000., 2805 $ lwup,LWup200) 2806 c 2807 cIM 100304 END 2808 c 2809 c ENSEMBLES END 2875 cIM Interpolation sur les niveaux de pression du NMC 2876 c ------------------------------------------------- 2877 c 2878 #include "calcul_STDlev.h" 2810 2879 c 2811 2880 c slp sea level pressure … … 2821 2890 ENDDO 2822 2891 c 2823 cIM sorties bilans energie cinetique et potentielle MJO 2824 DO k = 1, klev 2825 DO i = 1, klon 2826 d_u_oli(i,k) = d_u_oro(i,k) + d_u_lif(i,k) 2827 d_v_oli(i,k) = d_v_oro(i,k) + d_v_lif(i,k) 2828 ENDDO 2829 ENDDO 2830 c 2831 IF (MOD(itap-1,lmt_pas) .EQ. 0) THEN 2832 cIM PRINT *,' PHYS cond julien ',julien 2833 c CALL ozonecm( FLOAT(julien), rlat, paprs, wo) 2834 DO i = 1, klon 2835 total_rain(i)=rain_fall(i)+snow_fall(i) 2836 IF(total_rain(i).GT.0.) nday_rain(i)=nday_rain(i)+1. 2837 ENDDO 2838 c 2839 ENDIF 2840 c surface terre 2841 IF (debut) THEN 2842 DO i=1, klon 2843 IF(pctsrf_new(i,is_ter).GT.0.) THEN 2844 paire_ter(i)=airephy(i)*pctsrf_new(i,is_ter) 2845 ENDIF 2846 ENDDO 2847 ENDIF 2848 cIM 050204 END 2849 2892 cIM initialisation + calculs divers diag AMIP2 2893 c 2894 #include "calcul_divers.h" 2895 c 2850 2896 c============================================================= 2851 2897 c … … 2872 2918 ENDIF 2873 2919 c 2920 cIM rajout diagnostiques bilan KP pour analyse MJO par Jun-Ichi Yano 2921 c#include "write_bilKP_ins.h" 2922 c#include "write_bilKP_ave.h" 2923 c 2874 2924 c Sauvegarder les valeurs de t et q a la fin de la physique: 2875 2925 c … … 2893 2943 #ifdef histday 2894 2944 #include "write_histday.h" 2945 #include "write_histday_seri.h" 2895 2946 #endif 2896 2947 … … 2910 2961 #include "write_histISCCP.h" 2911 2962 #endif 2963 2912 2964 2913 2965 #ifdef histmthNMC … … 2957 3009 ccc IF (ok_oasis) CALL quitcpl 2958 3010 CALL phyredem ("restartphy.nc",dtime,radpas, 2959 . rlat, rlon, pctsrf, ftsol, ftsoil, deltat, fqsurf, qsol, 3011 . rlat, rlon, pctsrf, ftsol, ftsoil, 3012 cIM "slab" ocean 3013 . tslab, seaice, 3014 . fqsurf, qsol, 2960 3015 . fsnow, falbe,falblw, fevap, rain_fall, snow_fall, 2961 3016 . solsw, sollwdown,dlw,
Note: See TracChangeset
for help on using the changeset viewer.