20class DecouplingLineEMT :
public SimSignalComp,
29 std::shared_ptr<EMT::SimNode> mNode1, mNode2;
30 std::shared_ptr<EMT::Ph1::Resistor> mRes1, mRes2;
31 std::shared_ptr<EMT::Ph1::CurrentSource> mSrc1, mSrc2;
32 Attribute<Complex>::Ptr mSrcCur1, mSrcCur2;
36 std::vector<Real> mVolt1, mVolt2, mCur1, mCur2;
41 Real interpolate(std::vector<Real> &data);
44 typedef std::shared_ptr<DecouplingLineEMT> Ptr;
46 const Attribute<Real>::Ptr mSrcCur1Ref;
47 const Attribute<Real>::Ptr mSrcCur2Ref;
52 DecouplingLineEMT(String name, Logger::Level logLevel = Logger::Level::info);
54 void setParameters(SimNode<Real>::Ptr node1, SimNode<Real>::Ptr node2,
55 Real resistance, Real inductance, Real capacitance);
56 void initialize(Real omega, Real timeStep);
57 void step(Real time, Int timeStepCount);
59 Task::List getTasks();
60 IdentifiedObject::List getLineComponents();
62 class PreStep :
public Task {
64 PreStep(DecouplingLineEMT &line)
65 : Task(**line.
mName +
".MnaPreStep"), mLine(line) {
66 mPrevStepDependencies.push_back(mLine.mStates);
67 mModifiedAttributes.push_back(mLine.mSrc1->mCurrentRef);
68 mModifiedAttributes.push_back(mLine.mSrc2->mCurrentRef);
71 void execute(Real time, Int timeStepCount);
74 DecouplingLineEMT &mLine;
77 class PostStep :
public Task {
79 PostStep(DecouplingLineEMT &line)
80 : Task(**line.
mName +
".PostStep"), mLine(line) {
81 mAttributeDependencies.push_back(mLine.mRes1->mIntfVoltage);
82 mAttributeDependencies.push_back(mLine.mRes1->mIntfCurrent);
83 mAttributeDependencies.push_back(mLine.mRes2->mIntfVoltage);
84 mAttributeDependencies.push_back(mLine.mRes2->mIntfCurrent);
85 mModifiedAttributes.push_back(mLine.mStates);
88 void execute(Real time, Int timeStepCount);
91 DecouplingLineEMT &mLine;