18class DecouplingIdealTransformer_EMT_Ph1
19 :
public SimSignalComp,
23 Real mInternalSeriesResistance = 1e-6;
24 Real mInternalParallelResistance = 1e6;
26 std::shared_ptr<EMT::SimNode> mNode1, mNode2, mVirtualNode;
27 std::shared_ptr<EMT::Ph1::Resistor> mRes1, mRes2;
28 std::shared_ptr<EMT::Ph1::CurrentSource> mCurrentSrc;
29 std::shared_ptr<EMT::Ph1::VoltageSource> mVoltageSrc;
30 Attribute<Complex>::Ptr mSrcCurrent, mSrcVoltage;
34 std::vector<Real> mCur1, mVol2;
38 std::vector<Real> mCur1Extrap, mVol2Extrap;
39 Real mCurrent1Extrap0;
42 UInt mMacroBufIdx = 0;
45 CouplingMethod mCouplingMethod;
46 UInt mExtrapolationDegree = 0;
47 Eigen::MatrixXd mVoltageSrcIntfCurr;
50 Real interpolate(std::vector<Real> &data);
53 Real extrapolate(std::vector<Real> &data);
56 typedef std::shared_ptr<DecouplingIdealTransformer_EMT_Ph1> Ptr;
58 const Attribute<Real>::Ptr mSourceVoltageIntfVoltage;
59 const Attribute<Real>::Ptr mSourceVoltageIntfCurrent;
60 const Attribute<Real>::Ptr mSrcCurrentRef;
61 const Attribute<Real>::Ptr mSrcVoltageRef;
66 DecouplingIdealTransformer_EMT_Ph1(
67 String name, Logger::Level logLevel = Logger::Level::info);
69 void setParameters(SimNode<Real>::Ptr node1, SimNode<Real>::Ptr node2,
70 Real delay, Matrix voltageSrcIntfCurr,
72 CouplingMethod method = CouplingMethod::DELAY);
73 void initialize(Real omega, Real timeStep);
74 void step(Real time, Int timeStepCount);
76 Task::List getTasks();
77 IdentifiedObject::List getComponents();
78 TopologicalNode::Ptr getVirtualNode();
80 class PreStep :
public Task {
82 PreStep(DecouplingIdealTransformer_EMT_Ph1 &itm)
83 : Task(**itm.
mName +
".MnaPreStep"), mITM(itm) {
84 mPrevStepDependencies.push_back(mITM.mStates);
85 mModifiedAttributes.push_back(mITM.mVoltageSrc->mVoltageRef);
86 mModifiedAttributes.push_back(mITM.mCurrentSrc->mCurrentRef);
89 void execute(Real time, Int timeStepCount);
92 DecouplingIdealTransformer_EMT_Ph1 &mITM;
95 class PostStep :
public Task {
97 PostStep(DecouplingIdealTransformer_EMT_Ph1 &itm)
98 : Task(**itm.
mName +
".PostStep"), mITM(itm) {
99 mAttributeDependencies.push_back(mITM.mVoltageSrc->mIntfVoltage);
100 mAttributeDependencies.push_back(mITM.mVoltageSrc->mIntfCurrent);
101 mAttributeDependencies.push_back(mITM.mCurrentSrc->mIntfVoltage);
102 mAttributeDependencies.push_back(mITM.mCurrentSrc->mIntfCurrent);
103 mModifiedAttributes.push_back(mITM.mStates);
106 void execute(Real time, Int timeStepCount);
109 DecouplingIdealTransformer_EMT_Ph1 &mITM;