package mods.eln.sim.mna.component; import mods.eln.sim.mna.SubSystem; import mods.eln.sim.mna.misc.MnaConst; import mods.eln.sim.mna.state.State; public class Resistor extends Bipole { public Resistor() { } public Resistor(State aPin, State bPin) { super(aPin, bPin); } //public SubSystem interSystemA, interSystemB; /* public Line line = null; public boolean lineReversDir; public boolean isInLine() { return line != null; }*/ private double r = MnaConst.highImpedance, rInv = 1 / MnaConst.highImpedance; //public boolean usedAsInterSystem = false; public double getRInv() { return rInv; } public double getR() { return r; } public double getI() { return getCurrent(); } public double getP() { return getU() * getCurrent(); } public double getU() { return (aPin == null ? 0 : aPin.state) - (bPin == null ? 0 : bPin.state); } public Resistor setR(double r) { if (this.r != r) { this.r = r; this.rInv = 1 / r; dirty(); } return this; } public void highImpedance() { setR(MnaConst.highImpedance); } public void ultraImpedance() { setR(MnaConst.ultraImpedance); } public Resistor pullDown() { setR(MnaConst.pullDown); return this; } /*@Override public void dirty() { if (line != null) { line.recalculateR(); } if (usedAsInterSystem) { aPin.getSubSystem().breakSystem(); if (aPin.getSubSystem() != bPin.getSubSystem()) { bPin.getSubSystem().breakSystem(); } } super.dirty(); }*/ boolean canBridge() { return false; } @Override public void applyTo(SubSystem s) { s.addToA(aPin, aPin, rInv); s.addToA(aPin, bPin, -rInv); s.addToA(bPin, bPin, rInv); s.addToA(bPin, aPin, -rInv); } @Override public double getCurrent() { return getU() * rInv; /*if(line == null) return getU() * rInv; else if (lineReversDir) return -line.getCurrent(); else return line.getCurrent();*/ } }