Hi, I saw a great talk by Chris Rackauckas from JuliaCon 2018 on how to solve PDEs using Julia and decided to give it a whirl.

The problem I’m trying to solve is the diffusion equation:

```
Find u(t,x) such that
u_t = alpha * u_xx
and
u(t,0) = u(t,a) = 0, t > 0
u(0,x) = sin(x/a), x in [0,a]
```

where `u_t`

is the partial derivative of `u`

with respect to `t`

and `u_xx`

is the second partial derivative of `u`

with respect to `x`

, and `alpha`

is the diffusion coefficient.

My idea was to use the `D = CenteredDifference`

and `Q = Dirichlet0BC`

operators provided by DiffEqTools to discretize the spatial dimension of the problem, such that

```
u_xx = D*Q*u
```

and then use DifferentialEquations to solve the resulting system of ODEs

```
u_t = alpha*D*Q*u
```

Unfortunately, no matter how I choose my diffusion coefficient, the system never moves away from the initial temperature distribution. Is this some fundamental misunderstanding on my part (i.e. I didn’t grok the math properly)?

My code looks like this (packed into a module so I can use Revise.jl in the REPL)

```
module Playground
using DiffEqOperators, DifferentialEquations
function f!(du, u, p, t)
Q, D, alpha = p
du = alpha*D*Q*u
end
function run_heat(alpha)
# 1D heat diffusion on interval [0,a]
# find u(x,t) such that
# u_t = alpha * u_xx
# where
# u(x,0) = I(x)
# u(0,t) = u(a,t) = 0
# number of points
length = 10
a = 1
x = range(0, a, length=length)
# initial temperature distribution
u0 = sin.(pi*x/a)
# Dirichlet boundary condition
# u(0,t) = u(a,t) = 0
Q = Dirichlet0BC(eltype(u0))
# second spatial derivative operator
D = CenteredDifference{1}(2, 3, Float64(x.step), x.len)
p = [Q,D,alpha]
tspan = (0.0,10.0)
prob = ODEProblem(f!, u0, tspan, p)
solve(prob)
end
end
```

Thanks for your help