@@ -74,6 +74,7 @@ module aerosol_properties_mod
7474 procedure (aero_resuspension_resize), deferred :: resuspension_resize
7575 procedure (aero_rebin_bulk_fluxes), deferred :: rebin_bulk_fluxes
7676 procedure (aero_hydrophilic), deferred :: hydrophilic
77+ procedure (aero_id_query), deferred :: model_is
7778
7879 procedure :: final= >aero_props_final
7980 end type aerosol_properties
@@ -101,7 +102,7 @@ end function aero_number_transported
101102 ! species morphology
102103 !- -----------------------------------------------------------------------
103104 subroutine aero_props_get (self , bin_ndx , species_ndx , list_ndx , density , hygro , &
104- spectype , specname , specmorph , refindex_sw , refindex_lw )
105+ spectype , specname , specmorph , refindex_sw , refindex_lw )
105106 import :: aerosol_properties, r8
106107 class(aerosol_properties), intent (in ) :: self
107108 integer , intent (in ) :: bin_ndx ! bin index
@@ -124,7 +125,10 @@ subroutine aero_optics_params(self, list_ndx, bin_ndx, opticstype, extpsw, absps
124125 refrtabsw , refitabsw , refrtablw , refitablw , ncoef , prefr , prefi , sw_hygro_ext_wtp , &
125126 sw_hygro_ssa_wtp , sw_hygro_asm_wtp , lw_hygro_ext_wtp , wgtpct , nwtp , &
126127 sw_hygro_coreshell_ext , sw_hygro_coreshell_ssa , sw_hygro_coreshell_asm , lw_hygro_coreshell_ext , &
127- corefrac , bcdust , kap , relh , nfrac , nbcdust , nkap , nrelh )
128+ corefrac , bcdust , kap , relh , nfrac , nbcdust , nkap , nrelh , &
129+ sw_hygroscopic_ext , sw_hygroscopic_ssa , sw_hygroscopic_asm , lw_hygroscopic_ext , &
130+ sw_insoluble_ext , sw_insoluble_ssa , sw_insoluble_asm , lw_insoluble_ext , &
131+ r_sw_ext , r_sw_scat , r_sw_ascat , r_mu , r_lw_abs )
128132
129133 import :: aerosol_properties, r8
130134
@@ -169,6 +173,25 @@ subroutine aero_optics_params(self, list_ndx, bin_ndx, opticstype, extpsw, absps
169173 integer , optional , intent (out ) :: nkap ! hygroscopicity dimension size
170174 integer , optional , intent (out ) :: nrelh ! relative humidity dimension size
171175
176+ ! hygroscopic
177+ real (r8 ), optional , pointer :: sw_hygroscopic_ext(:,:) ! short wave extinction table
178+ real (r8 ), optional , pointer :: sw_hygroscopic_ssa(:,:) ! short wave single-scatter albedo table
179+ real (r8 ), optional , pointer :: sw_hygroscopic_asm(:,:) ! short wave asymmetry table
180+ real (r8 ), optional , pointer :: lw_hygroscopic_ext(:,:) ! long wave absorption table
181+
182+ ! non-hygroscopic (insoluble)
183+ real (r8 ), optional , pointer :: sw_insoluble_ext(:) ! short wave extinction table
184+ real (r8 ), optional , pointer :: sw_insoluble_ssa(:) ! short wave single-scatter albedo table
185+ real (r8 ), optional , pointer :: sw_insoluble_asm(:) ! short wave asymmetry table
186+ real (r8 ), optional , pointer :: lw_insoluble_ext(:) ! long wave absorption table
187+
188+ ! volcanic radius
189+ real (r8 ), optional , pointer :: r_sw_ext(:,:)
190+ real (r8 ), optional , pointer :: r_sw_scat (:,:)
191+ real (r8 ), optional , pointer :: r_sw_ascat(:,:)
192+ real (r8 ), optional , pointer :: r_mu(:)
193+ real (r8 ), optional , pointer :: r_lw_abs(:,:)
194+
172195 end subroutine aero_optics_params
173196
174197 !- -----------------------------------------------------------------------
@@ -375,12 +398,12 @@ end function aero_alogsig_rlist
375398 ! returns name for a given radiation list number and aerosol bin
376399 !- -----------------------------------------------------------------------------
377400 function aero_bin_name (self , list_ndx , bin_ndx ) result(name)
378- import :: aerosol_properties, r8
401+ import :: aerosol_properties, r8 , aero_name_len
379402 class(aerosol_properties), intent (in ) :: self
380403 integer , intent (in ) :: list_ndx ! radiation list number
381404 integer , intent (in ) :: bin_ndx ! bin number
382405
383- character (len= 32 ) name
406+ character (len= aero_name_len) :: name
384407
385408 end function aero_bin_name
386409
@@ -434,6 +457,15 @@ logical function aero_hydrophilic(self, bin_ndx)
434457 integer , intent (in ) :: bin_ndx ! bin number
435458 end function aero_hydrophilic
436459
460+ !- -----------------------------------------------------------------------------
461+ ! Returns TRUE if the aerosol model matches the query, otherwise FALSE
462+ !- -----------------------------------------------------------------------------
463+ logical function aero_id_query (self , query )
464+ import :: aerosol_properties
465+ class(aerosol_properties), intent (in ) :: self
466+ character (len=* ), intent (in ) :: query
467+ end function aero_id_query
468+
437469 end interface
438470
439471contains
0 commit comments