Changeset 3241 for LMDZ6/trunk/libf/phylmd/cosp/mod_modis_sim.F90
- Timestamp:
- Mar 6, 2018, 10:46:13 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/cosp/mod_modis_sim.F90
r3233 r3241 52 52 ! 53 53 module mod_modis_sim 54 USE MOD_COSP_TYPES, only: R_UNDEF 54 USE MOD_COSP_TYPES, only: R_UNDEF, ok_debug_cosp 55 55 implicit none 56 56 ! ------------------------------ … … 384 384 liquid_opticalThickness, ice_opticalThickness, tauLiquidFraction 385 385 386 real :: seuil 386 387 ! --------------------------------------------------- 387 388 389 if (ok_debug_cosp) then 390 seuil=1.e-9 391 else 392 seuil=0.0 393 endif 394 388 395 where(cloudIce(:, :) <= 0.) 389 396 tauLiquidFraction(:, :) = 1. … … 395 402 ! Geometic optics limit - tau as LWP/re (proportional to LWC/re) 396 403 ! 397 tauLiquidFraction(:, :) = (cloudWater(:, :)/waterSize(:, :)) / & 398 (cloudWater(:, :)/waterSize(:, :) + cloudIce(:, :)/(ice_density * iceSize(:, :)) ) 404 ! Modif AI 02 2018 405 tauLiquidFraction(:, :) = (cloudWater(:, :)/max(waterSize(:, :), seuil) ) / & 406 (cloudWater(:, :)/max(waterSize(:, :), seuil) + & 407 cloudIce(:, :)/(ice_density * max(iceSize(:, :), seuil)) ) 399 408 end where 400 409 end where … … 502 511 ! Compute mean optical thickness. 503 512 ! ######################################################################################## 504 Optical_Thickness_Total_Mean(1:nPoints) = sum(optical_thickness, mask = cloudMask, dim = 2) / & 505 Cloud_Fraction_Total_Mean(1:nPoints) 506 Optical_Thickness_Water_Mean(1:nPoints) = sum(optical_thickness, mask = waterCloudMask, dim = 2) / & 507 Cloud_Fraction_Water_Mean(1:nPoints) 508 Optical_Thickness_Ice_Mean(1:nPoints) = sum(optical_thickness, mask = iceCloudMask, dim = 2) / & 509 Cloud_Fraction_Ice_Mean(1:nPoints) 510 513 where (Cloud_Fraction_Total_Mean == 0) 514 Optical_Thickness_Total_Mean = R_UNDEF 515 elsewhere 516 Optical_Thickness_Total_Mean(1:nPoints) = sum(optical_thickness, mask = cloudMask, dim = 2) / & 517 Cloud_Fraction_Total_Mean(1:nPoints) 518 endwhere 519 where (Cloud_Fraction_Water_Mean == 0) 520 Optical_Thickness_Water_Mean = R_UNDEF 521 elsewhere 522 Optical_Thickness_Water_Mean(1:nPoints) = sum(optical_thickness, mask = waterCloudMask, dim = 2) / & 523 Cloud_Fraction_Water_Mean(1:nPoints) 524 endwhere 525 where (Cloud_Fraction_Ice_Mean == 0) 526 Optical_Thickness_Ice_Mean = R_UNDEF 527 elsewhere 528 Optical_Thickness_Ice_Mean(1:nPoints) = sum(optical_thickness, mask = iceCloudMask, dim = 2) / & 529 Cloud_Fraction_Ice_Mean(1:nPoints) 530 endwhere 531 511 532 ! ######################################################################################## 512 533 ! We take the absolute value of optical thickness here to satisfy compilers that complains … … 514 535 ! the sum. 515 536 ! ######################################################################################## 516 Optical_Thickness_Total_MeanLog10(1:nPoints) = sum(log10(abs(optical_thickness)), mask = cloudMask, & 517 dim = 2) / Cloud_Fraction_Total_Mean(1:nPoints) 518 Optical_Thickness_Water_MeanLog10(1:nPoints) = sum(log10(abs(optical_thickness)), mask = waterCloudMask,& 519 dim = 2) / Cloud_Fraction_Water_Mean(1:nPoints) 520 Optical_Thickness_Ice_MeanLog10(1:nPoints) = sum(log10(abs(optical_thickness)), mask = iceCloudMask,& 521 dim = 2) / Cloud_Fraction_Ice_Mean(1:nPoints) 522 Cloud_Particle_Size_Water_Mean(1:nPoints) = sum(particle_size, mask = waterCloudMask, dim = 2) / & 523 Cloud_Fraction_Water_Mean(1:nPoints) 524 Cloud_Particle_Size_Ice_Mean(1:nPoints) = sum(particle_size, mask = iceCloudMask, dim = 2) / & 525 Cloud_Fraction_Ice_Mean(1:nPoints) 526 Cloud_Top_Pressure_Total_Mean(1:nPoints) = sum(cloud_top_pressure, mask = cloudMask, dim = 2) / & 527 max(1, count(cloudMask, dim = 2)) 528 Liquid_Water_Path_Mean(1:nPoints) = LWP_conversion*sum(particle_size*optical_thickness, & 529 mask=waterCloudMask,dim=2)/Cloud_Fraction_Water_Mean(1:nPoints) 530 Ice_Water_Path_Mean(1:nPoints) = LWP_conversion * ice_density*sum(particle_size*optical_thickness,& 531 mask=iceCloudMask,dim = 2) /Cloud_Fraction_Ice_Mean(1:nPoints) 532 537 where (Cloud_Fraction_Total_Mean == 0) 538 Optical_Thickness_Total_MeanLog10 = R_UNDEF 539 elsewhere 540 Optical_Thickness_Total_MeanLog10(1:nPoints) = sum(log10(abs(optical_thickness)), mask = cloudMask, & 541 dim = 2) / Cloud_Fraction_Total_Mean(1:nPoints) 542 endwhere 543 where (Cloud_Fraction_Water_Mean == 0) 544 Optical_Thickness_Water_MeanLog10 = R_UNDEF 545 elsewhere 546 Optical_Thickness_Water_MeanLog10(1:nPoints) = sum(log10(abs(optical_thickness)), mask = waterCloudMask,& 547 dim = 2) / Cloud_Fraction_Water_Mean(1:nPoints) 548 endwhere 549 where (Cloud_Fraction_Ice_Mean == 0) 550 Optical_Thickness_Ice_MeanLog10 = R_UNDEF 551 elsewhere 552 Optical_Thickness_Ice_MeanLog10(1:nPoints) = sum(log10(abs(optical_thickness)), mask = iceCloudMask,& 553 dim = 2) / Cloud_Fraction_Ice_Mean(1:nPoints) 554 endwhere 555 where (Cloud_Fraction_Water_Mean == 0) 556 Cloud_Particle_Size_Water_Mean = R_UNDEF 557 elsewhere 558 Cloud_Particle_Size_Water_Mean(1:nPoints) = sum(particle_size, mask = waterCloudMask, dim = 2) / & 559 Cloud_Fraction_Water_Mean(1:nPoints) 560 endwhere 561 where (Cloud_Fraction_Ice_Mean == 0) 562 Cloud_Particle_Size_Ice_Mean = R_UNDEF 563 elsewhere 564 Cloud_Particle_Size_Ice_Mean(1:nPoints) = sum(particle_size, mask = iceCloudMask, dim = 2) / & 565 Cloud_Fraction_Ice_Mean(1:nPoints) 566 endwhere 567 where (Cloud_Fraction_Total_Mean == 0) 568 Cloud_Top_Pressure_Total_Mean = R_UNDEF 569 elsewhere 570 Cloud_Top_Pressure_Total_Mean(1:nPoints) = sum(cloud_top_pressure, mask = cloudMask, dim = 2) / & 571 max(1, count(cloudMask, dim = 2)) 572 endwhere 573 where (Cloud_Fraction_Water_Mean == 0) 574 Liquid_Water_Path_Mean = R_UNDEF 575 elsewhere 576 Liquid_Water_Path_Mean(1:nPoints) = LWP_conversion*sum(particle_size*optical_thickness, & 577 mask=waterCloudMask,dim=2)/Cloud_Fraction_Water_Mean(1:nPoints) 578 endwhere 579 where (Cloud_Fraction_Ice_Mean == 0) 580 Ice_Water_Path_Mean = R_UNDEF 581 elsewhere 582 Ice_Water_Path_Mean(1:nPoints) = LWP_conversion * ice_density*sum(particle_size*optical_thickness,& 583 mask=iceCloudMask,dim = 2) /Cloud_Fraction_Ice_Mean(1:nPoints) 584 endwhere 533 585 ! ######################################################################################## 534 586 ! Normalize pixel counts to fraction. … … 544 596 ! Set clear-scenes to undefined 545 597 ! ######################################################################################## 546 where (Cloud_Fraction_Total_Mean == 0)547 Optical_Thickness_Total_Mean = R_UNDEF548 Optical_Thickness_Total_MeanLog10 = R_UNDEF549 Cloud_Top_Pressure_Total_Mean = R_UNDEF550 endwhere551 where (Cloud_Fraction_Water_Mean == 0)552 Optical_Thickness_Water_Mean = R_UNDEF553 Optical_Thickness_Water_MeanLog10 = R_UNDEF554 Cloud_Particle_Size_Water_Mean = R_UNDEF555 Liquid_Water_Path_Mean = R_UNDEF556 endwhere557 where (Cloud_Fraction_Ice_Mean == 0)558 Optical_Thickness_Ice_Mean = R_UNDEF559 Optical_Thickness_Ice_MeanLog10 = R_UNDEF560 Cloud_Particle_Size_Ice_Mean = R_UNDEF561 Ice_Water_Path_Mean = R_UNDEF562 endwhere563 598 where (Cloud_Fraction_High_Mean == 0) Cloud_Fraction_High_Mean = R_UNDEF 564 599 where (Cloud_Fraction_Mid_Mean == 0) Cloud_Fraction_Mid_Mean = R_UNDEF
Note: See TracChangeset
for help on using the changeset viewer.