Changeset 3659


Ignore:
Timestamp:
Feb 27, 2025, 2:53:09 PM (4 months ago)
Author:
emoisan
Message:

Titan CRM:
Deal with cloud fraction Fcloudy=1.
EMo

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.TITAN/libf/phytitan/callcorrk.F90

    r3497 r3659  
    438438         if (tlevrad(k).lt.tplanckmin) then
    439439            print*,'Minimum temperature is outside the boundaries for'
    440             print*,'Planck function integration set in callphys.def, aborting.'
     440            print*,'Planck function integration set in callphys.def,'
     441            print*,' aborting.'
    441442            print*,"k=",k," tlevrad(k)=",tlevrad(k)
    442443            print*,"tplanckmin=",tplanckmin
     
    537538         wbarv = (1-Fcloudy) * wbarv_cc + Fcloudy * wbarv_dc
    538539         cosbv = (1-Fcloudy) * cosbv_cc + Fcloudy * cosbv_dc
    539          
     540       
    540541         ! Diagnostics for clouds :
    541542         if (callclouds) then
     
    546547               diag_opttv_dc(:,:,1) = 1.d-30
    547548            endwhere
    548             diag_opttv(:,:,1) = -log( (1-Fcloudy)*exp(-diag_opttv_cc(:,:,1)) + Fcloudy*exp(-diag_opttv_dc(:,:,1)) )
    549             diag_opttv(:,:,2) = (1-Fcloudy) * diag_opttv_cc(:,:,2) + Fcloudy * diag_opttv_dc(:,:,2)
    550             diag_opttv(:,:,3) = (1-Fcloudy) * diag_opttv_cc(:,:,3) + Fcloudy * diag_opttv_dc(:,:,3)
    551             diag_opttv(:,:,4) = -log( (1-Fcloudy)*exp(-diag_opttv_cc(:,:,4)) + Fcloudy*exp(-diag_opttv_dc(:,:,4)) )
    552             diag_opttv(:,:,5) = -log( (1-Fcloudy)*exp(-diag_opttv_cc(:,:,5)) + Fcloudy*exp(-diag_opttv_dc(:,:,5)) )
    553             diag_opttv(:,:,6) = -log( (1-Fcloudy)*exp(-diag_opttv_cc(:,:,6)) + Fcloudy*exp(-diag_opttv_dc(:,:,6)) )
     549            if (Fcloudy .eq. 1) then !avoid log(0) errors
     550                diag_opttv(:,:,1) = diag_opttv_dc(:,:,1)
     551                diag_opttv(:,:,2) = diag_opttv_dc(:,:,2)
     552                diag_opttv(:,:,3) = diag_opttv_dc(:,:,3)
     553                diag_opttv(:,:,4) = diag_opttv_dc(:,:,4)
     554                diag_opttv(:,:,5) = diag_opttv_dc(:,:,5)
     555                diag_opttv(:,:,6) = diag_opttv_dc(:,:,6)
     556            else !correct for cloud fraction
     557                diag_opttv(:,:,1) = -log( (1-Fcloudy)*exp(-diag_opttv_cc(:,:,1)) + Fcloudy*exp(-diag_opttv_dc(:,:,1)) )
     558                diag_opttv(:,:,2) = (1-Fcloudy) * diag_opttv_cc(:,:,2) + Fcloudy * diag_opttv_dc(:,:,2)
     559                diag_opttv(:,:,3) = (1-Fcloudy) * diag_opttv_cc(:,:,3) + Fcloudy * diag_opttv_dc(:,:,3)
     560                diag_opttv(:,:,4) = -log( (1-Fcloudy)*exp(-diag_opttv_cc(:,:,4)) + Fcloudy*exp(-diag_opttv_dc(:,:,4)) )
     561                diag_opttv(:,:,5) = -log( (1-Fcloudy)*exp(-diag_opttv_cc(:,:,5)) + Fcloudy*exp(-diag_opttv_dc(:,:,5)) )
     562                diag_opttv(:,:,6) = -log( (1-Fcloudy)*exp(-diag_opttv_cc(:,:,6)) + Fcloudy*exp(-diag_opttv_dc(:,:,6)) )
     563            endif
    554564         endif
    555565         
     
    644654               diag_optti_dc(:,:,1) = 1.d-30
    645655            endwhere
    646             diag_optti(:,:,1) = -log( (1-Fcloudy)*exp(-diag_optti_cc(:,:,1)) + Fcloudy*exp(-diag_optti_dc(:,:,1)) )
    647             diag_optti(:,:,2) = (1-Fcloudy) * diag_optti_cc(:,:,2) + Fcloudy * diag_optti_dc(:,:,2)
    648             diag_optti(:,:,3) = (1-Fcloudy) * diag_optti_cc(:,:,3) + Fcloudy * diag_optti_dc(:,:,3)
    649             diag_optti(:,:,4) = -log( (1-Fcloudy)*exp(-diag_optti_cc(:,:,4)) + Fcloudy*exp(-diag_optti_dc(:,:,4)) )
    650             diag_optti(:,:,5) = -log( (1-Fcloudy)*exp(-diag_optti_cc(:,:,5)) + Fcloudy*exp(-diag_optti_dc(:,:,5)) )
    651             diag_optti(:,:,6) = -log( (1-Fcloudy)*exp(-diag_optti_cc(:,:,6)) + Fcloudy*exp(-diag_optti_dc(:,:,6)) )
     656            if (Fcloudy .eq. 1) then !avoid log(0) errors
     657                diag_optti(:,:,1) = diag_optti_dc(:,:,1)
     658                diag_optti(:,:,2) = diag_optti_dc(:,:,2)
     659                diag_optti(:,:,3) = diag_optti_dc(:,:,3)
     660                diag_optti(:,:,4) = diag_optti_dc(:,:,4)
     661                diag_optti(:,:,5) = diag_optti_dc(:,:,5)
     662                diag_optti(:,:,6) = diag_optti_dc(:,:,6)
     663            else !correct for cloud fraction
     664                diag_optti(:,:,1) = -log( (1-Fcloudy)*exp(-diag_optti_cc(:,:,1)) + Fcloudy*exp(-diag_optti_dc(:,:,1)) )
     665                diag_optti(:,:,2) = (1-Fcloudy) * diag_optti_cc(:,:,2) + Fcloudy * diag_optti_dc(:,:,2)
     666                diag_optti(:,:,3) = (1-Fcloudy) * diag_optti_cc(:,:,3) + Fcloudy * diag_optti_dc(:,:,3)
     667                diag_optti(:,:,4) = -log( (1-Fcloudy)*exp(-diag_optti_cc(:,:,4)) + Fcloudy*exp(-diag_optti_dc(:,:,4)) )
     668                diag_optti(:,:,5) = -log( (1-Fcloudy)*exp(-diag_optti_cc(:,:,5)) + Fcloudy*exp(-diag_optti_dc(:,:,5)) )
     669                diag_optti(:,:,6) = -log( (1-Fcloudy)*exp(-diag_optti_cc(:,:,6)) + Fcloudy*exp(-diag_optti_dc(:,:,6)) )
     670            endif
    652671         endif
    653672
Note: See TracChangeset for help on using the changeset viewer.