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. | |
![]() | |
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 | |
![]() | |
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 | setLogSolveTimes (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. | |
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. | |
![]() | |
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 |
![]() | |
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. | |
![]() | |
String | mName |
Name for logging. | |
CPS::Logger::Level | mLogLevel |
Logging level. | |
Bool | mLogSolveTimes = true |
Collect step time for logging. | |
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 | |
![]() | |
enum | Behaviour { Initialization , Simulation } |
enum class | Type { MNA , DAE , NRP } |
typedef std::shared_ptr< Solver > | Ptr |
typedef std::vector< Ptr > | List |
![]() | |
int | mMaxIterations = 10 |
Powerflow solver class considering power mismatch and voltages in polar coordinates.
Definition at line 15 of file PFSolverPowerPolar.h.
PFSolverPowerPolar::PFSolverPowerPolar | ( | CPS::String | name, |
const CPS::SystemTopology & | system, | ||
CPS::Real | timeStep, | ||
CPS::Logger::Level | logLevel ) |
Constructor to be used in simulation examples.
Definition at line 14 of file PFSolverPowerPolar.cpp.
|
inlinevirtual |
Definition at line 76 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 366 of file PFSolverPowerPolar.cpp.
|
protectedvirtual |
Calculate the Jacobian.
Implements DPsim::PFSolver.
Definition at line 209 of file PFSolverPowerPolar.cpp.
|
protectedvirtual |
Calculate mismatch.
Implements DPsim::PFSolver.
Definition at line 193 of file PFSolverPowerPolar.cpp.
|
protected |
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.
Definition at line 389 of file PFSolverPowerPolar.cpp.
|
protected |
Calculate P and Q at slack bus from current solution.
Definition at line 431 of file PFSolverPowerPolar.cpp.
|
protected |
Calculate complex power flowing from this node to the other nodes.
Definition at line 515 of file PFSolverPowerPolar.cpp.
|
protected |
Calculate the reactive power at all PV buses from current solution.
Definition at line 478 of file PFSolverPowerPolar.cpp.
|
protectedvirtual |
Generate initial solution for current time step.
Implements DPsim::PFSolver.
Definition at line 20 of file PFSolverPowerPolar.cpp.
|
protected |
Calculate active power at a bus from current solution.
Definition at line 413 of file PFSolverPowerPolar.cpp.
|
protected |
Calculate the reactive power at a bus from current solution.
Definition at line 422 of file PFSolverPowerPolar.cpp.
|
protected |
Resize complex solution vector.
Definition at line 551 of file PFSolverPowerPolar.cpp.
|
protected |
Resize solution vector.
Definition at line 540 of file PFSolverPowerPolar.cpp.
|
protectedvirtual |
Set final solution.
Implements DPsim::PFSolver.
Definition at line 333 of file PFSolverPowerPolar.cpp.
|
protected |
Calculate complex voltage from sol_V and sol_D.
Definition at line 566 of file PFSolverPowerPolar.cpp.
|
protected |
Calculate imaginary part of voltage from sol_V and sol_D.
Definition at line 562 of file PFSolverPowerPolar.cpp.
|
protected |
Calculate real part of voltage from sol_V and sol_D.
Definition at line 558 of file PFSolverPowerPolar.cpp.
|
protectedvirtual |
Update solution in each iteration.
Implements DPsim::PFSolver.
Definition at line 311 of file PFSolverPowerPolar.cpp.
|
protected |
Definition at line 30 of file PFSolverPowerPolar.h.
|
protected |
Definition at line 31 of file PFSolverPowerPolar.h.
|
protected |
Solution vector of voltage angle.
Definition at line 24 of file PFSolverPowerPolar.h.
|
protected |
Solution vector of active power.
Definition at line 18 of file PFSolverPowerPolar.h.
|
protected |
Solution vector of reactive power.
Definition at line 20 of file PFSolverPowerPolar.h.
|
protected |
Solution vector of representing sol_P and sol_Q as complex quantity.
Definition at line 28 of file PFSolverPowerPolar.h.
|
protected |
Solution vector of voltage magnitude.
Definition at line 22 of file PFSolverPowerPolar.h.
|
protected |
Solution vector of representing sol_V and sol_D as complex quantity.
Definition at line 26 of file PFSolverPowerPolar.h.