Ignore:
Timestamp:
Mar 30, 2022, 12:19:20 PM (3 years ago)
Author:
gmilcareck
Message:

Major changes to CIA interpolation:
1) Add contribution from CH4 (H2-CH4,He-CH4,CH4-CH4) ;
2) Add some tests before interpolation for H2, He and CH4 ;
3) Add the possibility to choose between a normal or equilibrium ortho:para
fraction for CIA H2;
4) Change "strictboundH2H2cia" to the generic "strictboundcia" for H2,He,CH4.
It can be added for others CIA (N2,H,CO2...) if you want.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.GENERIC/libf/phystd/optci.F90

    r2582 r2655  
    1212                      L_NLEVRAD, L_REFVAR, naerkind
    1313  use radcommon_h, only: gasi,tlimit,wrefVAR,Cmk,tgasref,pfgasref,wnoi,scalep,indi,glat_ig
    14   use gases_h, only: gfrac, ngasmx, igas_N2, igas_He, igas_H2O, igas_H2
     14  use gases_h, only: gfrac, ngasmx, igas_N2, igas_He, igas_H2O, igas_H2, igas_CH4
    1515  use comcstfi_mod, only: g, r, mugaz
    1616  use callkeys_mod, only: kastprof,continuum,graybody
     
    208208                 enddo
    209209
     210              elseif(igas.eq.igas_CH4)then
     211
     212                 ! first do self-induced absorption
     213                 interm = indi(nw,igas,igas)
     214                 call interpolateCH4CH4(wn_cont,T_cont,p_cont,dtemp,.false.,interm)
     215                 indi(nw,igas,igas) = interm
     216
     217                 ! then cross-interactions with other gases
     218                 do jgas=1,ngasmx
     219                    p_cross = dble(PMID(k)*scalep*gfrac(jgas)*(1.-QVAR(k)))
     220                    dtempc  = 0.0d0
     221                    if(jgas.eq.igas_H2)then
     222                       interm = indi(nw,igas,jgas)
     223                       call interpolateH2CH4(wn_cont,T_cont,p_cross,p_cont,dtempc,.false.,interm)
     224                       indi(nw,igas,jgas) = interm
     225                    elseif(jgas.eq.igas_He)then
     226                       interm = indi(nw,igas,jgas)
     227                       call interpolateHeCH4(wn_cont,T_cont,p_cross,p_cont,dtempc,.false.,interm)
     228                       indi(nw,igas,jgas) = interm
     229                    endif
     230                    dtemp = dtemp + dtempc
     231                 enddo
     232
    210233              elseif(igas.eq.igas_H2O.and.T_cont.gt.100.0)then
    211234                 ! Compute self and foreign (with air) continuum of H2O
Note: See TracChangeset for help on using the changeset viewer.