Changeset 5082 for LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm
- Timestamp:
- Jul 19, 2024, 5:41:58 PM (4 months ago)
- Location:
- LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/aeropt_5wv_rrtm.F90
r3288 r5082 356 356 ENDDO 357 357 358 IF (flag_aerosol .EQ. 1) THEN358 IF (flag_aerosol == 1) THEN 359 359 nb_aer = 2 360 360 ALLOCATE (aerosol_name(nb_aer)) 361 361 aerosol_name(1) = id_ASSO4M_phy 362 362 aerosol_name(2) = id_CSSO4M_phy 363 ELSEIF (flag_aerosol .EQ.2) THEN363 ELSEIF (flag_aerosol == 2) THEN 364 364 nb_aer = 2 365 365 ALLOCATE (aerosol_name(nb_aer)) 366 366 aerosol_name(1) = id_ASBCM_phy 367 367 aerosol_name(2) = id_AIBCM_phy 368 ELSEIF (flag_aerosol .EQ. 3) THEN368 ELSEIF (flag_aerosol == 3) THEN 369 369 nb_aer = 2 370 370 ALLOCATE (aerosol_name(nb_aer)) 371 371 aerosol_name(1) = id_ASPOMM_phy 372 372 aerosol_name(2) = id_AIPOMM_phy 373 ELSEIF (flag_aerosol .EQ. 4) THEN373 ELSEIF (flag_aerosol == 4) THEN 374 374 nb_aer = 3 375 375 ALLOCATE (aerosol_name(nb_aer)) … … 377 377 aerosol_name(2) = id_SSSSM_phy 378 378 aerosol_name(3) = id_ASSSM_phy 379 ELSEIF (flag_aerosol .EQ. 5) THEN379 ELSEIF (flag_aerosol == 5) THEN 380 380 nb_aer = 1 381 381 ALLOCATE (aerosol_name(nb_aer)) 382 382 aerosol_name(1) = id_CIDUSTM_phy 383 ELSEIF (flag_aerosol .EQ. 6 .OR. flag_aerosol .EQ. 7 ) THEN383 ELSEIF (flag_aerosol == 6 .OR. flag_aerosol == 7 ) THEN 384 384 nb_aer = 13 385 385 ALLOCATE (aerosol_name(nb_aer)) … … 417 417 rh(i,k)=MIN(RHcl(i,k)*100.,RH_MAX) 418 418 RH_num(i,k) = INT( rh(i,k)/10. + 1.) 419 IF (rh(i,k) .GT.85.) RH_num(i,k)=10420 IF (rh(i,k) .GT.90.) RH_num(i,k)=11419 IF (rh(i,k)>85.) RH_num(i,k)=10 420 IF (rh(i,k)>90.) RH_num(i,k)=11 421 421 delta(i,k)=(rh(i,k)-RH_tab(RH_num(i,k)))*fact_RH(RH_num(i,k)) 422 422 ENDDO … … 425 425 DO m=1,nb_aer ! tau is only computed for each mass 426 426 fac=1.0 427 IF (aerosol_name(m) .EQ.id_ASBCM_phy) THEN427 IF (aerosol_name(m)==id_ASBCM_phy) THEN 428 428 soluble=.TRUE. 429 429 spsol=1 430 ELSEIF (aerosol_name(m) .EQ.id_ASPOMM_phy) THEN430 ELSEIF (aerosol_name(m)==id_ASPOMM_phy) THEN 431 431 soluble=.TRUE. 432 432 spsol=2 433 ELSEIF (aerosol_name(m) .EQ.id_CSSO4M_phy) THEN433 ELSEIF (aerosol_name(m)==id_CSSO4M_phy) THEN 434 434 soluble=.TRUE. 435 435 spsol=3 436 436 !fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD 437 437 fac=0.0 !--6 March 2017 - OB as Didier H said CSSO4 should not be used 438 ELSEIF (aerosol_name(m) .EQ.id_ASSO4M_phy) THEN438 ELSEIF (aerosol_name(m)==id_ASSO4M_phy) THEN 439 439 soluble=.TRUE. 440 440 spsol=4 441 441 fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD 442 ELSEIF (aerosol_name(m) .EQ.id_SSSSM_phy) THEN442 ELSEIF (aerosol_name(m)==id_SSSSM_phy) THEN 443 443 soluble=.TRUE. 444 444 spsol=5 445 ELSEIF (aerosol_name(m) .EQ.id_CSSSM_phy) THEN445 ELSEIF (aerosol_name(m)==id_CSSSM_phy) THEN 446 446 soluble=.TRUE. 447 447 spsol=6 448 ELSEIF (aerosol_name(m) .EQ.id_ASSSM_phy) THEN448 ELSEIF (aerosol_name(m)==id_ASSSM_phy) THEN 449 449 soluble=.TRUE. 450 450 spsol=7 451 ELSEIF (aerosol_name(m) .EQ.id_CSNO3M_phy) THEN451 ELSEIF (aerosol_name(m)==id_CSNO3M_phy) THEN 452 452 soluble=.TRUE. 453 453 spsol=8 454 454 fac=1.2903 ! NO3NH4/NO3 / mass conversion factor for AOD 455 ELSEIF (aerosol_name(m) .EQ.id_ASNO3M_phy) THEN455 ELSEIF (aerosol_name(m)==id_ASNO3M_phy) THEN 456 456 soluble=.TRUE. 457 457 spsol=9 458 458 fac=1.2903 ! NO3NH4/NO3 / mass conversion factor for AOD 459 ELSEIF (aerosol_name(m) .EQ.id_CIDUSTM_phy) THEN459 ELSEIF (aerosol_name(m)==id_CIDUSTM_phy) THEN 460 460 soluble=.FALSE. 461 461 spinsol=1 462 ELSEIF (aerosol_name(m) .EQ.id_AIBCM_phy) THEN462 ELSEIF (aerosol_name(m)==id_AIBCM_phy) THEN 463 463 soluble=.FALSE. 464 464 spinsol=2 465 ELSEIF (aerosol_name(m) .EQ.id_AIPOMM_phy) THEN465 ELSEIF (aerosol_name(m)==id_AIPOMM_phy) THEN 466 466 soluble=.FALSE. 467 467 spinsol=3 468 ELSEIF (aerosol_name(m) .EQ.id_CINO3M_phy) THEN468 ELSEIF (aerosol_name(m)==id_CINO3M_phy) THEN 469 469 soluble=.FALSE. 470 470 spinsol=4 … … 481 481 !--to save time 670 and AI are not computed for CMIP6 482 482 !IF (la.NE.la443.AND.la.NE.la550.AND.la.NE.la670.AND.la.NE.la865) CYCLE 483 IF (la .NE.la443.AND.la.NE.la550.AND.la.NE.la865) CYCLE483 IF (la/=la443.AND.la/=la550.AND.la/=la865) CYCLE 484 484 485 485 IF (soluble) THEN ! For soluble aerosol 486 486 487 487 !--treat special case of soluble BC internal mixture 488 IF (spsol .EQ.1 .AND. flag_bc_internal_mixture) THEN488 IF (spsol==1 .AND. flag_bc_internal_mixture) THEN 489 489 490 490 DO k=1, klev … … 493 493 BC_massfra = m_allaer(i,k,id_ASBCM_phy)/(m_allaer(i,k,id_ASBCM_phy)+m_allaer(i,k,id_ASSO4M_phy)) 494 494 495 IF (BC_massfra .GE.0.20) THEN495 IF (BC_massfra>=0.20) THEN 496 496 classbc = 6 497 ELSEIF (BC_massfra .GE.0.10) THEN497 ELSEIF (BC_massfra>=0.10) THEN 498 498 classbc = 5 499 ELSEIF (BC_massfra .GE.0.05) THEN499 ELSEIF (BC_massfra>=0.05) THEN 500 500 classbc = 4 501 ELSEIF (BC_massfra .GE.0.02) THEN501 ELSEIF (BC_massfra>=0.02) THEN 502 502 classbc = 3 503 ELSEIF (BC_massfra .GE.0.01) THEN503 ELSEIF (BC_massfra>=0.01) THEN 504 504 classbc = 2 505 505 ELSE … … 513 513 tausum(i,la,aerindex)=tausum(i,la,aerindex)+tau(i,k,la,aerindex) 514 514 515 IF (la .EQ.la550.AND.dryaod_diag) THEN515 IF (la==la550.AND.dryaod_diag) THEN 516 516 tau_ae5wv_int = alpha_MG_5wv(1,la,classbc) 517 517 drytausum(i,aerindex)=drytausum(i,aerindex)+m_allaer(i,k,aerindex)/1.e6*zdh(i,k)*tau_ae5wv_int*fac 518 518 ENDIF 519 519 520 IF (la .EQ.la550) THEN520 IF (la==la550) THEN 521 521 abs_ae5wv_int = abs_MG_5wv(RH_num(i,k),la,classbc)+DELTA(i,k)* & 522 522 (abs_MG_5wv(RH_num(i,k)+1,la,classbc) - & … … 539 539 tausum(i,la,aerindex)=tausum(i,la,aerindex)+tau(i,k,la,aerindex) 540 540 541 IF (la .EQ.la550.AND.dryaod_diag) THEN541 IF (la==la550.AND.dryaod_diag) THEN 542 542 tau_ae5wv_int = alpha_aers_5wv(1,la,spsol) 543 543 drytausum(i,aerindex)=drytausum(i,aerindex)+m_allaer(i,k,aerindex)/1.e6*zdh(i,k)*tau_ae5wv_int*fac 544 544 ENDIF 545 545 546 IF (la .EQ.la550) THEN546 IF (la==la550) THEN 547 547 abs_ae5wv_int = abs_aers_5wv(RH_num(i,k),la,spsol)+DELTA(i,k)* & 548 548 (abs_aers_5wv(RH_num(i,k)+1,la,spsol) - & … … 566 566 tausum(i,la,aerindex)= tausum(i,la,aerindex)+tau(i,k,la,aerindex) 567 567 568 IF (la .EQ.la550.AND.dryaod_diag) THEN568 IF (la==la550.AND.dryaod_diag) THEN 569 569 drytausum(i,aerindex)= drytausum(i,aerindex)+tau(i,k,la,aerindex) 570 570 ENDIF 571 571 572 IF (la .EQ.la550) THEN572 IF (la==la550) THEN 573 573 abs_ae5wv_int = abs_aeri_5wv(la,spinsol) 574 574 abs550aer(i)=abs550aer(i)+m_allaer(i,k,aerindex)/1.e6*zdh(i,k)*abs_ae5wv_int*fac -
LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/aeropt_6bands_rrtm.F90
r4165 r5082 16 16 ! Anne Cozic Avril 2009 17 17 ! a partir d'une sous-routine de Johannes Quaas pour les sulfates 18 ! Olivier Boucher f évrier 2014 pour passage àRRTM19 ! a partir des propri étés optiques fournies par Yves Balkanski18 ! Olivier Boucher f�vrier 2014 pour passage � RRTM 19 ! a partir des propri�t�s optiques fournies par Yves Balkanski 20 20 ! 21 21 IMPLICIT NONE … … 477 477 spinsol = 0 478 478 479 IF (NSW .NE.nbands_sw_rrtm) THEN479 IF (NSW/=nbands_sw_rrtm) THEN 480 480 CALL abort_physic(modname,'Erreur NSW doit etre egal a 6 pour cette routine',1) 481 481 ENDIF … … 483 483 zdh(:,:)=pdel(:,:)/(RG*zrho(:,:)) ! m 484 484 485 IF (flag_aerosol .EQ. 1) THEN485 IF (flag_aerosol == 1) THEN 486 486 nb_aer = 2 487 487 ALLOCATE (aerosol_name(nb_aer)) 488 488 aerosol_name(1) = id_ASSO4M_phy 489 489 aerosol_name(2) = id_CSSO4M_phy 490 ELSEIF (flag_aerosol .EQ.2) THEN490 ELSEIF (flag_aerosol == 2) THEN 491 491 nb_aer = 2 492 492 ALLOCATE (aerosol_name(nb_aer)) 493 493 aerosol_name(1) = id_ASBCM_phy 494 494 aerosol_name(2) = id_AIBCM_phy 495 ELSEIF (flag_aerosol .EQ. 3) THEN495 ELSEIF (flag_aerosol == 3) THEN 496 496 nb_aer = 2 497 497 ALLOCATE (aerosol_name(nb_aer)) 498 498 aerosol_name(1) = id_ASPOMM_phy 499 499 aerosol_name(2) = id_AIPOMM_phy 500 ELSEIF (flag_aerosol .EQ. 4) THEN500 ELSEIF (flag_aerosol == 4) THEN 501 501 nb_aer = 3 502 502 ALLOCATE (aerosol_name(nb_aer)) … … 504 504 aerosol_name(2) = id_SSSSM_phy 505 505 aerosol_name(3) = id_ASSSM_phy 506 ELSEIF (flag_aerosol .EQ. 5) THEN506 ELSEIF (flag_aerosol == 5) THEN 507 507 nb_aer = 1 508 508 ALLOCATE (aerosol_name(nb_aer)) 509 509 aerosol_name(1) = id_CIDUSTM_phy 510 ELSEIF (flag_aerosol .EQ. 6 .OR. flag_aerosol .EQ. 7 ) THEN510 ELSEIF (flag_aerosol == 6 .OR. flag_aerosol == 7 ) THEN 511 511 nb_aer = 13 512 512 ALLOCATE (aerosol_name(nb_aer)) … … 541 541 rh(i,k)=MIN(RHcl(i,k)*100.,RH_MAX) 542 542 RH_num(i,k) = INT(rh(i,k)/10. + 1.) 543 IF (rh(i,k) .GT.85.) RH_num(i,k)=10544 IF (rh(i,k) .GT.90.) RH_num(i,k)=11543 IF (rh(i,k)>85.) RH_num(i,k)=10 544 IF (rh(i,k)>90.) RH_num(i,k)=11 545 545 delta(i,k)=(rh(i,k)-RH_tab(RH_num(i,k)))*fact_RH(RH_num(i,k)) 546 546 ENDDO … … 557 557 DO m=1,nb_aer ! tau is only computed for each mass 558 558 fac=1.0 559 IF (aerosol_name(m) .EQ.id_ASBCM_phy) THEN559 IF (aerosol_name(m)==id_ASBCM_phy) THEN 560 560 soluble=.TRUE. 561 561 spsol=1 562 ELSEIF (aerosol_name(m) .EQ.id_ASPOMM_phy) THEN562 ELSEIF (aerosol_name(m)==id_ASPOMM_phy) THEN 563 563 soluble=.TRUE. 564 564 spsol=2 565 ELSEIF (aerosol_name(m) .EQ.id_CSSO4M_phy) THEN565 ELSEIF (aerosol_name(m)==id_CSSO4M_phy) THEN 566 566 soluble=.TRUE. 567 567 spsol=3 568 568 !fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD 569 569 fac=0.0 !--6 March 2017 - OB as Didier H said CSSO4 should not be used 570 ELSEIF (aerosol_name(m) .EQ.id_ASSO4M_phy) THEN570 ELSEIF (aerosol_name(m)==id_ASSO4M_phy) THEN 571 571 soluble=.TRUE. 572 572 spsol=4 573 573 fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD 574 ELSEIF (aerosol_name(m) .EQ.id_SSSSM_phy) THEN574 ELSEIF (aerosol_name(m)==id_SSSSM_phy) THEN 575 575 soluble=.TRUE. 576 576 spsol=5 577 ELSEIF (aerosol_name(m) .EQ.id_CSSSM_phy) THEN577 ELSEIF (aerosol_name(m)==id_CSSSM_phy) THEN 578 578 soluble=.TRUE. 579 579 spsol=6 580 ELSEIF (aerosol_name(m) .EQ.id_ASSSM_phy) THEN580 ELSEIF (aerosol_name(m)==id_ASSSM_phy) THEN 581 581 soluble=.TRUE. 582 582 spsol=7 583 ELSEIF (aerosol_name(m) .EQ.id_CSNO3M_phy) THEN583 ELSEIF (aerosol_name(m)==id_CSNO3M_phy) THEN 584 584 soluble=.TRUE. 585 585 spsol=8 586 586 fac=1.2903 ! NO3NH4/NO3 / mass conversion factor for AOD 587 ELSEIF (aerosol_name(m) .EQ.id_ASNO3M_phy) THEN587 ELSEIF (aerosol_name(m)==id_ASNO3M_phy) THEN 588 588 soluble=.TRUE. 589 589 spsol=9 590 590 fac=1.2903 ! NO3NH4/NO3 / mass conversion factor for AOD 591 ELSEIF (aerosol_name(m) .EQ.id_CIDUSTM_phy) THEN591 ELSEIF (aerosol_name(m)==id_CIDUSTM_phy) THEN 592 592 soluble=.FALSE. 593 593 spinsol=1 594 ELSEIF (aerosol_name(m) .EQ.id_AIBCM_phy) THEN594 ELSEIF (aerosol_name(m)==id_AIBCM_phy) THEN 595 595 soluble=.FALSE. 596 596 spinsol=2 597 ELSEIF (aerosol_name(m) .EQ.id_AIPOMM_phy) THEN597 ELSEIF (aerosol_name(m)==id_AIPOMM_phy) THEN 598 598 soluble=.FALSE. 599 599 spinsol=3 600 ELSEIF (aerosol_name(m) .EQ.id_CINO3M_phy) THEN600 ELSEIF (aerosol_name(m)==id_CINO3M_phy) THEN 601 601 soluble=.FALSE. 602 602 spinsol=4 … … 612 612 613 613 !--here we treat the special case of soluble BC internal mixture with Maxwell-Garnett rule 614 IF (spsol .EQ.1 .AND. flag_bc_internal_mixture) THEN614 IF (spsol==1 .AND. flag_bc_internal_mixture) THEN 615 615 616 616 DO k=1, klev … … 623 623 BC_massfra = m_allaer(i,k,id_ASBCM_phy)/(m_allaer(i,k,id_ASBCM_phy)+m_allaer(i,k,id_ASSO4M_phy)) 624 624 625 IF (BC_massfra .GE.0.20) THEN625 IF (BC_massfra>=0.20) THEN 626 626 classbc = 6 627 ELSEIF (BC_massfra .GE.0.10) THEN627 ELSEIF (BC_massfra>=0.10) THEN 628 628 classbc = 5 629 ELSEIF (BC_massfra .GE.0.05) THEN629 ELSEIF (BC_massfra>=0.05) THEN 630 630 classbc = 4 631 ELSEIF (BC_massfra .GE.0.02) THEN631 ELSEIF (BC_massfra>=0.02) THEN 632 632 classbc = 3 633 ELSEIF (BC_massfra .GE.0.01) THEN633 ELSEIF (BC_massfra>=0.01) THEN 634 634 classbc = 2 635 635 ELSE … … 640 640 BC_massfra_pi = m_allaer_pi(i,k,id_ASBCM_phy)/(m_allaer_pi(i,k,id_ASBCM_phy)+m_allaer_pi(i,k,id_ASSO4M_phy)) 641 641 642 IF (BC_massfra_pi .GE.0.20) THEN642 IF (BC_massfra_pi>=0.20) THEN 643 643 classbc_pi = 6 644 ELSEIF (BC_massfra_pi .GE.0.10) THEN644 ELSEIF (BC_massfra_pi>=0.10) THEN 645 645 classbc_pi = 5 646 ELSEIF (BC_massfra_pi .GE.0.05) THEN646 ELSEIF (BC_massfra_pi>=0.05) THEN 647 647 classbc_pi = 4 648 ELSEIF (BC_massfra_pi .GE.0.02) THEN648 ELSEIF (BC_massfra_pi>=0.02) THEN 649 649 classbc_pi = 3 650 ELSEIF (BC_massfra_pi .GE.0.01) THEN650 ELSEIF (BC_massfra_pi>=0.01) THEN 651 651 classbc_pi = 2 652 652 ELSE … … 726 726 727 727 !--external mixture case for soluble BC 728 IF (spsol .EQ.1) THEN728 IF (spsol==1) THEN 729 729 piz_ae_pi(:,:,aerindex,:) = piz_ae(:,:,aerindex,:) 730 730 cg_ae_pi(:,:,aerindex,:) = cg_ae(:,:,aerindex,:) … … 780 780 /tau_allaer(i,k,2,inu) 781 781 piz_allaer(i,k,2,inu)=MIN(MAX(piz_allaer(i,k,2,inu),0.01),1.0) 782 IF (tau_allaer(i,k,2,inu) .LE.tau_min) piz_allaer(i,k,2,inu)=1.0782 IF (tau_allaer(i,k,2,inu)<=tau_min) piz_allaer(i,k,2,inu)=1.0 783 783 784 784 cg_allaer(i,k,2,inu)=(tau_ae(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)*cg_ae(i,k,id_ASSO4M_phy,inu)+ & … … 820 820 /tau_allaer(i,k,1,inu) 821 821 piz_allaer(i,k,1,inu)=MIN(MAX(piz_allaer(i,k,1,inu),0.01),1.0) 822 IF (tau_allaer(i,k,1,inu) .LE.tau_min) piz_allaer(i,k,1,inu)=1.0822 IF (tau_allaer(i,k,1,inu)<=tau_min) piz_allaer(i,k,1,inu)=1.0 823 823 824 824 cg_allaer(i,k,1,inu)=(tau_ae_pi(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)*cg_ae(i,k,id_ASSO4M_phy,inu)+ & -
LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/aeropt_lw_rrtm.F90
r3288 r5082 40 40 modname='aeropt_lw_rrtm' 41 41 ! 42 IF (NLW .NE.nbands_lw_rrtm) THEN42 IF (NLW/=nbands_lw_rrtm) THEN 43 43 CALL abort_physic(modname,'Erreur NLW doit etre egal a 16 pour cette routine',1) 44 44 ENDIF … … 46 46 IF (ok_alw) THEN !--aerosol LW effects 47 47 ! 48 IF (flag_aerosol .EQ.5.OR.flag_aerosol.EQ.6.OR.flag_aerosol.EQ.7) THEN !-Dust48 IF (flag_aerosol==5.OR.flag_aerosol==6.OR.flag_aerosol==7) THEN !-Dust 49 49 ! 50 50 zdh(:,:)=pdel(:,:)/(RG*zrho(:,:)) ! m -
LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/dump2ds.F
r1990 r5082 8 8 c NAN et INF ajoute aux plots Pat fin 2006 9 9 c ================================================================== 10 c Comme dump2d sauf que le signe est pr éservé, la valeur zero10 c Comme dump2d sauf que le signe est pr�serv�, la valeur zero 11 11 c identifiee par un blanc. 12 12 c detection des Infty (= ou -) et NaN (?) … … 20 20 logical zinf,znan,zsign 21 21 CHARACTER (len=*) :: nom_z 22 INTEGER *4icheck(2)22 INTEGER(kind=4) icheck(2) 23 23 EQUIVALENCE(az,icheck) 24 24 EQUIVALENCE(iform,jform) … … 39 39 DO 10003 j=1,jm 40 40 DO 10005 i=1,im 41 IF(.NOT.( z(i,j) .GT.zmax))GOTO 1000741 IF(.NOT.( z(i,j)>zmax))GOTO 10007 42 42 zmax=z(i,j) 43 43 imax=i 44 44 jmax=j 45 10007 IF(.NOT.( z(i,j) .LT.zmin))GOTO 1000945 10007 IF(.NOT.( z(i,j)<zmin))GOTO 10009 46 46 zmin=z(i,j) 47 47 imin=i 48 48 jmin=j 49 10009 IF(.NOT.( z(i,j) .eq.0.))GOTO 1001149 10009 IF(.NOT.( z(i,j)==0.))GOTO 10011 50 50 kzero=kzero+1 51 51 10011 CONTINUE … … 53 53 10006 CONTINUE 54 54 10003 CONTINUE 55 10004 zsign=(sign(1.,zmin)*sign(1.,zmax) .gt.0.)55 10004 zsign=(sign(1.,zmin)*sign(1.,zmax)>0.) 56 56 WRITE(*,*)'>>> dump2ds: ',trim(nom_z) 57 57 PRINT*,'>>> ',kzero,' zero values <<<' 58 IF(.NOT.( ZMin .lt.0.))GOTO 1001358 IF(.NOT.( ZMin<0.))GOTO 10013 59 59 PRINT2000,' [MIN:',zmin,'(',imin,',',jmin,') (-@zyxwvutsrqpon NOPQ 60 60 *RSTUVWXYZ*+) ',zmax,'(',imax,',',jmax,'):MAX]' … … 64 64 10014 CONTINUE 65 65 2000 Format(a,1pg11.4,a1,i3,a1,i3,a,1pg11.4,a1,i3,a1,i3,a) 66 IF(.NOT.( zmax .GT.zmin))GOTO 1001566 IF(.NOT.( zmax>zmin))GOTO 10015 67 67 zllm=max(abs(zmax),abs(zmin)) 68 68 zllu=min(abs(zmax),abs(zmin)) 69 if(im .ge.100)WRITE(*,'(104x,900i1)')(mod(i/100,10),i=100,im)69 if(im>=100)WRITE(*,'(104x,900i1)')(mod(i/100,10),i=100,im) 70 70 WRITE(*,'(14x,1000i1)')(mod(i/10,10),i=10,im) 71 71 WRITE(*,'(5x,1009i1)')(mod(i,10),i=1,im) … … 76 76 DO 10019 i=1,im 77 77 az=abs(z(i,j)) 78 IF(.NOT.( az .eq.0.))GOTO 1002178 IF(.NOT.( az==0.))GOTO 10021 79 79 kchar(i)=16 80 80 GOTO 10022 81 10021 IF(.NOT.((az .ne.0.and.icheck(1).eq.0.and.icheck(2).eq.2146435072))81 10021 IF(.NOT.((az/=0.and.icheck(1)==0.and.icheck(2)==2146435072)) 82 82 *)GOTO 10023 83 83 kchar(i)=31 84 84 zinf=.true. 85 85 GOTO 10022 86 10023 IF(.NOT.((az .ne.0.and.icheck(1).eq.0.and.icheck(2).eq.2146959360))86 10023 IF(.NOT.((az/=0.and.icheck(1)==0.and.icheck(2)==2146959360)) 87 87 *)GOTO 10024 88 88 kchar(i)=32 … … 94 94 10025 kchar(i)=NINT(13.*az/zllm+17) 95 95 10026 CONTINUE 96 10022 IF(.NOT.( z(i,j) .lt.0.))GOTO 1002796 10022 IF(.NOT.( z(i,j)<0.))GOTO 10027 97 97 kchar(i)=32-kchar(i) 98 98 10027 CONTINUE … … 104 104 WRITE(*,'(5x,1000i1)')(mod(i,10),i=1,im) 105 105 WRITE(*,'(14x,1000i1)')(mod(i/10,10),i=10,im) 106 if(im .ge.100)WRITE(*,'(104x,900i1)')(mod(i/100,10),i=100,im)106 if(im>=100)WRITE(*,'(104x,900i1)')(mod(i/100,10),i=100,im) 107 107 GOTO 10016 108 108 10015 print*,'>>> ZERO MAP <<<' -
LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/eq_regions_mod.F90
r2010 r5082 349 349 & w + p9) * w + p8) * w + p7) * w + p6) * w + p5) *& 350 350 & w + p4) * w + p3) * w + p2) * w + p1) * w + p0 351 if (n .gt.0) then351 if (n > 0) then 352 352 w = x - 1 353 353 do k = 2, n -
LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/gstats.F90
r1990 r5082 104 104 WRITE(CC,'(I4)')INUM 105 105 ! write(6,*) inum,cctype(inum) 106 IF(CCTYPE(INUM) .EQ."TRS".OR.CCTYPE(INUM).EQ.'MP-'.OR.CCTYPE(INUM).EQ.'MPL'&107 & .OR.CCTYPE(INUM) .EQ.'BAR'.OR.CCTYPE(INUM).EQ.'OMP') THEN106 IF(CCTYPE(INUM)=="TRS".OR.CCTYPE(INUM)=='MP-'.OR.CCTYPE(INUM)=='MPL'& 107 & .OR.CCTYPE(INUM)=='BAR'.OR.CCTYPE(INUM)=='OMP') THEN 108 108 CCDESC_DRHOOK(INUM)='>'//CCTYPE(INUM)//'-'//CCDESC(INUM)(1:21)//'('//CC//')' 109 109 ENDIF … … 131 131 ! write(0,*) "CCTYPE=",CCTYPE(KNUM) 132 132 ! write(0,*) "CCDESC_DRHOOK=",CCDESC_DRHOOK(KNUM) 133 IF(CCTYPE(KNUM) .EQ."TRS")THEN133 IF(CCTYPE(KNUM)=="TRS")THEN 134 134 CALL DR_HOOK(CCDESC_DRHOOK(KNUM),KSWITCH,ZHOOK_HANDLE_TRANS) 135 ELSEIF(CCTYPE(KNUM) .EQ.'MP-')THEN135 ELSEIF(CCTYPE(KNUM)=='MP-')THEN 136 136 CALL DR_HOOK(CCDESC_DRHOOK(KNUM),KSWITCH,ZHOOK_HANDLE_COMMS) 137 ELSEIF(CCTYPE(KNUM) .EQ.'MPL'.AND.KNUM.NE.682)THEN137 ELSEIF(CCTYPE(KNUM)=='MPL'.AND.KNUM/=682)THEN 138 138 CALL DR_HOOK(CCDESC_DRHOOK(KNUM),KSWITCH,ZHOOK_HANDLE_COMMS1) 139 ELSEIF(CCTYPE(KNUM) .EQ.'OMP')THEN139 ELSEIF(CCTYPE(KNUM)=='OMP')THEN 140 140 ! CALL DR_HOOK(CCDESC_DRHOOK(KNUM),KSWITCH,ZHOOK_HANDLE) 141 141 ! MPL 1.12.08 : erreur a la compilation car zhook_handle est un tableau et non un 142 142 ! scalaire (PKEY) 143 143 CALL DR_HOOK(CCDESC_DRHOOK(KNUM),KSWITCH,ZTIME) 144 ELSEIF(CCTYPE(KNUM) .EQ.'BAR')THEN144 ELSEIF(CCTYPE(KNUM)=='BAR')THEN 145 145 CALL DR_HOOK(CCDESC_DRHOOK(KNUM),KSWITCH,ZHOOK_HANDLE_BARR) 146 146 ENDIF … … 207 207 THISTCPU(KNUM) = 0.0_JPRB 208 208 THISVCPU(KNUM) = 0.0_JPRB 209 IF(MYPROC_STATS .LE.NSTATS_MEM.AND.MYPROC_STATS.NE.0) THEN209 IF(MYPROC_STATS<=NSTATS_MEM.AND.MYPROC_STATS/=0) THEN 210 210 ! CALL getrss(IMEM) 211 211 ! IMEM = getrss()/1024 … … 215 215 IMEMC = 0 216 216 IF(LSTATS_ALLOC) IMEMC = GETCURHEAP()/1024 217 IF(IMEM > IIMEM.OR.IPAG > IIPAG.OR.(LSTATS_ALLOC.AND.(IMEMC .NE.IIMEMC))) THEN217 IF(IMEM > IIMEM.OR.IPAG > IIPAG.OR.(LSTATS_ALLOC.AND.(IMEMC/=IIMEMC))) THEN 218 218 IF(LLMFIRST) THEN 219 219 WRITE(0,*) ".---------------------------------------------------------" … … 258 258 TTCPUSUM(KNUM) = TTCPUSUM(KNUM)+THISTCPU(KNUM)+ZTCPU-TTCPULCALL(KNUM) 259 259 TVCPUSUM(KNUM) = TVCPUSUM(KNUM)+THISVCPU(KNUM)+ZVCPU-TVCPULCALL(KNUM) 260 IF(MYPROC_STATS .LE.NSTATS_MEM.AND.MYPROC_STATS.NE.0) THEN260 IF(MYPROC_STATS<=NSTATS_MEM.AND.MYPROC_STATS/=0) THEN 261 261 ! CALL getrss(IMEM) 262 262 IMEM = GETRSS()/1024 … … 266 266 IMEMC = 0 267 267 IF(LSTATS_ALLOC) IMEMC = GETCURHEAP()/1024 268 IF(IMEM > IIMEM.OR.IPAG > IIPAG.OR.(LSTATS_ALLOC.AND.(IMEMC .NE.IIMEMC))) THEN268 IF(IMEM > IIMEM.OR.IPAG > IIPAG.OR.(LSTATS_ALLOC.AND.(IMEMC/=IIMEMC))) THEN 269 269 WRITE(0,'(A10,I5,1X,A20,1X,I6,2(1X,I7),1X,I6,1X,I4,1X,I4,1X,I7)') & 270 270 & "MEMORY aft ",KNUM,CCDESC(KNUM),IMEM-IIMEM,IMEM,IMEMH,IMEMS, & -
LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/read_rsun_rrtm.F90
r5075 r5082 52 52 CALL nf95_gw_var(ncid, varid, time) 53 53 54 IF (NSW .NE.size(wlen)) THEN54 IF (NSW/=size(wlen)) THEN 55 55 PRINT *,'read_rsun_rrtm NSW <> wlen = ',NSW, size(wlen) 56 56 CALL abort_physic('read_rsun_rrtm','size of SSI is different from NSW',1) … … 58 58 59 59 !--test if time is different from year_len but allow a mismatch of 1 day 60 IF (size(time) .NE.year_len.AND.size(time).NE.year_len+1) THEN60 IF (size(time)/=year_len.AND.size(time)/=year_len+1) THEN 61 61 PRINT *,'read_rsun_rrtm time <> year_len = ', size(time), year_len 62 62 CALL abort_physic('read_rsun_rrtm','time dim should be the number of days in year',1) 63 63 ENDIF 64 64 !--warning only if forcing file has 366 days but year_len has only 365 65 IF (size(time) .EQ.year_len+1) THEN65 IF (size(time)==year_len+1) THEN 66 66 PRINT *,'Warning read_rsun_rrtm uses a leap year rsun for a noleap year' 67 67 ENDIF … … 76 76 77 77 DO nbday=1, year_len 78 IF (ABS(SUM(SSI_FRAC(:,nbday))-1.) .GT.1.e-6) THEN78 IF (ABS(SUM(SSI_FRAC(:,nbday))-1.)>1.e-6) THEN 79 79 PRINT *,'somme SSI_FRAC=', SUM(SSI_FRAC(:,nbday)) 80 80 CALL abort_physic('read_rsun_rrtm','somme SSI_FRAC <> 1',1) … … 92 92 !--only read at beginning of day 93 93 !--day in year is provided as days_elapsed since the beginning of the year +1 94 IF (debut.OR.days_elapsed+1 .NE.day_pre) THEN94 IF (debut.OR.days_elapsed+1/=day_pre) THEN 95 95 96 96 !--keep memory of previous day -
LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/readaerosol_optic_rrtm.F90
r4124 r5082 161 161 ! 162 162 ! Read and interpolate sulfate 163 IF ( flag_aerosol .EQ. 1 .OR. flag_aerosol .EQ. 6 .OR. flag_aerosol .EQ. 7 ) THEN163 IF ( flag_aerosol == 1 .OR. flag_aerosol == 6 .OR. flag_aerosol == 7 ) THEN 164 164 165 165 CALL readaerosol_interp(id_ASSO4M_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sulfacc, sulfacc_pi,loadso4) … … 170 170 171 171 ! Read and interpolate bcsol and bcins 172 IF ( flag_aerosol .EQ. 2 .OR. flag_aerosol .EQ. 6 .OR. flag_aerosol .EQ. 7 ) THEN172 IF ( flag_aerosol == 2 .OR. flag_aerosol == 6 .OR. flag_aerosol == 7 ) THEN 173 173 174 174 ! Get bc aerosol distribution … … 183 183 184 184 ! Read and interpolate pomsol and pomins 185 IF ( flag_aerosol .EQ. 3 .OR. flag_aerosol .EQ. 6 .OR. flag_aerosol .EQ.7 ) THEN185 IF ( flag_aerosol == 3 .OR. flag_aerosol == 6 .OR. flag_aerosol == 7 ) THEN 186 186 187 187 CALL readaerosol_interp(id_ASPOMM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomsol, pomsol_pi, load_tmp3) … … 195 195 196 196 ! Read and interpolate csssm, ssssm, assssm 197 IF (flag_aerosol .EQ. 4 .OR. flag_aerosol .EQ. 6 .OR. flag_aerosol .EQ. 7 ) THEN197 IF (flag_aerosol == 4 .OR. flag_aerosol == 6 .OR. flag_aerosol == 7 ) THEN 198 198 199 199 CALL readaerosol_interp(id_SSSSM_phy ,itap, pdtphys,rjourvrai, & … … 212 212 213 213 ! Read and interpolate cidustm 214 IF (flag_aerosol .EQ. 5 .OR. flag_aerosol .EQ. 6 .OR. flag_aerosol .EQ. 7 ) THEN214 IF (flag_aerosol == 5 .OR. flag_aerosol == 6 .OR. flag_aerosol == 7 ) THEN 215 215 216 216 CALL readaerosol_interp(id_CIDUSTM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, cidust, cidust_pi, loaddust) … … 222 222 ! 223 223 ! Read and interpolate asno3m, csno3m, cino3m 224 IF (flag_aerosol .EQ. 6 .OR. flag_aerosol .EQ. 7 ) THEN224 IF (flag_aerosol == 6 .OR. flag_aerosol == 7 ) THEN 225 225 226 226 CALL readaerosol_interp(id_ASNO3M_phy, itap, pdtphys, rjourvrai, & -
LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/readaerosolstrato1_rrtm.F90
r5075 r5082 79 79 80 80 !--we only read monthly strat aerosol data 81 IF (debut.OR.mth_cur .NE.mth_pre) THEN81 IF (debut.OR.mth_cur/=mth_pre) THEN 82 82 83 83 !--only root reads the data 84 84 IF (is_mpi_root.AND.is_omp_root) THEN 85 85 86 IF (nbands_sw_rrtm .NE.6) THEN86 IF (nbands_sw_rrtm/=6) THEN 87 87 print *,'nbands_sw_rrtm doit etre egal a 6 dans readaerosolstrat_rrtm' 88 88 STOP … … 94 94 CALL nf95_gw_var(ncid_in, varid, lev) 95 95 n_lev = size(lev) 96 IF (n_lev .NE.klev) THEN96 IF (n_lev/=klev) THEN 97 97 print *,'Le nombre de niveaux n est pas egal a klev' 98 98 STOP … … 105 105 106 106 IF (grid_type/=unstructured) THEN 107 IF (n_lat .NE.nbp_lat) THEN107 IF (n_lat/=nbp_lat) THEN 108 108 print *,'Le nombre de lat n est pas egal a nbp_lat' 109 109 STOP … … 117 117 118 118 IF (grid_type/=unstructured) THEN 119 IF (n_lon .NE.nbp_lon) THEN119 IF (n_lon/=nbp_lon) THEN 120 120 print *,'Le nombre de lon n est pas egal a nbp_lon' 121 121 STOP … … 128 128 n_month = size(time) 129 129 print *, 'TIME aerosol strato=', n_month, time 130 IF (n_month .NE.12) THEN130 IF (n_month/=12) THEN 131 131 print *,'Le nombre de month n est pas egal a 12' 132 132 STOP … … 145 145 146 146 !---select the correct month 147 IF (mth_cur .LT.1.OR.mth_cur.GT.12) THEN147 IF (mth_cur<1.OR.mth_cur>12) THEN 148 148 print *,'probleme avec le mois dans readaerosolstrat =', mth_cur 149 149 ENDIF … … 224 224 225 225 !--stratospheric AOD in LW 226 IF (nbands_lw_rrtm .NE.NLW) then226 IF (nbands_lw_rrtm /= NLW) then 227 227 print*, 'different values for NLW (=',NLW,') and nbands_lw_rrtm (=', nbands_lw_rrtm, ')' 228 228 STOP … … 246 246 !--default SSA value if there is no aerosol 247 247 !--to avoid 0 values that seems to cause some problem to RRTM 248 WHERE (tau_aero_sw_rrtm .LT.1.e-14)248 WHERE (tau_aero_sw_rrtm<1.e-14) 249 249 piz_aero_sw_rrtm = 1.0 250 250 ENDWHERE -
LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/readaerosolstrato2_rrtm.F90
r5075 r5082 85 85 86 86 !--we only read monthly strat aerosol data 87 IF (debut.OR.mth_cur .NE.mth_pre) THEN87 IF (debut.OR.mth_cur/=mth_pre) THEN 88 88 89 89 !--only root reads the data … … 91 91 92 92 !--check mth_cur 93 IF (mth_cur .LT.1.OR.mth_cur.GT.12) THEN93 IF (mth_cur<1.OR.mth_cur>12) THEN 94 94 print *,'probleme avec le mois dans readaerosolstrat =', mth_cur 95 95 ENDIF … … 105 105 CALL nf95_gw_var(ncid_in, varid, lev) 106 106 n_lev = size(lev) 107 IF (n_lev .NE.klev) THEN107 IF (n_lev/=klev) THEN 108 108 abort_message='Le nombre de niveaux n est pas egal a klev' 109 109 CALL abort_physic(modname,abort_message,1) … … 115 115 116 116 IF (grid_type/=unstructured) THEN 117 IF (n_lat .NE.nbp_lat) THEN117 IF (n_lat/=nbp_lat) THEN 118 118 print *, 'latitude=', n_lat, nbp_lat 119 119 abort_message='Le nombre de lat n est pas egal a nbp_lat' … … 125 125 CALL nf95_gw_var(ncid_in, varid, time) 126 126 n_month = size(time) 127 IF (n_month .NE.12) THEN127 IF (n_month/=12) THEN 128 128 abort_message='Le nombre de month n est pas egal a 12' 129 129 CALL abort_physic(modname,abort_message,1) … … 134 134 n_wav = size(wav) 135 135 print *, 'WAV aerosol strato=', n_wav, wav 136 IF (n_wav .NE.NSW) THEN136 IF (n_wav/=NSW) THEN 137 137 abort_message='Le nombre de wav n est pas egal a NSW' 138 138 CALL abort_physic(modname,abort_message,1) … … 197 197 CALL nf95_gw_var(ncid_in, varid, lev) 198 198 n_lev = size(lev) 199 IF (n_lev .NE.klev) THEN199 IF (n_lev/=klev) THEN 200 200 abort_message='Le nombre de niveaux n est pas egal a klev' 201 201 CALL abort_physic(modname,abort_message,1) … … 207 207 208 208 IF (grid_type/=unstructured) THEN 209 IF (n_lat .NE.nbp_lat) THEN209 IF (n_lat/=nbp_lat) THEN 210 210 abort_message='Le nombre de lat n est pas egal a nbp_lat' 211 211 CALL abort_physic(modname,abort_message,1) … … 216 216 CALL nf95_gw_var(ncid_in, varid, time) 217 217 n_month = size(time) 218 IF (n_month .NE.12) THEN218 IF (n_month/=12) THEN 219 219 abort_message='Le nombre de month n est pas egal a 12' 220 220 CALL abort_physic(modname,abort_message,1) … … 225 225 n_wav = size(wav) 226 226 print *, 'WAV aerosol strato=', n_wav, wav 227 IF (n_wav .NE.NLW) THEN227 IF (n_wav/=NLW) THEN 228 228 abort_message='Le nombre de wav n est pas egal a NLW' 229 229 CALL abort_physic(modname,abort_message,1) … … 332 332 DO i=1, klon 333 333 DO k=1, klev 334 IF (stratomask(i,k) .GT.0.999999) THEN334 IF (stratomask(i,k)>0.999999) THEN 335 335 DO wave=1, nwave_sw 336 336 tausum_aero(i,wave,id_STRAT_phy)=tausum_aero(i,wave,id_STRAT_phy)+tau_aer_strat(i,k,band) … … 346 346 !--weighted average for cg, piz and tau, adding strat aerosols on top of tropospheric ones 347 347 DO band=1, NSW 348 WHERE (stratomask .GT.0.999999)348 WHERE (stratomask>0.999999) 349 349 !--strat aerosols are added to index 2 : natural and anthropogenic aerosols for bands 1 to NSW 350 350 cg_aero_sw_rrtm(:,:,2,band) = ( cg_aero_sw_rrtm(:,:,2,band)*piz_aero_sw_rrtm(:,:,2,band)*tau_aero_sw_rrtm(:,:,2,band) + & … … 374 374 !--weighted average for cg, piz and tau, adding strat aerosols on top of tropospheric ones 375 375 DO band=1, NSW 376 WHERE (stratomask .GT.0.999999)376 WHERE (stratomask>0.999999) 377 377 !--strat aerosols are added to index 2 : natural and anthropogenic aerosols for bands 1 to NSW 378 378 cg_aero_sw_rrtm(:,:,2,band) = ( cg_aero_sw_rrtm(:,:,2,band)*piz_aero_sw_rrtm(:,:,2,band)*tau_aero_sw_rrtm(:,:,2,band) + & … … 393 393 DO i=1, klon 394 394 DO k=1, klev 395 IF (stratomask(i,k) .GT.0.999999) THEN395 IF (stratomask(i,k)>0.999999) THEN 396 396 DO wave=1, nwave_lw 397 397 tausum_aero(i,nwave_sw+wave,id_STRAT_phy)=tausum_aero(i,nwave_sw+wave,id_STRAT_phy)+taulw_aer_strat(i,k,band) … … 405 405 !--stratospheric aerosols are added to both index 2 and 1 406 406 DO band=1, NLW 407 WHERE (stratomask .GT.0.999999)407 WHERE (stratomask>0.999999) 408 408 tau_aero_lw_rrtm(:,:,2,band) = tau_aero_lw_rrtm(:,:,2,band) + taulw_aer_strat(:,:,band) 409 409 tau_aero_lw_rrtm(:,:,1,band) = tau_aero_lw_rrtm(:,:,1,band) + taulw_aer_strat(:,:,band) … … 419 419 tau_aero_lw_rrtm(:,:,1,band) = tau_aero_lw_rrtm(:,:,2,band) 420 420 ! 421 WHERE (stratomask .GT.0.999999)421 WHERE (stratomask>0.999999) 422 422 !--stratospheric aerosols are only added to index 2 423 423 tau_aero_lw_rrtm(:,:,2,band) = tau_aero_lw_rrtm(:,:,2,band) + taulw_aer_strat(:,:,band) … … 428 428 !--default SSA value if there is no aerosol 429 429 !--to avoid 0 values that seems to cause some problem to RRTM 430 WHERE (tau_aero_sw_rrtm .LT.1.e-14)430 WHERE (tau_aero_sw_rrtm<1.e-14) 431 431 piz_aero_sw_rrtm = 1.0 432 432 ENDWHERE -
LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/recmwf_aero.F90
r4875 r5082 468 468 !----aerosol flags are on 469 469 470 IF (flag_aerosol .GT.0 .OR. flag_aerosol_strat) THEN470 IF (flag_aerosol > 0 .OR. flag_aerosol_strat) THEN 471 471 472 472 !--Case 1 … … 633 633 634 634 ! case with no aerosols at all is also computed IF ACTIVEFEEDBACK_ACTIVE is false 635 IF (.not. AEROSOLFEEDBACK_ACTIVE .OR. flag_aerosol .EQ. 0 .OR. swaerofree_diag) THEN635 IF (.not. AEROSOLFEEDBACK_ACTIVE .OR. flag_aerosol == 0 .OR. swaerofree_diag) THEN 636 636 637 637 ! ZERO aerosol effect … … 732 732 !---Now we copy back the correct fields to proceed to the next timestep 733 733 734 IF ( AEROSOLFEEDBACK_ACTIVE .AND. (flag_aerosol .GT.0 .OR. flag_aerosol_strat) ) THEN734 IF ( AEROSOLFEEDBACK_ACTIVE .AND. (flag_aerosol > 0 .OR. flag_aerosol_strat) ) THEN 735 735 736 736 IF ( ok_ade .and. ok_aie ) THEN … … 804 804 IF (ok_ade.AND.ok_aie.AND.ok_volcan) THEN 805 805 !--in this case the fluxes used for the heating rates come from case 4 but SW surface radiation is kept from case 2 806 IF (flag_volc_surfstrat .EQ.2) THEN ! STRAT HEATING806 IF (flag_volc_surfstrat==2) THEN ! STRAT HEATING 807 807 volmip_solsw(:)= ZFSDN_AERO(:,1,2)-ZFSUP_AERO(:,1,2) 808 ELSEIF (flag_volc_surfstrat .EQ.1) THEN ! SURF COOLING808 ELSEIF (flag_volc_surfstrat==1) THEN ! SURF COOLING 809 809 !--in this case the fluxes used for the heating rates come from case 2 but SW surface radiation is kept from case 4 810 810 PFSUP(:,:) = ZFSUP_AERO(:,:,2) … … 836 836 ! Will need to be extended to LW radiation -> done by CK (2014-05-23) 837 837 838 IF (flag_aerosol .GT.0 .OR. flag_aerosol_strat) THEN838 IF (flag_aerosol > 0 .OR. flag_aerosol_strat) THEN 839 839 840 840 IF (ok_ade.AND.ok_aie) THEN -
LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/rrtm_gasabs1a_140gp.F90
r1990 r5082 144 144 Z_TF = Z_ODEPTH/(BPADE+Z_ODEPTH) 145 145 ITR=INT(5.E+03_JPRB*Z_TF+0.5_JPRB) 146 IF (ITR .LT.0) ITR=0 ! MPL 12.12.08146 IF (ITR<0) ITR=0 ! MPL 12.12.08 147 147 P_ATR1(IPR,I_LAY) = 1.0_JPRB - TRANS(ITR) 148 148 P_TF1(IPR,I_LAY) = Z_TF -
LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/rrtm_rtrn1a_140gp.F90
r2462 r5082 383 383 ! & (1.0_JPRB - Z_CLDFRAC(I_LEV-1)) 384 384 ! ENDIF 385 if(istcld(i_lev) .ne.1.and.i_lev.ne.1) then385 if(istcld(i_lev)/=1.and.i_lev/=1) then 386 386 z_faccmb1(i_lev+1) = max(0.,min(z_cldfrac(i_lev+1)-z_cldfrac(i_lev), & 387 387 z_cldfrac(i_lev-1)-z_cldfrac(i_lev))) … … 496 496 ! Z_FACCMB2D(I_LEV-1) = Z_FACCLD1D(I_LEV-1) * Z_FACCLR2D(I_LEV) *& 497 497 ! & (1.0_JPRB - Z_CLDFRAC(I_LEV+1)) 498 if (istcldd(i_lev) .ne.1.and.i_lev.ne.1) then498 if (istcldd(i_lev)/=1.and.i_lev/=1) then 499 499 z_faccmb1d(i_lev-1) = max(0.,min(z_cldfrac(i_lev+1)-z_cldfrac(i_lev), & 500 500 z_cldfrac(i_lev-1)-z_cldfrac(i_lev))) -
LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/set99.F
r1990 r5082 28 28 IL=1 29 29 20 CONTINUE 30 IF (MOD(NU,IFAC) .NE.0) GO TO 3030 IF (MOD(NU,IFAC)/=0) GO TO 30 31 31 K=K+1 32 32 JFAX(K)=IFAC 33 IF (IFAC .NE.8) GO TO 2534 IF (K .EQ.1) GO TO 2533 IF (IFAC/=8) GO TO 25 34 IF (K==1) GO TO 25 35 35 JFAX(1)=8 36 36 JFAX(K)=6 37 37 25 CONTINUE 38 38 NU=NU/IFAC 39 IF (NU .EQ.1) GO TO 5040 IF (IFAC .NE.8) GO TO 2039 IF (NU==1) GO TO 50 40 IF (IFAC/=8) GO TO 20 41 41 30 CONTINUE 42 42 IL=IL+1 43 43 IFAC=NLFAX(IL) 44 IF (IFAC .GT.1) GO TO 2044 IF (IFAC>1) GO TO 20 45 45 C 46 46 WRITE(6,40) N -
LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/suecrad.F90
r4251 r5082 301 301 LRRTM = .FALSE. 302 302 LECMWF = .FALSE. 303 IF (iflag_rrtm .EQ.1) THEN303 IF (iflag_rrtm==1) THEN 304 304 LRRTM = .TRUE. 305 305 LECMWF = .TRUE. -
LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/yomhook.F90
r1990 r5082 18 18 INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH 19 19 REAL(KIND=JPRB), INTENT(INOUT) :: PKEY 20 IF (KSWITCH .EQ.0) THEN20 IF (KSWITCH==0) THEN 21 21 ! PRINT *,'--> ON ENTRE DANS: ',CDNAME 22 ELSE IF (KSWITCH .EQ.1) THEN22 ELSE IF (KSWITCH==1) THEN 23 23 ! PRINT *,' ON SORT DE : ',CDNAME 24 24 ENDIF -
LMDZ6/branches/Amaury_dev/libf/phylmd/rrtm/yomoml.F90
r2010 r5082 148 148 LOGICAL :: OML_TEST_EVENT 149 149 INTEGER(KIND=JPIM),intent(in) :: K,MYEVENT 150 IF(K .EQ.MYEVENT) THEN150 IF(K==MYEVENT) THEN 151 151 OML_TEST_EVENT =.TRUE. 152 152 ELSE
Note: See TracChangeset
for help on using the changeset viewer.