DPsim
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
DPsim::PFSolver Class Referenceabstract

Solver class using the nonlinear powerflow (PF) formulation. More...

#include <PFSolver.h>

Inheritance diagram for DPsim::PFSolver:
[legend]
Collaboration diagram for DPsim::PFSolver:
[legend]

Classes

class  SolveTask
 

Public Member Functions

 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

virtual void generateInitialSolution (Real time, bool keep_last_solution=false)=0
 Generate initial solution for current time step.
 
virtual void calculateMismatch ()=0
 Calculate mismatch.
 
virtual void calculateJacobian ()=0
 Calculate the Jacobian.
 
virtual void updateSolution ()=0
 Update solution in each iteration.
 
virtual void setSolution ()=0
 Set final solution.
 
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

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< SolverPtr
 
typedef std::vector< Ptr > List
 
- Public Attributes inherited from DPsim::Solver
int mMaxIterations = 10
 

Detailed Description

Solver class using the nonlinear powerflow (PF) formulation.

Definition at line 21 of file PFSolver.h.


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