summaryrefslogtreecommitdiffstats
path: root/Project/ElectricCalculation.h
diff options
context:
space:
mode:
authorThales1330 <thaleslima.ufu@gmail.com>2016-12-06 13:26:46 -0200
committerThales1330 <thaleslima.ufu@gmail.com>2016-12-06 13:26:46 -0200
commite282ec268db0d17a1d53f813c5fff9473d25e797 (patch)
tree517e01b8685248f04548513091e7040a1b36ec0b /Project/ElectricCalculation.h
parentd4efffcdedbb41596eecd0882a1cef76f6afc435 (diff)
parente266f5811403beea13c9cc5399c55db4a34fdd3c (diff)
downloadPSP.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.h72
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