21class DecouplingLineEMT_Ph3 :
public SimSignalComp,
25 Matrix mResistance = Matrix::Zero(3, 3);
26 Matrix mInductance = Matrix::Zero(3, 3);
27 Matrix mCapacitance = Matrix::Zero(3, 3);
28 Matrix mSurgeImpedance;
30 std::shared_ptr<EMT::SimNode> mNode1, mNode2;
31 std::shared_ptr<EMT::Ph3::Resistor> mRes1, mRes2;
32 std::shared_ptr<EMT::Ph3::ControlledCurrentSource> mSrc1, mSrc2;
33 Attribute<Matrix>::Ptr mSrcCur1, mSrcCur2;
37 Matrix mVolt1, mVolt2, mCur1, mCur2;
42 Matrix interpolate(Matrix &data);
45 typedef std::shared_ptr<DecouplingLineEMT_Ph3> Ptr;
47 const Attribute<Matrix>::Ptr mSrcCur1Ref;
48 const Attribute<Matrix>::Ptr mSrcCur2Ref;
53 DecouplingLineEMT_Ph3(String name,
54 Logger::Level logLevel = Logger::Level::info);
56 void setParameters(SimNode<Real>::Ptr node1, SimNode<Real>::Ptr node2,
57 Matrix resistance, Matrix inductance, Matrix capacitance);
58 void initialize(Real omega, Real timeStep);
59 void step(Real time, Int timeStepCount);
61 Task::List getTasks();
62 IdentifiedObject::List getLineComponents();
64 class PreStep :
public Task {
66 PreStep(DecouplingLineEMT_Ph3 &line)
67 : Task(**line.
mName +
".MnaPreStep"), mLine(line) {
68 mPrevStepDependencies.push_back(mLine.mStates);
69 mModifiedAttributes.push_back(mLine.mSrc1->mCurrentRef);
70 mModifiedAttributes.push_back(mLine.mSrc2->mCurrentRef);
73 void execute(Real time, Int timeStepCount);
76 DecouplingLineEMT_Ph3 &mLine;
79 class PostStep :
public Task {
81 PostStep(DecouplingLineEMT_Ph3 &line)
82 : Task(**line.
mName +
".PostStep"), mLine(line) {
83 mAttributeDependencies.push_back(mLine.mRes1->mIntfVoltage);
84 mAttributeDependencies.push_back(mLine.mRes1->mIntfCurrent);
85 mAttributeDependencies.push_back(mLine.mRes2->mIntfVoltage);
86 mAttributeDependencies.push_back(mLine.mRes2->mIntfCurrent);
87 mModifiedAttributes.push_back(mLine.mStates);
90 void execute(Real time, Int timeStepCount);
93 DecouplingLineEMT_Ph3 &mLine;