# Solving Heat equation using Julia

**URL:** https://discourse.julialang.org/t/solving-heat-equation-using-julia/81720
**Category:** New to Julia
**Tags:** question, pde
**Created:** [May 26, 2022, 1:59pm UTC](https://discourse.julialang.org/t/solving-heat-equation-using-julia/81720 "2022-05-26T13:59:55Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![Raed\_Maraabeh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/raed_maraabeh/32/36623_2.png) [@Raed\_Maraabeh](https://discourse.julialang.org/u/Raed_Maraabeh)
#### Post date: [May 26, 2022, 1:59pm UTC](https://discourse.julialang.org/t/solving-heat-equation-using-julia/81720/1 "2022-05-26T13:59:55Z")

</div>

Hi,  
I am new user of Julia and I want to use it for solving PDEs and ODEs numerically. I am trying to run examples that are available in Julia website or GitHub but I get error.  
For instance I want to run this example:

```julia
using OrdinaryDiffEq, ModelingToolkit, DiffEqOperators
# Method of Manufactured Solutions: exact solution
u_exact = (x,t) -> exp.(-t) * cos.(x)

# Parameters, variables, and derivatives
@parameters t x
@variables u(..)
Dt = Differential(t)
Dxx = Differential(x)^2

# 1D PDE and boundary conditions
eq = Dt(u(t,x)) ~ Dxx(u(t,x))
bcs = [u(0,x) ~ cos(x),
        u(t,0) ~ exp(-t),
        u(t,1) ~ exp(-t) * cos(1)]

# Space and time domains
domains = [t ∈ IntervalDomain(0.0,1.0),
           x ∈ IntervalDomain(0.0,1.0)]

# PDE system
pdesys = PDESystem(eq,bcs,domains,[t,x],[u(t,x)])

# Method of lines discretization
dx = 0.1
order = 2
discretization = MOLFiniteDifference([x=>dx],t)

# Convert the PDE problem into an ODE problem
prob = discretize(pdesys,discretization)

# Solve ODE problem
using OrdinaryDiffEq
sol = solve(prob,Tsit5(),saveat=0.2)

# Plot results and compare with exact solution
x = (0:dx:1)[2:end-1]
t = sol.t

using Plots
plt = plot()

for i in 1:length(t)
    plot!(x,sol.u[i],label="Numerical, t=$(t[i])")
    scatter!(x, u_exact(x, t[i]),label="Exact, t=$(t[i])")
end
display(plt)
savefig("plot.png")

```

But I get this error:  
UndefKeywordError: keyword argument name not assigned

Stacktrace:  
[1] PDESystem(eqs::Equation, bcs::Vector{Equation}, domain::Vector{Symbolics.VarDomainPairing}, ivs::Vector{Num}, dvs::Vector{Num}, ps::SciMLBase.NullParameters) (repeats 2 times)  
@ ModelingToolkit C:\Users\rm18124.julia\packages\ModelingToolkit\57XKa\src\systems\pde\pdesystem.jl:75  
[2] top-level scope  
@ In[32]:22  
[3] eval  
@ .\boot.jl:373 [inlined]  
[4] include\_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String)  
@ Base .\loading.jl:1196

I double checked the PDESystem and it looks fine, any help please?  
Thanks

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [May 26, 2022, 3:08pm UTC](https://discourse.julialang.org/t/solving-heat-equation-using-julia/81720/2 "2022-05-26T15:08:32Z")

</div>

> [@Raed\_Maraabeh](#):
>
> `pdesys = PDESystem(eq,bcs,domains,[t,x],[u(t,x)])`

```julia
@named pdesys = PDESystem(eq,bcs,domains,[t,x],[u(t,x)])

```

Any system needs to have a unique name. We can probably improve the error message there.

---

<div class="post-metadata">

### Author: ![Raed\_Maraabeh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/raed_maraabeh/32/36623_2.png) [@Raed\_Maraabeh](https://discourse.julialang.org/u/Raed_Maraabeh)
#### Post date: [May 28, 2022, 1:55pm UTC](https://discourse.julialang.org/t/solving-heat-equation-using-julia/81720/4 "2022-05-28T13:55:31Z")

</div>

Thank you, it worked well.

---

<div class="post-metadata">

### Author: ![Raed\_Maraabeh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/raed_maraabeh/32/36623_2.png) [@Raed\_Maraabeh](https://discourse.julialang.org/u/Raed_Maraabeh)
#### Post date: [May 28, 2022, 1:57pm UTC](https://discourse.julialang.org/t/solving-heat-equation-using-julia/81720/5 "2022-05-28T13:57:55Z")

</div>

Here is the right code, in the above code is missing MethodOfLines package

```julia
using OrdinaryDiffEq, ModelingToolkit, DiffEqOperators, MethodOfLines
# Method of Manufactured Solutions: exact solution
u_exact = (x,t) -> exp.(-t) * cos.(x)

# Parameters, variables, and derivatives
@parameters t x
@variables u(..)
Dt = Differential(t)
Dxx = Differential(x)^2

# 1D PDE and boundary conditions
eq = Dt(u(t,x)) ~ Dxx(u(t,x))
bcs = [u(0,x) ~ cos(x),
        u(t,0) ~ exp(-t),
        u(t,1) ~ exp(-t) * cos(1)]

# Space and time domains
domains = [t ∈ IntervalDomain(0.0,1.0),
           x ∈ IntervalDomain(0.0,1.0)]

# PDE system
@named pdesys = PDESystem(eq,bcs,domains,[t,x],[u(t,x)])

# Method of lines discretization
dx = 0.1
order = 2
discretization = MOLFiniteDifference([x=>dx],t)

# Convert the PDE problem into an ODE problem
prob = discretize(pdesys,discretization)

# Solve ODE problem
using OrdinaryDiffEq
sol = solve(prob ,Tsit5(),saveat=0.2)

# Plot results and compare with exact solution
x = (0:dx:1)[2:end-1]
t = sol.t

using Plots
plt = plot()

for i in 1:length(t)
    plot!(x,sol.u[i],label="Numerical, t=$(t[i])")
    scatter!(x, u_exact(x, t[i]),label="Exact, t=$(t[i])")
end
display(plt)
savefig("plot.png")

```

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [May 28, 2022, 2:05pm UTC](https://discourse.julialang.org/t/solving-heat-equation-using-julia/81720/6 "2022-05-28T14:05:07Z")

</div>

@xtalax is this fixed in the docs?

---

<div class="post-metadata">

### Author: ![xtalax](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xtalax/32/35293_2.png) [@xtalax](https://discourse.julialang.org/u/xtalax)
#### Post date: [May 28, 2022, 2:06pm UTC](https://discourse.julialang.org/t/solving-heat-equation-using-julia/81720/7 "2022-05-28T14:06:44Z")

</div>

Yes, caught this issue last week. Just waiting on merge, still getting random segfault in doctest though.
