4 #include "MAPL_Generic.h" 35 integer,
intent(IN ) :: idx
36 integer,
intent(IN ) :: ib
37 real,
intent(IN ) :: qaero
38 real,
intent(IN ) :: rh
39 real,
intent(OUT) :: tau
40 real,
intent(OUT) :: ssa
41 real,
intent(OUT) :: asy
42 integer,
optional,
intent(OUT) :: rc
45 character(len=ESMF_MAXSTR) :: iam=
'Get_AeroOptProp' 47 call chem_miequery(
mietable,idx,
real(ib),qaero,rh, &
48 tau,ssa,asy,rc=status)
58 integer,
intent(in) :: na
59 character(len=*),
intent(IN ) :: aerosol(:)
60 integer,
intent(IN ) :: nb
61 integer,
intent(IN ) :: offset
62 real,
intent(IN ) :: qaero(:,:,:)
63 real,
intent(IN ) :: rh(:,:)
64 real,
intent(OUT) :: tau(:,:,:)
65 real,
intent(OUT) :: ssa(:,:,:)
66 real,
intent(OUT) :: asy(:,:,:)
67 integer,
optional,
intent(OUT) :: rc
70 character(len=ESMF_MAXSTR) :: Iam=
'Get_AeroOptPropAllAero3D' 74 real*8 :: tau8(size(tau,1),size(tau,2),size(tau,3))
75 real*8 :: ssa8(size(tau,1),size(tau,2),size(tau,3))
76 real*8 :: asy8(size(tau,1),size(tau,2),size(tau,3))
83 idx = chem_miequeryidx(
mietable, aerosol(l), status)
86 call chem_miequeryallband3d(
mietable,idx,nb,offset,qaero(:,:,l),rh, &
87 tau,ssa,asy,rc=status)
91 ssa8 = ssa8 + (ssa * tau)
92 asy8 = asy8 + asy * (ssa * tau)
106 integer,
intent(IN ) :: na
107 character(len=*),
intent(IN ) :: aerosol(:)
108 integer,
intent(IN ) :: nb
109 integer,
intent(IN ) :: offset
110 real,
intent(IN ) :: qaero(:,:,:,:)
111 real,
intent(IN ) :: rh(:,:,:)
112 real,
intent(OUT) :: tau(:,:,:,:)
113 real,
intent(OUT) :: ssa(:,:,:,:)
114 real,
intent(OUT) :: asy(:,:,:,:)
115 integer,
optional,
intent(OUT) :: rc
118 character(len=ESMF_MAXSTR) :: Iam=
'Get_AeroOptPropAllAero4D' 122 real*8 :: tau8(size(tau,1),size(tau,2),size(tau,3),size(tau,4))
123 real*8 :: ssa8(size(tau,1),size(tau,2),size(tau,3),size(tau,4))
124 real*8 :: asy8(size(tau,1),size(tau,2),size(tau,3),size(tau,4))
131 idx = chem_miequeryidx(
mietable, aerosol(l), status)
134 call chem_miequeryallband4d(
mietable,idx,nb,offset,qaero(:,:,:,l),rh, &
135 tau,ssa,asy,rc=status)
139 ssa8 = ssa8 + (ssa * tau)
140 asy8 = asy8 + asy * (ssa * tau)
147 return_(esmf_success)
154 integer,
intent(IN ) :: idx
155 integer,
intent(IN ) :: ib,nn
156 real,
intent(IN ) :: qaero(nn)
157 real,
intent(IN ) :: rh(nn)
158 real,
intent(OUT) :: tau(nn)
159 integer,
optional,
intent(OUT) :: rc
162 character(len=ESMF_MAXSTR) :: iam=
'Get_AeroTauList' 165 call chem_miequerytaulist(
mietable,idx,
real(ib),qaero,rh, &
169 return_(esmf_success)
175 character (len=*),
intent(IN ) :: aerosol
176 integer,
optional,
intent(OUT) :: rc
179 character(len=ESMF_MAXSTR) :: iam=
'Get_AeroIndex' 182 idx = chem_miequeryidx(
mietable, aerosol, status )
185 return_(esmf_success)
189 idx,nrh,bext,bsca,gasy,arh,irh,rc)
191 integer,
intent(in) :: na
192 character(len=*),
intent(in) :: aerosol(:)
193 real,
intent(in) :: rh(:,:)
194 character(len=5),
intent(in) :: routine
196 integer,
intent(out) :: idx(:)
197 integer,
intent(out) :: nrh(:)
198 real,
intent(out) :: bext(:,:,:,:)
199 real,
intent(out) :: bsca(:,:,:,:)
200 real,
intent(out) :: gasy(:,:,:,:)
201 real,
intent(out) :: arh(:,:,:)
202 integer,
intent(out) :: irh(:,:,:)
203 integer,
optional,
intent(out) :: rc
205 integer :: status, i,j,k, ii, jj, isnap
206 integer :: num_radii, num_rh
207 character(len=ESMF_MAXSTR) :: iam=
'Get_AeroIndexTableProps' 223 idx(k) = chem_miequeryidx(
mietable, aerosol(k), status)
228 num_rh =
size(
mietable%vtableUse%bext,2)
229 num_radii =
size(
mietable%vtableUse%bext,3)
233 bext(1:8,1:num_rh,1:num_radii,k) =
mietable%vtableUse%bext(1:8,:,:)
234 bsca(1:8,1:num_rh,1:num_radii,k) =
mietable%vtableUse%bsca(1:8,:,:)
235 gasy(1:8,1:num_rh,1:num_radii,k) =
mietable%vtableUse%g( 1:8,:,:)
237 bext(1:10,1:num_rh,1:num_radii,k) =
mietable%vtableUse%bext(9:18,:,:)
238 bsca(1:10,1:num_rh,1:num_radii,k) =
mietable%vtableUse%bsca(9:18,:,:)
239 gasy(1:10,1:num_rh,1:num_radii,k) =
mietable%vtableUse%g( 9:18,:,:)
246 isnap = int(((
min(
max(rh(i,j),0.0),0.99))+0.001)*1000)
248 arh(i,j,k) =
mietable%vtableUse%rha(isnap)
249 irh(i,j,k) =
mietable%vtableUse%rhi(isnap)
255 return_(esmf_success)
260 type(esmf_config),
intent(IN ) :: cf
261 integer,
optional,
intent(OUT) :: rc
264 character(len=ESMF_MAXSTR) :: iam=
'Create_AeroOptProp' 266 mietable = chem_miecreate(cf,status)
269 return_(esmf_success)
subroutine, public get_aerotaulist(idx, ib, nn, qaero, rh, tau, rc)
subroutine, public get_aerooptprop(idx, ib, qaero, rh, tau, ssa, asy, rc)
integer function, public get_aeroindex(aerosol, rc)
subroutine get_aerooptpropallaero3d(na, aerosol, nb, offset, qaero, rh, tau, ssa, asy, rc)
type(chem_mie), save mietable
subroutine, public get_aeroindextableprops(na, aerosol, rh, routine, idx, nrh, bext, bsca, gasy, arh, irh, rc)
logical, save mietablecreated
subroutine get_aerooptpropallaero4d(na, aerosol, nb, offset, qaero, rh, tau, ssa, asy, rc)
subroutine, public create_aerooptprop(cf, rc)