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/optcv.F90

    r2582 r2655  
    1111  use radinc_h, only: L_NLAYRAD, L_NLEVRAD, L_LEVELS, L_NSPECTV, L_NGAUSS, L_REFVAR, NAERKIND
    1212  use radcommon_h, only: gasv, tlimit, wrefVAR, Cmk, tgasref, pfgasref,wnov,scalep,indv,glat_ig
    13   use gases_h, only: gfrac, ngasmx, igas_H2, igas_H2O, igas_He, igas_N2
     13  use gases_h, only: gfrac, ngasmx, igas_H2, igas_H2O, igas_He, igas_N2, igas_CH4
    1414  use comcstfi_mod, only: g, r, mugaz
    1515  use callkeys_mod, only: kastprof,continuum,graybody,callgasvis
     
    215215                    dtemp = dtemp + dtempc
    216216                 enddo
     217                 
     218              elseif(igas.eq.igas_CH4)then
     219
     220                 ! first do self-induced absorption
     221                 interm = indv(nw,igas,igas)
     222                 call interpolateCH4CH4(wn_cont,T_cont,p_cont,dtemp,.false.,interm)
     223                 indv(nw,igas,igas) = interm
     224
     225                 ! then cross-interactions with other gases
     226                 do jgas=1,ngasmx
     227                    p_cross = dble(PMID(k)*scalep*gfrac(jgas)*(1.-QVAR(k)))
     228                    dtempc  = 0.0d0
     229                    if(jgas.eq.igas_H2)then
     230                       interm = indv(nw,igas,jgas)
     231                       call interpolateH2CH4(wn_cont,T_cont,p_cross,p_cont,dtempc,.false.,interm)
     232                       indv(nw,igas,jgas) = interm
     233                    elseif(jgas.eq.igas_He)then
     234                       interm = indv(nw,igas,jgas)
     235                       call interpolateHeCH4(wn_cont,T_cont,p_cross,p_cont,dtempc,.false.,interm)
     236                       indv(nw,igas,jgas) = interm
     237                    endif
     238                    dtemp = dtemp + dtempc
     239                 enddo
    217240
    218241              elseif(igas.eq.igas_H2O.and.T_cont.gt.100.0)then
Note: See TracChangeset for help on using the changeset viewer.