/** # Resolution of heat equation Explicit resolution of the heat equation $$\frac{\partial T}{\partial t}= \frac{\partial^2 T}{\partial x^2}$$ with a given total energy at initial time $\int_{-\infty}^{\infty}Tdx=1$. with finite volumes: $$\frac{T_i^{n+1}- T_i^{n}}{\Delta t } = -\frac{q_{i+1} - q_i}{\Delta}$$ ~~~gnuplot set size ratio .5 set samples 9 set label "T i-1" at 1.5,3.1 set label "T i" at 2.5,3.15 set label "T i+1" at 3.5,2.5 set xtics ("i-2" 0.5, "i-1" 1.5, "i" 2.5,"i+1" 3.5,"i+2" 4.5,"i+3" 5.5) set arrow from 2,1 to 2.5,1 set arrow from 3,1 to 3.5,1 set label "q i" at 2.1,1.25 set label "q i+1" at 3.1,1.25 set label "x i-1/2" at 1.5,0.25 set label "x i" at 2.4,0.25 set label "x i+1/2" at 3.,0.25 set label "x" at 0.5,2+sin(0) set label "x" at 1.5,2+sin(1) set label "x" at 2.5,2+sin(2) set label "x" at 3.5,2+sin(3) set label "x" at 4.5,2+sin(4) set label "x" at 5.5,2+sin(5) p[-1:7][0:4] 2+sin(x) w steps not,2+sin(x) w impulse not linec 1 ~~~ */ #include "grid/cartesian1D.h" #include "run.h" scalar T[]; double dt; int main() { L0 = 10.; X0 = -L0/2; N = 200; DT = (L0/N)*(L0/N)/2 ; #define EPS 0.1 run(); } /** initial temperature a "Dirac", in fact a thin rectangle so that $\int_{-\infty}^{\infty}Tdx=1$. */ event init (t = 0) { foreach() T[] = 1./EPS*(fabs(x)