# Finite element method how to implement neumann boundary condition with implicit method

I have implemented a finite element method to solve the 1D heat conduction equation:

$$\frac{\partial T(x,t)}{\partial t} = k\frac{\partial^2T(x,t)}{\partial x^2}$$

This is done using an implicit method by solving the set of equations:

$$-sT^{n+1}_{i+1} -(1+2s)T^{n+1}_{i} -sT^{n+1}_{i-1} = T^n_i$$

with $n$ the steps in time and $i$ the steps in the $x$ direction.

This can be represented by the following matrix equation: $$Ax=b$$

with (with a simple system of 4 steps in length): $$A= \begin{bmatrix} 1 & 0& 0 & 0 \\ -s & (1+2s) & -s & 0 \\ 0 & -s & (1+2s) & -s \\ 0 & 0 & 0 & 1 \end{bmatrix}$$

$$x= \begin{bmatrix} T^{n+1}_1 \\ T^{n+1}_2 \\ T^{n+1}_3 \\ T^{n+1}_4 \end{bmatrix}$$ $$B= \begin{bmatrix} T^{n}_1 \\ T^{n}_2 \\ T^{n}_3 \\ T^{n}_4 \end{bmatrix}$$

If I want fixed temperature on the surface all I have to do is set $T^{n}_1 = T_{surf}$.

Now the question is what if I want to not have a fixed temperature but a heat flux into the surface:

$$\frac{\partial T(x=0,t)}{\partial x} = c1$$

Is it simply changing my vector $b$ by setting $T^{n}_1 = T^{n-1}_1+c1$ and not changing the matrix $A$?

Thanks for your help,

• I think your system matrix also needs to be changed as well - I would double check but I don't have my class notes with me now. – Sean Roberson Jun 15 '17 at 20:41
• Its what I thought initially, from what I gather it changes the first equation of the set to $(1+2s) T^{n+1}_1-2s T^{n+1}_2 = T^{n}_1-2s\Delta xc_1$. This would then change $A[1,1] = 1+2s$ and $A[0,1] = -s$ but If I do this python tells me I am trying to solve a singular matrix> – Anthony Lethuillier Jun 15 '17 at 21:13