Changeset 766 for LMDZ4/trunk/libf/phylmd/physiq.F
- Timestamp:
- Jun 4, 2007, 4:34:47 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk/libf/phylmd/physiq.F
r719 r766 3 3 ! 4 4 c 5 c#define IO_DEBUG 6 5 7 SUBROUTINE physiq (nlon,nlev,nqmax, 6 8 . debut,lafin,rjourvrai,gmtime,pdtphys, … … 16 18 17 19 USE ioipsl 18 USE histcom 19 #ifdef INCA 20 USE chemshut 21 USE species_names 22 #ifdef INCA_CH4 23 ! USE obs_pos 24 #endif 25 #endif 20 USE comgeomphy 21 USE write_field_phy 22 USE dimphy 23 USE iophy 24 USE misc_mod, mydebug=>debug 25 USE vampir 26 26 IMPLICIT none 27 27 c====================================================================== … … 37 37 c CLEFS CPP POUR LES IO 38 38 c ===================== 39 #define histins 40 #define histhf 41 #define histday 39 c#define histhf 40 c#define histday 42 41 #define histmth 43 #define histmthNMC 44 #define histISCCP 42 c#define histins 43 c#define histmthNMC 44 c#define histISCCP 45 45 c====================================================================== 46 46 c modif ( P. Le Van , 12/10/98 ) … … 80 80 integer jjmp1 81 81 parameter (jjmp1=jjm+1-1/jjm) 82 #include "dimphy.h" 82 integer iip1 83 parameter (iip1=iim+1) 84 cym#include "dimphy.h" 83 85 #include "regdim.h" 84 86 #include "indicesol.h" … … 88 90 #include "logic.h" 89 91 #include "temps.h" 90 #include "comgeomphy.h"92 cym#include "comgeomphy.h" 91 93 #include "advtrac.h" 92 94 #include "iniprint.h" … … 106 108 #include "oasis.h" 107 109 INTEGER,SAVE :: npas, nexca 110 c$OMP THREADPRIVATE(npas, nexca) 108 111 logical rnpb 109 112 #ifdef INCA … … 115 118 character*6 ocean 116 119 SAVE ocean 117 120 c$OMP THREADPRIVATE(ocean) 118 121 c parameter (ocean = 'force ') 119 122 c parameter (ocean = 'couple') 120 123 logical ok_ocean 121 124 SAVE ok_ocean 125 c$OMP THREADPRIVATE(ok_ocean) 122 126 c 123 127 cIM "slab" ocean … … 137 141 logical ok_veget 138 142 save ok_veget 143 c$OMP THREADPRIVATE(ok_veget) 139 144 c parameter (ok_veget = .true.) 140 145 c parameter (ok_veget = .false.) … … 156 161 LOGICAL ok_journe ! sortir le fichier journalier 157 162 save ok_journe 163 c$OMP THREADPRIVATE(ok_journe) 158 164 c PARAMETER (ok_journe=.true.) 159 165 c 160 166 LOGICAL ok_mensuel ! sortir le fichier mensuel 161 167 save ok_mensuel 168 c$OMP THREADPRIVATE(ok_mensuel) 162 169 c PARAMETER (ok_mensuel=.true.) 163 170 c 164 171 LOGICAL ok_instan ! sortir le fichier instantane 165 172 save ok_instan 173 c$OMP THREADPRIVATE(ok_instan) 166 174 c PARAMETER (ok_instan=.true.) 167 175 c … … 172 180 REAL fm_therm(klon,klev+1) 173 181 REAL entr_therm(klon,klev) 174 real q2(klon,klev+1,nbsrf) 175 save q2 182 real,allocatable,save :: q2(:,:,:) 183 c$OMP THREADPRIVATE(q2) 184 cym save q2 176 185 c====================================================================== 177 186 c … … 207 216 REAL qx(klon,klev,nqmax) 208 217 209 REAL t_ancien(klon,klev), q_ancien(klon,klev) 210 SAVE t_ancien, q_ancien 218 REAL,allocatable,save :: t_ancien(:,:), q_ancien(:,:) 219 c$OMP THREADPRIVATE(t_ancien, q_ancien) 220 cym SAVE t_ancien, q_ancien 211 221 LOGICAL ancien_ok 212 222 SAVE ancien_ok 213 223 c$OMP THREADPRIVATE(ancien_ok) 214 224 REAL d_t_dyn(klon,klev) 215 225 REAL d_q_dyn(klon,klev) … … 233 243 CHARACTER*3 ctetaSTD(nbteta) 234 244 DATA ctetaSTD/'350','380','405'/ 245 SAVE ctetaSTD 246 c$OMP THREADPRIVATE(ctetaSTD) 235 247 REAL rtetaSTD(nbteta) 236 248 DATA rtetaSTD/350., 380., 405./ 249 SAVE rtetaSTD 250 c$OMP THREADPRIVATE(rtetaSTD) 237 251 c 238 252 REAL PVteta(klon,nbteta) … … 241 255 cMI Amip2 PV a theta constante 242 256 243 INTEGER klevp1, klevm1 244 PARAMETER(klevp1=klev+1,klevm1=klev-1) 245 #include "raddim.h" 246 c 247 REAL swdn0(klon,klevp1), swdn(klon,klevp1) 248 REAL swup0(klon,klevp1), swup(klon,klevp1) 249 SAVE swdn0 , swdn, swup0, swup 250 c 251 REAL SWdn200clr(klon), SWdn200(klon) 252 REAL SWup200clr(klon), SWup200(klon) 253 SAVE SWdn200clr, SWdn200, SWup200clr, SWup200 254 c 255 REAL lwdn0(klon,klevp1), lwdn(klon,klevp1) 256 REAL lwup0(klon,klevp1), lwup(klon,klevp1) 257 SAVE lwdn0 , lwdn, lwup0, lwup 258 c 259 REAL LWdn200clr(klon), LWdn200(klon) 260 REAL LWup200clr(klon), LWup200(klon) 261 SAVE LWdn200clr, LWdn200, LWup200clr, LWup200 262 c 263 REAL LWdnTOA(klon), LWdnTOAclr(klon) 264 SAVE LWdnTOA, LWdnTOAclr 257 cym INTEGER klevp1, klevm1 258 cym PARAMETER(klevp1=klev+1,klevm1=klev-1) 259 cym#include "raddim.h" 260 c 261 262 REAL,allocatable,save :: swdn0(:,:), swdn(:,:) 263 REAL,allocatable,save :: swup0(:,:), swup(:,:) 264 c$OMP THREADPRIVATE(swdn0 , swdn, swup0, swup) 265 cym SAVE swdn0 , swdn, swup0, swup 266 c 267 REAL,allocatable,save :: SWdn200clr(:), SWdn200(:) 268 REAL,allocatable,save :: SWup200clr(:), SWup200(:) 269 c$OMP THREADPRIVATE(SWdn200clr, SWdn200, SWup200clr, SWup200) 270 cym SAVE SWdn200clr, SWdn200, SWup200clr, SWup200 271 c 272 REAL,allocatable,save :: lwdn0(:,:), lwdn(:,:) 273 REAL,allocatable,save :: lwup0(:,:), lwup(:,:) 274 c$OMP THREADPRIVATE(lwdn0 , lwdn, lwup0, lwup) 275 cym SAVE lwdn0 , lwdn, lwup0, lwup 276 c 277 REAL,allocatable,save :: LWdn200clr(:), LWdn200(:) 278 REAL,allocatable,save :: LWup200clr(:), LWup200(:) 279 c$OMP THREADPRIVATE(LWdn200clr, LWdn200, LWup200clr, LWup200) 280 cym SAVE LWdn200clr, LWdn200, LWup200clr, LWup200 281 c 282 REAL,allocatable,save :: LWdnTOA(:), LWdnTOAclr(:) 283 c$OMP THREADPRIVATE(LWdnTOA, LWdnTOAclr) 284 cym SAVE LWdnTOA, LWdnTOAclr 265 285 c 266 286 cIM Amip2 … … 273 293 .60000., 50000., 40000., 30000., 25000., 20000., 274 294 .15000., 10000., 7000., 5000., 3000., 2000., 1000./ 295 SAVE rlevstd 296 c$OMP THREADPRIVATE(rlevSTD) 275 297 CHARACTER*4 clevSTD(nlevSTD) 276 298 DATA clevSTD/'1000','925 ','850 ','700 ','600 ', 277 299 .'500 ','400 ','300 ','250 ','200 ','150 ','100 ', 278 300 .'70 ','50 ','30 ','20 ','10 '/ 301 SAVE clevSTD 302 c$OMP THREADPRIVATE(clevSTD) 279 303 c 280 304 CHARACTER*3 bb2 … … 290 314 PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC 291 315 c 292 REAL tsumSTD(klon,nlevSTD,nout) 293 REAL usumSTD(klon,nlevSTD,nout), vsumSTD(klon,nlevSTD,nout) 294 REAL wsumSTD(klon,nlevSTD,nout), phisumSTD(klon,nlevSTD,nout) 295 REAL qsumSTD(klon,nlevSTD,nout), rhsumSTD(klon,nlevSTD,nout) 296 c 297 SAVE tsumSTD, usumSTD, vsumSTD, wsumSTD, phisumSTD, 298 . qsumSTD, rhsumSTD 316 REAL,SAVE,ALLOCATABLE :: tsumSTD(:,:,:) 317 REAL,SAVE,ALLOCATABLE :: usumSTD(:,:,:), vsumSTD(:,:,:) 318 REAL,SAVE,ALLOCATABLE :: wsumSTD(:,:,:), phisumSTD(:,:,:) 319 REAL,SAVE,ALLOCATABLE :: qsumSTD(:,:,:), rhsumSTD(:,:,:) 320 c 321 cym SAVE tsumSTD, usumSTD, vsumSTD, wsumSTD, phisumSTD, 322 cym . qsumSTD, rhsumSTD 323 c$OMP THREADPRIVATE(tsumSTD, usumSTD, vsumSTD, wsumSTD, phisumSTD) 324 c$OMP THREADPRIVATE(qsumSTD, rhsumSTD) 299 325 c 300 326 logical oknondef(klon,nlevSTD,nout) 301 real tnondef(klon,nlevSTD,nout) 302 save tnondef 327 real,SAVE,ALLOCATABLE :: tnondef(:,:,:) 328 c$OMP THREADPRIVATE(tnondef) 329 cym save tnondef 303 330 c 304 331 c les produits uvSTD, vqSTD, .., T2STD sont calcules … … 311 338 real wqSTD(klon,nlevSTD) 312 339 c 313 real uvsumSTD(klon,nlevSTD,nout)314 real vqsumSTD(klon,nlevSTD,nout)315 real vTsumSTD(klon,nlevSTD,nout)316 real wqsumSTD(klon,nlevSTD,nout)340 real,save,allocatable :: uvsumSTD(:,:,:) 341 real,save,allocatable :: vqsumSTD(:,:,:) 342 real,save,allocatable :: vTsumSTD(:,:,:) 343 real,save,allocatable :: wqsumSTD(:,:,:) 317 344 c 318 345 real vphiSTD(klon,nlevSTD) … … 322 349 real T2STD(klon,nlevSTD) 323 350 c 324 real vphisumSTD(klon,nlevSTD,nout) 325 real wTsumSTD(klon,nlevSTD,nout) 326 real u2sumSTD(klon,nlevSTD,nout) 327 real v2sumSTD(klon,nlevSTD,nout) 328 real T2sumSTD(klon,nlevSTD,nout) 329 c 330 SAVE uvsumSTD, vqsumSTD, vTsumSTD, wqsumSTD 331 SAVE vphisumSTD, wTsumSTD, u2sumSTD, v2sumSTD, T2sumSTD 351 real,save,allocatable :: vphisumSTD(:,:,:) 352 real,save,allocatable :: wTsumSTD(:,:,:) 353 real,save,allocatable :: u2sumSTD(:,:,:) 354 real,save,allocatable :: v2sumSTD(:,:,:) 355 real,save,allocatable :: T2sumSTD(:,:,:) 356 c 357 cym SAVE uvsumSTD, vqsumSTD, vTsumSTD, wqsumSTD 358 cym SAVE vphisumSTD, wTsumSTD, u2sumSTD, v2sumSTD, T2sumSTD 359 c$OMP THREADPRIVATE(uvsumSTD, vqsumSTD, vTsumSTD, wqsumSTD) 360 c$OMP THREADPRIVATE(vphisumSTD, wTsumSTD, u2sumSTD, v2sumSTD, T2sumSTD) 361 332 362 cMI Amip2 333 363 c … … 347 377 REAL cldt_s(klon),cldq_s(klon) !nuage total, eau liquide integree 348 378 349 INTEGER kp1379 INTEGER linv, kp1 350 380 c flwp, fiwp = Liquid Water Path & Ice Water Path (kg/m2) 351 381 c flwc, fiwc = Liquid Water Content & Ice Water Content (kg/kg) … … 361 391 cv3.4 362 392 INTEGER debug, debugcol 363 INTEGER npoints364 PARAMETER(npoints=klon)393 cym INTEGER npoints 394 cym PARAMETER(npoints=klon) 365 395 c 366 396 INTEGER sunlit(klon) !sunlit=1 if day; sunlit=0 if night … … 382 412 DATA ifreq_isccp/3/ 383 413 SAVE ifreq_isccp 414 c$OMP THREADPRIVATE(ifreq_isccp) 384 415 CHARACTER*5 typinout(napisccp) 385 416 DATA typinout/'i3od'/ 417 SAVE typinout 418 c$OMP THREADPRIVATE(typinout) 386 419 cIM verif boxptop BEG 387 420 CHARACTER*1 verticaxe(napisccp) 388 421 DATA verticaxe/'1'/ 422 SAVE verticaxe 423 c$OMP THREADPRIVATE(verticaxe) 389 424 cIM verif boxptop END 390 425 INTEGER nvlev(napisccp) … … 392 427 REAL t1, aa 393 428 REAL seed_re(klon,napisccp) 394 INTEGER seed_old(klon,napisccp) 395 SAVE seed_old 396 INTEGER iphy(iim,jjmp1) 429 INTEGER,ALLOCATABLE,SAVE :: seed_old(:,:) 430 cym SAVE seed_old 431 c$OMP THREADPRIVATE(seed_old) 432 cym !!!! A voir plus tard 433 cym INTEGER iphy(iim,jjmp1) 397 434 cIM parametres ISCCP END 398 435 c 399 436 c ncol = nb. de sous-colonnes pour chaque maille du GCM 400 437 c ncolmx = No. max. de sous-colonnes pour chaque maille du GCM 401 INTEGER ncol(napisccp), ncolmx, seed(klon,napisccp) 438 c INTEGER ncol(napisccp), ncolmx, seed(klon,napisccp) 439 INTEGER,SAVE :: ncol(napisccp) 440 INTEGER ncolmx, seed(klon,napisccp) 402 441 REAL nbsunlit(nregISCtot,klon,napisccp) !nbsunlit : moyenne de sunlit 403 442 PARAMETER(ncolmx=1500) … … 407 446 cIM verif boxptop END 408 447 c 409 REAL tautab(0:255) 410 INTEGER invtau(-20:45000) 448 REAL,SAVE :: tautab_omp(0:255),tautab(0:255) 449 INTEGER,SAVE :: invtau_omp(-20:45000),invtau(-20:45000) 450 c$OMP THREADPRIVATE(tautab,invtau) 411 451 REAL emsfc_lw 412 452 PARAMETER(emsfc_lw=0.99) … … 456 496 INTEGER iw, iwmax 457 497 REAL wmin, pas_w 498 c PARAMETER(wmin=-100.,pas_w=10.,iwmax=30) 499 cIM 051005 PARAMETER(wmin=-200.,pas_w=10.,iwmax=40) 458 500 PARAMETER(wmin=-100.,pas_w=10.,iwmax=20) 459 501 REAL o500(klon) … … 465 507 466 508 INTEGER linv 467 INTEGER pct_ocean(klon,nbregdyn) 468 SAVE pct_ocean 509 INTEGER,ALLOCATABLE,SAVE :: pct_ocean(:,:) 510 c$OMP THREADPRIVATE(pct_ocean) 511 cym SAVE pct_ocean 469 512 470 513 c sorties ISCCP … … 472 515 integer nid_isccp 473 516 save nid_isccp 517 c$OMP THREADPRIVATE(nid_isccp) 518 519 c data ok_isccp,ecrit_isccp/.true.,0.125/ 520 c data ok_isccp,ecrit_isccp/.true.,1./ 521 cIM 190504 data ok_isccp/.true./ 522 cIM 190504 #else 523 cIM 190504 data ok_isccp/.false./ 524 cIM 190504 #endif 474 525 475 526 REAL zx_tau(kmaxm1), zx_pc(lmaxm1), zx_o500(iwmax) 476 527 DATA zx_tau/0.0, 0.3, 1.3, 3.6, 9.4, 23., 60./ 528 SAVE zx_tau 529 cIM bad 151205 DATA zx_pc/50., 180., 310., 440., 560., 680., 800./ 477 530 DATA zx_pc/180., 310., 440., 560., 680., 800., 1000./ 478 531 SAVE zx_pc 532 c$OMP THREADPRIVATE(zx_tau,zx_pc) 479 533 c cldtopres pression au sommet des nuages 480 534 REAL cldtopres(lmaxm1), cldtopres3(lmax3) 481 535 DATA cldtopres/180., 310., 440., 560., 680., 800., 1000./ 482 536 DATA cldtopres3/440., 680., 1000./ 537 SAVE cldtopres,cldtopres3 538 c$OMP THREADPRIVATE(cldtopres,cldtopres3) 539 cIM 051005 BEG 483 540 REAL tmp_his1_3d(iwmax,kmaxm1,lmaxm1,nbregdyn,napisccp) 484 541 REAL tmp_his2_3d(iwmax,kmaxm1,lmaxm1,nbregdyn,napisccp) … … 492 549 CHARACTER *3 pclev(lmaxm1) 493 550 DATA pclev/'pc1','pc2','pc3','pc4','pc5','pc6','pc7'/ 551 SAVE taulev,pclev 552 c$OMP THREADPRIVATE(taulev,pclev) 494 553 c 495 554 c cnameisccp … … 545 604 . 'pc= 680-800hPa, tau> 60.', 546 605 . 'pc= 800-1000hPa, tau> 60.'/ 606 SAVE cnameisccp 607 c$OMP THREADPRIVATE(cnameisccp) 547 608 c 548 609 c REAL zx_lonx7(iimx7), zx_latx7(jjmp1x7) … … 558 619 integer nid_hf, nid_hf3d 559 620 save ok_hf, nid_hf, nid_hf3d 560 621 c$OMP THREADPRIVATE(ok_hf, nid_hf, nid_hf3d) 561 622 c QUESTION : noms de variables ? 562 623 … … 566 627 data ok_hf/.false./ 567 628 #endif 568 569 629 INTEGER longcles 570 630 PARAMETER ( longcles = 20 ) … … 575 635 REAL xjour 576 636 SAVE xjour 637 c$OMP THREADPRIVATE(xjour) 577 638 c 578 639 c … … 581 642 REAL dtime 582 643 SAVE dtime ! pas temporel de la physique 644 c$OMP THREADPRIVATE(dtime) 583 645 c 584 646 INTEGER radpas 585 647 SAVE radpas ! frequence d'appel rayonnement 586 c 587 REAL radsol(klon) 588 SAVE radsol ! bilan radiatif au sol calcule par code radiatif 589 c 590 REAL rlat(klon) 591 SAVE rlat ! latitude pour chaque point 592 c 593 REAL rlon(klon) 594 SAVE rlon ! longitude pour chaque point 595 c 596 REAL rlonPOS(klon) 597 SAVE rlonPOS ! longitudes > 0. pour chaque point 648 c$OMP THREADPRIVATE(radpas) 649 c 650 REAL,allocatable,save :: radsol(:) 651 c$OMP THREADPRIVATE(radsol) 652 cym SAVE radsol ! bilan radiatif au sol calcule par code radiatif 653 c 654 REAL,allocatable,save :: rlat(:) 655 c$OMP THREADPRIVATE(rlat) 656 cym SAVE rlat ! latitude pour chaque point 657 c 658 REAL,allocatable,save :: rlon(:) 659 c$OMP THREADPRIVATE(rlon) 660 cym SAVE rlon ! longitude pour chaque point 661 662 REAL,SAVE,ALLOCATABLE :: rlonPOS(:) 663 c$OMP THREADPRIVATE(rlonPOS) 664 cym SAVE rlonPOS ! longitudes > 0. pour chaque point 598 665 c 599 666 cc INTEGER iflag_con … … 602 669 INTEGER itap 603 670 SAVE itap ! compteur pour la physique 671 c$OMP THREADPRIVATE(itap) 604 672 c 605 673 REAL co2_ppm_etat0 … … 609 677 real slp(klon) ! sea level pressure 610 678 611 REAL ftsol(klon,nbsrf) 612 SAVE ftsol ! temperature du sol 679 REAL,allocatable,save :: ftsol(:,:) 680 c$OMP THREADPRIVATE(ftsol) 681 cym SAVE ftsol ! temperature du sol 682 613 683 cIM 614 REAL newsst(klon) !temperature de l'ocean 615 SAVE newsst 616 c 617 REAL ftsoil(klon,nsoilmx,nbsrf) 618 SAVE ftsoil ! temperature dans le sol 619 c 620 REAL fevap(klon,nbsrf) 621 SAVE fevap ! evaporation 622 REAL fluxlat(klon,nbsrf) 623 SAVE fluxlat 624 c 625 REAL deltat(klon) 626 SAVE deltat ! ecart avec la SST de reference 627 c 628 REAL fqsurf(klon,nbsrf) 629 SAVE fqsurf ! humidite de l'air au contact de la surface 630 c 631 REAL qsol(klon) 632 SAVE qsol ! hauteur d'eau dans le sol 633 c 634 REAL fsnow(klon,nbsrf) 635 SAVE fsnow ! epaisseur neigeuse 636 c 637 REAL falbe(klon,nbsrf) 638 SAVE falbe ! albedo par type de surface 639 REAL falblw(klon,nbsrf) 640 SAVE falblw ! albedo par type de surface 684 REAL,SAVE,ALLOCATABLE :: newsst(:) !temperature de l'ocean 685 c$OMP THREADPRIVATE(newsst) 686 cym SAVE newsst 687 c 688 REAL,allocatable,save :: ftsoil(:,:,:) 689 c$OMP THREADPRIVATE(ftsoil) 690 cym SAVE ftsoil ! temperature dans le sol 691 c 692 REAL,allocatable,save :: fevap(:,:) 693 c$OMP THREADPRIVATE(fevap) 694 cym SAVE fevap ! evaporation 695 REAL,allocatable,save :: fluxlat(:,:) 696 c$OMP THREADPRIVATE(fluxlat) 697 cym SAVE fluxlat 698 c 699 REAL,allocatable,save :: deltat(:) 700 c$OMP THREADPRIVATE(deltat) 701 cym SAVE deltat ! ecart avec la SST de reference 702 c 703 REAL,allocatable,save :: fqsurf(:,:) 704 c$OMP THREADPRIVATE(fqsurf) 705 cym SAVE fqsurf ! humidite de l'air au contact de la surface 706 c 707 REAL,allocatable,save :: qsol(:) 708 c$OMP THREADPRIVATE(qsol) 709 cym SAVE qsol ! hauteur d'eau dans le sol 710 c 711 REAL,allocatable,save :: fsnow(:,:) 712 c$OMP THREADPRIVATE(fsnow) 713 cym SAVE fsnow ! epaisseur neigeuse 714 c 715 REAL,allocatable,save :: falbe(:,:) 716 c$OMP THREADPRIVATE(falbe) 717 cym SAVE falbe ! albedo par type de surface 718 REAL,allocatable,save :: falblw(:,:) 719 c$OMP THREADPRIVATE(falblw) 720 cym SAVE falblw ! albedo par type de surface 641 721 642 722 c … … 644 724 c Parametres de l'Orographie a l'Echelle Sous-Maille (OESM): 645 725 c 646 REAL zmea(klon) 647 SAVE zmea ! orographie moyenne 648 c 649 REAL zstd(klon) 650 SAVE zstd ! deviation standard de l'OESM 651 c 652 REAL zsig(klon) 653 SAVE zsig ! pente de l'OESM 654 c 655 REAL zgam(klon) 656 save zgam ! anisotropie de l'OESM 657 c 658 REAL zthe(klon) 659 SAVE zthe ! orientation de l'OESM 660 c 661 REAL zpic(klon) 662 SAVE zpic ! Maximum de l'OESM 663 c 664 REAL zval(klon) 665 SAVE zval ! Minimum de l'OESM 666 c 667 REAL rugoro(klon) 668 SAVE rugoro ! longueur de rugosite de l'OESM 726 REAL,allocatable,save :: zmea(:) 727 c$OMP THREADPRIVATE(zmea) 728 cym SAVE zmea ! orographie moyenne 729 c 730 REAL,allocatable,save :: zstd(:) 731 c$OMP THREADPRIVATE(zstd) 732 cym SAVE zstd ! deviation standard de l'OESM 733 c 734 REAL,allocatable,save :: zsig(:) 735 c$OMP THREADPRIVATE(zsig) 736 cym SAVE zsig ! pente de l'OESM 737 c 738 REAL,allocatable,save :: zgam(:) 739 c$OMP THREADPRIVATE(zgam) 740 cym save zgam ! anisotropie de l'OESM 741 c 742 REAL,allocatable,save :: zthe(:) 743 c$OMP THREADPRIVATE(zthe) 744 cym SAVE zthe ! orientation de l'OESM 745 c 746 REAL,allocatable,save :: zpic(:) 747 c$OMP THREADPRIVATE(zpic) 748 cym SAVE zpic ! Maximum de l'OESM 749 c 750 REAL,allocatable,save :: zval(:) 751 c$OMP THREADPRIVATE(zval) 752 cym SAVE zval ! Minimum de l'OESM 753 c 754 REAL,allocatable,save :: rugoro(:) 755 c$OMP THREADPRIVATE(rugoro) 756 cym SAVE rugoro ! longueur de rugosite de l'OESM 669 757 c 670 758 cIM 141004 REAL zulow(klon),zvlow(klon),zustr(klon), zvstr(klon) 671 759 REAL zulow(klon),zvlow(klon) 672 760 c 673 REAL zuthe(klon),zvthe(klon) 674 SAVE zuthe 675 SAVE zvthe 761 REAL,allocatable,save :: zuthe(:),zvthe(:) 762 c$OMP THREADPRIVATE(zuthe,zvthe) 763 cym SAVE zuthe 764 cym SAVE zvthe 676 765 INTEGER igwd,idx(klon),itest(klon) 677 766 c 678 REAL agesno(klon,nbsrf) 679 SAVE agesno ! age de la neige 680 c 681 REAL alb_neig(klon) 682 SAVE alb_neig ! albedo de la neige 683 c 684 REAL run_off_lic_0(klon) 685 SAVE run_off_lic_0 767 REAL,allocatable,save :: agesno(:,:) 768 c$OMP THREADPRIVATE(agesno) 769 cym SAVE agesno ! age de la neige 770 c 771 REAL,allocatable,save :: alb_neig(:) 772 c$OMP THREADPRIVATE(alb_neig) 773 cym SAVE alb_neig ! albedo de la neige 774 c 775 REAL,allocatable,save :: run_off_lic_0(:) 776 c$OMP THREADPRIVATE(run_off_lic_0) 777 cym SAVE run_off_lic_0 686 778 cKE43 687 779 c Variables liees a la convection de K. Emanuel (sb): 688 780 c 689 REAL ema_workcbmf(klon) ! cloud base mass flux 690 SAVE ema_workcbmf 691 692 REAL ema_cbmf(klon) ! cloud base mass flux 693 SAVE ema_cbmf 694 695 REAL ema_pcb(klon) ! cloud base pressure 696 SAVE ema_pcb 697 698 REAL ema_pct(klon) ! cloud top pressure 699 SAVE ema_pct 781 REAL,allocatable,save :: ema_workcbmf(:) ! cloud base mass flux 782 c$OMP THREADPRIVATE(ema_workcbmf) 783 cym SAVE ema_workcbmf 784 785 REAL,allocatable,save :: ema_cbmf(:) ! cloud base mass flux 786 c$OMP THREADPRIVATE(ema_cbmf) 787 cym SAVE ema_cbmf 788 789 REAL,allocatable,save :: ema_pcb(:) ! cloud base pressure 790 c$OMP THREADPRIVATE(ema_pcb) 791 cym SAVE ema_pcb 792 793 REAL,allocatable,save :: ema_pct(:) ! cloud top pressure 794 c$OMP THREADPRIVATE(ema_pct) 795 cym SAVE ema_pct 700 796 701 797 REAL bas, top ! cloud base and top levels 702 798 SAVE bas 703 799 SAVE top 704 705 REAL Ma(klon,klev) ! undilute upward mass flux 706 SAVE Ma 707 REAL qcondc(klon,klev) ! in-cld water content from convect 708 SAVE qcondc 709 REAL ema_work1(klon, klev), ema_work2(klon, klev) 710 SAVE ema_work1, ema_work2 800 c$OMP THREADPRIVATE(bas, top) 801 802 REAL,allocatable,save :: Ma(:,:) ! undilute upward mass flux 803 c$OMP THREADPRIVATE(Ma) 804 cym SAVE Ma 805 REAL,allocatable,save :: qcondc(:,:) ! in-cld water content from convect 806 c$OMP THREADPRIVATE(qcondc) 807 cym SAVE qcondc 808 REAL,allocatable,save :: ema_work1(:, :), ema_work2(:, :) 809 c$OMP THREADPRIVATE(ema_work1,ema_work2) 810 cym SAVE ema_work1, ema_work2 711 811 REAL wdn(klon), tdn(klon), qdn(klon) 712 812 713 REAL wd(klon) ! sb 714 SAVE wd ! sb 813 REAL,allocatable,save :: wd(:) ! sb 814 c$OMP THREADPRIVATE(wd) 815 cym SAVE wd ! sb 715 816 716 817 c Variables locales pour la couche limite (al1): … … 730 831 REAL yu1(klon) ! vents dans la premiere couche U 731 832 REAL yv1(klon) ! vents dans la premiere couche V 732 REAL ffonte(klon,nbsrf) !Flux thermique utilise pour fondre la neige 733 REAL fqcalving(klon,nbsrf) !Flux d'eau "perdue" par la surface 833 REAL,SAVE,ALLOCATABLE :: ffonte(:,:) !Flux thermique utilise pour fondre la neige 834 c$OMP THREADPRIVATE(ffonte) 835 REAL,SAVE,ALLOCATABLE :: fqcalving(:,:) !Flux d'eau "perdu" par la surface 836 c$OMP THREADPRIVATE(fqcalving) 837 REAL,SAVE,ALLOCATABLE :: fqfonte(:,:) !Quantite d'eau de fonte des glaciers 838 c$OMP THREADPRIVATE(fqfonte) 734 839 c !et necessaire pour limiter la 735 840 c !hauteur de neige, en kg/m2/s 736 REAL zxffonte(klon), zxfqcalving(klon) 737 738 c$$$ LOGICAL offline ! Controle du stockage ds "physique" 739 c$$$ PARAMETER (offline=.false.) 740 c$$$ INTEGER physid 741 REAL pfrac_impa(klon,klev)! Produits des coefs lessivage impaction 742 save pfrac_impa 743 REAL pfrac_nucl(klon,klev)! Produits des coefs lessivage nucleation 744 save pfrac_nucl 745 REAL pfrac_1nucl(klon,klev)! Produits des coefs lessi nucl (alpha = 1) 746 save pfrac_1nucl 841 REAL zxffonte(klon), zxfqcalving(klon),zxfqfonte(klon) 842 843 c@$$ LOGICAL offline ! Controle du stockage ds "physique" 844 c@$$ PARAMETER (offline=.false.) 845 c@$$ INTEGER physid 846 REAL,allocatable,save :: pfrac_impa(:,:)! Produits des coefs lessivage impaction 847 c$OMP THREADPRIVATE(pfrac_impa) 848 cym save pfrac_impa 849 REAL,allocatable,save :: pfrac_nucl(:,:)! Produits des coefs lessivage nucleation 850 c$OMP THREADPRIVATE(pfrac_nucl) 851 cym save pfrac_nucl 852 REAL,allocatable,save :: pfrac_1nucl(:,:)! Produits des coefs lessi nucl (alpha = 1) 853 c$OMP THREADPRIVATE(pfrac_1nucl) 854 cym save pfrac_1nucl 747 855 REAL frac_impa(klon,klev) ! fractions d'aerosols lessivees (impaction) 748 856 REAL frac_nucl(klon,klev) ! idem (nucleation) … … 753 861 754 862 cAA 755 REAL rain_fall(klon) ! pluie 756 REAL snow_fall(klon) ! neige 757 save snow_fall, rain_fall 863 REAL,allocatable,save :: rain_fall(:) ! pluie 864 c$OMP THREADPRIVATE(rain_fall) 865 REAL,allocatable,save :: snow_fall(:) ! neige 866 c$OMP THREADPRIVATE(snow_fall) 867 cym save snow_fall, rain_fall 868 758 869 cIM cf FH pour Tiedtke 080604 759 870 REAL rain_tiedtke(klon),snow_tiedtke(klon) 760 871 c 761 REAL total_rain(klon), nday_rain(klon) 762 save nday_rain 763 c 872 873 REAL,allocatable,save :: total_rain(:), nday_rain(:) 874 c$OMP THREADPRIVATE(total_rain,nday_rain) 875 cym save total_rain, nday_rain 876 cIM 050204 END 764 877 REAL evap(klon), devap(klon) ! evaporation et sa derivee 765 878 REAL sens(klon), dsens(klon) ! chaleur sensible et sa derivee 766 REAL dlw(klon) ! derivee infra rouge 879 REAL,allocatable,save :: dlw(:) ! derivee infra rouge 880 c$OMP THREADPRIVATE(dlw) 767 881 cym 768 SAVE dlw882 cym SAVE dlw 769 883 cym 770 884 REAL bils(klon) ! bilan de chaleur au sol … … 773 887 REAL wfbils(klon,nbsrf) ! bilan de chaleur au sol, pour chaque 774 888 C ! type de sous-surface et pondere par la fraction 775 REAL fder(klon) ! Derive de flux (sensible et latente) 776 save fder 889 REAL,allocatable,save :: fder(:) ! Derive de flux (sensible et latente) 890 c$OMP THREADPRIVATE(fder) 891 cym save fder 777 892 REAL ve(klon) ! integr. verticale du transport meri. de l'energie 778 893 REAL vq(klon) ! integr. verticale du transport meri. de l'eau … … 780 895 REAL uq(klon) ! integr. verticale du transport zonal de l'eau 781 896 c 782 REAL frugs(klon,nbsrf) ! longueur de rugosite 783 save frugs 897 REAL,allocatable,save :: frugs(:,:) ! longueur de rugosite 898 c$OMP THREADPRIVATE(frugs) 899 cym save frugs 784 900 REAL zxrugs(klon) ! longueur de rugosite 785 901 c … … 790 906 INTEGER lmt_pas 791 907 SAVE lmt_pas ! frequence de mise a jour 792 REAL pctsrf(klon,nbsrf) 908 c$OMP THREADPRIVATE(lmt_pas) 909 REAL,allocatable,save :: pctsrf(:,:) 910 c$OMP THREADPRIVATE(pctsrf) 793 911 cIM 794 912 REAL pctsrf_new(klon,nbsrf) !pourcentage surfaces issus d'ORCHIDEE 795 REAL paire_ter(klon) !surfaces terre 796 c 797 SAVE pctsrf ! sous-fraction du sol 798 REAL albsol(klon) 799 SAVE albsol ! albedo du sol total 800 REAL albsollw(klon) 801 SAVE albsollw ! albedo du sol total 802 803 REAL wo(klon,klev) 804 SAVE wo ! ozone 913 914 cym REAL paire_ter(klon) !surfaces terre 915 REAL,allocatable,save :: paire_ter(:) !surfaces terre 916 c$OMP THREADPRIVATE(paire_ter) 917 918 cIM 919 cym SAVE pctsrf ! sous-fraction du sol 920 REAL,allocatable,save :: albsol(:) 921 c$OMP THREADPRIVATE(albsol) 922 cym SAVE albsol ! albedo du sol total 923 REAL,allocatable,save :: albsollw(:) 924 c$OMP THREADPRIVATE(albsollw) 925 cym SAVE albsollw ! albedo du sol total 926 927 REAL,allocatable,save :: wo(:,:) 928 c$OMP THREADPRIVATE(wo) 929 cym SAVE wo ! ozone 930 805 931 cIM sorties 806 932 REAL un_jour … … 849 975 c Variables locales 850 976 c 851 real clwcon(klon,klev),rnebcon(klon,klev) 852 real clwcon0(klon,klev),rnebcon0(klon,klev) 853 cIM cf. AM 081204 BEG 854 real clwcon0th(klon,klev),rnebcon0th(klon,klev) 855 cIM cf. AM 081204 END 856 save rnebcon, clwcon 857 977 real,allocatable,save :: clwcon(:,:),rnebcon(:,:) 978 c$OMP THREADPRIVATE(clwcon,rnebcon) 979 real,allocatable,save :: clwcon0(:,:),rnebcon0(:,:) 980 cym save rnebcon, clwcon 981 c$OMP THREADPRIVATE(clwcon0,rnebcon0) 858 982 REAL rhcl(klon,klev) ! humiditi relative ciel clair 859 983 REAL dialiq(klon,klev) ! eau liquide nuageuse … … 875 999 REAL zxfluxv(klon, klev) 876 1000 CXXX 877 REAL heat(klon,klev) ! chauffage solaire 878 REAL heat0(klon,klev) ! chauffage solaire ciel clair 879 REAL cool(klon,klev) ! refroidissement infrarouge 880 REAL cool0(klon,klev) ! refroidissement infrarouge ciel clair 881 REAL topsw(klon), toplw(klon), solsw(klon), sollw(klon) 882 real sollwdown(klon) ! downward LW flux at surface 1001 REAL,allocatable,save :: heat(:,:) ! chauffage solaire 1002 c$OMP THREADPRIVATE(heat) 1003 REAL,allocatable,save :: heat0(:,:) ! chauffage solaire ciel clair 1004 c$OMP THREADPRIVATE(heat0) 1005 REAL,allocatable,save :: cool(:,:) ! refroidissement infrarouge 1006 c$OMP THREADPRIVATE(cool) 1007 REAL,allocatable,save :: cool0(:,:) ! refroidissement infrarouge ciel clair 1008 c$OMP THREADPRIVATE(cool0) 1009 REAL,allocatable,save :: topsw(:), toplw(:), solsw(:), sollw(:) 1010 c$OMP THREADPRIVATE(topsw,toplw,solsw,sollw) 1011 real,allocatable,save :: sollwdown(:) ! downward LW flux at surface 1012 c$OMP THREADPRIVATE(sollwdown) 883 1013 cIM BEG 884 real sollwdownclr(klon) ! downward CS LW flux at surface 885 real toplwdown(klon) ! downward CS LW flux at TOA 886 real toplwdownclr(klon) ! downward CS LW flux at TOA 1014 real,allocatable,save :: sollwdownclr(:) ! downward CS LW flux at surface 1015 c$OMP THREADPRIVATE(sollwdownclr) 1016 real,allocatable,save :: toplwdown(:) ! downward CS LW flux at TOA 1017 c$OMP THREADPRIVATE(toplwdown) 1018 real,allocatable,save :: toplwdownclr(:) ! downward CS LW flux at TOA 1019 c$OMP THREADPRIVATE(toplwdownclr) 887 1020 cIM END 888 REAL topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon) 889 REAL albpla(klon) 1021 REAL,allocatable,save :: topsw0(:),toplw0(:),solsw0(:),sollw0(:) 1022 c$OMP THREADPRIVATE( topsw0,toplw0,solsw0,sollw0) 1023 REAL,allocatable,save :: albpla(:) 1024 c$OMP THREADPRIVATE(albpla) 890 1025 REAL fsollw(klon, nbsrf) ! bilan flux IR pour chaque sous surface 891 1026 REAL fsolsw(klon, nbsrf) ! flux solaire absorb. pour chaque sous surface 892 1027 c Le rayonnement n'est pas calcule tous les pas, il faut donc 893 1028 c sauvegarder les sorties du rayonnement 894 SAVE heat,cool,albpla,topsw,toplw,solsw,sollw,sollwdown895 SAVE sollwdownclr, toplwdown, toplwdownclr896 SAVE topsw0,toplw0,solsw0,sollw0, heat0, cool01029 cym SAVE heat,cool,albpla,topsw,toplw,solsw,sollw,sollwdown 1030 cym SAVE sollwdownclr, toplwdown, toplwdownclr 1031 cym SAVE topsw0,toplw0,solsw0,sollw0, heat0, cool0 897 1032 c 898 1033 INTEGER itaprad 899 1034 SAVE itaprad 1035 c$OMP THREADPRIVATE(itaprad) 900 1036 c 901 1037 REAL conv_q(klon,klev) ! convergence de l'humidite (kg/kg/s) … … 925 1061 c 926 1062 REAL zphi(klon,klev) 927 REAL zx_relief(iim,jjmp1) 928 REAL zx_aire(iim,jjmp1) 1063 cym A voir plus tard !! 1064 cym REAL zx_relief(iim,jjmp1) 1065 cym REAL zx_aire(iim,jjmp1) 929 1066 c 930 1067 cIM cf. AM Variables locales pour la CLA (hbtm2) 931 1068 c 932 REAL pblh(klon, nbsrf) ! Hauteur de couche limite 933 REAL plcl(klon, nbsrf) ! Niveau de condensation de la CLA 934 REAL capCL(klon, nbsrf) ! CAPE de couche limite 935 REAL oliqCL(klon, nbsrf) ! eau_liqu integree de couche limite 936 REAL cteiCL(klon, nbsrf) ! cloud top instab. crit. couche limite 937 REAL pblt(klon, nbsrf) ! T a la Hauteur de couche limite 938 REAL therm(klon, nbsrf) 939 REAL trmb1(klon, nbsrf) ! deep_cape 940 REAL trmb2(klon, nbsrf) ! inhibition 941 REAL trmb3(klon, nbsrf) ! Point Omega 1069 REAL,SAVE,ALLOCATABLE :: pblh(:, :) ! Hauteur de couche limite 1070 c$OMP THREADPRIVATE(pblh) 1071 REAL,SAVE,ALLOCATABLE :: plcl(:, :) ! Niveau de condensation de la CLA 1072 c$OMP THREADPRIVATE(plcl) 1073 REAL,SAVE,ALLOCATABLE :: capCL(:, :) ! CAPE de couche limite 1074 c$OMP THREADPRIVATE(capCL) 1075 REAL,SAVE,ALLOCATABLE :: oliqCL(:, :) ! eau_liqu integree de couche limite 1076 c$OMP THREADPRIVATE(oliqCL) 1077 REAL,SAVE,ALLOCATABLE :: cteiCL(:, :) ! cloud top instab. crit. couche limite 1078 c$OMP THREADPRIVATE(cteiCL) 1079 REAL,SAVE,ALLOCATABLE :: pblt(:, :) ! T a la Hauteur de couche limite 1080 c$OMP THREADPRIVATE(pblt) 1081 REAL,SAVE,ALLOCATABLE :: therm(:, :) 1082 c$OMP THREADPRIVATE(therm) 1083 REAL,SAVE,ALLOCATABLE :: trmb1(:, :) ! deep_cape 1084 c$OMP THREADPRIVATE(trmb1) 1085 REAL,SAVE,ALLOCATABLE :: trmb2(:, :) ! inhibition 1086 c$OMP THREADPRIVATE(trmb2) 1087 REAL,SAVE,ALLOCATABLE :: trmb3(:, :) ! Point Omega 1088 c$OMP THREADPRIVATE(trmb3) 942 1089 c Grdeurs de sorties 943 1090 REAL s_pblh(klon), s_lcl(klon), s_capCL(klon) … … 952 1099 REAL dnwd0(klon,klev) ! unsaturated downdraft mass flux 953 1100 REAL tvp(klon,klev) ! virtual temp of lifted parcel 954 REAL cape(klon) ! CAPE 955 SAVE cape 1101 REAL,allocatable,save :: cape(:) ! CAPE 1102 c$OMP THREADPRIVATE(cape) 1103 cym SAVE cape 956 1104 CHARACTER*40 capemaxcels !max(CAPE) 957 1105 958 REAL pbase(klon) ! cloud base pressure 959 SAVE pbase 960 REAL bbase(klon) ! cloud base buoyancy 961 SAVE bbase 1106 REAL,allocatable,save :: pbase(:) ! cloud base pressure 1107 c$OMP THREADPRIVATE(pbase) 1108 cym SAVE pbase 1109 REAL,allocatable,save :: bbase(:) ! cloud base buoyancy 1110 c$OMP THREADPRIVATE(bbase) 1111 cym SAVE bbase 962 1112 REAL rflag(klon) ! flag fonctionnement de convect 963 1113 INTEGER iflagctrl(klon) ! flag fonctionnement de convect … … 982 1132 c vdf: couche limite (Vertical DiFfusion) 983 1133 REAL d_t_con(klon,klev),d_q_con(klon,klev) 984 REAL d_u_con(klon,klev),d_v_con(klon,klev) 1134 REAL,SAVE,ALLOCATABLE :: d_u_con(:,:),d_v_con(:,:) 1135 c$OMP THREADPRIVATE(d_u_con,d_v_con) 985 1136 REAL d_t_lsc(klon,klev),d_q_lsc(klon,klev),d_ql_lsc(klon,klev) 986 1137 REAL d_t_ajs(klon,klev), d_q_ajs(klon,klev) … … 992 1143 ********************************************************* 993 1144 * declarations 994 real zqasc(klon,klev) 995 save zqasc 1145 real,save,allocatable :: zqasc(:,:) 1146 c$OMP THREADPRIVATE(zqasc) 1147 cym save zqasc 996 1148 997 1149 ********************************************************* … … 1005 1157 REAL prfl(klon,klev+1), psfl(klon,klev+1) 1006 1158 c 1007 INTEGER ibas_con(klon), itop_con(klon) 1159 INTEGER,allocatable,save :: ibas_con(:), itop_con(:) 1160 c$OMP THREADPRIVATE(ibas_con,itop_con) 1008 1161 cym 1009 SAVE ibas_con,itop_con1162 cym SAVE ibas_con,itop_con 1010 1163 cym 1011 REAL rain_con(klon), rain_lsc(klon) 1012 REAL snow_con(klon), snow_lsc(klon) 1164 REAL,SAVE,ALLOCATABLE :: rain_con(:) 1165 c$OMP THREADPRIVATE(rain_con) 1166 REAL rain_lsc(klon) 1167 REAL,SAVE,ALLOCATABLE :: snow_con(:) 1168 c$OMP THREADPRIVATE(snow_con) 1169 REAL snow_lsc(klon) 1013 1170 REAL d_ts(klon,nbsrf) 1014 1171 c … … 1022 1179 REAL d_u_oli(klon,klev), d_v_oli(klon,klev) !tendances dues a oro et lif 1023 1180 1024 REAL ratqs(klon,klev),ratqss(klon,klev),ratqsc(klon,klev) 1181 REAL,allocatable,save :: ratqs(:,:) 1182 c$OMP THREADPRIVATE(ratqs) 1183 REAL ratqss(klon,klev),ratqsc(klon,klev) 1025 1184 real ratqsbas,ratqshaut 1026 save ratqsbas,ratqshaut, ratqs 1185 cym save ratqsbas,ratqshaut, ratqs 1186 save ratqsbas,ratqshaut 1187 c$OMP THREADPRIVATE(ratqsbas,ratqshaut) 1027 1188 real zpt_conv(klon,klev) 1028 1189 … … 1032 1193 logical ok_newmicro 1033 1194 save ok_newmicro 1195 c$OMP THREADPRIVATE(ok_newmicro) 1034 1196 save fact_cldcon,facttemps 1197 c$OMP THREADPRIVATE(fact_cldcon,facttemps) 1035 1198 real facteur 1036 1199 1037 1200 integer iflag_cldcon 1038 1201 save iflag_cldcon 1039 1202 c$OMP THREADPRIVATE(iflag_cldcon) 1040 1203 logical ptconv(klon,klev) 1041 1204 cIM cf. AM 081204 BEG … … 1051 1214 integer imin_ins,imax_ins,jmin_ins,jmax_ins 1052 1215 save imin_ins,imax_ins,jmin_ins,jmax_ins 1216 c$OMP THREADPRIVATE(imin_ins,imax_ins,jmin_ins,jmax_ins) 1053 1217 c real lonmin_ins,lonmax_ins,latmin_ins 1054 1218 c s ,latmax_ins … … 1087 1251 REAL tabcntr0( length ) 1088 1252 c 1253 1089 1254 INTEGER ndex2d(iim*jjmp1),ndex3d(iim*jjmp1*klev) 1090 1255 cIM … … 1102 1267 INTEGER ij, imp1jmp1 1103 1268 PARAMETER(imp1jmp1=(iim+1)*jjmp1) 1269 cym A voir plus tard 1104 1270 REAL zx_tmp(imp1jmp1), airedyn(iim+1,jjmp1) 1105 1271 REAL padyn(iim+1,jjmp1,klev+1) … … 1111 1277 cIM 1112 1278 REAL airetot, pi 1113 REAL zm_wo(jjmp1, klev) 1279 cym A voir plus tard 1280 cym REAL zm_wo(jjmp1, klev) 1114 1281 cIM AMIP2 END 1115 1282 c 1116 1283 REAL zx_tmp_fi2d(klon) ! variable temporaire grille physique 1117 1284 REAL zx_tmp_fi3d(klon,klev) ! variable temporaire pour champs 3D 1118 #ifdef histmthNMC 1119 REAL zx_tmp_NC(iim,jjmp1,nlevSTD) 1285 c#ifdef histmthNMC 1286 cym A voir plus tard !!!! 1287 cym REAL zx_tmp_NC(iim,jjmp1,nlevSTD) 1120 1288 REAL zx_tmp_fiNC(klon,nlevSTD) 1121 #endif1289 c#endif 1122 1290 REAL*8 zx_tmp2_fi3d(klon,klev) ! variable temporaire pour champs 3D 1123 1291 REAL zx_tmp_2d(iim,jjmp1), zx_tmp_3d(iim,jjmp1,klev) … … 1128 1296 SAVE nid_day, nid_mth, nid_ins, nid_nmc, nid_day_seri 1129 1297 SAVE nid_ctesGCM 1298 c$OMP THREADPRIVATE(nid_day, nid_mth, nid_ins, nid_nmc) 1299 c$OMP THREADPRIVATE(nid_day_seri,nid_ctesGCM) 1130 1300 c 1131 1301 cIM 280405 BEG 1132 1302 INTEGER nid_bilKPins, nid_bilKPave 1133 1303 SAVE nid_bilKPins, nid_bilKPave 1304 c$OMP THREADPRIVATE(nid_bilKPins, nid_bilKPave) 1134 1305 c 1135 1306 REAL ve_lay(klon,klev) ! transport meri. de l'energie a chaque niveau vert. … … 1146 1317 REAL zout_isccp(napisccp) 1147 1318 SAVE zcals, zcalh, zoutj, zout_isccp 1319 c$OMP THREADPRIVATE(zcals, zcalh, zoutj, zout_isccp) 1148 1320 1149 1321 real zjulian 1150 1322 save zjulian 1323 c$OMP THREADPRIVATE(zjulian) 1151 1324 1152 1325 character*20 modname … … 1172 1345 SAVE h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot 1173 1346 $ , h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot 1347 c$OMP THREADPRIVATE(h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot, 1348 c$OMP+ h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot) 1174 1349 REAL d_h_vcol, d_h_dair, d_qt, d_qw, d_ql, d_qs, d_ec 1175 1350 REAL d_h_vcol_phy 1176 1351 REAL fs_bound, fq_bound 1177 1352 SAVE d_h_vcol_phy 1353 c$OMP THREADPRIVATE(d_h_vcol_phy) 1178 1354 REAL zero_v(klon) 1179 1355 CHARACTER*15 ztit 1180 1356 INTEGER ip_ebil ! PRINT level for energy conserv. diag. 1357 SAVE ip_ebil 1358 DATA ip_ebil/0/ 1359 c$OMP THREADPRIVATE(ip_ebil) 1360 INTEGER if_ebil ! level for energy conserv. dignostics 1361 SAVE if_ebil 1362 c$OMP THREADPRIVATE(if_ebil) 1181 1363 c+jld ec_conser 1182 1364 REAL d_t_ec(klon,klev) ! tendance du a la conersion Ec -> E thermique … … 1184 1366 c-jld ec_conser 1185 1367 cIM: t2m, q2m, u10m, v10m et t2mincels, t2maxcels 1186 REAL t2m(klon,nbsrf), q2m(klon,nbsrf) !temperature, humidite a 2m 1187 REAL u10m(klon,nbsrf), v10m(klon,nbsrf) !vents a 10m 1368 REAL,SAVE,ALLOCATABLE :: t2m(:,:), q2m(:,:) !temperature, humidite a 2m 1369 c$OMP THREADPRIVATE(t2m,q2m) 1370 REAL,SAVE,ALLOCATABLE :: u10m(:,:), v10m(:,:) !vents a 10m 1371 c$OMP THREADPRIVATE(u10m,v10m) 1188 1372 REAL zt2m(klon), zq2m(klon) !temp., hum. 2m moyenne s/ 1 maille 1189 1373 REAL zu10m(klon), zv10m(klon) !vents a 10m moyennes s/1 maille … … 1192 1376 cjq Aerosol effects (Johannes Quaas, 27/11/2003) 1193 1377 REAL sulfate(klon, klev) ! SO4 aerosol concentration [ug/m3] 1194 REAL sulfate_pi(klon, klev) ! SO4 aerosol concentration [ug/m3] (pre-industrial value) 1195 SAVE sulfate_pi 1378 REAL,allocatable,save :: sulfate_pi(:,:) ! SO4 aerosol concentration [ug/m3] (pre-industrial value) 1379 c$OMP THREADPRIVATE(sulfate_pi) 1380 cym SAVE sulfate_pi 1196 1381 1197 1382 REAL cldtaupi(klon,klev) ! Cloud optical thickness for pre-industrial (pi) aerosols … … 1203 1388 1204 1389 ! Aerosol optical properties 1205 REAL tau_ae(klon,klev,2), piz_ae(klon,klev,2) 1206 REAL cg_ae(klon,klev,2) 1207 1208 REAL topswad(klon), solswad(klon) ! Aerosol direct effect. 1390 REAL,SAVE,ALLOCATABLE :: tau_ae(:,:,:), piz_ae(:,:,:) 1391 c$OMP THREADPRIVATE(tau_ae,piz_ae) 1392 REAL,SAVE,ALLOCATABLE :: cg_ae(:,:,:) 1393 c$OMP THREADPRIVATE(cg_ae) 1394 1395 REAL,SAVE,ALLOCATABLE :: topswad(:), solswad(:) ! Aerosol direct effect. 1396 c$OMP THREADPRIVATE(topswad,solswad) 1209 1397 ! ok_ade=T -ADE=topswad-topsw 1210 1398 1211 REAL topswai(klon), solswai(klon) ! Aerosol indirect effect. 1399 REAL,SAVE,ALLOCATABLE :: topswai(:), solswai(:) ! Aerosol indirect effect. 1400 c$OMP THREADPRIVATE(topswai,solswai) 1212 1401 ! ok_aie=T -> 1213 1402 ! ok_ade=T -AIE=topswai-topswad … … 1221 1410 cym 1222 1411 SAVE ok_ade, ok_aie, bl95_b0, bl95_b1 1223 cym 1224 c Anne 1225 SAVE u10m 1226 SAVE v10m 1227 SAVE t2m 1228 SAVE q2m 1229 SAVE ffonte 1230 SAVE fqcalving 1231 SAVE piz_ae 1232 SAVE tau_ae 1233 SAVE cg_ae 1234 SAVE rain_con 1235 SAVE snow_con 1236 SAVE topswai 1237 SAVE topswad 1238 SAVE solswai 1239 SAVE solswad 1240 SAVE d_u_con 1241 SAVE d_v_con 1242 SAVE rnebcon0 1243 SAVE clwcon0 1244 SAVE paire_ter 1245 c SAVE nhistoW 1246 c SAVE histoW 1247 c SAVE anne 20/09/2005 1248 SAVE pblh 1249 SAVE plcl 1250 SAVE capCL 1251 SAVE oliqCL 1252 SAVE cteiCL 1253 SAVE pblt 1254 SAVE therm 1255 SAVE trmb1 1256 SAVE trmb2 1257 SAVE trmb3 1258 1259 c fin Anne 1260 cjq-end 1412 c$OMP THREADPRIVATE(ok_ade, ok_aie, bl95_b0, bl95_b1) 1413 1261 1414 c 1262 1415 c Declaration des constantes et des fonctions thermodynamiques 1263 1416 c 1417 REAL Field_tmp(klon2,klevp1) 1418 LOGICAL,SAVE :: first=.true. 1419 c$OMP THREADPRIVATE(first) 1264 1420 #include "YOMCST.h" 1265 1421 #include "YOETHF.h" … … 1273 1429 c 1274 1430 c====================================================================== 1275 modname = 'physiq' 1431 1432 cym => necessaire pour iflag_con != 2 1433 pmfd(:,:) = 0. 1434 pen_u(:,:) = 0. 1435 pen_d(:,:) = 0. 1436 pde_d(:,:) = 0. 1437 pde_u(:,:) = 0. 1438 aam=0. 1439 torsfc=0. 1440 cym => pour le couple ocean => revoir dans clmain/intersurf 1441 fluxg(:)=0. 1442 fluxo(:)=0. 1443 1444 if (first) then 1445 1446 allocate( t_ancien(klon,klev), q_ancien(klon,klev)) 1447 allocate( q2(klon,klev+1,nbsrf)) 1448 allocate( swdn0(klon,klevp1), swdn(klon,klevp1)) 1449 allocate( swup0(klon,klevp1), swup(klon,klevp1)) 1450 allocate( SWdn200clr(klon), SWdn200(klon)) 1451 allocate( SWup200clr(klon), SWup200(klon)) 1452 allocate( lwdn0(klon,klevp1), lwdn(klon,klevp1)) 1453 allocate( lwup0(klon,klevp1), lwup(klon,klevp1)) 1454 allocate( LWdn200clr(klon), LWdn200(klon)) 1455 allocate( LWup200clr(klon), LWup200(klon)) 1456 allocate( LWdnTOA(klon), LWdnTOAclr(klon)) 1457 allocate( radsol(klon)) 1458 allocate( rlat(klon)) 1459 allocate( rlon(klon)) 1460 allocate( ftsol(klon,nbsrf)) 1461 allocate( ftsoil(klon,nsoilmx,nbsrf)) 1462 allocate( fevap(klon,nbsrf)) 1463 allocate( fluxlat(klon,nbsrf)) 1464 allocate( deltat(klon)) 1465 allocate( fqsurf(klon,nbsrf)) 1466 allocate( qsol(klon)) 1467 allocate( fsnow(klon,nbsrf)) 1468 allocate( falbe(klon,nbsrf)) 1469 allocate( falblw(klon,nbsrf)) 1470 allocate( zmea(klon)) 1471 allocate( zstd(klon)) 1472 allocate( zsig(klon)) 1473 allocate( zgam(klon)) 1474 allocate( zthe(klon)) 1475 allocate( zpic(klon)) 1476 allocate( zval(klon)) 1477 allocate( rugoro(klon)) 1478 allocate( zuthe(klon),zvthe(klon)) 1479 allocate( agesno(klon,nbsrf)) 1480 allocate( alb_neig(klon)) 1481 allocate( run_off_lic_0(klon)) 1482 allocate( ema_workcbmf(klon)) 1483 allocate( ema_cbmf(klon)) 1484 allocate( ema_pcb(klon)) 1485 allocate( ema_pct(klon)) 1486 allocate( Ma(klon,klev) ) 1487 allocate( qcondc(klon,klev)) 1488 allocate( ema_work1(klon, klev), ema_work2(klon, klev)) 1489 allocate( wd(klon) ) 1490 allocate( pfrac_impa(klon,klev)) 1491 allocate( pfrac_nucl(klon,klev)) 1492 allocate( pfrac_1nucl(klon,klev)) 1493 allocate( rain_fall(klon) ) 1494 allocate( snow_fall(klon) ) 1495 allocate( total_rain(klon), nday_rain(klon)) 1496 allocate( dlw(klon) ) 1497 allocate( fder(klon) ) 1498 allocate( frugs(klon,nbsrf) ) 1499 allocate( pctsrf(klon,nbsrf)) 1500 allocate( albsol(klon)) 1501 allocate( albsollw(klon)) 1502 allocate( wo(klon,klev)) 1503 allocate( clwcon(klon,klev),rnebcon(klon,klev)) 1504 allocate( heat(klon,klev) ) 1505 allocate( heat0(klon,klev) ) 1506 allocate( cool(klon,klev) ) 1507 allocate( cool0(klon,klev) ) 1508 allocate( topsw(klon), toplw(klon), solsw(klon), sollw(klon)) 1509 allocate( sollwdown(klon) ) 1510 allocate( sollwdownclr(klon) ) 1511 allocate( toplwdown(klon) ) 1512 allocate( toplwdownclr(klon) ) 1513 allocate( topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon)) 1514 allocate( albpla(klon)) 1515 allocate( cape(klon) ) 1516 allocate( pbase(klon) ) 1517 allocate( bbase(klon) ) 1518 allocate( ibas_con(klon), itop_con(klon)) 1519 allocate( ratqs(klon,klev)) 1520 allocate( sulfate_pi(klon, klev)) 1521 allocate( paire_ter(klon)) 1522 allocate(tsumSTD(klon,nlevSTD,nout)) 1523 allocate(usumSTD(klon,nlevSTD,nout)) 1524 allocate(vsumSTD(klon,nlevSTD,nout)) 1525 allocate(wsumSTD(klon,nlevSTD,nout)) 1526 allocate(phisumSTD(klon,nlevSTD,nout)) 1527 allocate(qsumSTD(klon,nlevSTD,nout)) 1528 allocate(rhsumSTD(klon,nlevSTD,nout)) 1529 allocate(uvsumSTD(klon,nlevSTD,nout)) 1530 allocate(vqsumSTD(klon,nlevSTD,nout)) 1531 allocate(vTsumSTD(klon,nlevSTD,nout)) 1532 allocate(wqsumSTD(klon,nlevSTD,nout)) 1533 allocate( vphisumSTD(klon,nlevSTD,nout)) 1534 allocate( wTsumSTD(klon,nlevSTD,nout)) 1535 allocate( u2sumSTD(klon,nlevSTD,nout)) 1536 allocate( v2sumSTD(klon,nlevSTD,nout)) 1537 allocate( T2sumSTD(klon,nlevSTD,nout)) 1538 allocate( seed_old(klon,napisccp)) 1539 allocate( pct_ocean(klon,nbregdyn)) 1540 allocate( rlonPOS(klon)) 1541 allocate( newsst(klon)) 1542 allocate( zqasc(klon,klev)) 1543 allocate( therm(klon, nbsrf)) 1544 allocate( rain_con(klon)) 1545 allocate( pblt(klon, nbsrf)) 1546 allocate( t2m(klon,nbsrf), q2m(klon,nbsrf) ) 1547 allocate( u10m(klon,nbsrf), v10m(klon,nbsrf)) 1548 allocate( topswad(klon), solswad(klon)) 1549 allocate( topswai(klon), solswai(klon) ) 1550 allocate( ffonte(klon,nbsrf)) 1551 allocate( fqcalving(klon,nbsrf)) 1552 allocate( fqfonte(klon,nbsrf)) 1553 allocate( pblh(klon, nbsrf)) 1554 allocate( plcl(klon, nbsrf)) 1555 allocate( capCL(klon, nbsrf)) 1556 allocate( oliqCL(klon, nbsrf)) 1557 allocate( cteiCL(klon, nbsrf)) 1558 allocate( trmb1(klon, nbsrf)) 1559 allocate( trmb2(klon, nbsrf)) 1560 allocate( trmb3(klon, nbsrf)) 1561 allocate( clwcon0(klon,klev),rnebcon0(klon,klev)) 1562 allocate( tau_ae(klon,klev,2), piz_ae(klon,klev,2)) 1563 allocate( cg_ae(klon,klev,2)) 1564 allocate( snow_con(klon)) 1565 allocate( tnondef(klon,nlevSTD,nout)) 1566 allocate( d_u_con(klon,klev),d_v_con(klon,klev)) 1567 1568 1569 paire_ter(:)=0. 1570 clwcon(:,:)=0. 1571 rnebcon(:,:)=0. 1572 ratqs(:,:)=0. 1573 run_off_lic_0(:)=0. 1574 sollw(:)=0. 1575 ema_work1(:,:)=0. 1576 ema_work2(:,:)=0. 1577 cym Attention pbase pas initialise dans concvl !!!! 1578 pbase(:)=0 1579 1580 first=.false. 1581 endif 1582 1583 1584 modname = 'physiq' 1276 1585 cIM 1277 1586 IF (ip_ebil_phy.ge.1) THEN … … 1305 1614 ffonte(:,:)=0. 1306 1615 fqcalving(:,:)=0. 1616 fqfonte(:,:)=0. 1307 1617 piz_ae(:,:,:)=0. 1308 1618 tau_ae(:,:,:)=0. … … 1378 1688 . run_off_lic_0) 1379 1689 1690 DO i=1,klon 1691 IF ( abs( pctsrf(i, is_ter) + pctsrf(i, is_lic) + 1692 $ pctsrf(i, is_oce) + pctsrf(i, is_sic) - 1.) .GT. EPSFRA) 1693 $ THEN 1694 WRITE(*,*) 'physiq : pb sous surface au point ', i, 1695 $ pctsrf(i, 1 : nbsrf) 1696 ENDIF 1697 ENDDO 1698 1380 1699 c ATTENTION : il faudra a terme relire q2 dans l'etat initial 1381 1700 q2(:,:,:)=1.e-8 … … 1583 1902 #endif 1584 1903 1904 c#include "ini_histday_seri.h" 1585 1905 #include "ini_histday_seri.h" 1586 1906 … … 1606 1926 c 1607 1927 #ifdef INCA 1928 call VTe(VTphysiq) 1929 call VTb(VTinca) 1608 1930 iii = MOD(NINT(xjour),360) 1609 1931 calday = FLOAT(iii) + gmtime … … 1612 1934 WRITE(lunout,*) 'Appel CHEMINI ...' 1613 1935 #endif 1614 CALL chemini( rpi,1936 CALL chemini( 1615 1937 $ rg, 1616 1938 $ ra, … … 1628 1950 WRITE(lunout,*) 'OK.' 1629 1951 #endif 1952 call VTe(VTinca) 1953 call VTb(VTphysiq) 1630 1954 #endif 1631 1955 c … … 1865 2189 DO nsrf = 1, nbsrf 1866 2190 DO i = 1, klon 1867 c $$$ fsollw(i,nsrf) = sollwdown(i) - RSIGMA*ftsol(i,nsrf)**41868 c $$$ fsollw(i,nsrf) = sollw(i)2191 c@$$ fsollw(i,nsrf) = sollwdown(i) - RSIGMA*ftsol(i,nsrf)**4 2192 c@$$ fsollw(i,nsrf) = sollw(i) 1869 2193 fsollw(i,nsrf) = sollw(i) 1870 2194 $ + 4.0*RSIGMA*ztsol(i)**3 * (ztsol(i)-ftsol(i,nsrf)) … … 1872 2196 ENDDO 1873 2197 ENDDO 1874 2198 2199 cYM !!!!!!!!!!!!!!!!!!!!!!!!!!!! 2200 cYM Attention verrue 2201 cYM ---> A supprimer plus tard 2202 cYM pour etre integre dans 2203 cYM ORCHIDEE 2204 DO i = 1, klon 2205 sollwdown(i)=sollw(i)+RSIGMA*ztsol(i)**4 2206 ENDDO 2207 cYM !!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2208 1875 2209 fder = dlw 1876 2210 2211 if (mydebug) then 2212 call writefield_phy('u_seri',u_seri,llm) 2213 call writefield_phy('v_seri',v_seri,llm) 2214 call writefield_phy('t_seri',t_seri,llm) 2215 call writefield_phy('q_seri',q_seri,llm) 2216 endif 2217 1877 2218 IF (check) THEN 1878 2219 amn=MIN(tslab(1),1000.) … … 1906 2247 s pblh,capCL,oliqCL,cteiCL,pblT, 1907 2248 s therm,trmb1,trmb2,trmb3,plcl, 1908 s fqcalving, f fonte, run_off_lic_0,2249 s fqcalving, fqfonte,ffonte, run_off_lic_0, 1909 2250 cIM "slab" ocean 1910 2251 s fluxo, fluxg, tslab, seaice) … … 1948 2289 ENDDO 1949 2290 ENDDO 2291 2292 if (mydebug) then 2293 call writefield_phy('u_seri',u_seri,llm) 2294 call writefield_phy('v_seri',v_seri,llm) 2295 call writefield_phy('t_seri',t_seri,llm) 2296 call writefield_phy('q_seri',q_seri,llm) 2297 endif 2298 2299 1950 2300 cIM 1951 2301 IF (ip_ebil_phy.ge.2) THEN … … 1975 2325 zxffonte(i) = 0.0 1976 2326 zxfqcalving(i) = 0.0 2327 zxfqfonte(i) = 0.0 1977 2328 cIM cf. AM 081204 BEG 1978 2329 c … … 2016 2367 zxfqcalving(i) = zxfqcalving(i) + 2017 2368 . fqcalving(i,nsrf)*pctsrf(i,nsrf) 2369 zxfqfonte(i) = zxfqfonte(i) + 2370 . fqfonte(i,nsrf)*pctsrf(i,nsrf) 2018 2371 cIM cf. AM 081204 BEG 2019 2372 s_pblh(i) = s_pblh(i) + pblh(i,nsrf)*pctsrf(i,nsrf) … … 2054 2407 ffonte(i,nsrf) = zxffonte(i) 2055 2408 fqcalving(i,nsrf) = zxfqcalving(i) 2409 fqfonte(i,nsrf) = zxfqfonte(i) 2056 2410 pblh(i,nsrf)=s_pblh(i) 2057 2411 plcl(i,nsrf)=s_lcl(i) … … 2168 2522 ENDIF ! ok_cvl 2169 2523 2524 c 2525 c Correction precip 2526 rain_con = rain_con * cvl_corr 2527 snow_con = snow_con * cvl_corr 2528 c 2529 2170 2530 IF (.NOT. ok_gust) THEN 2171 2531 do i = 1, klon … … 2229 2589 ENDDO 2230 2590 ENDDO 2591 2592 if (mydebug) then 2593 call writefield_phy('u_seri',u_seri,llm) 2594 call writefield_phy('v_seri',v_seri,llm) 2595 call writefield_phy('t_seri',t_seri,llm) 2596 call writefield_phy('q_seri',q_seri,llm) 2597 endif 2598 2231 2599 cIM 2232 2600 IF (ip_ebil_phy.ge.2) THEN … … 2429 2797 s , fs_bound, fq_bound ) 2430 2798 END IF 2799 2800 if (mydebug) then 2801 call writefield_phy('u_seri',u_seri,llm) 2802 call writefield_phy('v_seri',v_seri,llm) 2803 call writefield_phy('t_seri',t_seri,llm) 2804 call writefield_phy('q_seri',q_seri,llm) 2805 endif 2806 2431 2807 c 2432 2808 c------------------------------------------------------------------- … … 2477 2853 ELSE IF (iflag_cldcon.eq.3) THEN 2478 2854 c On prend pour les nuages convectifs le max du calcul de la 2479 c convection et du calcul du pas de temps pr écédent diminuéd'un facteur2855 c convection et du calcul du pas de temps precedent diminue d'un facteur 2480 2856 c facttemps 2481 2857 c facttemps=pdtphys/1.e4 … … 2491 2867 enddo 2492 2868 enddo 2869 2870 c 2871 cjq - introduce the aerosol direct and first indirect radiative forcings 2872 cjq - Johannes Quaas, 27/11/2003 (quaas@lmd.jussieu.fr) 2873 IF (ok_ade.OR.ok_aie) THEN 2874 ! Get sulfate aerosol distribution 2875 CALL readsulfate(rjourvrai, debut, sulfate) 2876 CALL readsulfate_preind(rjourvrai, debut, sulfate_pi) 2877 2878 ! Calculate aerosol optical properties (Olivier Boucher) 2879 CALL aeropt(pplay, paprs, t_seri, sulfate, rhcl, 2880 . tau_ae, piz_ae, cg_ae, aerindex) 2881 cym 2882 ELSE 2883 tau_ae(:,:,:)=0.0 2884 piz_ae(:,:,:)=0.0 2885 cg_ae(:,:,:)=0.0 2886 cym 2887 ENDIF 2493 2888 2494 2889 c … … 2607 3002 . EXP((Lheat *qsat2m(i))/(RCPD*zt2m(i))) 2608 3003 ENDDO 2609 c 2610 cjq - introduce the aerosol direct and first indirect radiative forcings 2611 cjq - Johannes Quaas, 27/11/2003 (quaas@lmd.jussieu.fr) 2612 IF (ok_ade.OR.ok_aie) THEN 2613 ! Get sulfate aerosol distribution 2614 CALL readsulfate(rjourvrai, debut, sulfate) 2615 CALL readsulfate_preind(rjourvrai, debut, sulfate_pi) 2616 2617 ! Calculate aerosol optical properties (Olivier Boucher) 2618 CALL aeropt(pplay, paprs, t_seri, sulfate, rhcl, 2619 . tau_ae, piz_ae, cg_ae, aerindex) 2620 cym 2621 ELSE 2622 tau_ae(:,:,:)=0.0 2623 piz_ae(:,:,:)=0.0 2624 cg_ae(:,:,:)=0.0 2625 cym 2626 ENDIF 3004 2627 3005 2628 3006 #ifdef INCA 3007 call VTe(VTphysiq) 3008 call VTb(VTinca) 2629 3009 calday = FLOAT(julien) + gmtime 2630 3010 2631 3011 #ifdef INCA_AER 2632 call AEROSOL_METEO_CALC(calday,pdtphys,pplay,paprs,t,pmflxr,pmflxs ,2633 & prfl,psfl,pctsrf(1,3),airephy,xjour,rlat,rlon)3012 call AEROSOL_METEO_CALC(calday,pdtphys,pplay,paprs,t,pmflxr,pmflxs 3013 & ,prfl,psfl,pctsrf,airephy,xjour,rlat,rlon,u10m,v10m) 2634 3014 #endif 2635 3015 … … 2684 3064 WRITE(lunout,*)'OK.' 2685 3065 #endif 3066 call VTe(VTinca) 3067 call VTb(VTphysiq) 2686 3068 #endif 2687 3069 c … … 2722 3104 . + falblw(i,is_sic) * pctsrf(i,is_sic) 2723 3105 ENDDO 3106 3107 if (mydebug) then 3108 call writefield_phy('u_seri',u_seri,llm) 3109 call writefield_phy('v_seri',v_seri,llm) 3110 call writefield_phy('t_seri',t_seri,llm) 3111 call writefield_phy('q_seri',q_seri,llm) 3112 endif 3113 2724 3114 CALL radlwsw ! nouveau rayonnement (compatible Arpege-IFS) 2725 3115 e (dist, rmu0, fract, … … 2750 3140 ENDDO 2751 3141 ENDDO 3142 c 3143 if (mydebug) then 3144 call writefield_phy('u_seri',u_seri,llm) 3145 call writefield_phy('v_seri',v_seri,llm) 3146 call writefield_phy('t_seri',t_seri,llm) 3147 call writefield_phy('q_seri',q_seri,llm) 3148 endif 3149 2752 3150 cIM 2753 3151 IF (ip_ebil_phy.ge.2) THEN … … 2837 3235 ENDIF ! fin de test sur ok_orodr 2838 3236 c 3237 if (mydebug) then 3238 call writefield_phy('u_seri',u_seri,llm) 3239 call writefield_phy('v_seri',v_seri,llm) 3240 call writefield_phy('t_seri',t_seri,llm) 3241 call writefield_phy('q_seri',q_seri,llm) 3242 endif 3243 2839 3244 IF (ok_orolf) THEN 2840 3245 c … … 2872 3277 C STRESS NECESSAIRES: TOUTE LA PHYSIQUE 2873 3278 3279 if (mydebug) then 3280 call writefield_phy('u_seri',u_seri,llm) 3281 call writefield_phy('v_seri',v_seri,llm) 3282 call writefield_phy('t_seri',t_seri,llm) 3283 call writefield_phy('q_seri',q_seri,llm) 3284 endif 3285 2874 3286 DO i = 1, klon 2875 3287 zustrph(i)=0. … … 2887 3299 cIM calcul composantes axiales du moment angulaire et couple des montagnes 2888 3300 c 2889 CALL aaam_bud (27,klon,klev,rjourvrai,gmtime, 2890 C ra,rg,romega, 2891 C rlat,rlon,pphis, 2892 C zustrdr,zustrli,zustrph, 2893 C zvstrdr,zvstrli,zvstrph, 2894 C paprs,u,v, 2895 C aam, torsfc) 3301 IF (monocpu) THEN 3302 3303 CALL aaam_bud (27,klon,klev,rjourvrai,gmtime, 3304 C ra,rg,romega, 3305 C rlat,rlon,pphis, 3306 C zustrdr,zustrli,zustrph, 3307 C zvstrdr,zvstrli,zvstrph, 3308 C paprs,u,v, 3309 C aam, torsfc) 3310 ENDIF 2896 3311 cIM cf. FLott END 2897 3312 cIM … … 3058 3473 c 3059 3474 #ifdef INCA 3475 call VTe(VTphysiq) 3476 call VTb(VTinca) 3060 3477 #ifdef INCAINFO 3061 3478 WRITE(lunout,*)'Appel CHEMHOOK_END ...' … … 3068 3485 $ nbtr, 3069 3486 $ paprs, 3070 #ifdef INCA_CH43071 3487 $ q_seri, 3072 #endif3073 3488 $ annee_ref, 3074 3489 $ day_ini, 3490 $ airephy, 3075 3491 #ifdef INCA_AER 3076 3492 $ xjour, 3077 3493 $ pphi, 3078 3494 $ pphis, 3079 $ zx_rh, 3080 $ qx(1,1,1)) 3495 $ zx_rh) 3081 3496 #else 3082 3497 $ xjour) … … 3085 3500 WRITE(lunout,*)'OK.' 3086 3501 #endif 3502 call VTe(VTinca) 3503 call VTb(VTphysiq) 3087 3504 #endif 3088 3505 … … 3091 3508 c Convertir les incrementations en tendances 3092 3509 c 3510 if (mydebug) then 3511 call writefield_phy('u_seri',u_seri,llm) 3512 call writefield_phy('v_seri',v_seri,llm) 3513 call writefield_phy('t_seri',t_seri,llm) 3514 call writefield_phy('q_seri',q_seri,llm) 3515 endif 3516 3093 3517 DO k = 1, klev 3094 3518 DO i = 1, klon
Note: See TracChangeset
for help on using the changeset viewer.