NPN
NPN bipolar transistor (Ebers-Moll): collector, base and emitter pins.
📝Syntax
Block type: NPN
📥Input Arguments
Parameter Description
physical pins 3 undirected physical pin(s); 0 signal input(s).
📤Output Arguments
Parameter Description
signal ports 0 signal output(s) (sensor readings).
📄Description

NPN bipolar transistor (Ebers-Moll): collector, base and emitter pins.

Module nflow_blocks
Library Electrical (acausal)
Type NPN
Label NPN
Solver Lowered to physicalIsland. Reference solver dae (differential-algebraic); the fixed-step loop and the native explicit solvers (ode1/ode4/ode45) are also supported (a jointed multibody island requires dae).

Implementation Sources

Manifestmodules/nflow_blocks/libraries/acausal_electrical/library.json
{
  "id": "builtin.acausal_electrical",
  "title": "Electrical (acausal)",
  "version": "1.0.0",
  "format": "nflow-2",
  "metadata": {
    "author": "Allan CORNET",
    "tool": "Nelson nflow"
  },
  "comment": "Acausal electrical components (physical pins); lower to physicalIsland.",
  "license": "LGPL-3.0",
  "builtin": true,
  "renderModule": false,
  "blocks": [
    {
      "type": "Ground",
      "label": "Ground",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {},
      "icon": "Ground.svg",
      "render": {
        "type": "image",
        "src": "Ground.svg"
      },
      "help": "Reference node (0 V) for an electrical island."
    },
    {
      "type": "Resistor",
      "label": "Resistor",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "R": 1000
      },
      "icon": "Resistor.svg",
      "render": {
        "type": "image",
        "src": "Resistor.svg"
      },
      "help": "Ideal linear resistor: i = (v_p - v_n) / R."
    },
    {
      "type": "HeatingResistor",
      "label": "HeatingResistor",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        },
        {
          "name": "heatPort",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "thermal"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "R": 1000
      },
      "icon": "HeatingResistor.svg",
      "render": {
        "type": "image",
        "src": "HeatingResistor.svg"
      },
      "help": "Resistor that dissipates its power P = v^2 / R as heat into a thermal port."
    },
    {
      "type": "Conductor",
      "label": "Conductor",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "G": 0.001
      },
      "icon": "Conductor.svg",
      "render": {
        "type": "image",
        "src": "Conductor.svg"
      },
      "help": "Ideal linear conductor: i = G (v_p - v_n)."
    },
    {
      "type": "VariableResistor",
      "label": "VariableResistor",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [
        {
          "x": 50,
          "y": 0,
          "side": "top",
          "name": "R"
        }
      ],
      "outputs": [],
      "defaultParams": {},
      "icon": "VariableResistor.svg",
      "render": {
        "type": "image",
        "src": "VariableResistor.svg"
      },
      "help": "Resistor whose resistance R is set by the input signal."
    },
    {
      "type": "VariableConductor",
      "label": "VariableConductor",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [
        {
          "x": 50,
          "y": 0,
          "side": "top",
          "name": "G"
        }
      ],
      "outputs": [],
      "defaultParams": {},
      "icon": "VariableConductor.svg",
      "render": {
        "type": "image",
        "src": "VariableConductor.svg"
      },
      "help": "Conductor whose conductance G is set by the input signal."
    },
    {
      "type": "VariableCapacitor",
      "label": "VariableCapacitor",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [
        {
          "x": 50,
          "y": 0,
          "side": "top",
          "name": "C"
        }
      ],
      "outputs": [],
      "defaultParams": {
        "q0": 0
      },
      "icon": "VariableCapacitor.svg",
      "render": {
        "type": "image",
        "src": "VariableCapacitor.svg"
      },
      "help": "Capacitor whose capacitance C is set by a signal (exact charge Q formulation)."
    },
    {
      "type": "VariableInductor",
      "label": "VariableInductor",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [
        {
          "x": 50,
          "y": 0,
          "side": "top",
          "name": "L"
        }
      ],
      "outputs": [],
      "defaultParams": {
        "phi0": 0
      },
      "icon": "VariableInductor.svg",
      "render": {
        "type": "image",
        "src": "VariableInductor.svg"
      },
      "help": "Inductor whose inductance L is set by a signal (exact flux phi formulation)."
    },
    {
      "type": "Capacitor",
      "label": "Capacitor",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "C": 1e-6,
        "v0": 0
      },
      "icon": "Capacitor.svg",
      "render": {
        "type": "image",
        "src": "Capacitor.svg"
      },
      "help": "Ideal linear capacitor: i = C dv/dt."
    },
    {
      "type": "Inductor",
      "label": "Inductor",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "L": 0.001,
        "i0": 0
      },
      "icon": "Inductor.svg",
      "render": {
        "type": "image",
        "src": "Inductor.svg"
      },
      "help": "Ideal linear inductor: v = L di/dt."
    },
    {
      "type": "ConstantVoltage",
      "label": "ConstantVoltage",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "V": 1
      },
      "icon": "ConstantVoltage.svg",
      "render": {
        "type": "image",
        "src": "ConstantVoltage.svg"
      },
      "help": "Constant voltage source: v_p - v_n = V."
    },
    {
      "type": "SignalVoltage",
      "label": "SignalVoltage",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [
        {
          "x": 50,
          "y": 0,
          "side": "top",
          "name": "V"
        }
      ],
      "outputs": [],
      "defaultParams": {},
      "icon": "SignalVoltage.svg",
      "render": {
        "type": "image",
        "src": "SignalVoltage.svg"
      },
      "help": "Voltage source driven by the input signal."
    },
    {
      "type": "ConstantCurrent",
      "label": "ConstantCurrent",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "I": 1
      },
      "icon": "ConstantCurrent.svg",
      "render": {
        "type": "image",
        "src": "ConstantCurrent.svg"
      },
      "help": "Constant current source: current I flows p -> n."
    },
    {
      "type": "SignalCurrent",
      "label": "SignalCurrent",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [
        {
          "x": 50,
          "y": 0,
          "side": "top",
          "name": "I"
        }
      ],
      "outputs": [],
      "defaultParams": {},
      "icon": "SignalCurrent.svg",
      "render": {
        "type": "image",
        "src": "SignalCurrent.svg"
      },
      "help": "Current source driven by the input signal."
    },
    {
      "type": "SineVoltage",
      "label": "SineVoltage",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "Amplitude": 1,
        "Frequency": 1,
        "Phase": 0
      },
      "icon": "SineVoltage.svg",
      "render": {
        "type": "image",
        "src": "SineVoltage.svg"
      },
      "help": "Sine voltage source: v = Amplitude sin(2 pi Frequency t + Phase)."
    },
    {
      "type": "SineCurrent",
      "label": "SineCurrent",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "Amplitude": 1,
        "Frequency": 1,
        "Phase": 0
      },
      "icon": "SineCurrent.svg",
      "render": {
        "type": "image",
        "src": "SineCurrent.svg"
      },
      "help": "Sine current source: i = Amplitude sin(2 pi Frequency t + Phase)."
    },
    {
      "type": "ExpSineVoltage",
      "label": "ExpSineVoltage",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "Amplitude": 1,
        "Frequency": 2,
        "Damping": 0.5,
        "Phase": 0
      },
      "icon": "ExpSineVoltage.svg",
      "render": {
        "type": "image",
        "src": "ExpSineVoltage.svg"
      },
      "help": "Exponentially damped sine voltage source."
    },
    {
      "type": "ExpSineCurrent",
      "label": "ExpSineCurrent",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "Amplitude": 1,
        "Frequency": 2,
        "Damping": 0.5,
        "Phase": 0
      },
      "icon": "ExpSineCurrent.svg",
      "render": {
        "type": "image",
        "src": "ExpSineCurrent.svg"
      },
      "help": "Exponentially damped sine current source."
    },
    {
      "type": "TrapezoidVoltage",
      "label": "TrapezoidVoltage",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "Amplitude": 1,
        "Rising": 0.2,
        "Width": 0.3,
        "Falling": 0.2,
        "Period": 1
      },
      "icon": "TrapezoidVoltage.svg",
      "render": {
        "type": "image",
        "src": "TrapezoidVoltage.svg"
      },
      "help": "Trapezoidal voltage source (continuous ramp-up / hold / ramp-down)."
    },
    {
      "type": "TrapezoidCurrent",
      "label": "TrapezoidCurrent",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "Amplitude": 1,
        "Rising": 0.2,
        "Width": 0.3,
        "Falling": 0.2,
        "Period": 1
      },
      "icon": "TrapezoidCurrent.svg",
      "render": {
        "type": "image",
        "src": "TrapezoidCurrent.svg"
      },
      "help": "Trapezoidal current source (continuous ramp-up / hold / ramp-down)."
    },
    {
      "type": "VCV",
      "label": "VCV",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        },
        {
          "name": "cp",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "electrical"
        },
        {
          "name": "cn",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "gain": 1
      },
      "icon": "VCV.svg",
      "render": {
        "type": "image",
        "src": "VCV.svg"
      },
      "help": "Voltage-controlled voltage source: v_pn = gain (v_cp - v_cn)."
    },
    {
      "type": "VCC",
      "label": "VCC",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        },
        {
          "name": "cp",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "electrical"
        },
        {
          "name": "cn",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "gain": 1
      },
      "icon": "VCC.svg",
      "render": {
        "type": "image",
        "src": "VCC.svg"
      },
      "help": "Voltage-controlled current source: i = gain (v_cp - v_cn)."
    },
    {
      "type": "CCV",
      "label": "CCV",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        },
        {
          "name": "cp",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "electrical"
        },
        {
          "name": "cn",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "gain": 1
      },
      "icon": "CCV.svg",
      "render": {
        "type": "image",
        "src": "CCV.svg"
      },
      "help": "Current-controlled voltage source: v_pn = gain i_cp (the sense branch cp-cn is a short)."
    },
    {
      "type": "CCC",
      "label": "CCC",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        },
        {
          "name": "cp",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "electrical"
        },
        {
          "name": "cn",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "gain": 1
      },
      "icon": "CCC.svg",
      "render": {
        "type": "image",
        "src": "CCC.svg"
      },
      "help": "Current-controlled current source: i_pn = gain i_cp (the sense branch cp-cn is a short)."
    },
    {
      "type": "Diode",
      "label": "Diode",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "Is": 1e-9,
        "Vt": 0.025
      },
      "icon": "Diode.svg",
      "render": {
        "type": "image",
        "src": "Diode.svg"
      },
      "help": "Exponential (Shockley) diode: i = Is (exp(vd/Vt) - 1)."
    },
    {
      "type": "ZDiode",
      "label": "ZDiode",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "Is": 1e-9,
        "Vt": 0.04,
        "Vz": 5
      },
      "icon": "ZDiode.svg",
      "render": {
        "type": "image",
        "src": "ZDiode.svg"
      },
      "help": "Zener diode: forward Shockley conduction plus reverse breakdown at -Vz."
    },
    {
      "type": "IdealDiode",
      "label": "IdealDiode",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "Ron": 0.001,
        "Goff": 1e-6,
        "Vknee": 0
      },
      "icon": "IdealDiode.svg",
      "render": {
        "type": "image",
        "src": "IdealDiode.svg"
      },
      "help": "Ideal diode switching at the knee voltage Vknee: off below it (leak conductance Goff), on above it (on-resistance Ron in series with Vknee); the mode flip is an event."
    },
    {
      "type": "RampVoltage",
      "label": "RampVoltage",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "Slope": 1,
        "StartTime": 0
      },
      "icon": "RampVoltage.svg",
      "render": {
        "type": "image",
        "src": "RampVoltage.svg"
      },
      "help": "Ramp voltage source: v = Slope (t - StartTime) for t >= StartTime, else 0."
    },
    {
      "type": "RampCurrent",
      "label": "RampCurrent",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "Slope": 1,
        "StartTime": 0
      },
      "icon": "RampCurrent.svg",
      "render": {
        "type": "image",
        "src": "RampCurrent.svg"
      },
      "help": "Ramp current source: i = Slope (t - StartTime) for t >= StartTime, else 0."
    },
    {
      "type": "NPN",
      "label": "NPN",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "C",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "B",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        },
        {
          "name": "E",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "Is": 1e-16,
        "Vt": 0.025,
        "Bf": 100,
        "Br": 1
      },
      "icon": "NPN.svg",
      "render": {
        "type": "image",
        "src": "NPN.svg"
      },
      "help": "NPN bipolar transistor (Ebers-Moll): collector, base and emitter pins."
    },
    {
      "type": "PNP",
      "label": "PNP",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "C",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "B",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        },
        {
          "name": "E",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "Is": 1e-16,
        "Vt": 0.025,
        "Bf": 100,
        "Br": 1
      },
      "icon": "PNP.svg",
      "render": {
        "type": "image",
        "src": "PNP.svg"
      },
      "help": "PNP bipolar transistor (Ebers-Moll): collector, base and emitter pins."
    },
    {
      "type": "NMOS",
      "label": "NMOS",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "D",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "G",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        },
        {
          "name": "S",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "Beta": 0.001,
        "Vt": 1
      },
      "icon": "NMOS.svg",
      "render": {
        "type": "image",
        "src": "NMOS.svg"
      },
      "help": "N-channel MOSFET (square law): drain, gate and source pins."
    },
    {
      "type": "PMOS",
      "label": "PMOS",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "D",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "G",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        },
        {
          "name": "S",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "Beta": 0.001,
        "Vt": 1
      },
      "icon": "PMOS.svg",
      "render": {
        "type": "image",
        "src": "PMOS.svg"
      },
      "help": "P-channel MOSFET (square law): drain, gate and source pins."
    },
    {
      "type": "IdealTransformer",
      "label": "IdealTransformer",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p1",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n1",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        },
        {
          "name": "p2",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "electrical"
        },
        {
          "name": "n2",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "n": 1
      },
      "icon": "IdealTransformer.svg",
      "render": {
        "type": "image",
        "src": "IdealTransformer.svg"
      },
      "help": "Ideal transformer: v1 = n v2, i2 = -n i1 (structural, no state storage)."
    },
    {
      "type": "Gyrator",
      "label": "Gyrator",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p1",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n1",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        },
        {
          "name": "p2",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "electrical"
        },
        {
          "name": "n2",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {
        "G1": 1,
        "G2": 1
      },
      "icon": "Gyrator.svg",
      "render": {
        "type": "image",
        "src": "Gyrator.svg"
      },
      "help": "Gyrator: i1 = G2 v2, i2 = -G1 v1 (across<->through transducer)."
    },
    {
      "type": "IdealOpAmp",
      "label": "IdealOpAmp",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "in_p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "in_n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        },
        {
          "name": "out",
          "x": 50,
          "y": 0,
          "side": "top",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {},
      "icon": "IdealOpAmp.svg",
      "render": {
        "type": "image",
        "src": "IdealOpAmp.svg"
      },
      "help": "Ideal op-amp (nullor): virtual short e_+ = e_-, output current free."
    },
    {
      "type": "Short",
      "label": "Short",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {},
      "icon": "Short.svg",
      "render": {
        "type": "image",
        "src": "Short.svg"
      },
      "help": "Ideal short circuit: e_p = e_n (branch current free)."
    },
    {
      "type": "Idle",
      "label": "Idle",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [],
      "defaultParams": {},
      "icon": "Idle.svg",
      "render": {
        "type": "image",
        "src": "Idle.svg"
      },
      "help": "Ideal open branch: i = 0 (branch voltage free)."
    },
    {
      "type": "IdealSwitch",
      "label": "IdealSwitch",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [
        {
          "x": 50,
          "y": 0,
          "side": "top",
          "name": "control"
        }
      ],
      "outputs": [],
      "defaultParams": {},
      "icon": "IdealSwitch.svg",
      "render": {
        "type": "image",
        "src": "IdealSwitch.svg"
      },
      "help": "Ideal switch: control > 0.5 -> closed short, else open (i = 0)."
    },
    {
      "type": "VoltageSensor",
      "label": "VoltageSensor",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [
        {
          "x": 50,
          "y": 80,
          "side": "bottom",
          "name": "voltage"
        }
      ],
      "defaultParams": {},
      "icon": "VoltageSensor.svg",
      "render": {
        "type": "image",
        "src": "VoltageSensor.svg"
      },
      "help": "Measures the voltage v_p - v_n (ideal, no loading)."
    },
    {
      "type": "CurrentSensor",
      "label": "CurrentSensor",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        },
        {
          "name": "n",
          "x": 100,
          "y": 40,
          "side": "right",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [
        {
          "x": 50,
          "y": 80,
          "side": "bottom",
          "name": "current"
        }
      ],
      "defaultParams": {},
      "icon": "CurrentSensor.svg",
      "render": {
        "type": "image",
        "src": "CurrentSensor.svg"
      },
      "help": "Measures the branch current p -> n (ideal ammeter)."
    },
    {
      "type": "PotentialSensor",
      "label": "PotentialSensor",
      "acausal": true,
      "domain": "electrical",
      "width": 100,
      "height": 80,
      "physicalPins": [
        {
          "name": "p",
          "x": 0,
          "y": 40,
          "side": "left",
          "domain": "electrical"
        }
      ],
      "inputs": [],
      "outputs": [
        {
          "x": 50,
          "y": 80,
          "side": "bottom",
          "name": "potential"
        }
      ],
      "defaultParams": {},
      "icon": "PotentialSensor.svg",
      "render": {
        "type": "image",
        "src": "PotentialSensor.svg"
      },
      "help": "Measures the absolute node potential."
    }
  ]
}
Catalogmodules/nflow_blocks/functions/+NFlow/+internal/acausalCatalog.m
  c{end + 1} = entry('NPN', 'Electrical', 'electrical', 'physicalIsland', ...
    'npn', {{'C', 'a'}, {'B', 'c'}, {'E', 'b'}}, ...
    {{'Is', 'Is', 1e-16, 'A'}, {'Vt', 'Vt', 0.025, 'V'}, ...
     {'Bf', 'Bf', 100, '1'}, {'Br', 'Br', 1, '1'}}, '', '', ...
    'NPN bipolar transistor (Ebers-Moll): collector, base and emitter pins.');
🔗See Also
GroundResistorHeatingResistor
🕔Version History
Version Description
1.0.0 initial version
Edit this page on GitHub