27 个版本
使用旧 Rust 2015
0.10.2 | 2016 年 7 月 17 日 |
---|---|
0.10.0 | 2016 年 6 月 17 日 |
0.9.2 | 2016 年 2 月 5 日 |
0.9.1 | 2015 年 10 月 19 日 |
0.0.16 | 2015 年 3 月 6 日 |
#681 在 科学
52 每月下载
24KB
412 行
温度
该包提供温度模拟器。
文档
贡献
您的贡献非常受欢迎。请随时提出问题或提交拉取请求。请注意,提交给项目包含的贡献将根据LICENSE.md中给出的条款进行许可。
lib.rs
:
温度模拟器。
模型
温度模拟基于电和热电路之间已知的类比。给定一个具有 units
处理元素的系统,构建一个具有 nodes
热节点的等效热 RC 电路。然后使用该电路模拟系统的热行为。具体来说,热行为使用以下微分-代数方程组描述
dT
Cth -- + Gth (T - Tamb) = Mp P
dt
Q = Mq T
其中
-
Cth
是一个nodes × nodes
的热电容对角矩阵; -
Gth
是一个nodes × nodes
的对称、正定热导率矩阵; -
T
是热节点的温度的nodes
元素向量; -
Tamb
是环境温度的nodes
元素向量; -
P
是处理元素功耗的units
元素向量; -
Mp
是将处理元素的功耗分配到热节点的nodes × units
矩阵; -
Q
是感兴趣的点的温度的spots
元素向量; -
Mq
是将热节点的温度汇总到感兴趣的点的温度的spots × nodes
矩阵。
解决方案
原始系统转换为以下形式
dS
-- = A S + B P
dt
Q = C S + Mq Tamb
其中
S = D^(-1) (T - Tamb),
A = -D Gth D,
B = D Mp,
C = Mq D, and
D = Cth^(-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
(称为时间步长)足够短,使得在 [0, Δt]
时间内功率损耗变化不大。为了计算整个感兴趣时间段对应的温度分布,时间段被划分为小的子区间,并依次将上述方程应用于每个子区间。
依赖关系
~14MB
~120K SLoC