@@ -6,10 +6,10 @@ f = (t,x) -> (-5).*exp.((-25).*((3/2)+6.*t.^2+x[:,1]+x[:,1].^2+x[:,2]+x[:,2].^2+
6
6
x[:,2 ]))).* ((- 20 )+ (- 100 ). * t.^ 2 + (- 49 ). * x[:,1 ]+ (- 50 ). * x[:,1 ]. ^ 2 + (- 49 ). * x[:,2 ]+ (- 50 ). *
7
7
x[:,2 ]. ^ 2 + 2. * t.* (47 + 50. * x[:,1 ]+ 50. * x[:,2 ])+ exp .(25. * (1 + (- 2 ). * t). ^ 2 ).* (22 +
8
8
100. * t.^ 2 + 49. * x[:,1 ]+ 50. * x[:,1 ]. ^ 2 + 49. * x[:,2 ]+ 50. * x[:,2 ]. ^ 2 + (- 2 ). * t.* (49 + 50. * x[:,1 ]+ 50. * x[:,2 ])))
9
- T = 2
9
+ tspan = ( 0.0 , 2.0 )
10
10
dx = 1 // 2 ^ (3 )
11
11
dt = 1 // 2 ^ (9 )
12
- mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,T ,:dirichlet )
12
+ mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,tspan ,:dirichlet )
13
13
"""
14
14
Example problem defined by the solution:
15
15
```math
@@ -24,22 +24,22 @@ N = 2 #Number of different dt to solve at, 2 for test speed
24
24
topdt = 6 # 1//2^(topdt-1) is the max dt. Small for test speed
25
25
dts = 1. // 2. ^ (topdt- 1 : - 1 : N)
26
26
dxs = 1 // 2 ^ (5 ) * ones (dts) # Run at 2^-7 for best plot
27
- probs = [HeatProblem (analytic_moving,Du,f,parabolic_squaremesh ([0 1 0 1 ],dxs[i],dts[i],1 ,:dirichlet )) for i in eachindex (dts)]
27
+ probs = [HeatProblem (analytic_moving,Du,f,parabolic_squaremesh ([0 1 0 1 ],dxs[i],dts[i],( 0.0 , 1.0 ) ,:dirichlet )) for i in eachindex (dts)]
28
28
cs_femheat_moving_dt = ConvergenceSetup (probs,dts)
29
29
dxs = 1 // 2 ^ (4 ) * ones (dts) # Run at 2^-7 for best plot
30
- probs = [HeatProblem (analytic_moving,Du,f,parabolic_squaremesh ([0 1 0 1 ],dxs[i],dts[i],1 ,:dirichlet )) for i in eachindex (dts)]
30
+ probs = [HeatProblem (analytic_moving,Du,f,parabolic_squaremesh ([0 1 0 1 ],dxs[i],dts[i],( 0.0 , 1.0 ) ,:dirichlet )) for i in eachindex (dts)]
31
31
cs_femheat_moving_faster_dt = ConvergenceSetup (probs,dts)
32
32
33
33
# Not good plots, but quick for unit tests
34
34
dxs = 1. // 2. ^ (2 : - 1 : 1 )
35
35
dts = 1 // 2 ^ (6 ) * ones (dxs) # Run at 2^-7 for best plot
36
- probs = [HeatProblem (analytic_moving,Du,f,parabolic_squaremesh ([0 1 0 1 ],dxs[i],dts[i],1 ,:dirichlet )) for i in eachindex (dts)]
36
+ probs = [HeatProblem (analytic_moving,Du,f,parabolic_squaremesh ([0 1 0 1 ],dxs[i],dts[i],( 0.0 , 1.0 ) ,:dirichlet )) for i in eachindex (dts)]
37
37
cs_femheat_moving_dx = ConvergenceSetup (probs,dxs)
38
38
39
- T = 1
39
+ tspan = ( 0.0 , 1.0 )
40
40
dx = 1 // 2 ^ (3 )
41
41
dt = 1 // 2 ^ (7 )
42
- mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,T ,:dirichlet )
42
+ mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,tspan ,:dirichlet )
43
43
"""
44
44
Example problem defined by the solution:
45
45
```math
@@ -53,10 +53,10 @@ prob_femheat_moving7 = HeatProblem(analytic_moving,Du,f,mesh)
53
53
analytic_diffuse (t,x) = exp .(- 10 ((x[:,1 ]- .5 ). ^ 2 + (x[:,2 ]- .5 ). ^ 2 )- t)
54
54
f = (t,x) -> exp .(- t- 5 * (1 - 2 x[:,1 ]+ 2 x[:,1 ]. ^ 2 - 2 x[:,2 ] + 2 x[:,2 ]. ^ 2 )).* (- 161 + 400 * (x[:,1 ] - x[:,1 ]. ^ 2 + x[:,2 ] - x[:,2 ]. ^ 2 ))
55
55
Du = (t,x) -> - 20 [analytic_diffuse (t,x).* (x[:,1 ]- .5 ) analytic_diffuse (t,x).* (x[:,2 ]- .5 )]
56
- T = 1
56
+ tspan = ( 0.0 , 1.0 )
57
57
dx = 1 // 2 ^ (3 )
58
58
dt = 1 // 2 ^ (7 )
59
- mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,T ,:dirichlet )
59
+ mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,tspan ,:dirichlet )
60
60
"""
61
61
Example problem defined by the solution:
62
62
@@ -70,21 +70,21 @@ prob_femheat_diffuse = HeatProblem(analytic_diffuse,Du,f,mesh)
70
70
71
71
72
72
f = (t,x) -> zeros (size (x,1 ))
73
- u0_func = (x) -> float ((abs .(x[:,1 ]- .5 ) .< 1e-6 ) & (abs .(x[:,2 ]- .5 ) .< 1e-6 )) # Only mass at middle of (0,1 )^2
74
- T = 1 // 2 ^ (5 )
73
+ u0_func = (x) -> float ((abs .(x[:,1 ]- .5 ) .< 1e-6 ) & (abs .(x[:,2 ]- .5 ) .< 1e-6 )) # Only mass at middle of (0.0,1.0 )^2
74
+ tspan = ( 0.0 , 1 / 2 ^ (5 ) )
75
75
dx = 1 // 2 ^ (3 )
76
76
dt = 1 // 2 ^ (9 )
77
- mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,T ,:dirichlet )
77
+ mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,tspan ,:dirichlet )
78
78
u0 = u0_func (mesh. node)
79
79
"""
80
80
Example problem which starts with a Dirac δ cenetered at (0.5,0.5) and solves with ``f=gD=0``.
81
81
This gives the Green's function solution.
82
82
"""
83
83
prob_femheat_pure = HeatProblem (u0,f,mesh)
84
84
85
- T = 1 // 2 ^ (5 )
85
+ tspan = ( 0.0 , 1 / 2 ^ (5 ) )
86
86
dt = 1 // 2 ^ (11 )
87
- mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,T ,:dirichlet )
87
+ mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,tspan ,:dirichlet )
88
88
u0 = u0_func (mesh. node)
89
89
"""
90
90
Example problem which starts with a Dirac δ cenetered at (0.5,0.5) and solves with ``f=gD=0``.
@@ -94,10 +94,10 @@ prob_femheat_pure11 = HeatProblem(u0,f,mesh)
94
94
95
95
f = (t,x,u) -> ones (size (x,1 )) - .5 u
96
96
u0_func = (x) -> zeros (size (x,1 ))
97
- T = 1
97
+ tspan = ( 0.0 , 1.0 )
98
98
dx = 1 // 2 ^ (3 )
99
99
dt = 1 // 2 ^ (7 )
100
- mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,T ,:neumann )
100
+ mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,tspan ,:neumann )
101
101
u0 = u0_func (mesh. node)
102
102
"""
103
103
Homogenous reaction-diffusion problem which starts with 0 and solves with ``f(u)=1-u/2``
@@ -107,10 +107,10 @@ prob_femheat_birthdeath = HeatProblem(u0,f,mesh)
107
107
108
108
f = (t,x,u) -> [ones (size (x,1 ))- .5 u[:,1 ] ones (size (x,1 ))- u[:,2 ]]
109
109
u0_func = (x) -> ones (size (x,1 ),2 ).* [.5 .5 ] # size (x,2), 2 meaning 2 variables
110
- T = 5
110
+ tspan = ( 0.0 , 5.0 )
111
111
dx = 1 / 2 ^ (1 )
112
112
dt = 1 / 2 ^ (7 )
113
- mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,T ,:neumann )
113
+ mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,tspan ,:neumann )
114
114
u0 = u0_func (mesh. node)
115
115
"""
116
116
Homogenous reaction-diffusion which starts at 1/2 and solves the system ``f(u)=1-u/2`` and ``f(v)=1-v``
@@ -119,10 +119,10 @@ prob_femheat_birthdeathsystem = HeatProblem(u0,f,mesh)
119
119
120
120
f = (t,x,u) -> [ones (size (x,1 ))- .5 u[:,1 ] .5 u[:,1 ]- u[:,2 ]]
121
121
u0_func = (x) -> ones (size (x,1 ),2 ).* [.5 .5 ] # size (x,2), 2 meaning 2 variables
122
- T = 5
122
+ tspan = ( 0.0 , 5.0 )
123
123
dx = 1 / 2 ^ (1 )
124
124
dt = 1 / 2 ^ (7 )
125
- mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,T ,:neumann )
125
+ mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,tspan ,:neumann )
126
126
u0 = u0_func (mesh. node)
127
127
"""
128
128
Homogenous reaction-diffusion which starts with 1/2 and solves the system ``f(u)=1-u/2`` and ``f(v)=.5u-v``
@@ -200,10 +200,10 @@ end
200
200
f = (t,x,u) -> ones (size (x,1 )) - .5 u
201
201
u0_func = (x) -> zeros (size (x,1 ))
202
202
σ = (t,x,u) -> 1 u.^ 2
203
- T = 5
203
+ tspan = ( 0.0 , 5.0 )
204
204
dx = 1 // 2 ^ (3 )
205
205
dt = 1 // 2 ^ (5 )
206
- mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,T ,:neumann )
206
+ mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,tspan ,:neumann )
207
207
u0 = u0_func (mesh. node)
208
208
"""
209
209
Homogenous stochastic reaction-diffusion problem which starts with 0
@@ -213,7 +213,7 @@ prob_femheat_stochasticbirthdeath = HeatProblem(u0,f,mesh,σ=σ)
213
213
214
214
dx = 1 // 2 ^ (1 )
215
215
dt = 1 // 2 ^ (1 )
216
- mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,T ,:neumann )
216
+ mesh = parabolic_squaremesh ([0 1 0 1 ],dx,dt,tspan ,:neumann )
217
217
u0 = u0_func (mesh. node)
218
218
prob_femheat_stochasticbirthdeath_fast = HeatProblem (u0,f,mesh,σ= σ)
219
219
0 commit comments