Radiation Scheme in CCPP
radsw_main.f File Reference

Go to the source code of this file.

Modules

module  module_radsw_main
 This module includes ncep's modifications of the rrtm-sw radiation code from aer inc.
 

Functions/Subroutines

subroutine, public module_radsw_main::rswinit
 This subroutine initializes non-varying module variables, conversion factors, and look-up tables. More...
 
subroutine module_radsw_main::cldprop
 This subroutine computes the cloud optical properties for each cloudy layer and g-point interval. More...
 
subroutine module_radsw_main::mcica_subcol
 This subroutine computes the sub-colum cloud profile flag array. More...
 
subroutine module_radsw_main::setcoef
 This subroutine computes various coefficients needed in radiative transfer calculation. More...
 
subroutine module_radsw_main::spcvrtc
 This subroutine computes the shortwave radiative fluxes using two-stream method. More...
 
subroutine module_radsw_main::spcvrtm
 This subroutine computes the shortwave radiative fluxes using two-stream method of h. barder and mcica,the monte-carlo independent column approximation, for the representation of sub-grid cloud variability (i.e. cloud overlap). More...
 
subroutine module_radsw_main::swflux
 This subroutine computes the upward and downward radiation fluxes. More...
 
subroutine module_radsw_main::taumol
 
subroutine taumol16
 The subroutine computes the optical depth in band 16: 2600-3250 cm-1 (low - h2o,ch4; high - ch4) More...
 
subroutine taumol17
 The subroutine computes the optical depth in band 17: 3250-4000 cm-1 (low - h2o,co2; high - h2o,co2) More...
 
subroutine taumol18
 The subroutine computes the optical depth in band 18: 4000-4650 cm-1 (low - h2o,ch4; high - ch4) More...
 
subroutine taumol19
 The subroutine computes the optical depth in band 19: 4650-5150 cm-1 (low - h2o,co2; high - co2) More...
 
subroutine taumol20
 The subroutine computes the optical depth in band 20: 5150-6150 cm-1 (low - h2o; high - h2o) More...
 
subroutine taumol21
 The subroutine computes the optical depth in band 21: 6150-7700 cm-1 (low - h2o,co2; high - h2o,co2) More...
 
subroutine taumol22
 The subroutine computes the optical depth in band 22: 7700-8050 cm-1 (low - h2o,o2; high - o2) More...
 
subroutine taumol23
 The subroutine computes the optical depth in band 23: 8050-12850 cm-1 (low - h2o; high - nothing) More...
 
subroutine taumol24
 The subroutine computes the optical depth in band 24: 12850-16000 cm-1 (low - h2o,o2; high - o2) More...
 
subroutine taumol25
 The subroutine computes the optical depth in band 25: 16000-22650 cm-1 (low - h2o; high - nothing) More...
 
subroutine taumol26
 The subroutine computes the optical depth in band 26: 22650-29000 cm-1 (low - nothing; high - nothing) More...
 
subroutine taumol27
 The subroutine computes the optical depth in band 27: 29000-38000 cm-1 (low - o3; high - o3) More...
 
subroutine taumol28
 The subroutine computes the optical depth in band 28: 38000-50000 cm-1 (low - o3,o2; high - o3,o2) More...
 
subroutine taumol29
 The subroutine computes the optical depth in band 29: 820-2600 cm-1 (low - h2o; high - co2) More...
 
subroutine, public module_radsw_main::swrad
 This subroutine is the main sw radiation routine. More...
 

Variables

character(40), parameter module_radsw_main::vtagsw ='NCEP SW v5.1 Nov 2012 -RRTMG-SW v3.8 '
 
real(kind=kind_phys), parameter module_radsw_main::eps = 1.0e-6
 
real(kind=kind_phys), parameter module_radsw_main::oneminus = 1.0 - eps
 
real(kind=kind_phys), parameter module_radsw_main::bpade = 1.0/0.278
 
real(kind=kind_phys), parameter module_radsw_main::stpfac = 296.0/1013.0
 
real(kind=kind_phys), parameter module_radsw_main::ftiny = 1.0e-12
 
real(kind=kind_phys), parameter module_radsw_main::s0 = 1368.22
 
real(kind=kind_phys), parameter module_radsw_main::f_zero = 0.0
 
real(kind=kind_phys), parameter module_radsw_main::f_one = 1.0
 
real(kind=kind_phys), parameter module_radsw_main::amdw = con_amd/con_amw
 
real(kind=kind_phys), parameter module_radsw_main::amdo3 = con_amd/con_amo3
 
integer, dimension(nblow:nbhgh) module_radsw_main::nspa
 
integer, dimension(nblow:nbhgh) module_radsw_main::nspb
 
integer, dimension(nblow:nbhgh) module_radsw_main::idxebc
 
integer, dimension(nblow:nbhgh) module_radsw_main::idxsfc
 
integer, parameter module_radsw_main::nuvb = 27
 
logical module_radsw_main::lhswb = .false.
 
logical module_radsw_main::lhsw0 = .false.
 
logical module_radsw_main::lflxprf = .false.
 
logical module_radsw_main::lfdncmp = .false.
 
real(kind=kind_phys), dimension(0:ntbmx) module_radsw_main::exp_tbl
 
real(kind=kind_phys) module_radsw_main::heatfac
 
integer, parameter module_radsw_main::ipsdsw0 = 1
 

Function/Subroutine Documentation

subroutine taumol::taumol16 ( )
private

Definition at line 3836 of file radsw_main.f.

References module_radsw_kgb16::absa, module_radsw_kgb16::absb, module_radsw_main::f_one, module_radsw_kgb16::forref, module_radsw_parameters::ng16, module_radsw_parameters::ns16, module_radsw_main::oneminus, module_radsw_kgb16::rayl, module_radsw_kgb16::selfref, and module_radsw_sflux::strrat.

Referenced by module_radsw_main::taumol().

3836 !...................................
3837 
3838 ! ------------------------------------------------------------------ !
3839 ! band 16: 2600-3250 cm-1 (low - h2o,ch4; high - ch4) !
3840 ! ------------------------------------------------------------------ !
3841 !
3842  use module_radsw_kgb16
3843 
3844 ! --- locals:
3845 
3846  real (kind=kind_phys) :: speccomb, specmult, tauray, fs, fs1, &
3847  & fac000,fac001,fac010,fac011, fac100,fac101,fac110,fac111
3848 
3849  integer :: ind01, ind02, ind03, ind04, ind11, ind12, ind13, ind14
3850  integer :: inds, indf, indsp, indfp, j, js, k
3851 
3852 !
3853 !===> ... begin here
3854 !
3855 
3856 ! --- ... compute the optical depth by interpolating in ln(pressure),
3857 ! temperature, and appropriate species. below laytrop, the water
3858 ! vapor self-continuum is interpolated (in temperature) separately.
3859 
3860  do k = 1, nlay
3861  tauray = colmol(k) * rayl
3862 
3863  do j = 1, ng16
3864  taur(k,ns16+j) = tauray
3865  enddo
3866  enddo
3867 
3868  do k = 1, laytrop
3869  speccomb = colamt(k,1) + strrat(16)*colamt(k,5)
3870  specmult = 8.0 * min( oneminus, colamt(k,1)/speccomb )
3871 
3872  js = 1 + int( specmult )
3873  fs = mod( specmult, f_one )
3874  fs1= f_one - fs
3875  fac000 = fs1 * fac00(k)
3876  fac010 = fs1 * fac10(k)
3877  fac100 = fs * fac00(k)
3878  fac110 = fs * fac10(k)
3879  fac001 = fs1 * fac01(k)
3880  fac011 = fs1 * fac11(k)
3881  fac101 = fs * fac01(k)
3882  fac111 = fs * fac11(k)
3883 
3884  ind01 = id0(k,16) + js
3885  ind02 = ind01 + 1
3886  ind03 = ind01 + 9
3887  ind04 = ind01 + 10
3888  ind11 = id1(k,16) + js
3889  ind12 = ind11 + 1
3890  ind13 = ind11 + 9
3891  ind14 = ind11 + 10
3892  inds = indself(k)
3893  indf = indfor(k)
3894  indsp= inds + 1
3895  indfp= indf + 1
3896 
3897  do j = 1, ng16
3898  taug(k,ns16+j) = speccomb &
3899  & *( fac000 * absa(ind01,j) + fac100 * absa(ind02,j) &
3900  & + fac010 * absa(ind03,j) + fac110 * absa(ind04,j) &
3901  & + fac001 * absa(ind11,j) + fac101 * absa(ind12,j) &
3902  & + fac011 * absa(ind13,j) + fac111 * absa(ind14,j) ) &
3903  & + colamt(k,1) * (selffac(k) * (selfref(inds,j) &
3904  & + selffrac(k) * (selfref(indsp,j)-selfref(inds,j))) &
3905  & + forfac(k) * (forref(indf,j) + forfrac(k) &
3906  & * (forref(indfp,j) - forref(indf,j))))
3907  enddo
3908  enddo
3909 
3910  do k = laytrop+1, nlay
3911  ind01 = id0(k,16) + 1
3912  ind02 = ind01 + 1
3913  ind11 = id1(k,16) + 1
3914  ind12 = ind11 + 1
3915 
3916  do j = 1, ng16
3917  taug(k,ns16+j) = colamt(k,5) &
3918  & * ( fac00(k)*absb(ind01,j) + fac10(k)*absb(ind02,j) &
3919  & + fac01(k)*absb(ind11,j) + fac11(k)*absb(ind12,j) )
3920  enddo
3921  enddo
3922 
3923  return
3924 !...................................
real(kind=kind_phys), dimension(ng01, mfr01), public forref
real(kind=kind_phys), dimension(ng01, msb01), public absb
real(kind=kind_phys), parameter, public rayl
real(kind=kind_phys), dimension(ng01, msf01), public selfref
This module sets up absorption coefficients for band 16: 2600-3250 cm-1 (low - h2o, ch4; high - ch4)
real(kind=kind_phys), dimension(ng01, msa01), public absa

Here is the caller graph for this function:

subroutine taumol::taumol17 ( )

Definition at line 3931 of file radsw_main.f.

References module_radsw_kgb17::absa, module_radsw_kgb17::absb, module_radsw_main::f_one, module_radsw_kgb17::forref, module_radsw_parameters::ng17, module_radsw_parameters::ns17, module_radsw_main::oneminus, module_radsw_kgb17::rayl, module_radsw_kgb17::selfref, and module_radsw_sflux::strrat.

Referenced by module_radsw_main::taumol().

3931 !...................................
3932 
3933 ! ------------------------------------------------------------------ !
3934 ! band 17: 3250-4000 cm-1 (low - h2o,co2; high - h2o,co2) !
3935 ! ------------------------------------------------------------------ !
3936 !
3937  use module_radsw_kgb17
3938 
3939 ! --- locals:
3940  real (kind=kind_phys) :: speccomb, specmult, tauray, fs, fs1, &
3941  & fac000,fac001,fac010,fac011, fac100,fac101,fac110,fac111
3942 
3943  integer :: ind01, ind02, ind03, ind04, ind11, ind12, ind13, ind14
3944  integer :: inds, indf, indsp, indfp, j, js, k
3945 
3946 !
3947 !===> ... begin here
3948 !
3949 
3950 ! --- ... compute the optical depth by interpolating in ln(pressure),
3951 ! temperature, and appropriate species. below laytrop, the water
3952 ! vapor self-continuum is interpolated (in temperature) separately.
3953 
3954  do k = 1, nlay
3955  tauray = colmol(k) * rayl
3956 
3957  do j = 1, ng17
3958  taur(k,ns17+j) = tauray
3959  enddo
3960  enddo
3961 
3962  do k = 1, laytrop
3963  speccomb = colamt(k,1) + strrat(17)*colamt(k,2)
3964  specmult = 8.0 * min(oneminus, colamt(k,1) / speccomb)
3965 
3966  js = 1 + int(specmult)
3967  fs = mod(specmult, f_one)
3968  fs1= f_one - fs
3969  fac000 = fs1 * fac00(k)
3970  fac010 = fs1 * fac10(k)
3971  fac100 = fs * fac00(k)
3972  fac110 = fs * fac10(k)
3973  fac001 = fs1 * fac01(k)
3974  fac011 = fs1 * fac11(k)
3975  fac101 = fs * fac01(k)
3976  fac111 = fs * fac11(k)
3977 
3978  ind01 = id0(k,17) + js
3979  ind02 = ind01 + 1
3980  ind03 = ind01 + 9
3981  ind04 = ind01 + 10
3982  ind11 = id1(k,17) + js
3983  ind12 = ind11 + 1
3984  ind13 = ind11 + 9
3985  ind14 = ind11 + 10
3986 
3987  inds = indself(k)
3988  indf = indfor(k)
3989  indsp= inds + 1
3990  indfp= indf + 1
3991 
3992  do j = 1, ng17
3993  taug(k,ns17+j) = speccomb &
3994  & * ( fac000 * absa(ind01,j) + fac100 * absa(ind02,j) &
3995  & + fac010 * absa(ind03,j) + fac110 * absa(ind04,j) &
3996  & + fac001 * absa(ind11,j) + fac101 * absa(ind12,j) &
3997  & + fac011 * absa(ind13,j) + fac111 * absa(ind14,j) ) &
3998  & + colamt(k,1) * (selffac(k) * (selfref(inds,j) &
3999  & + selffrac(k) * (selfref(indsp,j)-selfref(inds,j))) &
4000  & + forfac(k) * (forref(indf,j) + forfrac(k) &
4001  & * (forref(indfp,j) - forref(indf,j))))
4002  enddo
4003  enddo
4004 
4005  do k = laytrop+1, nlay
4006  speccomb = colamt(k,1) + strrat(17)*colamt(k,2)
4007  specmult = 4.0 * min(oneminus, colamt(k,1) / speccomb)
4008 
4009  js = 1 + int(specmult)
4010  fs = mod(specmult, f_one)
4011  fs1= f_one - fs
4012  fac000 = fs1 * fac00(k)
4013  fac010 = fs1 * fac10(k)
4014  fac100 = fs * fac00(k)
4015  fac110 = fs * fac10(k)
4016  fac001 = fs1 * fac01(k)
4017  fac011 = fs1 * fac11(k)
4018  fac101 = fs * fac01(k)
4019  fac111 = fs * fac11(k)
4020 
4021  ind01 = id0(k,17) + js
4022  ind02 = ind01 + 1
4023  ind03 = ind01 + 5
4024  ind04 = ind01 + 6
4025  ind11 = id1(k,17) + js
4026  ind12 = ind11 + 1
4027  ind13 = ind11 + 5
4028  ind14 = ind11 + 6
4029 
4030  indf = indfor(k)
4031  indfp= indf + 1
4032 
4033  do j = 1, ng17
4034  taug(k,ns17+j) = speccomb &
4035  & * ( fac000 * absb(ind01,j) + fac100 * absb(ind02,j) &
4036  & + fac010 * absb(ind03,j) + fac110 * absb(ind04,j) &
4037  & + fac001 * absb(ind11,j) + fac101 * absb(ind12,j) &
4038  & + fac011 * absb(ind13,j) + fac111 * absb(ind14,j) ) &
4039  & + colamt(k,1) * forfac(k) * (forref(indf,j) &
4040  & + forfrac(k) * (forref(indfp,j) - forref(indf,j)))
4041  enddo
4042  enddo
4043 
4044  return
4045 !...................................
real(kind=kind_phys), dimension(ng01, mfr01), public forref
real(kind=kind_phys), dimension(ng01, msb01), public absb
real(kind=kind_phys), parameter, public rayl
real(kind=kind_phys), dimension(ng01, msf01), public selfref
This module sets up absorption coeffients for band 17: 3250-4000 cm-1 (low - h2o,co2; high - h2o...
real(kind=kind_phys), dimension(ng01, msa01), public absa

Here is the caller graph for this function:

subroutine taumol::taumol18 ( )

Definition at line 4052 of file radsw_main.f.

References module_radsw_kgb18::absa, module_radsw_kgb18::absb, module_radsw_main::f_one, module_radsw_kgb18::forref, module_radsw_parameters::ng18, module_radsw_parameters::ns18, module_radsw_main::oneminus, module_radsw_kgb18::rayl, module_radsw_kgb18::selfref, and module_radsw_sflux::strrat.

Referenced by module_radsw_main::taumol().

4052 !...................................
4053 
4054 ! ------------------------------------------------------------------ !
4055 ! band 18: 4000-4650 cm-1 (low - h2o,ch4; high - ch4) !
4056 ! ------------------------------------------------------------------ !
4057 !
4058  use module_radsw_kgb18
4059 
4060 ! --- locals:
4061  real (kind=kind_phys) :: speccomb, specmult, tauray, fs, fs1, &
4062  & fac000,fac001,fac010,fac011, fac100,fac101,fac110,fac111
4063 
4064  integer :: ind01, ind02, ind03, ind04, ind11, ind12, ind13, ind14
4065  integer :: inds, indf, indsp, indfp, j, js, k
4066 
4067 !
4068 !===> ... begin here
4069 !
4070 
4071 ! --- ... compute the optical depth by interpolating in ln(pressure),
4072 ! temperature, and appropriate species. below laytrop, the water
4073 ! vapor self-continuum is interpolated (in temperature) separately.
4074 
4075  do k = 1, nlay
4076  tauray = colmol(k) * rayl
4077 
4078  do j = 1, ng18
4079  taur(k,ns18+j) = tauray
4080  enddo
4081  enddo
4082 
4083  do k = 1, laytrop
4084  speccomb = colamt(k,1) + strrat(18)*colamt(k,5)
4085  specmult = 8.0 * min(oneminus, colamt(k,1) / speccomb)
4086 
4087  js = 1 + int(specmult)
4088  fs = mod(specmult, f_one)
4089  fs1= f_one - fs
4090  fac000 = fs1 * fac00(k)
4091  fac010 = fs1 * fac10(k)
4092  fac100 = fs * fac00(k)
4093  fac110 = fs * fac10(k)
4094  fac001 = fs1 * fac01(k)
4095  fac011 = fs1 * fac11(k)
4096  fac101 = fs * fac01(k)
4097  fac111 = fs * fac11(k)
4098 
4099  ind01 = id0(k,18) + js
4100  ind02 = ind01 + 1
4101  ind03 = ind01 + 9
4102  ind04 = ind01 + 10
4103  ind11 = id1(k,18) + js
4104  ind12 = ind11 + 1
4105  ind13 = ind11 + 9
4106  ind14 = ind11 + 10
4107 
4108  inds = indself(k)
4109  indf = indfor(k)
4110  indsp= inds + 1
4111  indfp= indf + 1
4112 
4113  do j = 1, ng18
4114  taug(k,ns18+j) = speccomb &
4115  & * ( fac000 * absa(ind01,j) + fac100 * absa(ind02,j) &
4116  & + fac010 * absa(ind03,j) + fac110 * absa(ind04,j) &
4117  & + fac001 * absa(ind11,j) + fac101 * absa(ind12,j) &
4118  & + fac011 * absa(ind13,j) + fac111 * absa(ind14,j) ) &
4119  & + colamt(k,1) * (selffac(k) * (selfref(inds,j) &
4120  & + selffrac(k) * (selfref(indsp,j)-selfref(inds,j))) &
4121  & + forfac(k) * (forref(indf,j) + forfrac(k) &
4122  & * (forref(indfp,j) - forref(indf,j))))
4123  enddo
4124  enddo
4125 
4126  do k = laytrop+1, nlay
4127  ind01 = id0(k,18) + 1
4128  ind02 = ind01 + 1
4129  ind11 = id1(k,18) + 1
4130  ind12 = ind11 + 1
4131 
4132  do j = 1, ng18
4133  taug(k,ns18+j) = colamt(k,5) &
4134  & * ( fac00(k)*absb(ind01,j) + fac10(k)*absb(ind02,j) &
4135  & + fac01(k)*absb(ind11,j) + fac11(k)*absb(ind12,j) )
4136  enddo
4137  enddo
4138 
4139  return
4140 !...................................
real(kind=kind_phys), dimension(ng01, mfr01), public forref
real(kind=kind_phys), dimension(ng01, msb01), public absb
This module sets up absorption coeffients for band 18: 4000-4650 cm-1 (low - h2o,ch4; high - ch4) ...
real(kind=kind_phys), parameter, public rayl
real(kind=kind_phys), dimension(ng01, msf01), public selfref
real(kind=kind_phys), dimension(ng01, msa01), public absa

Here is the caller graph for this function:

subroutine taumol::taumol19 ( )

Definition at line 4147 of file radsw_main.f.

References module_radsw_kgb19::absa, module_radsw_kgb19::absb, module_radsw_main::f_one, module_radsw_kgb19::forref, module_radsw_parameters::ng19, module_radsw_parameters::ns19, module_radsw_main::oneminus, module_radsw_kgb19::rayl, module_radsw_kgb19::selfref, and module_radsw_sflux::strrat.

Referenced by module_radsw_main::taumol().

4147 !...................................
4148 
4149 ! ------------------------------------------------------------------ !
4150 ! band 19: 4650-5150 cm-1 (low - h2o,co2; high - co2) !
4151 ! ------------------------------------------------------------------ !
4152 !
4153  use module_radsw_kgb19
4154 
4155 ! --- locals:
4156  real (kind=kind_phys) :: speccomb, specmult, tauray, fs, fs1, &
4157  & fac000,fac001,fac010,fac011, fac100,fac101,fac110,fac111
4158 
4159  integer :: ind01, ind02, ind03, ind04, ind11, ind12, ind13, ind14
4160  integer :: inds, indf, indsp, indfp, j, js, k
4161 
4162 !
4163 !===> ... begin here
4164 !
4165 
4166 ! --- ... compute the optical depth by interpolating in ln(pressure),
4167 ! temperature, and appropriate species. below laytrop, the water
4168 ! vapor self-continuum is interpolated (in temperature) separately.
4169 
4170  do k = 1, nlay
4171  tauray = colmol(k) * rayl
4172 
4173  do j = 1, ng19
4174  taur(k,ns19+j) = tauray
4175  enddo
4176  enddo
4177 
4178  do k = 1, laytrop
4179  speccomb = colamt(k,1) + strrat(19)*colamt(k,2)
4180  specmult = 8.0 * min(oneminus, colamt(k,1) / speccomb)
4181 
4182  js = 1 + int(specmult)
4183  fs = mod(specmult, f_one)
4184  fs1= f_one - fs
4185  fac000 = fs1 * fac00(k)
4186  fac010 = fs1 * fac10(k)
4187  fac100 = fs * fac00(k)
4188  fac110 = fs * fac10(k)
4189  fac001 = fs1 * fac01(k)
4190  fac011 = fs1 * fac11(k)
4191  fac101 = fs * fac01(k)
4192  fac111 = fs * fac11(k)
4193 
4194  ind01 = id0(k,19) + js
4195  ind02 = ind01 + 1
4196  ind03 = ind01 + 9
4197  ind04 = ind01 + 10
4198  ind11 = id1(k,19) + js
4199  ind12 = ind11 + 1
4200  ind13 = ind11 + 9
4201  ind14 = ind11 + 10
4202 
4203  inds = indself(k)
4204  indf = indfor(k)
4205  indsp= inds + 1
4206  indfp= indf + 1
4207 
4208  do j = 1, ng19
4209  taug(k,ns19+j) = speccomb &
4210  & * ( fac000 * absa(ind01,j) + fac100 * absa(ind02,j) &
4211  & + fac010 * absa(ind03,j) + fac110 * absa(ind04,j) &
4212  & + fac001 * absa(ind11,j) + fac101 * absa(ind12,j) &
4213  & + fac011 * absa(ind13,j) + fac111 * absa(ind14,j) ) &
4214  & + colamt(k,1) * (selffac(k) * (selfref(inds,j) &
4215  & + selffrac(k) * (selfref(indsp,j)-selfref(inds,j))) &
4216  & + forfac(k) * (forref(indf,j) + forfrac(k) &
4217  & * (forref(indfp,j) - forref(indf,j))))
4218  enddo
4219  enddo
4220 
4221  do k = laytrop+1, nlay
4222  ind01 = id0(k,19) + 1
4223  ind02 = ind01 + 1
4224  ind11 = id1(k,19) + 1
4225  ind12 = ind11 + 1
4226 
4227  do j = 1, ng19
4228  taug(k,ns19+j) = colamt(k,2) &
4229  & * ( fac00(k)*absb(ind01,j) + fac10(k)*absb(ind02,j) &
4230  & + fac01(k)*absb(ind11,j) + fac11(k)*absb(ind12,j) )
4231  enddo
4232  enddo
4233 
4234 !...................................
This module sets up absorption coeffients for band 19: 4650-5150 cm-1 (low - h2o,co2; high - co2) ...
real(kind=kind_phys), dimension(ng01, mfr01), public forref
real(kind=kind_phys), dimension(ng01, msb01), public absb
real(kind=kind_phys), parameter, public rayl
real(kind=kind_phys), dimension(ng01, msf01), public selfref
real(kind=kind_phys), dimension(ng01, msa01), public absa

Here is the caller graph for this function:

subroutine taumol::taumol20 ( )

Definition at line 4241 of file radsw_main.f.

References module_radsw_kgb20::absa, module_radsw_kgb20::absb, module_radsw_kgb20::absch4, module_radsw_kgb20::forref, module_radsw_parameters::ng20, module_radsw_parameters::ns20, module_radsw_kgb20::rayl, and module_radsw_kgb20::selfref.

Referenced by module_radsw_main::taumol().

4241 !...................................
4242 
4243 ! ------------------------------------------------------------------ !
4244 ! band 20: 5150-6150 cm-1 (low - h2o; high - h2o) !
4245 ! ------------------------------------------------------------------ !
4246 !
4247  use module_radsw_kgb20
4248 
4249 ! --- locals:
4250  real (kind=kind_phys) :: tauray
4251 
4252  integer :: ind01, ind02, ind11, ind12
4253  integer :: inds, indf, indsp, indfp, j, k
4254 
4255 !
4256 !===> ... begin here
4257 !
4258 
4259 ! --- ... compute the optical depth by interpolating in ln(pressure),
4260 ! temperature, and appropriate species. below laytrop, the water
4261 ! vapor self-continuum is interpolated (in temperature) separately.
4262 
4263  do k = 1, nlay
4264  tauray = colmol(k) * rayl
4265 
4266  do j = 1, ng20
4267  taur(k,ns20+j) = tauray
4268  enddo
4269  enddo
4270 
4271  do k = 1, laytrop
4272  ind01 = id0(k,20) + 1
4273  ind02 = ind01 + 1
4274  ind11 = id1(k,20) + 1
4275  ind12 = ind11 + 1
4276 
4277  inds = indself(k)
4278  indf = indfor(k)
4279  indsp= inds + 1
4280  indfp= indf + 1
4281 
4282  do j = 1, ng20
4283  taug(k,ns20+j) = colamt(k,1) &
4284  & * ( (fac00(k)*absa(ind01,j) + fac10(k)*absa(ind02,j) &
4285  & + fac01(k)*absa(ind11,j) + fac11(k)*absa(ind12,j)) &
4286  & + selffac(k) * (selfref(inds,j) + selffrac(k) &
4287  & * (selfref(indsp,j) - selfref(inds,j))) &
4288  & + forfac(k) * (forref(indf,j) + forfrac(k) &
4289  & * (forref(indfp,j) - forref(indf,j))) ) &
4290  & + colamt(k,5) * absch4(j)
4291  enddo
4292  enddo
4293 
4294  do k = laytrop+1, nlay
4295  ind01 = id0(k,20) + 1
4296  ind02 = ind01 + 1
4297  ind11 = id1(k,20) + 1
4298  ind12 = ind11 + 1
4299 
4300  indf = indfor(k)
4301  indfp= indf + 1
4302 
4303  do j = 1, ng20
4304  taug(k,ns20+j) = colamt(k,1) &
4305  & * ( fac00(k)*absb(ind01,j) + fac10(k)*absb(ind02,j) &
4306  & + fac01(k)*absb(ind11,j) + fac11(k)*absb(ind12,j) &
4307  & + forfac(k) * (forref(indf,j) + forfrac(k) &
4308  & * (forref(indfp,j) - forref(indf,j))) ) &
4309  & + colamt(k,5) * absch4(j)
4310  enddo
4311  enddo
4312 
4313  return
4314 !...................................
real(kind=kind_phys), dimension(ng01, mfr01), public forref
This module sets up absorption coeffients for band 20: 5150-6150 cm-1 (low - h2o; high - h2o) ...
real(kind=kind_phys), dimension(ng01, msb01), public absb
real(kind=kind_phys), parameter, public rayl
real(kind=kind_phys), dimension(ng20), public absch4
real(kind=kind_phys), dimension(ng01, msf01), public selfref
real(kind=kind_phys), dimension(ng01, msa01), public absa

Here is the caller graph for this function:

subroutine taumol::taumol21 ( )

Definition at line 4321 of file radsw_main.f.

References module_radsw_kgb21::absa, module_radsw_kgb21::absb, module_radsw_main::f_one, module_radsw_kgb21::forref, module_radsw_parameters::ng21, module_radsw_parameters::ns21, module_radsw_main::oneminus, module_radsw_kgb21::rayl, module_radsw_kgb21::selfref, and module_radsw_sflux::strrat.

Referenced by module_radsw_main::taumol().

4321 !...................................
4322 
4323 ! ------------------------------------------------------------------ !
4324 ! band 21: 6150-7700 cm-1 (low - h2o,co2; high - h2o,co2) !
4325 ! ------------------------------------------------------------------ !
4326 !
4327  use module_radsw_kgb21
4328 
4329 ! --- locals:
4330  real (kind=kind_phys) :: speccomb, specmult, tauray, fs, fs1, &
4331  & fac000,fac001,fac010,fac011, fac100,fac101,fac110,fac111
4332 
4333  integer :: ind01, ind02, ind03, ind04, ind11, ind12, ind13, ind14
4334  integer :: inds, indf, indsp, indfp, j, js, k
4335 
4336 !
4337 !===> ... begin here
4338 !
4339 
4340 ! --- ... compute the optical depth by interpolating in ln(pressure),
4341 ! temperature, and appropriate species. below laytrop, the water
4342 ! vapor self-continuum is interpolated (in temperature) separately.
4343 
4344  do k = 1, nlay
4345  tauray = colmol(k) * rayl
4346 
4347  do j = 1, ng21
4348  taur(k,ns21+j) = tauray
4349  enddo
4350  enddo
4351 
4352  do k = 1, laytrop
4353  speccomb = colamt(k,1) + strrat(21)*colamt(k,2)
4354  specmult = 8.0 * min(oneminus, colamt(k,1) / speccomb)
4355 
4356  js = 1 + int(specmult)
4357  fs = mod(specmult, f_one)
4358  fs1= f_one - fs
4359  fac000 = fs1 * fac00(k)
4360  fac010 = fs1 * fac10(k)
4361  fac100 = fs * fac00(k)
4362  fac110 = fs * fac10(k)
4363  fac001 = fs1 * fac01(k)
4364  fac011 = fs1 * fac11(k)
4365  fac101 = fs * fac01(k)
4366  fac111 = fs * fac11(k)
4367 
4368  ind01 = id0(k,21) + js
4369  ind02 = ind01 + 1
4370  ind03 = ind01 + 9
4371  ind04 = ind01 + 10
4372  ind11 = id1(k,21) + js
4373  ind12 = ind11 + 1
4374  ind13 = ind11 + 9
4375  ind14 = ind11 + 10
4376 
4377  inds = indself(k)
4378  indf = indfor(k)
4379  indsp= inds + 1
4380  indfp= indf + 1
4381 
4382  do j = 1, ng21
4383  taug(k,ns21+j) = speccomb &
4384  & * ( fac000 * absa(ind01,j) + fac100 * absa(ind02,j) &
4385  & + fac010 * absa(ind03,j) + fac110 * absa(ind04,j) &
4386  & + fac001 * absa(ind11,j) + fac101 * absa(ind12,j) &
4387  & + fac011 * absa(ind13,j) + fac111 * absa(ind14,j) ) &
4388  & + colamt(k,1) * (selffac(k) * (selfref(inds,j) &
4389  & + selffrac(k) * (selfref(indsp,j) - selfref(inds,j))) &
4390  & + forfac(k) * (forref(indf,j) + forfrac(k) &
4391  & * (forref(indfp,j) - forref(indf,j))))
4392  enddo
4393  enddo
4394 
4395  do k = laytrop+1, nlay
4396  speccomb = colamt(k,1) + strrat(21)*colamt(k,2)
4397  specmult = 4.0 * min(oneminus, colamt(k,1) / speccomb)
4398 
4399  js = 1 + int(specmult)
4400  fs = mod(specmult, f_one)
4401  fs1= f_one - fs
4402  fac000 = fs1 * fac00(k)
4403  fac010 = fs1 * fac10(k)
4404  fac100 = fs * fac00(k)
4405  fac110 = fs * fac10(k)
4406  fac001 = fs1 * fac01(k)
4407  fac011 = fs1 * fac11(k)
4408  fac101 = fs * fac01(k)
4409  fac111 = fs * fac11(k)
4410 
4411  ind01 = id0(k,21) + js
4412  ind02 = ind01 + 1
4413  ind03 = ind01 + 5
4414  ind04 = ind01 + 6
4415  ind11 = id1(k,21) + js
4416  ind12 = ind11 + 1
4417  ind13 = ind11 + 5
4418  ind14 = ind11 + 6
4419 
4420  indf = indfor(k)
4421  indfp= indf + 1
4422 
4423  do j = 1, ng21
4424  taug(k,ns21+j) = speccomb &
4425  & * ( fac000 * absb(ind01,j) + fac100 * absb(ind02,j) &
4426  & + fac010 * absb(ind03,j) + fac110 * absb(ind04,j) &
4427  & + fac001 * absb(ind11,j) + fac101 * absb(ind12,j) &
4428  & + fac011 * absb(ind13,j) + fac111 * absb(ind14,j) ) &
4429  & + colamt(k,1) * forfac(k) * (forref(indf,j) &
4430  & + forfrac(k) * (forref(indfp,j) - forref(indf,j)))
4431  enddo
4432  enddo
4433 
4434 !...................................
real(kind=kind_phys), dimension(ng01, mfr01), public forref
real(kind=kind_phys), dimension(ng01, msb01), public absb
real(kind=kind_phys), parameter, public rayl
real(kind=kind_phys), dimension(ng01, msf01), public selfref
This module sets up absorption coeffients for band 21: 6150-7700 cm-1 (low - h2o,co2; high - h2o...
real(kind=kind_phys), dimension(ng01, msa01), public absa

Here is the caller graph for this function:

subroutine taumol::taumol22 ( )

Definition at line 4441 of file radsw_main.f.

References module_radsw_kgb22::absa, module_radsw_kgb22::absb, module_radsw_main::f_one, module_radsw_kgb22::forref, module_radsw_parameters::ng22, module_radsw_parameters::ns22, module_radsw_main::oneminus, module_radsw_kgb22::rayl, module_radsw_kgb22::selfref, and module_radsw_sflux::strrat.

Referenced by module_radsw_main::taumol().

4441 !...................................
4442 
4443 ! ------------------------------------------------------------------ !
4444 ! band 22: 7700-8050 cm-1 (low - h2o,o2; high - o2) !
4445 ! ------------------------------------------------------------------ !
4446 !
4447  use module_radsw_kgb22
4448 
4449 ! --- locals:
4450  real (kind=kind_phys) :: speccomb, specmult, tauray, fs, fs1, &
4451  & fac000,fac001,fac010,fac011, fac100,fac101,fac110,fac111, &
4452  & o2adj, o2cont, o2tem
4453 
4454  integer :: ind01, ind02, ind03, ind04, ind11, ind12, ind13, ind14
4455  integer :: inds, indf, indsp, indfp, j, js, k
4456 
4457 !
4458 !===> ... begin here
4459 !
4460 ! --- ... the following factor is the ratio of total o2 band intensity (lines
4461 ! and mate continuum) to o2 band intensity (line only). it is needed
4462 ! to adjust the optical depths since the k's include only lines.
4463 
4464  o2adj = 1.6
4465  o2tem = 4.35e-4 / (350.0*2.0)
4466 
4467 ! --- ... compute the optical depth by interpolating in ln(pressure),
4468 ! temperature, and appropriate species. below laytrop, the water
4469 ! vapor self-continuum is interpolated (in temperature) separately.
4470 
4471  do k = 1, nlay
4472  tauray = colmol(k) * rayl
4473 
4474  do j = 1, ng22
4475  taur(k,ns22+j) = tauray
4476  enddo
4477  enddo
4478 
4479  do k = 1, laytrop
4480  o2cont = o2tem * colamt(k,6)
4481  speccomb = colamt(k,1) + strrat(22)*colamt(k,6)
4482  specmult = 8.0 * min(oneminus, colamt(k,1) / speccomb)
4483 
4484  js = 1 + int(specmult)
4485  fs = mod(specmult, f_one)
4486  fs1= f_one - fs
4487  fac000 = fs1 * fac00(k)
4488  fac010 = fs1 * fac10(k)
4489  fac100 = fs * fac00(k)
4490  fac110 = fs * fac10(k)
4491  fac001 = fs1 * fac01(k)
4492  fac011 = fs1 * fac11(k)
4493  fac101 = fs * fac01(k)
4494  fac111 = fs * fac11(k)
4495 
4496  ind01 = id0(k,22) + js
4497  ind02 = ind01 + 1
4498  ind03 = ind01 + 9
4499  ind04 = ind01 + 10
4500  ind11 = id1(k,22) + js
4501  ind12 = ind11 + 1
4502  ind13 = ind11 + 9
4503  ind14 = ind11 + 10
4504 
4505  inds = indself(k)
4506  indf = indfor(k)
4507  indsp= inds + 1
4508  indfp= indf + 1
4509 
4510  do j = 1, ng22
4511  taug(k,ns22+j) = speccomb &
4512  & * ( fac000 * absa(ind01,j) + fac100 * absa(ind02,j) &
4513  & + fac010 * absa(ind03,j) + fac110 * absa(ind04,j) &
4514  & + fac001 * absa(ind11,j) + fac101 * absa(ind12,j) &
4515  & + fac011 * absa(ind13,j) + fac111 * absa(ind14,j) ) &
4516  & + colamt(k,1) * (selffac(k) * (selfref(inds,j) &
4517  & + selffrac(k) * (selfref(indsp,j)-selfref(inds,j))) &
4518  & + forfac(k) * (forref(indf,j) + forfrac(k) &
4519  & * (forref(indfp,j) - forref(indf,j)))) + o2cont
4520  enddo
4521  enddo
4522 
4523  do k = laytrop+1, nlay
4524  o2cont = o2tem * colamt(k,6)
4525 
4526  ind01 = id0(k,22) + 1
4527  ind02 = ind01 + 1
4528  ind11 = id1(k,22) + 1
4529  ind12 = ind11 + 1
4530 
4531  do j = 1, ng22
4532  taug(k,ns22+j) = colamt(k,6) * o2adj &
4533  & * ( fac00(k)*absb(ind01,j) + fac10(k)*absb(ind02,j) &
4534  & + fac01(k)*absb(ind11,j) + fac11(k)*absb(ind12,j) ) &
4535  & + o2cont
4536  enddo
4537  enddo
4538 
4539  return
4540 !...................................
real(kind=kind_phys), dimension(ng01, mfr01), public forref
real(kind=kind_phys), dimension(ng01, msb01), public absb
real(kind=kind_phys), parameter, public rayl
real(kind=kind_phys), dimension(ng01, msf01), public selfref
This module sets up absorption coeffients for band 22: 7700-8050 cm-1 (low - h2o, o2; high - o2) ...
real(kind=kind_phys), dimension(ng01, msa01), public absa

Here is the caller graph for this function:

subroutine taumol::taumol23 ( )

Definition at line 4547 of file radsw_main.f.

References module_radsw_kgb23::absa, module_radsw_main::f_zero, module_radsw_kgb23::forref, module_radsw_kgb23::givfac, module_radsw_parameters::ng23, module_radsw_parameters::ns23, module_radsw_kgb23::rayl, and module_radsw_kgb23::selfref.

Referenced by module_radsw_main::taumol().

4547 !...................................
4548 
4549 ! ------------------------------------------------------------------ !
4550 ! band 23: 8050-12850 cm-1 (low - h2o; high - nothing) !
4551 ! ------------------------------------------------------------------ !
4552 !
4553  use module_radsw_kgb23
4554 
4555 ! --- locals:
4556  integer :: ind01, ind02, ind11, ind12
4557  integer :: inds, indf, indsp, indfp, j, k
4558 
4559 !
4560 !===> ... begin here
4561 !
4562 
4563 ! --- ... compute the optical depth by interpolating in ln(pressure),
4564 ! temperature, and appropriate species. below laytrop, the water
4565 ! vapor self-continuum is interpolated (in temperature) separately.
4566 
4567  do k = 1, nlay
4568  do j = 1, ng23
4569  taur(k,ns23+j) = colmol(k) * rayl(j)
4570  enddo
4571  enddo
4572 
4573  do k = 1, laytrop
4574  ind01 = id0(k,23) + 1
4575  ind02 = ind01 + 1
4576  ind11 = id1(k,23) + 1
4577  ind12 = ind11 + 1
4578 
4579  inds = indself(k)
4580  indf = indfor(k)
4581  indsp= inds + 1
4582  indfp= indf + 1
4583 
4584  do j = 1, ng23
4585  taug(k,ns23+j) = colamt(k,1) * (givfac &
4586  & * ( fac00(k)*absa(ind01,j) + fac10(k)*absa(ind02,j) &
4587  & + fac01(k)*absa(ind11,j) + fac11(k)*absa(ind12,j) ) &
4588  & + selffac(k) * (selfref(inds,j) + selffrac(k) &
4589  & * (selfref(indsp,j) - selfref(inds,j))) &
4590  & + forfac(k) * (forref(indf,j) + forfrac(k) &
4591  & * (forref(indfp,j) - forref(indf,j))))
4592  enddo
4593  enddo
4594 
4595  do k = laytrop+1, nlay
4596  do j = 1, ng23
4597  taug(k,ns23+j) = f_zero
4598  enddo
4599  enddo
4600 
4601 !...................................
real(kind=kind_phys), dimension(ng01, mfr01), public forref
This module sets up absorption coeffients for band 23: 8050-12850 cm-1 (low - h2o; high - nothing) ...
real(kind=kind_phys), parameter, public rayl
real(kind=kind_phys), dimension(ng01, msf01), public selfref
real(kind=kind_phys), parameter, public givfac
real(kind=kind_phys), dimension(ng01, msa01), public absa

Here is the caller graph for this function:

subroutine taumol::taumol24 ( )

Definition at line 4608 of file radsw_main.f.

References module_radsw_kgb24::absa, module_radsw_kgb24::absb, module_radsw_kgb24::abso3a, module_radsw_kgb24::abso3b, module_radsw_main::f_one, module_radsw_kgb24::forref, module_radsw_parameters::ng24, module_radsw_parameters::ns24, module_radsw_main::oneminus, module_radsw_kgb24::rayla, module_radsw_kgb24::raylb, module_radsw_kgb24::selfref, and module_radsw_sflux::strrat.

Referenced by module_radsw_main::taumol().

4608 !...................................
4609 
4610 ! ------------------------------------------------------------------ !
4611 ! band 24: 12850-16000 cm-1 (low - h2o,o2; high - o2) !
4612 ! ------------------------------------------------------------------ !
4613 !
4614  use module_radsw_kgb24
4615 
4616 ! --- locals:
4617  real (kind=kind_phys) :: speccomb, specmult, fs, fs1, &
4618  & fac000,fac001,fac010,fac011, fac100,fac101,fac110,fac111
4619 
4620  integer :: ind01, ind02, ind03, ind04, ind11, ind12, ind13, ind14
4621  integer :: inds, indf, indsp, indfp, j, js, k
4622 
4623 !
4624 !===> ... begin here
4625 !
4626 
4627 ! --- ... compute the optical depth by interpolating in ln(pressure),
4628 ! temperature, and appropriate species. below laytrop, the water
4629 ! vapor self-continuum is interpolated (in temperature) separately.
4630 
4631  do k = 1, laytrop
4632  speccomb = colamt(k,1) + strrat(24)*colamt(k,6)
4633  specmult = 8.0 * min(oneminus, colamt(k,1) / speccomb)
4634 
4635  js = 1 + int(specmult)
4636  fs = mod(specmult, f_one)
4637  fs1= f_one - fs
4638  fac000 = fs1 * fac00(k)
4639  fac010 = fs1 * fac10(k)
4640  fac100 = fs * fac00(k)
4641  fac110 = fs * fac10(k)
4642  fac001 = fs1 * fac01(k)
4643  fac011 = fs1 * fac11(k)
4644  fac101 = fs * fac01(k)
4645  fac111 = fs * fac11(k)
4646 
4647  ind01 = id0(k,24) + js
4648  ind02 = ind01 + 1
4649  ind03 = ind01 + 9
4650  ind04 = ind01 + 10
4651  ind11 = id1(k,24) + js
4652  ind12 = ind11 + 1
4653  ind13 = ind11 + 9
4654  ind14 = ind11 + 10
4655 
4656  inds = indself(k)
4657  indf = indfor(k)
4658  indsp= inds + 1
4659  indfp= indf + 1
4660 
4661  do j = 1, ng24
4662  taug(k,ns24+j) = speccomb &
4663  & * ( fac000 * absa(ind01,j) + fac100 * absa(ind02,j) &
4664  & + fac010 * absa(ind03,j) + fac110 * absa(ind04,j) &
4665  & + fac001 * absa(ind11,j) + fac101 * absa(ind12,j) &
4666  & + fac011 * absa(ind13,j) + fac111 * absa(ind14,j) ) &
4667  & + colamt(k,3) * abso3a(j) + colamt(k,1) &
4668  & * (selffac(k) * (selfref(inds,j) + selffrac(k) &
4669  & * (selfref(indsp,j) - selfref(inds,j))) &
4670  & + forfac(k) * (forref(indf,j) + forfrac(k) &
4671  & * (forref(indfp,j) - forref(indf,j))))
4672 
4673  taur(k,ns24+j) = colmol(k) &
4674  & * (rayla(j,js) + fs*(rayla(j,js+1) - rayla(j,js)))
4675  enddo
4676  enddo
4677 
4678  do k = laytrop+1, nlay
4679  ind01 = id0(k,24) + 1
4680  ind02 = ind01 + 1
4681  ind11 = id1(k,24) + 1
4682  ind12 = ind11 + 1
4683 
4684  do j = 1, ng24
4685  taug(k,ns24+j) = colamt(k,6) &
4686  & * ( fac00(k)*absb(ind01,j) + fac10(k)*absb(ind02,j) &
4687  & + fac01(k)*absb(ind11,j) + fac11(k)*absb(ind12,j) ) &
4688  & + colamt(k,3) * abso3b(j)
4689 
4690  taur(k,ns24+j) = colmol(k) * raylb(j)
4691  enddo
4692  enddo
4693 
4694  return
4695 !...................................
This module sets up absorption coeffients for band 24: 12850-16000 cm-1 (low - h2o, o2; high - o2)
real(kind=kind_phys), dimension(ng01, mfr01), public forref
real(kind=kind_phys), dimension(ng24), public abso3a
real(kind=kind_phys), dimension(ng24, mfx24), public rayla
real(kind=kind_phys), dimension(ng24), public abso3b
real(kind=kind_phys), dimension(ng01, msb01), public absb
real(kind=kind_phys), dimension(ng24), public raylb
real(kind=kind_phys), dimension(ng01, msf01), public selfref
real(kind=kind_phys), dimension(ng01, msa01), public absa

Here is the caller graph for this function:

subroutine taumol::taumol25 ( )

Definition at line 4702 of file radsw_main.f.

References module_radsw_kgb25::absa, module_radsw_kgb25::abso3a, module_radsw_kgb25::abso3b, module_radsw_parameters::ng25, module_radsw_parameters::ns25, and module_radsw_kgb25::rayl.

Referenced by module_radsw_main::taumol().

4702 !...................................
4703 
4704 ! ------------------------------------------------------------------ !
4705 ! band 25: 16000-22650 cm-1 (low - h2o; high - nothing) !
4706 ! ------------------------------------------------------------------ !
4707 !
4708  use module_radsw_kgb25
4709 
4710 ! --- locals:
4711  integer :: ind01, ind02, ind11, ind12
4712  integer :: j, k
4713 
4714 !
4715 !===> ... begin here
4716 !
4717 
4718 ! --- ... compute the optical depth by interpolating in ln(pressure),
4719 ! temperature, and appropriate species. below laytrop, the water
4720 ! vapor self-continuum is interpolated (in temperature) separately.
4721 
4722  do k = 1, nlay
4723  do j = 1, ng25
4724  taur(k,ns25+j) = colmol(k) * rayl(j)
4725  enddo
4726  enddo
4727 
4728  do k = 1, laytrop
4729  ind01 = id0(k,25) + 1
4730  ind02 = ind01 + 1
4731  ind11 = id1(k,25) + 1
4732  ind12 = ind11 + 1
4733 
4734  do j = 1, ng25
4735  taug(k,ns25+j) = colamt(k,1) &
4736  & * ( fac00(k)*absa(ind01,j) + fac10(k)*absa(ind02,j) &
4737  & + fac01(k)*absa(ind11,j) + fac11(k)*absa(ind12,j) ) &
4738  & + colamt(k,3) * abso3a(j)
4739  enddo
4740  enddo
4741 
4742  do k = laytrop+1, nlay
4743  do j = 1, ng25
4744  taug(k,ns25+j) = colamt(k,3) * abso3b(j)
4745  enddo
4746  enddo
4747 
4748  return
4749 !...................................
real(kind=kind_phys), dimension(ng24), public abso3a
real(kind=kind_phys), dimension(ng24), public abso3b
real(kind=kind_phys), parameter, public rayl
This module sets up absorption coeffients for band 25: 16000-22650 cm-1 (low - h2o; high - nothing) ...
real(kind=kind_phys), dimension(ng01, msa01), public absa

Here is the caller graph for this function:

subroutine taumol::taumol26 ( )

Definition at line 4756 of file radsw_main.f.

References module_radsw_main::f_zero, module_radsw_parameters::ng26, module_radsw_parameters::ns26, and module_radsw_kgb26::rayl.

Referenced by module_radsw_main::taumol().

4756 !...................................
4757 
4758 ! ------------------------------------------------------------------ !
4759 ! band 26: 22650-29000 cm-1 (low - nothing; high - nothing) !
4760 ! ------------------------------------------------------------------ !
4761 !
4762  use module_radsw_kgb26
4763 
4764 ! --- locals:
4765  integer :: j, k
4766 
4767 !
4768 !===> ... begin here
4769 !
4770 
4771 ! --- ... compute the optical depth by interpolating in ln(pressure),
4772 ! temperature, and appropriate species. below laytrop, the water
4773 ! vapor self-continuum is interpolated (in temperature) separately.
4774 
4775  do k = 1, nlay
4776  do j = 1, ng26
4777  taug(k,ns26+j) = f_zero
4778  taur(k,ns26+j) = colmol(k) * rayl(j)
4779  enddo
4780  enddo
4781 
4782  return
4783 !...................................
real(kind=kind_phys), parameter, public rayl
This module sets up absorption coeffients for band 26: 22650-29000 cm-1 (low - nothing; high - nothin...

Here is the caller graph for this function:

subroutine taumol::taumol27 ( )

Definition at line 4790 of file radsw_main.f.

References module_radsw_kgb27::absa, module_radsw_kgb27::absb, module_radsw_parameters::ng27, module_radsw_parameters::ns27, and module_radsw_kgb27::rayl.

Referenced by module_radsw_main::taumol().

4790 !...................................
4791 
4792 ! ------------------------------------------------------------------ !
4793 ! band 27: 29000-38000 cm-1 (low - o3; high - o3) !
4794 ! ------------------------------------------------------------------ !
4795 !
4796  use module_radsw_kgb27
4797 !
4798 ! --- locals:
4799  integer :: ind01, ind02, ind11, ind12
4800  integer :: j, k
4801 
4802 !
4803 !===> ... begin here
4804 !
4805 
4806 ! --- ... compute the optical depth by interpolating in ln(pressure),
4807 ! temperature, and appropriate species. below laytrop, the water
4808 ! vapor self-continuum is interpolated (in temperature) separately.
4809 
4810  do k = 1, nlay
4811  do j = 1, ng27
4812  taur(k,ns27+j) = colmol(k) * rayl(j)
4813  enddo
4814  enddo
4815 
4816  do k = 1, laytrop
4817  ind01 = id0(k,27) + 1
4818  ind02 = ind01 + 1
4819  ind11 = id1(k,27) + 1
4820  ind12 = ind11 + 1
4821 
4822  do j = 1, ng27
4823  taug(k,ns27+j) = colamt(k,3) &
4824  & * ( fac00(k)*absa(ind01,j) + fac10(k)*absa(ind02,j) &
4825  & + fac01(k)*absa(ind11,j) + fac11(k)*absa(ind12,j) )
4826  enddo
4827  enddo
4828 
4829  do k = laytrop+1, nlay
4830  ind01 = id0(k,27) + 1
4831  ind02 = ind01 + 1
4832  ind11 = id1(k,27) + 1
4833  ind12 = ind11 + 1
4834 
4835  do j = 1, ng27
4836  taug(k,ns27+j) = colamt(k,3) &
4837  & * ( fac00(k)*absb(ind01,j) + fac10(k)*absb(ind02,j) &
4838  & + fac01(k)*absb(ind11,j) + fac11(k)*absb(ind12,j) )
4839  enddo
4840  enddo
4841 
4842  return
4843 !...................................
This module sets up absorption coeffients for band 27: 29000-38000 cm-1 (low - o3; high - o3) ...
real(kind=kind_phys), dimension(ng01, msb01), public absb
real(kind=kind_phys), parameter, public rayl
real(kind=kind_phys), dimension(ng01, msa01), public absa

Here is the caller graph for this function:

subroutine taumol::taumol28 ( )

Definition at line 4850 of file radsw_main.f.

References module_radsw_kgb28::absa, module_radsw_kgb28::absb, module_radsw_main::f_one, module_radsw_parameters::ng28, module_radsw_parameters::ns28, module_radsw_main::oneminus, module_radsw_kgb28::rayl, and module_radsw_sflux::strrat.

Referenced by module_radsw_main::taumol().

4850 !...................................
4851 
4852 ! ------------------------------------------------------------------ !
4853 ! band 28: 38000-50000 cm-1 (low - o3,o2; high - o3,o2) !
4854 ! ------------------------------------------------------------------ !
4855 !
4856  use module_radsw_kgb28
4857 
4858 ! --- locals:
4859  real (kind=kind_phys) :: speccomb, specmult, tauray, fs, fs1, &
4860  & fac000,fac001,fac010,fac011, fac100,fac101,fac110,fac111
4861 
4862  integer :: ind01, ind02, ind03, ind04, ind11, ind12, ind13, ind14
4863  integer :: j, js, k
4864 
4865 !
4866 !===> ... begin here
4867 !
4868 
4869 ! --- ... compute the optical depth by interpolating in ln(pressure),
4870 ! temperature, and appropriate species. below laytrop, the water
4871 ! vapor self-continuum is interpolated (in temperature) separately.
4872 
4873  do k = 1, nlay
4874  tauray = colmol(k) * rayl
4875 
4876  do j = 1, ng28
4877  taur(k,ns28+j) = tauray
4878  enddo
4879  enddo
4880 
4881  do k = 1, laytrop
4882  speccomb = colamt(k,3) + strrat(28)*colamt(k,6)
4883  specmult = 8.0 * min(oneminus, colamt(k,3) / speccomb)
4884 
4885  js = 1 + int(specmult)
4886  fs = mod(specmult, f_one)
4887  fs1= f_one - fs
4888  fac000 = fs1 * fac00(k)
4889  fac010 = fs1 * fac10(k)
4890  fac100 = fs * fac00(k)
4891  fac110 = fs * fac10(k)
4892  fac001 = fs1 * fac01(k)
4893  fac011 = fs1 * fac11(k)
4894  fac101 = fs * fac01(k)
4895  fac111 = fs * fac11(k)
4896 
4897  ind01 = id0(k,28) + js
4898  ind02 = ind01 + 1
4899  ind03 = ind01 + 9
4900  ind04 = ind01 + 10
4901  ind11 = id1(k,28) + js
4902  ind12 = ind11 + 1
4903  ind13 = ind11 + 9
4904  ind14 = ind11 + 10
4905 
4906  do j = 1, ng28
4907  taug(k,ns28+j) = speccomb &
4908  & * ( fac000 * absa(ind01,j) + fac100 * absa(ind02,j) &
4909  & + fac010 * absa(ind03,j) + fac110 * absa(ind04,j) &
4910  & + fac001 * absa(ind11,j) + fac101 * absa(ind12,j) &
4911  & + fac011 * absa(ind13,j) + fac111 * absa(ind14,j) )
4912  enddo
4913  enddo
4914 
4915  do k = laytrop+1, nlay
4916  speccomb = colamt(k,3) + strrat(28)*colamt(k,6)
4917  specmult = 4.0 * min(oneminus, colamt(k,3) / speccomb)
4918 
4919  js = 1 + int(specmult)
4920  fs = mod(specmult, f_one)
4921  fs1= f_one - fs
4922  fac000 = fs1 * fac00(k)
4923  fac010 = fs1 * fac10(k)
4924  fac100 = fs * fac00(k)
4925  fac110 = fs * fac10(k)
4926  fac001 = fs1 * fac01(k)
4927  fac011 = fs1 * fac11(k)
4928  fac101 = fs * fac01(k)
4929  fac111 = fs * fac11(k)
4930 
4931  ind01 = id0(k,28) + js
4932  ind02 = ind01 + 1
4933  ind03 = ind01 + 5
4934  ind04 = ind01 + 6
4935  ind11 = id1(k,28) + js
4936  ind12 = ind11 + 1
4937  ind13 = ind11 + 5
4938  ind14 = ind11 + 6
4939 
4940  do j = 1, ng28
4941  taug(k,ns28+j) = speccomb &
4942  & * ( fac000 * absb(ind01,j) + fac100 * absb(ind02,j) &
4943  & + fac010 * absb(ind03,j) + fac110 * absb(ind04,j) &
4944  & + fac001 * absb(ind11,j) + fac101 * absb(ind12,j) &
4945  & + fac011 * absb(ind13,j) + fac111 * absb(ind14,j) )
4946  enddo
4947  enddo
4948 
4949  return
4950 !...................................
real(kind=kind_phys), dimension(ng01, msb01), public absb
real(kind=kind_phys), parameter, public rayl
This module sets up absorption coeffients for band 28: 38000-50000 cm-1 (low - o3,o2; high - o3,o2)
real(kind=kind_phys), dimension(ng01, msa01), public absa

Here is the caller graph for this function:

subroutine taumol::taumol29 ( )

Definition at line 4957 of file radsw_main.f.

References module_radsw_kgb29::absa, module_radsw_kgb29::absb, module_radsw_kgb29::absco2, module_radsw_kgb29::absh2o, module_radsw_kgb29::forref, module_radsw_parameters::ng29, module_radsw_parameters::ns29, module_radsw_kgb29::rayl, and module_radsw_kgb29::selfref.

Referenced by module_radsw_main::taumol().

4957 !...................................
4958 
4959 ! ------------------------------------------------------------------ !
4960 ! band 29: 820-2600 cm-1 (low - h2o; high - co2) !
4961 ! ------------------------------------------------------------------ !
4962 !
4963  use module_radsw_kgb29
4964 
4965 ! --- locals:
4966  real (kind=kind_phys) :: tauray
4967 
4968  integer :: ind01, ind02, ind11, ind12
4969  integer :: inds, indf, indsp, indfp, j, k
4970 
4971 !
4972 !===> ... begin here
4973 !
4974 
4975 ! --- ... compute the optical depth by interpolating in ln(pressure),
4976 ! temperature, and appropriate species. below laytrop, the water
4977 ! vapor self-continuum is interpolated (in temperature) separately.
4978 
4979  do k = 1, nlay
4980  tauray = colmol(k) * rayl
4981 
4982  do j = 1, ng29
4983  taur(k,ns29+j) = tauray
4984  enddo
4985  enddo
4986 
4987  do k = 1, laytrop
4988  ind01 = id0(k,29) + 1
4989  ind02 = ind01 + 1
4990  ind11 = id1(k,29) + 1
4991  ind12 = ind11 + 1
4992 
4993  inds = indself(k)
4994  indf = indfor(k)
4995  indsp= inds + 1
4996  indfp= indf + 1
4997 
4998  do j = 1, ng29
4999  taug(k,ns29+j) = colamt(k,1) &
5000  & * ( (fac00(k)*absa(ind01,j) + fac10(k)*absa(ind02,j) &
5001  & + fac01(k)*absa(ind11,j) + fac11(k)*absa(ind12,j) ) &
5002  & + selffac(k) * (selfref(inds,j) + selffrac(k) &
5003  & * (selfref(indsp,j) - selfref(inds,j))) &
5004  & + forfac(k) * (forref(indf,j) + forfrac(k) &
5005  & * (forref(indfp,j) - forref(indf,j)))) &
5006  & + colamt(k,2) * absco2(j)
5007  enddo
5008  enddo
5009 
5010  do k = laytrop+1, nlay
5011  ind01 = id0(k,29) + 1
5012  ind02 = ind01 + 1
5013  ind11 = id1(k,29) + 1
5014  ind12 = ind11 + 1
5015 
5016  do j = 1, ng29
5017  taug(k,ns29+j) = colamt(k,2) &
5018  & * ( fac00(k)*absb(ind01,j) + fac10(k)*absb(ind02,j) &
5019  & + fac01(k)*absb(ind11,j) + fac11(k)*absb(ind12,j) ) &
5020  & + colamt(k,1) * absh2o(j)
5021  enddo
5022  enddo
5023 
5024  return
5025 !...................................
5026  end subroutine taumol29
5027 !-----------------------------------
5028 
5029 !...................................
real(kind=kind_phys), dimension(ng01, mfr01), public forref
real(kind=kind_phys), dimension(ng29), public absco2
real(kind=kind_phys), dimension(ng01, msb01), public absb
real(kind=kind_phys), parameter, public rayl
real(kind=kind_phys), dimension(ng01, msf01), public selfref
This module sets up absorption coeffients for band 29: 820-2600 cm-1 (low - h2o; high - co2) ...
subroutine taumol29
The subroutine computes the optical depth in band 29: 820-2600 cm-1 (low - h2o; high - co2) ...
Definition: radsw_main.f:4957
real(kind=kind_phys), dimension(ng29), public absh2o
real(kind=kind_phys), dimension(ng01, msa01), public absa

Here is the caller graph for this function: