Skip to content
OFFICIAL SS DOCUMENTATION

SS.CircuitAnalysis 1.2.0

Legacy circuit fundamentals plus validated named-node linear RLC graphs, tokenized netlist parsing, DC/AC and sparse modified-nodal analysis, adaptive backward-Euler transients, independent power/Kirchhoff balance diagnostics and linear-storage ladder solvers
API 1.2.0
MIT
source

Language compatibility: >=1.0.0 <2.0.0
Runtime compatibility: >=1.0.0 <2.0.0

Dependencies: SS.LinearAlgebra ^1.7.0

Public API

Public signature
export function acCurrent(Complex voltage, Complex impedance)->AcSolution

Parameters: voltage: Complex, impedance: Complex


Public signature
export record AcPoint(public double angularFrequency, public double[] nodeVoltageReal, public double[] nodeVoltageImaginary, public double[] deviceCurrentReal, public double[] deviceCurrentImaginary, public double residual, public int nonzeroCount, public bool solved, public string diagnostic)

Parameters: angularFrequency: double, nodeVoltageReal: double[], nodeVoltageImaginary: double[], deviceCurrentReal: double[], deviceCurrentImaginary: double[], residual: double, nonzeroCount: int, solved: bool, diagnostic: string


Public signature
export record AcSolution(public Complex impedance, public Complex current, public double magnitude, public double phase)

Parameters: impedance: Complex, current: Complex, magnitude: double, phase: double


Public signature
export record AcSweep(public AcPoint[] points, public int unknownCount, public int maximumNonzeroCount)

Parameters: points: AcPoint[], unknownCount: int, maximumNonzeroCount: int


Public signature
export record AdaptiveCircuitTransientResult(public TransientResult transient, public double acceptedStep, public double estimatedError, public int refinements, public bool converged, public string diagnostic)

Parameters: transient: TransientResult, acceptedStep: double, estimatedError: double, refinements: int, converged: bool, diagnostic: string


Public signature
export function add(Complex a, Complex b)->Complex

Parameters: a: Complex, b: Complex


Public signature
export function capacitor(string name, string positiveNode, string negativeNode, double capacitance, double initialVoltage)->CircuitDevice

Parameters: name: string, positiveNode: string, negativeNode: string, capacitance: double, initialVoltage: double


Public signature
export record CircuitDevice(public string name, public string kind, public string positiveNode, public string negativeNode, public string controlPositiveNode, public string controlNegativeNode, public double valueReal, public double valueImaginary, public double gain, public double initialState)

Parameters: name: string, kind: string, positiveNode: string, negativeNode: string, controlPositiveNode: string, controlNegativeNode: string, valueReal: double, valueImaginary: double, gain: double, initialState: double


Public signature
export record CircuitNetwork(public string[] nodes, public CircuitDevice[] devices, public string provenance)

Parameters: nodes: string[], devices: CircuitDevice[], provenance: string


Public signature
export function circuitPowerBalance(CircuitNetwork network, double[] nodeVoltages, double[] deviceCurrents, double tolerance)->CircuitPowerBalanceResult

Parameters: network: CircuitNetwork, nodeVoltages: double[], deviceCurrents: double[], tolerance: double


Public signature
export record CircuitPowerBalanceResult(public double[] devicePowers, public double totalPower, public double maximumKirchhoffResidual, public bool balanced, public string diagnostic)

Parameters: devicePowers: double[], totalPower: double, maximumKirchhoffResidual: double, balanced: bool, diagnostic: string


Public signature
export record CircuitSolution(public string[] nodeNames, public double[] nodeVoltages, public string[] deviceNames, public double[] deviceCurrents, public double residual, public double powerResidual, public int unknownCount, public int nonzeroCount, public bool solved, public string diagnostic)

Parameters: nodeNames: string[], nodeVoltages: double[], deviceNames: string[], deviceCurrents: double[], residual: double, powerResidual: double, unknownCount: int, nonzeroCount: int, solved: bool, diagnostic: string


Public signature
export function complex(double real, double imaginary)->Complex

Parameters: real: double, imaginary: double


Public signature
export record Complex(public double real, public double imaginary)

Parameters: real: double, imaginary: double


Public signature
export function complexPower(Complex rmsVoltage, Complex rmsCurrent)->PowerState

Parameters: rmsVoltage: Complex, rmsCurrent: Complex


Public signature
export function currentSource(string name, string positiveNode, string negativeNode, double real, double imaginary)->CircuitDevice

Parameters: name: string, positiveNode: string, negativeNode: string, real: double, imaginary: double


Public signature
export record DcSolution(public double current, public double voltageDrop, public double power)

Parameters: current: double, voltageDrop: double, power: double


Public signature
export function divide(Complex a, Complex b)->Complex

Parameters: a: Complex, b: Complex


Public signature
export function inductor(string name, string positiveNode, string negativeNode, double inductance, double initialCurrent)->CircuitDevice

Parameters: name: string, positiveNode: string, negativeNode: string, inductance: double, initialCurrent: double


Public signature
export record LadderAcSweep(public double[] angularFrequencies, public double[] outputReal, public double[] outputImaginary, public int nodeCount, public int nonzeroCount, public double maximumResidual, public bool solved, public string diagnostic)

Parameters: angularFrequencies: double[], outputReal: double[], outputImaginary: double[], nodeCount: int, nonzeroCount: int, maximumResidual: double, solved: bool, diagnostic: string


Public signature
export function magnitude(Complex value)->double

Parameters: value: Complex


Public signature
export function multiply(Complex a, Complex b)->Complex

Parameters: a: Complex, b: Complex


Public signature
export function network(string[] nodes, CircuitDevice[] devices, string provenance)->CircuitNetwork

Parameters: nodes: string[], devices: CircuitDevice[], provenance: string


Public signature
export function nodal2(double conductance11, double conductance12, double conductance21, double conductance22, double injection1, double injection2)->Nodal2

Parameters: conductance11: double, conductance12: double, conductance21: double, conductance22: double, injection1: double, injection2: double


Public signature
export record Nodal2(public double voltage1, public double voltage2, public double residual, public bool solved, public string diagnostic)

Parameters: voltage1: double, voltage2: double, residual: double, solved: bool, diagnostic: string


Public signature
export function ohmsLaw(double voltage, double resistance)->DcSolution

Parameters: voltage: double, resistance: double


Public signature
export function parallelResistance(double[] resistances)->double

Parameters: resistances: double[]


Public signature
export function parseCircuitNetlist(string[] nodes, string[] names, string[] kinds, string[] positiveNodes, string[] negativeNodes, string[] controlPositiveNodes, string[] controlNegativeNodes, double[] valueReal, double[] valueImaginary, double[] gains, double[] initialStates, string provenance)->CircuitNetwork

Parameters: nodes: string[], names: string[], kinds: string[], positiveNodes: string[], negativeNodes: string[], controlPositiveNodes: string[], controlNegativeNodes: string[], valueReal: double[], valueImaginary: double[], gains: double[], initialStates: double[], provenance: string


Public signature
export function phase(Complex value)->double

Parameters: value: Complex


Public signature
export function polar(double magnitudeValue, double phaseValue)->Complex

Parameters: magnitudeValue: double, phaseValue: double


Public signature
export record PowerState(public double realPower, public double reactivePower, public double apparentPower, public double powerFactor)

Parameters: realPower: double, reactivePower: double, apparentPower: double, powerFactor: double


Public signature
export function rcCharging(double sourceVoltage, double resistance, double capacitance, double initialVoltage, double time)->double

Parameters: sourceVoltage: double, resistance: double, capacitance: double, initialVoltage: double, time: double


Public signature
export function resistor(string name, string positiveNode, string negativeNode, double resistance)->CircuitDevice

Parameters: name: string, positiveNode: string, negativeNode: string, resistance: double


Public signature
export function resonanceFrequency(double inductance, double capacitance)->double

Parameters: inductance: double, capacitance: double


Public signature
export function rlcImpedance(double resistance, double inductance, double capacitance, double angularFrequency)->Complex

Parameters: resistance: double, inductance: double, capacitance: double, angularFrequency: double


Public signature
export function rlCurrent(double sourceVoltage, double resistance, double inductance, double initialCurrent, double time)->double

Parameters: sourceVoltage: double, resistance: double, inductance: double, initialCurrent: double, time: double


Public signature
export function seriesResistance(double[] resistances)->double

Parameters: resistances: double[]


Public signature
export function simulateAdaptiveTransient(CircuitNetwork network, double duration, int initialSteps, double tolerance, int maximumRefinements)->AdaptiveCircuitTransientResult

Parameters: network: CircuitNetwork, duration: double, initialSteps: int, tolerance: double, maximumRefinements: int


Public signature
export function simulateBackwardEuler(CircuitNetwork network, double step, int stepCount)->TransientResult

Parameters: network: CircuitNetwork, step: double, stepCount: int


Public signature
export function solveAc(CircuitNetwork network, double angularFrequency)->AcPoint

Parameters: network: CircuitNetwork, angularFrequency: double


Public signature
export function solveDc(CircuitNetwork network)->CircuitSolution

Parameters: network: CircuitNetwork


Public signature
export function solveResistiveLadder(int nodeCount, double seriesResistance, double shuntResistance, double sourceVoltage)->SparseCircuitSolution

Parameters: nodeCount: int, seriesResistance: double, shuntResistance: double, sourceVoltage: double


Public signature
export function solveSparseMna(CircuitNetwork network)->CircuitSolution

Parameters: network: CircuitNetwork


Public signature
export record SparseCircuitSolution(public double[] nodeVoltages, public int unknownCount, public int nonzeroCount, public int iterations, public double residual, public bool solved, public string diagnostic)

Parameters: nodeVoltages: double[], unknownCount: int, nonzeroCount: int, iterations: int, residual: double, solved: bool, diagnostic: string


Public signature
export function subtract(Complex a, Complex b)->Complex

Parameters: a: Complex, b: Complex


Public signature
export function sweepAc(CircuitNetwork network, double[] angularFrequencies)->AcSweep

Parameters: network: CircuitNetwork, angularFrequencies: double[]


Public signature
export function sweepRcLadder(int nodeCount, double seriesResistance, double shuntCapacitance, double sourceReal, double sourceImaginary, double[] angularFrequencies)->LadderAcSweep

Parameters: nodeCount: int, seriesResistance: double, shuntCapacitance: double, sourceReal: double, sourceImaginary: double, angularFrequencies: double[]


Public signature
export record TransientResult(public double[] times, public double[] nodeVoltages, public int nodeCount, public double[] deviceCurrents, public int deviceCount, public double[] residuals, public double[] storedEnergy, public bool solved, public string diagnostic)

Parameters: times: double[], nodeVoltages: double[], nodeCount: int, deviceCurrents: double[], deviceCount: int, residuals: double[], storedEnergy: double[], solved: bool, diagnostic: string


Public signature
export function vccs(string name, string positiveNode, string negativeNode, string controlPositiveNode, string controlNegativeNode, double transconductance)->CircuitDevice

Parameters: name: string, positiveNode: string, negativeNode: string, controlPositiveNode: string, controlNegativeNode: string, transconductance: double


Public signature
export function vcvs(string name, string positiveNode, string negativeNode, string controlPositiveNode, string controlNegativeNode, double gain)->CircuitDevice

Parameters: name: string, positiveNode: string, negativeNode: string, controlPositiveNode: string, controlNegativeNode: string, gain: double


Public signature
export function voltageDivider(double source, double upperResistance, double lowerResistance)->double

Parameters: source: double, upperResistance: double, lowerResistance: double


Public signature
export function voltageSource(string name, string positiveNode, string negativeNode, double real, double imaginary)->CircuitDevice

Parameters: name: string, positiveNode: string, negativeNode: string, real: double, imaginary: double


Documentation version

Language 1.0.0, compiler 1.0.0, runtime 1.0.0. This reference is generated from the official SS documentation so package and language details stay consistent with the release.