27 releases
Uses old Rust 2015
| 0.10.2 | Jul 17, 2016 |
|---|---|
| 0.10.0 | Jun 17, 2016 |
| 0.9.2 | Feb 5, 2016 |
| 0.9.1 | Oct 19, 2015 |
| 0.0.16 | Mar 6, 2015 |
#2959 in Math
60 downloads per month
24KB
412 lines
Temperature

The package provides a temperature simulator.
Documentation
Contribution
Your contribution is highly appreciated. Do not hesitate to open an issue or a pull request. Note that any contribution submitted for inclusion in the project will be licensed according to the terms given in LICENSE.md.
lib.rs:
Temperature simulator.
Model
Temperature simulation is based on the well-known analogy between electrical
and thermal circuits. Given a system with units processing elements, an
equivalent thermal RC circuit with nodes thermal nodes is constructed. The
circuit is then used for modeling the thermal behavior of the system.
Concretely, the thermal behavior is described using the following system of
differential-algebraic equations:
dT
Cth -- + Gth (T - Tamb) = Mp P
dt
Q = Mq T
where
-
Cthis anodes × nodesdiagonal matrix of the thermal capacitance; -
Gthis anodes × nodessymmetric, positive-definite matrix of the thermal conductance; -
Tis anodes-element vector of the temperature of the thermal nodes; -
Tambis anodes-element vector of the ambient temperature; -
Pis aunits-element vector of the power dissipation of the processing elements; -
Mpis anodes × unitsmatrix that distributes the power dissipation of the processing elements onto the thermal nodes; -
Qis aspots-element vector of the temperature of interest; and -
Mqis aspots × nodesmatrix that aggregates the temperature of the thermal nodes into the temperature of interest.
Solution
The original system is transformed into the following:
dS
-- = A S + B P
dt
Q = C S + Mq Tamb
where
S = D^(-1) (T - Tamb),
A = -D Gth D,
B = D Mp,
C = Mq D, and
D = Cth^(-1/2).
The eigendecomposition of A, which is real and symmetric, is
A = U diag(Λ) U^T.
For a short time interval [0, Δt], the solution is obtained using the
following equation:
S(t) = E S(0) + F P(0)
where
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.
The solution makes use of the assumption that Δt, referred to as the time
step, is short enough so that the power dissipation does not change much
within [0, Δt]. In order to compute the temperature profile corresponding
for the whole time span of interest, the time span is split into small
subintervals, and the above equation is successively applied to each of
them.
Dependencies
~13MB
~114K SLoC