with $\vec{Q}^{\text{ext}}$ the consistent heat generated.
\section{Using the Heat Transfer Model}
A material file name has to be provided during initialization.
Currently, the \code{HeatTransferModel} object uses dynamic analysis
with an explicit time integration scheme. It can simply be created
like this
\begin{cpp}
HeatTransferModel model(mesh, spatial_dimension);
\end{cpp}
while an existing mesh has been used (see \ref{sect:common:mesh}).
Then the model object can be initialized with:
\begin{cpp}
model.initFull()
\end{cpp}
This function will load the material
properties, and allocate / initialize the nodes and element \code{Array}s
More precisely, the heat transfer model contains 4 \code{Arrays}:
\begin{description}
\item[temperature] contains the nodal temperature $T$ (zero by default after the
initialization).
\item[temperature\_rate] contains the variations of temperature $\dot{T}$
(zero by default after the
initialization).
\item[blocked\_dofs] contains a Boolean value for each degree of
freedom specifying whether the degree is blocked or not. A Dirichlet
boundary condition ($T_d$) can be prescribed by setting the
\textbf{blocked\_dofs} value of a degree of freedom to \code{true}.
The \textbf{temperature} and the \textbf{temperature\_rate} are
computed for all degrees of freedom where the \textbf{blocked\_dofs}
value is set to \code{false}. For the remaining degrees of freedom,
the imposed values (zero by default after initialization) are kept.
\item[residual] contains the difference between external and internal heat generations.
The \textbf{residual} contains the supported heat reactions ($\vec{R} =\vec{Q^{ext}} -\mat{K} \cdot\vec{T}$) on
the nodes that the temperature imposed.
\end{description}
Only a single material can be specified on the domain.
A material text file (\eg material.dat) provides the material properties as follows:
\begin{cpp}
heat %\emph{name\_material}% [
capacity = %\emph{XXX}%
density = %\emph{XXX}%
conductivity = [%\emph{XXX}% ... %\emph{XXX}%]
]
\end{cpp}
where the \code{capacity} and \code{density} are scalars, and the \code{conductivity} is specified as a $3\times3$ tensor.
\subsection{Explicit Dynamic}
The explicit time integration scheme in \akantu uses a lumped capacity
matrix $\mat{C}$ (reducing the computational cost, see Chapter \ref{sect:smm}).
This matrix is assembled by
distributing the capacity of each element onto its nodes. Therefore, the resulting $\mat{C}$ is a diagonal matrix stored in the \code{capacity}\code{Array} of the model.
\begin{cpp}
model.assembleCapacityLumped();
\end{cpp}
\index{HeatTransferModel!assembleCapacityLumped}
\note{Currently, only the explicit time integration with lumped capacity matrix
is implemented within \akantu.}
The explicit integration scheme is \index{Forward Euler}\emph{Forward Euler}
\cite{curnier92a}.
\begin{itemize}
\item Predictor: $\vec{T}_{n+1} =\vec{T}_{n} +\Delta t \dot{\vec{T}}_{n}$