9 #include "YAKL_netcdf.h"
10 #include "rrtmgp_const.h"
13 #include "ERF_Config.H"
15 #ifndef ERF_MAM4_CONSTITUENTS_H_
16 #define ERF_MAM4_CONSTITUENTS_H_
40 std::vector<std::string>
type;
54 std::vector<mode_component_t>
comps;
68 std::vector<gas_t>
gas;
84 std::vector<aerosol_t>
aer;
113 const std::vector<std::string>
mode_type_names {
"accum",
"aitken",
"primary_carbon",
"fine_seasalt",
114 "fine_dust",
"coarse",
"coarse_seasalt",
"coarse_dust"};
116 const std::vector<std::string>
spec_type_names {
"sulfate",
"ammonium",
"nitrate",
"p-organic",
117 "s-organic",
"black-c",
"seasalt",
"dust"};
127 auto erf_rad_data_dir = getRadiationDataDir() +
"/";
130 if (!yakl::isInitialized()) yakl::init();
133 std::vector<int> num_spec{6, 3, 3};
159 modes.
comps[0].props[0] = erf_rad_data_dir +
"sulfate_rrtmg_c080918.nc";
160 modes.
comps[0].props[1] = erf_rad_data_dir +
"ocpho_rrtmg_c101112.nc";
161 modes.
comps[0].props[2] = erf_rad_data_dir +
"ocphi_rrtmg_c100508.nc";
162 modes.
comps[0].props[3] = erf_rad_data_dir +
"bcpho_rrtmg_c100508.nc";
163 modes.
comps[0].props[4] = erf_rad_data_dir +
"dust_aeronet_rrtmg_c141106.nc";
164 modes.
comps[0].props[5] = erf_rad_data_dir +
"ssam_rrtmg_c100508.nc";
182 modes.
comps[1].props[0] = erf_rad_data_dir +
"sulfate_rrtmg_c080918.nc";
183 modes.
comps[1].props[1] = erf_rad_data_dir +
"ocphi_rrtmg_c100508.nc";
184 modes.
comps[1].props[2] = erf_rad_data_dir +
"ssam_rrtmg_c100508.nc";
202 modes.
comps[2].props[0] = erf_rad_data_dir +
"dust_aeronet_rrtmg_c141106.nc";
203 modes.
comps[2].props[1] = erf_rad_data_dir +
"ssam_rrtmg_c100508.nc";
204 modes.
comps[2].props[2] = erf_rad_data_dir +
"sulfate_rrtmg_c080918.nc";
211 for(
auto i = 0; i <
N_DIAG; ++i) {
219 gaslist[0].gas[0].source =
"A";
220 gaslist[0].gas[1].source =
"N";
221 gaslist[0].gas[2].source =
"N";
222 gaslist[0].gas[3].source =
"N";
223 gaslist[0].gas[4].source =
"N";
224 gaslist[0].gas[5].source =
"N";
225 gaslist[0].gas[6].source =
"N";
226 gaslist[0].gas[7].source =
"N";
228 gaslist[0].gas[0].camname =
"Q";
229 gaslist[0].gas[1].camname =
"O3";
230 gaslist[0].gas[2].camname =
"O2";
231 gaslist[0].gas[3].camname =
"CO2";
232 gaslist[0].gas[4].camname =
"N2O";
233 gaslist[0].gas[5].camname =
"CH4";
234 gaslist[0].gas[6].camname =
"CFC11";
235 gaslist[0].gas[7].camname =
"CFC12";
247 ma_list[0].physprop_files[0] = erf_rad_data_dir +
"mam3_mode1_rrtmg_c110318.nc";
248 ma_list[0].physprop_files[1] = erf_rad_data_dir +
"mam3_mode2_rrtmg_c110318.nc";
249 ma_list[0].physprop_files[2] = erf_rad_data_dir +
"mam3_mode3_rrtmg_c110318.nc";
252 ma_list[0].idx_props[0] = 78384393;
253 ma_list[0].idx_props[1] = 8192;
254 ma_list[0].idx_props[2] = 78384392;
259 for(
auto i = 0; i <
ma_list[0].nmodes; ++i)
264 for(
auto j = 0; j <
modes.
comps[i].nspec; ++j)
294 for(
auto i = 0; i <
ma_list.size(); ++i) {
295 for(
auto imode = 0; imode <
ma_list[i].nmodes; ++imode) {
306 for(
auto ispec = 0; ispec <
modes.
comps[m].nspec; ++ispec) {
309 amrex::Print() <<
"ERROR idx not found for " <<
modes.
comps[m].props[ispec] << std::endl;
320 if (list_idx >= 0 && list_idx <=
N_DIAG) {
323 amrex::Print() <<
" list_idx= " << list_idx <<
"\n";
331 auto source = list.
gas[igas].source;
332 auto idx = list.
gas[igas].idx;
335 yakl::memset(mmr, 0.23);
337 yakl::memset(mmr, 1.0e-6);
352 auto m_list =
ma_list[list_idx];
353 nmodes = m_list.nmodes;
358 auto g_list =
gaslist[list_idx];
365 naero = a_list.numaerosols;
368 void get_gas_names (
int list_idx, std::vector<std::string>& gasnames,
bool& use_data_o3)
const
370 auto g_list =
gaslist[list_idx];
372 gasnames.reserve(g_list.ngas);
374 for(
auto i = 0; i < g_list.ngas; ++i) gasnames[i] = g_list.gas[i].camname;
380 auto source = g_list.gas[igas].source;
382 if (source ==
"N") use_data_o3 =
true;
389 aernames.reserve(a_list.numaerosols);
391 for(
auto i = 0; i < a_list.numaerosols; ++i) aernames[i] = a_list.aer[i].camname;
396 auto m_list =
ma_list[list_idx];
397 auto mm = m_list.idx[m_idx];
405 std::string& mode_type, std::string& num_name,
406 std::string& num_name_cw,
int& nspec)
const
408 auto m_list =
ma_list[list_idx];
411 auto nmodes = m_list.nmodes;
412 if (m_idx < 0 || m_idx > nmodes)
413 amrex::Print() <<
"ERROR - invalid mode index: " << m_idx <<
"\n";
416 auto mm = m_list.idx[m_idx];
419 if (mode_type.empty()) mode_type =
modes.
types[mm];
422 if (nspec == 0) nspec =
modes.
comps[mm].nspec;
425 if (num_name.empty()) num_name =
modes.
comps[mm].camname_num_a;
428 if (num_name_cw.empty()) num_name_cw =
modes.
comps[mm].camname_num_c;
433 std::string& spec_type, std::string& spec_name,
434 std::string& spec_name_cw)
const
436 auto m_list =
ma_list[list_idx];
439 auto nmodes = m_list.nmodes;
440 if (m_idx < 0 || m_idx > nmodes)
441 amrex::Print() <<
"ERROR - invalid mode index: " << m_idx <<
"\n";
444 auto mm = m_list.idx[m_idx];
448 if (s_idx < 0 || s_idx > nspec)
449 amrex::Print() <<
"ERROR - invalid specie index: " << s_idx <<
"\n";
452 if (spec_type.empty()) spec_type =
modes.
comps[mm].type[s_idx];
455 if (spec_name.empty()) spec_name =
modes.
comps[mm].camname_mmr_a[s_idx];
458 if (spec_name_cw.empty()) spec_name_cw =
modes.
comps[mm].camname_mmr_c[s_idx];
463 int& mode_idx,
int& spec_idx)
const
465 auto m_list =
ma_list[list_idx];
468 auto nmodes = m_list.nmodes;
471 auto found_spectype =
false;
472 for(
auto i = 0; i < nmodes; ++i) {
475 auto m_idx = m_list.idx[i];
481 for(
auto ispec = 0; ispec < nspec; ++ispec) {
482 if (
modes.
comps[m_idx].type[ispec] == spectype) {
483 if (mode_idx) mode_idx = i;
484 if (spec_idx) spec_idx = ispec;
485 found_spectype =
true;
489 if (found_spectype) exit(0);
492 if (!found_spectype) {
504 auto m_list =
ma_list[list_idx];
507 auto nmodes = m_list.nmodes;
510 for(
auto i = 0; i < nmodes; ++i) {
512 auto m_idx = m_list.idx[i];
524 const std::string& spec_type)
const
530 auto m_list =
ma_list[list_idx];
533 auto m_idx = m_list.idx[mode_idx];
539 auto nspec = mode_comps.nspec;
542 for(
auto i=0; i<nspec; ++i) {
544 if (mode_comps.type[i] == spec_type) {
558 amrex::ignore_unused(idx);
559 std::string name, cbname, source;
563 if (list_idx >= 0 && list_idx <=
N_DIAG) {
566 amrex::Print() <<
"list_idx = " << list_idx <<
"\n";
570 for(
auto i = 0; i < naer; ++i) {
571 source = aerlist.
aer[i].source;
572 idx = aerlist.
aer[i].idx;
573 name = aerlist.
aer[i].mass_name;
591 auto g_list =
gaslist[list_idx];
593 auto ngas = g_list.ngas;
594 for(
auto i = 0; i < ngas; ++i) {
595 source = g_list.gas[i].source;
596 idx = g_list.gas[i].idx;
597 name = g_list.gas[i].mass_name;
619 if (list_idx >= 0 && list_idx <=
N_DIAG) {
622 amrex::Print() <<
" list_idx = " << list_idx << std::endl;
627 if (aer_idx < 0 || aer_idx > aerlist.
numaerosols) {
628 amrex::Print() <<
" aer_idx= " << aer_idx <<
" numaerosols= " << aerlist.
numaerosols << std::endl;
633 auto source = aerlist.
aer[aer_idx].source;
640 const std::string& phase, real2d& mmr)
const
646 if (list_idx >= 0 && list_idx <=
N_DIAG) {
649 amrex::Print() <<
"list_idx =" << list_idx << std::endl;
654 if (mode_idx < 0 || mode_idx > mlist.
nmodes) {
655 amrex::Print() <<
" mode_idx= " << mode_idx <<
" nmodes= " << mlist.
nmodes << std::endl;
660 auto m_idx = mlist.
idx[mode_idx];
663 if (spec_idx < 0 || spec_idx >
modes.
comps[m_idx].nspec) {
664 amrex::Print() <<
" spec_idx= " << spec_idx <<
" nspec= " <<
modes.
comps[m_idx].nspec << std::endl;
668 yakl::memset(mmr, 1.80e-17);
674 }
else if (phase ==
"c") {
678 amrex::Print() <<
"phase= " << phase << std::endl;
691 if (mode_idx < 0 || mode_idx > mlist.
nmodes) {
692 amrex::Print() <<
"mode_idx= " << mode_idx <<
" nmodes= " << mlist.
nmodes << std::endl;
697 auto m_idx = mlist.
idx[mode_idx];
700 if (spec_idx < 0 || spec_idx >
modes.
comps[m_idx].nspec) {
701 amrex::Print() <<
"spec_idx= " << spec_idx <<
" nspec= " <<
modes.
comps[m_idx].nspec << std::endl;
717 if (list_idx >= 0 && list_idx <=
N_DIAG) {
720 amrex::Print() <<
" list_idx =" << list_idx << std::endl;
725 if (mode_idx < 0 || mode_idx > mlist.
nmodes) {
726 amrex::Print() <<
" mode_idx= " << mode_idx <<
" nmodes= " << mlist.
nmodes << std::endl;
731 auto m_idx = mlist.
idx[mode_idx];
737 }
else if (phase ==
"c") {
741 amrex::Print() <<
" phase= " << phase << std::endl;
760 if (mode_idx < 0 || mode_idx > mlist.
nmodes) {
761 amrex::Print() <<
" mode_idx= " << mode_idx <<
" nmodes= " << mlist.
nmodes << std::endl;
766 auto m_idx = mlist.
idx[mode_idx];
769 auto source =
modes.
comps[m_idx].source_num_a;
771 amrex::Print() <<
" source= " << source << std::endl;
784 if (list_idx >= 0 && list_idx <=
N_DIAG) {
788 amrex::Print() <<
" list_idx =" << list_idx << std::endl;
795 if (aer_name == aerlist.
aer[i].camname) {
801 if (aer_idx == -1) exit(0);
809 real& rhcrystal, real& rhdeliques)
const
812 if (list_idx >= 0 && list_idx <=
N_DIAG)
824 real2d& refrtablw, real2d& refitablw, real4d& absplw)
const
827 if (list_idx >= 0 && list_idx <=
N_DIAG)
839 void get_mode_props (
int list_idx,
int mode_idx, real& sigmag, real2d& refrtabsw,
840 real2d& refitabsw, real4d& extpsw, real4d& abspsw, real4d& asmpsw)
const
843 if (list_idx >= 0 && list_idx <=
N_DIAG)
857 void get_mode_props (
int list_idx,
int mode_idx,
int& ncoef,
int& prefr,
int& prefi)
const
860 if (list_idx >= 0 && list_idx <=
N_DIAG)
873 real& dgnumlo, real& sigmag)
const
876 if (list_idx >= 0 && list_idx <=
N_DIAG)
890 real& density_aer)
const
893 if (list_idx >= 0 && list_idx <=
N_DIAG)
897 auto m_idx = mlist.
idx[mode_idx];
898 auto id =
modes.
comps[m_idx].idx_props[spec_idx];
904 real& hygro_aer)
const
907 if (list_idx >= 0 && list_idx <=
N_DIAG)
911 auto m_idx = mlist.
idx[mode_idx];
912 auto id =
modes.
comps[m_idx].idx_props[spec_idx];
919 void get_mam_props (
int list_idx,
int mode_idx,
int spec_idx, real& density_aer,
920 std::string& spectype, real& hygro_aer,
921 real1d& refindex_real_aer_sw, real1d& refindex_im_aer_sw)
const
924 if (list_idx >= 0 && list_idx <=
N_DIAG)
928 auto m_idx = mlist.
idx[mode_idx];
929 auto id =
modes.
comps[m_idx].idx_props[spec_idx];
940 real& density_aer, real1d& refindex_real_aer_sw,
941 real1d& refindex_im_aer_sw)
const
944 if (list_idx >= 0 && list_idx <=
N_DIAG)
948 auto m_idx = mlist.
idx[mode_idx];
949 auto id =
modes.
comps[m_idx].idx_props[spec_idx];
957 void get_mam_props (
int list_idx,
int mode_idx,
int spec_idx, real& density_aer)
const
960 if (list_idx >= 0 && list_idx <=
N_DIAG)
963 auto m_idx = mlist.
idx[mode_idx];
964 auto id =
modes.
comps[m_idx].idx_props[spec_idx];
972 real1d& refindex_real_aer_lw,
973 real1d& refindex_im_aer_lw)
const
976 if (list_idx >= 0 && list_idx <=
N_DIAG)
980 auto m_idx = mlist.
idx[mode_idx];
981 auto id =
modes.
comps[m_idx].idx_props[spec_idx];
992 auto id = aerlist.aer[aer_idx].physprop_id;
1001 auto id = aerlist.aer[aer_idx].physprop_id;
1010 auto id = aerlist.aer[aer_idx].physprop_id;
1019 auto id = aerlist.aer[aer_idx].physprop_id;
1028 auto id = aerlist.aer[aer_idx].physprop_id;
1037 auto id = aerlist.aer[aer_idx].physprop_id;
1046 auto id = aerlist.aer[aer_idx].physprop_id;
1055 auto id = aerlist.aer[aer_idx].physprop_id;
1064 auto id = aerlist.aer[aer_idx].physprop_id;
1073 auto id = aerlist.aer[aer_idx].physprop_id;
1082 auto id = aerlist.aer[aer_idx].physprop_id;
1089 real1d& refindex_real_aer_sw,
1090 real1d& refindex_im_aer_sw)
const
1093 auto id = aerlist.aer[aer_idx].physprop_id;
1101 real1d& refindex_real_aer_lw,
1102 real1d& refindex_im_aer_lw)
const
1105 auto id = aerlist.aer[aer_idx].physprop_id;
1115 auto id = aerlist.aer[aer_idx].physprop_id;
1124 auto id = aerlist.aer[aer_idx].physprop_id;
1133 auto id = aerlist.aer[aer_idx].physprop_id;
1142 auto id = aerlist.aer[aer_idx].physprop_id;
1151 auto id = aerlist.aer[aer_idx].physprop_id;
1157 void get_aername (
int list_idx,
int aer_idx, std::string& aername)
const
1160 auto id = aerlist.aer[aer_idx].physprop_id;
1169 auto id = aerlist.aer[aer_idx].physprop_id;
1178 auto id = aerlist.aer[aer_idx].physprop_id;
1187 auto id = aerlist.aer[aer_idx].physprop_id;
1196 auto id = aerlist.aer[aer_idx].physprop_id;
1205 auto id = aerlist.aer[aer_idx].physprop_id;
Definition: ERF_Mam4_constituents.H:18
void get_aer_r_sw_scat(int list_idx, int aer_idx, real2d &r_sw_scat) const
Definition: ERF_Mam4_constituents.H:1121
const int N_DIAG
Definition: ERF_Mam4_constituents.H:20
std::string liqcldoptics
Definition: ERF_Mam4_constituents.H:22
void get_aer_r_sw_ascat(int list_idx, int aer_idx, real2d &r_sw_ascat) const
Definition: ERF_Mam4_constituents.H:1130
void get_aer_lw_hygro_abs(int list_idx, int aer_idx, real2d &lw_hygro_abs) const
Definition: ERF_Mam4_constituents.H:1025
std::string iceopticsfile
Definition: ERF_Mam4_constituents.H:21
void rad_cnst_get_info_by_mode(int list_idx, int m_idx, std::string &mode_type, std::string &num_name, std::string &num_name_cw, int &nspec) const
Definition: ERF_Mam4_constituents.H:404
void get_mode_props(int list_idx, int mode_idx, int &ncoef, int &prefr, int &prefi) const
Definition: ERF_Mam4_constituents.H:857
void rad_cnst_get_mode_num(int list_idx, int mode_idx, const std::string &phase, real2d &num) const
Definition: ERF_Mam4_constituents.H:711
void get_aer_sw_nonhygro_scat(int list_idx, int aer_idx, real1d &sw_nonhygro_scat) const
Definition: ERF_Mam4_constituents.H:1061
void rad_cnst_get_info_by_spectype(int list_idx, const std::string &spectype, int &mode_idx, int &spec_idx) const
Definition: ERF_Mam4_constituents.H:462
modes_t modes
Definition: ERF_Mam4_constituents.H:106
const int num_spec_types
Definition: ERF_Mam4_constituents.H:112
int rad_cnst_get_aer_idx(int list_idx, std::string &aer_name) const
Definition: ERF_Mam4_constituents.H:780
void get_num_to_mass_aer(int list_idx, int aer_idx, real &num_to_mass_aer) const
Definition: ERF_Mam4_constituents.H:1202
const std::vector< std::string > spec_type_names
Definition: ERF_Mam4_constituents.H:116
void get_aer_r_sw_ext(int list_idx, int aer_idx, real2d &r_sw_ext) const
Definition: ERF_Mam4_constituents.H:1112
void get_hygro_aer(int list_idx, int aer_idx, real &hygro_aer) const
Definition: ERF_Mam4_constituents.H:1175
void get_aer_lw_abs(int list_idx, int aer_idx, real1d &lw_abs) const
Definition: ERF_Mam4_constituents.H:1079
void get_mode_props(int list_idx, int mode_idx, real &sigmag, real2d &refrtabsw, real2d &refitabsw, real4d &extpsw, real4d &abspsw, real4d &asmpsw) const
Definition: ERF_Mam4_constituents.H:839
std::string icecldoptics
Definition: ERF_Mam4_constituents.H:22
void get_aername(int list_idx, int aer_idx, std::string &aername) const
Definition: ERF_Mam4_constituents.H:1157
void get_mode_nspec(int list_idx, int m_idx, int &nspec) const
Definition: ERF_Mam4_constituents.H:394
const int num_mode_types
Definition: ERF_Mam4_constituents.H:111
void get_aer_sw_nonhygro_ext(int list_idx, int aer_idx, real1d &sw_nonhygro_ext) const
Definition: ERF_Mam4_constituents.H:1034
void get_mode_props(int list_idx, int mode_idx, real &dgnum, real &dgnumhi, real &dgnumlo, real &sigmag) const
Definition: ERF_Mam4_constituents.H:872
const std::vector< std::string > mode_type_names
Definition: ERF_Mam4_constituents.H:113
void rad_cnst_init()
Definition: ERF_Mam4_constituents.H:278
MamConstituents()
Definition: ERF_Mam4_constituents.H:120
void get_gas_names(int list_idx, std::vector< std::string > &gasnames, bool &use_data_o3) const
Definition: ERF_Mam4_constituents.H:368
const int n_rad_cnst
Definition: ERF_Mam4_constituents.H:26
void rad_cnst_get_mode_num_idx(int mode_idx, int &cnst_idx) const
Definition: ERF_Mam4_constituents.H:753
void rad_cnst_out(int list_idx) const
Definition: ERF_Mam4_constituents.H:554
void get_aero_names(int list_idx, std::vector< std::string > &aernames) const
Definition: ERF_Mam4_constituents.H:385
void get_mam_props(int list_idx, int mode_idx, int spec_idx, real &density_aer, std::string &spectype, real &hygro_aer, real1d &refindex_real_aer_sw, real1d &refindex_im_aer_sw) const
Definition: ERF_Mam4_constituents.H:919
int rad_cnst_get_mode_idx(int list_idx, const std::string &mode_type) const
Definition: ERF_Mam4_constituents.H:498
void get_density_aer(int list_idx, int aer_idx, real &density_aer) const
Definition: ERF_Mam4_constituents.H:1166
void get_mam_props(int list_idx, int mode_idx, int spec_idx, real &density_aer) const
Definition: ERF_Mam4_constituents.H:957
void rad_cnst_get_info_by_mode_spec(int list_idx, int m_idx, int s_idx, std::string &spec_type, std::string &spec_name, std::string &spec_name_cw) const
Definition: ERF_Mam4_constituents.H:432
void get_aer_sw_nonhygro_asm(int list_idx, int aer_idx, real1d &sw_nonhygro_asm) const
Definition: ERF_Mam4_constituents.H:1052
void rad_cnst_get_mam_mmr_by_idx(int list_idx, int mode_idx, int spec_idx, const std::string &phase, real2d &mmr) const
Definition: ERF_Mam4_constituents.H:639
void get_dispersion_aer(int list_idx, int aer_idx, real &dispersion_aer) const
Definition: ERF_Mam4_constituents.H:1193
void get_aer_refindex_aer_lw(int list_idx, int aer_idx, real1d &refindex_real_aer_lw, real1d &refindex_im_aer_lw) const
Definition: ERF_Mam4_constituents.H:1100
void get_aer_sw_nonhygro_ascat(int list_idx, int aer_idx, real1d &sw_nonhygro_ascat) const
Definition: ERF_Mam4_constituents.H:1070
void get_ngas(int list_idx, int &ngas) const
Definition: ERF_Mam4_constituents.H:356
void rad_cnst_get_gas(int list_idx, const std::string &gasname, real2d &mmr) const
Definition: ERF_Mam4_constituents.H:317
void get_aer_sw_hygro_asm(int list_idx, int aer_idx, real2d &sw_hygro_asm) const
Definition: ERF_Mam4_constituents.H:1016
void get_aer_mu(int list_idx, int aer_idx, real1d &mu) const
Definition: ERF_Mam4_constituents.H:1148
void get_mam_props_lw(int list_idx, int mode_idx, int spec_idx, real &density_aer, real1d &refindex_real_aer_lw, real1d &refindex_im_aer_lw) const
Definition: ERF_Mam4_constituents.H:970
void get_mam_density_aer(int list_idx, int mode_idx, int spec_idx, real &density_aer) const
Definition: ERF_Mam4_constituents.H:889
void init_mode_comps()
Definition: ERF_Mam4_constituents.H:303
void get_aer_sw_hygro_ssa(int list_idx, int aer_idx, real2d &sw_hygro_ssa) const
Definition: ERF_Mam4_constituents.H:1007
void get_aer_sw_nonhygro_ssa(int list_idx, int aer_idx, real1d &sw_nonhygro_ssa) const
Definition: ERF_Mam4_constituents.H:1043
void get_nmodes(int list_idx, int &nmodes) const
Definition: ERF_Mam4_constituents.H:350
void get_aer_sw_hygro_ext(int list_idx, int aer_idx, real2d &sw_hygro_ext) const
Definition: ERF_Mam4_constituents.H:998
void rad_cnst_get_aer_mmr_by_idx(int list_idx, int aer_idx, real2d &mmr) const
Definition: ERF_Mam4_constituents.H:615
void get_aer_refindex_aer_sw(int list_idx, int aer_idx, real1d &refindex_real_aer_sw, real1d &refindex_im_aer_sw) const
Definition: ERF_Mam4_constituents.H:1088
std::vector< modelist_t > ma_list
Definition: ERF_Mam4_constituents.H:103
void get_dryrad_aer(int list_idx, int aer_idx, real &dryrad_aer) const
Definition: ERF_Mam4_constituents.H:1184
std::vector< gaslist_t > gaslist
Definition: ERF_Mam4_constituents.H:97
void get_aer_opticstype(int list_idx, int aer_idx, std::string &opticstype) const
Definition: ERF_Mam4_constituents.H:989
void get_aer_r_lw_abs(int list_idx, int aer_idx, real2d &r_lw_abs) const
Definition: ERF_Mam4_constituents.H:1139
std::vector< aerlist_t > aerosollist
Definition: ERF_Mam4_constituents.H:100
std::string liqopticsfile
Definition: ERF_Mam4_constituents.H:21
int rad_cnst_get_spec_idx(int list_idx, int mode_idx, const std::string &spec_type) const
Definition: ERF_Mam4_constituents.H:523
void rad_cnst_get_mam_mmr_idx(int mode_idx, int spec_idx, int &idx) const
Definition: ERF_Mam4_constituents.H:683
void get_mam_hygro_aer(int list_idx, int mode_idx, int spec_idx, real &hygro_aer) const
Definition: ERF_Mam4_constituents.H:903
const bool oldcldoptics
Definition: ERF_Mam4_constituents.H:23
void get_mode_props(int list_idx, int mode_idx, real &sigmag, real &rhcrystal, real &rhdeliques) const
Definition: ERF_Mam4_constituents.H:808
void get_mode_props(int list_idx, int mode_idx, real &sigmag, real2d &refrtablw, real2d &refitablw, real4d &absplw) const
Definition: ERF_Mam4_constituents.H:823
void get_naero(int list_idx, int &naero) const
Definition: ERF_Mam4_constituents.H:362
PhysProp prop
Definition: ERF_Mam4_constituents.H:109
void get_mam_props_sw(int list_idx, int mode_idx, int spec_idx, real &density_aer, real1d &refindex_real_aer_sw, real1d &refindex_im_aer_sw) const
Definition: ERF_Mam4_constituents.H:939
Definition: ERF_Phys_prop.H:17
void physprop_init()
Definition: ERF_Phys_prop.H:112
void get_sw_nonhygro_ssa(int &id, real1d &sw_nonhygro_ssa) const
Definition: ERF_Phys_prop.H:187
void get_r_sw_ext(int &id, real2d &r_sw_ext) const
Definition: ERF_Phys_prop.H:250
void get_sw_nonhygro_ext(int &id, real1d &sw_nonhygro_ext) const
Definition: ERF_Phys_prop.H:180
void get_ref_real_aer_sw(int &id, real1d &ref_real_aer_sw) const
Definition: ERF_Phys_prop.H:222
void get_sw_nonhygro_scat(int &id, real1d &sw_nonhygro_scat) const
Definition: ERF_Phys_prop.H:201
void get_prefr(int &id, int &prefr) const
Definition: ERF_Phys_prop.H:390
void get_ref_im_aer_sw(int &id, real1d &ref_im_aer_sw) const
Definition: ERF_Phys_prop.H:236
void get_lw_hygro_abs(int &id, real2d &lw_hygro_abs) const
Definition: ERF_Phys_prop.H:173
void get_sigmag(int &id, real &sigmag) const
Definition: ERF_Phys_prop.H:404
void get_dgnum(int &id, real &dgnum) const
Definition: ERF_Phys_prop.H:411
void get_r_lw_abs(int &id, real2d &r_lw_abs) const
Definition: ERF_Phys_prop.H:271
void get_refitablw(int &id, real2d &refitablw) const
Definition: ERF_Phys_prop.H:334
void get_ref_real_aer_lw(int &id, real1d &ref_real_aer_lw) const
Definition: ERF_Phys_prop.H:229
void get_hygro_aer(int &id, real &hygro_aer) const
Definition: ERF_Phys_prop.H:355
void get_mu(int &id, real1d &mu) const
Definition: ERF_Phys_prop.H:278
void get_sw_nonhygro_asm(int &id, real1d &sw_nonhygro_asm) const
Definition: ERF_Phys_prop.H:194
void get_abspsw(int &id, real4d &abspsw) const
Definition: ERF_Phys_prop.H:292
void get_opticstype(int &id, std::string &opticstype) const
Definition: ERF_Phys_prop.H:145
void get_extpsw(int &id, real4d &extpsw) const
Definition: ERF_Phys_prop.H:285
void get_aername(int &id, std::string &aername) const
Definition: ERF_Phys_prop.H:341
void get_ref_im_aer_lw(int &id, real1d &ref_im_aer_lw) const
Definition: ERF_Phys_prop.H:243
void physprop_accum_unique_files(const std::string &filename, const std::string &type)
Definition: ERF_Phys_prop.H:92
void get_sw_hygro_ssa(int &id, real2d &sw_hygro_ssa) const
Definition: ERF_Phys_prop.H:159
void get_ncoef(int &id, int &ncoef) const
Definition: ERF_Phys_prop.H:383
void get_sw_hygro_ext(int &id, real2d &sw_hygro_ext) const
Definition: ERF_Phys_prop.H:152
void get_refrtablw(int &id, real2d &refrtablw) const
Definition: ERF_Phys_prop.H:327
void get_r_sw_scat(int &id, real2d &r_sw_scat) const
Definition: ERF_Phys_prop.H:257
void get_sw_nonhygro_ascat(int &id, real1d &sw_nonhygro_ascat) const
Definition: ERF_Phys_prop.H:208
void get_dryrad_aer(int &id, real &dryrad_aer) const
Definition: ERF_Phys_prop.H:362
void get_dispersion_aer(int &id, real &dispersion_aer) const
Definition: ERF_Phys_prop.H:369
void get_refrtabsw(int &id, real2d &refrtabsw) const
Definition: ERF_Phys_prop.H:313
void get_asmpsw(int &id, real4d &asmpsw) const
Definition: ERF_Phys_prop.H:299
void get_rhdeliques(int &id, real &rhdeliques) const
Definition: ERF_Phys_prop.H:439
int physprop_get_id(std::string filename) const
Definition: ERF_Phys_prop.H:125
void get_num_to_mass_aer(int &id, real &num_to_mass_aer) const
Definition: ERF_Phys_prop.H:376
void get_refitabsw(int &id, real2d &refitabsw) const
Definition: ERF_Phys_prop.H:320
void get_density_aer(int &id, real &density_aer) const
Definition: ERF_Phys_prop.H:348
void get_absplw(int &id, real4d &absplw) const
Definition: ERF_Phys_prop.H:306
void get_r_sw_ascat(int &id, real2d &r_sw_ascat) const
Definition: ERF_Phys_prop.H:264
void get_rhcrystal(int &id, real &rhcrystal) const
Definition: ERF_Phys_prop.H:432
void get_prefi(int &id, int &prefi) const
Definition: ERF_Phys_prop.H:397
void get_sw_hygro_asm(int &id, real2d &sw_hygro_asm) const
Definition: ERF_Phys_prop.H:166
void get_dgnumlo(int &id, real &dgnumlo) const
Definition: ERF_Phys_prop.H:418
void get_lw_abs(int &id, real1d &lw_abs) const
Definition: ERF_Phys_prop.H:215
void get_dgnumhi(int &id, real &dgnumhi) const
Definition: ERF_Phys_prop.H:425
static int rad_gas_index(std::string gasname)
Definition: ERF_Rad_constants.H:255
Definition: ERF_Mam4_constituents.H:81
std::vector< aerosol_t > aer
Definition: ERF_Mam4_constituents.H:84
std::string list_id
Definition: ERF_Mam4_constituents.H:83
int numaerosols
Definition: ERF_Mam4_constituents.H:82
Definition: ERF_Mam4_constituents.H:72
std::string physprop_file
Definition: ERF_Mam4_constituents.H:75
std::string camname
Definition: ERF_Mam4_constituents.H:74
std::string mass_name
Definition: ERF_Mam4_constituents.H:76
int idx
Definition: ERF_Mam4_constituents.H:77
int physprop_id
Definition: ERF_Mam4_constituents.H:78
std::string source
Definition: ERF_Mam4_constituents.H:73
Definition: ERF_Mam4_constituents.H:58
std::string source
Definition: ERF_Mam4_constituents.H:59
int idx
Definition: ERF_Mam4_constituents.H:62
std::string camname
Definition: ERF_Mam4_constituents.H:60
std::string mass_name
Definition: ERF_Mam4_constituents.H:61
Definition: ERF_Mam4_constituents.H:65
std::string list_id
Definition: ERF_Mam4_constituents.H:67
int ngas
Definition: ERF_Mam4_constituents.H:66
std::vector< gas_t > gas
Definition: ERF_Mam4_constituents.H:68
Definition: ERF_Mam4_constituents.H:29
std::vector< std::string > source_mmr_a
Definition: ERF_Mam4_constituents.H:36
std::vector< int > idx_mmr_c
Definition: ERF_Mam4_constituents.H:45
int idx_num_a
Definition: ERF_Mam4_constituents.H:42
std::string source_num_c
Definition: ERF_Mam4_constituents.H:34
std::vector< std::string > camname_mmr_a
Definition: ERF_Mam4_constituents.H:37
std::vector< std::string > props
Definition: ERF_Mam4_constituents.H:41
std::vector< int > idx_mmr_a
Definition: ERF_Mam4_constituents.H:44
std::string camname_num_a
Definition: ERF_Mam4_constituents.H:33
std::vector< std::string > source_mmr_c
Definition: ERF_Mam4_constituents.H:38
std::string camname_num_c
Definition: ERF_Mam4_constituents.H:35
std::vector< int > idx_props
Definition: ERF_Mam4_constituents.H:46
std::vector< std::string > type
Definition: ERF_Mam4_constituents.H:40
int nspec
Definition: ERF_Mam4_constituents.H:30
std::vector< std::string > camname_mmr_c
Definition: ERF_Mam4_constituents.H:39
std::string source_num_a
Definition: ERF_Mam4_constituents.H:32
int idx_num_c
Definition: ERF_Mam4_constituents.H:43
Definition: ERF_Mam4_constituents.H:88
std::vector< int > idx_props
Definition: ERF_Mam4_constituents.H:93
std::vector< int > idx
Definition: ERF_Mam4_constituents.H:91
std::string list_id
Definition: ERF_Mam4_constituents.H:90
std::vector< std::string > physprop_files
Definition: ERF_Mam4_constituents.H:92
int nmodes
Definition: ERF_Mam4_constituents.H:89
Definition: ERF_Mam4_constituents.H:50
std::vector< mode_component_t > comps
Definition: ERF_Mam4_constituents.H:54
int nmodes
Definition: ERF_Mam4_constituents.H:51
std::vector< std::string > names
Definition: ERF_Mam4_constituents.H:52
std::vector< std::string > types
Definition: ERF_Mam4_constituents.H:53