# Context

I am no simulation nor numerical expert and am absolutely not familiar with differential Equations.

So I am trying to simulate heat diffusion in a 2D non uniform material on a Cartesian rectilinear mesh (varying Δy and Δx) with the given properties for each cell at *l*, *m* coordinates

Ω : surface

ρ : volumic mass

cp : thermal capcity

λ : thermal conductivity

I intend to run it on really really large domains, with distributed memory multiple CPUs and possibly multiple GPUs.

Thus i choose ParallelStencil.jl coupled with ImplicitGlobalGrid.jl .

The Right hand side (laplacian?) of the equation is the following

# Explicit

I managed to implement easily a fairly efficient explicit version using with the following kernel

@parallel_indices (ix,iy) function step_explicit_2D_indices!(

H :: AbstractArray, # Temperature at time n

H2 :: AbstractArray, # Temperature at time n+1

λ ,

Δx ,

Δy ,

_ρcpΩ ,

Δt ,

_avΔx,

_avΔy)`if (ix>1 && ix<size(H,1) && iy>1 && iy<size(H,2)) H2[ix,iy] = H[ix,iy] + # Diffusivity (Δt * _ρcpΩ[ix,iy]) * #Right Hand Side/laplacian # X flux ((@avHarm_R(λ) * @d_R(H, ix, iy) * _avΔx[ix]) + (@avHarm_L(λ) * @d_L(H, ix, iy) * _avΔx[ix-1])* Δy[iy-1] + # Y Flux ((@avHarm_T(λ) * @d_T(H, ix, iy) * _avΔy[iy]) + (@avHarm_B(λ) * @d_B(H, ix, iy) * _avΔy[iy-1])* Δx[ix-1])); end return nothing`

end

with

```
@avHarm<S> Harmonic average of λ on a given Side
@d_<S> Heat difference on a given side
_avΔx Arithmetic average of Deltas x/y
```

# Implicit

However I’d want it to be unconditionally stable given the time step *Δt*, so i have to solve it Implicitly.

## Direct Method

I think (i might be wrong) that direct linear solver (Tn+1 = A \ Tn ) will not work well at all for large domains, I tried this approach, constructing a sparse five banded laplacian matrix (CSC format) ( nx* ny by nx*ny), the backslash Operator solving the linear system, utilizes a single thread.

**Is it possible to solve linear systems in parallel?**

## Itterative

I did find an example of Implicit iterative solver on the following Github repo of ParallelStencil workshop at Juliacon 2021

But I don’t have the knowledge to adapt it to my situation and fail to gasp the concept of iterative solving.

**How could i iteratively solve the heat equation with ParallelStencil given my model?**

There is also DifferentialEquations.jl but i fail to understand how to discretize my equation with it and it appears complicated to me. I am not sure if it can do distributed computing.

**Could DifferentialEquation.jl be used in my case?**

Thanks for any help