Fix impedance for mixed mode traces
This commit is contained in:
parent
99c6d77ad8
commit
4caec3989e
@ -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();
|
||||||
|
@ -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)) {
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user