c kspectrum (http://www.meso-star.com/en_Products.html) - This file is part of kspectrum c Copyright (C) 2008-2015 - Méso-Star - Vincent Eymet c c This file must be used under the terms of the CeCILL license. c This source file is licensed as described in the file COPYING, which c you should have received as part of this distribution. The terms c are also available at c http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt c subroutine khi_profile(nu,nuc,T,index, & usl,sl_choice,slwr,slam,slas,khi) implicit none include 'max.inc' double precision nu,nuc,T integer index logical usl integer sl_choice logical slwr,slam,slas double precision khi khi=1.0D+0 if (usl) then c if (.not.slam), SL profiles have to be used only for CO2 c if (slam), SL profiles have to be used for all molecules if (((.not.slam).and.(index.eq.2)).or.(slam)) then ! CO2 call khi_co2(nu,nuc,T,sl_choice,slwr,slas,khi) endif endif return end subroutine khi_co2(nu,nuc,T,sl_choice,slwr,slas,khi) implicit none include 'max.inc' c c Purpose: to compute factor KHI that accounts for the sub-Lorentzian c nature of line profile. c This routine is based on results from: c + Pollack et al., Icarus 1993 (vol. 103, pp. 1-42) c + Perrin & Hartmann, JQSRT 1989 (vol. 42, No. 4, pp. 311-317) c "Temperature-dependant measurements and modeling of absorption by CO2-N2 mixtures in the far c line-wings of the 4.3µm CO2 band" c + Tonkov at al. Applied Optics 1996 (vol. 35, No. 24, pp. 4863-4870): c "Measurements and empirical modeling of pure CO2 absorption in the 2.3 µm region at room temperature: c far wings, allowed and collision-induced bands" c c It will compute khi for pure CO2 lines, in both 2.3 and 4.3µm bands. c c Inputs: c + nu: wavenumber (cm-¹) where k(nu) has to be computed c + nuc: line center wavenumber (cm-¹) c + T: temperature (K) c + sl_choice: choice of sub-lorentzian profile c - 0: use whatever is relevant for current wavenumber, within validity ranges c - 1: use Pollack results @ 1.18µm and 2.7µm c - 2: use Perrin @ Hartmann @ 4.3µm c - 3: use Tonkov @ 2.3µm c + slwr: option for using CO2 SL profiles over the whole IR range c + slas: option to select using asymetric profile c c Outputs: c + khi: khi factor (no dimension) c double precision nu,nuc,T integer sl_choice logical slwr,slas double precision khi double precision delta_nu double precision alpha(1:3),beta(1:3),epsilon(1:3),B(1:3) double precision sigma(1:3),zeta(1:3) double precision asf integer i c Debug integer out c Debug logical valid integer strlen character*(Nchar_mx) label label='subroutine ksi_co2' delta_nu=dabs(nu-nuc) khi=1.0D+0 ! default if (sl_choice.eq.0) then c Use whatever is relevant at the local wavenumber, within validity ranges if ((nuc.ge.7400.0D+0).and.(nuc.le.10000.0D+0)) then ! 1.18 µm band call khi_co2_1micron18(delta_nu,T,khi) else if ((nuc.ge.3800.0D+0).and.(nuc.le.4700.0D+0)) then ! 2.3µm band call khi_co2_2micron30(delta_nu,T,khi) else if ((nuc.ge.3700.0D+0).and.(nuc.le.4100.0D+0)) then ! 2.7 µm band call khi_co2_2micron70(delta_nu,T,khi) else if ((nuc.ge.2100.0D+0).and.(nuc.le.2600.0D+0)) then ! 4.3µm band call khi_co2_4micron30(delta_nu,T,khi) endif c else if (sl_choice.eq.1) then c Results from Pollack et al. 1993, (derived at room temperature) if (slwr) then c no respect of validity range: use 1.18 microns band call khi_co2_1micron18(delta_nu,T,khi) else ! inside validity range if ((nuc.ge.7400.0D+0).and.(nuc.le.10000.0D+0)) then ! 1.18 µm band call khi_co2_1micron18(delta_nu,T,khi) else if ((nuc.ge.3700.0D+0).and.(nuc.le.4100.0D+0)) then ! 2.7 µm band call khi_co2_2micron70(delta_nu,T,khi) endif endif ! slwr c else if (sl_choice.eq.2) then c Results from Perrin & Hartmann 1989 valid for 300