8#ifndef INCLUDED_OWC_OWC_CHANNEL_RELATIVE_CPLUS_IMPL_H
9#define INCLUDED_OWC_OWC_CHANNEL_RELATIVE_CPLUS_IMPL_H
23 int d_num_outputs = 1;
24 std::vector<float> d_emission_angle_array;
25 std::vector<float> d_acceptance_angle_array;
26 std::vector<float> d_distance_array;
27 std::vector<float> d_lambertian_order_array;
28 std::vector<float> d_photosensor_area_array;
29 std::vector<float> d_optical_filter_transmittance_array;
30 std::vector<float> d_refractive_index_array;
35 std::vector<float> d_concentrator_FOV_array;
36 std::vector<float> d_E2O_conversion_factor_array;
37 std::vector<float> d_O2E_conversion_factor_array;
38 std::vector<float> channel_model_values;
40 std::mt19937 generator;
42 void calculate_channel_model_values()
44 channel_model_values.clear();
47 for (
int x = 0; x < nout; x++) {
48 for (
int j = 0; j < nin; j++) {
52 int index = x * nin + j;
63 g = refractive_index_squared/sin_of_concentrator_FOV_squared;
72 float H = Ct*((Gt*Gr)/distance_squared)*Cr;
73 channel_model_values.push_back(H);
79 float calculate_shot_noise(
float P_avg) {
80 const float q = 1.60217663e-19;
83 return std::sqrt(variance);
88 OWC_Channel_relative_cplus_impl(
int num_inputs,
int num_outputs,
const std::vector<float>&
emission_angle_array,
const std::vector<float>&
acceptance_angle_array,
const std::vector<float>&
distance_array,
const std::vector<float>&
lambertian_order_array,
const std::vector<float>&
photosensor_area_array,
const std::vector<float>&
optical_filter_transmittance_array,
const std::vector<float>&
refractive_index_array,
bool clip_neg,
bool shot_noise,
float sample_rate,
float responsivity,
const std::vector<float>&
concentrator_FOV_array,
const std::vector<float>&
E2O_conversion_factor_array,
const std::vector<float>&
O2E_conversion_factor_array);
140 gr_vector_const_void_star& input_items,
141 gr_vector_void_star& output_items);
std::vector< float > optical_filter_transmittance_array()
Definition OWC_Channel_relative_cplus_impl.h:113
std::vector< float > lambertian_order_array()
Definition OWC_Channel_relative_cplus_impl.h:107
std::vector< float > acceptance_angle_array()
Definition OWC_Channel_relative_cplus_impl.h:101
void set_concentrator_FOV_array(std::vector< float > concentrator_FOV_array)
Definition OWC_Channel_relative_cplus_impl.h:130
void set_acceptance_angle_array(std::vector< float > acceptance_angle_array)
Definition OWC_Channel_relative_cplus_impl.h:100
float responsivity()
Definition OWC_Channel_relative_cplus_impl.h:128
void set_num_outputs(int num_outputs)
Definition OWC_Channel_relative_cplus_impl.h:94
bool get_shot_noise()
Definition OWC_Channel_relative_cplus_impl.h:122
void set_emission_angle_array(std::vector< float > emission_angle_array)
Definition OWC_Channel_relative_cplus_impl.h:97
void set_responsivity(float responsivity)
Definition OWC_Channel_relative_cplus_impl.h:127
std::vector< float > concentrator_FOV_array()
Definition OWC_Channel_relative_cplus_impl.h:131
std::vector< float > emission_angle_array()
Definition OWC_Channel_relative_cplus_impl.h:98
std::vector< float > distance_array()
Definition OWC_Channel_relative_cplus_impl.h:104
int r_num_outputs()
Definition OWC_Channel_relative_cplus_impl.h:95
void set_refractive_index_array(std::vector< float > refractive_index_array)
Definition OWC_Channel_relative_cplus_impl.h:115
~OWC_Channel_relative_cplus_impl()
void set_optical_filter_transmittance_array(std::vector< float > optical_filter_transmittance_array)
Definition OWC_Channel_relative_cplus_impl.h:112
void set_E2O_conversion_factor_array(std::vector< float > E2O_conversion_factor_array)
Definition OWC_Channel_relative_cplus_impl.h:133
OWC_Channel_relative_cplus_impl(int num_inputs, int num_outputs, const std::vector< float > &emission_angle_array, const std::vector< float > &acceptance_angle_array, const std::vector< float > &distance_array, const std::vector< float > &lambertian_order_array, const std::vector< float > &photosensor_area_array, const std::vector< float > &optical_filter_transmittance_array, const std::vector< float > &refractive_index_array, bool clip_neg, bool shot_noise, float sample_rate, float responsivity, const std::vector< float > &concentrator_FOV_array, const std::vector< float > &E2O_conversion_factor_array, const std::vector< float > &O2E_conversion_factor_array)
int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
bool get_clip_neg()
Definition OWC_Channel_relative_cplus_impl.h:119
void set_O2E_conversion_factor_array(std::vector< float > O2E_conversion_factor_array)
Definition OWC_Channel_relative_cplus_impl.h:136
void set_num_inputs(int num_inputs)
Definition OWC_Channel_relative_cplus_impl.h:91
void set_distance_array(std::vector< float > distance_array)
Definition OWC_Channel_relative_cplus_impl.h:103
void set_photosensor_area_array(std::vector< float > photosensor_area_array)
Definition OWC_Channel_relative_cplus_impl.h:109
std::vector< float > E2O_conversion_factor_array()
Definition OWC_Channel_relative_cplus_impl.h:134
std::vector< float > O2E_conversion_factor_array()
Definition OWC_Channel_relative_cplus_impl.h:137
void set_lambertian_order_array(std::vector< float > lambertian_order_array)
Definition OWC_Channel_relative_cplus_impl.h:106
int r_num_inputs()
Definition OWC_Channel_relative_cplus_impl.h:92
std::vector< float > refractive_index_array()
Definition OWC_Channel_relative_cplus_impl.h:116
std::vector< float > photosensor_area_array()
Definition OWC_Channel_relative_cplus_impl.h:110
void set_shot_noise(bool shot_noise)
Definition OWC_Channel_relative_cplus_impl.h:121
void set_sample_rate(float sample_rate)
Definition OWC_Channel_relative_cplus_impl.h:124
void set_clip_neg(bool clip_neg)
Definition OWC_Channel_relative_cplus_impl.h:118
float sample_rate()
Definition OWC_Channel_relative_cplus_impl.h:125
<+description of block+>
Definition OWC_Channel_relative_cplus.h:23
Definition Hermitian_Symmetry_i_o_same_vec_size_cplus.h:31
Definition Hermitian_Symmetry_i_o_same_vec_size_cplus.h:30