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
Language compatibility: >=1.0.0 <2.0.0
Runtime compatibility: >=1.0.0 <2.0.0
Dependencies: SS.LinearAlgebra ^1.7.0
Public API
CircuitAnalysis.acCurrent
export function acCurrent(Complex voltage, Complex impedance)->AcSolutionParameters: voltage: Complex, impedance: Complex
CircuitAnalysis.AcPoint
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
export record AcSolution(public Complex impedance, public Complex current, public double magnitude, public double phase)Parameters: impedance: Complex, current: Complex, magnitude: double, phase: double
CircuitAnalysis.AcSweep
export record AcSweep(public AcPoint[] points, public int unknownCount, public int maximumNonzeroCount)Parameters: points: AcPoint[], unknownCount: int, maximumNonzeroCount: int
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
CircuitAnalysis.add
export function add(Complex a, Complex b)->ComplexParameters: a: Complex, b: Complex
CircuitAnalysis.capacitor
export function capacitor(string name, string positiveNode, string negativeNode, double capacitance, double initialVoltage)->CircuitDeviceParameters: name: string, positiveNode: string, negativeNode: string, capacitance: double, initialVoltage: double
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
export record CircuitNetwork(public string[] nodes, public CircuitDevice[] devices, public string provenance)Parameters: nodes: string[], devices: CircuitDevice[], provenance: string
export function circuitPowerBalance(CircuitNetwork network, double[] nodeVoltages, double[] deviceCurrents, double tolerance)->CircuitPowerBalanceResultParameters: network: CircuitNetwork, nodeVoltages: double[], deviceCurrents: double[], tolerance: double
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
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
CircuitAnalysis.complex
export function complex(double real, double imaginary)->ComplexParameters: real: double, imaginary: double
CircuitAnalysis.Complex
export record Complex(public double real, public double imaginary)Parameters: real: double, imaginary: double
CircuitAnalysis.complexPower
export function complexPower(Complex rmsVoltage, Complex rmsCurrent)->PowerStateParameters: rmsVoltage: Complex, rmsCurrent: Complex
CircuitAnalysis.currentSource
export function currentSource(string name, string positiveNode, string negativeNode, double real, double imaginary)->CircuitDeviceParameters: name: string, positiveNode: string, negativeNode: string, real: double, imaginary: double
export record DcSolution(public double current, public double voltageDrop, public double power)Parameters: current: double, voltageDrop: double, power: double
CircuitAnalysis.divide
export function divide(Complex a, Complex b)->ComplexParameters: a: Complex, b: Complex
CircuitAnalysis.inductor
export function inductor(string name, string positiveNode, string negativeNode, double inductance, double initialCurrent)->CircuitDeviceParameters: name: string, positiveNode: string, negativeNode: string, inductance: double, initialCurrent: double
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
CircuitAnalysis.magnitude
export function magnitude(Complex value)->doubleParameters: value: Complex
CircuitAnalysis.multiply
export function multiply(Complex a, Complex b)->ComplexParameters: a: Complex, b: Complex
CircuitAnalysis.network
export function network(string[] nodes, CircuitDevice[] devices, string provenance)->CircuitNetworkParameters: nodes: string[], devices: CircuitDevice[], provenance: string
CircuitAnalysis.nodal2
export function nodal2(double conductance11, double conductance12, double conductance21, double conductance22, double injection1, double injection2)->Nodal2Parameters: conductance11: double, conductance12: double, conductance21: double, conductance22: double, injection1: double, injection2: double
CircuitAnalysis.Nodal2
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
CircuitAnalysis.ohmsLaw
export function ohmsLaw(double voltage, double resistance)->DcSolutionParameters: voltage: double, resistance: double
export function parallelResistance(double[] resistances)->doubleParameters: resistances: double[]
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)->CircuitNetworkParameters: nodes: string[], names: string[], kinds: string[], positiveNodes: string[], negativeNodes: string[], controlPositiveNodes: string[], controlNegativeNodes: string[], valueReal: double[], valueImaginary: double[], gains: double[], initialStates: double[], provenance: string
CircuitAnalysis.phase
export function phase(Complex value)->doubleParameters: value: Complex
CircuitAnalysis.polar
export function polar(double magnitudeValue, double phaseValue)->ComplexParameters: magnitudeValue: double, phaseValue: double
export record PowerState(public double realPower, public double reactivePower, public double apparentPower, public double powerFactor)Parameters: realPower: double, reactivePower: double, apparentPower: double, powerFactor: double
CircuitAnalysis.rcCharging
export function rcCharging(double sourceVoltage, double resistance, double capacitance, double initialVoltage, double time)->doubleParameters: sourceVoltage: double, resistance: double, capacitance: double, initialVoltage: double, time: double
CircuitAnalysis.resistor
export function resistor(string name, string positiveNode, string negativeNode, double resistance)->CircuitDeviceParameters: name: string, positiveNode: string, negativeNode: string, resistance: double
export function resonanceFrequency(double inductance, double capacitance)->doubleParameters: inductance: double, capacitance: double
CircuitAnalysis.rlcImpedance
export function rlcImpedance(double resistance, double inductance, double capacitance, double angularFrequency)->ComplexParameters: resistance: double, inductance: double, capacitance: double, angularFrequency: double
CircuitAnalysis.rlCurrent
export function rlCurrent(double sourceVoltage, double resistance, double inductance, double initialCurrent, double time)->doubleParameters: sourceVoltage: double, resistance: double, inductance: double, initialCurrent: double, time: double
CircuitAnalysis.seriesResistance
export function seriesResistance(double[] resistances)->doubleParameters: resistances: double[]
export function simulateAdaptiveTransient(CircuitNetwork network, double duration, int initialSteps, double tolerance, int maximumRefinements)->AdaptiveCircuitTransientResultParameters: network: CircuitNetwork, duration: double, initialSteps: int, tolerance: double, maximumRefinements: int
export function simulateBackwardEuler(CircuitNetwork network, double step, int stepCount)->TransientResultParameters: network: CircuitNetwork, step: double, stepCount: int
CircuitAnalysis.solveAc
export function solveAc(CircuitNetwork network, double angularFrequency)->AcPointParameters: network: CircuitNetwork, angularFrequency: double
CircuitAnalysis.solveDc
export function solveDc(CircuitNetwork network)->CircuitSolutionParameters: network: CircuitNetwork
export function solveResistiveLadder(int nodeCount, double seriesResistance, double shuntResistance, double sourceVoltage)->SparseCircuitSolutionParameters: nodeCount: int, seriesResistance: double, shuntResistance: double, sourceVoltage: double
CircuitAnalysis.solveSparseMna
export function solveSparseMna(CircuitNetwork network)->CircuitSolutionParameters: network: CircuitNetwork
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
CircuitAnalysis.subtract
export function subtract(Complex a, Complex b)->ComplexParameters: a: Complex, b: Complex
CircuitAnalysis.sweepAc
export function sweepAc(CircuitNetwork network, double[] angularFrequencies)->AcSweepParameters: network: CircuitNetwork, angularFrequencies: double[]
CircuitAnalysis.sweepRcLadder
export function sweepRcLadder(int nodeCount, double seriesResistance, double shuntCapacitance, double sourceReal, double sourceImaginary, double[] angularFrequencies)->LadderAcSweepParameters: nodeCount: int, seriesResistance: double, shuntCapacitance: double, sourceReal: double, sourceImaginary: double, angularFrequencies: double[]
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
CircuitAnalysis.vccs
export function vccs(string name, string positiveNode, string negativeNode, string controlPositiveNode, string controlNegativeNode, double transconductance)->CircuitDeviceParameters: name: string, positiveNode: string, negativeNode: string, controlPositiveNode: string, controlNegativeNode: string, transconductance: double
CircuitAnalysis.vcvs
export function vcvs(string name, string positiveNode, string negativeNode, string controlPositiveNode, string controlNegativeNode, double gain)->CircuitDeviceParameters: name: string, positiveNode: string, negativeNode: string, controlPositiveNode: string, controlNegativeNode: string, gain: double
CircuitAnalysis.voltageDivider
export function voltageDivider(double source, double upperResistance, double lowerResistance)->doubleParameters: source: double, upperResistance: double, lowerResistance: double
CircuitAnalysis.voltageSource
export function voltageSource(string name, string positiveNode, string negativeNode, double real, double imaginary)->CircuitDeviceParameters: 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.