Power System Platform  2024w23a
Loading...
Searching...
No Matches
Electromechanical Class Reference

Calculates the electromechanical transient based on disturbances (e.g. system fault). More...

#include <Electromechanical.h>

Inheritance diagram for Electromechanical:
Collaboration diagram for Electromechanical:

Public Member Functions

 Electromechanical (wxWindow *parent, std::vector< Element * > elementList, SimulationData data)
 
bool RunStabilityCalculation ()
 
wxString GetErrorMessage () const
 
std::vector< double > GetTimeVector () const
 
std::vector< double > GetIterationVector () const
 
wxString GetDebugMessage () const
 
- Public Member Functions inherited from ElectricCalculation
 ElectricCalculation ()
 Constructor.
 
 ~ElectricCalculation ()
 Destructor.
 
virtual void GetElementsFromList (std::vector< Element * > elementList)
 Separate the power elements from a generic list.
 
virtual bool GetYBus (std::vector< std::vector< std::complex< double > > > &yBus, double systemPowerBase, YBusSequence sequence=POSITIVE_SEQ, bool includeSyncMachines=false, bool allLoadsAsImpedances=false, bool usePowerFlowVoltagesOnImpedances=false)
 Get the admittance matrix from the list of elements (use GetElementsFromList first).
 
virtual bool InvertMatrix (std::vector< std::vector< std::complex< double > > > matrix, std::vector< std::vector< std::complex< double > > > &inverse)
 Invert a matrix.
 
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)
 Update the elements after the power flow calculation.
 
void ABCtoDQ0 (std::complex< double > complexValue, double angle, double &dValue, double &qValue)
 
void DQ0toABC (double dValue, double qValue, double angle, std::complex< double > &complexValue)
 
std::vector< std::complex< double > > GaussianElimination (std::vector< std::vector< std::complex< double > > > matrix, std::vector< std::complex< double > > array)
 
std::vector< double > GaussianElimination (std::vector< std::vector< double > > matrix, std::vector< double > array)
 
Machines::SyncMachineModel GetMachineModel (SyncGenerator *generator)
 
std::vector< std::complex< double > > ComplexMatrixTimesVector (std::vector< std::vector< std::complex< double > > > matrix, std::vector< std::complex< double > > vector)
 
void GetLUDecomposition (std::vector< std::vector< std::complex< double > > > matrix, std::vector< std::vector< std::complex< double > > > &matrixL, std::vector< std::vector< std::complex< double > > > &matrixU)
 
std::vector< std::complex< double > > LUEvaluate (std::vector< std::vector< std::complex< double > > > u, std::vector< std::vector< std::complex< double > > > l, std::vector< std::complex< double > > b)
 
bool GetParentBus (Element *childElement, Bus *&parentBus)
 
bool GetParentBus (Element *childElement, Bus *&parentBus1, Bus *&parentBus2)
 
const std::vector< PowerElement * > GetPowerElementList () const
 Get the power elements of the system (use GetElementsFromList first).
 
const std::vector< Bus * > GetBusList () const
 Get the buses of the system (use GetElementsFromList first).
 
const std::vector< Capacitor * > GetCapacitorList () const
 Get the capacitors of the system (use GetElementsFromList first).
 
const std::vector< IndMotor * > GetIndMotorList () const
 Get the induction motors of the system (use GetElementsFromList first).
 
const std::vector< Inductor * > GetInductorList () const
 Get the inductors of the system (use GetElementsFromList first).
 
const std::vector< Line * > GetLineList () const
 Get the lines of the system (use GetElementsFromList first).
 
const std::vector< Load * > GetLoadList () const
 Get the loads of the system (use GetElementsFromList first).
 
const std::vector< SyncGenerator * > GetSyncGeneratorList () const
 Get the synchronous generators of the system (use GetElementsFromList first).
 
const std::vector< SyncMotor * > GetSyncMotorList () const
 Get the synchronous motors of the system (use GetElementsFromList first).
 
const std::vector< Transformer * > GetTransformerList () const
 Get the transformers of the system (use GetElementsFromList first).
 
const std::vector< HarmCurrent * > GetHarmCurrentList () const
 Get the harmonic current source of the system (use GetElementsFromList first).
 

Protected Member Functions

void SetEventTimeList ()
 
bool HasEvent (double currentTime)
 
void SetEvent (double currentTime)
 
bool EventTrigger (double eventTime, double currentTime)
 
void InsertSyncMachinesOnYBus ()
 
bool InsertIndMachinesOnYBus ()
 
bool CalculateIndMachinesTransientValues (IndMotor *motor)
 
std::complex< double > GetSyncMachineAdmittance (SyncGenerator *generator)
 
std::complex< double > GetIndMachineAdmittance (IndMotor *motor)
 
bool InitializeDynamicElements ()
 
bool CalculateInjectedCurrents ()
 
void CalculateIntegrationConstants (SyncGenerator *syncGenerator, double id, double iq, double k=1.0)
 
void CalculateIntegrationConstants (IndMotor *indMotor, double ir, double im, double k=1.0)
 
bool SolveMachines ()
 
void SetSyncMachinesModel ()
 
SyncMachineModelData GetSyncMachineModelData (SyncGenerator *syncMachine)
 
double CalculateIntVariables (SyncGenerator *syncGenerator, double id, double iq, double sd, double sq, double pe, double k=1.0)
 
double CalculateIntVariables (IndMotor *indMotor, double ir, double im, double te, double k=1.0)
 
bool CalculateNonIntVariables (SyncGenerator *syncGenerator, double &id, double &iq, double &sd, double &sq, double &pe, double k=1.0)
 
bool CalculateNonIntVariables (IndMotor *indMotor, double &ir, double &im, double &te, double k=1.0)
 
void CalculateReferenceSpeed ()
 
bool CalculateSyncMachineSaturation (SyncGenerator *syncMachine, double &id, double &iq, double &sd, double &sq, bool updateCurrents=true, double k=1.0)
 
void SaveData ()
 
void PreallocateVectors ()
 
- Protected Member Functions inherited from ElectricCalculation
void GetNextConnection (const unsigned int &checkBusNumber, const std::vector< std::vector< std::complex< double > > > &yBus, std::vector< bool > &connToSlack)
 

Protected Attributes

wxWindow * m_parent = nullptr
 
wxString m_errorMsg = _("Unknown error")
 
double m_systemFreq = 60.0
 
double m_refSpeed = 2.0 * M_PI * 60.0
 
bool m_useCOI = false
 
std::vector< std::vector< std::complex< double > > > m_yBus
 
std::vector< std::vector< std::complex< double > > > m_yBusU
 
std::vector< std::vector< std::complex< double > > > m_yBusL
 
std::vector< std::complex< double > > m_vBus
 
std::vector< std::complex< double > > m_iBus
 
double m_powerSystemBase = 100e6
 
double m_simTime = 10.0
 
double m_currentTime = 0.0
 
double m_plotTime = 1e-2
 
double m_timeStep = 1e-2
 
double m_ctrlTimeStepMultiplier = 0.1
 
double m_tolerance = 1e-8
 
int m_maxIterations = 100
 
double m_saturationTolerance = 1e-8
 
int m_currentPoint = 0
 
std::vector< double > m_eventTimeList
 
std::vector< bool > m_eventOccurrenceList
 
std::vector< double > m_timeVector
 
int m_iterationsNum = 0.0
 
std::vector< double > m_iterationsNumVector
 
wxString m_debugMessage = ""
 
- Protected Attributes inherited from ElectricCalculation
std::vector< PowerElement * > m_powerElementList
 
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
 
std::vector< HarmCurrent * > m_harmCurrentList
 

Detailed Description

Calculates the electromechanical transient based on disturbances (e.g. system fault).

Author
Thales Lima Oliveira thale.nosp@m.s@uf.nosp@m.u.br
Date
23/09/2017

The documentation for this class was generated from the following files: