11 #include <dpsim-models/AttributeList.h>
12 #include <dpsim-models/Config.h>
13 #include <dpsim-models/Definitions.h>
14 #include <dpsim-models/Task.h>
20 typedef std::shared_ptr<MNAInterface> Ptr;
21 typedef std::vector<Ptr> List;
37 virtual void mnaPreStep(Real time, Int timeStepCount) = 0;
44 AttributeBase::List &attributeDependencies,
45 AttributeBase::List &modifiedAttributes) = 0;
49 AttributeBase::List &attributeDependencies,
50 AttributeBase::List &modifiedAttributes,
66 virtual const Task::List &
mnaTasks()
const = 0;
Interface to be implemented by all models used by the MNA solver.
virtual void mnaAddPostStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes, Attribute< Matrix >::Ptr &leftVector)=0
Add MNA post step dependencies.
virtual void mnaUpdateCurrent(const Matrix &leftVector)=0
Update interface current from MNA system result.
virtual void mnaAddPreStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes)=0
Add MNA pre step dependencies.
virtual void mnaInitialize(Real omega, Real timeStep)=0
Initializes variables of components.
virtual const Task::List & mnaTasks() const =0
Return list of MNA tasks.
virtual void mnaPostStep(Real time, Int timeStepCount, Attribute< Matrix >::Ptr &leftVector)=0
MNA post step operations.
virtual void mnaApplySystemMatrixStamp(SparseMatrixRow &systemMatrix)=0
Stamps system matrix.
virtual void mnaPreStep(Real time, Int timeStepCount)=0
MNA pre step operations.
virtual void mnaApplyRightSideVectorStamp(Matrix &rightVector)=0
Stamps right side (source) vector.
virtual void mnaApplySystemMatrixStampHarm(SparseMatrixRow &systemMatrix, Int freqIdx)=0
Stamps system matrix considering the frequency index.
virtual void mnaApplyRightSideVectorStampHarm(Matrix &sourceVector)=0
Stamps right side (source) vector considering the frequency index.
virtual void mnaUpdateVoltage(const Matrix &leftVector)=0
Update interface voltage from MNA system result.
virtual void mnaInitializeHarm(Real omega, Real timeStep, std::vector< Attribute< Matrix >::Ptr > leftVector)=0
Initializes variables of components.