DPsim
|
Powerflow solver class considering power mismatch and voltages in polar coordinates. More...
#include <PFSolverPowerPolar.h>
Public Member Functions | |
PFSolverPowerPolar (CPS::String name, const CPS::SystemTopology &system, CPS::Real timeStep, CPS::Logger::Level logLevel) | |
Constructor to be used in simulation examples. | |
Public Member Functions inherited from DPsim::PFSolver | |
PFSolver (CPS::String name, CPS::SystemTopology system, Real timeStep, CPS::Logger::Level logLevel) | |
Constructor to be used in simulation examples. | |
void | setVDNode (CPS::String name) |
Set a node to VD using its name. | |
void | modifyPowerFlowBusComponent (CPS::String name, CPS::PowerflowBusType powerFlowBusType) |
Allows to modify the powerflow bus type of a specific component. | |
void | setSolverAndComponentBehaviour (Solver::Behaviour behaviour) override |
set solver and component to initialization or simulation behaviour | |
Public Member Functions inherited from DPsim::Solver | |
Solver (String name, CPS::Logger::Level logLevel) | |
void | setTimeStep (Real timeStep) |
void | doFrequencyParallelization (Bool freqParallel) |
virtual void | setSystem (const CPS::SystemTopology &system) |
void | doSystemMatrixRecomputation (Bool value) |
void | doSteadyStateInit (Bool f) |
activate steady state initialization | |
void | setSteadStIniTimeLimit (Real v) |
set steady state initialization time limit | |
void | setSteadStIniAccLimit (Real v) |
set steady state initialization accuracy limit | |
void | doInitFromNodesAndTerminals (Bool f) |
activate powerflow initialization | |
virtual void | setDirectLinearSolverConfiguration (DirectLinearSolverConfiguration &) |
set direct linear solver configuration (only available in MNA for now) | |
virtual void | logLUTimes () |
log LU decomposition times, if applicable | |
virtual void | log (Real time, Int timeStepCount) |
Log results. | |
void | setMaxNumberOfIterations (int maxIterations) |
Protected Member Functions | |
void | generateInitialSolution (Real time, bool keep_last_solution=false) |
Generate initial solution for current time step. | |
void | calculateJacobian () |
Calculate the Jacobian. | |
void | updateSolution () |
Update solution in each iteration. | |
void | setSolution () |
Set final solution. | |
void | calculateMismatch () |
Calculate mismatch. | |
void | resize_sol (CPS::Int n) |
Resize solution vector. | |
void | resize_complex_sol (CPS::Int n) |
Resize complex solution vector. | |
CPS::Real | sol_Vr (CPS::UInt k) |
Calculate real part of voltage from sol_V and sol_D. | |
CPS::Real | sol_Vi (CPS::UInt k) |
Calculate imaginary part of voltage from sol_V and sol_D. | |
CPS::Complex | sol_Vcx (CPS::UInt k) |
Calculate complex voltage from sol_V and sol_D. | |
CPS::Real | P (CPS::UInt k) |
Calculate active power at a bus from current solution. | |
CPS::Real | Q (CPS::UInt k) |
Calculate the reactive power at a bus from current solution. | |
void | calculatePAndQAtSlackBus () |
Calculate P and Q at slack bus from current solution. | |
void | calculateQAtPVBuses () |
Calculate the reactive power at all PV buses from current solution. | |
void | calculatePAndQInjectionPQBuses () |
Calculate complex power flowing from this node to the other nodes. | |
void | calculateBranchFlow () |
Calculate branch flows from current solution and store them in line and transformer components. More... | |
void | calculateNodalInjection () |
Calculate nodal power injections and store them in first line or transformer (in case no line is connected), so that lower level classes (Node, TopologicalTerminal) can stay untouched. | |
Protected Member Functions inherited from DPsim::PFSolver | |
void | initialize () override |
Initialization of the solver. | |
void | initializeComponents () |
Initialization of individual components. | |
void | assignMatrixNodeIndices () |
Assignment of matrix indices for nodes. | |
void | setBaseApparentPower () |
Set apparent base power of per-unit system. | |
void | determinePFBusType () |
Determine bus type for all buses. | |
void | determineNodeBaseVoltages () |
Determine base voltages for each node. | |
void | composeAdmittanceMatrix () |
Compose admittance matrix. | |
CPS::Real | G (int i, int j) |
Gets the real part of admittance matrix element. | |
CPS::Real | B (int i, int j) |
Gets the imaginary part of admittance matrix element. | |
Bool | solvePowerflow () |
Solves the powerflow problem. | |
CPS::Bool | checkConvergence () |
Check whether below tolerance. | |
CPS::String | logVector (std::vector< CPS::UInt > indexVector) |
Logging for integer vectors. | |
CPS::Task::List | getTasks () override |
Get tasks for scheduler. | |
Protected Attributes | |
CPS::Vector | sol_P |
Solution vector of active power. | |
CPS::Vector | sol_Q |
Solution vector of reactive power. | |
CPS::Vector | sol_V |
Solution vector of voltage magnitude. | |
CPS::Vector | sol_D |
Solution vector of voltage angle. | |
CPS::VectorComp | sol_V_complex |
Solution vector of representing sol_V and sol_D as complex quantity. | |
CPS::VectorComp | sol_S_complex |
Solution vector of representing sol_P and sol_Q as complex quantity. | |
CPS::Vector | Pesp |
CPS::Vector | Qesp |
Protected Attributes inherited from DPsim::PFSolver | |
UInt | mNumPQBuses = 0 |
Number of PQ nodes. | |
UInt | mNumPVBuses = 0 |
Number of PV nodes. | |
UInt | mNumVDBuses = 0 |
Number of PV nodes. | |
UInt | mNumUnknowns = 0 |
Number of unknowns, defining system dimension. | |
CPS::TopologicalNode::List | mPQBuses |
Vector of nodes characterized as PQ buses. | |
CPS::TopologicalNode::List | mPVBuses |
Vector of nodes characterized as PV buses. | |
CPS::TopologicalNode::List | mVDBuses |
Vector of nodes characterized as VD buses. | |
std::vector< CPS::UInt > | mPQBusIndices |
Vector with indices of PQ buses. | |
std::vector< CPS::UInt > | mPVBusIndices |
Vector with indices of PV buses. | |
std::vector< CPS::UInt > | mVDBusIndices |
Vector with indices of VD buses. | |
std::vector< CPS::UInt > | mPQPVBusIndices |
Vector with indices of both PQ and PV buses. | |
CPS::SparseMatrixCompRow | mY |
Admittance matrix. | |
CPS::Matrix | mJ |
Jacobian matrix. | |
CPS::Vector | mX |
Solution vector. | |
CPS::Vector | mF |
Vector of mismatch values. | |
CPS::SystemTopology | mSystem |
System list. | |
std::vector< std::shared_ptr< CPS::SP::Ph1::Transformer > > | mTransformers |
Vector of transformer components. | |
std::vector< std::shared_ptr< CPS::SP::Ph1::SolidStateTransformer > > | mSolidStateTransformers |
Vector of solid state transformer components. | |
std::vector< std::shared_ptr< CPS::SP::Ph1::SynchronGenerator > > | mSynchronGenerators |
Vector of synchronous generator components. | |
std::vector< std::shared_ptr< CPS::SP::Ph1::Load > > | mLoads |
Vector of load components. | |
std::vector< std::shared_ptr< CPS::SP::Ph1::PiLine > > | mLines |
Vector of line components. | |
std::vector< std::shared_ptr< CPS::SP::Ph1::Shunt > > | mShunts |
Vector of shunt components. | |
std::vector< std::shared_ptr< CPS::SP::Ph1::NetworkInjection > > | mExternalGrids |
Vector of external grid components. | |
std::vector< std::shared_ptr< CPS::SP::Ph1::AvVoltageSourceInverterDQ > > | mAverageVoltageSourceInverters |
Vector of average voltage source inverters. | |
std::map< CPS::TopologicalNode::Ptr, CPS::Real > | mBaseVoltageAtNode |
Map providing determined base voltages for each node. | |
Real | mTolerance = 1e-8 |
Solver tolerance. | |
CPS::UInt | mMaxIterations = 9 |
Maximum number of iterations. | |
CPS::UInt | mIterations |
Actual number of iterations. | |
CPS::Real | mBaseApparentPower |
Base power of per-unit system. | |
CPS::Bool | isConverged = false |
Convergence flag. | |
CPS::Bool | solutionInitialized = false |
Flag whether solution vectors are initialized. | |
CPS::Bool | solutionComplexInitialized = false |
Flag whether complex solution vectors are initialized. | |
Protected Attributes inherited from DPsim::Solver | |
String | mName |
Name for logging. | |
CPS::Logger::Level | mLogLevel |
Logging level. | |
CPS::Logger::Log | mSLog |
Logger. | |
Real | mTimeStep |
Time step for fixed step solvers. | |
Bool | mFrequencyParallel = false |
Activates parallelized computation of frequencies. | |
Real | mSteadStIniTimeLimit = 10 |
steady state initialization time limit | |
Real | mSteadStIniAccLimit = 0.0001 |
steady state initialization accuracy limit | |
Bool | mSteadyStateInit = false |
Activates steady state initialization. | |
Bool | mIsInInitialization = false |
Determines if solver is in initialization phase, which requires different behavior. | |
Bool | mInitFromNodesAndTerminals = true |
Bool | mSystemMatrixRecomputation = false |
Enable recomputation of system matrix during simulation. | |
Behaviour | mBehaviour = Solver::Behaviour::Simulation |
Solver behaviour initialization or simulation. | |
Additional Inherited Members | |
Public Types inherited from DPsim::Solver | |
enum | Behaviour { Initialization , Simulation } |
enum class | Type { MNA , DAE , NRP } |
typedef std::shared_ptr< Solver > | Ptr |
typedef std::vector< Ptr > | List |
Public Attributes inherited from DPsim::Solver | |
int | mMaxIterations = 10 |
Powerflow solver class considering power mismatch and voltages in polar coordinates.
Definition at line 15 of file PFSolverPowerPolar.h.
|
protected |
Calculate branch flows from current solution and store them in line and transformer components.
I = Y * V
pf on branch [S_01; S_10] = [V_0 * conj(I_0); V_1 * conj(I_1)]
I = Y * V
pf on branch [S_01; S_10] = [V_0 * conj(I_0); V_1 * conj(I_1)]
Definition at line 352 of file PFSolverPowerPolar.cpp.