1 #ifndef NONLINEARLOSSMODEL_H 2 #define NONLINEARLOSSMODEL_H 6 #include <boost/array.hpp> 7 #include <boost/property_tree/ini_parser.hpp> 8 #include <boost/property_tree/ptree.hpp> 13 #include <boost/numeric/odeint.hpp> 23 extern double laser_wavelength;
24 extern double propagation_loss;
25 extern double effective_mode_area;
26 extern double carrier_lifetime;
27 extern double TPA_coefficient;
28 extern double FCA_coefficient;
31 typedef std::array<double, 1> intensity_state;
34 double loss_dB2scalar(
double loss_in_dB);
35 double loss_scaler2dB(
double loss_in_scalar);
39 std::vector<intensity_state>& intensities;
40 std::vector<double>& times;
43 : intensities(t_intensities)
46 void operator()(
const intensity_state& intensity,
double time) {
47 intensities.push_back(intensity);
48 times.push_back(time);
55 const double kPhotonEnergy1550;
56 const double kStartPosition;
57 const double kWavelength;
58 const double kStepLength;
63 double carrier_lifetime_;
64 double effective_mode_area_;
65 double stop_position_;
66 double initial_power_;
73 double photon_energy_;
76 double initial_intensity_;
81 void initParameters();
90 virtual void echoParameters();
93 double getLinearLossPerLength()
const {
return alpha_dB_; }
94 double getCarrierLifetime()
const {
return carrier_lifetime_; }
95 double getEffectiveModeArea()
const {
return effective_mode_area_; }
96 double getStartPosition()
const {
return kStartPosition; }
97 double getStopPosition()
const {
return stop_position_; }
98 double getInitialPower()
const {
return initial_power_; }
99 double getInitialIntensity()
const {
return initial_intensity_; }
102 void setLinearLoss(
double linearLoss_dB);
103 void setCarrierLifetime(
double lifetime);
104 void setEffectiveModeArea(
double Aeff);
105 void setWaveguideLength(
double length);
106 void setInitialPower(
double initalPower);
109 void resetParameters();
110 void setParametersFromFile();
112 virtual void operator()(
const intensity_state& I, intensity_state& dIdz,
const double z)
const;
114 double totalLossAcrossWaveguide();
115 double totalLossAcrossWaveguide(
double initalPower);
116 double linearLossAcrossWaveguide();
117 double nonlinearLossAcrossWaveguide();
118 double nonlinearLossAcrossWaveguide(
double initalPower);
Definition: NonlinearLossModel.h:52
Definition: NonlinearLossModel.h:38
Definition: NonlinearLossModel.h:33