# Solution method of nonlinear heat transfer analysis

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.

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.