1 #ifndef TWOSTREAM_INTERFACE_H 2 #define TWOSTREAM_INTERFACE_H 5 #include <blitz/array.h> 20 void twostream_ls_brdf_supplement_m_twostream_ls_brdfmaster_wrap(
const int* maxbeams_in,
const int* max_user_streams_in,
const int* max_user_obsgeoms_in,
const int* maxstreams_brdf_in,
const int* max_brdf_kernels_in,
const int* max_brdf_parameters_in,
const int* max_surfacewfs_in,
const bool* do_solar_sources_in,
const bool* do_user_obsgeoms_in,
const bool* lambertian_kernel_flag_in,
const bool* do_shadow_effect_in,
const bool* do_surface_emission_in,
const int* nbeams_in,
const int* n_user_streams_in,
const int* n_user_obsgeoms_in,
const double* beam_szas_in,
const double* user_angles_in,
const double* user_obsgeoms_in,
const double* stream_value_in,
const int* nstreams_brdf_in,
const int* n_brdf_kernels_in,
const int* which_brdf_in,
const double* brdf_factors_in,
const int* n_brdf_parameters_in,
const double* brdf_parameters_in,
const bool* do_kernel_factor_wfs_in,
const bool* do_kernel_params_wfs_in,
const bool* do_kparams_derivs_in,
const int* n_surface_wfs_in,
const int* n_kernel_factor_wfs_in,
const int* n_kernel_params_wfs_in,
const double* brdf_f_0_in,
const double* brdf_f_in,
const double* ubrdf_f_in,
const double* emissivity_in,
const double* ls_brdf_f_0_in,
const double* ls_brdf_f_in,
const double* ls_ubrdf_f_in,
const double* ls_emissivity_in,
const int* status_brdfsup_in,
const int* message_len,
const char* message_in,
const int* action_len,
const char* action_in);
26 Twostream_Ls_Brdf_Supplement(
const int& maxbeams_in,
const int& max_user_streams_in,
const int& max_user_obsgeoms_in,
const int& maxstreams_brdf_in,
const int& max_brdf_kernels_in,
const int& max_brdf_parameters_in,
const int& max_surfacewfs_in,
const int& nbeams_in,
const int& n_user_streams_in,
const int& nstreams_brdf_in) : maxbeams_(maxbeams_in), max_user_streams_(max_user_streams_in), max_user_obsgeoms_(max_user_obsgeoms_in), maxstreams_brdf_(maxstreams_brdf_in), max_brdf_kernels_(max_brdf_kernels_in), max_brdf_parameters_(max_brdf_parameters_in), max_surfacewfs_(max_surfacewfs_in), nbeams_(nbeams_in), n_user_streams_(n_user_streams_in), nstreams_brdf_(nstreams_brdf_in)
28 do_solar_sources_ =
false;
29 do_user_obsgeoms_ =
false;
30 lambertian_kernel_flag_.reference( blitz::Array<bool, 1>(max_brdf_kernels_, blitz::ColumnMajorArray<1>()) );
31 lambertian_kernel_flag_ =
false;
32 do_shadow_effect_ =
false;
33 do_surface_emission_ =
false;
35 beam_szas_.reference( blitz::Array<double, 1>(maxbeams_, blitz::ColumnMajorArray<1>()) );
37 user_angles_.reference( blitz::Array<double, 1>(max_user_streams_, blitz::ColumnMajorArray<1>()) );
39 user_obsgeoms_.reference( blitz::Array<double, 2>(max_user_obsgeoms_, 3, blitz::ColumnMajorArray<2>()) );
43 which_brdf_.reference( blitz::Array<int, 1>(max_brdf_kernels_, blitz::ColumnMajorArray<1>()) );
45 brdf_factors_.reference( blitz::Array<double, 1>(max_brdf_kernels_, blitz::ColumnMajorArray<1>()) );
47 n_brdf_parameters_.reference( blitz::Array<int, 1>(max_brdf_kernels_, blitz::ColumnMajorArray<1>()) );
48 n_brdf_parameters_ = 0;
49 brdf_parameters_.reference( blitz::Array<double, 2>(max_brdf_kernels_, max_brdf_parameters_, blitz::ColumnMajorArray<2>()) );
51 do_kernel_factor_wfs_.reference( blitz::Array<bool, 1>(max_brdf_kernels_, blitz::ColumnMajorArray<1>()) );
52 do_kernel_factor_wfs_ =
false;
53 do_kernel_params_wfs_.reference( blitz::Array<bool, 2>(max_brdf_kernels_, max_brdf_parameters_, blitz::ColumnMajorArray<2>()) );
54 do_kernel_params_wfs_ =
false;
55 do_kparams_derivs_.reference( blitz::Array<bool, 1>(max_brdf_kernels_, blitz::ColumnMajorArray<1>()) );
56 do_kparams_derivs_ =
false;
58 n_kernel_factor_wfs_ = 0;
59 n_kernel_params_wfs_ = 0;
60 brdf_f_0_.reference( blitz::Array<double, 2>(1-0+1, maxbeams_, blitz::ColumnMajorArray<2>()) );
62 brdf_f_.reference( blitz::Array<double, 1>(1-0+1, blitz::ColumnMajorArray<1>()) );
64 ubrdf_f_.reference( blitz::Array<double, 2>(1-0+1, max_user_streams_, blitz::ColumnMajorArray<2>()) );
67 ls_brdf_f_0_.reference( blitz::Array<double, 3>(max_surfacewfs_, 1-0+1, maxbeams_, blitz::ColumnMajorArray<3>()) );
69 ls_brdf_f_.reference( blitz::Array<double, 2>(max_surfacewfs_, 1-0+1, blitz::ColumnMajorArray<2>()) );
71 ls_ubrdf_f_.reference( blitz::Array<double, 3>(max_surfacewfs_, 1-0+1, max_user_streams_, blitz::ColumnMajorArray<3>()) );
73 ls_emissivity_.reference( blitz::Array<double, 1>(max_surfacewfs_, blitz::ColumnMajorArray<1>()) );
76 message_.reference( blitz::Array<char, 1>(101, blitz::ColumnMajorArray<1>()) );
78 action_.reference( blitz::Array<char, 1>(101, blitz::ColumnMajorArray<1>()) );
91 return max_user_streams_;
97 return max_user_obsgeoms_;
103 return maxstreams_brdf_;
109 return max_brdf_kernels_;
115 return max_brdf_parameters_;
121 return max_surfacewfs_;
127 return do_solar_sources_;
131 do_solar_sources_ = do_solar_sources_in;
137 return do_user_obsgeoms_;
141 do_user_obsgeoms_ = do_user_obsgeoms_in;
147 return lambertian_kernel_flag_;
151 lambertian_kernel_flag_ = lambertian_kernel_flag_in;
157 return do_shadow_effect_;
161 do_shadow_effect_ = do_shadow_effect_in;
167 return do_surface_emission_;
171 do_surface_emission_ = do_surface_emission_in;
183 return n_user_streams_;
189 return n_user_obsgeoms_;
193 n_user_obsgeoms_ = n_user_obsgeoms_in;
202 void beam_szas(
const blitz::Array<double, 1>& beam_szas_in) {
203 beam_szas_ = beam_szas_in;
213 user_angles_ = user_angles_in;
219 return user_obsgeoms_;
223 user_obsgeoms_ = user_obsgeoms_in;
229 return stream_value_;
233 stream_value_ = stream_value_in;
239 return nstreams_brdf_;
245 return n_brdf_kernels_;
249 n_brdf_kernels_ = n_brdf_kernels_in;
259 which_brdf_ = which_brdf_in;
265 return brdf_factors_;
269 brdf_factors_ = brdf_factors_in;
275 return n_brdf_parameters_;
279 n_brdf_parameters_ = n_brdf_parameters_in;
285 return brdf_parameters_;
289 brdf_parameters_ = brdf_parameters_in;
295 return do_kernel_factor_wfs_;
299 do_kernel_factor_wfs_ = do_kernel_factor_wfs_in;
305 return do_kernel_params_wfs_;
309 do_kernel_params_wfs_ = do_kernel_params_wfs_in;
315 return do_kparams_derivs_;
321 return n_surface_wfs_;
327 return n_kernel_factor_wfs_;
333 return n_kernel_params_wfs_;
344 const blitz::Array<double, 1>&
brdf_f()
const {
350 const blitz::Array<double, 2>&
ubrdf_f()
const {
381 return ls_emissivity_;
387 return status_brdfsup_;
393 std::string message_ret;
394 message_ret = ( std::string(std::string(message_(blitz::Range::all()).begin(), message_(blitz::Range::all()).end()).c_str()) );
401 std::string action_ret;
402 action_ret = ( std::string(std::string(action_(blitz::Range::all()).begin(), action_(blitz::Range::all()).end()).c_str()) );
410 int message_len = (int) message_.extent(0) - 1;
411 int action_len = (int) action_.extent(0) - 1;
413 twostream_ls_brdf_supplement_m_twostream_ls_brdfmaster_wrap(&maxbeams_, &max_user_streams_, &max_user_obsgeoms_, &maxstreams_brdf_, &max_brdf_kernels_, &max_brdf_parameters_, &max_surfacewfs_, &do_solar_sources_, &do_user_obsgeoms_, lambertian_kernel_flag_.dataFirst(), &do_shadow_effect_, &do_surface_emission_, &nbeams_, &n_user_streams_, &n_user_obsgeoms_, beam_szas_.dataFirst(), user_angles_.dataFirst(), user_obsgeoms_.dataFirst(), &stream_value_, &nstreams_brdf_, &n_brdf_kernels_, which_brdf_.dataFirst(), brdf_factors_.dataFirst(), n_brdf_parameters_.dataFirst(), brdf_parameters_.dataFirst(), do_kernel_factor_wfs_.dataFirst(), do_kernel_params_wfs_.dataFirst(), do_kparams_derivs_.dataFirst(), &n_surface_wfs_, &n_kernel_factor_wfs_, &n_kernel_params_wfs_, brdf_f_0_.dataFirst(), brdf_f_.dataFirst(), ubrdf_f_.dataFirst(), &emissivity_, ls_brdf_f_0_.dataFirst(), ls_brdf_f_.dataFirst(), ls_ubrdf_f_.dataFirst(), ls_emissivity_.dataFirst(), &status_brdfsup_, &message_len, message_.dataFirst(), &action_len, action_.dataFirst());
418 output_stream <<
"Twostream_Ls_Brdf_Supplement:" << std::endl
419 <<
" maxbeams: " << obj.
maxbeams() << std::endl
431 <<
" nbeams: " << obj.
nbeams() << std::endl
434 <<
" beam_szas: " << std::endl << obj.
beam_szas() << std::endl
435 <<
" user_angles: " << std::endl << obj.
user_angles() << std::endl
436 <<
" user_obsgeoms: " << std::endl << obj.
user_obsgeoms() << std::endl
440 <<
" which_brdf: " << std::endl << obj.
which_brdf() << std::endl
441 <<
" brdf_factors: " << std::endl << obj.
brdf_factors() << std::endl
443 <<
" brdf_parameters: " << std::endl << obj.
brdf_parameters() << std::endl
450 <<
" brdf_f_0: " << std::endl << obj.
brdf_f_0() << std::endl
451 <<
" brdf_f: " << std::endl << obj.
brdf_f() << std::endl
452 <<
" ubrdf_f: " << std::endl << obj.
ubrdf_f() << std::endl
453 <<
" emissivity: " << obj.
emissivity() << std::endl
454 <<
" ls_brdf_f_0: " << std::endl << obj.
ls_brdf_f_0() << std::endl
455 <<
" ls_brdf_f: " << std::endl << obj.
ls_brdf_f() << std::endl
456 <<
" ls_ubrdf_f: " << std::endl << obj.
ls_ubrdf_f() << std::endl
457 <<
" ls_emissivity: " << std::endl << obj.
ls_emissivity() << std::endl
459 <<
" message: " <<
"\"" << obj.
message() <<
"\"" << std::endl
460 <<
" action: " <<
"\"" << obj.
action() <<
"\"" << std::endl;
461 return output_stream;
467 int max_user_streams_;
468 int max_user_obsgeoms_;
469 int maxstreams_brdf_;
470 int max_brdf_kernels_;
471 int max_brdf_parameters_;
473 bool do_solar_sources_;
474 bool do_user_obsgeoms_;
475 blitz::Array<bool, 1> lambertian_kernel_flag_;
476 bool do_shadow_effect_;
477 bool do_surface_emission_;
480 int n_user_obsgeoms_;
481 blitz::Array<double, 1> beam_szas_;
482 blitz::Array<double, 1> user_angles_;
483 blitz::Array<double, 2> user_obsgeoms_;
484 double stream_value_;
487 blitz::Array<int, 1> which_brdf_;
488 blitz::Array<double, 1> brdf_factors_;
489 blitz::Array<int, 1> n_brdf_parameters_;
490 blitz::Array<double, 2> brdf_parameters_;
491 blitz::Array<bool, 1> do_kernel_factor_wfs_;
492 blitz::Array<bool, 2> do_kernel_params_wfs_;
493 blitz::Array<bool, 1> do_kparams_derivs_;
495 int n_kernel_factor_wfs_;
496 int n_kernel_params_wfs_;
497 blitz::Array<double, 2> brdf_f_0_;
498 blitz::Array<double, 1> brdf_f_;
499 blitz::Array<double, 2> ubrdf_f_;
501 blitz::Array<double, 3> ls_brdf_f_0_;
502 blitz::Array<double, 2> ls_brdf_f_;
503 blitz::Array<double, 3> ls_ubrdf_f_;
504 blitz::Array<double, 1> ls_emissivity_;
506 blitz::Array<char, 1> message_;
507 blitz::Array<char, 1> action_;
516 void twostream_lps_master_m_twostream_lps_master_wrap(
const int* maxlayers_in,
const int* maxtotal_in,
const int* maxmessages_in,
const int* maxbeams_in,
const int* max_geometries_in,
const int* max_user_streams_in,
const int* max_user_relazms_in,
const int* max_user_obsgeoms_in,
const int* max_atmoswfs_in,
const int* max_surfacewfs_in,
const int* max_sleavewfs_in,
const bool* do_upwelling_in,
const bool* do_dnwelling_in,
const bool* do_plane_parallel_in,
const bool* do_2s_levelout_in,
const bool* do_mvout_only_in,
const bool* do_additional_mvout_in,
const bool* do_solar_sources_in,
const bool* do_thermal_emission_in,
const bool* do_surface_emission_in,
const bool* do_d2s_scaling_in,
const bool* do_brdf_surface_in,
const bool* do_user_obsgeoms_in,
const bool* do_surface_leaving_in,
const bool* do_sl_isotropic_in,
const bool* do_pentadiag_inverse_in,
const int* bvpindex_in,
const double* bvpscalefactor_in,
const int* taylor_order_in,
const double* taylor_small_in,
const double* tcutoff_in,
const int* nlayers_in,
const int* ntotal_in,
const double* stream_value_in,
const int* n_user_obsgeoms_in,
const double* user_obsgeoms_in,
const int* n_user_streams_in,
const double* user_angles_in,
const int* n_user_relazms_in,
const double* user_relazms_in,
const double* flux_factor_in,
const int* nbeams_in,
const double* beam_szas_in,
const double* earth_radius_in,
const double* height_grid_in,
const double* deltau_input_in,
const double* omega_input_in,
const double* asymm_input_in,
const double* d2s_scaling_in,
const double* thermal_bb_input_in,
const double* lambertian_albedo_in,
const double* brdf_f_0_in,
const double* brdf_f_in,
const double* ubrdf_f_in,
const double* emissivity_in,
const double* surfbb_in,
const double* slterm_isotropic_in,
const double* slterm_f_0_in,
const bool* do_profile_wfs_in,
const bool* do_surface_wfs_in,
const bool* do_sleave_wfs_in,
const bool* layer_vary_flag_in,
const int* layer_vary_number_in,
const int* n_surface_wfs_in,
const int* n_sleave_wfs_in,
const double* lssl_slterm_isotropic_in,
const double* lssl_slterm_f_0_in,
const double* l_deltau_input_in,
const double* l_omega_input_in,
const double* l_asymm_input_in,
const double* l_d2s_scaling_in,
const double* ls_brdf_f_0_in,
const double* ls_brdf_f_in,
const double* ls_ubrdf_f_in,
const double* ls_emissivity_in,
const double* intensity_toa_in,
const double* profilewf_toa_in,
const double* surfacewf_toa_in,
const double* intensity_boa_in,
const double* profilewf_boa_in,
const double* surfacewf_boa_in,
const double* radlevel_up_in,
const double* radlevel_dn_in,
const int* n_geometries_in,
const double* profjaclevel_up_in,
const double* profjaclevel_dn_in,
const double* surfjaclevel_up_in,
const double* surfjaclevel_dn_in,
const double* fluxes_toa_in,
const double* profjacfluxes_toa_in,
const double* surfjacfluxes_toa_in,
const double* fluxes_boa_in,
const double* profjacfluxes_boa_in,
const double* surfjacfluxes_boa_in,
const int* status_inputcheck_in,
const int* c_nmessages_in,
const int* c_messages_shape_1,
const int* c_messages_len,
const char* c_messages_in,
const int* c_actions_shape_1,
const int* c_actions_len,
const char* c_actions_in,
const int* status_execution_in,
const int* e_message_len,
const char* e_message_in,
const int* e_trace_1_len,
const char* e_trace_1_in,
const int* e_trace_2_len,
const char* e_trace_2_in);
522 Twostream_Lps_Master(
const int& maxlayers_in,
const int& maxtotal_in,
const int& maxmessages_in,
const int& maxbeams_in,
const int& max_geometries_in,
const int& max_user_streams_in,
const int& max_user_relazms_in,
const int& max_user_obsgeoms_in,
const int& max_atmoswfs_in,
const int& max_surfacewfs_in,
const int& max_sleavewfs_in,
const int& nlayers_in,
const int& ntotal_in,
const int& n_user_streams_in,
const int& n_user_relazms_in,
const int& nbeams_in,
const double& earth_radius_in,
const int& n_geometries_in) : maxlayers_(maxlayers_in), maxtotal_(maxtotal_in), maxmessages_(maxmessages_in), maxbeams_(maxbeams_in), max_geometries_(max_geometries_in), max_user_streams_(max_user_streams_in), max_user_relazms_(max_user_relazms_in), max_user_obsgeoms_(max_user_obsgeoms_in), max_atmoswfs_(max_atmoswfs_in), max_surfacewfs_(max_surfacewfs_in), max_sleavewfs_(max_sleavewfs_in), nlayers_(nlayers_in), ntotal_(ntotal_in), n_user_streams_(n_user_streams_in), n_user_relazms_(n_user_relazms_in), nbeams_(nbeams_in), earth_radius_(earth_radius_in), n_geometries_(n_geometries_in)
524 do_upwelling_ =
false;
525 do_dnwelling_ =
false;
526 do_plane_parallel_ =
false;
527 do_2s_levelout_ =
false;
528 do_mvout_only_ =
false;
529 do_additional_mvout_ =
false;
530 do_solar_sources_ =
false;
531 do_thermal_emission_ =
false;
532 do_surface_emission_ =
false;
533 do_d2s_scaling_ =
false;
534 do_brdf_surface_ =
false;
535 do_user_obsgeoms_ =
false;
536 do_surface_leaving_ =
false;
537 do_sl_isotropic_ =
false;
538 do_pentadiag_inverse_ =
false;
545 n_user_obsgeoms_ = 0;
546 user_obsgeoms_.reference( blitz::Array<double, 2>(max_user_obsgeoms_, 3, blitz::ColumnMajorArray<2>()) );
548 user_angles_.reference( blitz::Array<double, 1>(max_user_streams_, blitz::ColumnMajorArray<1>()) );
550 user_relazms_.reference( blitz::Array<double, 1>(max_user_relazms_, blitz::ColumnMajorArray<1>()) );
553 beam_szas_.reference( blitz::Array<double, 1>(maxbeams_, blitz::ColumnMajorArray<1>()) );
555 height_grid_.reference( blitz::Array<double, 1>(maxlayers_-0+1, blitz::ColumnMajorArray<1>()) );
557 deltau_input_.reference( blitz::Array<double, 1>(maxlayers_, blitz::ColumnMajorArray<1>()) );
559 omega_input_.reference( blitz::Array<double, 1>(maxlayers_, blitz::ColumnMajorArray<1>()) );
561 asymm_input_.reference( blitz::Array<double, 1>(maxlayers_, blitz::ColumnMajorArray<1>()) );
563 d2s_scaling_.reference( blitz::Array<double, 1>(maxlayers_, blitz::ColumnMajorArray<1>()) );
565 thermal_bb_input_.reference( blitz::Array<double, 1>(maxlayers_-0+1, blitz::ColumnMajorArray<1>()) );
566 thermal_bb_input_ = 0;
567 lambertian_albedo_ = 0;
568 brdf_f_0_.reference( blitz::Array<double, 2>(1-0+1, maxbeams_, blitz::ColumnMajorArray<2>()) );
570 brdf_f_.reference( blitz::Array<double, 1>(1-0+1, blitz::ColumnMajorArray<1>()) );
572 ubrdf_f_.reference( blitz::Array<double, 2>(1-0+1, max_user_streams_, blitz::ColumnMajorArray<2>()) );
576 slterm_isotropic_.reference( blitz::Array<double, 1>(maxbeams_, blitz::ColumnMajorArray<1>()) );
577 slterm_isotropic_ = 0;
578 slterm_f_0_.reference( blitz::Array<double, 2>(1-0+1, maxbeams_, blitz::ColumnMajorArray<2>()) );
580 do_profile_wfs_ =
false;
581 do_surface_wfs_ =
false;
582 do_sleave_wfs_ =
false;
583 layer_vary_flag_.reference( blitz::Array<bool, 1>(maxlayers_, blitz::ColumnMajorArray<1>()) );
584 layer_vary_flag_ =
false;
585 layer_vary_number_.reference( blitz::Array<int, 1>(maxlayers_, blitz::ColumnMajorArray<1>()) );
586 layer_vary_number_ = 0;
589 lssl_slterm_isotropic_.reference( blitz::Array<double, 2>(max_sleavewfs_, maxbeams_, blitz::ColumnMajorArray<2>()) );
590 lssl_slterm_isotropic_ = 0;
591 lssl_slterm_f_0_.reference( blitz::Array<double, 3>(max_sleavewfs_, 1-0+1, maxbeams_, blitz::ColumnMajorArray<3>()) );
592 lssl_slterm_f_0_ = 0;
593 l_deltau_input_.reference( blitz::Array<double, 2>(maxlayers_, max_atmoswfs_, blitz::ColumnMajorArray<2>()) );
595 l_omega_input_.reference( blitz::Array<double, 2>(maxlayers_, max_atmoswfs_, blitz::ColumnMajorArray<2>()) );
597 l_asymm_input_.reference( blitz::Array<double, 2>(maxlayers_, max_atmoswfs_, blitz::ColumnMajorArray<2>()) );
599 l_d2s_scaling_.reference( blitz::Array<double, 2>(maxlayers_, max_atmoswfs_, blitz::ColumnMajorArray<2>()) );
601 ls_brdf_f_0_.reference( blitz::Array<double, 3>(max_surfacewfs_, 1-0+1, maxbeams_, blitz::ColumnMajorArray<3>()) );
603 ls_brdf_f_.reference( blitz::Array<double, 2>(max_surfacewfs_, 1-0+1, blitz::ColumnMajorArray<2>()) );
605 ls_ubrdf_f_.reference( blitz::Array<double, 3>(max_surfacewfs_, 1-0+1, max_user_streams_, blitz::ColumnMajorArray<3>()) );
607 ls_emissivity_.reference( blitz::Array<double, 1>(max_surfacewfs_, blitz::ColumnMajorArray<1>()) );
609 intensity_toa_.reference( blitz::Array<double, 1>(max_geometries_, blitz::ColumnMajorArray<1>()) );
611 profilewf_toa_.reference( blitz::Array<double, 3>(max_geometries_, maxlayers_, max_atmoswfs_, blitz::ColumnMajorArray<3>()) );
613 surfacewf_toa_.reference( blitz::Array<double, 2>(max_geometries_, max_surfacewfs_, blitz::ColumnMajorArray<2>()) );
615 intensity_boa_.reference( blitz::Array<double, 1>(max_geometries_, blitz::ColumnMajorArray<1>()) );
617 profilewf_boa_.reference( blitz::Array<double, 3>(max_geometries_, maxlayers_, max_atmoswfs_, blitz::ColumnMajorArray<3>()) );
619 surfacewf_boa_.reference( blitz::Array<double, 2>(max_geometries_, max_surfacewfs_, blitz::ColumnMajorArray<2>()) );
621 radlevel_up_.reference( blitz::Array<double, 2>(max_geometries_, maxlayers_-0+1, blitz::ColumnMajorArray<2>()) );
623 radlevel_dn_.reference( blitz::Array<double, 2>(max_geometries_, maxlayers_-0+1, blitz::ColumnMajorArray<2>()) );
625 profjaclevel_up_.reference( blitz::Array<double, 4>(max_geometries_, maxlayers_-0+1, maxlayers_, max_atmoswfs_, blitz::ColumnMajorArray<4>()) );
626 profjaclevel_up_ = 0;
627 profjaclevel_dn_.reference( blitz::Array<double, 4>(max_geometries_, maxlayers_-0+1, maxlayers_, max_atmoswfs_, blitz::ColumnMajorArray<4>()) );
628 profjaclevel_dn_ = 0;
629 surfjaclevel_up_.reference( blitz::Array<double, 3>(max_geometries_, maxlayers_-0+1, max_surfacewfs_, blitz::ColumnMajorArray<3>()) );
630 surfjaclevel_up_ = 0;
631 surfjaclevel_dn_.reference( blitz::Array<double, 3>(max_geometries_, maxlayers_-0+1, max_surfacewfs_, blitz::ColumnMajorArray<3>()) );
632 surfjaclevel_dn_ = 0;
633 fluxes_toa_.reference( blitz::Array<double, 2>(maxbeams_, 2, blitz::ColumnMajorArray<2>()) );
635 profjacfluxes_toa_.reference( blitz::Array<double, 4>(maxbeams_, 2, maxlayers_, max_atmoswfs_, blitz::ColumnMajorArray<4>()) );
636 profjacfluxes_toa_ = 0;
637 surfjacfluxes_toa_.reference( blitz::Array<double, 3>(maxbeams_, 2, max_surfacewfs_, blitz::ColumnMajorArray<3>()) );
638 surfjacfluxes_toa_ = 0;
639 fluxes_boa_.reference( blitz::Array<double, 2>(maxbeams_, 2, blitz::ColumnMajorArray<2>()) );
641 profjacfluxes_boa_.reference( blitz::Array<double, 4>(maxbeams_, 2, maxlayers_, max_atmoswfs_, blitz::ColumnMajorArray<4>()) );
642 profjacfluxes_boa_ = 0;
643 surfjacfluxes_boa_.reference( blitz::Array<double, 3>(maxbeams_, 2, max_surfacewfs_, blitz::ColumnMajorArray<3>()) );
644 surfjacfluxes_boa_ = 0;
645 status_inputcheck_ = 0;
647 c_messages_.reference( blitz::Array<char, 2>(100, 101, blitz::ColumnMajorArray<2>()) );
649 c_actions_.reference( blitz::Array<char, 2>(100, 101, blitz::ColumnMajorArray<2>()) );
651 status_execution_ = 0;
652 e_message_.reference( blitz::Array<char, 1>(101, blitz::ColumnMajorArray<1>()) );
654 e_trace_1_.reference( blitz::Array<char, 1>(101, blitz::ColumnMajorArray<1>()) );
656 e_trace_2_.reference( blitz::Array<char, 1>(101, blitz::ColumnMajorArray<1>()) );
687 return max_geometries_;
693 return max_user_streams_;
699 return max_user_relazms_;
705 return max_user_obsgeoms_;
711 return max_atmoswfs_;
717 return max_surfacewfs_;
723 return max_sleavewfs_;
729 return do_upwelling_;
733 do_upwelling_ = do_upwelling_in;
739 return do_dnwelling_;
743 do_dnwelling_ = do_dnwelling_in;
749 return do_plane_parallel_;
753 do_plane_parallel_ = do_plane_parallel_in;
759 return do_2s_levelout_;
763 do_2s_levelout_ = do_2s_levelout_in;
769 return do_mvout_only_;
773 do_mvout_only_ = do_mvout_only_in;
779 return do_additional_mvout_;
783 do_additional_mvout_ = do_additional_mvout_in;
789 return do_solar_sources_;
793 do_solar_sources_ = do_solar_sources_in;
799 return do_thermal_emission_;
803 do_thermal_emission_ = do_thermal_emission_in;
809 return do_surface_emission_;
813 do_surface_emission_ = do_surface_emission_in;
819 return do_d2s_scaling_;
823 do_d2s_scaling_ = do_d2s_scaling_in;
829 return do_brdf_surface_;
833 do_brdf_surface_ = do_brdf_surface_in;
839 return do_user_obsgeoms_;
843 do_user_obsgeoms_ = do_user_obsgeoms_in;
849 return do_surface_leaving_;
853 do_surface_leaving_ = do_surface_leaving_in;
859 return do_sl_isotropic_;
863 do_sl_isotropic_ = do_sl_isotropic_in;
869 return do_pentadiag_inverse_;
873 do_pentadiag_inverse_ = do_pentadiag_inverse_in;
883 bvpindex_ = bvpindex_in;
889 return bvpscalefactor_;
893 bvpscalefactor_ = bvpscalefactor_in;
899 return taylor_order_;
903 taylor_order_ = taylor_order_in;
909 return taylor_small_;
913 taylor_small_ = taylor_small_in;
923 tcutoff_ = tcutoff_in;
941 return stream_value_;
945 stream_value_ = stream_value_in;
951 return n_user_obsgeoms_;
955 n_user_obsgeoms_ = n_user_obsgeoms_in;
961 return user_obsgeoms_;
965 user_obsgeoms_ = user_obsgeoms_in;
971 return n_user_streams_;
981 user_angles_ = user_angles_in;
987 return n_user_relazms_;
993 return user_relazms_;
997 user_relazms_ = user_relazms_in;
1003 return flux_factor_;
1007 flux_factor_ = flux_factor_in;
1022 void beam_szas(
const blitz::Array<double, 1>& beam_szas_in) {
1023 beam_szas_ = beam_szas_in;
1029 return earth_radius_;
1035 return height_grid_;
1039 height_grid_ = height_grid_in;
1045 return deltau_input_;
1049 deltau_input_ = deltau_input_in;
1055 return omega_input_;
1059 omega_input_ = omega_input_in;
1065 return asymm_input_;
1069 asymm_input_ = asymm_input_in;
1075 return d2s_scaling_;
1079 d2s_scaling_ = d2s_scaling_in;
1085 return thermal_bb_input_;
1089 thermal_bb_input_ = thermal_bb_input_in;
1095 return lambertian_albedo_;
1099 lambertian_albedo_ = lambertian_albedo_in;
1114 void brdf_f_0(
const blitz::Array<double, 2>& brdf_f_0_in) {
1115 brdf_f_0_ = brdf_f_0_in;
1125 const blitz::Array<double, 1>&
brdf_f()
const {
1129 void brdf_f(
const blitz::Array<double, 1>& brdf_f_in) {
1130 brdf_f_ = brdf_f_in;
1143 void ubrdf_f(
const blitz::Array<double, 2>& ubrdf_f_in) {
1144 ubrdf_f_ = ubrdf_f_in;
1154 emissivity_ = emissivity_in;
1164 surfbb_ = surfbb_in;
1170 return slterm_isotropic_;
1174 slterm_isotropic_ = slterm_isotropic_in;
1184 slterm_f_0_ = slterm_f_0_in;
1190 return do_profile_wfs_;
1194 do_profile_wfs_ = do_profile_wfs_in;
1200 return do_surface_wfs_;
1204 do_surface_wfs_ = do_surface_wfs_in;
1210 return do_sleave_wfs_;
1214 do_sleave_wfs_ = do_sleave_wfs_in;
1220 return layer_vary_flag_;
1224 layer_vary_flag_ = layer_vary_flag_in;
1230 return layer_vary_number_;
1234 layer_vary_number_ = layer_vary_number_in;
1240 return n_surface_wfs_;
1244 n_surface_wfs_ = n_surface_wfs_in;
1250 return n_sleave_wfs_;
1254 n_sleave_wfs_ = n_sleave_wfs_in;
1260 return lssl_slterm_isotropic_;
1264 lssl_slterm_isotropic_ = lssl_slterm_isotropic_in;
1270 return lssl_slterm_f_0_;
1274 lssl_slterm_f_0_ = lssl_slterm_f_0_in;
1280 return l_deltau_input_;
1284 l_deltau_input_ = l_deltau_input_in;
1290 return l_omega_input_;
1294 l_omega_input_ = l_omega_input_in;
1300 return l_asymm_input_;
1304 l_asymm_input_ = l_asymm_input_in;
1310 return l_d2s_scaling_;
1314 l_d2s_scaling_ = l_d2s_scaling_in;
1320 return ls_brdf_f_0_;
1325 return ls_brdf_f_0_;
1329 ls_brdf_f_0_ = ls_brdf_f_0_in;
1342 void ls_brdf_f(
const blitz::Array<double, 2>& ls_brdf_f_in) {
1343 ls_brdf_f_ = ls_brdf_f_in;
1357 ls_ubrdf_f_ = ls_ubrdf_f_in;
1363 return ls_emissivity_;
1368 return ls_emissivity_;
1372 ls_emissivity_ = ls_emissivity_in;
1378 return intensity_toa_;
1382 intensity_toa_ = intensity_toa_in;
1388 return profilewf_toa_;
1392 profilewf_toa_ = profilewf_toa_in;
1398 return surfacewf_toa_;
1402 surfacewf_toa_ = surfacewf_toa_in;
1408 return intensity_boa_;
1412 intensity_boa_ = intensity_boa_in;
1418 return profilewf_boa_;
1422 profilewf_boa_ = profilewf_boa_in;
1428 return surfacewf_boa_;
1432 surfacewf_boa_ = surfacewf_boa_in;
1438 return radlevel_up_;
1442 radlevel_up_ = radlevel_up_in;
1448 return radlevel_dn_;
1452 radlevel_dn_ = radlevel_dn_in;
1458 return n_geometries_;
1464 return profjaclevel_up_;
1468 profjaclevel_up_ = profjaclevel_up_in;
1474 return profjaclevel_dn_;
1478 profjaclevel_dn_ = profjaclevel_dn_in;
1484 return surfjaclevel_up_;
1488 surfjaclevel_up_ = surfjaclevel_up_in;
1494 return surfjaclevel_dn_;
1498 surfjaclevel_dn_ = surfjaclevel_dn_in;
1508 fluxes_toa_ = fluxes_toa_in;
1514 return profjacfluxes_toa_;
1518 profjacfluxes_toa_ = profjacfluxes_toa_in;
1524 return surfjacfluxes_toa_;
1528 surfjacfluxes_toa_ = surfjacfluxes_toa_in;
1538 fluxes_boa_ = fluxes_boa_in;
1544 return profjacfluxes_boa_;
1548 profjacfluxes_boa_ = profjacfluxes_boa_in;
1554 return surfjacfluxes_boa_;
1558 surfjacfluxes_boa_ = surfjacfluxes_boa_in;
1564 return status_inputcheck_;
1570 return c_nmessages_;
1576 std::vector< std::string > c_messages_ret;
1577 for(
int dim_0_idx = 0; dim_0_idx < c_messages_.extent(0); dim_0_idx++)
1578 c_messages_ret.push_back( std::string(std::string(c_messages_(dim_0_idx, blitz::Range::all()).begin(), c_messages_(dim_0_idx, blitz::Range::all()).end()).c_str()) );
1579 return c_messages_ret;
1585 std::vector< std::string > c_actions_ret;
1586 for(
int dim_0_idx = 0; dim_0_idx < c_actions_.extent(0); dim_0_idx++)
1587 c_actions_ret.push_back( std::string(std::string(c_actions_(dim_0_idx, blitz::Range::all()).begin(), c_actions_(dim_0_idx, blitz::Range::all()).end()).c_str()) );
1588 return c_actions_ret;
1594 return status_execution_;
1600 std::string e_message_ret;
1601 e_message_ret = ( std::string(std::string(e_message_(blitz::Range::all()).begin(), e_message_(blitz::Range::all()).end()).c_str()) );
1602 return e_message_ret;
1608 std::string e_trace_1_ret;
1609 e_trace_1_ret = ( std::string(std::string(e_trace_1_(blitz::Range::all()).begin(), e_trace_1_(blitz::Range::all()).end()).c_str()) );
1610 return e_trace_1_ret;
1616 std::string e_trace_2_ret;
1617 e_trace_2_ret = ( std::string(std::string(e_trace_2_(blitz::Range::all()).begin(), e_trace_2_(blitz::Range::all()).end()).c_str()) );
1618 return e_trace_2_ret;
1625 int c_messages_shape_1 = (int) c_messages_.extent(0);
1626 int c_messages_len = (int) c_messages_.extent(1) - 1;
1627 int c_actions_shape_1 = (int) c_actions_.extent(0);
1628 int c_actions_len = (int) c_actions_.extent(1) - 1;
1629 int e_message_len = (int) e_message_.extent(0) - 1;
1630 int e_trace_1_len = (int) e_trace_1_.extent(0) - 1;
1631 int e_trace_2_len = (int) e_trace_2_.extent(0) - 1;
1633 twostream_lps_master_m_twostream_lps_master_wrap(&maxlayers_, &maxtotal_, &maxmessages_, &maxbeams_, &max_geometries_, &max_user_streams_, &max_user_relazms_, &max_user_obsgeoms_, &max_atmoswfs_, &max_surfacewfs_, &max_sleavewfs_, &do_upwelling_, &do_dnwelling_, &do_plane_parallel_, &do_2s_levelout_, &do_mvout_only_, &do_additional_mvout_, &do_solar_sources_, &do_thermal_emission_, &do_surface_emission_, &do_d2s_scaling_, &do_brdf_surface_, &do_user_obsgeoms_, &do_surface_leaving_, &do_sl_isotropic_, &do_pentadiag_inverse_, &bvpindex_, &bvpscalefactor_, &taylor_order_, &taylor_small_, &tcutoff_, &nlayers_, &ntotal_, &stream_value_, &n_user_obsgeoms_, user_obsgeoms_.dataFirst(), &n_user_streams_, user_angles_.dataFirst(), &n_user_relazms_, user_relazms_.dataFirst(), &flux_factor_, &nbeams_, beam_szas_.dataFirst(), &earth_radius_, height_grid_.dataFirst(), deltau_input_.dataFirst(), omega_input_.dataFirst(), asymm_input_.dataFirst(), d2s_scaling_.dataFirst(), thermal_bb_input_.dataFirst(), &lambertian_albedo_, brdf_f_0_.dataFirst(), brdf_f_.dataFirst(), ubrdf_f_.dataFirst(), &emissivity_, &surfbb_, slterm_isotropic_.dataFirst(), slterm_f_0_.dataFirst(), &do_profile_wfs_, &do_surface_wfs_, &do_sleave_wfs_, layer_vary_flag_.dataFirst(), layer_vary_number_.dataFirst(), &n_surface_wfs_, &n_sleave_wfs_, lssl_slterm_isotropic_.dataFirst(), lssl_slterm_f_0_.dataFirst(), l_deltau_input_.dataFirst(), l_omega_input_.dataFirst(), l_asymm_input_.dataFirst(), l_d2s_scaling_.dataFirst(), ls_brdf_f_0_.dataFirst(), ls_brdf_f_.dataFirst(), ls_ubrdf_f_.dataFirst(), ls_emissivity_.dataFirst(), intensity_toa_.dataFirst(), profilewf_toa_.dataFirst(), surfacewf_toa_.dataFirst(), intensity_boa_.dataFirst(), profilewf_boa_.dataFirst(), surfacewf_boa_.dataFirst(), radlevel_up_.dataFirst(), radlevel_dn_.dataFirst(), &n_geometries_, profjaclevel_up_.dataFirst(), profjaclevel_dn_.dataFirst(), surfjaclevel_up_.dataFirst(), surfjaclevel_dn_.dataFirst(), fluxes_toa_.dataFirst(), profjacfluxes_toa_.dataFirst(), surfjacfluxes_toa_.dataFirst(), fluxes_boa_.dataFirst(), profjacfluxes_boa_.dataFirst(), surfjacfluxes_boa_.dataFirst(), &status_inputcheck_, &c_nmessages_, &c_messages_shape_1, &c_messages_len, c_messages_.dataFirst(), &c_actions_shape_1, &c_actions_len, c_actions_.dataFirst(), &status_execution_, &e_message_len, e_message_.dataFirst(), &e_trace_1_len, e_trace_1_.dataFirst(), &e_trace_2_len, e_trace_2_.dataFirst());
1638 output_stream <<
"Twostream_Lps_Master:" << std::endl
1639 <<
" maxlayers: " << obj.
maxlayers() << std::endl
1640 <<
" maxtotal: " << obj.
maxtotal() << std::endl
1641 <<
" maxmessages: " << obj.
maxmessages() << std::endl
1642 <<
" maxbeams: " << obj.
maxbeams() << std::endl
1647 <<
" max_atmoswfs: " << obj.
max_atmoswfs() << std::endl
1650 <<
" do_upwelling: " << obj.
do_upwelling() << std::endl
1651 <<
" do_dnwelling: " << obj.
do_dnwelling() << std::endl
1665 <<
" bvpindex: " << obj.
bvpindex() << std::endl
1667 <<
" taylor_order: " << obj.
taylor_order() << std::endl
1668 <<
" taylor_small: " << obj.
taylor_small() << std::endl
1669 <<
" tcutoff: " << obj.
tcutoff() << std::endl
1670 <<
" nlayers: " << obj.
nlayers() << std::endl
1671 <<
" ntotal: " << obj.
ntotal() << std::endl
1672 <<
" stream_value: " << obj.
stream_value() << std::endl
1674 <<
" user_obsgeoms: " << std::endl << obj.
user_obsgeoms() << std::endl
1676 <<
" user_angles: " << std::endl << obj.
user_angles() << std::endl
1678 <<
" user_relazms: " << std::endl << obj.
user_relazms() << std::endl
1679 <<
" flux_factor: " << obj.
flux_factor() << std::endl
1680 <<
" nbeams: " << obj.
nbeams() << std::endl
1681 <<
" beam_szas: " << std::endl << obj.
beam_szas() << std::endl
1682 <<
" earth_radius: " << obj.
earth_radius() << std::endl
1683 <<
" height_grid: " << std::endl << obj.
height_grid() << std::endl
1684 <<
" deltau_input: " << std::endl << obj.
deltau_input() << std::endl
1685 <<
" omega_input: " << std::endl << obj.
omega_input() << std::endl
1686 <<
" asymm_input: " << std::endl << obj.
asymm_input() << std::endl
1687 <<
" d2s_scaling: " << std::endl << obj.
d2s_scaling() << std::endl
1688 <<
" thermal_bb_input: " << std::endl << obj.
thermal_bb_input() << std::endl
1690 <<
" brdf_f_0: " << std::endl << obj.
brdf_f_0() << std::endl
1691 <<
" brdf_f: " << std::endl << obj.
brdf_f() << std::endl
1692 <<
" ubrdf_f: " << std::endl << obj.
ubrdf_f() << std::endl
1693 <<
" emissivity: " << obj.
emissivity() << std::endl
1694 <<
" surfbb: " << obj.
surfbb() << std::endl
1695 <<
" slterm_isotropic: " << std::endl << obj.
slterm_isotropic() << std::endl
1696 <<
" slterm_f_0: " << std::endl << obj.
slterm_f_0() << std::endl
1700 <<
" layer_vary_flag: " << std::endl << obj.
layer_vary_flag() << std::endl
1703 <<
" n_sleave_wfs: " << obj.
n_sleave_wfs() << std::endl
1705 <<
" lssl_slterm_f_0: " << std::endl << obj.
lssl_slterm_f_0() << std::endl
1706 <<
" l_deltau_input: " << std::endl << obj.
l_deltau_input() << std::endl
1707 <<
" l_omega_input: " << std::endl << obj.
l_omega_input() << std::endl
1708 <<
" l_asymm_input: " << std::endl << obj.
l_asymm_input() << std::endl
1709 <<
" l_d2s_scaling: " << std::endl << obj.
l_d2s_scaling() << std::endl
1710 <<
" ls_brdf_f_0: " << std::endl << obj.
ls_brdf_f_0() << std::endl
1711 <<
" ls_brdf_f: " << std::endl << obj.
ls_brdf_f() << std::endl
1712 <<
" ls_ubrdf_f: " << std::endl << obj.
ls_ubrdf_f() << std::endl
1713 <<
" ls_emissivity: " << std::endl << obj.
ls_emissivity() << std::endl
1714 <<
" intensity_toa: " << std::endl << obj.
intensity_toa() << std::endl
1715 <<
" profilewf_toa: " << std::endl << obj.
profilewf_toa() << std::endl
1716 <<
" surfacewf_toa: " << std::endl << obj.
surfacewf_toa() << std::endl
1717 <<
" intensity_boa: " << std::endl << obj.
intensity_boa() << std::endl
1718 <<
" profilewf_boa: " << std::endl << obj.
profilewf_boa() << std::endl
1719 <<
" surfacewf_boa: " << std::endl << obj.
surfacewf_boa() << std::endl
1720 <<
" radlevel_up: " << std::endl << obj.
radlevel_up() << std::endl
1721 <<
" radlevel_dn: " << std::endl << obj.
radlevel_dn() << std::endl
1722 <<
" n_geometries: " << obj.
n_geometries() << std::endl
1723 <<
" profjaclevel_up: " << std::endl << obj.
profjaclevel_up() << std::endl
1724 <<
" profjaclevel_dn: " << std::endl << obj.
profjaclevel_dn() << std::endl
1725 <<
" surfjaclevel_up: " << std::endl << obj.
surfjaclevel_up() << std::endl
1726 <<
" surfjaclevel_dn: " << std::endl << obj.
surfjaclevel_dn() << std::endl
1727 <<
" fluxes_toa: " << std::endl << obj.
fluxes_toa() << std::endl
1730 <<
" fluxes_boa: " << std::endl << obj.
fluxes_boa() << std::endl
1734 <<
" c_nmessages: " << obj.
c_nmessages() << std::endl
1735 <<
" c_messages: " << std::endl;
1736 std::vector< std::string > c_messages_lcl = obj.
c_messages();
1737 for(
unsigned int idx = 0; idx < c_messages_lcl.size(); idx++)
1738 if ( c_messages_lcl[idx].length() > 0 )
1739 output_stream <<
" [" << idx <<
"]: \"" << c_messages_lcl[idx] <<
"\"" << std::endl;
1741 <<
" c_actions: " << std::endl;
1742 std::vector< std::string > c_actions_lcl = obj.
c_actions();
1743 for(
unsigned int idx = 0; idx < c_actions_lcl.size(); idx++)
1744 if ( c_actions_lcl[idx].length() > 0 )
1745 output_stream <<
" [" << idx <<
"]: \"" << c_actions_lcl[idx] <<
"\"" << std::endl;
1748 <<
" e_message: " <<
"\"" << obj.
e_message() <<
"\"" << std::endl
1749 <<
" e_trace_1: " <<
"\"" << obj.
e_trace_1() <<
"\"" << std::endl
1750 <<
" e_trace_2: " <<
"\"" << obj.
e_trace_2() <<
"\"" << std::endl;
1751 return output_stream;
1760 int max_geometries_;
1761 int max_user_streams_;
1762 int max_user_relazms_;
1763 int max_user_obsgeoms_;
1765 int max_surfacewfs_;
1769 bool do_plane_parallel_;
1770 bool do_2s_levelout_;
1771 bool do_mvout_only_;
1772 bool do_additional_mvout_;
1773 bool do_solar_sources_;
1774 bool do_thermal_emission_;
1775 bool do_surface_emission_;
1776 bool do_d2s_scaling_;
1777 bool do_brdf_surface_;
1778 bool do_user_obsgeoms_;
1779 bool do_surface_leaving_;
1780 bool do_sl_isotropic_;
1781 bool do_pentadiag_inverse_;
1783 double bvpscalefactor_;
1785 double taylor_small_;
1789 double stream_value_;
1790 int n_user_obsgeoms_;
1791 blitz::Array<double, 2> user_obsgeoms_;
1792 int n_user_streams_;
1793 blitz::Array<double, 1> user_angles_;
1794 int n_user_relazms_;
1795 blitz::Array<double, 1> user_relazms_;
1796 double flux_factor_;
1798 blitz::Array<double, 1> beam_szas_;
1799 double earth_radius_;
1800 blitz::Array<double, 1> height_grid_;
1801 blitz::Array<double, 1> deltau_input_;
1802 blitz::Array<double, 1> omega_input_;
1803 blitz::Array<double, 1> asymm_input_;
1804 blitz::Array<double, 1> d2s_scaling_;
1805 blitz::Array<double, 1> thermal_bb_input_;
1806 double lambertian_albedo_;
1807 blitz::Array<double, 2> brdf_f_0_;
1808 blitz::Array<double, 1> brdf_f_;
1809 blitz::Array<double, 2> ubrdf_f_;
1812 blitz::Array<double, 1> slterm_isotropic_;
1813 blitz::Array<double, 2> slterm_f_0_;
1814 bool do_profile_wfs_;
1815 bool do_surface_wfs_;
1816 bool do_sleave_wfs_;
1817 blitz::Array<bool, 1> layer_vary_flag_;
1818 blitz::Array<int, 1> layer_vary_number_;
1821 blitz::Array<double, 2> lssl_slterm_isotropic_;
1822 blitz::Array<double, 3> lssl_slterm_f_0_;
1823 blitz::Array<double, 2> l_deltau_input_;
1824 blitz::Array<double, 2> l_omega_input_;
1825 blitz::Array<double, 2> l_asymm_input_;
1826 blitz::Array<double, 2> l_d2s_scaling_;
1827 blitz::Array<double, 3> ls_brdf_f_0_;
1828 blitz::Array<double, 2> ls_brdf_f_;
1829 blitz::Array<double, 3> ls_ubrdf_f_;
1830 blitz::Array<double, 1> ls_emissivity_;
1831 blitz::Array<double, 1> intensity_toa_;
1832 blitz::Array<double, 3> profilewf_toa_;
1833 blitz::Array<double, 2> surfacewf_toa_;
1834 blitz::Array<double, 1> intensity_boa_;
1835 blitz::Array<double, 3> profilewf_boa_;
1836 blitz::Array<double, 2> surfacewf_boa_;
1837 blitz::Array<double, 2> radlevel_up_;
1838 blitz::Array<double, 2> radlevel_dn_;
1840 blitz::Array<double, 4> profjaclevel_up_;
1841 blitz::Array<double, 4> profjaclevel_dn_;
1842 blitz::Array<double, 3> surfjaclevel_up_;
1843 blitz::Array<double, 3> surfjaclevel_dn_;
1844 blitz::Array<double, 2> fluxes_toa_;
1845 blitz::Array<double, 4> profjacfluxes_toa_;
1846 blitz::Array<double, 3> surfjacfluxes_toa_;
1847 blitz::Array<double, 2> fluxes_boa_;
1848 blitz::Array<double, 4> profjacfluxes_boa_;
1849 blitz::Array<double, 3> surfjacfluxes_boa_;
1850 int status_inputcheck_;
1852 blitz::Array<char, 2> c_messages_;
1853 blitz::Array<char, 2> c_actions_;
1854 int status_execution_;
1855 blitz::Array<char, 1> e_message_;
1856 blitz::Array<char, 1> e_trace_1_;
1857 blitz::Array<char, 1> e_trace_2_;
const blitz::Array< int, 1 > & n_brdf_parameters() const
const double & stream_value() const
const blitz::Array< double, 2 > & slterm_f_0() const
blitz::Array< double, 1 > & brdf_f()
void do_solar_sources(const bool &do_solar_sources_in)
void user_obsgeoms(const blitz::Array< double, 2 > &user_obsgeoms_in)
const int & status_brdfsup() const
void slterm_f_0(const blitz::Array< double, 2 > &slterm_f_0_in)
void which_brdf(const blitz::Array< int, 1 > &which_brdf_in)
const blitz::Array< double, 1 > & ls_emissivity() const
const int & ntotal() const
const int & n_user_streams() const
const blitz::Array< int, 1 > & which_brdf() const
const blitz::Array< double, 1 > & user_angles() const
void lambertian_kernel_flag(const blitz::Array< bool, 1 > &lambertian_kernel_flag_in)
const int & max_user_streams() const
void do_kernel_params_wfs(const blitz::Array< bool, 2 > &do_kernel_params_wfs_in)
const blitz::Array< double, 2 > & brdf_parameters() const
void ls_brdf_f_0(const blitz::Array< double, 3 > &ls_brdf_f_0_in)
const blitz::Array< double, 2 > & brdf_f_0() const
const blitz::Array< double, 4 > & profjacfluxes_toa() const
const blitz::Array< double, 1 > & brdf_f() const
void d2s_scaling(const blitz::Array< double, 1 > &d2s_scaling_in)
const int & n_sleave_wfs() const
const blitz::Array< double, 1 > & height_grid() const
const bool & do_surface_emission() const
const bool & do_sleave_wfs() const
const double & earth_radius() const
void do_brdf_surface(const bool &do_brdf_surface_in)
const int & max_surfacewfs() const
const blitz::Array< double, 3 > & ls_brdf_f_0() const
blitz::Array< double, 2 > & brdf_f_0()
void do_thermal_emission(const bool &do_thermal_emission_in)
friend std::ostream & operator<<(std::ostream &output_stream, const Twostream_Lps_Master &obj)
void twostream_ls_brdf_supplement_m_twostream_ls_brdfmaster_wrap(const int *maxbeams_in, const int *max_user_streams_in, const int *max_user_obsgeoms_in, const int *maxstreams_brdf_in, const int *max_brdf_kernels_in, const int *max_brdf_parameters_in, const int *max_surfacewfs_in, const bool *do_solar_sources_in, const bool *do_user_obsgeoms_in, const bool *lambertian_kernel_flag_in, const bool *do_shadow_effect_in, const bool *do_surface_emission_in, const int *nbeams_in, const int *n_user_streams_in, const int *n_user_obsgeoms_in, const double *beam_szas_in, const double *user_angles_in, const double *user_obsgeoms_in, const double *stream_value_in, const int *nstreams_brdf_in, const int *n_brdf_kernels_in, const int *which_brdf_in, const double *brdf_factors_in, const int *n_brdf_parameters_in, const double *brdf_parameters_in, const bool *do_kernel_factor_wfs_in, const bool *do_kernel_params_wfs_in, const bool *do_kparams_derivs_in, const int *n_surface_wfs_in, const int *n_kernel_factor_wfs_in, const int *n_kernel_params_wfs_in, const double *brdf_f_0_in, const double *brdf_f_in, const double *ubrdf_f_in, const double *emissivity_in, const double *ls_brdf_f_0_in, const double *ls_brdf_f_in, const double *ls_ubrdf_f_in, const double *ls_emissivity_in, const int *status_brdfsup_in, const int *message_len, const char *message_in, const int *action_len, const char *action_in)
const blitz::Array< double, 1 > & ls_emissivity() const
const int & status_inputcheck() const
const int & maxbeams() const
void brdf_factors(const blitz::Array< double, 1 > &brdf_factors_in)
const blitz::Array< bool, 1 > & lambertian_kernel_flag() const
const blitz::Array< double, 3 > & profilewf_boa() const
const blitz::Array< double, 2 > & ls_brdf_f() const
const int & n_surface_wfs() const
void brdf_parameters(const blitz::Array< double, 2 > &brdf_parameters_in)
const blitz::Array< double, 1 > & brdf_f() const
void brdf_f_0(const blitz::Array< double, 2 > &brdf_f_0_in)
void user_angles(const blitz::Array< double, 1 > &user_angles_in)
const int & status_execution() const
void do_upwelling(const bool &do_upwelling_in)
const blitz::Array< double, 2 > & l_omega_input() const
const int & n_user_obsgeoms() const
const int & max_user_obsgeoms() const
const bool & do_brdf_surface() const
blitz::Array< double, 2 > & ubrdf_f()
const blitz::Array< double, 2 > & l_asymm_input() const
Twostream_Ls_Brdf_Supplement(const int &maxbeams_in, const int &max_user_streams_in, const int &max_user_obsgeoms_in, const int &maxstreams_brdf_in, const int &max_brdf_kernels_in, const int &max_brdf_parameters_in, const int &max_surfacewfs_in, const int &nbeams_in, const int &n_user_streams_in, const int &nstreams_brdf_in)
const blitz::Array< double, 2 > & radlevel_dn() const
const bool & do_additional_mvout() const
const int & n_kernel_factor_wfs() const
void fluxes_boa(const blitz::Array< double, 2 > &fluxes_boa_in)
void stream_value(const double &stream_value_in)
void ls_emissivity(const blitz::Array< double, 1 > &ls_emissivity_in)
const blitz::Array< double, 3 > & ls_brdf_f_0() const
const blitz::Array< double, 1 > & intensity_toa() const
void surfjaclevel_up(const blitz::Array< double, 3 > &surfjaclevel_up_in)
const blitz::Array< double, 1 > & beam_szas() const
const bool & do_2s_levelout() const
const bool & do_plane_parallel() const
void do_dnwelling(const bool &do_dnwelling_in)
void do_plane_parallel(const bool &do_plane_parallel_in)
const bool & do_pentadiag_inverse() const
void lambertian_albedo(const double &lambertian_albedo_in)
void tcutoff(const double &tcutoff_in)
void height_grid(const blitz::Array< double, 1 > &height_grid_in)
const int & nbeams() const
const int & max_sleavewfs() const
void do_user_obsgeoms(const bool &do_user_obsgeoms_in)
const bool & do_user_obsgeoms() const
void do_surface_leaving(const bool &do_surface_leaving_in)
void bvpindex(const int &bvpindex_in)
void omega_input(const blitz::Array< double, 1 > &omega_input_in)
const int & maxtotal() const
void do_mvout_only(const bool &do_mvout_only_in)
void do_shadow_effect(const bool &do_shadow_effect_in)
const int & maxmessages() const
const blitz::Array< double, 1 > & user_relazms() const
blitz::Array< double, 3 > & ls_ubrdf_f()
const int & nlayers() const
void n_sleave_wfs(const int &n_sleave_wfs_in)
void brdf_f(const blitz::Array< double, 1 > &brdf_f_in)
void do_profile_wfs(const bool &do_profile_wfs_in)
const int & maxbeams() const
const bool & do_mvout_only() const
const blitz::Array< double, 1 > & omega_input() const
void do_kernel_factor_wfs(const blitz::Array< bool, 1 > &do_kernel_factor_wfs_in)
const blitz::Array< bool, 1 > & do_kernel_factor_wfs() const
const blitz::Array< double, 1 > & brdf_factors() const
const blitz::Array< int, 1 > & layer_vary_number() const
void thermal_bb_input(const blitz::Array< double, 1 > &thermal_bb_input_in)
void do_user_obsgeoms(const bool &do_user_obsgeoms_in)
const blitz::Array< double, 2 > & fluxes_toa() const
void do_additional_mvout(const bool &do_additional_mvout_in)
const blitz::Array< double, 3 > & surfjacfluxes_toa() const
const bool & do_profile_wfs() const
const bool & do_user_obsgeoms() const
void user_relazms(const blitz::Array< double, 1 > &user_relazms_in)
const bool & do_thermal_emission() const
const blitz::Array< double, 1 > & intensity_boa() const
void surfjacfluxes_boa(const blitz::Array< double, 3 > &surfjacfluxes_boa_in)
std::vector< std::string > c_messages() const
void layer_vary_number(const blitz::Array< int, 1 > &layer_vary_number_in)
void do_d2s_scaling(const bool &do_d2s_scaling_in)
const int & max_atmoswfs() const
void do_surface_emission(const bool &do_surface_emission_in)
void ubrdf_f(const blitz::Array< double, 2 > &ubrdf_f_in)
std::string e_message() const
void l_d2s_scaling(const blitz::Array< double, 2 > &l_d2s_scaling_in)
const bool & do_solar_sources() const
const int & n_user_obsgeoms() const
void profjaclevel_dn(const blitz::Array< double, 4 > &profjaclevel_dn_in)
friend std::ostream & operator<<(std::ostream &output_stream, const Twostream_Ls_Brdf_Supplement &obj)
void stream_value(const double &stream_value_in)
std::vector< std::string > c_actions() const
const blitz::Array< double, 1 > & slterm_isotropic() const
void surfjaclevel_dn(const blitz::Array< double, 3 > &surfjaclevel_dn_in)
const double & emissivity() const
const blitz::Array< double, 1 > & d2s_scaling() const
const bool & do_surface_leaving() const
void emissivity(const double &emissivity_in)
void lssl_slterm_isotropic(const blitz::Array< double, 2 > &lssl_slterm_isotropic_in)
std::string e_trace_2() const
const double & tcutoff() const
void flux_factor(const double &flux_factor_in)
const int & max_brdf_kernels() const
void deltau_input(const blitz::Array< double, 1 > &deltau_input_in)
void n_brdf_parameters(const blitz::Array< int, 1 > &n_brdf_parameters_in)
void user_angles(const blitz::Array< double, 1 > &user_angles_in)
const blitz::Array< double, 1 > & thermal_bb_input() const
void do_surface_emission(const bool &do_surface_emission_in)
const blitz::Array< double, 2 > & user_obsgeoms() const
const blitz::Array< double, 1 > & asymm_input() const
const blitz::Array< double, 2 > & surfacewf_boa() const
void intensity_boa(const blitz::Array< double, 1 > &intensity_boa_in)
const blitz::Array< double, 3 > & ls_ubrdf_f() const
const blitz::Array< double, 2 > & brdf_f_0() const
void n_user_obsgeoms(const int &n_user_obsgeoms_in)
void beam_szas(const blitz::Array< double, 1 > &beam_szas_in)
const int & n_geometries() const
void profjaclevel_up(const blitz::Array< double, 4 > &profjaclevel_up_in)
const blitz::Array< double, 2 > & ls_brdf_f() const
const double & flux_factor() const
const blitz::Array< double, 3 > & surfjaclevel_up() const
void profilewf_toa(const blitz::Array< double, 3 > &profilewf_toa_in)
const int & max_user_streams() const
const blitz::Array< bool, 1 > & layer_vary_flag() const
const int & n_user_relazms() const
void bvpscalefactor(const double &bvpscalefactor_in)
const bool & do_dnwelling() const
const blitz::Array< double, 2 > & fluxes_boa() const
const int & n_kernel_params_wfs() const
const blitz::Array< double, 4 > & profjacfluxes_boa() const
blitz::Array< double, 3 > & ls_brdf_f_0()
const bool & do_upwelling() const
const blitz::Array< double, 1 > & user_angles() const
const blitz::Array< double, 4 > & profjaclevel_up() const
void twostream_lps_master_m_twostream_lps_master_wrap(const int *maxlayers_in, const int *maxtotal_in, const int *maxmessages_in, const int *maxbeams_in, const int *max_geometries_in, const int *max_user_streams_in, const int *max_user_relazms_in, const int *max_user_obsgeoms_in, const int *max_atmoswfs_in, const int *max_surfacewfs_in, const int *max_sleavewfs_in, const bool *do_upwelling_in, const bool *do_dnwelling_in, const bool *do_plane_parallel_in, const bool *do_2s_levelout_in, const bool *do_mvout_only_in, const bool *do_additional_mvout_in, const bool *do_solar_sources_in, const bool *do_thermal_emission_in, const bool *do_surface_emission_in, const bool *do_d2s_scaling_in, const bool *do_brdf_surface_in, const bool *do_user_obsgeoms_in, const bool *do_surface_leaving_in, const bool *do_sl_isotropic_in, const bool *do_pentadiag_inverse_in, const int *bvpindex_in, const double *bvpscalefactor_in, const int *taylor_order_in, const double *taylor_small_in, const double *tcutoff_in, const int *nlayers_in, const int *ntotal_in, const double *stream_value_in, const int *n_user_obsgeoms_in, const double *user_obsgeoms_in, const int *n_user_streams_in, const double *user_angles_in, const int *n_user_relazms_in, const double *user_relazms_in, const double *flux_factor_in, const int *nbeams_in, const double *beam_szas_in, const double *earth_radius_in, const double *height_grid_in, const double *deltau_input_in, const double *omega_input_in, const double *asymm_input_in, const double *d2s_scaling_in, const double *thermal_bb_input_in, const double *lambertian_albedo_in, const double *brdf_f_0_in, const double *brdf_f_in, const double *ubrdf_f_in, const double *emissivity_in, const double *surfbb_in, const double *slterm_isotropic_in, const double *slterm_f_0_in, const bool *do_profile_wfs_in, const bool *do_surface_wfs_in, const bool *do_sleave_wfs_in, const bool *layer_vary_flag_in, const int *layer_vary_number_in, const int *n_surface_wfs_in, const int *n_sleave_wfs_in, const double *lssl_slterm_isotropic_in, const double *lssl_slterm_f_0_in, const double *l_deltau_input_in, const double *l_omega_input_in, const double *l_asymm_input_in, const double *l_d2s_scaling_in, const double *ls_brdf_f_0_in, const double *ls_brdf_f_in, const double *ls_ubrdf_f_in, const double *ls_emissivity_in, const double *intensity_toa_in, const double *profilewf_toa_in, const double *surfacewf_toa_in, const double *intensity_boa_in, const double *profilewf_boa_in, const double *surfacewf_boa_in, const double *radlevel_up_in, const double *radlevel_dn_in, const int *n_geometries_in, const double *profjaclevel_up_in, const double *profjaclevel_dn_in, const double *surfjaclevel_up_in, const double *surfjaclevel_dn_in, const double *fluxes_toa_in, const double *profjacfluxes_toa_in, const double *surfjacfluxes_toa_in, const double *fluxes_boa_in, const double *profjacfluxes_boa_in, const double *surfjacfluxes_boa_in, const int *status_inputcheck_in, const int *c_nmessages_in, const int *c_messages_shape_1, const int *c_messages_len, const char *c_messages_in, const int *c_actions_shape_1, const int *c_actions_len, const char *c_actions_in, const int *status_execution_in, const int *e_message_len, const char *e_message_in, const int *e_trace_1_len, const char *e_trace_1_in, const int *e_trace_2_len, const char *e_trace_2_in)
const int & max_user_relazms() const
void surfacewf_toa(const blitz::Array< double, 2 > &surfacewf_toa_in)
void do_2s_levelout(const bool &do_2s_levelout_in)
const bool & do_sl_isotropic() const
const blitz::Array< double, 2 > & ubrdf_f() const
void surfbb(const double &surfbb_in)
const int & max_surfacewfs() const
const int & maxstreams_brdf() const
const blitz::Array< double, 2 > & l_d2s_scaling() const
const blitz::Array< double, 2 > & user_obsgeoms() const
void taylor_order(const int &taylor_order_in)
const int & max_geometries() const
void do_pentadiag_inverse(const bool &do_pentadiag_inverse_in)
const blitz::Array< bool, 1 > & do_kparams_derivs() const
const int & nstreams_brdf() const
const blitz::Array< double, 3 > & profilewf_toa() const
void lssl_slterm_f_0(const blitz::Array< double, 3 > &lssl_slterm_f_0_in)
const blitz::Array< double, 1 > & deltau_input() const
const int & max_brdf_parameters() const
const blitz::Array< double, 2 > & radlevel_up() const
void slterm_isotropic(const blitz::Array< double, 1 > &slterm_isotropic_in)
std::string message() const
std::string action() const
const double & emissivity() const
void asymm_input(const blitz::Array< double, 1 > &asymm_input_in)
void do_sleave_wfs(const bool &do_sleave_wfs_in)
const bool & do_d2s_scaling() const
void ls_brdf_f(const blitz::Array< double, 2 > &ls_brdf_f_in)
blitz::Array< double, 2 > & ls_brdf_f()
const double & taylor_small() const
void do_sl_isotropic(const bool &do_sl_isotropic_in)
const int & n_user_streams() const
void l_omega_input(const blitz::Array< double, 2 > &l_omega_input_in)
const blitz::Array< double, 3 > & surfjacfluxes_boa() const
Contains classes to abstract away details in various Spurr Radiative Transfer software.
void user_obsgeoms(const blitz::Array< double, 2 > &user_obsgeoms_in)
const blitz::Array< double, 2 > & surfacewf_toa() const
const bool & do_surface_emission() const
const double & bvpscalefactor() const
void radlevel_dn(const blitz::Array< double, 2 > &radlevel_dn_in)
void profjacfluxes_toa(const blitz::Array< double, 4 > &profjacfluxes_toa_in)
const double & stream_value() const
const blitz::Array< double, 3 > & lssl_slterm_f_0() const
const blitz::Array< double, 4 > & profjaclevel_dn() const
void l_asymm_input(const blitz::Array< double, 2 > &l_asymm_input_in)
const bool & do_surface_wfs() const
const int & nbeams() const
void ls_ubrdf_f(const blitz::Array< double, 3 > &ls_ubrdf_f_in)
const int & n_brdf_kernels() const
void intensity_toa(const blitz::Array< double, 1 > &intensity_toa_in)
void radlevel_up(const blitz::Array< double, 2 > &radlevel_up_in)
Twostream_Lps_Master(const int &maxlayers_in, const int &maxtotal_in, const int &maxmessages_in, const int &maxbeams_in, const int &max_geometries_in, const int &max_user_streams_in, const int &max_user_relazms_in, const int &max_user_obsgeoms_in, const int &max_atmoswfs_in, const int &max_surfacewfs_in, const int &max_sleavewfs_in, const int &nlayers_in, const int &ntotal_in, const int &n_user_streams_in, const int &n_user_relazms_in, const int &nbeams_in, const double &earth_radius_in, const int &n_geometries_in)
const blitz::Array< double, 3 > & surfjaclevel_dn() const
void n_user_obsgeoms(const int &n_user_obsgeoms_in)
const int & c_nmessages() const
void do_solar_sources(const bool &do_solar_sources_in)
const int & max_user_obsgeoms() const
void n_surface_wfs(const int &n_surface_wfs_in)
const blitz::Array< double, 2 > & ubrdf_f() const
const int & bvpindex() const
const int & n_surface_wfs() const
const double & lambertian_albedo() const
const double & surfbb() const
void surfjacfluxes_toa(const blitz::Array< double, 3 > &surfjacfluxes_toa_in)
blitz::Array< double, 1 > & ls_emissivity()
const blitz::Array< double, 3 > & ls_ubrdf_f() const
void fluxes_toa(const blitz::Array< double, 2 > &fluxes_toa_in)
void taylor_small(const double &taylor_small_in)
void beam_szas(const blitz::Array< double, 1 > &beam_szas_in)
void surfacewf_boa(const blitz::Array< double, 2 > &surfacewf_boa_in)
const bool & do_solar_sources() const
void l_deltau_input(const blitz::Array< double, 2 > &l_deltau_input_in)
void n_brdf_kernels(const int &n_brdf_kernels_in)
const blitz::Array< double, 1 > & beam_szas() const
std::string e_trace_1() const
const bool & do_shadow_effect() const
void do_surface_wfs(const bool &do_surface_wfs_in)
const int & maxlayers() const
void layer_vary_flag(const blitz::Array< bool, 1 > &layer_vary_flag_in)
const blitz::Array< double, 2 > & l_deltau_input() const
void profilewf_boa(const blitz::Array< double, 3 > &profilewf_boa_in)
const int & taylor_order() const
const blitz::Array< bool, 2 > & do_kernel_params_wfs() const
void profjacfluxes_boa(const blitz::Array< double, 4 > &profjacfluxes_boa_in)
const blitz::Array< double, 2 > & lssl_slterm_isotropic() const