1.0.12 • Published 1 year ago

js-circuit-solver v1.0.12

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

js-circuit-solver

Lightweight library aimed at solving/simulating simple electrical circuits

Install

Available as js-circuit-solver on npm. Run: npm install js-circuit-solver

Functions

This library currently provides a single function to solve simple resistive circuits. It takes in a circuit object and returns a solved circuit object. \

solveResistiveCircuit

function solveResistiveCircuit(circuit, groundNode, sourceNode, sourceVoltage) Usage:

  • circuit: Object containing circuit information. Array where element at index i is the array of the connections that node i has with other nodes.
  • groundNode: Node to be considered as ground
  • sourceNode: Node to be considered as source
  • sourceVoltage: Voltage of the source node

circuit Object

The following is an example circuit consisting of the source and ground nodes connected by 3 parallel branches each having 2 resistors. Example circuit diagram:

        |---R1---R2---|
        |             |
        S---R3---R4---G
        |             |
        |---R5---R6---|

Since the circuit only contains resistors, we can solve it using the function solveResistiveCircuit(circuit, groundNode, sourceNode, sourceVoltage). We want to set the source node (node 0) at 1V and ground node (node 1) at 0V. We can represent this circuit as the following circuit object:

[
    [
        {
            to: 2,
            resistance: 1
        },
        {
            to: 3,
            resistance: 1
        },
        {
            to: 4,
            resistance: 1
        }
    ],
    [
        {
            to: 2,
            resistance: 1
        },
        {
            to: 3,
            resistance: 1
        },
        {
            to: 4,
            resistance: 1
        }
    ],
    [
        {
            to: 0,
            resistance: 1
        },
        {
            to: 1,
            resistance: 1
        }
    ],
    [
        {
            to: 0,
            resistance: 1
        },
        {
            to: 1,
            resistance: 1
        }
    ],
    [
        {
            to: 0,
            resistance: 1
        },
        {
            to: 1,
            resistance: 1
        }
    ]
]

We get in return the following result, which is an array of objects specifying the i-th node's voltage and current flowing to each connected node:

[
    {
        voltage: 1,
        connections: [
            {
                to: 2,
                current: 0.5
            },
            {
                to: 3,
                current: 0.5
            },
            {
                to: 4,
                current: 0.5
            }
        ]
    },
    {
        voltage: 0,
        connections: [
            {
                to: 2,
                current: -0.5
            },
            {
                to: 3,
                current: -0.5
            },
            {
                to: 4,
                current: -0.5
            }
        ]
    },
    {
        voltage: 0.5,
        connections: [
            {
                to: 0,
                current: -0.5
            },
            {
                to: 1,
                current: 0.5
            }
        ]
    },
    {
        voltage: 0.5,
        connections: [
            {
                to: 0,
                current: -0.5
            },
            {
                to: 1,
                current: 0.5
            }
        ]
    },
    {
        voltage: 0.5,
        connections: [
            {
                to: 0,
                current: -0.5
            },
            {
                to: 1,
                current: 0.5
            }
        ]
    }
]
1.0.11

1 year ago

1.0.12

1 year ago

1.0.10

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago