LCOV - code coverage report
Current view: top level - physics/waccm - nlte_fomichev.F90 (source / functions) Hit Total Coverage
Test: coverage.info Lines: 444 454 97.8 %
Date: 2025-03-14 01:33:33 Functions: 12 12 100.0 %

          Line data    Source code
       1             : module nlte_fomichev
       2             : 
       3             : !
       4             : ! provides calculation of non-LTE heating rates by Fomichev parameterization
       5             : !
       6             :   use ppgrid,             only: pcols, pver, pverp
       7             :   use shr_kind_mod,       only: r8 => shr_kind_r8
       8             :   use physconst,          only: r_universal, rearth, avogad, boltz, pi
       9             :   use chem_surfvals,      only: chem_surfvals_get
      10             :   use cam_abortutils,     only: endrun
      11             :   use phys_grid,          only: get_rlon_p, get_rlat_p
      12             :   use cam_logfile,        only: iulog
      13             :   use spmd_utils,         only: masterproc
      14             : 
      15             :   implicit none
      16             :   private
      17             :   save
      18             : 
      19             : ! Public interfaces
      20             :   public &
      21             :      nlte_fomichev_init, &
      22             :      nlte_fomichev_calc, &
      23             :      nocooling,          &
      24             :      o3pcooling
      25             : 
      26             : ! Private module data
      27             : 
      28             : !
      29             : ! Fomichev radiation parameters
      30             : !
      31             :    integer :: nrfmc,nrfmg,nrfm,nrfmnlte,nrfmlte,nrfmlteo3,nrfmltelv,nrfmco2
      32             : 
      33             :    parameter (nrfmc=59)           ! no. of levels of Fomichev parameterization (2-16.5 by 0.25)
      34             :    parameter (nrfmg=8)            ! no. of levels between ground and first calculated level (0-1.75 by 0.25)
      35             :    parameter (nrfm=nrfmc+nrfmg)   ! total no. of levels of Fomichev paramterization
      36             :    parameter (nrfmnlte=17)        ! no. of levels of NLTE calculation + 1(b.c. at 12.5)
      37             :    parameter (nrfmlte=43)         ! no. of levels of LTE calculation
      38             :    parameter (nrfmlteo3=35)       ! no. of levels of LTE calculation - O3 ONLY!
      39             :    parameter (nrfmltelv=9)        ! no. of levels used in the LTE integral
      40             :    parameter (nrfmco2=4)          ! no. of CO2 precalculated profiles
      41             : 
      42             :   integer i,ix,js
      43             : 
      44             :   real(r8) :: o1_mw                      ! O molecular weight
      45             :   real(r8) :: o2_mw                      ! O2 molecular weight
      46             :   real(r8) :: o3_mw                      ! O3 molecular weight
      47             :   real(r8) :: co2_mw                     ! CO2 molecular weight
      48             :   real(r8) :: n2_mw                      ! N2 molecular weight
      49             :   real(r8) :: no_mw                      ! NO molecular weight
      50             :   
      51             : ! Physical constants is cgs units
      52             :   real(r8), parameter :: akbl=boltz*1e7_r8   ! Boltzman constant
      53             :   real(r8), parameter :: anav=avogad*1e-3_r8 ! Avogadro Number
      54             :   real(r8), parameter :: grav0=980._r8       ! gravitational constant
      55             :   real(r8)            :: arad                ! planet's radius (cm)
      56             :   real(r8), parameter :: ur=r_universal*1e4_r8 ! universal gas constant (R_star)
      57             :   
      58             :   real(r8), parameter :: a10=1.5988_r8         ! reaction constant
      59             :   real(r8), parameter :: const=2.63187E11_r8   ! reaction constant
      60             :   real(r8), parameter :: constb=9.08795e9_r8   ! reaction constant
      61             : 
      62             :   real(r8), parameter :: ptop_co2cool=7.42e-3_r8 ! top pressure level for co2 cool calculation (Pa)
      63             :   integer :: ktop_co2cool                        ! the level index defining the top of CO2 cool calculation
      64             : 
      65             : !VERTICAL GRIDs to be used in IR scheme
      66             : !XR(67) - pressure scale heights, psh's, (=0-16.5) at which input parameter
      67             : !         should be given
      68             :   real(r8) xr(nrfm)
      69             : 
      70             : !DATA for "LTE" parameterization (x=2-12.5)
      71             : !IG(9) - indexes of level which should be used to account for the internal
      72             : !        atmospheric heat exchange
      73             : !AO3(35,9) - coefficients for O3 scheme to calculate cooling rate in
      74             : !            "erg/g/s" at levels x=2-10.5 (with a step of 0.25)
      75             : !CO2O(4) - vmr for basic CO2
      76             : !"LTE-coefficients" for CO2 scheme using to calculate cooling rate in
      77             : !"erg/g/s" in region x=2-12.5 (with a step of 0.25). To account for internal
      78             : !heat exchange 9 level in atmosphere are needed. 
      79             : ! A150, B150(43,9) - for 150ppm of CO2
      80             : ! A360, B360(43,9) - for 360ppm of CO2
      81             : ! A540, B540(43,9) - for 540ppm of CO2
      82             : ! A720, B720(43,9) - for 720ppm of CO2
      83             :    integer ig(nrfmltelv)
      84             : 
      85             :    real(r8) a150(nrfmlte,nrfmltelv)
      86             :    real(r8) b150(nrfmlte,nrfmltelv)
      87             :    real(r8) a360(nrfmlte,nrfmltelv)
      88             :    real(r8) b360(nrfmlte,nrfmltelv)
      89             :    real(r8) a540(nrfmlte,nrfmltelv)
      90             :    real(r8) b540(nrfmlte,nrfmltelv)
      91             :    real(r8) a720(nrfmlte,nrfmltelv)
      92             :    real(r8) b720(nrfmlte,nrfmltelv)
      93             :    real(r8) co2o(nrfmco2)
      94             : 
      95             : !DATA for NLTE parameterization CO2 (x=12.5-16.5)
      96             : !UCO2RO, ALO(51) - CO2 column amount and corresponding escape functions
      97             : !                                             (eventually, their log)
      98             : !COR150, COR360, COR540, COR720(6) - correction to escape functions to
      99             : !  calculate coefficients for the reccurence formula between x=12.5 and 13.75
     100             : !UCO2CO(6) - CO2 column amount at x=12.5-13.75 (step - 0.25) for 360 ppm
     101             : !            to be used to correct escape functions in this region
     102             :    real(r8) uco2ro(51)
     103             :    real(r8) alo(51)
     104             :    real(r8) cor150(6)
     105             :    real(r8) cor360(6)
     106             :    real(r8) cor540(6)
     107             :    real(r8) cor720(6)
     108             :    real(r8) uco2co(6)
     109             :    real(r8) ao3(nrfmlteo3,nrfmltelv)
     110             : 
     111             :    data (xr(i), i=1,67)/                                                 &
     112             :        0.0_r8, 0.25_r8, 0.5_r8, 0.75_r8, 1.0_r8, 1.25_r8, 1.5_r8, 1.75_r8, 2.0_r8, 2.25_r8, 2.5_r8, 2.75_r8, &
     113             :        3.0_r8, 3.25_r8, 3.5_r8, 3.75_r8, 4.0_r8, 4.25_r8, 4.5_r8, 4.75_r8, 5.0_r8, 5.25_r8, 5.5_r8, 5.75_r8, &
     114             :        6.0_r8, 6.25_r8, 6.5_r8, 6.75_r8, 7.0_r8, 7.25_r8, 7.5_r8, 7.75_r8, 8.0_r8, 8.25_r8, 8.5_r8, 8.75_r8, &
     115             :        9.0_r8, 9.25_r8, 9.5_r8, 9.75_r8,10.0_r8,10.25_r8,10.5_r8,10.75_r8,11.0_r8,11.25_r8,11.5_r8,11.75_r8, &
     116             :       12.0_r8,12.25_r8,12.5_r8,12.75_r8,13.0_r8,13.25_r8,13.5_r8,13.75_r8,14.0_r8,14.25_r8,14.5_r8,14.75_r8, &
     117             :       15.0_r8,15.25_r8,15.5_r8,15.75_r8,16.0_r8,16.25_r8,16.5_r8/
     118             : 
     119             :    data (ig(i),i=1,9)/-25,-12,-7,-3,-1,0,1,3,6/
     120             : 
     121             : 
     122             :    data (co2o(i),i=1,4)/150.e-6_r8, 360.e-6_r8, 540.e-6_r8, 720.e-6_r8/
     123             : 
     124             :    data (uco2co(i),i=1,6) /2.546953e+16_r8,1.913609e+16_r8,1.425730e+16_r8,      &
     125             :                               1.052205e+16_r8,7.700499e+15_r8,5.596946e+15_r8/
     126             :    data (cor150(i),i=1,6) /2.530798e-01_r8,2.048590e-01_r8,1.050616e-01_r8,      &
     127             :                               9.172653e-02_r8,4.528593e-02_r8,3.384089e-02_r8/
     128             :    data (cor360(i),i=1,6) /4.848122e-01_r8,4.224252e-01_r8,2.958043e-01_r8,      &
     129             :                               2.067767e-01_r8,1.244037e-01_r8,5.792163e-02_r8/
     130             :    data (cor540(i),i=1,6) /6.263170e-01_r8,5.332695e-01_r8,3.773434e-01_r8,      &
     131             :                               2.592216e-01_r8,1.514242e-01_r8,6.889337e-02_r8/
     132             :    data (cor720(i),i=1,6) /7.248522e-01_r8,6.199704e-01_r8,4.525580e-01_r8,      &
     133             :                               3.046277e-01_r8,1.787235e-01_r8,7.953181e-02_r8/
     134             : 
     135             :    data (uco2ro(i),i=1,51)   /2.699726e+11_r8,5.810773e+11_r8,1.106722e+12_r8,   &
     136             :        1.952319e+12_r8,3.306797e+12_r8,5.480155e+12_r8,8.858565e+12_r8,1.390142e+13_r8,&
     137             :        2.129301e+13_r8,3.209300e+13_r8,4.784654e+13_r8,7.091442e+13_r8,1.052353e+14_r8,&
     138             :        1.565317e+14_r8,2.320320e+14_r8,3.415852e+14_r8,4.986668e+14_r8,7.212717e+14_r8,&
     139             :        1.033831e+15_r8,1.469497e+15_r8,2.073209e+15_r8,2.905406e+15_r8,4.044901e+15_r8,&
     140             :        5.596946e+15_r8,7.700499e+15_r8,1.052205e+16_r8,1.425730e+16_r8,1.913609e+16_r8,&
     141             :        2.546953e+16_r8,3.366464e+16_r8,4.421144e+16_r8,5.775381e+16_r8,7.514254e+16_r8,&
     142             :        9.747013e+16_r8,1.261393e+17_r8,1.629513e+17_r8,2.102188e+17_r8,2.709114e+17_r8,&
     143             :        3.488423e+17_r8,4.489076e+17_r8,5.773939e+17_r8,7.423736e+17_r8,9.542118e+17_r8,&
     144             :        1.226217e+18_r8,1.575480e+18_r8,2.023941e+18_r8,2.599777e+18_r8,3.339164e+18_r8,&
     145             :        4.288557e+18_r8,5.507602e+18_r8,7.072886e+18_r8/
     146             : 
     147             :    data (alo(i),i=1,51) /-2.410106e-04_r8,-5.471415e-04_r8,-1.061586e-03_r8,     &
     148             :               -1.879789e-03_r8,-3.166020e-03_r8,-5.185436e-03_r8,-8.216667e-03_r8,  &
     149             :               -1.250894e-02_r8,-1.838597e-02_r8,-2.631114e-02_r8,-3.688185e-02_r8,  &  
     150             :               -5.096491e-02_r8,-7.004056e-02_r8,-9.603746e-02_r8,-1.307683e-01_r8,  &
     151             :               -1.762946e-01_r8,-2.350226e-01_r8,-3.095215e-01_r8,-4.027339e-01_r8,  &
     152             :               -5.178570e-01_r8,-6.581256e-01_r8,-8.265003e-01_r8,-1.024684e+00_r8,  &
     153             :               -1.252904e+00_r8,-1.509470e+00_r8,-1.788571e+00_r8,-2.081700e+00_r8,  &
     154             :               -2.379480e+00_r8,-2.675720e+00_r8,-2.967325e+00_r8,-3.252122e+00_r8,  &
     155             :               -3.530485e+00_r8,-3.803720e+00_r8,-4.072755e+00_r8,-4.338308e+00_r8,  &
     156             :               -4.601048e+00_r8,-4.861585e+00_r8,-5.120370e+00_r8,-5.377789e+00_r8,  &
     157             :               -5.634115e+00_r8,-5.889388e+00_r8,-6.143488e+00_r8,-6.396436e+00_r8,  &
     158             :               -6.648774e+00_r8,-6.901465e+00_r8,-7.155207e+00_r8,-7.409651e+00_r8,  &
     159             :               -7.663536e+00_r8,-7.915682e+00_r8,-8.165871e+00_r8,-8.415016e+00_r8/
     160             : 
     161             :    data ((ao3(ix,js),js=1,9),ix=1,10)/                                  &
     162             :        5.690e+09_r8, 0.000e+00_r8, 1.962e+09_r8, 5.015e+09_r8, 7.105e+09_r8,-3.952e+10_r8,&
     163             :        8.916e+09_r8, 1.204e+09_r8, 5.434e+09_r8, 4.997e+09_r8, 0.000e+00_r8, 2.168e+09_r8,&
     164             :        4.981e+09_r8, 7.327e+09_r8,-3.855e+10_r8, 9.296e+09_r8, 1.326e+09_r8, 4.575e+09_r8,&
     165             :        4.179e+09_r8, 0.000e+00_r8, 2.198e+09_r8, 4.594e+09_r8, 7.780e+09_r8,-3.689e+10_r8,&
     166             :        9.624e+09_r8, 1.107e+09_r8, 3.736e+09_r8, 3.469e+09_r8, 0.000e+00_r8, 1.941e+09_r8,&
     167             :        3.921e+09_r8, 8.423e+09_r8,-3.508e+10_r8, 9.859e+09_r8, 8.736e+08_r8, 3.058e+09_r8,&
     168             :        2.930e+09_r8, 0.000e+00_r8, 1.649e+09_r8, 3.378e+09_r8, 8.985e+09_r8,-3.362e+10_r8,&
     169             :        9.941e+09_r8, 8.110e+08_r8, 2.367e+09_r8, 2.020e+09_r8, 3.866e+08_r8, 1.368e+09_r8,&
     170             :        3.049e+09_r8, 9.452e+09_r8,-3.249e+10_r8, 1.010e+10_r8, 6.212e+08_r8, 2.117e+09_r8,&
     171             :        1.652e+09_r8, 3.711e+08_r8, 1.175e+09_r8, 2.747e+09_r8, 9.818e+09_r8,-3.165e+10_r8,&
     172             :        1.014e+10_r8, 5.470e+08_r8, 1.843e+09_r8, 1.391e+09_r8, 3.497e+08_r8, 1.033e+09_r8,&
     173             :        2.570e+09_r8, 1.008e+10_r8,-3.102e+10_r8, 1.017e+10_r8, 5.121e+08_r8, 1.552e+09_r8,&
     174             :        1.197e+09_r8, 3.329e+08_r8, 9.689e+08_r8, 2.427e+09_r8, 1.024e+10_r8,-3.056e+10_r8,&
     175             :        1.011e+10_r8, 4.521e+08_r8, 1.312e+09_r8, 9.961e+08_r8, 3.390e+08_r8, 9.867e+08_r8,&
     176             :        2.375e+09_r8, 1.032e+10_r8,-3.033e+10_r8, 1.011e+10_r8, 5.322e+08_r8, 1.178e+09_r8/
     177             : 
     178             :    data ((ao3(ix,js),js=1,9),ix=11,20)/                                 &
     179             :        8.408e+08_r8, 4.922e+08_r8, 9.226e+08_r8, 2.358e+09_r8, 1.039e+10_r8,-3.030e+10_r8,&
     180             :        1.004e+10_r8, 5.551e+08_r8, 1.141e+09_r8, 7.250e+08_r8, 5.353e+08_r8, 9.493e+08_r8,&
     181             :        2.497e+09_r8, 1.040e+10_r8,-3.047e+10_r8, 9.971e+09_r8, 8.389e+08_r8, 9.122e+08_r8,&
     182             :        6.484e+08_r8, 5.214e+08_r8, 1.014e+09_r8, 2.625e+09_r8, 1.038e+10_r8,-3.058e+10_r8,&
     183             :        9.903e+09_r8, 7.720e+08_r8, 9.455e+08_r8, 5.785e+08_r8, 4.987e+08_r8, 1.037e+09_r8,&
     184             :        2.694e+09_r8, 1.039e+10_r8,-3.089e+10_r8, 9.698e+09_r8, 1.068e+09_r8, 8.903e+08_r8,&
     185             :        5.272e+08_r8, 4.955e+08_r8, 1.194e+09_r8, 2.998e+09_r8, 1.026e+10_r8,-3.160e+10_r8,&
     186             :        9.466e+09_r8, 1.239e+09_r8, 9.659e+08_r8, 4.891e+08_r8, 5.131e+08_r8, 1.299e+09_r8,&
     187             :        3.456e+09_r8, 1.016e+10_r8,-3.275e+10_r8, 9.003e+09_r8, 1.593e+09_r8, 1.083e+09_r8,&
     188             :        4.643e+08_r8, 5.668e+08_r8, 1.500e+09_r8, 4.096e+09_r8, 9.972e+09_r8,-3.422e+10_r8,&
     189             :        8.345e+09_r8, 1.790e+09_r8, 1.256e+09_r8, 4.461e+08_r8, 6.391e+08_r8, 1.870e+09_r8,&
     190             :        4.881e+09_r8, 9.608e+09_r8,-3.621e+10_r8, 7.386e+09_r8, 2.105e+09_r8, 1.460e+09_r8,&
     191             :        6.471e+08_r8, 1.536e+08_r8, 2.567e+09_r8, 5.909e+09_r8, 9.088e+09_r8,-3.844e+10_r8,&
     192             :        6.248e+09_r8, 2.173e+09_r8, 1.536e+09_r8, 5.377e+08_r8, 1.101e+08_r8, 3.474e+09_r8,&
     193             :        6.992e+09_r8, 8.333e+09_r8,-4.065e+10_r8, 4.979e+09_r8, 2.019e+09_r8, 1.594e+09_r8/
     194             : 
     195             :    data ((ao3(ix,js),js=1,9),ix=21,30)/                                 &
     196             :        7.064e+08_r8, 1.346e+08_r8, 4.535e+09_r8, 7.814e+09_r8, 7.361e+09_r8,-4.248e+10_r8,&
     197             :        3.786e+09_r8, 1.733e+09_r8, 1.431e+09_r8, 1.210e+09_r8, 2.133e+08_r8, 5.772e+09_r8,&
     198             :        8.402e+09_r8, 6.184e+09_r8,-4.400e+10_r8, 2.883e+09_r8, 1.530e+09_r8, 1.163e+09_r8,&
     199             :        2.121e+09_r8, 3.450e+08_r8, 7.111e+09_r8, 8.611e+09_r8, 4.874e+09_r8,-4.499e+10_r8,&
     200             :        2.055e+09_r8, 1.126e+09_r8, 8.840e+08_r8, 3.393e+09_r8, 5.066e+08_r8, 8.176e+09_r8,&
     201             :        8.419e+09_r8, 3.777e+09_r8,-4.573e+10_r8, 1.418e+09_r8, 8.927e+08_r8, 6.356e+08_r8,&
     202             :        4.838e+09_r8, 6.534e+08_r8, 9.188e+09_r8, 7.895e+09_r8, 2.746e+09_r8,-4.628e+10_r8,&
     203             :        9.548e+08_r8, 6.033e+08_r8, 4.810e+08_r8, 5.852e+09_r8, 1.286e+09_r8, 9.867e+09_r8,&
     204             :        7.121e+09_r8, 2.046e+09_r8,-4.663e+10_r8, 6.643e+08_r8, 4.034e+08_r8, 2.258e+08_r8,&
     205             :        6.624e+09_r8, 2.439e+09_r8, 1.044e+10_r8, 5.950e+09_r8, 1.380e+09_r8,-4.691e+10_r8,&
     206             :        4.209e+08_r8, 2.635e+08_r8, 2.211e+08_r8, 7.030e+09_r8, 3.865e+09_r8, 1.055e+10_r8,&
     207             :        4.781e+09_r8, 1.009e+09_r8,-4.708e+10_r8, 3.238e+08_r8, 2.107e+08_r8, 1.094e+08_r8,&
     208             :        8.099e+09_r8, 4.843e+09_r8, 1.065e+10_r8, 3.732e+09_r8, 6.798e+08_r8,-4.719e+10_r8,&
     209             :        1.852e+08_r8, 1.233e+08_r8, 1.513e+08_r8, 8.382e+09_r8, 6.426e+09_r8, 1.018e+10_r8,&
     210             :        2.771e+09_r8, 4.593e+08_r8,-4.726e+10_r8, 1.084e+08_r8, 8.368e+07_r8, 0.000e+00_r8/
     211             : 
     212             :    data ((ao3(ix,js),js=1,9),ix=31,35)/                                 &
     213             :        9.545e+09_r8, 7.667e+09_r8, 9.429e+09_r8, 1.927e+09_r8, 3.143e+08_r8,-4.731e+10_r8,&
     214             :        7.075e+07_r8, 5.179e+07_r8, 0.000e+00_r8, 1.036e+10_r8, 9.146e+09_r8, 8.014e+09_r8,&
     215             :        1.355e+09_r8, 2.280e+08_r8,-4.734e+10_r8, 4.459e+07_r8, 3.463e+07_r8, 0.000e+00_r8,&
     216             :        1.180e+10_r8, 1.021e+10_r8, 6.725e+09_r8, 9.575e+08_r8, 1.091e+08_r8,-4.736e+10_r8,&
     217             :        3.018e+07_r8, 2.000e+07_r8, 0.000e+00_r8, 8.878e+09_r8, 7.184e+09_r8, 3.569e+09_r8,&
     218             :        4.023e+08_r8, 4.656e+07_r8,-3.079e+10_r8, 1.374e+07_r8, 0.000e+00_r8, 0.000e+00_r8,&
     219             :        4.652e+09_r8, 3.469e+09_r8, 1.385e+09_r8, 1.114e+08_r8, 1.368e+07_r8,-1.421e+10_r8,&
     220             :        3.553e+06_r8, 0.000e+00_r8, 0.000e+00_r8/
     221             : 
     222             :    data ((a150(ix,js),js=1,9),ix=1,5)/                                  &      
     223             :        2.5035e+01_r8, 0.0000e+00_r8, 9.4137e+01_r8, 2.4765e+03_r8, 3.2467e+03_r8,      &
     224             :       -1.1090e+04_r8, 4.0701e+02_r8, 2.1062e+03_r8, 6.1997e+02_r8, 3.1497e+01_r8,      &
     225             :        0.0000e+00_r8, 1.5661e+02_r8, 3.1886e+03_r8, 3.0556e+03_r8,-1.2560e+04_r8,      &
     226             :        2.1713e+02_r8, 2.2157e+03_r8, 7.7184e+02_r8, 3.6209e+01_r8, 0.0000e+00_r8,      &
     227             :        2.5391e+02_r8, 3.8867e+03_r8, 2.8525e+03_r8,-1.4009e+04_r8,-3.8903e+00_r8,      &
     228             :        2.2576e+03_r8, 9.1027e+02_r8, 3.9456e+01_r8, 0.0000e+00_r8, 4.0539e+02_r8,      &
     229             :        4.4674e+03_r8, 2.6199e+03_r8,-1.5203e+04_r8,-2.0232e+02_r8, 2.2454e+03_r8,      &
     230             :        1.0123e+03_r8, 4.3855e+01_r8, 0.0000e+00_r8, 6.3518e+02_r8, 4.9490e+03_r8,      &
     231             :        2.3873e+03_r8,-1.6282e+04_r8,-4.0148e+02_r8, 2.2334e+03_r8, 1.0983e+03_r8/ 
     232             : 
     233             :    data ((a150(ix,js),js=1,9),ix=6,10)/                                 &
     234             :        1.4880e+01_r8, 5.2053e+01_r8, 8.8187e+02_r8, 5.4055e+03_r8, 2.1311e+03_r8,      &
     235             :       -1.7305e+04_r8,-5.7150e+02_r8, 2.2465e+03_r8, 1.1736e+03_r8, 1.8779e+01_r8,      &
     236             :        8.2377e+01_r8, 1.1180e+03_r8, 5.7943e+03_r8, 1.8908e+03_r8,-1.8247e+04_r8,      &
     237             :       -7.1038e+02_r8, 2.3030e+03_r8, 1.2335e+03_r8, 2.3004e+01_r8, 1.2959e+02_r8,      &
     238             :        1.3044e+03_r8, 6.1369e+03_r8, 1.6879e+03_r8,-1.9121e+04_r8,-8.4776e+02_r8,      &
     239             :        2.4019e+03_r8, 1.2764e+03_r8, 2.7051e+01_r8, 1.9749e+02_r8, 1.4427e+03_r8,      &
     240             :        6.4390e+03_r8, 1.4997e+03_r8,-1.9896e+04_r8,-9.8529e+02_r8, 2.5405e+03_r8,      &
     241             :        1.2946e+03_r8, 3.0107e+01_r8, 2.8477e+02_r8, 1.5605e+03_r8, 6.6846e+03_r8,      &
     242             :        1.3469e+03_r8,-2.0582e+04_r8,-1.1115e+03_r8, 2.7010e+03_r8, 1.2951e+03_r8/
     243             : 
     244             :    data ((a150(ix,js),js=1,9),ix=11,15)/                                &
     245             :        3.3100e+01_r8, 3.8721e+02_r8, 1.6772e+03_r8, 6.8908e+03_r8, 1.2666e+03_r8,      &
     246             :       -2.1299e+04_r8,-1.2333e+03_r8, 2.9002e+03_r8, 1.2922e+03_r8, 3.6769e+01_r8,      &
     247             :        5.0026e+02_r8, 1.8186e+03_r8, 7.0844e+03_r8, 1.2377e+03_r8,-2.2143e+04_r8,      &
     248             :       -1.3997e+03_r8, 3.1384e+03_r8, 1.3038e+03_r8, 4.0958e+01_r8, 6.2580e+02_r8,      &
     249             :        1.9791e+03_r8, 7.3078e+03_r8, 1.1888e+03_r8,-2.3138e+04_r8,-1.5839e+03_r8,      &
     250             :        3.4194e+03_r8, 1.3343e+03_r8, 4.5506e+01_r8, 7.5175e+02_r8, 2.1209e+03_r8,      &
     251             :        7.5851e+03_r8, 1.1225e+03_r8,-2.4221e+04_r8,-1.8076e+03_r8, 3.7350e+03_r8,      &
     252             :        1.3778e+03_r8, 5.0606e+01_r8, 8.8360e+02_r8, 2.2346e+03_r8, 7.9275e+03_r8,      &
     253             :        1.0078e+03_r8,-2.5290e+04_r8,-2.0653e+03_r8, 4.0577e+03_r8, 1.4264e+03_r8/
     254             : 
     255             :    data ((a150(ix,js),js=1,9),ix=16,20)/                                &
     256             :        5.6331e+01_r8, 1.0256e+03_r8, 2.3251e+03_r8, 8.3240e+03_r8, 8.5705e+02_r8,      &
     257             :       -2.6376e+04_r8,-2.3440e+03_r8, 4.3896e+03_r8, 1.4827e+03_r8, 6.2586e+01_r8,      &
     258             :        1.1799e+03_r8, 2.4192e+03_r8, 8.7537e+03_r8, 7.1111e+02_r8,-2.7532e+04_r8,      &
     259             :       -2.6284e+03_r8, 4.7408e+03_r8, 1.5489e+03_r8, 6.9499e+01_r8, 1.3513e+03_r8,      &
     260             :        2.5385e+03_r8, 9.2024e+03_r8, 5.9855e+02_r8,-2.8837e+04_r8,-2.9066e+03_r8,      &
     261             :        5.1230e+03_r8, 1.6315e+03_r8, 9.8718e+01_r8, 1.4643e+03_r8, 2.7198e+03_r8,      &
     262             :        9.6727e+03_r8, 5.6542e+02_r8,-3.0324e+04_r8,-3.1708e+03_r8, 5.5386e+03_r8,      &
     263             :        1.7411e+03_r8, 1.4214e+02_r8, 1.5587e+03_r8, 2.9412e+03_r8, 1.0183e+04_r8,      &
     264             :        6.2959e+02_r8,-3.2074e+04_r8,-3.4238e+03_r8, 5.9832e+03_r8, 1.8906e+03_r8/
     265             : 
     266             :    data ((a150(ix,js),js=1,9),ix=21,25)/                                &
     267             :        2.0882e+02_r8, 1.6315e+03_r8, 3.1941e+03_r8, 1.0757e+04_r8, 8.0531e+02_r8,      &
     268             :       -3.4141e+04_r8,-3.6662e+03_r8, 6.4368e+03_r8, 2.0964e+03_r8, 3.0513e+02_r8,      &
     269             :        1.6987e+03_r8, 3.4635e+03_r8, 1.1429e+04_r8, 1.0747e+03_r8,-3.6585e+04_r8,      &
     270             :       -3.8843e+03_r8, 6.8932e+03_r8, 2.3807e+03_r8, 4.3086e+02_r8, 1.7634e+03_r8,      &
     271             :        3.7650e+03_r8, 1.2253e+04_r8, 1.4449e+03_r8,-3.9487e+04_r8,-4.0949e+03_r8,      &
     272             :        7.3521e+03_r8, 2.7604e+03_r8, 5.6228e+02_r8, 1.8545e+03_r8, 4.0922e+03_r8,      &
     273             :        1.3286e+04_r8, 1.8655e+03_r8,-4.2969e+04_r8,-4.3141e+03_r8, 7.7726e+03_r8,      &
     274             :        3.3137e+03_r8, 6.5591e+02_r8, 1.9789e+03_r8, 4.4192e+03_r8, 1.4473e+04_r8,      &
     275             :        2.2732e+03_r8,-4.6758e+04_r8,-4.5119e+03_r8, 8.1060e+03_r8, 4.0069e+03_r8/
     276             : 
     277             :    data ((a150(ix,js),js=1,9),ix=26,31)/                                &
     278             :        7.1489e+02_r8, 2.1391e+03_r8, 4.7555e+03_r8, 1.5792e+04_r8, 2.6329e+03_r8,      &
     279             :       -5.0784e+04_r8,-4.6936e+03_r8, 8.3781e+03_r8, 4.7906e+03_r8, 7.5917e+02_r8,      &
     280             :        2.3306e+03_r8, 5.1321e+03_r8, 1.7236e+04_r8, 2.9779e+03_r8,-5.5179e+04_r8,      &
     281             :       -4.8828e+03_r8, 8.7136e+03_r8, 5.5138e+03_r8, 8.1061e+02_r8, 2.5462e+03_r8,      &
     282             :        5.5725e+03_r8, 1.8761e+04_r8, 3.3368e+03_r8,-6.0007e+04_r8,-5.0788e+03_r8,      &
     283             :        9.1950e+03_r8, 6.1026e+03_r8, 8.6939e+02_r8, 2.7684e+03_r8, 6.1037e+03_r8,      &
     284             :        2.0165e+04_r8, 3.7711e+03_r8,-6.4792e+04_r8,-5.2866e+03_r8, 9.9049e+03_r8,      &
     285             :        6.1727e+03_r8, 9.4294e+02_r8, 3.0123e+03_r8, 6.6875e+03_r8, 2.1225e+04_r8,      &
     286             :        4.4266e+03_r8,-6.9341e+04_r8,-5.5392e+03_r8, 1.1040e+04_r8, 5.5220e+03_r8,      &
     287             :        1.0189e+03_r8, 3.2497e+03_r8, 7.2300e+03_r8, 2.0698e+04_r8, 5.1305e+03_r8,      &
     288             :       -7.1191e+04_r8,-5.7478e+03_r8, 1.2510e+04_r8, 3.5534e+03_r8/
     289             : 
     290             :    data ((a150(ix,js),js=1,9),ix=32,37)/                                &
     291             :        1.1449e+03_r8, 3.7084e+03_r8, 7.4630e+03_r8, 1.9495e+04_r8, 5.5511e+03_r8,      &
     292             :       -7.3819e+04_r8,-5.4997e+03_r8, 1.4972e+04_r8, 2.3195e+03_r8, 1.2999e+03_r8,      &
     293             :        4.3325e+03_r8, 7.4755e+03_r8, 1.6338e+04_r8, 5.1750e+03_r8,-7.5166e+04_r8,      &
     294             :       -4.4753e+03_r8, 1.7530e+04_r8, 2.4555e+03_r8, 1.4512e+03_r8, 5.0331e+03_r8,      &
     295             :        7.0224e+03_r8, 1.5180e+04_r8, 3.2675e+03_r8,-7.8134e+04_r8,-3.0385e+03_r8,      &
     296             :        2.0430e+04_r8, 2.7439e+03_r8, 1.5838e+03_r8, 5.7655e+03_r8, 6.0092e+03_r8,      &
     297             :        1.4199e+04_r8, 5.0935e+03_r8,-8.0938e+04_r8,-3.1873e+03_r8, 2.1397e+04_r8,      &
     298             :        2.3826e+03_r8, 1.6805e+03_r8, 6.6768e+03_r8, 4.2956e+03_r8, 1.4811e+04_r8,      &
     299             :        8.4327e+03_r8,-8.6256e+04_r8,-4.1912e+03_r8, 2.2919e+04_r8, 1.4885e+03_r8,      &
     300             :        1.7701e+03_r8, 7.7803e+03_r8, 3.4348e+03_r8, 1.8569e+04_r8, 1.3687e+04_r8,      &
     301             :       -1.0164e+05_r8,-6.1459e+03_r8, 2.7017e+04_r8, 1.4367e+03_r8/
     302             : 
     303             :    data ((a150(ix,js),js=1,9),ix=38,43)/                                &
     304             :        2.1081e+03_r8, 9.8559e+03_r8, 3.3385e+03_r8, 2.5453e+04_r8, 1.9163e+04_r8,      &
     305             :       -1.3508e+05_r8,-7.9100e+03_r8, 4.0371e+04_r8, 3.1637e+03_r8, 2.5117e+03_r8,      &
     306             :        1.2043e+04_r8, 2.9837e+03_r8, 3.0525e+04_r8, 2.1190e+04_r8,-1.6547e+05_r8,      &
     307             :       -1.0361e+04_r8, 5.5753e+04_r8, 6.3850e+03_r8, 2.7271e+03_r8, 1.3131e+04_r8,      &
     308             :        1.4005e+03_r8, 3.1777e+04_r8, 1.8261e+04_r8,-1.7548e+05_r8,-1.2891e+04_r8,      &
     309             :        6.4744e+04_r8, 9.9029e+03_r8, 2.4817e+03_r8, 1.2549e+04_r8, 1.2521e+03_r8,      &
     310             :        3.2506e+04_r8, 1.5901e+04_r8,-1.6344e+05_r8,-1.7080e+04_r8, 5.9506e+04_r8,      &
     311             :        7.9804e+03_r8, 2.0450e+03_r8, 1.1403e+04_r8, 3.8851e+03_r8, 3.7098e+04_r8,      &
     312             :        1.3215e+04_r8,-1.5453e+05_r8,-2.1257e+04_r8, 5.2256e+04_r8, 5.4705e+03_r8,      &
     313             :        1.7609e+03_r8, 1.1782e+04_r8, 7.3394e+03_r8, 3.6003e+04_r8, 5.7292e+03_r8,      &
     314             :       -1.4489e+05_r8,-2.1518e+04_r8, 4.7419e+04_r8, 2.0765e+03_r8/
     315             : 
     316             :    data ((b150(ix,js),js=1,9),ix=1,5)/                                  &
     317             :        3.5399e+03_r8, 0.0000e+00_r8, 6.0508e+03_r8, 5.9109e+04_r8, 2.4118e+04_r8,      &
     318             :       -1.8103e+05_r8,-7.3845e+02_r8, 1.8008e+04_r8, 1.7036e+04_r8, 3.1195e+03_r8,      &
     319             :        0.0000e+00_r8, 6.9773e+03_r8, 5.7201e+04_r8, 2.0239e+04_r8,-1.7100e+05_r8,      &
     320             :       -2.3973e+03_r8, 1.8321e+04_r8, 1.5737e+04_r8, 3.0408e+03_r8, 0.0000e+00_r8,      &
     321             :        9.0810e+03_r8, 5.5104e+04_r8, 1.3930e+04_r8,-1.6106e+05_r8,-4.9406e+03_r8,      &
     322             :        1.6082e+04_r8, 1.4928e+04_r8, 3.2990e+03_r8, 0.0000e+00_r8, 1.3161e+04_r8,      &
     323             :        5.6155e+04_r8, 1.0436e+04_r8,-1.6715e+05_r8,-7.0673e+03_r8, 1.5202e+04_r8,      &
     324             :        1.5529e+04_r8, 3.5043e+03_r8, 0.0000e+00_r8, 1.8035e+04_r8, 5.4916e+04_r8,      &
     325             :        7.8353e+03_r8,-1.7025e+05_r8,-8.4919e+03_r8, 1.4317e+04_r8, 1.5764e+04_r8/
     326             : 
     327             :    data ((b150(ix,js),js=1,9),ix=6,10)/                                 &
     328             :        1.8653e+03_r8, 2.7059e+03_r8, 1.9745e+04_r8, 5.4113e+04_r8, 5.9014e+03_r8,      &
     329             :       -1.7121e+05_r8,-9.3646e+03_r8, 1.3888e+04_r8, 1.5667e+04_r8, 2.0888e+03_r8,      &
     330             :        3.6216e+03_r8, 1.9181e+04_r8, 5.2430e+04_r8, 4.3250e+03_r8,-1.6730e+05_r8,      &
     331             :       -9.8248e+03_r8, 1.3662e+04_r8, 1.5012e+04_r8, 2.2582e+03_r8, 4.7714e+03_r8,      &
     332             :        1.7132e+04_r8, 4.9716e+04_r8, 2.5383e+03_r8,-1.5818e+05_r8,-1.0089e+04_r8,      &
     333             :        1.3299e+04_r8, 1.3889e+04_r8, 2.4496e+03_r8, 6.2997e+03_r8, 1.5321e+04_r8,      &
     334             :        4.8636e+04_r8, 9.3940e+02_r8,-1.5318e+05_r8,-1.0680e+04_r8, 1.3768e+04_r8,      &
     335             :        1.2975e+04_r8, 2.7048e+03_r8, 8.2966e+03_r8, 1.4669e+04_r8, 4.9707e+04_r8,      &
     336             :       -6.8884e+02_r8,-1.5464e+05_r8,-1.1834e+04_r8, 1.4872e+04_r8, 1.2636e+04_r8/
     337             : 
     338             :    data ((b150(ix,js),js=1,9),ix=11,15)/                                &
     339             :        3.0080e+03_r8, 1.0337e+04_r8, 1.4758e+04_r8, 5.1024e+04_r8,-2.2171e+03_r8,      &
     340             :       -1.5788e+05_r8,-1.3463e+04_r8, 1.6569e+04_r8, 1.2308e+04_r8, 3.3257e+03_r8,      &
     341             :        1.2025e+04_r8, 1.5122e+04_r8, 5.1259e+04_r8,-3.7550e+03_r8,-1.5938e+05_r8,      &
     342             :       -1.5169e+04_r8, 1.8104e+04_r8, 1.1931e+04_r8, 3.6784e+03_r8, 1.3370e+04_r8,      &
     343             :        1.5491e+04_r8, 5.0380e+04_r8,-5.6000e+03_r8,-1.5854e+05_r8,-1.6538e+04_r8,      &
     344             :        1.9311e+04_r8, 1.1575e+04_r8, 4.0171e+03_r8, 1.4413e+04_r8, 1.5479e+04_r8,      &
     345             :        4.8944e+04_r8,-7.1724e+03_r8,-1.5614e+05_r8,-1.7640e+04_r8, 2.0517e+04_r8,      &
     346             :        1.1214e+04_r8, 4.3161e+03_r8, 1.5290e+04_r8, 1.5284e+04_r8, 4.8663e+04_r8,      &
     347             :       -7.7645e+03_r8,-1.5691e+05_r8,-1.8632e+04_r8, 2.2492e+04_r8, 1.1169e+04_r8/
     348             : 
     349             :    data ((b150(ix,js),js=1,9),ix=16,20)/                                &
     350             :        4.6114e+03_r8, 1.6154e+04_r8, 1.4979e+04_r8, 4.9364e+04_r8,-7.9418e+03_r8,      &
     351             :       -1.6022e+05_r8,-1.9786e+04_r8, 2.5014e+04_r8, 1.1385e+04_r8, 4.8886e+03_r8,      &
     352             :        1.7121e+04_r8, 1.4681e+04_r8, 5.0603e+04_r8,-8.0295e+03_r8,-1.6487e+05_r8,      &
     353             :       -2.1104e+04_r8, 2.7565e+04_r8, 1.1912e+04_r8, 5.1220e+03_r8, 1.8151e+04_r8,      &
     354             :        1.4554e+04_r8, 5.2649e+04_r8,-8.0370e+03_r8,-1.7162e+05_r8,-2.2730e+04_r8,      &
     355             :        3.0243e+04_r8, 1.2705e+04_r8, 6.9450e+03_r8, 1.4807e+04_r8, 1.6724e+04_r8,      &
     356             :        5.6069e+04_r8,-8.0590e+03_r8,-1.8189e+05_r8,-2.4936e+04_r8, 3.3115e+04_r8,      &
     357             :        1.4017e+04_r8, 9.4904e+03_r8, 1.0887e+04_r8, 1.9534e+04_r8, 6.0737e+04_r8,      &
     358             :       -8.1973e+03_r8,-1.9502e+05_r8,-2.7754e+04_r8, 3.5773e+04_r8, 1.5904e+04_r8/
     359             : 
     360             :    data ((b150(ix,js),js=1,9),ix=21,25)/                                &
     361             :        1.3201e+04_r8, 6.7672e+03_r8, 2.2982e+04_r8, 6.6827e+04_r8,-8.7998e+03_r8,      &
     362             :       -2.1116e+05_r8,-3.1231e+04_r8, 3.7848e+04_r8, 1.8559e+04_r8, 1.8353e+04_r8,      &
     363             :        2.9582e+03_r8, 2.7018e+04_r8, 7.4757e+04_r8,-1.0238e+04_r8,-2.3087e+05_r8,      &
     364             :       -3.5386e+04_r8, 3.9278e+04_r8, 2.2035e+04_r8, 2.4236e+04_r8,-7.1673e+00_r8,      &
     365             :        3.1406e+04_r8, 8.4123e+04_r8,-1.2597e+04_r8,-2.5210e+05_r8,-3.9944e+04_r8,      &
     366             :        3.9900e+04_r8, 2.5639e+04_r8, 2.8899e+04_r8,-1.8050e+03_r8, 3.5598e+04_r8,      &
     367             :        9.3624e+04_r8,-1.6264e+04_r8,-2.7076e+05_r8,-4.3916e+04_r8, 3.8269e+04_r8,      &
     368             :        2.9577e+04_r8, 3.2228e+04_r8,-2.3769e+03_r8, 4.1189e+04_r8, 1.0710e+05_r8,      &
     369             :       -2.1940e+04_r8,-2.9820e+05_r8,-4.9133e+04_r8, 3.6912e+04_r8, 3.4890e+04_r8/
     370             : 
     371             :    data ((b150(ix,js),js=1,9),ix=26,31)/                                &
     372             :        3.4901e+04_r8,-1.7054e+03_r8, 4.9616e+04_r8, 1.2729e+05_r8,-2.9857e+04_r8,      &
     373             :       -3.4296e+05_r8,-5.6738e+04_r8, 3.7392e+04_r8, 4.2347e+04_r8, 3.7694e+04_r8,      &
     374             :        2.6968e+02_r8, 6.1729e+04_r8, 1.5470e+05_r8,-4.0354e+04_r8,-4.0768e+05_r8,      &
     375             :       -6.7248e+04_r8, 4.0115e+04_r8, 5.1589e+04_r8, 4.0809e+04_r8, 4.1844e+03_r8,      &
     376             :        7.8173e+04_r8, 1.8915e+05_r8,-5.3538e+04_r8,-4.9425e+05_r8,-8.0910e+04_r8,      &
     377             :        4.5420e+04_r8, 6.2215e+04_r8, 4.3379e+04_r8, 1.0525e+04_r8, 9.9171e+04_r8,      &
     378             :        2.2658e+05_r8,-6.7757e+04_r8,-5.9481e+05_r8,-9.6665e+04_r8, 5.4277e+04_r8,      &
     379             :        6.9248e+04_r8, 4.5667e+04_r8, 1.9161e+04_r8, 1.2399e+05_r8, 2.5979e+05_r8,      & 
     380             :       -8.0920e+04_r8,-6.9722e+05_r8,-1.1391e+05_r8, 6.8928e+04_r8, 6.7840e+04_r8,      &
     381             :        4.8149e+04_r8, 2.9647e+04_r8, 1.5197e+05_r8, 2.6905e+05_r8,-9.0125e+04_r8,      &
     382             :       -7.6851e+05_r8,-1.3001e+05_r8, 8.9270e+04_r8, 4.9048e+04_r8/
     383             : 
     384             :    data ((b150(ix,js),js=1,9),ix=32,37)/                                &
     385             :        5.1966e+04_r8, 4.5702e+04_r8, 1.7720e+05_r8, 2.6058e+05_r8,-9.9247e+04_r8,      &
     386             :       -8.4400e+05_r8,-1.4248e+05_r8, 1.1906e+05_r8, 3.5837e+04_r8, 5.7382e+04_r8,      &
     387             :        6.7581e+04_r8, 1.9871e+05_r8, 2.1424e+05_r8,-1.0592e+05_r8,-9.0196e+05_r8,      &
     388             :       -1.4324e+05_r8, 1.4835e+05_r8, 3.8639e+04_r8, 6.3804e+04_r8, 9.4177e+04_r8,      &
     389             :        2.0441e+05_r8, 1.9644e+05_r8,-1.3089e+05_r8,-9.7326e+05_r8,-1.3977e+05_r8,      &
     390             :        1.7913e+05_r8, 4.3016e+04_r8, 7.0638e+04_r8, 1.2395e+05_r8, 1.8916e+05_r8,      &
     391             :        1.7195e+05_r8,-1.1044e+05_r8,-1.0265e+06_r8,-1.4544e+05_r8, 1.9545e+05_r8,      &
     392             :        3.6843e+04_r8, 7.6839e+04_r8, 1.6172e+05_r8, 1.4909e+05_r8, 1.6911e+05_r8,      &
     393             :       -7.5704e+04_r8,-1.0973e+06_r8,-1.5936e+05_r8, 2.1662e+05_r8, 2.4064e+04_r8,      &
     394             :        8.3232e+04_r8, 2.0819e+05_r8, 1.2835e+05_r8, 2.0677e+05_r8,-3.6307e+04_r8,      &
     395             :       -1.2961e+06_r8,-1.9272e+05_r8, 2.6288e+05_r8, 2.1977e+04_r8/
     396             :    data ((b150(ix,js),js=1,9),ix=38,43)/                                &
     397             :        9.6157e+04_r8, 2.8562e+05_r8, 1.1966e+05_r8, 2.8749e+05_r8,-1.2237e+04_r8,      &
     398             :       -1.7528e+06_r8,-2.4263e+05_r8, 4.0970e+05_r8, 4.1317e+04_r8, 1.1357e+05_r8,      &
     399             :        3.7596e+05_r8, 9.8652e+04_r8, 3.6598e+05_r8, 1.6096e+04_r8,-2.2962e+06_r8,      &
     400             :       -2.8607e+05_r8, 6.2929e+05_r8, 7.4848e+04_r8, 1.2829e+05_r8, 4.4149e+05_r8,      &
     401             :        4.2542e+04_r8, 4.3449e+05_r8, 3.5764e+04_r8,-2.7327e+06_r8,-3.1740e+05_r8,      &
     402             :        8.5228e+05_r8, 1.2250e+05_r8, 1.2481e+05_r8, 4.3349e+05_r8, 3.3622e+04_r8,      &
     403             :        4.8685e+05_r8, 7.3970e+04_r8,-2.7619e+06_r8,-3.5847e+05_r8, 8.7436e+05_r8,      &
     404             :        1.0368e+05_r8, 1.0994e+05_r8, 3.7480e+05_r8, 1.2328e+05_r8, 6.1220e+05_r8,      &
     405             :        7.4486e+04_r8,-2.8231e+06_r8,-4.3841e+05_r8, 8.4803e+05_r8, 7.9803e+04_r8,      &
     406             :        1.0138e+05_r8, 3.7276e+05_r8, 2.4376e+05_r8, 7.1193e+05_r8, 1.4092e+05_r8,      &
     407             :       -3.3243e+06_r8,-4.4325e+05_r8, 1.0532e+06_r8, 3.2305e+04_r8/
     408             : 
     409             :    data ((a360(ix,js),js=1,9),ix=1,5)/                                  &
     410             :        1.7094e+01_r8, 0.0000e+00_r8, 8.2972e+01_r8, 2.5829e+03_r8, 4.4982e+03_r8,      &
     411             :       -1.3393e+04_r8, 9.4326e+02_r8, 2.8560e+03_r8, 5.4669e+02_r8, 2.2911e+01_r8,      &
     412             :        0.0000e+00_r8, 1.4184e+02_r8, 3.4315e+03_r8, 4.6065e+03_r8,-1.5742e+04_r8,      &
     413             :        7.9383e+02_r8, 3.2302e+03_r8, 7.5442e+02_r8, 2.7345e+01_r8, 0.0000e+00_r8,      &
     414             :        2.3163e+02_r8, 4.3474e+03_r8, 4.7106e+03_r8,-1.8243e+04_r8, 5.5670e+02_r8,      &
     415             :        3.4688e+03_r8, 9.8490e+02_r8, 3.0814e+01_r8, 0.0000e+00_r8, 3.7251e+02_r8,      &
     416             :        5.2547e+03_r8, 4.7045e+03_r8,-2.0572e+04_r8, 3.1055e+02_r8, 3.5462e+03_r8,      &
     417             :        1.2007e+03_r8, 3.5494e+01_r8, 0.0000e+00_r8, 5.9797e+02_r8, 6.1381e+03_r8,      &
     418             :        4.5752e+03_r8,-2.2700e+04_r8,-9.7490e-02_r8, 3.5437e+03_r8, 1.3996e+03_r8/
     419             : 
     420             :    data ((a360(ix,js),js=1,9),ix=6,10)/                                 &
     421             :        9.1340e+00_r8, 4.8891e+01_r8, 8.6264e+02_r8, 7.0522e+03_r8, 4.2702e+03_r8,      &
     422             :       -2.4662e+04_r8,-3.0600e+02_r8, 3.5640e+03_r8, 1.5687e+03_r8, 1.2880e+01_r8,      &
     423             :        8.0570e+01_r8, 1.1535e+03_r8, 7.8722e+03_r8, 3.8761e+03_r8,-2.6396e+04_r8,      &
     424             :       -5.6181e+02_r8, 3.6560e+03_r8, 1.7011e+03_r8, 1.7276e+01_r8, 1.3152e+02_r8,      &
     425             :        1.4156e+03_r8, 8.5681e+03_r8, 3.5175e+03_r8,-2.7925e+04_r8,-8.2205e+02_r8,      &
     426             :        3.8262e+03_r8, 1.7943e+03_r8, 2.1698e+01_r8, 2.0535e+02_r8, 1.6357e+03_r8,      &
     427             :        9.1928e+03_r8, 3.1758e+03_r8,-2.9308e+04_r8,-1.0872e+03_r8, 4.0624e+03_r8,      &
     428             :        1.8441e+03_r8, 2.5396e+01_r8, 2.9819e+02_r8, 1.8384e+03_r8, 9.7178e+03_r8,      &
     429             :        2.8742e+03_r8,-3.0523e+04_r8,-1.3368e+03_r8, 4.3248e+03_r8, 1.8525e+03_r8/
     430             : 
     431             :    data ((a360(ix,js),js=1,9),ix=11,15)/                                &
     432             :        2.8749e+01_r8, 4.0334e+02_r8, 2.0531e+03_r8, 1.0151e+04_r8, 2.6704e+03_r8,      &
     433             :       -3.1682e+04_r8,-1.5687e+03_r8, 4.6207e+03_r8, 1.8353e+03_r8, 3.2301e+01_r8,      &
     434             :        5.2404e+02_r8, 2.3304e+03_r8, 1.0546e+04_r8, 2.5451e+03_r8,-3.2994e+04_r8,      &
     435             :       -1.8650e+03_r8, 4.9665e+03_r8, 1.8239e+03_r8, 3.6168e+01_r8, 6.6265e+02_r8,      &
     436             :        2.6543e+03_r8, 1.0920e+04_r8, 2.3793e+03_r8,-3.4430e+04_r8,-2.1422e+03_r8,      &
     437             :        5.3802e+03_r8, 1.8279e+03_r8, 4.0172e+01_r8, 8.1883e+02_r8, 2.9511e+03_r8,      &
     438             :        1.1315e+04_r8, 2.2543e+03_r8,-3.6037e+04_r8,-2.4455e+03_r8, 5.8820e+03_r8,      &
     439             :        1.8575e+03_r8, 4.4122e+01_r8, 9.9436e+02_r8, 3.1962e+03_r8, 1.1812e+04_r8,      &
     440             :        2.1571e+03_r8,-3.7838e+04_r8,-2.7947e+03_r8, 6.4488e+03_r8, 1.9130e+03_r8/
     441             : 
     442             :    data ((a360(ix,js),js=1,9),ix=16,20)/                                &
     443             :        4.8635e+01_r8, 1.1934e+03_r8, 3.3757e+03_r8, 1.2365e+04_r8, 2.0383e+03_r8,      &
     444             :       -3.9649e+04_r8,-3.1911e+03_r8, 7.0180e+03_r8, 1.9862e+03_r8, 5.4146e+01_r8,      &
     445             :        1.4193e+03_r8, 3.5325e+03_r8, 1.2990e+04_r8, 1.9202e+03_r8,-4.1577e+04_r8,      &
     446             :       -3.6210e+03_r8, 7.5891e+03_r8, 2.0823e+03_r8, 6.0556e+01_r8, 1.6705e+03_r8,      &
     447             :        3.6979e+03_r8, 1.3664e+04_r8, 1.8183e+03_r8,-4.3643e+04_r8,-4.0505e+03_r8,      &
     448             :        8.1520e+03_r8, 2.1988e+03_r8, 8.8450e+01_r8, 1.8763e+03_r8, 3.9281e+03_r8,      &
     449             :        1.4427e+04_r8, 1.7944e+03_r8,-4.6000e+04_r8,-4.4724e+03_r8, 8.7616e+03_r8,      &
     450             :        2.3413e+03_r8, 1.3066e+02_r8, 2.0515e+03_r8, 4.2101e+03_r8, 1.5254e+04_r8,      &
     451             :        1.8910e+03_r8,-4.8678e+04_r8,-4.8678e+03_r8, 9.4122e+03_r8, 2.5201e+03_r8/
     452             : 
     453             :    data ((a360(ix,js),js=1,9),ix=21,25)/                                &
     454             :        1.9627e+02_r8, 2.1888e+03_r8, 4.5373e+03_r8, 1.6134e+04_r8, 2.1484e+03_r8,      &
     455             :       -5.1718e+04_r8,-5.2303e+03_r8, 1.0080e+04_r8, 2.7544e+03_r8, 2.9253e+02_r8,      &
     456             :        2.2999e+03_r8, 4.9057e+03_r8, 1.7119e+04_r8, 2.5685e+03_r8,-5.5267e+04_r8,      &
     457             :       -5.5588e+03_r8, 1.0805e+04_r8, 3.0452e+03_r8, 4.2069e+02_r8, 2.4046e+03_r8,      &
     458             :        5.3221e+03_r8, 1.8287e+04_r8, 3.1724e+03_r8,-5.9480e+04_r8,-5.8650e+03_r8,      &
     459             :        1.1590e+04_r8, 3.4422e+03_r8, 5.6565e+02_r8, 2.5471e+03_r8, 5.7802e+03_r8,      &
     460             :        1.9750e+04_r8, 3.9225e+03_r8,-6.4671e+04_r8,-6.1721e+03_r8, 1.2437e+04_r8,      &
     461             :        4.0778e+03_r8, 6.8164e+02_r8, 2.7280e+03_r8, 6.2513e+03_r8, 2.1474e+04_r8,      &
     462             :        4.7161e+03_r8,-7.0534e+04_r8,-6.4551e+03_r8, 1.3250e+04_r8, 5.0017e+03_r8/
     463             : 
     464             :    data ((a360(ix,js),js=1,9),ix=26,31)/                                &
     465             :        7.5815e+02_r8, 2.9531e+03_r8, 6.7397e+03_r8, 2.3465e+04_r8, 5.5030e+03_r8,      &
     466             :       -7.7007e+04_r8,-6.7321e+03_r8, 1.4003e+04_r8, 6.2391e+03_r8, 8.1943e+02_r8,      &
     467             :        3.2232e+03_r8, 7.2806e+03_r8, 2.5738e+04_r8, 6.2592e+03_r8,-8.4190e+04_r8,      &
     468             :       -7.0625e+03_r8, 1.4724e+04_r8, 7.6781e+03_r8, 8.8343e+02_r8, 3.5281e+03_r8,      &
     469             :        7.9013e+03_r8, 2.8287e+04_r8, 6.9149e+03_r8,-9.2081e+04_r8,-7.4700e+03_r8,      &
     470             :        1.5391e+04_r8, 9.1934e+03_r8, 9.6259e+02_r8, 3.8750e+03_r8, 8.6310e+03_r8,      &
     471             :        3.0544e+04_r8, 7.4519e+03_r8,-9.9873e+04_r8,-7.8232e+03_r8, 1.5896e+04_r8,      &
     472             :        1.0647e+04_r8, 1.0657e+03_r8, 4.2669e+03_r8, 9.4391e+03_r8, 3.1950e+04_r8,      &
     473             :        7.2098e+03_r8,-1.0632e+05_r8,-7.8389e+03_r8, 1.6552e+04_r8, 1.1656e+04_r8,      &
     474             :        1.1918e+03_r8, 4.7413e+03_r8, 1.0192e+04_r8, 2.9994e+04_r8, 6.6001e+03_r8,      &
     475             :       -1.0795e+05_r8,-7.1220e+03_r8, 1.7021e+04_r8, 1.1715e+04_r8/
     476             : 
     477             :    data ((a360(ix,js),js=1,9),ix=32,37)/                                &
     478             :        1.3448e+03_r8, 5.3049e+03_r8, 1.0804e+04_r8, 2.8152e+04_r8, 3.0057e+03_r8,      &
     479             :       -1.0807e+05_r8,-5.8296e+03_r8, 1.9545e+04_r8, 1.0393e+04_r8, 1.5321e+03_r8,      &
     480             :        6.0282e+03_r8, 1.1182e+04_r8, 2.4855e+04_r8, 3.6060e+03_r8,-1.0871e+05_r8,      &
     481             :       -5.2856e+03_r8, 2.0777e+04_r8, 8.2516e+03_r8, 1.7158e+03_r8, 6.8949e+03_r8,      &
     482             :        1.0920e+04_r8, 2.3437e+04_r8, 1.3298e+03_r8,-1.1132e+05_r8,-4.5135e+03_r8,      &
     483             :        2.5203e+04_r8, 6.1970e+03_r8, 1.9016e+03_r8, 7.9667e+03_r8, 9.9618e+03_r8,      &
     484             :        2.0525e+04_r8, 4.2817e+03_r8,-1.1362e+05_r8,-5.0031e+03_r8, 2.7194e+04_r8,      &
     485             :        4.4984e+03_r8, 2.1244e+03_r8, 9.3828e+03_r8, 7.5590e+03_r8, 1.9678e+04_r8,      &
     486             :        7.0220e+03_r8,-1.2033e+05_r8,-4.9126e+03_r8, 3.1851e+04_r8, 3.8717e+03_r8,      &
     487             :        2.3664e+03_r8, 1.1265e+04_r8, 5.6693e+03_r8, 2.1491e+04_r8, 1.1265e+04_r8,      &
     488             :       -1.3697e+05_r8,-5.7812e+03_r8, 4.0486e+04_r8, 2.9647e+03_r8/
     489             : 
     490             :    data ((a360(ix,js),js=1,9),ix=38,43)/                                &
     491             :        2.7913e+03_r8, 1.4030e+04_r8, 4.8102e+03_r8, 2.6050e+04_r8, 1.3722e+04_r8,      &
     492             :       -1.7247e+05_r8,-5.1546e+03_r8, 5.9806e+04_r8, 4.0151e+03_r8, 3.2048e+03_r8,      &
     493             :        1.6855e+04_r8, 3.8414e+03_r8, 3.0267e+04_r8, 1.8679e+04_r8,-2.0901e+05_r8,      &
     494             :       -5.4977e+03_r8, 7.7718e+04_r8, 5.9062e+03_r8, 3.4514e+03_r8, 1.8244e+04_r8,      &
     495             :        1.8858e+03_r8, 3.4031e+04_r8, 2.2001e+04_r8,-2.3196e+05_r8,-6.1386e+03_r8,      &
     496             :        8.9356e+04_r8, 7.6331e+03_r8, 3.1735e+03_r8, 1.7858e+04_r8, 1.5239e+03_r8,      &
     497             :        3.9874e+04_r8, 3.0144e+04_r8,-2.3702e+05_r8,-1.2064e+04_r8, 8.4326e+04_r8,      &
     498             :        5.9467e+03_r8, 2.8899e+03_r8, 1.7226e+04_r8, 3.6062e+03_r8, 5.0991e+04_r8,      &
     499             :        3.8346e+04_r8,-2.5185e+05_r8,-1.9277e+04_r8, 8.1480e+04_r8, 4.3808e+03_r8,      &
     500             :        2.6308e+03_r8, 1.9510e+04_r8, 6.6321e+03_r8, 5.9251e+04_r8, 3.5217e+04_r8,      &
     501             :       -2.6413e+05_r8,-2.5896e+04_r8, 8.2704e+04_r8, 2.2345e+03_r8/
     502             : 
     503             :    data ((b360(ix,js),js=1,9),ix=1,5)/                                  &
     504             :        3.3220e+03_r8, 0.0000e+00_r8, 7.3567e+03_r8, 7.6803e+04_r8, 3.6454e+04_r8,      &
     505             :       -2.4080e+05_r8, 4.5492e+03_r8, 1.9812e+04_r8, 2.4305e+04_r8, 3.2356e+03_r8,      &
     506             :        0.0000e+00_r8, 8.9320e+03_r8, 7.6994e+04_r8, 3.5834e+04_r8,-2.4231e+05_r8,      &
     507             :        2.8598e+03_r8, 2.5713e+04_r8, 2.2445e+04_r8, 3.4175e+03_r8, 0.0000e+00_r8,      &
     508             :        1.2232e+04_r8, 7.7599e+04_r8, 2.9999e+04_r8,-2.4245e+05_r8,-8.9565e+02_r8,      &
     509             :        2.5185e+04_r8, 2.2348e+04_r8, 3.8227e+03_r8, 0.0000e+00_r8, 1.8057e+04_r8,      &
     510             :        7.7878e+04_r8, 2.1680e+04_r8,-2.4276e+05_r8,-4.7738e+03_r8, 2.1046e+04_r8,      &
     511             :        2.3454e+04_r8, 4.1639e+03_r8, 0.0000e+00_r8, 2.5061e+04_r8, 7.5590e+04_r8,      &
     512             :        1.6597e+04_r8,-2.4395e+05_r8,-7.3727e+03_r8, 1.8454e+04_r8, 2.4034e+04_r8/
     513             : 
     514             :    data ((b360(ix,js),js=1,9),ix=6,10)/                                 &
     515             :        2.0226e+03_r8, 3.6553e+03_r8, 2.7663e+04_r8, 7.4402e+04_r8, 1.3451e+04_r8,      &
     516             :       -2.4500e+05_r8,-9.0677e+03_r8, 1.7600e+04_r8, 2.4039e+04_r8, 2.3371e+03_r8,      &
     517             :        4.9460e+03_r8, 2.6742e+04_r8, 7.3298e+04_r8, 1.1572e+04_r8,-2.4282e+05_r8,      &
     518             :       -1.0360e+04_r8, 1.8247e+04_r8, 2.3128e+04_r8, 2.5821e+03_r8, 6.5452e+03_r8,      &
     519             :        2.3738e+04_r8, 7.1130e+04_r8, 9.2331e+03_r8,-2.3376e+05_r8,-1.1453e+04_r8,      &
     520             :        1.8905e+04_r8, 2.1477e+04_r8, 2.8407e+03_r8, 8.7467e+03_r8, 2.1169e+04_r8,      &
     521             :        6.9967e+04_r8, 6.3343e+03_r8,-2.2645e+05_r8,-1.2747e+04_r8, 1.9798e+04_r8,      &
     522             :        2.0046e+04_r8, 3.1777e+03_r8, 1.1663e+04_r8, 2.0303e+04_r8, 7.1744e+04_r8,      &
     523             :        3.4971e+03_r8,-2.2845e+05_r8,-1.4826e+04_r8, 2.1600e+04_r8, 1.9387e+04_r8/
     524             : 
     525             :    data ((b360(ix,js),js=1,9),ix=11,15)/                                &
     526             :        3.5824e+03_r8, 1.4759e+04_r8, 2.0870e+04_r8, 7.5297e+04_r8, 1.1064e+03_r8,      & 
     527             :       -2.3739e+05_r8,-1.7845e+04_r8, 2.4720e+04_r8, 1.8972e+04_r8, 4.0208e+03_r8,      &
     528             :        1.7477e+04_r8, 2.2103e+04_r8, 7.8013e+04_r8,-1.3374e+03_r8,-2.4578e+05_r8,      &
     529             :       -2.1347e+04_r8, 2.7998e+04_r8, 1.8416e+04_r8, 4.4998e+03_r8, 1.9891e+04_r8,      &
     530             :        2.3925e+04_r8, 8.0263e+04_r8,-4.0759e+03_r8,-2.5531e+05_r8,-2.4750e+04_r8,      &
     531             :        3.1873e+04_r8, 1.7813e+04_r8, 4.9537e+03_r8, 2.1855e+04_r8, 2.5057e+04_r8,      &
     532             :        8.0524e+04_r8,-6.6805e+03_r8,-2.5945e+05_r8,-2.7552e+04_r8, 3.5276e+04_r8,      &
     533             :        1.6945e+04_r8, 5.3966e+03_r8, 2.3717e+04_r8, 2.5315e+04_r8, 7.9668e+04_r8,      &
     534             :       -8.9218e+03_r8,-2.5948e+05_r8,-2.9806e+04_r8, 3.8224e+04_r8, 1.5980e+04_r8/
     535             : 
     536             :    data ((b360(ix,js),js=1,9),ix=16,20)/                                &
     537             :        5.8192e+03_r8, 2.5593e+04_r8, 2.5201e+04_r8, 8.0720e+04_r8,-9.4973e+03_r8,      &
     538             :       -2.6599e+05_r8,-3.1836e+04_r8, 4.2603e+04_r8, 1.5458e+04_r8, 6.2188e+03_r8,      &
     539             :        2.7630e+04_r8, 2.4953e+04_r8, 8.2660e+04_r8,-9.0242e+03_r8,-2.7596e+05_r8,      &
     540             :       -3.3635e+04_r8, 4.7478e+04_r8, 1.5519e+04_r8, 6.5500e+03_r8, 2.9757e+04_r8,      &
     541             :        2.5013e+04_r8, 8.6318e+04_r8,-7.6888e+03_r8,-2.9146e+05_r8,-3.5697e+04_r8,      &
     542             :        5.3080e+04_r8, 1.6177e+04_r8, 8.8577e+03_r8, 2.6042e+04_r8, 2.7715e+04_r8,      &
     543             :        9.1263e+04_r8,-5.6446e+03_r8,-3.1026e+05_r8,-3.8081e+04_r8, 5.8972e+04_r8,      &
     544             :        1.7414e+04_r8, 1.2119e+04_r8, 2.1474e+04_r8, 3.1224e+04_r8, 9.7933e+04_r8,      &
     545             :       -3.2719e+03_r8,-3.3360e+05_r8,-4.1185e+04_r8, 6.4976e+04_r8, 1.9369e+04_r8/
     546             : 
     547             :    data ((b360(ix,js),js=1,9),ix=21,25)/                                &
     548             :        1.6921e+04_r8, 1.6598e+04_r8, 3.5627e+04_r8, 1.0752e+05_r8,-5.1939e+02_r8,      &
     549             :       -3.6518e+05_r8,-4.5432e+04_r8, 7.1580e+04_r8, 2.2536e+04_r8, 2.3498e+04_r8,      &
     550             :        1.2022e+04_r8, 4.0689e+04_r8, 1.2032e+05_r8, 2.3753e+03_r8,-4.0492e+05_r8,      &
     551             :       -5.0818e+04_r8, 7.8740e+04_r8, 2.7036e+04_r8, 3.1012e+04_r8, 8.2263e+03_r8,      &
     552             :        4.6120e+04_r8, 1.3578e+05_r8, 5.0895e+03_r8,-4.4899e+05_r8,-5.7140e+04_r8,      &
     553             :        8.5635e+04_r8, 3.2388e+04_r8, 3.6715e+04_r8, 5.6657e+03_r8, 5.0954e+04_r8,      &
     554             :        1.5158e+05_r8, 6.0793e+03_r8,-4.8814e+05_r8,-6.2938e+04_r8, 8.8307e+04_r8,      &
     555             :        3.9590e+04_r8, 4.0345e+04_r8, 4.5077e+03_r8, 5.6889e+04_r8, 1.7253e+05_r8,      &
     556             :        4.4000e+03_r8,-5.3621e+05_r8,-7.0080e+04_r8, 8.9426e+04_r8, 5.0068e+04_r8/
     557             : 
     558             :    data ((b360(ix,js),js=1,9),ix=26,31)/                                &
     559             :        4.3147e+04_r8, 4.5945e+03_r8, 6.5637e+04_r8, 2.0208e+05_r8,-1.4353e+03_r8,      &
     560             :       -6.0197e+05_r8,-8.0122e+04_r8, 9.0303e+04_r8, 6.4638e+04_r8, 4.5803e+04_r8,      &
     561             :        6.1820e+03_r8, 7.8481e+04_r8, 2.4208e+05_r8,-1.2292e+04_r8,-6.9085e+05_r8,      &
     562             :       -9.4005e+04_r8, 9.2021e+04_r8, 8.2655e+04_r8, 4.8930e+04_r8, 9.7251e+03_r8,      &
     563             :        9.6788e+04_r8, 2.9438e+05_r8,-2.8855e+04_r8,-8.0949e+05_r8,-1.1269e+05_r8,      &
     564             :        9.5309e+04_r8, 1.0409e+05_r8, 5.2153e+04_r8, 1.5736e+04_r8, 1.2112e+05_r8,      &
     565             :        3.5047e+05_r8,-4.9630e+04_r8,-9.4867e+05_r8,-1.3405e+05_r8, 9.9646e+04_r8,      &
     566             :        1.2758e+05_r8, 5.5289e+04_r8, 2.5000e+04_r8, 1.5248e+05_r8, 4.0443e+05_r8,      &
     567             :       -7.8986e+04_r8,-1.1015e+06_r8,-1.5585e+05_r8, 1.0908e+05_r8, 1.4991e+05_r8,      &
     568             :        5.8421e+04_r8, 3.7738e+04_r8, 1.8933e+05_r8, 4.1350e+05_r8,-1.1087e+05_r8,      &
     569             :       -1.2104e+06_r8,-1.6912e+05_r8, 1.1441e+05_r8, 1.6453e+05_r8/
     570             : 
     571             :    data ((b360(ix,js),js=1,9),ix=32,37)/                                &
     572             :        6.2520e+04_r8, 5.6218e+04_r8, 2.3453e+05_r8, 4.2779e+05_r8,-1.7334e+05_r8,      &
     573             :       -1.3347e+06_r8,-1.8177e+05_r8, 1.4998e+05_r8, 1.6136e+05_r8, 6.7847e+04_r8,      &
     574             :        8.0624e+04_r8, 2.7957e+05_r8, 3.9240e+05_r8,-1.8747e+05_r8,-1.4391e+06_r8,      &
     575             :       -1.9884e+05_r8, 1.7445e+05_r8, 1.3890e+05_r8, 7.4315e+04_r8, 1.1285e+05_r8,      &   
     576             :        3.1347e+05_r8, 3.8243e+05_r8,-2.4294e+05_r8,-1.5620e+06_r8,-2.2047e+05_r8,      &
     577             :        2.3239e+05_r8, 1.1589e+05_r8, 8.1983e+04_r8, 1.5529e+05_r8, 3.2509e+05_r8,      &
     578             :        3.1830e+05_r8,-2.2382e+05_r8,-1.6485e+06_r8,-2.4782e+05_r8, 2.6696e+05_r8,      &
     579             :        9.0607e+04_r8, 9.1461e+04_r8, 2.1130e+05_r8, 2.8260e+05_r8, 2.8233e+05_r8,      &   
     580             :       -2.0994e+05_r8,-1.7623e+06_r8,-2.6761e+05_r8, 3.2415e+05_r8, 7.9589e+04_r8,      &
     581             :        1.0184e+05_r8, 2.8912e+05_r8, 2.4285e+05_r8, 2.8782e+05_r8,-1.9263e+05_r8,      &
     582             :       -2.0088e+06_r8,-3.0816e+05_r8, 4.3060e+05_r8, 6.2821e+04_r8/
     583             : 
     584             :    data ((b360(ix,js),js=1,9),ix=38,43)/                                &
     585             :        1.1806e+05_r8, 4.0223e+05_r8, 2.2517e+05_r8, 3.3973e+05_r8,-2.3078e+05_r8,      &
     586             :       -2.5372e+06_r8,-3.5716e+05_r8, 6.5288e+05_r8, 7.7642e+04_r8, 1.3586e+05_r8,      &
     587             :        5.2631e+05_r8, 1.8982e+05_r8, 3.9760e+05_r8,-2.1883e+05_r8,-3.1397e+06_r8,      &
     588             :       -4.0467e+05_r8, 8.8836e+05_r8, 1.0255e+05_r8, 1.5133e+05_r8, 6.1562e+05_r8,      &
     589             :        1.0783e+05_r8, 4.8241e+05_r8,-1.6362e+05_r8,-3.6844e+06_r8,-4.1372e+05_r8,      &
     590             :        1.1113e+06_r8, 1.2212e+05_r8, 1.5195e+05_r8, 6.5082e+05_r8, 7.2539e+04_r8,      &
     591             :        6.3688e+05_r8, 5.3880e+04_r8,-4.1600e+06_r8,-4.5347e+05_r8, 1.2093e+06_r8,      &
     592             :        9.2240e+04_r8, 1.4336e+05_r8, 6.1671e+05_r8, 1.2423e+05_r8, 8.1556e+05_r8,      &
     593             :        1.3919e+05_r8,-4.2989e+06_r8,-5.6767e+05_r8, 1.1435e+06_r8, 6.9843e+04_r8,      &
     594             :        1.3071e+05_r8, 6.5514e+05_r8, 1.9799e+05_r8, 8.8504e+05_r8, 9.0991e+04_r8,      &
     595             :       -4.2280e+06_r8,-6.1482e+05_r8, 1.0996e+06_r8, 3.0361e+04_r8/
     596             : 
     597             :    data ((a540(ix,js),js=1,9),ix=1,5)/                                  &
     598             :        1.4046e+01_r8, 0.0000e+00_r8, 8.4121e+01_r8, 2.7000e+03_r8, 4.9855e+03_r8,      &
     599             :       -1.4428e+04_r8, 1.1932e+03_r8, 3.1112e+03_r8, 5.2292e+02_r8, 1.8382e+01_r8,      &
     600             :        0.0000e+00_r8, 1.3808e+02_r8, 3.5508e+03_r8, 5.2498e+03_r8,-1.7036e+04_r8,      &
     601             :        1.1096e+03_r8, 3.6461e+03_r8, 7.1571e+02_r8, 2.2854e+01_r8, 0.0000e+00_r8,      &
     602             :        2.2670e+02_r8, 4.5327e+03_r8, 5.5670e+03_r8,-2.0072e+04_r8, 9.0698e+02_r8,      &
     603             :        4.0662e+03_r8, 9.6773e+02_r8, 2.6788e+01_r8, 0.0000e+00_r8, 3.6639e+02_r8,      &
     604             :        5.5619e+03_r8, 5.8004e+03_r8,-2.3126e+04_r8, 6.7679e+02_r8, 4.2755e+03_r8,      &
     605             :        1.2365e+03_r8, 3.1310e+01_r8, 0.0000e+00_r8, 5.8732e+02_r8, 6.6192e+03_r8,      &
     606             :        5.8620e+03_r8,-2.5990e+04_r8, 3.3715e+02_r8, 4.3206e+03_r8, 1.5084e+03_r8/
     607             : 
     608             :    data ((a540(ix,js),js=1,9),ix=6,10)/                                 &
     609             :        6.4043e+00_r8, 4.6835e+01_r8, 8.5364e+02_r8, 7.7821e+03_r8, 5.6476e+03_r8,      &
     610             :       -2.8674e+04_r8,-3.2399e+01_r8, 4.3542e+03_r8, 1.7554e+03_r8, 9.6264e+00_r8,      &
     611             :        7.8879e+01_r8, 1.1548e+03_r8, 8.8791e+03_r8, 5.2330e+03_r8,-3.1025e+04_r8,      &
     612             :       -3.5404e+02_r8, 4.4739e+03_r8, 1.9480e+03_r8, 1.3550e+01_r8, 1.3075e+02_r8,      &
     613             :        1.4391e+03_r8, 9.8097e+03_r8, 4.8032e+03_r8,-3.2995e+04_r8,-6.8661e+02_r8,      &
     614             :        4.6960e+03_r8, 2.0777e+03_r8, 1.7714e+01_r8, 2.0669e+02_r8, 1.6861e+03_r8,      &
     615             :        1.0641e+04_r8, 4.3793e+03_r8,-3.4751e+04_r8,-1.0292e+03_r8, 5.0045e+03_r8,      &
     616             :        2.1496e+03_r8, 2.1444e+01_r8, 3.0070e+02_r8, 1.9210e+03_r8, 1.1366e+04_r8,      &
     617             :        3.9995e+03_r8,-3.6335e+04_r8,-1.3571e+03_r8, 5.3448e+03_r8, 2.1701e+03_r8/
     618             : 
     619             :    data ((a540(ix,js),js=1,9),ix=11,15)/                                &
     620             :        2.4860e+01_r8, 4.0590e+02_r8, 2.1813e+03_r8, 1.1988e+04_r8, 3.7302e+03_r8,      &
     621             :       -3.7857e+04_r8,-1.6700e+03_r8, 5.7183e+03_r8, 2.1533e+03_r8, 2.8308e+01_r8,      &
     622             :        5.2176e+02_r8, 2.5305e+03_r8, 1.2550e+04_r8, 3.5359e+03_r8,-3.9488e+04_r8,      &
     623             :       -2.0723e+03_r8, 6.1238e+03_r8, 2.1332e+03_r8, 3.2231e+01_r8, 6.6569e+02_r8,      &
     624             :        2.9583e+03_r8, 1.3080e+04_r8, 3.2613e+03_r8,-4.1264e+04_r8,-2.4406e+03_r8,      &
     625             :        6.6123e+03_r8, 2.1193e+03_r8, 3.6139e+01_r8, 8.3147e+02_r8, 3.3614e+03_r8,      &
     626             :        1.3578e+04_r8, 3.0508e+03_r8,-4.3167e+04_r8,-2.8085e+03_r8, 7.2030e+03_r8,      &
     627             :        2.1301e+03_r8, 4.0256e+01_r8, 1.0297e+03_r8, 3.7022e+03_r8, 1.4171e+04_r8,      &
     628             :        2.9128e+03_r8,-4.5336e+04_r8,-3.2104e+03_r8, 7.8946e+03_r8, 2.1776e+03_r8/
     629             : 
     630             :    data ((a540(ix,js),js=1,9),ix=16,20)/                                &
     631             :        4.4889e+01_r8, 1.2599e+03_r8, 3.9615e+03_r8, 1.4830e+04_r8, 2.8030e+03_r8,      &
     632             :       -4.7625e+04_r8,-3.6641e+03_r8, 8.6225e+03_r8, 2.2558e+03_r8, 5.0015e+01_r8,      &
     633             :        1.5224e+03_r8, 4.1757e+03_r8, 1.5557e+04_r8, 2.7204e+03_r8,-5.0044e+04_r8,      &
     634             :       -4.1690e+03_r8, 9.3569e+03_r8, 2.3618e+03_r8, 5.6369e+01_r8, 1.8214e+03_r8,      &
     635             :        4.3850e+03_r8, 1.6354e+04_r8, 2.6560e+03_r8,-5.2643e+04_r8,-4.6917e+03_r8,      &
     636             :        1.0073e+04_r8, 2.4979e+03_r8, 8.3103e+01_r8, 2.0790e+03_r8, 4.6427e+03_r8,      &
     637             :        1.7254e+04_r8, 2.6678e+03_r8,-5.5501e+04_r8,-5.2101e+03_r8, 1.0809e+04_r8,      &
     638             :        2.6617e+03_r8, 1.2393e+02_r8, 2.3045e+03_r8, 4.9515e+03_r8, 1.8262e+04_r8,      &
     639             :        2.8040e+03_r8,-5.8738e+04_r8,-5.7019e+03_r8, 1.1579e+04_r8, 2.8680e+03_r8/
     640             : 
     641             :    data ((a540(ix,js),js=1,9),ix=21,25)/                                &
     642             :        1.8908e+02_r8, 2.4870e+03_r8, 5.3135e+03_r8, 1.9357e+04_r8, 3.1110e+03_r8,      &
     643             :       -6.2419e+04_r8,-6.1562e+03_r8, 1.2371e+04_r8, 3.1342e+03_r8, 2.8397e+02_r8,      &
     644             :        2.6277e+03_r8, 5.7304e+03_r8, 2.0564e+04_r8, 3.6012e+03_r8,-6.6647e+04_r8,      &
     645             :       -6.5563e+03_r8, 1.3212e+04_r8, 3.4531e+03_r8, 4.1265e+02_r8, 2.7604e+03_r8,      &   
     646             :        6.2057e+03_r8, 2.1959e+04_r8, 4.3164e+03_r8,-7.1623e+04_r8,-6.9163e+03_r8,      &
     647             :        1.4129e+04_r8, 3.8711e+03_r8, 5.5908e+02_r8, 2.9304e+03_r8, 6.7324e+03_r8,      &
     648             :        2.3661e+04_r8, 5.2276e+03_r8,-7.7697e+04_r8,-7.2578e+03_r8, 1.5148e+04_r8,      &
     649             :        4.5144e+03_r8, 6.7735e+02_r8, 3.1384e+03_r8, 7.2790e+03_r8, 2.5647e+04_r8,      &
     650             :        6.2256e+03_r8,-8.4578e+04_r8,-7.5573e+03_r8, 1.6206e+04_r8, 5.4499e+03_r8/
     651             : 
     652             :    data ((a540(ix,js),js=1,9),ix=26,31)/                                &
     653             :        7.6095e+02_r8, 3.3936e+03_r8, 7.8572e+03_r8, 2.7951e+04_r8, 7.2729e+03_r8,      &
     654             :       -9.2312e+04_r8,-7.8460e+03_r8, 1.7305e+04_r8, 6.7468e+03_r8, 8.2152e+02_r8,      &
     655             :        3.6897e+03_r8, 8.4910e+03_r8, 3.0565e+04_r8, 8.3712e+03_r8,-1.0096e+05_r8,      &
     656             :       -8.1788e+03_r8, 1.8426e+04_r8, 8.3335e+03_r8, 8.9734e+02_r8, 4.0371e+03_r8,      &
     657             :        9.2179e+03_r8, 3.3541e+04_r8, 9.4243e+03_r8,-1.1068e+05_r8,-8.6295e+03_r8,      &
     658             :        1.9539e+04_r8, 1.0194e+04_r8, 9.8654e+02_r8, 4.4310e+03_r8, 1.0051e+04_r8,      &
     659             :        3.6202e+04_r8, 1.0341e+04_r8,-1.2033e+05_r8,-9.0465e+03_r8, 2.0323e+04_r8,      &
     660             :        1.2170e+04_r8, 1.1010e+03_r8, 4.8898e+03_r8, 1.0979e+04_r8, 3.8051e+04_r8,      &
     661             :        1.0183e+04_r8,-1.2865e+05_r8,-9.1689e+03_r8, 2.1141e+04_r8, 1.3739e+04_r8,      &
     662             :        1.2523e+03_r8, 5.4507e+03_r8, 1.1845e+04_r8, 3.6056e+04_r8, 9.2641e+03_r8,      &
     663             :       -1.3103e+05_r8,-8.5702e+03_r8, 2.1465e+04_r8, 1.4032e+04_r8/
     664             : 
     665             :    data ((a540(ix,js),js=1,9),ix=32,37)/                                &
     666             :        1.4290e+03_r8, 6.1493e+03_r8, 1.2630e+04_r8, 3.4660e+04_r8, 4.6113e+03_r8,      &
     667             :       -1.3253e+05_r8,-7.6923e+03_r8, 2.5385e+04_r8, 1.1814e+04_r8, 1.6393e+03_r8,      &
     668             :        6.9603e+03_r8, 1.3045e+04_r8, 3.1292e+04_r8, 5.0250e+03_r8,-1.3241e+05_r8,      &
     669             :       -8.0218e+03_r8, 2.7248e+04_r8, 8.1799e+03_r8, 1.8422e+03_r8, 7.9125e+03_r8,      &
     670             :        1.2850e+04_r8, 2.9919e+04_r8, 1.6539e+03_r8,-1.3374e+05_r8,-7.5523e+03_r8,      &
     671             :        3.2067e+04_r8, 5.4650e+03_r8, 2.0556e+03_r8, 9.1198e+03_r8, 1.1952e+04_r8,      &
     672             :        2.6229e+04_r8, 5.4064e+03_r8,-1.3513e+05_r8,-8.5919e+03_r8, 3.3805e+04_r8,      &
     673             :        3.3909e+03_r8, 2.3195e+03_r8, 1.0765e+04_r8, 9.4232e+03_r8, 2.4680e+04_r8,      &
     674             :        7.8282e+03_r8,-1.4260e+05_r8,-8.1716e+03_r8, 3.9314e+04_r8, 3.2746e+03_r8,      &
     675             :        2.6741e+03_r8, 1.3056e+04_r8, 7.3683e+03_r8, 2.5901e+04_r8, 1.1853e+04_r8,      &
     676             :       -1.6172e+05_r8,-8.6679e+03_r8, 4.9358e+04_r8, 3.1283e+03_r8/
     677             : 
     678             :    data ((a540(ix,js),js=1,9),ix=38,43)/                                &
     679             :        3.1274e+03_r8, 1.6190e+04_r8, 6.6171e+03_r8, 2.9852e+04_r8, 1.3996e+04_r8,      &
     680             :       -2.0033e+05_r8,-7.1656e+03_r8, 7.0586e+04_r8, 5.0072e+03_r8, 3.5342e+03_r8,      &
     681             :        1.9357e+04_r8, 5.6559e+03_r8, 3.3611e+04_r8, 1.7828e+04_r8,-2.3702e+05_r8,      &
     682             :       -6.2284e+03_r8, 8.8163e+04_r8, 7.3170e+03_r8, 3.7834e+03_r8, 2.0965e+04_r8,      &
     683             :        3.2588e+03_r8, 3.7010e+04_r8, 2.1189e+04_r8,-2.5903e+05_r8,-5.8621e+03_r8,      &
     684             :        9.8554e+04_r8, 8.6223e+03_r8, 3.5046e+03_r8, 2.0797e+04_r8, 1.9896e+03_r8,      &
     685             :        4.3329e+04_r8, 3.0815e+04_r8,-2.6553e+05_r8,-1.1030e+04_r8, 9.3433e+04_r8,      &
     686             :        6.0978e+03_r8, 3.3389e+03_r8, 2.0607e+04_r8, 2.5567e+03_r8, 5.6928e+04_r8,      &
     687             :        4.3500e+04_r8,-2.8735e+05_r8,-1.7834e+04_r8, 8.9701e+04_r8, 3.7020e+03_r8,      &
     688             :        3.2675e+03_r8, 2.3717e+04_r8, 3.5488e+03_r8, 7.1174e+04_r8, 4.9418e+04_r8,      &
     689             :       -3.1866e+05_r8,-2.5099e+04_r8, 9.4302e+04_r8, 1.5043e+03_r8/
     690             : 
     691             :    data ((b540(ix,js),js=1,9),ix=1,5)/                                  &
     692             :        2.9709e+03_r8, 0.0000e+00_r8, 7.2631e+03_r8, 8.2400e+04_r8, 4.6777e+04_r8,      &
     693             :       -2.6896e+05_r8, 8.8736e+03_r8, 2.2636e+04_r8, 2.6978e+04_r8, 3.1238e+03_r8,      &
     694             :        0.0000e+00_r8, 9.6559e+03_r8, 8.7263e+04_r8, 4.5581e+04_r8,-2.8113e+05_r8,      &
     695             :        6.5338e+03_r8, 3.0570e+04_r8, 2.5612e+04_r8, 3.4594e+03_r8, 0.0000e+00_r8,      &
     696             :        1.3781e+04_r8, 9.1771e+04_r8, 4.2054e+04_r8,-2.9581e+05_r8, 2.4720e+03_r8,      &
     697             :        3.2871e+04_r8, 2.6461e+04_r8, 3.9369e+03_r8, 0.0000e+00_r8, 2.0602e+04_r8,      &
     698             :        9.1745e+04_r8, 3.0580e+04_r8,-2.9239e+05_r8,-2.5695e+03_r8, 2.6492e+04_r8,      &
     699             :        2.8006e+04_r8, 4.3495e+03_r8, 0.0000e+00_r8, 2.8814e+04_r8, 8.7356e+04_r8,      &
     700             :        2.1482e+04_r8,-2.8467e+05_r8,-6.3525e+03_r8, 2.1028e+04_r8, 2.8623e+04_r8/
     701             : 
     702             :    data ((b540(ix,js),js=1,9),ix=6,10)/                                 &
     703             :        2.0005e+03_r8, 4.0531e+03_r8, 3.1958e+04_r8, 8.4074e+04_r8, 1.6201e+04_r8,      &
     704             :       -2.7909e+05_r8,-8.6225e+03_r8, 1.8720e+04_r8, 2.8409e+04_r8, 2.3629e+03_r8,      &
     705             :        5.5993e+03_r8, 3.1028e+04_r8, 8.2417e+04_r8, 1.3922e+04_r8,-2.7599e+05_r8,      &
     706             :       -1.0282e+04_r8, 1.9284e+04_r8, 2.7425e+04_r8, 2.6727e+03_r8, 7.5414e+03_r8,      &
     707             :        2.7733e+04_r8, 8.1705e+04_r8, 1.1962e+04_r8,-2.7148e+05_r8,-1.1901e+04_r8,      &
     708             :        2.0897e+04_r8, 2.5922e+04_r8, 2.9924e+03_r8, 1.0195e+04_r8, 2.4967e+04_r8,      &
     709             :        8.2254e+04_r8, 9.0794e+03_r8,-2.6878e+05_r8,-1.3758e+04_r8, 2.2862e+04_r8,      &
     710             :        2.4609e+04_r8, 3.3628e+03_r8, 1.3635e+04_r8, 2.4057e+04_r8, 8.5280e+04_r8,      &
     711             :        5.7370e+03_r8,-2.7339e+05_r8,-1.6337e+04_r8, 2.5177e+04_r8, 2.4060e+04_r8/
     712             : 
     713             :    data ((b540(ix,js),js=1,9),ix=11,15)/                                &
     714             :        3.7910e+03_r8, 1.7353e+04_r8, 2.4740e+04_r8, 8.9874e+04_r8, 2.8386e+03_r8,      &
     715             :       -2.8470e+05_r8,-2.0176e+04_r8, 2.9246e+04_r8, 2.3552e+04_r8, 4.2537e+03_r8,      &
     716             :        2.0528e+04_r8, 2.6524e+04_r8, 9.4192e+04_r8,-1.9538e+02_r8,-2.9713e+05_r8,      &
     717             :       -2.4840e+04_r8, 3.3537e+04_r8, 2.3038e+04_r8, 4.7553e+03_r8, 2.3449e+04_r8,      &
     718             :        2.8849e+04_r8, 9.7935e+04_r8,-3.3681e+03_r8,-3.1112e+05_r8,-2.9373e+04_r8,      &
     719             :        3.8841e+04_r8, 2.2236e+04_r8, 5.2435e+03_r8, 2.5812e+04_r8, 3.0777e+04_r8,      &
     720             :        1.0004e+05_r8,-6.4184e+03_r8,-3.2110e+05_r8,-3.3387e+04_r8, 4.3876e+04_r8,      &
     721             :        2.1211e+04_r8, 5.7016e+03_r8, 2.8053e+04_r8, 3.1613e+04_r8, 1.0025e+05_r8,      &
     722             :       -9.2545e+03_r8,-3.2451e+05_r8,-3.6675e+04_r8, 4.8014e+04_r8, 1.9899e+04_r8/
     723             : 
     724             :    data ((b540(ix,js),js=1,9),ix=16,20)/                                &
     725             :        6.1442e+03_r8, 3.0360e+04_r8, 3.1866e+04_r8, 1.0151e+05_r8,-1.0762e+04_r8,      &
     726             :       -3.3154e+05_r8,-3.9524e+04_r8, 5.3002e+04_r8, 1.8817e+04_r8, 6.5885e+03_r8,      &
     727             :        3.3054e+04_r8, 3.1916e+04_r8, 1.0396e+05_r8,-1.0604e+04_r8,-3.4429e+05_r8,      &
     728             :       -4.1917e+04_r8, 5.8965e+04_r8, 1.8358e+04_r8, 6.9707e+03_r8, 3.5930e+04_r8,      &
     729             :        3.2193e+04_r8, 1.0817e+05_r8,-8.9122e+03_r8,-3.6374e+05_r8,-4.4279e+04_r8,      &
     730             :        6.5938e+04_r8, 1.8630e+04_r8, 9.5116e+03_r8, 3.2665e+04_r8, 3.5521e+04_r8,      &
     731             :        1.1452e+05_r8,-5.9078e+03_r8,-3.9000e+05_r8,-4.7090e+04_r8, 7.3913e+04_r8,      &
     732             :        1.9693e+04_r8, 1.3035e+04_r8, 2.8272e+04_r8, 3.9666e+04_r8, 1.2272e+05_r8,      &
     733             :       -1.9538e+03_r8,-4.2149e+05_r8,-5.0485e+04_r8, 8.2204e+04_r8, 2.1617e+04_r8/
     734             : 
     735             :    data ((b540(ix,js),js=1,9),ix=21,25)/                                &
     736             :        1.8173e+04_r8, 2.3394e+04_r8, 4.4584e+04_r8, 1.3380e+05_r8, 2.9300e+03_r8,      &
     737             :       -4.6142e+05_r8,-5.4863e+04_r8, 9.1181e+04_r8, 2.4808e+04_r8, 2.5309e+04_r8,      &
     738             :        1.8719e+04_r8, 5.0230e+04_r8, 1.4885e+05_r8, 8.6209e+03_r8,-5.1236e+05_r8,      &
     739             :       -6.0511e+04_r8, 1.0139e+05_r8, 2.9436e+04_r8, 3.3629e+04_r8, 1.4750e+04_r8,      &
     740             :        5.6231e+04_r8, 1.6736e+05_r8, 1.4927e+04_r8,-5.7045e+05_r8,-6.7277e+04_r8,      &
     741             :        1.1217e+05_r8, 3.5060e+04_r8, 3.9981e+04_r8, 1.1960e+04_r8, 6.1755e+04_r8,      &
     742             :        1.8744e+05_r8, 2.0137e+04_r8,-6.2674e+05_r8,-7.3834e+04_r8, 1.1934e+05_r8,      &
     743             :        4.3078e+04_r8, 4.4113e+04_r8, 1.0697e+04_r8, 6.8456e+04_r8, 2.1400e+05_r8,      &
     744             :        2.3263e+04_r8,-6.9595e+05_r8,-8.2136e+04_r8, 1.2566e+05_r8, 5.5471e+04_r8/
     745             : 
     746             :    data ((b540(ix,js),js=1,9),ix=26,31)/                                &
     747             :        4.7268e+04_r8, 1.0742e+04_r8, 7.7893e+04_r8, 2.5024e+05_r8, 2.2431e+04_r8,      &
     748             :       -7.8521e+05_r8,-9.3714e+04_r8, 1.3164e+05_r8, 7.3653e+04_r8, 5.0261e+04_r8,      &
     749             :        1.2320e+04_r8, 9.1514e+04_r8, 2.9871e+05_r8, 1.5721e+04_r8,-9.0003e+05_r8,      &
     750             :       -1.0984e+05_r8, 1.3732e+05_r8, 9.7259e+04_r8, 5.3382e+04_r8, 1.5997e+04_r8,      &
     751             :        1.1025e+05_r8, 3.6030e+05_r8, 1.6491e+03_r8,-1.0428e+06_r8,-1.3104e+05_r8,      &
     752             :        1.4263e+05_r8, 1.2572e+05_r8, 5.6536e+04_r8, 2.2075e+04_r8, 1.3502e+05_r8,      &
     753             :        4.2540e+05_r8,-1.9356e+04_r8,-1.2017e+06_r8,-1.5497e+05_r8, 1.4620e+05_r8,      &
     754             :        1.5667e+05_r8, 5.9668e+04_r8, 3.1332e+04_r8, 1.6712e+05_r8, 4.8760e+05_r8,      &
     755             :       -5.2497e+04_r8,-1.3721e+06_r8,-1.7921e+05_r8, 1.5491e+05_r8, 1.8500e+05_r8,      &
     756             :        6.3128e+04_r8, 4.4306e+04_r8, 2.0538e+05_r8, 5.0036e+05_r8,-8.8315e+04_r8,      &
     757             :       -1.5009e+06_r8,-1.9544e+05_r8, 1.6286e+05_r8, 2.0060e+05_r8/
     758             : 
     759             :    data ((b540(ix,js),js=1,9),ix=32,37)/                                &
     760             :        6.7252e+04_r8, 6.1350e+04_r8, 2.4981e+05_r8, 5.1866e+05_r8,-1.7393e+05_r8,      &
     761             :       -1.6079e+06_r8,-2.1616e+05_r8, 2.0514e+05_r8, 1.8421e+05_r8, 7.2523e+04_r8,      &
     762             :        8.7077e+04_r8, 3.0032e+05_r8, 4.9795e+05_r8,-1.9374e+05_r8,-1.7488e+06_r8,      &
     763             :       -2.5154e+05_r8, 2.5270e+05_r8, 1.4108e+05_r8, 7.8557e+04_r8, 1.2085e+05_r8,      &
     764             :        3.4369e+05_r8, 5.0559e+05_r8,-2.7072e+05_r8,-1.8995e+06_r8,-2.8633e+05_r8,      &
     765             :        3.2697e+05_r8, 1.0954e+05_r8, 8.6092e+04_r8, 1.6790e+05_r8, 3.6976e+05_r8,      &
     766             :        4.3787e+05_r8,-2.5173e+05_r8,-2.0235e+06_r8,-3.3252e+05_r8, 3.7066e+05_r8,      &
     767             :        7.9724e+04_r8, 9.6434e+04_r8, 2.3315e+05_r8, 3.3902e+05_r8, 3.9461e+05_r8,      &
     768             :       -2.5455e+05_r8,-2.2059e+06_r8,-3.6308e+05_r8, 4.4700e+05_r8, 8.0952e+04_r8,      &
     769             :        1.0946e+05_r8, 3.2289e+05_r8, 3.0583e+05_r8, 3.8625e+05_r8,-2.5579e+05_r8,      &
     770             :       -2.5156e+06_r8,-4.1451e+05_r8, 5.7253e+05_r8, 7.8418e+04_r8/
     771             : 
     772             :    data ((b540(ix,js),js=1,9),ix=38,43)/                                &
     773             :        1.2692e+05_r8, 4.4886e+05_r8, 3.0244e+05_r8, 4.2615e+05_r8,-3.1844e+05_r8,      &
     774             :       -3.1255e+06_r8,-4.6924e+05_r8, 8.2340e+05_r8, 1.1046e+05_r8, 1.4441e+05_r8,      &
     775             :        5.8243e+05_r8, 2.7541e+05_r8, 4.7182e+05_r8,-3.3649e+05_r8,-3.7185e+06_r8,      &
     776             :       -5.1067e+05_r8, 1.0440e+06_r8, 1.4277e+05_r8, 1.5916e+05_r8, 6.7402e+05_r8,      &
     777             :        1.8070e+05_r8, 5.5047e+05_r8,-2.9324e+05_r8,-4.2164e+06_r8,-5.1434e+05_r8,      &
     778             :        1.2427e+06_r8, 1.5864e+05_r8, 1.6012e+05_r8, 7.2380e+05_r8, 1.1475e+05_r8,      &
     779             :        7.1511e+05_r8,-6.9798e+04_r8,-4.6914e+06_r8,-5.4151e+05_r8, 1.3302e+06_r8,      &
     780             :        1.1012e+05_r8, 1.5471e+05_r8, 7.0419e+05_r8, 1.1310e+05_r8, 8.8568e+05_r8,      &
     781             :        2.4896e+04_r8,-4.6768e+06_r8,-6.3312e+05_r8, 1.1713e+06_r8, 6.4977e+04_r8,      &
     782             :        1.5021e+05_r8, 7.9025e+05_r8, 1.1779e+05_r8, 1.0507e+06_r8, 1.1771e+05_r8,      &
     783             :       -4.9507e+06_r8,-6.8570e+05_r8, 1.1955e+06_r8, 2.3632e+04_r8/
     784             : 
     785             :    data ((a720(ix,js),js=1,9),ix=1,5)/                                  &
     786             :        1.1000e+01_r8, 0.0000e+00_r8, 8.1568e+01_r8, 2.8044e+03_r8, 5.3898e+03_r8,      &
     787             :       -1.5286e+04_r8, 1.3891e+03_r8, 3.3052e+03_r8, 5.0976e+02_r8, 1.5350e+01_r8,      &
     788             :        0.0000e+00_r8, 1.3680e+02_r8, 3.6955e+03_r8, 5.7560e+03_r8,-1.8147e+04_r8,      &
     789             :        1.3596e+03_r8, 3.9557e+03_r8, 6.9200e+02_r8, 1.9863e+01_r8, 0.0000e+00_r8,      &
     790             :        2.2561e+02_r8, 4.7049e+03_r8, 6.2084e+03_r8,-2.1486e+04_r8, 1.1961e+03_r8,      &
     791             :        4.5137e+03_r8, 9.4594e+02_r8, 2.4344e+01_r8, 0.0000e+00_r8, 3.6564e+02_r8,      &
     792             :        5.7723e+03_r8, 6.6036e+03_r8,-2.4949e+04_r8, 9.9205e+02_r8, 4.8226e+03_r8,      &
     793             :        1.2417e+03_r8, 2.8832e+01_r8, 0.0000e+00_r8, 5.8203e+02_r8, 6.9163e+03_r8,      &
     794             :        6.8325e+03_r8,-2.8322e+04_r8, 6.4255e+02_r8, 4.9144e+03_r8, 1.5622e+03_r8/
     795             : 
     796             :    data ((a720(ix,js),js=1,9),ix=6,10)/                                 &
     797             :        4.8883e+00_r8, 4.4839e+01_r8, 8.4544e+02_r8, 8.2527e+03_r8, 6.7546e+03_r8,      &
     798             :       -3.1641e+04_r8, 2.3650e+02_r8, 4.9722e+03_r8, 1.8764e+03_r8, 7.5913e+00_r8,      &
     799             :        7.6632e+01_r8, 1.1494e+03_r8, 9.5596e+03_r8, 6.3700e+03_r8,-3.4538e+04_r8,      &
     800             :       -1.2944e+02_r8, 5.1143e+03_r8, 2.1263e+03_r8, 1.1092e+01_r8, 1.2916e+02_r8,      &
     801             :        1.4465e+03_r8, 1.0700e+04_r8, 5.9160e+03_r8,-3.6968e+04_r8,-5.1496e+02_r8,      &
     802             :        5.3844e+03_r8, 2.2995e+03_r8, 1.5051e+01_r8, 2.0677e+02_r8, 1.7088e+03_r8,      &
     803             :        1.1710e+04_r8, 5.4364e+03_r8,-3.9056e+04_r8,-9.2065e+02_r8, 5.7632e+03_r8,      &
     804             :        2.3914e+03_r8, 1.8844e+01_r8, 3.0261e+02_r8, 1.9641e+03_r8, 1.2606e+04_r8,      &
     805             :        4.9993e+03_r8,-4.0960e+04_r8,-1.3152e+03_r8, 6.1798e+03_r8, 2.4231e+03_r8/
     806             : 
     807             :    data ((a720(ix,js),js=1,9),ix=11,15)/                                &
     808             :        2.2391e+01_r8, 4.0801e+02_r8, 2.2543e+03_r8, 1.3383e+04_r8, 4.6738e+03_r8,      &
     809             :       -4.2763e+04_r8,-1.6992e+03_r8, 6.6211e+03_r8, 2.4071e+03_r8, 2.5971e+01_r8,      &
     810             :        5.2138e+02_r8, 2.6560e+03_r8, 1.4114e+04_r8, 4.4287e+03_r8,-4.4726e+04_r8,      &
     811             :       -2.1995e+03_r8, 7.0889e+03_r8, 2.3855e+03_r8, 2.9763e+01_r8, 6.6460e+02_r8,      &
     812             :        3.1664e+03_r8, 1.4809e+04_r8, 4.0645e+03_r8,-4.6843e+04_r8,-2.6537e+03_r8,      &
     813             :        7.6437e+03_r8, 2.3613e+03_r8, 3.3666e+01_r8, 8.3830e+02_r8, 3.6616e+03_r8,      &
     814             :        1.5430e+04_r8, 3.7727e+03_r8,-4.9054e+04_r8,-3.0909e+03_r8, 8.3082e+03_r8,      &
     815             :        2.3574e+03_r8, 3.7748e+01_r8, 1.0512e+03_r8, 4.0875e+03_r8, 1.6120e+04_r8,      &
     816             :        3.5818e+03_r8,-5.1529e+04_r8,-3.5443e+03_r8, 9.0933e+03_r8, 2.3920e+03_r8/
     817             : 
     818             :    data ((a720(ix,js),js=1,9),ix=16,20)/                                &
     819             :        4.2296e+01_r8, 1.3036e+03_r8, 4.4196e+03_r8, 1.6881e+04_r8, 3.4671e+03_r8,      &
     820             :       -5.4229e+04_r8,-4.0449e+03_r8, 9.9546e+03_r8, 2.4679e+03_r8, 4.7480e+01_r8,      &
     821             :        1.5965e+03_r8, 4.6912e+03_r8, 1.7692e+04_r8, 3.4059e+03_r8,-5.7053e+04_r8,      &
     822             :       -4.6035e+03_r8, 1.0823e+04_r8, 2.5794e+03_r8, 5.3627e+01_r8, 1.9302e+03_r8,      &
     823             :        4.9402e+03_r8, 1.8564e+04_r8, 3.3780e+03_r8,-6.0042e+04_r8,-5.1911e+03_r8,      &
     824             :        1.1665e+04_r8, 2.7244e+03_r8, 7.9167e+01_r8, 2.2283e+03_r8, 5.2269e+03_r8,      &
     825             :        1.9564e+04_r8, 3.4343e+03_r8,-6.3324e+04_r8,-5.7858e+03_r8, 1.2522e+04_r8,      &
     826             :        2.9022e+03_r8, 1.1948e+02_r8, 2.4959e+03_r8, 5.5584e+03_r8, 2.0703e+04_r8,      &
     827             :        3.6185e+03_r8,-6.7027e+04_r8,-6.3585e+03_r8, 1.3402e+04_r8, 3.1300e+03_r8/
     828             : 
     829             :    data ((a720(ix,js),js=1,9),ix=21,25)/                                &
     830             :        1.8391e+02_r8, 2.7146e+03_r8, 5.9441e+03_r8, 2.1967e+04_r8, 3.9800e+03_r8,      &
     831             :       -7.1233e+04_r8,-6.8930e+03_r8, 1.4300e+04_r8, 3.4242e+03_r8, 2.7904e+02_r8,      &
     832             :        2.8863e+03_r8, 6.3937e+03_r8, 2.3372e+04_r8, 4.5327e+03_r8,-7.6066e+04_r8,      &
     833             :       -7.3642e+03_r8, 1.5250e+04_r8, 3.7769e+03_r8, 4.0911e+02_r8, 3.0443e+03_r8,      &
     834             :        6.9146e+03_r8, 2.4981e+04_r8, 5.3338e+03_r8,-8.1711e+04_r8,-7.7825e+03_r8,      &
     835             :        1.6272e+04_r8, 4.2287e+03_r8, 5.5647e+02_r8, 3.2369e+03_r8, 7.4969e+03_r8,      &
     836             :        2.6902e+04_r8, 6.3584e+03_r8,-8.8522e+04_r8,-8.1632e+03_r8, 1.7400e+04_r8,      &
     837             :        4.8989e+03_r8, 6.7746e+02_r8, 3.4639e+03_r8, 8.1044e+03_r8, 2.9116e+04_r8,      &
     838             :        7.4937e+03_r8,-9.6201e+04_r8,-8.4797e+03_r8, 1.8601e+04_r8, 5.8474e+03_r8/
     839             : 
     840             :    data ((a720(ix,js),js=1,9),ix=26,31)/                                &
     841             :        7.6419e+02_r8, 3.7351e+03_r8, 8.7528e+03_r8, 3.1669e+04_r8, 8.7109e+03_r8,      &
     842             :       -1.0484e+05_r8,-8.7688e+03_r8, 1.9909e+04_r8, 7.1538e+03_r8, 8.3217e+02_r8,      &
     843             :        4.0555e+03_r8, 9.4681e+03_r8, 3.4560e+04_r8, 1.0047e+04_r8,-1.1462e+05_r8,      &
     844             :       -9.0931e+03_r8, 2.1351e+04_r8, 8.7935e+03_r8, 9.1301e+02_r8, 4.4297e+03_r8,      &
     845             :        1.0290e+04_r8, 3.7864e+04_r8, 1.1445e+04_r8,-1.2584e+05_r8,-9.5391e+03_r8,      &
     846             :        2.2897e+04_r8, 1.0786e+04_r8, 1.0164e+03_r8, 4.8721e+03_r8, 1.1249e+04_r8,      &
     847             :        4.0878e+04_r8, 1.2767e+04_r8,-1.3731e+05_r8,-9.9925e+03_r8, 2.4149e+04_r8,      &
     848             :        1.3084e+04_r8, 1.1415e+03_r8, 5.3815e+03_r8, 1.2293e+04_r8, 4.2941e+04_r8,      &
     849             :        1.2877e+04_r8,-1.4705e+05_r8,-1.0110e+04_r8, 2.5288e+04_r8, 1.5084e+04_r8,      &
     850             :        1.2975e+03_r8, 5.9819e+03_r8, 1.3226e+04_r8, 4.0585e+04_r8, 1.1739e+04_r8,      &
     851             :       -1.4918e+05_r8,-9.3569e+03_r8, 2.5526e+04_r8, 1.5795e+04_r8/
     852             : 
     853             :    data ((a720(ix,js),js=1,9),ix=32,37)/                                &
     854             :        1.4828e+03_r8, 6.7270e+03_r8, 1.4083e+04_r8, 3.9252e+04_r8, 6.2124e+03_r8,      &
     855             :       -1.5042e+05_r8,-8.4580e+03_r8, 2.9972e+04_r8, 1.3334e+04_r8, 1.7053e+03_r8,      &
     856             :        7.6200e+03_r8, 1.4682e+04_r8, 3.6183e+04_r8, 5.9149e+03_r8,-1.5116e+05_r8,      &
     857             :       -9.3969e+03_r8, 3.2817e+04_r8, 9.0065e+03_r8, 1.9276e+03_r8, 8.6904e+03_r8,      &
     858             :        1.4523e+04_r8, 3.5751e+04_r8, 2.4091e+03_r8,-1.5492e+05_r8,-1.0156e+04_r8,      &
     859             :        3.9419e+04_r8, 4.9338e+03_r8, 2.1451e+03_r8, 1.0040e+04_r8, 1.3698e+04_r8,      &
     860             :        3.1820e+04_r8, 7.1113e+03_r8,-1.5760e+05_r8,-1.1397e+04_r8, 3.9737e+04_r8,      &
     861             :        3.4762e+03_r8, 2.4469e+03_r8, 1.1859e+04_r8, 1.0944e+04_r8, 2.9494e+04_r8,      &
     862             :        8.8440e+03_r8,-1.6440e+05_r8,-9.9882e+03_r8, 4.4020e+04_r8, 4.6728e+03_r8,      &
     863             :        2.8411e+03_r8, 1.4376e+04_r8, 8.8420e+03_r8, 3.0261e+04_r8, 1.2589e+04_r8,      &
     864             :       -1.8408e+05_r8,-9.3312e+03_r8, 5.2682e+04_r8, 6.4506e+03_r8/
     865             : 
     866             :    data ((a720(ix,js),js=1,9),ix=38,43)/                                &
     867             :        3.3274e+03_r8, 1.7805e+04_r8, 8.3315e+03_r8, 3.4132e+04_r8, 1.3953e+04_r8,      &
     868             :       -2.2590e+05_r8,-7.2006e+03_r8, 7.6708e+04_r8, 8.4541e+03_r8, 3.7593e+03_r8,      &
     869             :        2.1296e+04_r8, 7.4382e+03_r8, 3.7788e+04_r8, 1.7525e+04_r8,-2.6251e+05_r8,      &
     870             :       -6.7751e+03_r8, 9.5562e+04_r8, 9.7409e+03_r8, 4.0215e+03_r8, 2.3146e+04_r8,      &
     871             :        4.4673e+03_r8, 3.9980e+04_r8, 1.9665e+04_r8,-2.8011e+05_r8,-6.2491e+03_r8,      &
     872             :        1.0617e+05_r8, 9.7124e+03_r8, 3.7615e+03_r8, 2.3278e+04_r8, 2.4201e+03_r8,      &
     873             :        4.5810e+04_r8, 2.9998e+04_r8,-2.8413e+05_r8,-1.1164e+04_r8, 9.8953e+04_r8,      &
     874             :        6.3735e+03_r8, 3.7240e+03_r8, 2.3588e+04_r8, 2.0106e+03_r8, 6.0596e+04_r8,      &
     875             :        4.6732e+04_r8,-3.1152e+05_r8,-1.7614e+04_r8, 9.4606e+04_r8, 3.4489e+03_r8,      &
     876             :        3.7961e+03_r8, 2.6755e+04_r8, 2.3096e+03_r8, 7.7763e+04_r8, 5.7709e+04_r8,      &
     877             :       -3.5374e+05_r8,-2.4401e+04_r8, 1.0057e+05_r8, 8.7498e+02_r8/
     878             : 
     879             :    data ((b720(ix,js),js=1,9),ix=1,5)/                                  &
     880             :        2.8378e+03_r8, 0.0000e+00_r8, 7.4867e+03_r8, 8.7260e+04_r8, 4.9146e+04_r8,      &
     881             :       -2.8306e+05_r8, 1.0229e+04_r8, 2.1829e+04_r8, 2.9344e+04_r8, 3.0405e+03_r8,      &
     882             :        0.0000e+00_r8, 1.0134e+04_r8, 9.3386e+04_r8, 4.9056e+04_r8,-2.9980e+05_r8,      &
     883             :        8.3963e+03_r8, 3.1439e+04_r8, 2.7751e+04_r8, 3.4447e+03_r8, 0.0000e+00_r8,      &
     884             :        1.4768e+04_r8, 9.9677e+04_r8, 4.7199e+04_r8,-3.2228e+05_r8, 4.6847e+03_r8,      &
     885             :        3.5809e+04_r8, 2.8838e+04_r8, 3.9763e+03_r8, 0.0000e+00_r8, 2.2241e+04_r8,      &
     886             :        1.0162e+05_r8, 3.8195e+04_r8,-3.2951e+05_r8,-3.5761e+02_r8, 3.1367e+04_r8,      &
     887             :        3.1066e+04_r8, 4.4566e+03_r8, 0.0000e+00_r8, 3.1280e+04_r8, 9.7135e+04_r8,      &
     888             :        2.7683e+04_r8,-3.2113e+05_r8,-4.8036e+03_r8, 2.4666e+04_r8, 3.2099e+04_r8/
     889             : 
     890             :    data ((b720(ix,js),js=1,9),ix=6,10)/                                 &
     891             :        1.9920e+03_r8, 4.3042e+03_r8, 3.4960e+04_r8, 9.2325e+04_r8, 1.9550e+04_r8,      &
     892             :       -3.0863e+05_r8,-7.8736e+03_r8, 2.0414e+04_r8, 3.1867e+04_r8, 2.3607e+03_r8,      &
     893             :        6.0047e+03_r8, 3.4158e+04_r8, 9.0097e+04_r8, 1.6570e+04_r8,-3.0384e+05_r8,      &
     894             :       -9.9396e+03_r8, 2.0701e+04_r8, 3.0825e+04_r8, 2.7001e+03_r8, 8.1576e+03_r8,      &
     895             :        3.0612e+04_r8, 8.9617e+04_r8, 1.4401e+04_r8,-2.9982e+05_r8,-1.1977e+04_r8,      &
     896             :        2.2595e+04_r8, 2.9273e+04_r8, 3.0360e+03_r8, 1.1081e+04_r8, 2.7697e+04_r8,      &
     897             :        9.1658e+04_r8, 1.1561e+04_r8,-3.0089e+05_r8,-1.4403e+04_r8, 2.5524e+04_r8,      &
     898             :        2.8020e+04_r8, 3.4215e+03_r8, 1.4885e+04_r8, 2.6879e+04_r8, 9.6042e+04_r8,      &   
     899             :        7.9992e+03_r8,-3.0885e+05_r8,-1.7495e+04_r8, 2.8632e+04_r8, 2.7565e+04_r8/
     900             : 
     901             :    data ((b720(ix,js),js=1,9),ix=11,15)/                                &
     902             :        3.8631e+03_r8, 1.9005e+04_r8, 2.7888e+04_r8, 1.0225e+05_r8, 4.8521e+03_r8,      &
     903             :       -3.2437e+05_r8,-2.2097e+04_r8, 3.3740e+04_r8, 2.7150e+04_r8, 4.3522e+03_r8,      &  
     904             :        2.2605e+04_r8, 3.0259e+04_r8, 1.0826e+05_r8, 1.4579e+03_r8,-3.4145e+05_r8,      &
     905             :       -2.7813e+04_r8, 3.9189e+04_r8, 2.6718e+04_r8, 4.8734e+03_r8, 2.5856e+04_r8,      &
     906             :        3.3158e+04_r8, 1.1340e+05_r8,-2.1817e+03_r8,-3.5946e+05_r8,-3.3255e+04_r8,      &
     907             :        4.5530e+04_r8, 2.5944e+04_r8, 5.3812e+03_r8, 2.8555e+04_r8, 3.5608e+04_r8,      &
     908             :        1.1671e+05_r8,-5.6934e+03_r8,-3.7309e+05_r8,-3.8155e+04_r8, 5.1594e+04_r8,      &
     909             :        2.4865e+04_r8, 5.8581e+03_r8, 3.1107e+04_r8, 3.6904e+04_r8, 1.1784e+05_r8,      &
     910             :       -9.1119e+03_r8,-3.7911e+05_r8,-4.2332e+04_r8, 5.6614e+04_r8, 2.3383e+04_r8/
     911             : 
     912             :    data ((b720(ix,js),js=1,9),ix=16,20)/                                &
     913             :        6.3262e+03_r8, 3.3720e+04_r8, 3.7274e+04_r8, 1.1891e+05_r8,-1.1690e+04_r8,      &
     914             :       -3.8488e+05_r8,-4.5891e+04_r8, 6.1655e+04_r8, 2.1870e+04_r8, 6.8035e+03_r8,      &
     915             :        3.6904e+04_r8, 3.7600e+04_r8, 1.2174e+05_r8,-1.2075e+04_r8,-3.9908e+05_r8,      &
     916             :       -4.8826e+04_r8, 6.8095e+04_r8, 2.1052e+04_r8, 7.2152e+03_r8, 4.0328e+04_r8,      &  
     917             :        3.8374e+04_r8, 1.2712e+05_r8,-1.0373e+04_r8,-4.2320e+05_r8,-5.1740e+04_r8,      &
     918             :        7.6305e+04_r8, 2.0951e+04_r8, 9.8640e+03_r8, 3.7426e+04_r8, 4.2372e+04_r8,      &
     919             :        1.3471e+05_r8,-6.8135e+03_r8,-4.5532e+05_r8,-5.4983e+04_r8, 8.5856e+04_r8,      &
     920             :        2.1689e+04_r8, 1.3560e+04_r8, 3.3322e+04_r8, 4.7176e+04_r8, 1.4419e+05_r8,      &
     921             :       -1.7431e+03_r8,-4.9373e+05_r8,-5.8662e+04_r8, 9.5890e+04_r8, 2.3540e+04_r8/
     922             : 
     923             :    data ((b720(ix,js),js=1,9),ix=21,25)/                                &
     924             :        1.8962e+04_r8, 2.8655e+04_r8, 5.2627e+04_r8, 1.5648e+05_r8, 4.6977e+03_r8,      &
     925             :       -5.4094e+05_r8,-6.3178e+04_r8, 1.0669e+05_r8, 2.6814e+04_r8, 2.6434e+04_r8,      &
     926             :        2.4076e+04_r8, 5.8634e+04_r8, 1.7285e+05_r8, 1.2578e+04_r8,-5.9982e+05_r8,      &
     927             :       -6.8826e+04_r8, 1.1902e+05_r8, 3.1514e+04_r8, 3.5147e+04_r8, 2.0130e+04_r8,      &
     928             :        6.5020e+04_r8, 1.9328e+05_r8, 2.1789e+04_r8,-6.6785e+05_r8,-7.5631e+04_r8,      &
     929             :        1.3244e+05_r8, 3.7235e+04_r8, 4.1827e+04_r8, 1.7320e+04_r8, 7.0904e+04_r8,      &
     930             :        2.1618e+05_r8, 3.0623e+04_r8,-7.3675e+05_r8,-8.2378e+04_r8, 1.4290e+05_r8,      &
     931             :        4.5585e+04_r8, 4.6294e+04_r8, 1.6071e+04_r8, 7.8131e+04_r8, 2.4682e+05_r8,      &  
     932             :        3.8078e+04_r8,-8.2274e+05_r8,-9.1157e+04_r8, 1.5361e+05_r8, 5.8726e+04_r8/
     933             : 
     934             :    data ((b720(ix,js),js=1,9),ix=26,31)/                                &
     935             :        4.9878e+04_r8, 1.6065e+04_r8, 8.8228e+04_r8, 2.8824e+05_r8, 4.2519e+04_r8,      &
     936             :       -9.3298e+05_r8,-1.0344e+05_r8, 1.6515e+05_r8, 7.8533e+04_r8, 5.3229e+04_r8,      &
     937             :        1.7740e+04_r8, 1.0255e+05_r8, 3.4331e+05_r8, 4.1675e+04_r8,-1.0732e+06_r8,      &
     938             :       -1.2083e+05_r8, 1.7696e+05_r8, 1.0553e+05_r8, 5.6585e+04_r8, 2.1720e+04_r8,      & 
     939             :        1.2220e+05_r8, 4.1397e+05_r8, 3.3029e+04_r8,-1.2465e+06_r8,-1.4427e+05_r8,      &
     940             :        1.8802e+05_r8, 1.3975e+05_r8, 5.9316e+04_r8, 2.8288e+04_r8, 1.4733e+05_r8,      &
     941             :        4.8733e+05_r8, 1.5630e+04_r8,-1.4301e+06_r8,-1.7016e+05_r8, 1.9433e+05_r8,      &
     942             :        1.7788e+05_r8, 6.2252e+04_r8, 3.8013e+04_r8, 1.8011e+05_r8, 5.5712e+05_r8,      &
     943             :       -1.8402e+04_r8,-1.6194e+06_r8,-1.9622e+05_r8, 2.0377e+05_r8, 2.1356e+05_r8,      &
     944             :        6.5578e+04_r8, 5.1423e+04_r8, 2.1882e+05_r8, 5.6668e+05_r8,-5.8779e+04_r8,      &
     945             :       -1.7453e+06_r8,-2.1194e+05_r8, 2.1181e+05_r8, 2.3210e+05_r8/
     946             : 
     947             :    data ((b720(ix,js),js=1,9),ix=32,37)/                                &
     948             :        6.9606e+04_r8, 6.8196e+04_r8, 2.6312e+05_r8, 5.9063e+05_r8,-1.5744e+05_r8,      &
     949             :       -1.8524e+06_r8,-2.3319e+05_r8, 2.6085e+05_r8, 2.1170e+05_r8, 7.5218e+04_r8,      &
     950             :        9.4375e+04_r8, 3.1888e+05_r8, 5.8441e+05_r8,-1.8982e+05_r8,-2.0276e+06_r8,      &
     951             :       -2.8095e+05_r8, 3.2730e+05_r8, 1.5852e+05_r8, 8.1818e+04_r8, 1.2971e+05_r8,      &
     952             :        3.6827e+05_r8, 6.1914e+05_r8,-2.8165e+05_r8,-2.2420e+06_r8,-3.4355e+05_r8,      &
     953             :        4.3737e+05_r8, 1.0553e+05_r8, 8.9628e+04_r8, 1.7800e+05_r8, 4.0374e+05_r8,      &
     954             :        5.5218e+05_r8,-2.6089e+05_r8,-2.4102e+06_r8,-4.0173e+05_r8, 4.6432e+05_r8,      &
     955             :        8.6117e+04_r8, 1.0036e+05_r8, 2.4647e+05_r8, 3.7601e+05_r8, 4.9780e+05_r8,      &
     956             :       -2.7995e+05_r8,-2.6053e+06_r8,-4.2444e+05_r8, 5.1942e+05_r8, 1.1274e+05_r8,      &
     957             :        1.1449e+05_r8, 3.4157e+05_r8, 3.5045e+05_r8, 4.8110e+05_r8,-2.9572e+05_r8,      &
     958             :       -2.9462e+06_r8,-4.6715e+05_r8, 6.1840e+05_r8, 1.4715e+05_r8/
     959             : 
     960             :    data ((b720(ix,js),js=1,9),ix=38,43)/                                &
     961             :        1.3273e+05_r8, 4.7433e+05_r8, 3.6299e+05_r8, 5.2029e+05_r8,-3.8660e+05_r8,      &    
     962             :       -3.6364e+06_r8,-5.3004e+05_r8, 9.1163e+05_r8, 1.8527e+05_r8, 1.5094e+05_r8,      &
     963             :        6.1556e+05_r8, 3.4710e+05_r8, 5.6221e+05_r8,-4.2073e+05_r8,-4.2353e+06_r8,      &
     964             :       -5.8904e+05_r8, 1.1559e+06_r8, 2.0012e+05_r8, 1.6568e+05_r8, 7.1379e+05_r8,      &
     965             :        2.4118e+05_r8, 6.1735e+05_r8,-3.9948e+05_r8,-4.6347e+06_r8,-5.9224e+05_r8,      &
     966             :        1.3508e+06_r8, 1.8977e+05_r8, 1.6599e+05_r8, 7.6711e+05_r8, 1.5253e+05_r8,      &
     967             :        7.5990e+05_r8,-2.0122e+05_r8,-4.9316e+06_r8,-6.2692e+05_r8, 1.3721e+06_r8,      &
     968             :        1.2698e+05_r8, 1.6400e+05_r8, 7.6327e+05_r8, 1.1905e+05_r8, 9.5620e+05_r8,      &
     969             :       -5.0089e+04_r8,-5.0316e+06_r8,-7.0061e+05_r8, 1.2124e+06_r8, 6.6342e+04_r8,      &
     970             :        1.6539e+05_r8, 8.6958e+05_r8, 9.0836e+04_r8, 1.1753e+06_r8, 8.8077e+04_r8,      &
     971             :       -5.4751e+06_r8,-7.6386e+05_r8, 1.2589e+06_r8, 2.1098e+04_r8/
     972             : 
     973             :       real(r8) :: o3pxfac(pver)      ! o3p cooling masking factors on WACCM vertical grids
     974             : 
     975             :       logical :: apply_co2_limit = .false.
     976             :       integer :: k1mb = 0
     977             :       
     978             : !================================================================================================
     979             : contains
     980             : !================================================================================================
     981             : 
     982        1536 :   subroutine nlte_fomichev_init ( co2_mwi, n2_mwi, o1_mwi, o2_mwi, o3_mwi, no_mwi, apply_co2_limit_in )
     983             :      use interpolate_data, only : lininterp
     984             :      use ref_pres,         only : pref_edge, pref_mid
     985             : 
     986             : !     
     987             : !     Original version from Ray Roble
     988             : !     First adapted to CCM by F. Sassi - November 1999
     989             : !     
     990             : !---------------------------------------------------------------------------------
     991             : !     input:
     992             : !     RCO2 - CO2 volume mixing in the region below x=12.5
     993             : !     initial data from BLOCK DATA PCO2O3 come through common blocks
     994             :       
     995             : !     output: parameterization coefficients for both, the matrix parameterization 
     996             : !     (is used between x=2 and 12.5) and reccurence formula. 
     997             : !     AMAT,BMAT(43,9) - coefficients for the matrix parameterization
     998             : 
     999             : !-----------------------------------------------------------------
    1000             : 
    1001             :     real(r8), intent(in) :: o1_mwi                      ! O molecular weight
    1002             :     real(r8), intent(in) :: o2_mwi                      ! O2 molecular weight
    1003             :     real(r8), intent(in) :: o3_mwi                      ! O3 molecular weight
    1004             :     real(r8), intent(in) :: co2_mwi                     ! CO2 molecular weight
    1005             :     real(r8), intent(in) :: n2_mwi                      ! N2 molecular weight
    1006             :     real(r8), intent(in) :: no_mwi                      ! NO molecular weight
    1007             :     logical,  intent(in) :: apply_co2_limit_in
    1008             : 
    1009             :     real(r8), parameter :: p0=5.e-5_r8 ! TIE-GCM reference pressure in Pa            
    1010             :     integer, parameter :: tgcmlevs = 29
    1011             :     real(r8) :: pz(tgcmlevs)           ! TIE-GCM pressure grids (single resolution,pz=-7...7,dpz=0.5 ), dimensionless 
    1012             :     real(r8) :: pp(tgcmlevs)           ! convert pz to Pascal  
    1013             :     real(r8) :: xfac0(tgcmlevs)        ! masking factors on TIE-GCM pressure grids
    1014             :     integer :: k
    1015             : 
    1016        1536 :     apply_co2_limit = apply_co2_limit_in
    1017       43008 :     find_k1mb: do k = 1, pverp
    1018             :        ! Find 1 mbar (or 100 Pa) level.
    1019       43008 :        if (pref_edge(k) > 100._r8) then
    1020        1536 :           k1mb = k
    1021        1536 :           exit find_k1mb
    1022             :        endif
    1023             :     end do find_k1mb
    1024        1536 :     if (masterproc) then
    1025           2 :        write(iulog,'(a,l8)')  'nlte_fomichev_init: apply_co2_limit: ',apply_co2_limit
    1026           2 :        write(iulog,'(a,i6,g12.6)') 'nlte_fomichev_init: check CO2 mixing ratios above 1-mbar level: ',k1mb,pref_mid(k1mb)
    1027             :     endif
    1028             :     
    1029             : ! set molecular weights
    1030        1536 :     co2_mw = co2_mwi
    1031        1536 :     n2_mw = n2_mwi
    1032        1536 :     o1_mw = o1_mwi
    1033        1536 :     o2_mw = o2_mwi
    1034        1536 :     o3_mw = o3_mwi
    1035        1536 :     no_mw = no_mwi
    1036             : 
    1037        1536 :     ktop_co2cool = 1
    1038      109056 :     do k=1,pver
    1039      109056 :        if (pref_mid(k) < ptop_co2cool) ktop_co2cool = k
    1040             :     enddo
    1041             : 
    1042             :     ! op3cooling masking factor  (from Kockarts and Peetermans [1981]
    1043        6144 :     xfac0(1:3)=.01_r8
    1044       12288 :     xfac0(4:10)=(/.05_r8,.1_r8,.2_r8,.4_r8,.55_r8,.7_r8,.75_r8/)
    1045       30720 :     xfac0(11:tgcmlevs) = .8_r8
    1046             : 
    1047             :     ! convert TIE-GCM pressure grid to Pascal
    1048             : 
    1049        1536 :     pz(1)=-7.0_r8
    1050       44544 :     do k=2,tgcmlevs
    1051       44544 :        pz(k)=pz(k-1)+0.5_r8
    1052             :     enddo
    1053       46080 :     do k=1,tgcmlevs
    1054       46080 :        pp(k)=p0*exp(-pz(k))
    1055             :     enddo
    1056       90624 :     call lininterp( xfac0(tgcmlevs:1:-1), pp(tgcmlevs:1:-1), tgcmlevs, o3pxfac, pref_mid, pver )
    1057      109056 :     do k=1,pver
    1058      109056 :        if (pref_mid(k) > pp(1)) then
    1059       92160 :           o3pxfac(k)=0._r8
    1060       15360 :        else if (pref_mid(k) <= pp(tgcmlevs)) then
    1061           0 :           o3pxfac(k)=xfac0(tgcmlevs)
    1062             :        endif
    1063             :     enddo
    1064             : 
    1065        1536 :   end subroutine nlte_fomichev_init
    1066             : 
    1067       80640 :   subroutine set_matrices( amat, bmat )
    1068             : 
    1069             :     implicit none
    1070             : ! calculate coefficients for the matrix paramerization:
    1071             : 
    1072             :     real(r8), intent(out) :: amat(nrfmlte,nrfmltelv)
    1073             :     real(r8), intent(out) :: bmat(nrfmlte,nrfmltelv)
    1074             : 
    1075             : !-----------------------------------------------------------------
    1076             : ! Local vars:
    1077             :     real(r8) :: rco2
    1078             :     real(r8) ::  co2int(4), a
    1079             :     integer :: i,j,isgn
    1080             : 
    1081       80640 :     rco2 = chem_surfvals_get('CO2VMR')
    1082             : 
    1083       80640 :     amat(1:nrfmlte,1:nrfmltelv)=0.0_r8
    1084       80640 :     bmat(1:nrfmlte,1:nrfmltelv)=0.0_r8
    1085     3548160 :     do i = 1,nrfmlte
    1086    34755840 :        do j = 1,nrfmltelv
    1087             : 
    1088    31207680 :           if((i.le.5).and.(j.eq.2)) goto 1
    1089    61608960 :           isgn = int(sign(1._r8,a150(i,j))+sign(1._r8,a360(i,j))+          &
    1090    61608960 :                sign(1._r8,a540(i,j))+sign(1._r8,a720(i,j)))
    1091    30804480 :           co2int(1)=a150(i,j)/co2o(1)
    1092    30804480 :           co2int(2)=a360(i,j)/co2o(2)
    1093    30804480 :           co2int(3)=a540(i,j)/co2o(3)
    1094    30804480 :           co2int(4)=a720(i,j)/co2o(4)
    1095    30804480 :           if(isgn.eq.-4) then
    1096     6451200 :              co2int(1) = log(-co2int(1))
    1097     6451200 :              co2int(2) = log(-co2int(2))
    1098     6451200 :              co2int(3) = log(-co2int(3))
    1099     6451200 :              co2int(4) = log(-co2int(4))
    1100     6451200 :              a = -exp(a18lin(rco2,co2o,co2int,1,4))
    1101    24353280 :           else if (isgn.eq.4) then
    1102    24030720 :              co2int(1) = log(co2int(1))
    1103    24030720 :              co2int(2) = log(co2int(2))
    1104    24030720 :              co2int(3) = log(co2int(3))
    1105    24030720 :              co2int(4) = log(co2int(4))
    1106    24030720 :              a = exp(a18lin(rco2,co2o,co2int,1,4))
    1107             :           else
    1108      322560 :              call a18int(co2o,co2int,rco2,a,4,1)
    1109             :           end if
    1110    30804480 :           amat(i,j)=a*rco2
    1111             :           
    1112             :           isgn = int(sign(1._r8,b150(i,j))+sign(1._r8,b360(i,j))+          &
    1113    30804480 :                sign(1._r8,b540(i,j))+sign(1._r8,b720(i,j)))
    1114    30804480 :           co2int(1)=b150(i,j)/co2o(1)
    1115    30804480 :           co2int(2)=b360(i,j)/co2o(2)
    1116    30804480 :           co2int(3)=b540(i,j)/co2o(3)
    1117    30804480 :           co2int(4)=b720(i,j)/co2o(4)
    1118    30804480 :           if(isgn.eq.-4) then
    1119     8064000 :              co2int(1) = log(-co2int(1))
    1120     8064000 :              co2int(2) = log(-co2int(2))
    1121     8064000 :              co2int(3) = log(-co2int(3))
    1122     8064000 :              co2int(4) = log(-co2int(4))
    1123     8064000 :              a = -exp(a18lin(rco2,co2o,co2int,1,4))
    1124    22740480 :           else if (isgn.eq.4) then
    1125    20885760 :              co2int(1) = log(co2int(1))
    1126    20885760 :              co2int(2) = log(co2int(2))
    1127    20885760 :              co2int(3) = log(co2int(3))
    1128    20885760 :              co2int(4) = log(co2int(4))
    1129    20885760 :              a = exp(a18lin(rco2,co2o,co2int,1,4))
    1130             :           else
    1131     1854720 :              call a18int(co2o,co2int,rco2,a,4,1)
    1132             :           end if
    1133    31207680 :           bmat(i,j)=a*rco2
    1134     3467520 : 1         continue
    1135             :        enddo
    1136             :     enddo
    1137             : 
    1138       80640 :     return
    1139        1536 :   endsubroutine set_matrices
    1140             : 
    1141             : 
    1142             : !==================================================================================================
    1143             : 
    1144       80640 :       subroutine nlte_fomichev_calc (lchnk,ncol,pmid,pint,t,xo2,xo,xo3,xn2,xco2,coolf,&
    1145             :                                      co2cool_out, o3cool_out, c2scool_out )
    1146             :          use time_manager,  only: get_nstep
    1147             : 
    1148             : !
    1149             : !     author: F. Sassi (Dec, 1999)
    1150             : !
    1151             : !------------------------------------------------------------------
    1152             : !
    1153             : !     This is  routine prep arrays to be passed  to Fomichev' scheme
    1154             : !
    1155             : !     RADFMCINTI should have been called at the beginning of the run to
    1156             : !     create arrays used in this parameterization.
    1157             : !
    1158             : !     Concentrations in input are expected in mass mixing ratios 
    1159             : !     and are converted to volume mixing ratios
    1160             : !
    1161             : !     Because Fomichev scheme has its own grid which runs from 
    1162             : !     ground upward, arrays are prepared with vertical indexing
    1163             : !     inverted with respect to the CCM convention. However,
    1164             : !     arrays in input are expected in the standard convention
    1165             : !     (i.e., top is level 1).
    1166             : !
    1167             : !     The pressures at mid-points and interfaces need to be known 
    1168             : !     Conversion to normalized X coordinate is carried out here.
    1169             : !
    1170             : !     Cooling rates are calculated in units of 
    1171             : !
    1172             : !                      dT
    1173             : !           COOLF = Cp ---
    1174             : !                      dt
    1175             : !
    1176             : !     where Cp is the specific heat (ergs g^-1 K^-1), dT/dt is the 
    1177             : !     temperature tendency (K s^-1). Therefore, units of cooling
    1178             : !     are 
    1179             : !     
    1180             : !         (erg g^-1 K^-1) (K s^-1) = cm^2 s^-3
    1181             : !
    1182             : !     COOLF is converted to J/kg/s before output. 
    1183             : !
    1184             : !
    1185             : !*****************************************************************
    1186             : !
    1187             : !-----------------------------------------------------------------
    1188             : implicit none
    1189             : !-----------------------------------------------------------------
    1190             : 
    1191             : !     Input variables
    1192             :       integer, intent(in) :: ncol                          ! number of atmospheric columns
    1193             :       integer, intent(in) :: lchnk                         ! chunk identifier
    1194             : 
    1195             :       real(r8), intent(in) :: pmid(pcols,pver)             ! model pressure at mid-point
    1196             :       real(r8), intent(in) :: pint(pcols,pverp)            ! model pressure at interfaces
    1197             :       real(r8), intent(in) :: t(pcols,pver)                ! Neutral temperature (K)
    1198             :       real(r8), intent(in) :: xco2(pcols,pver)             ! CO2 profile
    1199             :       real(r8), intent(in) :: xn2(pcols,pver)              ! N2 profile
    1200             :       real(r8), intent(in) :: xo3(pcols,pver)              ! O3 profile
    1201             :       real(r8), intent(in) :: xo(pcols,pver)               ! O profile
    1202             :       real(r8), intent(in) :: xo2(pcols,pver)              ! O2 profile
    1203             : 
    1204             : !     Output variables
    1205             :       real(r8), intent(out) :: coolf(pcols,pver)          ! Total cooling
    1206             :       real(r8), intent(out) :: co2cool_out(pcols,pver)        ! CO2 cooling 
    1207             :       real(r8), intent(out) :: o3cool_out(pcols,pver)         ! O3 cooling
    1208             :       real(r8), intent(out) :: c2scool_out(pcols,pver)        ! Cooling to Space
    1209             : 
    1210             : !    Local variables
    1211             :       
    1212             :       real(r8) rmo2                         ! O2 molecular weight
    1213             :       real(r8) rmo                          ! O molecular weight
    1214             :       real(r8) rmn2                         ! N2 molecular weight
    1215             :       real(r8) rmco2                        ! CO2 molecular weight
    1216             :       real(r8) rmo3                         ! O3 molecular weight
    1217             :       real(r8) xnorm(pcols,pver)            ! normalized X p.s.h. at midpoints
    1218             :       real(r8) xnori(pcols,pverp)           ! normalized X p.s.h. at interfaces
    1219             :       real(r8) dxnorm(pcols,pver)           ! xnorm(k+1)-xnorm(k)
    1220             :       real(r8) presm(pcols,pver)            ! pressure at midpoint (dyn/cm^2)
    1221             :       real(r8) presi(pcols,pverp)           ! pressure at interfaces (dyn/cm^2)
    1222             :       real(r8) dpi(pcols,pver)              ! pressure diff. between interfaces (dyn/cm^2)
    1223             :       real(r8) mwair(pcols,pver)            ! mean air molecular weight (g/mole)
    1224             :       real(r8) ndenair(pcols,pver)          ! mean air number density (cm**-3)
    1225             :       real(r8) colco2(pcols,pver)           ! CO2 column number density
    1226             :       real(r8) uco2(pcols,nrfm)             ! column CO2
    1227             :       real(r8) dummyg(pver)                 ! dummy
    1228             :       real(r8) dummyx(pver)                 ! dummy
    1229             :       real(r8) dummyf(nrfm)                 ! dummy
    1230             :       real(r8) hco2(pcols,nrfm)             ! CO2 cooling in Fomichev grid
    1231             :       real(r8) ho3(pcols,nrfm)              ! O3 cooling in Fomichev grid
    1232             :       real(r8) tf(pcols,nrfm)               ! neutral temp interpolated to Fomichev grid
    1233             :       real(r8) vn2f(pcols,nrfm)             ! N2 vmr interpolated to Fomichev grid
    1234             :       real(r8) vo3f(pcols,nrfm)             ! O3 vmr interpolated to Fomichev grid
    1235             :       real(r8) vof(pcols,nrfm)              ! O vmr interpolated to Fomichev grid
    1236             :       real(r8) vco2f(pcols,nrfm)            ! CO2 vmr interpolated to Fomichev grid
    1237             :       real(r8) vo2f(pcols,nrfm)             ! O2 vmr interpolated to Fomichev grid
    1238             :       real(r8) mwairf(pcols,nrfm)           ! Mean air molecular weight interpolated to Fomichev grid
    1239             :       real(r8) ndenf(pcols,nrfm)            ! Mean air no. density interpolated to Fomichev grid
    1240             :       real(r8) flux(pcols)                  ! Flux boundary condition for cool-to-space
    1241             :       real(r8) vo2(pcols,pver)              ! O2 vmr
    1242             :       real(r8) vo(pcols,pver)               ! O vmr
    1243             :       real(r8) vo3(pcols,pver)              ! O3 vmr
    1244             :       real(r8) vn2(pcols,pver)              ! N2 vmr
    1245             :       real(r8) vco2(pcols,pver)             ! CO2 vmr
    1246             :       real(r8) co2cooln(pcols,pver)         ! CO2 cooling 
    1247             :       real(r8) o3cooln(pcols,pver)          ! O3 cooling
    1248             :       real(r8) hc2s(pcols,pver)             ! cool to space heating
    1249             :       real(r8) ps0                          ! Reference (surface) pressure
    1250             :       real(r8) ti(pcols,pver)               ! T(PVER:1:-1)
    1251             :       real(r8) alam(pcols,nrfm)             ! LAMBDA
    1252             :       real(r8) djm(pcols,nrfm)              ! DJM in recurrence formula
    1253             :       real(r8) dj0(pcols,nrfm)              ! DJ0 in recurrence formula
    1254             :       real(r8) aajm(pcols,nrfm)             ! AAJM in recurrrence formula
    1255             :       real(r8) aaj0(pcols,nrfm)             ! AJJ0 in recurrence formula
    1256             :       real(r8) zhgt(pcols,pver)             ! approx. elevation in cm
    1257             :       real(r8) grav(pcols,pver)             ! accelration of gravity in cm/s^2
    1258             :       real(r8) :: wrk(pcols)
    1259             :       
    1260             :       integer k
    1261             :       integer i
    1262             :       integer kinv                     ! inverted vertical index (bottom up)
    1263             :       real(r8), parameter :: co2_limit = 720.e-6_r8
    1264             :       integer :: nstep
    1265             :       character(len=200) :: errmsg
    1266             :       real(r8) :: latdeg, londeg
    1267             : 
    1268             : !----------------------------------------------------------------
    1269             : 
    1270             : !     Define molecular weights
    1271       80640 :       rmco2 = co2_mw
    1272       80640 :       rmo3  = o3_mw
    1273       80640 :       rmo2  = o2_mw
    1274       80640 :       rmo   = o1_mw
    1275       80640 :       rmn2  = n2_mw
    1276             : 
    1277             : 
    1278    87010560 :       coolf(1:ncol,1:pver)=0.0_r8
    1279             : 
    1280       80640 :       arad=rearth*1e2_r8  ! initialize planet's radius (cm)
    1281             : 
    1282             : !-----------------------------------------------------------------
    1283             : !     The pressure at mid point is converted to normalized x coordinate
    1284             : !                  X = LN (P0 / PRES)
    1285             : !     where P0 = 1e6 dyn/cm^2 ; PRES is in dyn/cm^2
    1286             : !     Note: to convert from Pa to dyn/cm^2, multyply by 10
    1287             : !-----------------------------------------------------------------
    1288       80640 :       ps0=1.000e6_r8
    1289     5725440 :       do k=1,pver
    1290     5644800 :          kinv = pver-k+1
    1291    87010560 :          do i=1,ncol
    1292    81285120 :             presm(i,k) = pmid(i,kinv)*10._r8
    1293    81285120 :             xnorm(i,k) = log(ps0/presm(i,k))
    1294             : !     Calculate pressure at interfaces
    1295    81285120 :             presi(i,k) = pint(i,kinv+1)*10._r8
    1296    86929920 :             xnori(i,k) = log(ps0/presi(i,k))
    1297             :          enddo
    1298             :       enddo
    1299     1241856 :       presi(:ncol,pverp) = pint(:ncol,1)*10._r8
    1300     1241856 :       xnori(:ncol,pverp) = log(ps0/presi(:ncol,pverp))
    1301             : 
    1302             : !-----------------------------------------------------------------
    1303             : !     Calculate layer thikcness (DPI).
    1304             : !     For each pressure interface the following is true:
    1305             : !     
    1306             : !            Pint(k) = P0 * exp (-Xint(k))
    1307             : !
    1308             : !     Thus,
    1309             : !
    1310             : !            DPI(k)= Pint(k)-Pint(k+1)= P0 * exp (-Xint(k)) * DX
    1311             : !
    1312             : !     where,
    1313             : !
    1314             : !            DX = 1 - exp ( - (Xint(k+1)-Xint(k)) )
    1315             : !
    1316             : !-----------------------------------------------------------------
    1317     5725440 :       do k=pver,1,-1
    1318    87010560 :          do i=1,ncol
    1319    86929920 :             dxnorm(i,k)=xnori(i,k+1)-xnori(i,k)
    1320             :          enddo
    1321             :       enddo
    1322             : 
    1323             : !     Pressure difference between interfaces (positive downward)
    1324     5725440 :       do k=1,pver
    1325    87010560 :          do i=1,ncol
    1326    86929920 :             dpi(i,k)=ps0*exp(-xnorm(i,k))*(1._r8-exp(-dxnorm(i,k)))
    1327             :          enddo
    1328             :       enddo
    1329             : 
    1330             : !-----------------------------------------------------------------
    1331             : !     Calculate molecular weight (g/mol) of mean air MWAIR:
    1332             : !      
    1333             : !               MWAIR= 1. / [ Sum(i) MMR(i)/MW(i) ] 
    1334             : !
    1335             : !     where MMR(i) are  mass mixing ratio of O2,
    1336             : !     O, N2, and MW(i) are the corresponding
    1337             : !     molecular weights.
    1338             : !-----------------------------------------------------------------
    1339    87010560 :       mwair(1:ncol,1:pver)=0.0_r8
    1340     5725440 :       do k=1,pver
    1341     5644800 :          kinv=pver-k+1
    1342    87010560 :          do i=1,ncol
    1343   162570240 :             mwair(i,k)=1._r8/ (                         &
    1344    81285120 :                  xo2(i,kinv)/rmo2                    &
    1345             :                 +xo(i,kinv)/rmo                      &
    1346             :                 +xn2(i,kinv)/rmn2                    &
    1347             :                 +xo3(i,kinv)/rmo3                    &
    1348             :                 +xco2(i,kinv)/rmco2                  &
    1349   330785280 :                 )
    1350             :          enddo
    1351             :       enddo
    1352             : 
    1353             : !
    1354             : !     Elevation is calculated via integration of 
    1355             : !     the hydrostatic equation 
    1356             : !
    1357             : !
    1358             : !           Sum(k) g(k) dz = Sum(k) PHI(k)
    1359             : !
    1360             : !     where 
    1361             : !                     g0*a^2
    1362             : !               g(k)= ------
    1363             : !                     (a+z)^2
    1364             : !
    1365             : !     where g0=980 cm/s^2;a=6.37e8
    1366             : !
    1367             : !     and
    1368             : !
    1369             : !                                UR * T(i)  DPI(i)
    1370             : !            PHI(k) = Sum(i=1,k)  ------    ----
    1371             : !                                  MW(i)    P(i)
    1372             : !     
    1373             : !     where UR is the gas universal constant, T is temperature,
    1374             : !     MW is the mean air molecular weight, DPI is the pressure 
    1375             : !     layer thickness and P is the mid-point pressure
    1376             : !     Then,
    1377             : !
    1378             : !                   PHI * a
    1379             : !              z = ---------
    1380             : !                  (a*g0-PHI)
    1381             : !
    1382             : !     do i=1,ncol
    1383             : !        phi=0.0
    1384             : !        do k=1,pver
    1385             : !           kinv=pver-k+1
    1386             : !           phi=phi+ur*t(i,kinv)/(mwair(i,k))*dpi(i,k)/presm(i,k)
    1387             : !           zhgt(i,k)=phi*arad/(arad*grav0-phi)
    1388             : !           grav(i,k)=grav0*(arad/(arad+zhgt(i,k)))**2
    1389             : !        enddo
    1390             : !     enddo
    1391             : 
    1392     1241856 :       wrk(:ncol) = 0._r8
    1393             : 
    1394     5725440 :       do k=1,pver
    1395     5644800 :          kinv=pver-k+1
    1396    87010560 :          do i=1,ncol
    1397    81285120 :             wrk(i) = wrk(i) + ur*t(i,kinv)/(mwair(i,k))*dpi(i,k)/presm(i,k)
    1398    81285120 :             zhgt(i,k) = wrk(i)*arad/(arad*grav0 - wrk(i))
    1399    86929920 :             grav(i,k) = grav0*(arad/(arad + zhgt(i,k)))**2
    1400             :          enddo
    1401             :       enddo
    1402             : 
    1403     5725440 :       do k = 1,pver
    1404     5644800 :          kinv=pver-k+1
    1405    87010560 :          do i=1,ncol
    1406             : !-----------------------------------------------------------------
    1407             : !     Convert mmr to vmr
    1408             : !-----------------------------------------------------------------
    1409    81285120 :             vo2 (i,k) = xo2 (i,kinv) *mwair(i,k)/rmo2
    1410    81285120 :             vo  (i,k) = xo  (i,kinv) *mwair(i,k)/rmo
    1411    81285120 :             vo3 (i,k) = xo3 (i,kinv) *mwair(i,k)/rmo3
    1412    81285120 :             vn2 (i,k) = xn2 (i,kinv) *mwair(i,k)/rmn2
    1413    81285120 :             vco2(i,k) = xco2(i,kinv) *mwair(i,k)/rmco2
    1414             : 
    1415             : ! CGB - The Formichev scheme was not designed to support CO2 > 720 ppmv, so
    1416             : ! limit the amount of CO2 used to 720 ppmv. This keeps the model stable, but
    1417             : ! may yield an incorrect scientific result. It would be nice to extend this
    1418             : ! routine to support higher CO2 values. Putting the limiter here means that
    1419             : ! that the other constituents will have their proper mixing ratio caclulated
    1420             : ! (i.e. the mwair is correct), but vco2 will be limited.  Abort the run if CO2
    1421             : ! exceeds the limit at altitudes above 1 mbar unless apply_co2_limit=.true.
    1422             : 
    1423    81285120 :             if ((vco2(i,k)>co2_limit).and.(.not.apply_co2_limit).and.(kinv<k1mb)) then
    1424           0 :                nstep = get_nstep()
    1425           0 :                latdeg = get_rlat_p(lchnk,i)*180._r8/pi
    1426           0 :                londeg = get_rlon_p(lchnk,i)*180._r8/pi
    1427             :                write(errmsg,fmt='(a,i12,2(i6),g12.4,2(f8.2),g12.4)') &
    1428           0 :                     'nlte_fomichev_calc: CO2 has exceeded the limit: nstep,i,k,press(Pa),lon,lat,vco2(vmr)=',&
    1429           0 :                     nstep,i,kinv, pmid(i,kinv), londeg, latdeg, vco2(i,k)
    1430           0 :                write(iulog,*) trim(errmsg)
    1431           0 :                call endrun(trim(errmsg))
    1432             :             endif
    1433             : 
    1434             : !-----------------------------------------------------------------
    1435             : !     Calculate mean air number density ( cm^(-3) )
    1436             : !
    1437             : !                              P(k)
    1438             : !                    n  = -------------
    1439             : !                              Kb*T(k)
    1440             : !     where:
    1441             : !           P(k)    is pressure at mid-point
    1442             : !           AKBL    is Boltzman constant
    1443             : !           T       is neutral temperature
    1444             : !-----------------------------------------------------------------
    1445    86929920 :             ndenair(i,k) = presm(i,k)/(akbl*t(i,kinv))
    1446             :          enddo
    1447             : 
    1448             :       enddo
    1449             : 
    1450             :       ! apply the CO2 limiter for all levels and columns
    1451    87010560 :       where ( vco2(:ncol,:) > co2_limit )
    1452             :          vco2(:ncol,:) = co2_limit
    1453             :       end where
    1454             :       
    1455             : !-----------------------------------------------------------------
    1456             : !     Calculate CO2 vertical column above each level
    1457             : !     
    1458             : !     At each mid-point vertical level (j), the following sum is calculated
    1459             : !
    1460             : !                                         
    1461             : !            COLCO2(j) = Sum_(i=ztop:j:-1) NDENAIR(I)*VCO2(I)*DZ = ...
    1462             : !                      
    1463             : !                                            ANAV * VCO2(I)
    1464             : !                      = Sum_(i=pver:j:-1)  ---------------- * DP
    1465             : !                                            GRAV * MWAIR(I)
    1466             : !
    1467             : !     where ANAV is the Avogadro no., VCO2 is CO2 vmr, GRAV is the
    1468             : !     accelaration of gravity, MWAIR is mean molecular weight, DP
    1469             : !     is the pressure increment downward.
    1470             : !     As boundary condition at PVER, it is assumed that VCO2 
    1471             : !     and NDENAIR stay constant above that level.
    1472             : !-----------------------------------------------------------------
    1473             : !     do i=1,ncol
    1474             : !        colco2(i,pver)=anav/grav(i,pver)*vco2(i,pver)/mwair(i,pver)*dpi(i,pver)
    1475             : !        do k=pver-1,1,-1
    1476             : !           colco2(i,k)=colco2(i,k+1)                                       &
    1477             : !               +anav/grav(i,k)*vco2(i,k)/mwair(i,k)*dpi(i,k)
    1478             : !        enddo
    1479             : !     enddo
    1480             : 
    1481             :       colco2(:ncol,pver) = anav/grav(:ncol,pver)*vco2(:ncol,pver) &
    1482     1241856 :                            /mwair(:ncol,pver)*dpi(:ncol,pver)
    1483     5644800 :       do k=pver-1,1,-1
    1484    85768704 :          do i=1,ncol
    1485   240371712 :             colco2(i,k)=colco2(i,k+1)                                       &
    1486   326059776 :                 +anav/grav(i,k)*vco2(i,k)/mwair(i,k)*dpi(i,k)
    1487             :          enddo
    1488             :       enddo
    1489             : 
    1490             : !-----------------------------------------------------------------
    1491             : !     Linear interpolation from CCM grid defined in XNORM(1:PVER)
    1492             : !     to Fomichev grid defined in XR(1:NRFM)
    1493             : !     Interpolation is carried out using mod PRFLINV which
    1494             : !     is adapted from A18LINV (originally written for TIME/GCM).
    1495             : !     All fields are interpolated. If XR levels are beyond the
    1496             : !     limit of the actual CCM grid, zero values are inserted in
    1497             : !     the interpolated arrays. Proper handling of the arrays is done
    1498             : !     in VICCOOLN.
    1499             : !-----------------------------------------------------------------
    1500             : 
    1501             : !-----------------------------------------------------------------
    1502             : !     Create TI array which contains T(PVER:1:-1)
    1503             : !-----------------------------------------------------------------
    1504    87010560 :       ti(1:ncol,1:pver)=t(1:ncol,pver:1:-1)
    1505             : 
    1506     1241856 :       do i=1,ncol
    1507             : 
    1508    82446336 :          dummyx(1:pver)=xnorm(i,1:pver)
    1509             : 
    1510             : !     Temperature
    1511    82446336 :          dummyg(1:pver)=ti(i,1:pver)
    1512     1161216 :          call a18linvne (xr,dummyf,dummyx,dummyg,pver,nrfm)
    1513    78962688 :          tf(i,1:nrfm)=dummyf(1:nrfm)
    1514             : 
    1515             : !     O3
    1516    82446336 :          dummyg(1:pver)=vo3(i,1:pver)
    1517     1161216 :          call a18linvne (xr,dummyf,dummyx,dummyg,pver,nrfm)
    1518    78962688 :          vo3f(i,1:nrfm)=dummyf(1:nrfm)
    1519             : 
    1520             : !     O2
    1521    82446336 :          dummyg(1:pver)=vo2(i,1:pver)
    1522     1161216 :          call a18linvne (xr,dummyf,dummyx,dummyg,pver,nrfm)
    1523    78962688 :          vo2f(i,1:nrfm)=dummyf(1:nrfm)
    1524             : 
    1525             : !     N2
    1526    82446336 :          dummyg(1:pver)=vn2(i,1:pver)
    1527     1161216 :          call a18linvne (xr,dummyf,dummyx,dummyg,pver,nrfm)
    1528    78962688 :          vn2f(i,1:nrfm)=dummyf(1:nrfm)
    1529             : 
    1530             : !     O
    1531    82446336 :          dummyg(1:pver)=vo(i,1:pver)
    1532     1161216 :          call a18linvne (xr,dummyf,dummyx,dummyg,pver,nrfm)
    1533    78962688 :          vof(i,1:nrfm)=dummyf(1:nrfm)
    1534             :          
    1535             : !     CO2
    1536    82446336 :          dummyg(1:pver)=vco2(i,1:pver)
    1537     1161216 :          call a18linvne (xr,dummyf,dummyx,dummyg,pver,nrfm)
    1538    78962688 :          vco2f(i,1:nrfm)=dummyf(1:nrfm)
    1539             : 
    1540             : !     COLCO2
    1541    82446336 :          dummyg(1:pver)=colco2(i,1:pver)
    1542     1161216 :          call a18linvne (xr,dummyf,dummyx,dummyg,pver,nrfm)
    1543    78962688 :          uco2(i,1:nrfm)=dummyf(1:nrfm)
    1544             : 
    1545             : !     DEN
    1546    82446336 :          dummyg(1:pver)=ndenair(i,1:pver)
    1547     1161216 :          call a18linvne (xr,dummyf,dummyx,dummyg,pver,nrfm)
    1548    78962688 :          ndenf(i,1:nrfm)=dummyf(1:nrfm)
    1549             :          
    1550             : !     AM
    1551    82446336 :          dummyg(1:pver)=mwair(i,1:pver)
    1552     1161216 :          call a18linvne (xr,dummyf,dummyx,dummyg,pver,nrfm)
    1553    79043328 :          mwairf(i,1:nrfm)=dummyf(1:nrfm)
    1554             :          
    1555             :       enddo
    1556             : 
    1557             : 
    1558             : !     Use recurrence relation to calculate AL coefficents
    1559       80640 :       call recur (ncol,uco2,tf,vn2f,vo2f,vof,ndenf,alam,djm,dj0,aajm,aaj0)
    1560             : 
    1561             : 
    1562             : !     Do LTE and NLTE parts of cooling
    1563       80640 :       call viccooln (ncol,alam,djm,dj0,aajm,aaj0,tf,vco2f,vo3f,mwairf,flux,hco2,ho3)
    1564             : 
    1565             : 
    1566             : !     Interpolate from Fomichev grid to CCM grid
    1567     1241856 :       do i=1,ncol
    1568    82446336 :          dummyx(1:pver)=xnorm(i,1:pver)
    1569             : 
    1570             : !     HCO2
    1571    78962688 :          dummyf(1:nrfm)=hco2(i,1:nrfm)
    1572     1161216 :          call a18linvne (dummyx,dummyg,xr,dummyf,nrfm,pver)
    1573    82446336 :          co2cooln(i,1:pver)=dummyg(1:pver)
    1574             : 
    1575             : !     HO3
    1576    78962688 :          dummyf(1:nrfm)=ho3(i,1:nrfm)
    1577     1161216 :          call a18linvne (dummyx,dummyg,xr,dummyf,nrfm,pver)
    1578    82526976 :          o3cooln(i,1:pver)=dummyg(1:pver)
    1579             : 
    1580             :       enddo
    1581             : 
    1582             : !     Do cool-to-space component of cooling
    1583       80640 :       call cool2space (ncol,ti,mwair,vn2,vo2,vo,vco2,ndenair,xnorm,flux,hc2s)
    1584             : 
    1585             : !     Calculate total cooling
    1586             : 
    1587             :       ! Above ptop_co2cool use cool to space approx.
    1588      483840 :       do k=1,ktop_co2cool-1
    1589      403200 :          kinv=pver-k+1
    1590     6289920 :          do  i=1,ncol
    1591             :             ! Convert to J/kg/s
    1592     6209280 :             coolf(i,k) = (o3cooln(i,kinv) + hc2s(i,kinv)) * 1.e-4_r8
    1593             :          enddo
    1594             :       enddo
    1595             :       ! Below ptop_co2cool use nlte calculation
    1596     5322240 :       do k=ktop_co2cool,pver
    1597     5241600 :          kinv=pver-k+1
    1598    80801280 :          do  i=1,ncol
    1599             :             ! Convert to J/kg/s
    1600    80720640 :             coolf(i,k) = (co2cooln(i,kinv) + o3cooln(i,kinv)) * 1.e-4_r8
    1601             :          enddo
    1602             :       enddo
    1603             : 
    1604             :       ! diagnostics ...
    1605     5725440 :       do k=1,pver
    1606     5644800 :          kinv=pver-k+1
    1607    86929920 :          co2cool_out(:ncol,k) = co2cooln(:ncol,kinv) * 1.e-4_r8
    1608    86929920 :          o3cool_out(:ncol,k) = o3cooln(:ncol,kinv) * 1.e-4_r8
    1609    87010560 :          c2scool_out(:ncol,k) = hc2s(:ncol,kinv) * 1.e-4_r8
    1610             :       enddo
    1611             : 
    1612       80640 :       return
    1613       80640 :     end subroutine nlte_fomichev_calc
    1614             : 
    1615             : !====================================================================================
    1616             : 
    1617    12773376 :   subroutine a18linvne (x,y,xn,yn,n,imax)                               
    1618             : 
    1619             :       implicit none
    1620             : 
    1621             : !     ****                                                               
    1622             : !     ****     This procedure performs linear interpolation within the   
    1623             : !     ****     table defined by the N points (XN(NN),Y(NN)).             
    1624             : !     ****     Where:                                                    
    1625             : !     ****                                                               
    1626             : !     ****       NN = 1,N,1                                              
    1627             : !     ****                                                               
    1628             : !     ****       XN(NN) < XN(NN+1) for NN = 1,N-1            
    1629             : !     ****                                                               
    1630             : !     ****     Parameters:                                               
    1631             : !     ****                                                               
    1632             : !     ****       X(IMAX) = array of IMAX x-values at which linear        
    1633             : !     ****                 interpolation is required                     
    1634             : !     ****                                                               
    1635             : !     ****       XN(N) = array of N abscissae at which function values   
    1636             : !     ****               are given                                       
    1637             : !     ****                                                               
    1638             : !     ****       YN(N) = function values corresponding to abscissae,     
    1639             : !     ****               XN(N)                                           
    1640             : !     ****                                                               
    1641             : !     ****     Output:                                                   
    1642             : !     ****                                                               
    1643             : !     ****      Y(IMAX)  The IMAX interpolated values are                
    1644             : !     ****                     returned in this array                    
    1645             : !     ****                                                               
    1646             : !     
    1647             : !     It has been modified as follows: 
    1648             : !     if points X are outside the range X(1)..X(N), the last values
    1649             : !     are assigned. That is
    1650             : !     IF X(I) > XN(N) THEN Y(I)=YN(N)
    1651             : !     IF X(I) < XN(1) THEN Y(I)=YN(1)
    1652             : !     
    1653             : 
    1654             : !     Arguments
    1655             :       integer, intent(in) :: imax
    1656             :       integer, intent(in) :: n
    1657             :       real(r8), intent(out) :: y(imax)
    1658             :       real(r8), intent(in) :: x(imax)
    1659             :       real(r8), intent(in) :: xn(n)
    1660             :       real(r8), intent(in) :: yn(n)
    1661             : 
    1662             : 
    1663             : !     Local variables
    1664    25546752 :       integer kk(imax)                 
    1665             :       integer nn
    1666             :       integer i
    1667             : 
    1668             : !     ****                                                               
    1669             : !     ****     Where:                                                    
    1670             : !     ****       Y(IMAX) is vector output                                
    1671             : !     ****                                                               
    1672             : !     ****       KK is work space                                        
    1673             : !     ****                                                               
    1674             : !     ****                                                               
    1675             : !     ****     Initialize array KK                                       
    1676             : !     ****                                                               
    1677             : 
    1678   875556864 :       do i = 1,imax                                                      
    1679   875556864 :          kk(i) = 0                                                        
    1680             :       enddo                                                              
    1681             : 
    1682             : !     ****                                                               
    1683             : !     ****     Locate interval in (XN,YN) in table containing X(I)       
    1684             : !     ****                                                               
    1685             : 
    1686   887169024 :       do nn = 1,n-1                                                      
    1687 59931518976 :          do i = 1,imax                                                    
    1688 59918745600 :             kk(i) = merge(nn+1,kk(i),(xn(nn+1)-x(i))*(x(i)-xn(nn))>=0._r8)    
    1689             :          enddo                                                            
    1690             :       enddo                                                              
    1691             : 
    1692             : !     ****                                                               
    1693             : !     ****     Check for                                                 
    1694             : !     ****                                                               
    1695             : !     ****       X(I) < XN(1),  X(I) > X(N)                              
    1696             : !     ****                                                               
    1697             : !     ****       and use linear extrapolation if necessary               
    1698             : !     ****                                                               
    1699             : 
    1700   875556864 :       do i = 1,imax                                                      
    1701   862783488 :          kk(i) = merge(-1,kk(i),xn(1)-x(i)>=0._r8)                            
    1702  1726728192 :          kk(i) = merge(-2,kk(i),x(i)-xn(n)>=0._r8)                            
    1703             :       enddo                                                              
    1704             : 
    1705             : !     ****                                                               
    1706             : !     ****     Perform interpolation prescribed above                    
    1707             : !     ****                                                               
    1708             : 
    1709   875556864 :       y(:) = 0._r8
    1710             :       
    1711   875556864 :       do i = 1,imax      
    1712             : 
    1713   875556864 :          if (kk(i).gt.0) then
    1714             : 
    1715             :             y(i) = (                            &
    1716  1686467868 :                  yn(kk(i)-1)*(xn(kk(i))-x(i))   &
    1717             :                  + yn(kk(i))*(x(i)-xn(kk(i)-1)) &
    1718  2529701802 :                  )/(xn(kk(i))-xn(kk(i)-1))         
    1719             : 
    1720    19549554 :          else if (kk(i).eq.-1) then
    1721             : 
    1722     7937394 :             y(i)=yn(1)
    1723             : 
    1724    11612160 :          else if (kk(i).eq.-2) then
    1725             : 
    1726    11612160 :             y(i)=yn(n)
    1727             : 
    1728             :          endif
    1729             : 
    1730             :       enddo                                                              
    1731             : 
    1732    12773376 :       return
    1733       80640 :  end subroutine  a18linvne
    1734             : 
    1735             : 
    1736             : !=======================================================================================
    1737             : 
    1738       80640 :       subroutine recur (ncol,uco2,tf,vn2f,vo2f,vof,ndenf,alam,djm,dj0,aajm,aaj0)
    1739             : 
    1740             : !     Originally written by R. Roble,  modified by F. Sassi (Nov., 1999)
    1741             : 
    1742             : !-----------------------------------------------------------------
    1743             : implicit none
    1744             : !-----------------------------------------------------------------
    1745             : 
    1746             : 
    1747             :       integer, intent(in) :: ncol                          ! number of atmospheric columns
    1748             :       
    1749             :       real(r8), intent(in) :: UCO2(pcols,nrfm)
    1750             :       real(r8), intent(in) :: tf(pcols,nrfm)
    1751             :       real(r8), intent(in) :: vn2f(pcols,nrfm)
    1752             :       real(r8), intent(in) :: vo2f(pcols,nrfm)
    1753             :       real(r8), intent(in) :: vof(pcols,nrfm)
    1754             :       real(r8), intent(in) :: ndenf(pcols,nrfm)
    1755             : 
    1756             :       real(r8), intent(out) :: alam(pcols,nrfm)
    1757             :       real(r8), intent(out) :: djm(pcols,nrfm)
    1758             :       real(r8), intent(out) :: dj0(pcols,nrfm)
    1759             :       real(r8), intent(out) :: aajm(pcols,nrfm)
    1760             :       real(r8), intent(out) :: aaj0(pcols,nrfm)
    1761             : 
    1762             :       real(r8) CO2INT(nrfmco2)
    1763             :       real(r8) UREF(nrfmco2)
    1764             :       real(r8) A(pcols)                  
    1765             :       real(r8) COR(pcols)
    1766             :       real(r8) UC(pcols)                                           
    1767             :       real(r8) al(pcols,nrfm)
    1768             : 
    1769             :       real(r8) tt
    1770             :       real(r8) y
    1771             :       real(r8) zn2
    1772             :       real(r8) zo2
    1773             :       real(r8) zz
    1774             :       real(r8) rko
    1775             : 
    1776             :       integer ks
    1777             :       integer i
    1778             :       integer k
    1779             :       integer km
    1780             : 
    1781             : 
    1782             : !****this constant should be moved to an intialization routine
    1783             : 
    1784             : !                                                                        
    1785             : !                                                                        
    1786             : !     ****  UCO2 (CO2 COLUMN AMOUNT) FOR CO2                         
    1787             : !                                                                        
    1788             : !                                                                        
    1789             : !     **** CALCULATE COEFICIENTS FOR THE RECCURENCE FORMULA:             
    1790             : !                                                                        
    1791             : !     **** BETWEEN X=12.5 AND 13.75 THESE COEFFICIENTS (AL) ARE          
    1792             : !     **** CALCULATED USING CORRECTIONS TO THE ESCAPE FUNCTION.          
    1793             : !     **** STARTING FROM X=14.00 AND ABOVE THE PARAMETERIZATION          
    1794             : !     **** COEFFICIENTS ARE EQUAL TO THE ESCAPE FUNCTION.                
    1795             : !                        
    1796             : 
    1797    83284992 :       al(1:ncol,1:nrfm)=0.0_r8
    1798             :       ks=0
    1799     5483520 :       do k=1,nrfm                                                         
    1800             :          
    1801     5483520 :          if (xr(k).ge.12.5_r8 .and. xr(k).le.13.75_r8) then
    1802      483840 :             ks=ks+1
    1803             : 
    1804      483840 :             co2int(1) = cor150(ks)
    1805      483840 :             co2int(2) = cor360(ks)
    1806      483840 :             co2int(3) = cor540(ks)
    1807      483840 :             co2int(4) = cor720(ks)
    1808      483840 :             uref(1) = uco2co(ks)*150._r8/360._r8
    1809      483840 :             uref(2) = uco2co(ks)
    1810      483840 :             uref(3) = uco2co(ks)*540._r8/360._r8
    1811      483840 :             uref(4) = uco2co(ks)*720._r8/360._r8
    1812     7451136 :             do  i=1,ncol
    1813     7451136 :                uc(i) = uco2(i,k)
    1814             :             enddo
    1815      483840 :             call a18linv(uc,a,uco2ro,alo,51,ncol)
    1816      483840 :             call a18linv(uc,cor,uref,co2int,4,ncol)
    1817     7451136 :             do i=1,ncol
    1818     7451136 :                al(i,k) = exp(cor(i)+a(i))
    1819             :             enddo
    1820             : 
    1821             :          endif
    1822             :       enddo
    1823             : 
    1824     5483520 :       do k=1,nrfm
    1825             : 
    1826     5483520 :          if (xr(k).ge.14.00_r8) then
    1827             : 
    1828    13660416 :             do i=1,ncol
    1829    13660416 :                uc(i) = uco2(i,k)
    1830             :             enddo
    1831      887040 :             call a18linv(uc,a,uco2ro,alo,51,ncol)
    1832    13660416 :             do  i=1,ncol
    1833    13660416 :                al(i,k) = exp(a(i))
    1834             :             enddo
    1835             :             
    1836             :          endif
    1837             : 
    1838             :       enddo
    1839             : 
    1840             : ! 
    1841             : !     Calculate ALAM
    1842             : !                     
    1843    83284992 :       alam(1:ncol,1:nrfm)=0.0_r8
    1844     5483520 :       do  k=1,nrfm
    1845             : 
    1846             : !     ALAM is used only for p.s.h. >= 12.5
    1847             : !     If the current level is below 12.5 s.h., then do nothing
    1848     5483520 :          if (xr(k).ge.12.5_r8) then
    1849             : 
    1850    21111552 :             do i=1,ncol                                                  
    1851             : 
    1852             : !                                                                     
    1853             : !     ****  CO2-O2 AND CO2-N2 V-T CONSTANTS                           
    1854             : !                                                                     
    1855    19740672 :                tt   = tf(i,k) 
    1856    19740672 :                y    = tt**(-1._r8/3._r8)                                          
    1857    19740672 :                zn2  = 5.5e-17_r8*sqrt(tt)+6.7e-10_r8*exp(-83.8_r8*y)            
    1858    19740672 :                zo2  = 1.e-15_r8*exp(23.37_r8-230.9_r8*y+564._r8*y*y)            
    1859    19740672 :                rko  = 3.0e-12_r8                                                    
    1860             : 
    1861             : !                                                                     
    1862             : !     ****  COLLISIONAL DEACTIVATION RATE:                            
    1863             : !                                                                     
    1864    19740672 :                zz   = (vn2f(i,k)*zn2 +  vo2f(i,k)*zo2 +  vof (i,k)*rko)*ndenf(i,k)
    1865             : 
    1866             : !
    1867             : !     ****
    1868             : !
    1869    21111552 :                alam(i,k) = a10/( a10+zz )
    1870             : 
    1871             :             enddo  ! end-loop in longitude
    1872             :          
    1873             :          endif
    1874             : 
    1875             :       enddo        ! end-loop in levels
    1876             : 
    1877             : !     Calculate coefficients of recurrence formula
    1878             : !     This coefficients are used for 12.75=< p.s.h.=<16.5
    1879             : !     Outside this range do nothing
    1880             : !     It uses ALAM (p.s.h. >= 12.5)
    1881             : 
    1882    83284992 :       djm(1:ncol,1:nrfm)=0.0_r8
    1883    83284992 :       dj0(1:ncol,1:nrfm)=0.0_r8
    1884    83284992 :       aajm(1:ncol,1:nrfm)=0.0_r8
    1885    83284992 :       aaj0(1:ncol,1:nrfm)=0.0_r8
    1886     5483520 :       do k=1,nrfm
    1887             : 
    1888     5483520 :          if (xr(k).ge.12.75_r8 .and. xr(k).le.16.5_r8) then
    1889             : 
    1890             :             km=k-1
    1891             : 
    1892    19869696 :             do i=1,ncol
    1893             : 
    1894    18579456 :                djm(i,k)  = +.25_r8*(3._r8*al(i,km) +    al(i,k) )
    1895    18579456 :                dj0(i,k)  = +.25_r8*(   al(i,km) + 3._r8*al(i,k) )
    1896             : 
    1897    18579456 :                aajm(i,k) = 1._r8-alam(i,km) * ( 1._r8-djm(i,k) )
    1898    19869696 :                aaj0(i,k) = 1._r8-alam(i,k ) * ( 1._r8-dj0(i,k) )
    1899             : 
    1900             :             enddo    ! end-loop in longitude
    1901             : 
    1902             :          endif
    1903             : 
    1904             :       enddo          ! end-loop in levels
    1905             : 
    1906       80640 :       return
    1907             :   end subroutine recur
    1908             :                                                                 
    1909             : !======================================================================================
    1910             : 
    1911     1854720 :       subroutine a18linv (x,y,xn,yn,n,imax)                               
    1912             : 
    1913             :       implicit none
    1914             : 
    1915             : !     ****                                                               
    1916             : !     ****     This procedure performs linear interpolation within the   
    1917             : !     ****     table defined by the N points (XN(NN),Y(NN)).             
    1918             : !     ****     Where:                                                    
    1919             : !     ****                                                               
    1920             : !     ****       NN = 1,N,1                                              
    1921             : !     ****                                                               
    1922             : !     ****       XN(NN) < XN(NN+1) for NN = 1,N-1            
    1923             : !     ****                                                               
    1924             : !     ****     Parameters:                                               
    1925             : !     ****                                                               
    1926             : !     ****       X(IMAX) = array of IMAX x-values at which linear        
    1927             : !     ****                 interpolation is required                     
    1928             : !     ****                                                               
    1929             : !     ****       XN(N) = array of N abscissae at which function values   
    1930             : !     ****               are given                                       
    1931             : !     ****                                                               
    1932             : !     ****       YN(N) = function values corresponding to abscissae,     
    1933             : !     ****               XN(N)                                           
    1934             : !     ****                                                               
    1935             : !     ****     Output:                                                   
    1936             : !     ****                                                               
    1937             : !     ****      Y(IMAX)  The IMAX interpolated values are                
    1938             : !     ****                     returned in this array                    
    1939             : !     ****                                                               
    1940             : 
    1941             : !     Input variables
    1942             :       integer imax
    1943             :       integer n
    1944             :       real(r8) y(imax)
    1945             :       real(r8) x(imax)
    1946             :       real(r8) xn(n)
    1947             :       real(r8) yn(n)
    1948             : 
    1949             :       integer i
    1950             : 
    1951             : !     Local variables
    1952     3709440 :       integer KK(IMAX)                 
    1953             :       integer NN
    1954             : 
    1955             : !     ****                                                               
    1956             : !     ****     Where:                                                    
    1957             : !     ****       Y(IMAX) is vector output                                
    1958             : !     ****                                                               
    1959             : !     ****       KK is work space                                        
    1960             : !     ****                                                               
    1961             : !     ****                                                               
    1962             : !     ****     Initialize array KK                                       
    1963             : !     ****                                                               
    1964             : 
    1965    28562688 :       do i = 1,imax                                                      
    1966    28562688 :          kk(i) = 0                                                        
    1967             :       enddo                                                              
    1968             : 
    1969             : !     ****                                                               
    1970             : !     ****     Locate interval in (XN,YN) in table containing X(I)       
    1971             : !     ****                                                               
    1972             : 
    1973    71850240 :       do nn = 1,n-1                                                      
    1974  1079785728 :          do i = 1,imax                                                    
    1975  1077931008 :             kk(i) = merge(nn+1,kk(i),(xn(nn+1)-x(i))*(x(i)-xn(nn))>=0._r8)    
    1976             :          enddo                                                            
    1977             :       enddo                                                              
    1978             : 
    1979             : !     ****                                                               
    1980             : !     ****     Check for                                                 
    1981             : !     ****                                                               
    1982             : !     ****       X(I) < XN(1),  X(I) > X(N)                              
    1983             : !     ****                                                               
    1984             : !     ****       and use linear extrapolation if necessary               
    1985             : !     ****                                                               
    1986             : 
    1987    28562688 :       do i = 1,imax                                                      
    1988    26707968 :          kk(i) = merge(2,kk(i),xn(1)-x(i)>=0._r8)                            
    1989    55270656 :          kk(i) = merge(n,kk(i),x(i)-xn(n)>=0._r8)                            
    1990             :       enddo                                                              
    1991             : 
    1992             : !     ****                                                               
    1993             : !     ****     Perform interpolation prescribed above                    
    1994             : !     ****                                                               
    1995             : 
    1996    28562688 :       do i = 1,imax                                                      
    1997    80123904 :          y(i) = (yn(kk(i)-1)*(xn(kk(i))-x(i)) + yn(kk(i))*    &
    1998   108686592 :              (x(i)-xn(kk(i)-1)))/(xn(kk(i))-xn(kk(i)-1))         
    1999             :       enddo                                                              
    2000             : 
    2001     1854720 :       return                                                             
    2002             :  end  subroutine a18linv
    2003             : 
    2004             : 
    2005             : !========================================================================================
    2006             : 
    2007       80640 :       subroutine viccooln (ncol,alam,djm,dj0,aajm,aaj0,tv,co2,o3,am,flux,hco2,ho3 )
    2008             : 
    2009             : !
    2010             : !     Original version from Ray Roble.
    2011             : !     Adapted to CCM by F. Sassi (Nov. 1999)
    2012             : !
    2013             : 
    2014             : !-----------------------------------------------------------------
    2015             : implicit none
    2016             : !-----------------------------------------------------------------
    2017             : 
    2018             : !
    2019             : !     **** This is the mod that calculates LTE and NLTE components
    2020             : !     **** of the cooling rates.
    2021             : !
    2022             : 
    2023             : ! XL(17)  - the parameters for NLTE region (12.5 <= X <= 16.5)    
    2024             : 
    2025             : !     Input variables
    2026             : 
    2027             :       integer, intent(in) :: ncol                          ! number of atmospheric columns
    2028             : 
    2029             :       real(r8), intent(in) :: tv(pcols,nrfm)               ! neutral temp interpolated to Fomichev grid
    2030             :       real(r8), intent(in) :: o3(pcols,nrfm)               ! O3 vmr interpolated to Fomichev grid
    2031             :       real(r8), intent(in) :: am(pcols,nrfm)               ! Mean air molecular weight interpolated to Fomichev grid
    2032             :       real(r8), intent(in) :: co2(pcols,nrfm)              ! CO2 vmr interpolated to Fomichev grid
    2033             :       real(r8), intent(in) :: djm(pcols,nrfm)              ! DJM coefficient in recurrence formula
    2034             :       real(r8), intent(in) :: dj0(pcols,nrfm)              ! DJ0 coefficient in recurrence formula
    2035             :       real(r8), intent(in) :: aajm(pcols,nrfm)             ! AAJM coefficient in recurrence formula
    2036             :       real(r8), intent(in) :: aaj0(pcols,nrfm)             ! AAJ0 coefficient in recurrence formula
    2037             :       real(r8), intent(in) :: alam(pcols,nrfm)             ! LAMBDA
    2038             : 
    2039             : 
    2040             : !     Local variables
    2041             :       real(r8) FU(pcols,nrfm)
    2042             :       real(r8) FO3(pcols,nrfm)
    2043             :       real(r8) H1(pcols)
    2044             :       real(r8) H2(pcols)
    2045             :       real(r8) H3(pcols)
    2046             : 
    2047             :       integer jj
    2048             :       integer k
    2049             :       integer i
    2050             :       integer ks
    2051             :       integer jjs
    2052             : 
    2053             : 
    2054             : !     Output variables
    2055             :       real(r8), intent(out) :: flux(pcols)                 ! Flux boundary condition for cool-to-space
    2056             :       real(r8), intent(out) :: hco2(pcols,nrfm)            ! CO2 cooling in Fomichev grid
    2057             :       real(r8), intent(out) :: ho3(pcols,nrfm)             ! O3 cooling in Fomichev grid
    2058             : 
    2059             :       real(r8) :: amat(nrfmlte,nrfmltelv)
    2060             :       real(r8) :: bmat(nrfmlte,nrfmltelv)
    2061             : 
    2062             : !--------------------------------------------------------------------
    2063             : !  update the amat and bmat matrices with time-dependent surf CO2 
    2064             : !--------------------------------------------------------------------
    2065       80640 :       call set_matrices(amat,bmat)
    2066             : 
    2067             : 
    2068    83284992 :       hco2(1:ncol,1:nrfm)=0.0_r8
    2069    83284992 :       ho3(1:ncol,1:nrfm)=0.0_r8
    2070     1241856 :       flux(1:ncol)=0.0_r8
    2071             : 
    2072             : !                                                                    
    2073             : ! grid levels for height integration   (p.s.h. distance = 0.25*IG)   
    2074             : !
    2075             : 
    2076     5483520 :       do k=1,nrfm
    2077    83284992 :          do i=1,ncol                                                 
    2078    77801472 :             fu(i,k)=exp(-960.217_r8/tv(i,k))                                 
    2079    83204352 :             fo3(i,k)=exp(-1500._r8/tv(i,k))                                  
    2080             :          enddo
    2081             :       enddo
    2082             :      
    2083             : !                                                                     
    2084             : ! calculate the heating rates for layer below s.h.p. = 12.5           
    2085             : !   15 um CO2 + 9.6 um O3:                                            
    2086             : !                                                                     
    2087             : !                                                                     
    2088             : !     **** COOLING RATE IN BOTH O3 AND CO2 BANDS (X=2-10.5) MATRIX    
    2089             : !     **** APPROACH                                                   
    2090             : !
    2091             : 
    2092             : !     Adding KS=K+8 maps NFRMC into NFRM
    2093      483840 :       do  k=1,5                                                      
    2094      403200 :          ks = k+8                                                     
    2095     6209280 :          do i=1,ncol                                                  
    2096     5806080 :             h2(i) = (amat(k,1)+bmat(k,1)*fu(i,ks))*fu(i,1)            
    2097     6209280 :             h3(i) = ao3(k,1)*fo3(i,1)                                 
    2098             :          enddo
    2099     3225600 :          do jj=3,nrfmltelv
    2100     2822400 :             jjs = ks+ig(jj)                                             
    2101    43868160 :             do i=1,ncol                                              
    2102    40642560 :                h2(i) = h2(i)+(amat(k,jj)+bmat(k,jj)*fu(i,ks))*fu(i,jjs)    
    2103    43464960 :                h3(i) = h3(i)+ao3(k,jj)*fo3(i,jjs)                          
    2104             :             enddo
    2105             :          enddo
    2106     6289920 :          do  i=1,ncol                                               
    2107     5806080 :             hco2(i,ks) = h2(i)                                           
    2108     6209280 :             ho3(i,ks) = h3(i)*o3(i,ks)                                   
    2109             :          enddo
    2110             :       enddo
    2111             : 
    2112     1128960 :       do k=6,18                                                      
    2113     1048320 :          ks = k+8                                                     
    2114    16144128 :          do i=1,ncol                                               
    2115    15095808 :             h2(i) = (amat(k,1)+bmat(k,1)*fu(i,ks))*fu(i,1)               
    2116    16144128 :             h3(i) = ao3(k,1)*fo3(i,1)                                    
    2117             :          enddo
    2118     9434880 :          do jj=2,nrfmltelv
    2119     8386560 :             jjs = ks+ig(jj)                                              
    2120   130201344 :             do i=1,ncol                                               
    2121   120766464 :                h2(i) = h2(i)+(amat(k,jj)+bmat(k,jj)*fu(i,ks))*fu(i,jjs)     
    2122   129153024 :                h3(i) = h3(i)+ao3(k,jj)*fo3(i,jjs)                           
    2123             :             enddo
    2124             :          enddo
    2125    16224768 :          do  i=1,ncol                                            
    2126    15095808 :             hco2(i,ks) = h2(i)                                            
    2127    16144128 :             ho3(i,ks) = h3(i)*o3(i,ks)                                    
    2128             :          enddo
    2129             :       enddo
    2130             : 
    2131     1451520 :       do k=19,35                                                        
    2132     1370880 :          ks = k+8                                                        
    2133    21111552 :          do i=1,ncol                                                  
    2134    19740672 :             h2(i) = 0._r8                                                      
    2135    21111552 :             h3(i) = 0._r8                                                      
    2136             :          enddo
    2137    13708800 :          do  jj=1,nrfmltelv
    2138    12337920 :             jjs = ks+ig(jj)                                                 
    2139   191374848 :             do  i=1,ncol                                                 
    2140   177666048 :                h2(i) = h2(i)+(amat(k,jj)+bmat(k,jj)*fu(i,ks))*fu(i,jjs)        
    2141   190003968 :                h3(i) = h3(i)+ao3(k,jj)*fo3(i,jjs)                              
    2142             :             enddo
    2143             :          enddo
    2144    21192192 :          do  i=1,ncol                                                  
    2145    19740672 :             hco2(i,ks) = h2(i)                                               
    2146    21111552 :             ho3(i,ks) = h3(i)*o3(i,ks)                                       
    2147             :          enddo
    2148             :       enddo
    2149             : 
    2150             : !                                                                         
    2151             : !     **** COOLING RATE IN CO2 BANDS (X=10.75-12.5, MATRIX APPROACH)      
    2152             : !                                                                         
    2153      725760 :       do k=36,43 
    2154             :                                                   
    2155      645120 :          ks = k+8                                                        
    2156             : 
    2157     9934848 :          do  i=1,ncol                                                 
    2158     9934848 :             h2(i) = 0._r8                                                      
    2159             :          enddo
    2160             : 
    2161     6451200 :          do  jj=1,nrfmltelv
    2162     5806080 :             jjs = ks+ig(jj)
    2163    90058752 :             do i=1,ncol                                                 
    2164    89413632 :                h2(i) = h2(i) + ( amat(k,jj) + bmat(k,jj)*fu(i,ks) ) * fu(i,jjs)
    2165             :             enddo
    2166             :          enddo
    2167             : 
    2168    10015488 :          do  i=1,ncol
    2169     9289728 :             hco2(i,ks) = h2(i)
    2170     9934848 :             ho3(i,ks) = 0._r8
    2171             :          enddo
    2172             : 
    2173             :       enddo
    2174             : 
    2175             : 
    2176             : !     Define boundary condition at XR=12.5 for recurrence formula
    2177     5483520 :       do k=1,nrfm
    2178     5483520 :          if (xr(k).eq.12.5_r8) then
    2179     1241856 :             do i=1,ncol
    2180     1241856 :                h1(i)=hco2(i,k)/(co2(i,k)*(1._r8-alam(i,k))*constb)
    2181             :             enddo
    2182             :          endif
    2183             :       enddo
    2184             : 
    2185             : 
    2186             : !     Do the rest of the XR domain 
    2187             : !     (transition region 12.75 <= p.s.h. <= 16.5)
    2188     5483520 :       do k=1,nrfm
    2189             : 
    2190     5483520 :          if (xr(k).ge.12.75_r8 .and. xr(k).le.16.5_r8) then
    2191             : 
    2192    19869696 :             do i=1,ncol
    2193             : 
    2194    18579456 :                h2(i)  = ( aajm(i,k)*h1(i) + djm(i,k)*fu(i,k-1)    &
    2195    18579456 :                     - dj0(i,k)*fu(i,k) ) / aaj0(i,k)
    2196             : 
    2197    18579456 :                hco2(i,k) = h2(i)*co2(i,k)*(1._r8-alam(i,k))/am(i,k)*const
    2198    18579456 :                ho3(i,k)  = 0._r8
    2199             : 
    2200    19869696 :                h1(i)     = h2(i)
    2201             : 
    2202             :             enddo               ! next longitude
    2203             :             
    2204     1290240 :             if (xr(k).eq.16.5_r8) then
    2205             : 
    2206             : !     Calculate FLUX at the top of the transition region (XR=16.5)
    2207     1241856 :                do  i=1,ncol
    2208     1241856 :                   flux(i) = h2(i) + fu(i,nrfm)
    2209             :                enddo
    2210             : 
    2211             :                
    2212             :             endif
    2213             : 
    2214             :          endif
    2215             : 
    2216             :       enddo                     ! next NLTE level
    2217             : 
    2218             : 
    2219       80640 :       return
    2220             :   end subroutine viccooln
    2221             : 
    2222             : !============================================================================================
    2223             : 
    2224       80640 :       subroutine cool2space (ncol,t,mwair,vn2,vo2,vo,vco2,ndenair,xnorm,flux,hc2s)
    2225             : 
    2226             : !
    2227             : !     Adapted from Ray Roble's model by F. Sassi (Nov. 1999)
    2228             : !     
    2229             : !     Performs cool-to-space cooling calculations
    2230             : !     This mod operates on the same vertical grid of the GCM
    2231             : !
    2232             : !-----------------------------------------------------------------
    2233             : implicit none
    2234             : !-----------------------------------------------------------------
    2235             : 
    2236             : 
    2237             : !     Input variables
    2238             :       integer, intent(in) :: ncol                          ! number of atmospheric columns
    2239             : 
    2240             :       real(r8), intent(in) :: t(pcols,pver)                       ! neutral temperature
    2241             :       real(r8), intent(in) :: vn2(pcols,pver)                     ! N2 vmr
    2242             :       real(r8), intent(in) :: vo2(pcols,pver)                     ! O2 vmr
    2243             :       real(r8), intent(in) :: vco2(pcols,pver)                    ! CO2 vmr
    2244             :       real(r8), intent(in) :: vo(pcols,pver)                      ! O vmr
    2245             :       real(r8), intent(in) :: ndenair(pcols,pver)                 ! mean air no. density
    2246             :       real(r8), intent(in) :: mwair(pcols,pver)                   ! mean air molecular weight
    2247             :       real(r8), intent(in) :: flux(pcols)                         ! Radiative flux at the top of the NLTE region
    2248             :       real(r8), intent(in) :: xnorm(pcols,pver)                        ! p.s.h.
    2249             : 
    2250             : !     Output  variables
    2251             :       real(r8), intent(out) :: hc2s(pcols,pver)                   ! cool-to-space cooling
    2252             : 
    2253             : !     Local variables
    2254             :       real(r8) tt
    2255             :       real(r8) y
    2256             :       real(r8) zn2
    2257             :       real(r8) zo2
    2258             :       real(r8) zz
    2259             :       real(r8) alam
    2260             :       real(r8) rko
    2261             : 
    2262             :       integer k
    2263             :       integer i      
    2264             : 
    2265             : !     ****                                        
    2266             : !     ****   CO2 COOL-TO-SPACE APPROXIMATION      
    2267             : !     **** 
    2268             : 
    2269             : 
    2270    87010560 :       hc2s(1:ncol,1:pver)=0.0_r8
    2271     5725440 :       do k = 1,pver
    2272             : 
    2273    87010560 :          do i=1,ncol
    2274             : 
    2275    86929920 :             if (xnorm(i,k) .gt. 16.5_r8) then
    2276             : 
    2277     5806080 :                tt     = t(i,k)                                        
    2278     5806080 :                y      = tt**(-1._r8/3._r8)                                  
    2279     5806080 :                zn2    = 5.5e-17_r8*sqrt(tt) + 6.7e-10_r8 * exp(-83.8_r8*y)    
    2280     5806080 :                zo2    = 1.0e-15_r8*exp(23.37_r8 - 230.9_r8*y + 564._r8*y*y)
    2281     5806080 :                rko=3.0e-12_r8 
    2282             : 
    2283             : !     
    2284             : !     ****  COLLISIONAL DEACTIVATION RATE:                       
    2285             : !
    2286     5806080 :                zz     = (vn2(i,k)*zn2 + vo2(i,k)*zo2 + vo (i,k)*rko)*ndenair(i,k)
    2287             : 
    2288             : !                                                                
    2289             : !     ****                                                       
    2290             : !                                                                
    2291     5806080 :                alam   = a10/(a10+zz)
    2292             :                hc2s(i,k) = const/mwair(i,k)*vco2(i,k)*(1._r8-alam)      &
    2293     5806080 :                *(flux(i)-exp(-960.217_r8/tt))
    2294             : 
    2295             :             endif
    2296             :          
    2297             :          enddo                  ! end-loop in longitude
    2298             : 
    2299             :       enddo                     ! end-loop in levels
    2300             : 
    2301       80640 :       return
    2302             :  end subroutine cool2space
    2303             : 
    2304             : 
    2305             : !=====================================================================
    2306             : 
    2307             : 
    2308    59431680 : real(r8) function a18lin (x,xn,yn,m,n)
    2309             : 
    2310             : ! input:
    2311             : !  X - argument for which a value of function should be found
    2312             : !  XN(N),YN(N) - values of function YN(N) at XN(N) grid. X(N) should be
    2313             : !                ordered so that X(I-1) < X(I).
    2314             : ! output:
    2315             : !  A18LIN - value of function for X
    2316             : 
    2317             :       implicit none
    2318             : 
    2319             : !
    2320             : ! Args:
    2321             :       integer,intent(in) :: m,n
    2322             :       real(r8),intent(in) :: x
    2323             :       real(r8),intent(in) :: xn(n)
    2324             :       real(r8),intent(in) :: yn(n)
    2325             : !
    2326             : ! Local:
    2327             :       integer :: k,i
    2328             : 
    2329    59431680 :       k=m-1
    2330   118863360 :       the_loop: do i=m,n
    2331   118863360 :          k=k+1
    2332   118863360 :          if (x-xn(i).le.0._r8) exit the_loop
    2333             :       enddo the_loop
    2334    59431680 :       if(k.eq.1) k=2
    2335             : 
    2336             : ! k has been found so that xn(k).le.x.lt.xn(k+1)
    2337             : 
    2338    59431680 :       a18lin=(yn(k)-yn(k-1))/(xn(k)-xn(k-1))*(x-xn(k))+yn(k)
    2339             : 
    2340             :      return
    2341             : 
    2342             :    end function a18lin
    2343             : 
    2344             : !=============================================================================
    2345             : 
    2346             : 
    2347     2177280 :       subroutine a18int(x1,y1,x2,y2,n1,n2)
    2348             : 
    2349             : !
    2350             : ! third order spline interpolation
    2351             : ! input argument and function:  X1(1:N1),Y1(1:N1)
    2352             : ! output argument and function: X2(1:N2)X2(1:N2),Y2(1:N2)
    2353             : ! the necessary conditionts are: X1(I) < X1(I+1), and the same for X2 array.
    2354             : !
    2355             : 
    2356             :       implicit none
    2357             : !
    2358             : ! Args:
    2359             :       integer,  intent(in) :: n1
    2360             :       integer,  intent(in) :: n2
    2361             :       real(r8), intent(in) :: x1(n1)
    2362             :       real(r8), intent(in) :: y1(n1)
    2363             :       real(r8), intent(in) :: x2
    2364             :       real(r8), intent(out) :: y2
    2365             : !
    2366             : ! Local:
    2367             :       real(r8) :: a(150),e(150),f(150),h(150),h2,h1,f1,f2,f3,g
    2368             :       integer :: nvs,k,kr,l
    2369             : !
    2370     2177280 :       h2=x1(1)
    2371     2177280 :       nvs=n1-1
    2372     8709120 :       do 1 k=1,nvs
    2373     6531840 :       h1=h2
    2374     6531840 :       h2=x1(k+1)
    2375     6531840 :       h(k)=h2-h1
    2376     2177280 :     1 continue
    2377     2177280 :       a(1)=0._r8
    2378     2177280 :       a(n1)=0._r8
    2379     2177280 :       e(n1)=0._r8
    2380     2177280 :       f(n1)=0._r8
    2381     2177280 :       h1=h(n1-1)
    2382     2177280 :       f1=y1(n1-1)
    2383     2177280 :       f2=y1(n1)
    2384     6531840 :       do 2 kr=2,nvs
    2385     4354560 :       k=nvs+2-kr
    2386     4354560 :       h2=h1
    2387     4354560 :       h1=h(k-1)
    2388     4354560 :       f3=f2
    2389     4354560 :       f2=f1
    2390     4354560 :       f1=y1(k-1)
    2391     4354560 :       g=1._r8/(h2*e(k+1)+2._r8*(h1+h2))
    2392     4354560 :       e(k)=-h1*g
    2393     4354560 :       f(k)=(3._r8*((f3-f2)/h2-(f2-f1)/h1)-h2*f(k+1))*g
    2394     2177280 :     2 continue
    2395             :       g=0._r8
    2396     6531840 :       do 3 k=2,nvs
    2397     4354560 :       g=e(k)*g+f(k)
    2398     4354560 :       a(k)=g
    2399     2177280 :     3 continue
    2400     2177280 :       l=1
    2401             : !$$$      do 4 i=1,n2
    2402             : !$$$      g=x2(i)
    2403     2177280 :       g=x2
    2404     2177280 :       do 6 k=l,nvs
    2405     2177280 :       if(g.gt.x1(k+1)) goto 6
    2406             :       l=k
    2407           0 :       goto 5
    2408           0 :     6 continue
    2409             :       l=nvs
    2410     2177280 :     5 g=g-x1(l)
    2411     2177280 :       h2=h(l)
    2412     2177280 :       f2=y1(l)
    2413     2177280 :       f1=h2**2
    2414     2177280 :       f3=g**2
    2415     2177280 :       y2=f2+g/h2*(y1(l+1)-f2-(a(l+1)*(f1-f3)+         &
    2416     2177280 :                 a(l)*(2._r8*f1-3._r8*g*h2+f3))/3._r8)
    2417             : !$$$    4 continue
    2418     2177280 :       return
    2419             :    end  subroutine a18int
    2420             : 
    2421             : !==================================================================================================
    2422             : 
    2423       80640 :    subroutine nocooling(ncol,t,pmid,nommr,o1mmr,o2mmr,o3mmr,n2mmr,nocool)
    2424             : 
    2425             : !
    2426             : ! Calculate NO cooling (ref: Kockarts, GRL, vol. 7, pp 137-140, 1980)
    2427             : !
    2428             : 
    2429             :      integer, intent(in) :: ncol                  ! number of column in chunck
    2430             : 
    2431             :      real(r8), intent(in) :: t(pcols,pver)        ! neutral gas temperature (K)
    2432             :      real(r8), intent(in) :: pmid(pcols,pver)     ! model pressure at midpoints (Pa)
    2433             :      real(r8), intent(in) :: nommr(pcols,pver)    ! NO (in mmr)
    2434             :      real(r8), intent(in) :: o1mmr(pcols,pver)    ! O (in mmr)
    2435             :      real(r8), intent(in) :: o2mmr(pcols,pver)    ! O2 (in mmr)
    2436             :      real(r8), intent(in) :: o3mmr(pcols,pver)    ! O3 (in mmr)
    2437             :      real(r8), intent(in) :: n2mmr(pcols,pver)    ! N2 (in mmr)
    2438             : 
    2439             :      real(r8), intent(out) :: nocool(pcols,pver)  ! NO-cooling (K/S)
    2440             : 
    2441             : ! Local space
    2442             :      real(r8) :: mwair(pcols,pver)                ! mean molecular weight
    2443             :      real(r8) :: pres_cgs(pcols,pver)             ! pressure in cgs units
    2444             :      real(r8) :: nair(pcols,pver)                 ! mean air number density (molecules/cm3)
    2445             :      real(r8) :: o1vmr(pcols,pver)                ! O (vmr)
    2446             :      real(r8) :: o2vmr(pcols,pver)                ! O2 (vmr)
    2447             :      real(r8) :: no_conc                          ! NO concentration divided by mean air density
    2448             :      real(r8) :: no_deact                         ! effective NO deactivation rate multiplied by air concentration
    2449             : 
    2450             :      ! Hwang et al., "Vibrational relaxation of NO(v=1) by oxygen atoms between 295 and 825 K"
    2451             :      ! JGR, Vol. 108, No. A3, 1109, doi:10.1029/2002JA009688, 2003
    2452             :      real(r8), parameter :: o1_rate = 4.2e-11_r8     ! O1 reaction rate (cm3/sec)
    2453             :      real(r8), parameter :: o2_rate = 2.4e-14_r8     ! O2 reaction rate (cm3/sec)
    2454             :      real(r8), parameter :: phot_e  = 3.726e-13_r8   ! photon energy at 5.3 mum (erg)
    2455             :      real(r8), parameter :: trans_prob = 13.3_r8     ! Einstein transition probability
    2456             : 
    2457             :      integer :: i,k
    2458             : !---------------------------------------------------------------------------------
    2459             : 
    2460             : ! Calculate mean air molecular weight
    2461     5725440 :      do k=1, pver
    2462    87010560 :         do i=1, ncol
    2463   162570240 :            mwair(i,k) = 1._r8 /                                                                 &
    2464   249500160 :                 (o2mmr(i,k) /o2_mw + (o1mmr(i,k)+o3mmr(i,k))/o1_mw + n2mmr(i,k)/n2_mw)
    2465             :         end do
    2466             :      end do
    2467             : 
    2468     5725440 :      do k=1,pver
    2469    87010560 :         do i=1,ncol
    2470             : ! convert mmr to vmr
    2471    81285120 :            o1vmr(i,k) = o1mmr(i,k) * mwair(i,k) / o1_mw
    2472    81285120 :            o2vmr(i,k) = o2mmr(i,k) * mwair(i,k) / o2_mw
    2473             : ! Convert pressure to cgs units
    2474    81285120 :            pres_cgs(i,k) = pmid(i,k) * 10._r8
    2475             : ! calculate mean air number density
    2476    86929920 :            nair(i,k) = anav * pres_cgs(i,k) / (ur*t(i,k)) 
    2477             :         end do
    2478             :      end do
    2479             : 
    2480             : !----------------------------------------------------------------------------------
    2481             : ! NO cooling
    2482             : !----------------------------------------------------------------------------------
    2483     5725440 :      do k=1,pver
    2484    87010560 :         do i=1,ncol
    2485             : !----------------------------------------------------------------------------------
    2486             : ! calcualte effective NO deactivation rate times mean air concentration
    2487             : !----------------------------------------------------------------------------------
    2488    81285120 :            no_deact =  nair(i,k) * (o1_rate * o1vmr(i,k) + o2_rate * o2vmr(i,k) )
    2489             : !----------------------------------------------------------------------------------
    2490             : ! calculate NO concentration:
    2491             : !
    2492             : !                                   Na
    2493             : !                n(NO) = mmr(NO) * ------ * rho(air)
    2494             : !                                   M(NO)
    2495             : !
    2496             : ! where M(NO) is NO molecular weight and rho(air) is mean air density.
    2497             : ! However, in order to produce a heating in energy per unit mass, we need
    2498             : ! to divide by rho(air) at the end. Therefore, rho(air) IS NOT INCLUDED IN
    2499             : ! THE CALCULATION OF n(NO).
    2500             : !----------------------------------------------------------------------------------
    2501    81285120 :            no_conc = anav * nommr(i,k) / no_mw 
    2502             : !----------------------------------------------------------------------------------
    2503             : ! Heating calculation. It produces a heating in erg/g/s.
    2504             : ! convert to J/kg/s
    2505             : !----------------------------------------------------------------------------------
    2506             :            nocool(i,k) = -1.e-4_r8 * phot_e * trans_prob * no_conc &
    2507    86929920 :                                   * (no_deact / (no_deact + trans_prob)) * exp(-2700._r8/t(i,k))
    2508             :         enddo
    2509             :      enddo
    2510             :      
    2511             : 
    2512             : !
    2513       80640 :    end subroutine nocooling
    2514             : 
    2515             : !==================================================================================================
    2516             : 
    2517       80640 :    subroutine o3pcooling( ncol, t, o1mmr, o3pcool )
    2518             :      !
    2519             :      ! Adapted from TIE-GCM 
    2520             :      ! Original equation is from Bates [1951]
    2521             :      ! Masking factors are from Kockarts and Peetermans [1981]
    2522             :      !
    2523             :      
    2524             :      integer, intent(in) :: ncol                  ! number of column in chunck
    2525             : 
    2526             :      real(r8), intent(in) :: t(pcols,pver)        ! neutral gas temperature (K)
    2527             :      real(r8), intent(in) :: o1mmr(pcols,pver)    ! O (in mmr)
    2528             : 
    2529             :      real(r8), intent(out) :: o3pcool(pcols,pver)  ! O(3p)-cooling (K/S)
    2530             : 
    2531             :      ! Local space
    2532             : 
    2533             :      integer  :: i,k
    2534      161280 :      real(r8) :: invtemp(ncol,pver)
    2535      161280 :      real(r8) :: work1(ncol,pver)             
    2536      161280 :      real(r8) :: work2(ncol,pver)            
    2537             :      real(r8) :: anavfac
    2538             : 
    2539             :      real(r8),parameter :: &
    2540             :           an(3) = (/0.835E-18_r8, 0.6_r8, 0.2_r8/), &  
    2541             :           bn(3) = (/228._r8,228._r8,325._r8/)      ! coefficients in Bates equation
    2542             : 
    2543    87010560 :      invtemp(:ncol,:) = 1.0_r8/t(:ncol,:)
    2544       80640 :      anavfac = anav/o1_mw
    2545             : 
    2546     5725440 :      do k=1,pver
    2547    87010560 :         do i=1,ncol
    2548    81285120 :            work1(i,k) = an(1)*o3pxfac(k)*anavfac
    2549    81285120 :            work1(i,k) = work1(i,k)*o1mmr(i,k)*exp(-bn(1)*invtemp(i,k))
    2550             :            work2(i,k) = 1._r8 + an(2)*exp(-bn(2)*invtemp(i,k)) &
    2551    81285120 :                               + an(3)*exp(-bn(3)*invtemp(i,k))
    2552    81285120 :            o3pcool(i,k) = -work1(i,k)/work2(i,k)   ! erg/g/s
    2553    86929920 :            o3pcool(i,k) = o3pcool(i,k) * 1E-04_r8  ! convert units from erg/g/s to J/kg/s
    2554             :         enddo
    2555             :      enddo
    2556             : 
    2557       80640 :    end subroutine o3pcooling
    2558             : 
    2559             : end module nlte_fomichev

Generated by: LCOV version 1.14