#ifndef ELECTRICCALCULATION_H #define ELECTRICCALCULATION_H #include #include #include "Element.h" #include "Bus.h" #include "Capacitor.h" #include "IndMotor.h" #include "Inductor.h" #include "Line.h" #include "Load.h" #include "SyncGenerator.h" #include "SyncMotor.h" #include "Transformer.h" enum BusType { BUS_SLACK = 0, BUS_PV, BUS_PQ }; enum ReactiveLimitsType { RL_UNLIMITED = 0, // The bus can generate any ammount of reactive power. RL_LIMITED, // The bus reactive power generation is limited. RL_UNLIMITED_SOURCE, // The bus have at least one source of infinite reative power. RL_MAX_REACHED, // Max limit reached RL_MIN_REACHED, // Min limit reached RL_NONE_REACHED // No limits reached }; struct ReactiveLimits { double maxLimit = 0.0; double minLimit = 0.0; ReactiveLimitsType maxLimitType = RL_UNLIMITED; ReactiveLimitsType minLimitType = RL_UNLIMITED; ReactiveLimitsType limitReached = RL_NONE_REACHED; }; class ElectricCalculation { public: ElectricCalculation(); ~ElectricCalculation(); virtual void GetElementsFromList(std::vector elementList); virtual bool GetYBus(std::vector > >& yBus, double systemPowerBase); virtual void UpdateElementsPowerFlow(std::vector > voltage, std::vector > power, std::vector busType, std::vector reactiveLimit, double systemPowerBase); const std::vector GetBusList() const { return m_busList; } const std::vector GetCapacitorList() const { return m_capacitorList; } const std::vector GetIndMotorList() const { return m_indMotorList; } const std::vector GetInductorList() const { return m_inductorList; } const std::vector GetLineList() const { return m_lineList; } const std::vector GetLoadList() const { return m_loadList; } const std::vector GetSyncGeneratorList() const { return m_syncGeneratorList; } const std::vector GetSyncMotorList() const { return m_syncMotorList; } const std::vector GetTransformerList() const { return m_transformerList; } protected: std::vector m_busList; std::vector m_capacitorList; std::vector m_indMotorList; std::vector m_inductorList; std::vector m_lineList; std::vector m_loadList; std::vector m_syncGeneratorList; std::vector m_syncMotorList; std::vector m_transformerList; }; #endif // ELECTRICCALCULATION_H