DPsim
DP_Ph1_CurrentSource.h
1 /* Copyright 2017-2021 Institute for Automation of Complex Power Systems,
2  * EONERC, RWTH Aachen University
3  *
4  * This Source Code Form is subject to the terms of the Mozilla Public
5  * License, v. 2.0. If a copy of the MPL was not distributed with this
6  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
7  *********************************************************************************/
8 
9 #pragma once
10 
11 #include <dpsim-models/Base/Base_Ph1_CurrentSource.h>
12 #include <dpsim-models/MNASimPowerComp.h>
13 #include <dpsim-models/Solver/MNAInterface.h>
14 #include <dpsim-models/Task.h>
15 
16 namespace CPS {
17 namespace DP {
18 namespace Ph1 {
24 class CurrentSource : public MNASimPowerComp<Complex>,
25  public SharedFactory<CurrentSource> {
26 public:
27  const Attribute<Complex>::Ptr mCurrentRef;
29  CurrentSource(String uid, String name,
30  Logger::Level loglevel = Logger::Level::off);
32  CurrentSource(String name, Logger::Level logLevel = Logger::Level::off)
33  : CurrentSource(name, name, logLevel) {}
35  CurrentSource(String name, Complex current,
36  Logger::Level logLevel = Logger::Level::off);
37 
38  void setParameters(Complex current);
39 
40  SimPowerComp<Complex>::Ptr clone(String copySuffix) override;
41 
42  // #### General ####
44  void initializeFromNodesAndTerminals(Real frequency) override;
45 
46  // #### MNA section ####
48  void mnaCompInitialize(Real omega, Real timeStep,
49  Attribute<Matrix>::Ptr leftVector) override;
51  void mnaCompApplySystemMatrixStamp(SparseMatrixRow &systemMatrix) override {}
53  void mnaCompApplyRightSideVectorStamp(Matrix &rightVector) override;
55  void mnaCompUpdateVoltage(const Matrix &leftVector) override;
56 
59  AttributeBase::List &prevStepDependencies,
60  AttributeBase::List &attributeDependencies,
61  AttributeBase::List &modifiedAttributes) override;
63  void
64  mnaCompAddPostStepDependencies(AttributeBase::List &prevStepDependencies,
65  AttributeBase::List &attributeDependencies,
66  AttributeBase::List &modifiedAttributes,
67  Attribute<Matrix>::Ptr &leftVector) override;
68  void mnaCompPreStep(Real time, Int timeStepCount) override;
69  void mnaCompPostStep(Real time, Int timeStepCount,
70  Attribute<Matrix>::Ptr &leftVector) override;
71 };
72 } // namespace Ph1
73 } // namespace DP
74 } // namespace CPS
Dynamic phasor ideal current source.
CurrentSource(String name, Logger::Level logLevel=Logger::Level::off)
Defines name and logging level.
CurrentSource(String uid, String name, Logger::Level loglevel=Logger::Level::off)
Defines UID, name and logging level.
SimPowerComp< Complex >::Ptr clone(String copySuffix) override
Returns a modified copy of the component with the given suffix added to the name and without.
void initializeFromNodesAndTerminals(Real frequency) override
Initializes component from power flow data.
void mnaCompApplyRightSideVectorStamp(Matrix &rightVector) override
Stamps right side (source) vector.
void mnaCompAddPreStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes) override
Add MNA pre step dependencies.
void mnaCompApplySystemMatrixStamp(SparseMatrixRow &systemMatrix) override
Stamps system matrix.
void mnaCompAddPostStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes, Attribute< Matrix >::Ptr &leftVector) override
Add MNA post step dependencies.
String uid()
Returns unique id.
Base class for all MNA components that are transmitting power.
Base class for all components that are transmitting power.
Definition: SimPowerComp.h:17