The governing equation of transient heat transfer analysis is described as follows: $$C \frac{dT}{dt}+K T = Q$$
When using backward difference scheme for the discretization of the time we get the following equation: $$(\frac{C}{\Delta t}+K)T_n = Q_n+\frac{C}{\Delta t}T_{n-1}$$ Where $C$ is the heat capacity matrix, $K$ is the conductivity matrix, $T_n$ is the temperature for time step $n$, $T_{n-1}$ is the temperature for time step $n-1$ and $Q$ is a heat flux vector.
The term becomes nonlinear as soon as I implement the radiation boundary condition.
My question now is, which methods can be used to solve the above nonlinear problem? Any further reading would be helpful.


1 Answer 1


The Newton-Raphson method can be used to solve non-linear systems of equations.

The first step is to write your system as a root finding problem:

$$ f(T_n) = \left( \frac{C}{\Delta t} + K \right) T_n - Q_n - \frac{C}{\Delta t} T_{n-1} = 0 $$

Taylor expand this equation about an initial guess $T^0_n$, keeping only the linear term: $$ f(T_n) \approx f(T^0_n) + \left.\frac{\partial f(T_n)}{\partial T_n}\right|_{T^0_n} \Delta T^0_n $$ where $\left.\frac{\partial f(T_n)}{\partial T_n}\right|_{T^0_n}$ is the Jacobian of $f(T_n)$ evaluated at $T^0_n$. Replace $f(T_n)$ with 0, since this is the end goal of the root finding equation we're trying to solve. Re-arranging,

$$ \left.\frac{\partial f(T_n)}{\partial T_n}\right|_{T^0_n} \Delta T^0_n = -f(T^0_n) $$ This gives us a linear equation we can use to solve for $\Delta T^0_n$, which tells us how much we need to adjust $T^0_n$ by in order to get a (hopefully) better estimate of $T_n$: $$ T^1_n = T^0_n + \Delta T^0_n $$ If $T^1_n$ is not sufficiently close to the solution (i.e. $\|f(T^1_n)\| > \tau$, for some tolerance $\tau$), then you can just repeat the procedure with the new guess $T^1_n$.

Note that there are some potential caveats with the convergence of the base Newton-Raphson method, so you may need to augment it with something like a line search in order to achieve convergence.

Also, there are many libraries which implement some variation of this procedure, as well as other methods for solving non-linear systems, so I would look to use one of these first before trying to implement your own.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.