19class DecouplingIdealTransformer_DP_Ph1
20 :
public SimSignalComp,
24 Real mInternalSeriesResistance = 1e-9;
25 Real mInternalParallelResistance = 1e9;
27 std::shared_ptr<DP::SimNode> mNode1, mNode2, mVirtualNode;
28 std::shared_ptr<DP::Ph1::Resistor> mRes1, mRes2;
29 std::shared_ptr<DP::Ph1::ControlledCurrentSource> mCurrentSrc;
30 std::shared_ptr<DP::Ph1::ControlledVoltageSource> mVoltageSrc;
31 Attribute<Complex>::Ptr mSrcCurrent, mSrcVoltage;
35 std::vector<Complex> mCur1, mVol2;
39 std::vector<Complex> mCur1Extrap, mVol2Extrap;
40 Complex mCurrent1Extrap0;
43 UInt mMacroBufIdx = 0;
46 CouplingMethod mCouplingMethod;
47 UInt mExtrapolationDegree = 0;
48 Matrix mVoltageSrcIntfCurr;
51 Complex interpolate(std::vector<Complex> &data);
54 Complex extrapolate(std::vector<Complex> &data);
57 typedef std::shared_ptr<DecouplingIdealTransformer_DP_Ph1> Ptr;
59 const Attribute<Complex>::Ptr mSourceVoltageIntfVoltage;
60 const Attribute<Complex>::Ptr mSourceVoltageIntfCurrent;
61 const Attribute<Complex>::Ptr mSrcCurrentRef;
62 const Attribute<Complex>::Ptr mSrcVoltageRef;
67 DecouplingIdealTransformer_DP_Ph1(
68 String name, Logger::Level logLevel = Logger::Level::info);
70 void setParameters(SimNode<Complex>::Ptr node1, SimNode<Complex>::Ptr node2,
71 Real delay, Matrix voltageSrcIntfCurr,
72 Complex current1Extrap0,
73 CouplingMethod method = CouplingMethod::DELAY);
74 void initialize(Real omega, Real timeStep);
75 void step(Real time, Int timeStepCount);
77 Task::List getTasks();
78 IdentifiedObject::List getComponents();
79 TopologicalNode::Ptr getVirtualNode();
81 class PreStep :
public Task {
83 PreStep(DecouplingIdealTransformer_DP_Ph1 &itm)
84 : Task(**itm.
mName +
".MnaPreStep"), mITM(itm) {
85 mPrevStepDependencies.push_back(mITM.mStates);
86 mModifiedAttributes.push_back(mITM.mVoltageSrc->mVoltageRef);
87 mModifiedAttributes.push_back(mITM.mCurrentSrc->mCurrentRef);
90 void execute(Real time, Int timeStepCount);
93 DecouplingIdealTransformer_DP_Ph1 &mITM;
96 class PostStep :
public Task {
98 PostStep(DecouplingIdealTransformer_DP_Ph1 &itm)
99 : Task(**itm.
mName +
".PostStep"), mITM(itm) {
100 mAttributeDependencies.push_back(mITM.mVoltageSrc->mIntfVoltage);
101 mAttributeDependencies.push_back(mITM.mVoltageSrc->mIntfCurrent);
102 mAttributeDependencies.push_back(mITM.mCurrentSrc->mIntfVoltage);
103 mAttributeDependencies.push_back(mITM.mCurrentSrc->mIntfCurrent);
104 mModifiedAttributes.push_back(mITM.mStates);
107 void execute(Real time, Int timeStepCount);
110 DecouplingIdealTransformer_DP_Ph1 &mITM;