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