示例#1
0
 public void stamp(Circuit sim, int n0, int n1)
 {
     nodes[0] = n0;
     nodes[1] = n1;
     sim.stampNonLinear(nodes[0]);
     sim.stampNonLinear(nodes[1]);
 }
示例#2
0
        public override void stamp(Circuit sim)
        {
            int vn = sim.nodeCount + pins[2].voltSource;

            sim.stampNonLinear(vn);
            sim.stampNonLinear(0);
            sim.stampNonLinear(lead_node[2]);
        }
示例#3
0
 public override void stamp(Circuit sim)
 {
     sim.stampNonLinear(lead_node[anode]);
     sim.stampNonLinear(lead_node[cnode]);
     sim.stampNonLinear(lead_node[gnode]);
     sim.stampNonLinear(lead_node[inode]);
     sim.stampResistor(lead_node[gnode], lead_node[cnode], cresistance);
     diode.stamp(sim, lead_node[inode], lead_node[gnode]);
 }
示例#4
0
		public override void stamp(Circuit sim) {
			// output pin
			sim.stampVoltageSource(0, lead_node[1], pins[1].voltSource);
			// attach Vi to R1 pin so its current is proportional to Vi
			sim.stampVoltageSource(lead_node[0], lead_node[4], pins[4].voltSource, 0);
			// attach 5V to R2 pin so we get a current going
			sim.stampVoltageSource(0, lead_node[5], pins[5].voltSource, 5);
			// put resistor across cap pins to give current somewhere to go
			// in case cap is not connected
			sim.stampResistor(lead_node[2], lead_node[3], cResistance);
			sim.stampNonLinear(lead_node[2]);
			sim.stampNonLinear(lead_node[3]);
		}
示例#5
0
        /*public override void getInfo(String[] arr) {
         *      arr[0] = "op-amp";
         *      arr[1] = "V+ = " + getVoltageText(lead_volt[1]);
         *      arr[2] = "V- = " + getVoltageText(lead_volt[0]);
         *      // sometimes the voltage goes slightly outside range, to make
         *      // convergence easier. so we hide that here.
         *      double vo = Math.Max(Math.Min(lead_volt[2], maxOut), minOut);
         *      arr[3] = "Vout = " + getVoltageText(vo);
         *      arr[4] = "Iout = " + getCurrentText(current);
         *      arr[5] = "range = " + getVoltageText(minOut) + " to " + getVoltageText(maxOut);
         * }*/

        public override void stamp(Circuit sim)
        {
            int vn = sim.nodeCount + voltSource;

            sim.stampNonLinear(vn);
            sim.stampMatrix(lead_node[2], vn, 1);
        }
示例#6
0
 public override void stamp(Circuit sim)
 {
     // stamp voltage divider to put ctl pin at 2/3 V
     sim.stampResistor(lead_node[N_VIN], lead_node[N_CTL], 5000);
     sim.stampResistor(lead_node[N_CTL], 0, 10000);
     // output pin
     sim.stampVoltageSource(0, lead_node[N_OUT], pins[N_OUT].voltSource);
     // discharge pin
     sim.stampNonLinear(lead_node[N_DIS]);
 }
示例#7
0
 public override void stamp(Circuit sim)
 {
     sim.stampNonLinear(lead_node[0]);
     sim.stampNonLinear(lead_node[1]);
 }
示例#8
0
 public override void stamp(Circuit sim)
 {
     sim.stampVoltageSource(0, lead_node[3], voltSource);
     sim.stampNonLinear(lead_node[3]);
     sim.stampNonLinear(lead_node[1]);
 }