## temperature

The package provides a temperature simulator

### 27 releases

 0.10.2 Jul 17, 2016 Jun 17, 2016 Feb 5, 2016 Oct 19, 2015 Mar 6, 2015

#4 in Simulation

Apache-2.0/MIT

24KB
412 lines

# Temperature

The package provides a temperature simulator.

## 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

• `Cth` is a `nodes × nodes` diagonal matrix of the thermal capacitance;

• `Gth` is a `nodes × nodes` symmetric, positive-definite matrix of the thermal conductance;

• `T` is a `nodes`-element vector of the temperature of the thermal nodes;

• `Tamb` is a `nodes`-element vector of the ambient temperature;

• `P` is a `units`-element vector of the power dissipation of the processing elements;

• `Mp` is a `nodes × units` matrix that distributes the power dissipation of the processing elements onto the thermal nodes;

• `Q` is a `spots`-element vector of the temperature of interest; and

• `Mq` is a `spots × nodes` matrix 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.

~86MB
~2M SLoC