-
Notifications
You must be signed in to change notification settings - Fork 6
/
module_data_rrtmgaeropt.F
137 lines (123 loc) · 6.36 KB
/
module_data_rrtmgaeropt.F
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
MODULE module_data_rrtmgaeropt
!
IMPLICIT NONE
INTEGER nswbands,nlwbands ! wave bands for rrtmg radiation scheme
PARAMETER (nswbands =4,nlwbands=16)
!*************************************************************
!czhao hard coding the refractive index of water and aerosols
!
! * Most of the wavelength refractive indices below are based on values
! used in the Community Atmosphere Model (CAM)
! * For now, shortwave refractive index is not wavelength depenedent
! and set to 0.003 as described in Zhao et al. ACP (2010)
! * Wavelength dependant shortwave refractive index used by CAM is
! commented out for now
!
!water
real,dimension(1:nswbands),save :: refrwsw,refiwsw
real,dimension(1:nlwbands),save :: refrwlw,refiwlw
data refrwsw /1.35,1.34,1.33,1.33/
data refiwsw /1.524e-8,2.494e-9,1.638e-9,3.128e-6/
data refrwlw /1.532,1.524,1.420,1.274,1.161,1.142,1.232,1.266,1.296, &
1.321,1.342,1.315,1.330,1.339,1.350,1.408/
data refiwlw / 0.336,0.360,0.426,0.403,0.321,0.115,0.0471,0.039,0.034, &
0.0344,0.092,0.012,0.013,0.01,0.0049,0.0142/
!dust
real,dimension(1:nswbands),save :: refrsw_dust,refisw_dust
real,dimension(1:nlwbands),save :: refrlw_dust,refilw_dust
!data refrsw_dust /nswbands*1.530/
data refrsw_dust /nswbands*1.550/
! data refisw_dust /0.024,0.0135,0.0063,0.004/
data refisw_dust /nswbands*0.003/
data refrlw_dust /2.340,2.904,1.748,1.508,1.911,1.822,2.917,1.557, &
1.242,1.447,1.432,1.473,1.495,1.5,1.5,1.51/
data refilw_dust /0.7,0.857,0.462,0.263,0.319,0.26,0.65,0.373,0.093, &
0.105,0.061,0.0245,0.011,0.008,0.0068,0.018/
!BC
real,dimension(1:nswbands),save :: refrsw_bc,refisw_bc
real,dimension(1:nlwbands),save :: refrlw_bc,refilw_bc
data refrsw_bc /nswbands*1.95/
data refisw_bc /nswbands*0.79/
data refrlw_bc /nlwbands*1.95/
data refilw_bc /nlwbands*0.79/
!OC
real,dimension(1:nswbands),save :: refrsw_oc,refisw_oc
real,dimension(1:nlwbands),save :: refrlw_oc,refilw_oc
!data refrsw_oc /1.53,1.53,1.53,1.52/
data refrsw_oc /nswbands*1.45/
!data refisw_oc /0.00776,0.005,0.00567,0.0156/
data refisw_oc /nswbands*0.0/
data refrlw_oc /1.86,1.91,1.988,1.439,1.606,1.7,1.888,2.489,1.219, &
1.419,1.426,1.446,1.457,1.458,1.455,1.443/
data refilw_oc /0.5,0.268,0.185,0.198,0.059,0.0488,0.11,0.3345,0.065, &
0.058,0.0261,0.0142,0.013,0.01,0.005,0.0057/
!Sea-salt
real,dimension(1:nswbands),save :: refrsw_seas,refisw_seas
real,dimension(1:nlwbands),save :: refrlw_seas,refilw_seas
data refrsw_seas /1.51,1.5,1.5,1.47/
data refisw_seas /0.866e-6,7.019e-8,1.184e-8,0.00015/
data refrlw_seas /1.74,1.76,1.78,1.456,1.41,1.48,1.56,1.63,1.4,1.43, &
1.56,1.45,1.485,1.486,1.48,1.48 /
data refilw_seas /0.1978,0.1978,0.129,0.038,0.019,0.014,0.016,0.03,0.012, &
0.0064,0.0196,0.0029,0.0017,0.0014,0.0014,0.00176/
!Sulfate
real,dimension(1:nswbands),save :: refrsw_sulf,refisw_sulf
real,dimension(1:nlwbands),save :: refrlw_sulf,refilw_sulf
!data refrsw_sulf /1.468,1.442,1.43,1.422/
data refrsw_sulf /nswbands*1.52/
data refisw_sulf /3*1.0e-9,1.75e-6/
data refrlw_sulf /1.89,1.91,1.93,1.586,1.678,1.758,1.855,1.597,1.15, &
1.26,1.42,1.35,1.379,1.385,1.385,1.367/
data refilw_sulf /0.22,0.152,0.0846,0.2225,0.195,0.441,0.696,0.695, &
0.459,0.161,0.172,0.14,0.12,0.122,0.126,0.158/
!*************************************************************
!wavelength
real, save :: wavmin(nswbands) ! Min wavelength (um) of interval
!data wavmin /3.077,2.500,2.150,1.942,1.626,1.299, &
data wavmin /0.25,0.35,0.55,0.998/
real, save :: wavmax(nswbands) ! Max wavelength (um) of interval
!data wavmax/3.846,3.077,2.500,2.150,1.942,1.626, &
data wavmax/0.35,0.45,0.65,1.000/
real, save :: wavenumber1_longwave(nlwbands) !Longwave limits (cm-1)
data wavenumber1_longwave /10.,350.,500.,630.,700.,820.,980.,1080.,1180.,1390.,1480.,1800.,2080.,2250.,2390.,2600./
real, save :: wavenumber2_longwave(nlwbands) !Longwave limits (cm-1)
data wavenumber2_longwave /350.,500.,630.,700.,820.,980.,1080.,1180.,1390.,1480.,1800.,2080., 2250.,2390.,2600.,3250./
!mode or size bin
integer,parameter :: maxd_amode=3
integer,parameter :: ntot_amode=3
integer,parameter :: maxd_bin=8
integer,parameter :: ntot_bin=8
!Chebychev polynomial
!integer,parameter :: prefr=7,prefi=10
integer,parameter :: prefr=7,prefi=7
integer,parameter :: ncoef=50
real,parameter :: rmmin=0.005e-4,rmmax=50.e-4 ! cm
real,save:: refrtabsw(prefr,nswbands)
real,save:: refitabsw(prefi,nswbands)
real,save:: refrtablw(prefr,nlwbands)
real,save:: refitablw(prefi,nlwbands)
!coefficients for parameterizing aerosol radiative properties
!in terms of refractive index and wet radius
real,save:: extpsw(ncoef,prefr,prefi,nswbands) !specific extinction
real,save:: abspsw(ncoef,prefr,prefi,nswbands) !specific absorption
real,save:: ascatpsw(ncoef,prefr,prefi,nswbands) !specific scattering
real,save:: asmpsw(ncoef,prefr,prefi,nswbands) !asymmetry factor
real,save:: sbackpsw(ncoef,prefr,prefi,nswbands)
real,save:: pmom2psw(ncoef,prefr,prefi,nswbands)
real,save:: pmom3psw(ncoef,prefr,prefi,nswbands)
real,save:: pmom4psw(ncoef,prefr,prefi,nswbands)
real,save:: pmom5psw(ncoef,prefr,prefi,nswbands)
real,save:: pmom6psw(ncoef,prefr,prefi,nswbands)
real,save:: pmom7psw(ncoef,prefr,prefi,nswbands)
real,save:: extplw(ncoef,prefr,prefi,nlwbands) !specific extinction
real,save:: absplw(ncoef,prefr,prefi,nlwbands) !specific absorption
real,save:: ascatplw(ncoef,prefr,prefi,nlwbands) !specific scattering
real,save:: asmplw(ncoef,prefr,prefi,nlwbands) !asymmetry factor
real,save :: wavmidsw(nswbands)
data wavmidsw / 0.30e-4, 0.40e-4, 0.60e-4 ,0.999e-04 /
!now czhao use 0.45 instead of 0.40 becaues of incorrect AOD from 0.40
!data wavmidsw / 0.30e-4, 0.45e-4, 0.60e-4 ,0.999e-04 /
real,save :: wavmidlw(nlwbands)
complex, save :: crefwsw(nswbands) ! complex refractive index fro water
complex, save :: crefwlw(nlwbands)
END MODULE module_data_rrtmgaeropt