6 个版本
使用旧的 Rust 2015
0.0.7 |
|
---|---|
0.0.6 | 2015年1月8日 |
0.0.4 | 2014年12月30日 |
0.0.2 | 2014年11月21日 |
#11 in #electronic
33KB
466 行
温度分析
该库提供了一个基于指数积分器的求解器,用于求解模拟电子系统温度的微分代数方程组。
文档
贡献
- fork 项目。
- 实现你的想法。
- 创建 pull request。
lib.rs
:
电子系统温度分析。
模型
温度分析基于电与热电路之间已知的类比。对于感兴趣的电子系统,构建一个等效的热阻电路。电路由 nodes
个热节点组成。从 nodes
个节点中选出的一部分 cores
热节点对应于电子系统的功耗元件,被称为活性。
电子系统的热行为通过以下微分代数方程组进行建模
dQall
C * ----- + G * (Qall - Qamb) = M * P
dt
Q = M^T * Qall
其中
-
C
是一个nodes
行nodes
列的热容对角矩阵; -
G
是一个nodes
行nodes
列的对称、正定热导率矩阵; -
Qall
是所有热节点的nodes
元素温度向量; -
Q
是活性热节点的cores
元素温度向量; -
Qamb
是环境的cores
元素温度向量; -
P
是活性热节点的cores
元素功率向量;并且 -
M
是一个对角元素为 1 的nodes
行cores
列的矩形对角矩阵。
解决方案
原始热系统按以下方式进行转换
dS
-- = A * S + B * P
dt
Q = B^T * S + Qamb
其中
S = D^(-1) * (Qall - Qamb),
A = -D * G * D,
B = D * M, and
D = C^(-1/2).
A
的特征分解,它是实对称的,为
A = U * diag(Λ) * U^T.
在短时间间隔 [0, Δt]
内求解该方程组的解基于以下方程
S(t) = E * S(0) + F * P(0)
其中
E = exp(A * Δt) = U * diag(exp(λi * Δt)) * U^T and
F = A^(-1) * (exp(A * Δt) - I) * B
= U * diag((exp(λi * Δt) - 1) / λi) * U^T * B.
Δt
被称为时间步长。为了找到对应整个感兴趣时间段内的温度分布,将时间段分割成小的间隔,并依次将这些小间隔应用到上述方程中。
依赖项
~1.5MB
~56K SLoC