21class DecouplingLine :
public SimSignalComp,
26 Real mInductance, mCapacitance;
29 std::shared_ptr<DP::SimNode> mNode1, mNode2;
30 std::shared_ptr<DP::Ph1::Resistor> mRes1, mRes2;
31 std::shared_ptr<DP::Ph1::CurrentSource> mSrc1, mSrc2;
32 Attribute<Complex>::Ptr mSrcCur1, mSrcCur2;
36 std::vector<Complex> mVolt1, mVolt2, mCur1, mCur2;
41 Complex interpolate(std::vector<Complex> &data);
44 typedef std::shared_ptr<DecouplingLine> Ptr;
46 const Attribute<Complex>::Ptr mSrcCur1Ref;
47 const Attribute<Complex>::Ptr mSrcCur2Ref;
52 DecouplingLine(String name, SimNode<Complex>::Ptr node1,
53 SimNode<Complex>::Ptr node2, Real resistance, Real inductance,
55 Logger::Level logLevel = Logger::Level::info);
57 DecouplingLine(String name, Logger::Level logLevel = Logger::Level::info);
59 void setParameters(SimNode<Complex>::Ptr node1, SimNode<Complex>::Ptr node2,
60 Real resistance, Real inductance, Real capacitance);
61 void initialize(Real omega, Real timeStep);
62 void step(Real time, Int timeStepCount);
64 Task::List getTasks();
65 IdentifiedObject::List getLineComponents();
67 class PreStep :
public Task {
69 PreStep(DecouplingLine &line)
70 : Task(**line.
mName +
".MnaPreStep"), mLine(line) {
71 mPrevStepDependencies.push_back(mLine.mStates);
72 mModifiedAttributes.push_back(mLine.mSrc1->mCurrentRef);
73 mModifiedAttributes.push_back(mLine.mSrc2->mCurrentRef);
76 void execute(Real time, Int timeStepCount);
79 DecouplingLine &mLine;
82 class PostStep :
public Task {
84 PostStep(DecouplingLine &line)
85 : Task(**line.
mName +
".PostStep"), mLine(line) {
86 mAttributeDependencies.push_back(mLine.mRes1->mIntfVoltage);
87 mAttributeDependencies.push_back(mLine.mRes1->mIntfCurrent);
88 mAttributeDependencies.push_back(mLine.mRes2->mIntfVoltage);
89 mAttributeDependencies.push_back(mLine.mRes2->mIntfCurrent);
90 mModifiedAttributes.push_back(mLine.mStates);
93 void execute(Real time, Int timeStepCount);
96 DecouplingLine &mLine;