OpticalModulator.h revision 10447
110447Snilay@cs.wisc.edu#ifndef __DSENT_MODEL_OPTICALGRAPH_OPTICALMODULATOR_H__ 210447Snilay@cs.wisc.edu#define __DSENT_MODEL_OPTICALGRAPH_OPTICALMODULATOR_H__ 310447Snilay@cs.wisc.edu 410447Snilay@cs.wisc.edu#include "model/optical_graph/OpticalNode.h" 510447Snilay@cs.wisc.edu#include "util/CommonType.h" 610447Snilay@cs.wisc.edu 710447Snilay@cs.wisc.edunamespace DSENT 810447Snilay@cs.wisc.edu{ 910447Snilay@cs.wisc.edu class OpticalTransmitter; 1010447Snilay@cs.wisc.edu 1110447Snilay@cs.wisc.edu class OpticalModulator : public OpticalNode 1210447Snilay@cs.wisc.edu { 1310447Snilay@cs.wisc.edu public: 1410447Snilay@cs.wisc.edu OpticalModulator(const String& instance_name_, OpticalModel* model_, const WavelengthGroup& wavelengths_, bool opt_loss_, OpticalTransmitter* transmitter_); 1510447Snilay@cs.wisc.edu ~OpticalModulator(); 1610447Snilay@cs.wisc.edu 1710447Snilay@cs.wisc.edu public: 1810447Snilay@cs.wisc.edu // Set losses 1910447Snilay@cs.wisc.edu void setLosses(double IL_dB_, double ER_dB_); 2010447Snilay@cs.wisc.edu // Tell the modulator to set a new insertion loss and extinction ratio 2110447Snilay@cs.wisc.edu bool setModulatorSpec(double IL_dB_, double ER_dB_); 2210447Snilay@cs.wisc.edu // Get modulator insertion loss 2310447Snilay@cs.wisc.edu double getInsertionLoss() const; 2410447Snilay@cs.wisc.edu // Get modulator extinction ratio 2510447Snilay@cs.wisc.edu double getExtinctionRatio() const; 2610447Snilay@cs.wisc.edu // Ask whether the model is able to optimize for insertion loss 2710447Snilay@cs.wisc.edu // and extinction ratios 2810447Snilay@cs.wisc.edu bool canOptimizeLoss() const; 2910447Snilay@cs.wisc.edu // Ask the modulator for its power at a given utilization 3010447Snilay@cs.wisc.edu double getPower(double util_) const; 3110447Snilay@cs.wisc.edu 3210447Snilay@cs.wisc.edu private: 3310447Snilay@cs.wisc.edu // Disable copy constructor 3410447Snilay@cs.wisc.edu OpticalModulator(const OpticalModulator& node_); 3510447Snilay@cs.wisc.edu 3610447Snilay@cs.wisc.edu private: 3710447Snilay@cs.wisc.edu // Optical sender of the modulator 3810447Snilay@cs.wisc.edu OpticalTransmitter* m_transmitter_; 3910447Snilay@cs.wisc.edu // Insertion loss of the modulator 4010447Snilay@cs.wisc.edu double m_insertion_loss_; 4110447Snilay@cs.wisc.edu // Extinction ratio of the modulator 4210447Snilay@cs.wisc.edu double m_extinction_ratio_; 4310447Snilay@cs.wisc.edu // Whether the modulator can be optimized 4410447Snilay@cs.wisc.edu bool m_opt_loss_; 4510447Snilay@cs.wisc.edu 4610447Snilay@cs.wisc.edu }; 4710447Snilay@cs.wisc.edu 4810447Snilay@cs.wisc.edu} // namespace DSENT 4910447Snilay@cs.wisc.edu 5010447Snilay@cs.wisc.edu#endif // __DSENT_MODEL_OPTICALGRAPH_OPTICALMODULATOR_H__ 5110447Snilay@cs.wisc.edu 52