Power System Platform
2024w23a
|
Calculates the electromechanical transient based on disturbances (e.g. system fault). More...
#include <Electromechanical.h>
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 |
Calculates the electromechanical transient based on disturbances (e.g. system fault).