Deleted Added
sdiff udiff text old ( 10447:a465576671d4 ) new ( 10448:bc1a3b7ab5ef )
full compact
1#ifndef __DSENT_MODEL_OPTICAL_RINGMODULATOR_H__
2#define __DSENT_MODEL_OPTICAL_RINGMODULATOR_H__
3
4#include "util/CommonType.h"
5#include "model/OpticalModel.h"
6#include "model/optical_graph/OpticalTransmitter.h"
7
8namespace DSENT
9{
10 class RingModulator : public OpticalModel, public OpticalTransmitter
11 {
12 public:
13 RingModulator(const String& instance_name_, const TechModel* tech_model_);
14 virtual ~RingModulator();
15
16 public:
17 // Set a list of properties' name needed to construct model
18 void initParameters();
19 // Set a list of properties' name needed to construct model
20 void initProperties();
21 // Set the transmitter specifications, returns whether it is possible
22 // to build a modulator that met those specs
23 bool setTransmitterSpec(double IL_dB_, double ER_dB_);
24 // Returns power of the transmitter at a given utilization
25 double getPower(double util_) const;
26
27 private:
28 // Precompute values based on tech parameters
29 void precomputeTech();
30 // Design ring modulator driver
31 bool designModulator(double IL_dB_, double ER_dB_);
32 // Calculate modulator energy
33 double calcModulatorEnergy() const;
34
35 protected:
36 // Build the model
37 virtual void constructModel();
38 virtual void updateModel();
39 virtual void useModel();
40 virtual void propagateTransitionInfo();
41
42 private:
43 // Some precomputed tech values
44 double m_precompute_V_bi_;
45 double m_precompute_x_d0_;
46 double m_precompute_C_j0_;
47 double m_precompute_Q_0_;
48
49
50 }; // class RingModulator
51} // namespace DSENT
52
53#endif // __DSENT_MODEL_OPTICAL_RINGMODULATOR_H__
54