Fix impedance for mixed mode traces

This commit is contained in:
Jan Käberich 2023-03-01 10:34:54 +01:00
parent 99c6d77ad8
commit 4caec3989e
3 changed files with 25 additions and 17 deletions

View File

@ -66,12 +66,13 @@ void MixedModeConversion::selectionChanged()
class Destination { class Destination {
public: public:
Destination(std::vector<Source> sources, QString name, QString formula) Destination(std::vector<Source> sources, QString name, QString formula, double reference_impedance)
{ {
this->name = name; this->name = name;
t = new Trace(name); t = new Trace(name);
t->fromMath(); t->fromMath();
t->setMathFormula(formula); t->setMathFormula(formula);
t->setReferenceImpedance(reference_impedance);
// is a reflection trace if the last two chars in the name are the same // is a reflection trace if the last two chars in the name are the same
t->setReflection(name[name.size()-1] == name[name.size()-2]); t->setReflection(name[name.size()-1] == name[name.size()-2]);
// add math sources // add math sources
@ -114,25 +115,25 @@ void MixedModeConversion::selectionChanged()
auto prefix = ui->prefix->text(); auto prefix = ui->prefix->text();
std::vector<Destination> destinations = { std::vector<Destination> destinations = {
Destination(sources, prefix+"SDD11", "0.5*(S11-S13-S31+S33)"), Destination(sources, prefix+"SDD11", "0.5*(S11-S13-S31+S33)", 2*ui->selector->getReferenceImpedance()),
Destination(sources, prefix+"SDD12", "0.5*(S12-S14-S32+S34)"), Destination(sources, prefix+"SDD12", "0.5*(S12-S14-S32+S34)", 2*ui->selector->getReferenceImpedance()),
Destination(sources, prefix+"SDD21", "0.5*(S21-S23-S41+S43)"), Destination(sources, prefix+"SDD21", "0.5*(S21-S23-S41+S43)", 2*ui->selector->getReferenceImpedance()),
Destination(sources, prefix+"SDD22", "0.5*(S22-S24-S42+S44)"), Destination(sources, prefix+"SDD22", "0.5*(S22-S24-S42+S44)", 2*ui->selector->getReferenceImpedance()),
Destination(sources, prefix+"SDC11", "0.5*(S11+S13-S31-S33)"), Destination(sources, prefix+"SDC11", "0.5*(S11+S13-S31-S33)", 0.5*ui->selector->getReferenceImpedance()),
Destination(sources, prefix+"SDC12", "0.5*(S12+S14-S32-S34)"), Destination(sources, prefix+"SDC12", "0.5*(S12+S14-S32-S34)", 0.5*ui->selector->getReferenceImpedance()),
Destination(sources, prefix+"SDC21", "0.5*(S21+S23-S41-S43)"), Destination(sources, prefix+"SDC21", "0.5*(S21+S23-S41-S43)", 0.5*ui->selector->getReferenceImpedance()),
Destination(sources, prefix+"SDC22", "0.5*(S22+S24-S42-S44)"), Destination(sources, prefix+"SDC22", "0.5*(S22+S24-S42-S44)", 0.5*ui->selector->getReferenceImpedance()),
Destination(sources, prefix+"SCD11", "0.5*(S11-S13+S31-S33)"), Destination(sources, prefix+"SCD11", "0.5*(S11-S13+S31-S33)", 2*ui->selector->getReferenceImpedance()),
Destination(sources, prefix+"SCD12", "0.5*(S12-S14+S32-S34)"), Destination(sources, prefix+"SCD12", "0.5*(S12-S14+S32-S34)", 2*ui->selector->getReferenceImpedance()),
Destination(sources, prefix+"SCD21", "0.5*(S21-S23+S41-S43)"), Destination(sources, prefix+"SCD21", "0.5*(S21-S23+S41-S43)", 2*ui->selector->getReferenceImpedance()),
Destination(sources, prefix+"SCD22", "0.5*(S22-S24+S42-S44)"), Destination(sources, prefix+"SCD22", "0.5*(S22-S24+S42-S44)", 2*ui->selector->getReferenceImpedance()),
Destination(sources, prefix+"SCC11", "0.5*(S11+S13+S31+S33)"), Destination(sources, prefix+"SCC11", "0.5*(S11+S13+S31+S33)", 0.5*ui->selector->getReferenceImpedance()),
Destination(sources, prefix+"SCC12", "0.5*(S12+S14+S32+S34)"), Destination(sources, prefix+"SCC12", "0.5*(S12+S14+S32+S34)", 0.5*ui->selector->getReferenceImpedance()),
Destination(sources, prefix+"SCC21", "0.5*(S21+S23+S41+S43)"), Destination(sources, prefix+"SCC21", "0.5*(S21+S23+S41+S43)", 0.5*ui->selector->getReferenceImpedance()),
Destination(sources, prefix+"SCC22", "0.5*(S22+S24+S42+S44)"), Destination(sources, prefix+"SCC22", "0.5*(S22+S24+S42+S44)", 0.5*ui->selector->getReferenceImpedance()),
}; };
ui->list->clear(); ui->list->clear();

View File

@ -576,6 +576,11 @@ bool Trace::addMathSource(unsigned int hash, QString variableName)
return false; return false;
} }
void Trace::setReferenceImpedance(double value)
{
reference_impedance = value;
}
bool Trace::mathDependsOn(Trace *t, bool onlyDirectDependency) bool Trace::mathDependsOn(Trace *t, bool onlyDirectDependency)
{ {
if(mathSourceTraces.count(t)) { if(mathSourceTraces.count(t)) {

View File

@ -171,6 +171,8 @@ public:
// after all traces from the setup file have been created. It will look for the missing traces // after all traces from the setup file have been created. It will look for the missing traces
bool resolveMathSourceHashes(); bool resolveMathSourceHashes();
void setReferenceImpedance(double value);
public slots: public slots:
void setVisible(bool visible); void setVisible(bool visible);
void setColor(QColor color); void setColor(QColor color);