|
DPsim
|
#include <PFSolverPowerPolarSparse.h>
Public Member Functions | |
| PFSolverPowerPolarSparse (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::PFSolverPowerPolar | |
| 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 | |
| void | setKeepLastSolution (CPS::Bool keepLastSolution) |
| CPS::Bool | getKeepLastSolution () const |
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 | 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 | setUpJacobianStorage () override |
| Build the fixed sparsity pattern, create the linear solver and analyze the pattern once. | |
| void | calculateJacobian () override |
| Fill the sparse Jacobian values in place (pattern unchanged) | |
| void | solveJacobianSystem () override |
| Factorize (first iteration of a run) or refactorize, then solve. | |
| void | buildJacobianPattern () |
| Construct the structural sparsity pattern of the Jacobian from the bus admittance matrix. | |
| bool | isConnected (CPS::UInt k, CPS::UInt j) |
| Whether buses k and j are connected (off-diagonal Jacobian entry exists) | |
Protected Member Functions inherited from DPsim::PFSolverPowerPolar | |
| void | generateInitialSolution (Real time, bool keep_last_solution=false) override |
| Generate initial solution for current time step. | |
| void | updateSolution () override |
| Update solution in each iteration. | |
| void | setSolution () override |
| Set final solution. | |
| void | calculateMismatch () override |
| 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. | |
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::SparseMatrixRow | mJsparse |
| Sparse Jacobian (row-major, fixed pattern, values updated in place each iteration) | |
| std::shared_ptr< DirectLinearSolver > | mLinearSolver |
| Direct linear solver reused across iterations (symbolic factorization computed once) | |
| std::vector< std::pair< CPS::UInt, CPS::UInt > > | mVariableSystemMatrixEntries |
| Empty list: PF uses full refactorization, not partial refactorization. | |
Protected Attributes inherited from DPsim::PFSolverPowerPolar | |
| 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 |
| CPS::Vector | mLastConvergedV |
| CPS::Vector | mLastConvergedD |
| bool | mHasLastConvergedSolution = false |
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 = 20 |
| 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. | |
| CPS::Bool | mKeepLastSolution = false |
| Use last converged solution as initial guess. | |
Protected Attributes inherited from DPsim::Solver | |
| 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 | |
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 |
Polar-coordinate powerflow solver that assembles a sparse Jacobian and reuses the symbolic factorization across Newton-Raphson iterations (scales to large grids).
Definition at line 12 of file PFSolverPowerPolarSparse.h.
| PFSolverPowerPolarSparse::PFSolverPowerPolarSparse | ( | CPS::String | name, |
| const CPS::SystemTopology & | system, | ||
| CPS::Real | timeStep, | ||
| CPS::Logger::Level | logLevel ) |
Constructor to be used in simulation examples.
Definition at line 17 of file PFSolverPowerPolarSparse.cpp.
|
inlinevirtual |
Definition at line 38 of file PFSolverPowerPolarSparse.h.
|
protected |
Construct the structural sparsity pattern of the Jacobian from the bus admittance matrix.
Definition at line 26 of file PFSolverPowerPolarSparse.cpp.
|
overrideprotectedvirtual |
Fill the sparse Jacobian values in place (pattern unchanged)
Reimplemented from DPsim::PFSolverPowerPolar.
Definition at line 84 of file PFSolverPowerPolarSparse.cpp.
|
protected |
Whether buses k and j are connected (off-diagonal Jacobian entry exists)
Definition at line 22 of file PFSolverPowerPolarSparse.cpp.
|
overrideprotectedvirtual |
Build the fixed sparsity pattern, create the linear solver and analyze the pattern once.
Reimplemented from DPsim::PFSolver.
Definition at line 66 of file PFSolverPowerPolarSparse.cpp.
|
overrideprotectedvirtual |
Factorize (first iteration of a run) or refactorize, then solve.
Reimplemented from DPsim::PFSolver.
Definition at line 165 of file PFSolverPowerPolarSparse.cpp.
|
protected |
Sparse Jacobian (row-major, fixed pattern, values updated in place each iteration)
Definition at line 15 of file PFSolverPowerPolarSparse.h.
|
protected |
Direct linear solver reused across iterations (symbolic factorization computed once)
Definition at line 17 of file PFSolverPowerPolarSparse.h.
|
protected |
Empty list: PF uses full refactorization, not partial refactorization.
Definition at line 19 of file PFSolverPowerPolarSparse.h.