diff options
author | Thales1330 <thaleslima.ufu@gmail.com> | 2016-12-06 13:26:46 -0200 |
---|---|---|
committer | Thales1330 <thaleslima.ufu@gmail.com> | 2016-12-06 13:26:46 -0200 |
commit | e282ec268db0d17a1d53f813c5fff9473d25e797 (patch) | |
tree | 517e01b8685248f04548513091e7040a1b36ec0b /Project/ElectricCalculation.h | |
parent | d4efffcdedbb41596eecd0882a1cef76f6afc435 (diff) | |
parent | e266f5811403beea13c9cc5399c55db4a34fdd3c (diff) | |
download | PSP.git-e282ec268db0d17a1d53f813c5fff9473d25e797.tar.gz PSP.git-e282ec268db0d17a1d53f813c5fff9473d25e797.tar.xz PSP.git-e282ec268db0d17a1d53f813c5fff9473d25e797.zip |
Merge remote-tracking branch 'refs/remotes/origin/wip/currentState'
Diffstat (limited to 'Project/ElectricCalculation.h')
-rw-r--r-- | Project/ElectricCalculation.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/Project/ElectricCalculation.h b/Project/ElectricCalculation.h new file mode 100644 index 0000000..e4e4ef7 --- /dev/null +++ b/Project/ElectricCalculation.h @@ -0,0 +1,72 @@ +#ifndef ELECTRICCALCULATION_H +#define ELECTRICCALCULATION_H + +#include <vector> +#include <complex> + +#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<Element*> elementList); + virtual bool GetYBus(std::vector<std::vector<std::complex<double> > >& yBus, double systemPowerBase); + virtual void UpdateElementsPowerFlow(std::vector<std::complex<double> > voltage, + std::vector<std::complex<double> > power, + std::vector<BusType> busType, + std::vector<ReactiveLimits> reactiveLimit, + double systemPowerBase); + + const std::vector<Bus*> GetBusList() const { return m_busList; } + const std::vector<Capacitor*> GetCapacitorList() const { return m_capacitorList; } + const std::vector<IndMotor*> GetIndMotorList() const { return m_indMotorList; } + const std::vector<Inductor*> GetInductorList() const { return m_inductorList; } + const std::vector<Line*> GetLineList() const { return m_lineList; } + const std::vector<Load*> GetLoadList() const { return m_loadList; } + const std::vector<SyncGenerator*> GetSyncGeneratorList() const { return m_syncGeneratorList; } + const std::vector<SyncMotor*> GetSyncMotorList() const { return m_syncMotorList; } + const std::vector<Transformer*> GetTransformerList() const { return m_transformerList; } + + protected: + std::vector<Bus*> m_busList; + std::vector<Capacitor*> m_capacitorList; + std::vector<IndMotor*> m_indMotorList; + std::vector<Inductor*> m_inductorList; + std::vector<Line*> m_lineList; + std::vector<Load*> m_loadList; + std::vector<SyncGenerator*> m_syncGeneratorList; + std::vector<SyncMotor*> m_syncMotorList; + std::vector<Transformer*> m_transformerList; +}; + +#endif // ELECTRICCALCULATION_H |