DPsim
Loading...
Searching...
No Matches
CPS::CompositePowerComp< VarType > Class Template Referenceabstract

Base class for composite power components. More...

#include <CompositePowerComp.h>

Inheritance diagram for CPS::CompositePowerComp< VarType >:
[legend]
Collaboration diagram for CPS::CompositePowerComp< VarType >:
[legend]

Public Types

using Type = VarType
 
using Ptr = std::shared_ptr<CompositePowerComp<VarType>>
 
using List = std::vector<Ptr>
 
- Public Types inherited from CPS::MNASimPowerComp< VarType >
using Type = VarType
 
using Ptr = std::shared_ptr<MNASimPowerComp<VarType>>
 
using List = std::vector<Ptr>
 
- Public Types inherited from CPS::SimPowerComp< VarType >
typedef VarType Type
 
typedef std::shared_ptr< SimPowerComp< VarType > > Ptr
 
typedef std::vector< Ptr > List
 
- Public Types inherited from CPS::TopologicalPowerComp
enum  Behaviour { Initialization , MNASimulation , PFSimulation }
 
typedef std::shared_ptr< TopologicalPowerCompPtr
 
typedef std::vector< Ptr > List
 
- Public Types inherited from CPS::IdentifiedObject
typedef std::shared_ptr< IdentifiedObjectPtr
 
typedef std::vector< Ptr > List
 
- Public Types inherited from CPS::MNAInterface
typedef std::shared_ptr< MNAInterfacePtr
 
typedef std::vector< Ptr > List
 

Public Member Functions

 CompositePowerComp (String uid, String name, Bool hasPreStep, Bool hasPostStep, Logger::Level logLevel)
 Basic constructor that takes UID, name and log level.
 
 CompositePowerComp (String name, Bool hasPreStep=true, Bool hasPostStep=true, Logger::Level logLevel=Logger::Level::off)
 Basic constructor that takes name and log level and sets the UID to name as well.
 
virtual ~CompositePowerComp ()=default
 Destructor - does not do anything.
 
void initializeFromNodesAndTerminals (Real frequency) override final
 
virtual void initializeParentFromNodesAndTerminals (Real frequency)=0
 
void addMNASubComponent (typename SimPowerComp< VarType >::Ptr subc, MNA_SUBCOMP_TASK_ORDER preStepOrder, MNA_SUBCOMP_TASK_ORDER postStepOrder, Bool contributeToRightVector)
 Add a new subcomponent implementing MNA methods.
 
void mnaCompInitialize (Real omega, Real timeStep, Attribute< Matrix >::Ptr leftVector) override
 Initializes variables of components.
 
void mnaCompApplySystemMatrixStamp (SparseMatrixRow &systemMatrix) override
 Stamps system matrix.
 
void mnaCompApplyRightSideVectorStamp (Matrix &rightVector) override
 Stamps right side (source) vector.
 
void mnaCompPreStep (Real time, Int timeStepCount) override
 MNA pre step operations.
 
void mnaCompPostStep (Real time, Int timeStepCount, Attribute< Matrix >::Ptr &leftVector) override
 MNA post step operations.
 
void mnaCompAddPreStepDependencies (AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes) override
 Add MNA pre step dependencies.
 
void mnaCompAddPostStepDependencies (AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes, Attribute< Matrix >::Ptr &leftVector) override
 Add MNA post step dependencies.
 
virtual void mnaParentInitialize (Real omega, Real timeStep, Attribute< Matrix >::Ptr leftVector)
 
virtual void mnaParentApplySystemMatrixStamp (SparseMatrixRow &systemMatrix)
 
virtual void mnaParentApplyRightSideVectorStamp (Matrix &rightVector)
 
virtual void mnaParentPreStep (Real time, Int timeStepCount)
 
virtual void mnaParentPostStep (Real time, Int timeStepCount, Attribute< Matrix >::Ptr &leftVector)
 
virtual void mnaParentAddPreStepDependencies (AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes)
 
virtual void mnaParentAddPostStepDependencies (AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes, Attribute< Matrix >::Ptr &leftVector)
 
- Public Member Functions inherited from CPS::MNASimPowerComp< VarType >
 MNASimPowerComp (String uid, String name, Bool hasPreStep, Bool hasPostStep, Logger::Level logLevel)
 Basic constructor that takes UID, name and log level.
 
 MNASimPowerComp (String name, Bool hasPreStep=true, Bool hasPostStep=true, Logger::Level logLevel=Logger::Level::off)
 Basic constructor that takes name and log level and sets the UID to name as well.
 
virtual ~MNASimPowerComp ()=default
 Destructor - does not do anything.
 
void mnaInitialize (Real omega, Real timeStep) final
 Initializes variables of components.
 
void mnaInitialize (Real omega, Real timeStep, Attribute< Matrix >::Ptr leftVector) final
 
void mnaApplySystemMatrixStamp (SparseMatrixRow &systemMatrix) final
 Stamps system matrix.
 
void mnaApplyRightSideVectorStamp (Matrix &rightVector) final
 Stamps right side (source) vector.
 
void mnaUpdateVoltage (const Matrix &leftVector) final
 Update interface voltage from MNA system result.
 
void mnaUpdateCurrent (const Matrix &leftVector) final
 Update interface current from MNA system result.
 
void mnaPreStep (Real time, Int timeStepCount) final
 MNA pre step operations.
 
void mnaPostStep (Real time, Int timeStepCount, Attribute< Matrix >::Ptr &leftVector) final
 
void mnaAddPreStepDependencies (AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes) final
 Add MNA pre step dependencies.
 
void mnaAddPostStepDependencies (AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes, Attribute< Matrix >::Ptr &leftVector) final
 
void mnaInitializeHarm (Real omega, Real timeStep, std::vector< Attribute< Matrix >::Ptr > leftVector) final
 
void mnaApplySystemMatrixStampHarm (SparseMatrixRow &systemMatrix, Int freqIdx) final
 Stamps system matrix considering the frequency index.
 
void mnaApplyRightSideVectorStampHarm (Matrix &sourceVector) final
 Stamps right side (source) vector considering the frequency index.
 
void mnaApplyRightSideVectorStampHarm (Matrix &sourceVector, Int freqIdx) final
 
virtual void mnaCompInitialize (Real omega, Real timeStep, Attribute< Matrix >::Ptr leftVector)
 
virtual void mnaCompUpdateVoltage (const Matrix &leftVector)
 
virtual void mnaCompUpdateCurrent (const Matrix &leftVector)
 
virtual void mnaCompPostStep (Real time, Int timeStepCount, Attribute< Matrix >::Ptr &leftVector)
 
virtual void mnaCompAddPostStepDependencies (AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes, Attribute< Matrix >::Ptr &leftVector)
 
virtual void mnaCompInitializeHarm (Real omega, Real timeStep, std::vector< Attribute< Matrix >::Ptr > leftVector)
 
virtual void mnaCompApplySystemMatrixStampHarm (SparseMatrixRow &systemMatrix, Int freqIdx)
 
virtual void mnaCompApplyRightSideVectorStampHarm (Matrix &sourceVector)
 
virtual void mnaCompApplyRightSideVectorStampHarm (Matrix &sourceVector, Int freqIdx)
 
const Task::List & mnaTasks () const final
 Return list of MNA tasks.
 
Attribute< Matrix >::Ptr getRightVector () const final
 
- Public Member Functions inherited from CPS::SimPowerComp< VarType >
 SimPowerComp (String uid, String name, Logger::Level logLevel=Logger::Level::off)
 Basic constructor that takes UID, name and log level.
 
 SimPowerComp (String name, Logger::Level logLevel=Logger::Level::off)
 Basic constructor that takes name and log level and sets the UID to name as well.
 
virtual ~SimPowerComp ()
 Destructor - does not do anything.
 
virtual SimPowerComp< VarType >::Ptr clone (String name)
 Returns a modified copy of the component with the given suffix added to the name and without.
 
UInt terminalNumber ()
 Returns nominal number of Terminals for this component type.
 
UInt terminalNumberConnected ()
 Returns the number of connected Terminals.
 
Bool hasUnconnectedTerminals ()
 
void checkForUnconnectedTerminals ()
 
SimTerminal< VarType >::List terminals ()
 Return list of Terminal pointers.
 
SimTerminal< VarType >::Ptr terminal (UInt index)
 Get pointer to Terminal.
 
TopologicalTerminal::List topologicalTerminals ()
 Returns the list of terminals as TopologicalTerminal pointers.
 
void setTerminalNumber (UInt num)
 
void setTerminals (typename SimTerminal< VarType >::List terminals)
 
void setTerminalAt (typename SimTerminal< VarType >::Ptr terminal, UInt terminalPosition)
 Sets Terminal at index terminalPosition.
 
void updateMatrixNodeIndices ()
 Update the "cached" mMatrixNodeIndices and mMatrixNodeIndexIsGround members.
 
UInt nodeNumber ()
 Returns the actual number of Nodes / Terminals that are already set to valid Nodes.
 
SimNode< VarType >::Ptr node (UInt index)
 Get pointer to node.
 
UInt matrixNodeIndex (UInt nodeIndex)
 
UInt matrixNodeIndex (UInt nodeIndex, UInt phaseIndex)
 
std::vector< UInt > matrixNodeIndices (UInt index)
 TODO replace with access to mMatrixNodeIndices.
 
TopologicalNode::List topologicalNodes ()
 Get nodes as base type TopologicalNode.
 
UInt virtualNodesNumber ()
 Returns nominal number of virtual nodes for this component type.
 
Bool hasVirtualNodes ()
 Returns true if virtual node number is greater than zero.
 
Bool hasSubComponents ()
 Returns true if subcomponents included in this component.
 
SimPowerComp< VarType >::List subComponents ()
 Get list of subcomponents.
 
SimNode< VarType >::List & virtualNodes ()
 
SimNode< VarType >::Ptr virtualNode (UInt index)
 Get pointer to virtual node.
 
std::vector< UInt > virtualMatrixNodeIndices (UInt index)
 Get vector of simulation node numbers from virtual Node.
 
UInt virtualSimNode (UInt nodeIndex, UInt phaseIndex=0)
 Get simulation node number from virtual node.
 
const MatrixVar< VarType > & intfCurrent ()
 
const MatrixVar< VarType > & intfVoltage ()
 
MatrixComp initialVoltage (UInt index)
 
Complex initialSingleVoltage (UInt index)
 
Bool terminalNotGrounded (UInt index)
 
void setIntfCurrent (MatrixVar< VarType > current)
 
void setIntfVoltage (MatrixVar< VarType > voltage)
 
void setVirtualNodeNumber (UInt num)
 
void setVirtualNodeAt (typename SimNode< VarType >::Ptr virtualNode, UInt nodeNum)
 Sets the virtual node at index nodeNum.
 
void connect (typename SimNode< VarType >::List nodes)
 Sets all nodes and checks for nominal number of Nodes for this Component.
 
virtual void initialize (Matrix frequencies)
 Initialize components with correct network frequencies.
 
- Public Member Functions inherited from CPS::TopologicalPowerComp
 TopologicalPowerComp (String uid, String name, Logger::Level logLevel=Logger::Level::off)
 Basic constructor that takes UID, name and log level.
 
 TopologicalPowerComp (String name, Logger::Level logLevel=Logger::Level::off)
 Basic constructor that takes name and log level and sets the UID to name as well.
 
virtual ~TopologicalPowerComp ()
 Destructor - does not do anything.
 
void setBehaviour (Behaviour behaviour)
 Set behavior of component, e.g. initialization.
 
- Public Member Functions inherited from CPS::IdentifiedObject
 IdentifiedObject (const String &uid, const String &name)
 
 IdentifiedObject (const String &name)
 
AttributeBase::Ptr attribute (const String &name) const
 Return pointer to an attribute.
 
template<typename T>
Attribute< T >::Ptr attributeTyped (const String &name) const
 Return pointer to an attribute.
 
const AttributeBase::Map & attributes () const
 
String name ()
 
String uid ()
 Returns unique id.
 
String type ()
 Get component type (cross-platform)
 
virtual String description ()
 
- Public Member Functions inherited from CPS::MNAInterface
virtual void createSubComponents ()
 Constructs and registers MNA subcomponents; called before collectVirtualNodes so virtual nodes exist before matrix sizing.
 
virtual void mnaInitialize (Real omega, Real timeStep, Attribute< Matrix >::Ptr leftVector)=0
 
virtual void mnaPostStep (Real time, Int timeStepCount, Attribute< Matrix >::Ptr &leftVector)=0
 MNA post step operations.
 
virtual void mnaAddPostStepDependencies (AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes, Attribute< Matrix >::Ptr &leftVector)=0
 Add MNA post step dependencies.
 
virtual void mnaInitializeHarm (Real omega, Real timeStep, std::vector< Attribute< Matrix >::Ptr > leftVector)=0
 Initializes variables of components.
 

Protected Attributes

bool mSubCompCreated = false
 
- Protected Attributes inherited from CPS::SimPowerComp< VarType >
SimTerminal< VarType >::List mTerminals
 List of Terminals.
 
SimNode< VarType >::List mVirtualNodes
 List of virtual nodes.
 
Matrix mFrequencies
 List of considered network frequencies.
 
UInt mNumFreqs = 0
 Number of network frequencies.
 
PhaseType mPhaseType = PhaseType::Single
 
std::vector< std::shared_ptr< SimPowerComp< VarType > > > mSubComponents
 
std::vector< UInt > mMatrixNodeIndices
 "Cached" list of simulation nodes (to avoid shared_ptr accesses during simulation)
 
std::vector< bool > mMatrixNodeIndexIsGround
 "Cached" flags for whether the connected nodes are grounded
 
- Protected Attributes inherited from CPS::TopologicalPowerComp
UInt mNumTerminals = 0
 Determines the number of Terminals which can be connected to network Nodes.
 
UInt mNumVirtualNodes = 0
 Determines the number of virtual or internal Nodes.
 
Logger::Log mSLog
 Component logger.
 
Logger::Level mLogLevel
 Component logger control for internal variables.
 
Behaviour mBehaviour = Behaviour::MNASimulation
 
bool mParametersSet = false
 Flag indicating that parameters are set via setParameters() function.
 
- Protected Attributes inherited from CPS::IdentifiedObject
AttributeList::Ptr mAttributes = AttributeList::make()
 Attribute List.
 

Additional Inherited Members

- Public Attributes inherited from CPS::MNASimPowerComp< VarType >
Attribute< Matrix >::Ptr mRightVector
 
Task::List mMnaTasks
 List of tasks that relate to using MNA for this component (usually pre-step and/or post-step)
 
- Public Attributes inherited from CPS::SimPowerComp< VarType >
const Attribute< MatrixVar< VarType > >::Ptr mIntfVoltage
 Voltage between terminals.
 
const Attribute< MatrixVar< VarType > >::Ptr mIntfCurrent
 Current through component.
 
- Public Attributes inherited from CPS::IdentifiedObject
const Attribute< String >::Ptr mName
 Human readable name.
 
const Attribute< String >::Ptr mUID
 Unique identifier.
 

Detailed Description

template<typename VarType>
class CPS::CompositePowerComp< VarType >

Base class for composite power components.

Definition at line 16 of file CompositePowerComp.h.

Member Typedef Documentation

◆ List

template<typename VarType>
using CPS::CompositePowerComp< VarType >::List = std::vector<Ptr>

Definition at line 35 of file CompositePowerComp.h.

◆ Ptr

template<typename VarType>
using CPS::CompositePowerComp< VarType >::Ptr = std::shared_ptr<CompositePowerComp<VarType>>

Definition at line 34 of file CompositePowerComp.h.

◆ Type

template<typename VarType>
using CPS::CompositePowerComp< VarType >::Type = VarType

Definition at line 33 of file CompositePowerComp.h.

Constructor & Destructor Documentation

◆ CompositePowerComp() [1/2]

template<typename VarType>
CPS::CompositePowerComp< VarType >::CompositePowerComp ( String uid,
String name,
Bool hasPreStep,
Bool hasPostStep,
Logger::Level logLevel )
inline

Basic constructor that takes UID, name and log level.

Definition at line 38 of file CompositePowerComp.h.

◆ CompositePowerComp() [2/2]

template<typename VarType>
CPS::CompositePowerComp< VarType >::CompositePowerComp ( String name,
Bool hasPreStep = true,
Bool hasPostStep = true,
Logger::Level logLevel = Logger::Level::off )
inline

Basic constructor that takes name and log level and sets the UID to name as well.

Definition at line 44 of file CompositePowerComp.h.

Member Function Documentation

◆ addMNASubComponent()

template<typename VarType>
void CompositePowerComp::addMNASubComponent ( typename SimPowerComp< VarType >::Ptr subc,
MNA_SUBCOMP_TASK_ORDER preStepOrder,
MNA_SUBCOMP_TASK_ORDER postStepOrder,
Bool contributeToRightVector )

Add a new subcomponent implementing MNA methods.

Parameters
subcThe new subcomponent
preStepOrderWhen to execute the subcomponent's pre-step in relation to the parent
postStepOrderWhen to execute the subcomponent's post-step in relation to the parent

Definition at line 21 of file CompositePowerComp.cpp.

◆ initializeFromNodesAndTerminals()

template<typename VarType>
void CompositePowerComp::initializeFromNodesAndTerminals ( Real frequency)
finaloverridevirtual

Sequences the three init stages: createSubComponents(), then initializeParentFromNodesAndTerminals(), then recurse into sub-components. See docs Overview/subcomponents.md.

Reimplemented from CPS::SimPowerComp< VarType >.

Definition at line 8 of file CompositePowerComp.cpp.

◆ initializeParentFromNodesAndTerminals()

◆ mnaCompAddPostStepDependencies()

template<typename VarType>
void CompositePowerComp::mnaCompAddPostStepDependencies ( AttributeBase::List & prevStepDependencies,
AttributeBase::List & attributeDependencies,
AttributeBase::List & modifiedAttributes,
Attribute< Matrix >::Ptr & leftVector )
override

Add MNA post step dependencies.

Definition at line 133 of file CompositePowerComp.cpp.

◆ mnaCompAddPreStepDependencies()

template<typename VarType>
void CompositePowerComp::mnaCompAddPreStepDependencies ( AttributeBase::List & prevStepDependencies,
AttributeBase::List & attributeDependencies,
AttributeBase::List & modifiedAttributes )
overridevirtual

Add MNA pre step dependencies.

Reimplemented from CPS::MNASimPowerComp< VarType >.

Definition at line 120 of file CompositePowerComp.cpp.

◆ mnaCompApplyRightSideVectorStamp()

template<typename VarType>
void CompositePowerComp::mnaCompApplyRightSideVectorStamp ( Matrix & rightVector)
overridevirtual

Stamps right side (source) vector.

Reimplemented from CPS::MNASimPowerComp< VarType >.

Definition at line 85 of file CompositePowerComp.cpp.

◆ mnaCompApplySystemMatrixStamp()

template<typename VarType>
void CompositePowerComp::mnaCompApplySystemMatrixStamp ( SparseMatrixRow & systemMatrix)
overridevirtual

Stamps system matrix.

Reimplemented from CPS::MNASimPowerComp< VarType >.

Reimplemented in CPS::DP::Ph1::Transformer, CPS::EMT::Ph3::Transformer, and CPS::SP::Ph1::Transformer.

Definition at line 76 of file CompositePowerComp.cpp.

◆ mnaCompInitialize()

template<typename VarType>
void CompositePowerComp::mnaCompInitialize ( Real omega,
Real timeStep,
Attribute< Matrix >::Ptr leftVector )
override

Initializes variables of components.

Definition at line 62 of file CompositePowerComp.cpp.

◆ mnaCompPostStep()

template<typename VarType>
void CompositePowerComp::mnaCompPostStep ( Real time,
Int timeStepCount,
Attribute< Matrix >::Ptr & leftVector )
override

MNA post step operations.

Definition at line 108 of file CompositePowerComp.cpp.

◆ mnaCompPreStep()

template<typename VarType>
void CompositePowerComp::mnaCompPreStep ( Real time,
Int timeStepCount )
overridevirtual

MNA pre step operations.

Reimplemented from CPS::MNASimPowerComp< VarType >.

Definition at line 97 of file CompositePowerComp.cpp.

◆ mnaParentAddPostStepDependencies()

template<typename VarType>
virtual void CPS::CompositePowerComp< VarType >::mnaParentAddPostStepDependencies ( AttributeBase::List & prevStepDependencies,
AttributeBase::List & attributeDependencies,
AttributeBase::List & modifiedAttributes,
Attribute< Matrix >::Ptr & leftVector )
inlinevirtual

Definition at line 124 of file CompositePowerComp.h.

◆ mnaParentAddPreStepDependencies()

◆ mnaParentApplyRightSideVectorStamp()

template<typename VarType>
virtual void CPS::CompositePowerComp< VarType >::mnaParentApplyRightSideVectorStamp ( Matrix & rightVector)
inlinevirtual

◆ mnaParentApplySystemMatrixStamp()

template<typename VarType>
virtual void CPS::CompositePowerComp< VarType >::mnaParentApplySystemMatrixStamp ( SparseMatrixRow & systemMatrix)
inlinevirtual

Definition at line 104 of file CompositePowerComp.h.

◆ mnaParentInitialize()

template<typename VarType>
virtual void CPS::CompositePowerComp< VarType >::mnaParentInitialize ( Real omega,
Real timeStep,
Attribute< Matrix >::Ptr leftVector )
inlinevirtual

Definition at line 100 of file CompositePowerComp.h.

◆ mnaParentPostStep()

template<typename VarType>
virtual void CPS::CompositePowerComp< VarType >::mnaParentPostStep ( Real time,
Int timeStepCount,
Attribute< Matrix >::Ptr & leftVector )
inlinevirtual

Definition at line 113 of file CompositePowerComp.h.

◆ mnaParentPreStep()

Member Data Documentation

◆ mSubCompCreated

template<typename VarType>
bool CPS::CompositePowerComp< VarType >::mSubCompCreated = false
protected

Guards createSubComponents() against double-execution; set it to true at the top of every override. Provided here so subclasses need not redeclare.

Definition at line 30 of file CompositePowerComp.h.


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