circuitjs是开源的电源仿真软件 ,使用Java开发的,不过使用GWT包装的,GWT是一个可以将Java代码编译成js的开源项目,所以和普通的Java项目还是有区别的。
circuitjs是基于改进节点分析(MNA)算法实现的,这里主要讲一下circuitjs的核心算法流程,有以下关键步骤:
updateCircuit() 更新电路
所有的电路元器件连接关系和状态都是通过这个方法进行计算更新的,这块是circuitjs1核心算法,
1. analyzeCircuit() 分析电路:
- 计算线的闭合区间 calculateWireClosure()
- 寻找接地节点 setGroundNode()
- 为节点分配编号(编号代表在矩阵中的位置) makeNodeList()
- 创建元器件连接柱子位置 makePostDrawList()
- 计算导线 calcWireInfo() 简化线在矩阵中的复杂度(电线两端的电压相同,会使矩阵每根线增加2行,创建特殊的线对象,减少了矩阵的复杂性,只在需要的时候计算导线电流)
- 查找未连接的点 findUnconnectedNodes
- 校验电路 validateCircuit() (),有以下限制:
- 电压源/