OpticalFilter.cc revision 10447:a465576671d4
1
2#include "model/optical_graph/OpticalFilter.h"
3
4namespace DSENT
5{
6    OpticalFilter::OpticalFilter(const String& instance_name_, OpticalModel* model_, const WavelengthGroup& wavelengths_, bool drop_all_, const WavelengthGroup& drop_wavelengths_)
7        : OpticalNode(OpticalNode::FILTER, instance_name_, model_, wavelengths_), m_drop_all_(drop_all_), m_drop_wavelengths_(drop_wavelengths_)
8    {
9        m_drop_loss_ = 0.0;
10        m_drop_port_ = NULL;
11    }
12
13    OpticalFilter::~OpticalFilter()
14    {
15
16    }
17
18    bool OpticalFilter::getDropAll() const
19    {
20        return m_drop_all_;
21    }
22
23    WavelengthGroup OpticalFilter::getDropWavelengths() const
24    {
25        return m_drop_wavelengths_;
26    }
27
28    void OpticalFilter::setDropLoss(double drop_loss_)
29    {
30        m_drop_loss_ = drop_loss_;
31        return;
32    }
33
34    double OpticalFilter::getDropLoss() const
35    {
36        return m_drop_loss_;
37    }
38
39    void OpticalFilter::setDropPort(OpticalNode* drop_port_)
40    {
41        m_drop_port_ = drop_port_;
42    }
43
44    OpticalNode* OpticalFilter::getDropPort()
45    {
46        return m_drop_port_;
47    }
48
49    bool OpticalFilter::isDropped(const WavelengthGroup& wavelengths_) const
50    {
51        // Check that the lower limits are within bounds
52        bool lower_match = (wavelengths_.first >= getDropWavelengths().first);
53        // Check that the upper limits are within bounds
54        bool upper_match = (wavelengths_.second <= getDropWavelengths().second);
55        // Assert that there are no misalignments
56        ASSERT(lower_match == upper_match, "[Error] " + getInstanceName() +
57            " -> Wavelength group misalignment!" +
58            " InWavelength" + toString(wavelengths_) +
59            ", DropWavelength" + toString(getDropWavelengths()));
60        // Both upper and lower bounds must match
61        return (upper_match && lower_match);
62    }
63} // namespace DSENT
64
65
66