annotate +scheme/Burgers1d.m @ 1197:433c89bf19e0 feature/rv

Merge with default
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Wed, 07 Aug 2019 15:23:42 +0200
parents f6c571d8f22f
children 68ee061639a1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1034
2676ad79f994 Rename Burgers1D to Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 853
diff changeset
1 classdef Burgers1d < scheme.Scheme
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
2 properties
1038
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
3 m % Number of points in each direction, possibly a vector
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
4 h % Grid spacing
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
5 grid % Grid
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
6 order % Order accuracy for the approximation
1038
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
7
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
8 H % Discrete norm
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
9 D
832
5573913a0949 Merged with default, and updated +scheme/Burgers1D accordingly
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 831
diff changeset
10
1038
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
11 D1
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
12 Hi
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
13 e_l
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
14 e_r
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
15 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
16
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
17 methods
1038
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
18 function obj = Burgers1d(g, order, pde_form, fluxSplitting, opSet)
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
19 default_arg('opSet',@sbp.D2Standard);
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
20 default_arg('fluxSplitting',@(v)max(abs(v)));
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
21 assertType(g, 'grid.Cartesian');
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
22
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
23 m = g.size();
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
24 xl = g.getBoundary('l');
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
25 xr = g.getBoundary('r');
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
26 xlim = {xl, xr};
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
27
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
28 ops = opSet(m, xlim, order);
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
29
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
30 if (isequal(opSet, @sbp.D1Upwind))
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
31 obj.D1 = (ops.Dp + ops.Dm)/2;
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
32 DissOp = (ops.Dm - ops.Dp)/2;
1148
0a5503a08a36 Implement the correct Dirichlet conditions for Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1038
diff changeset
33 switch pde_form
1196
f6c571d8f22f Add option to discretize Burgers1d using quasi-linear form
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1153
diff changeset
34 case 'quasi-linear'
f6c571d8f22f Add option to discretize Burgers1d using quasi-linear form
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1153
diff changeset
35 obj.D = @(v) -((spdiag(v)*obj.D1 + fluxSplitting(v)*DissOp)*v);
1148
0a5503a08a36 Implement the correct Dirichlet conditions for Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1038
diff changeset
36 case 'skew-symmetric'
1153
635386c073b9 Fix bug in Burgers schemes resulting in incorrect wave speed.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1148
diff changeset
37 obj.D = @(v) -(1/3*obj.D1*(v.*v) + (1/3*spdiag(v)*obj.D1 + fluxSplitting(v)*DissOp)*v);
1148
0a5503a08a36 Implement the correct Dirichlet conditions for Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1038
diff changeset
38 case 'conservative'
1153
635386c073b9 Fix bug in Burgers schemes resulting in incorrect wave speed.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1148
diff changeset
39 obj.D = @(v) -(1/2*obj.D1*(v.*v) + fluxSplitting(v)*DissOp*v);
1148
0a5503a08a36 Implement the correct Dirichlet conditions for Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1038
diff changeset
40 end
1038
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
41 else
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
42 obj.D1 = ops.D1;
1148
0a5503a08a36 Implement the correct Dirichlet conditions for Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1038
diff changeset
43 switch pde_form
1196
f6c571d8f22f Add option to discretize Burgers1d using quasi-linear form
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1153
diff changeset
44 case 'quasi-linear'
f6c571d8f22f Add option to discretize Burgers1d using quasi-linear form
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1153
diff changeset
45 obj.D = @(v) -(spdiag(v)*obj.D1*v);
1148
0a5503a08a36 Implement the correct Dirichlet conditions for Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1038
diff changeset
46 case 'skew-symmetric'
1153
635386c073b9 Fix bug in Burgers schemes resulting in incorrect wave speed.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1148
diff changeset
47 obj.D = @(v) -(1/3*obj.D1*(v.*v) + 1/3*spdiag(v)*obj.D1*v);
1148
0a5503a08a36 Implement the correct Dirichlet conditions for Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1038
diff changeset
48 case 'conservative'
1153
635386c073b9 Fix bug in Burgers schemes resulting in incorrect wave speed.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1148
diff changeset
49 obj.D = @(v) -1/2*obj.D1*(v.*v);
1148
0a5503a08a36 Implement the correct Dirichlet conditions for Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1038
diff changeset
50 end
815
fae41958af4f Add support for artificial viscosity to the 1d burgers scheme.
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents: 814
diff changeset
51 end
1038
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
52 obj.grid = g;
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
53
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
54 obj.H = ops.H;
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
55 obj.Hi = ops.HI;
1038
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
56
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
57 obj.e_l = ops.e_l;
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
58 obj.e_r = ops.e_r;
1038
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
59
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
60 obj.m = m;
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
61 obj.h = ops.h;
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
62 obj.order = order;
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
63 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
64
853
cda996e64925 Minor renaming and clean up
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 852
diff changeset
65 % Closure functions return the operators applied to the own doamin to close the boundary
cda996e64925 Minor renaming and clean up
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 852
diff changeset
66 % Penalty functions return the operators to force the solution. In the case of an interface it returns the operator applied to the other domain.
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
67 % boundary is a string specifying the boundary e.g. 'l','r' or 'e','w','n','s'.
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
68 % type is a string specifying the type of boundary condition if there are several.
1038
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
69 function [closure, penalty] = boundary_condition(obj, boundary, type)
1148
0a5503a08a36 Implement the correct Dirichlet conditions for Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1038
diff changeset
70 default_arg('type','dirichlet');
1197
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
71 s = obj.getBoundarySign(boundary);
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
72 e = obj.getBoundaryOperator('e', boundary);
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
73 index = obj.getBoundaryIndex(boundary);
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
74 switch type
1148
0a5503a08a36 Implement the correct Dirichlet conditions for Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1038
diff changeset
75 % Stable dirchlet-like boundary conditions (u+-abs(u))*u/3
0a5503a08a36 Implement the correct Dirichlet conditions for Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1038
diff changeset
76 % with +- at left/right boundaries
1038
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
77 case {'D', 'd', 'dirichlet', 'Dirichlet'}
1148
0a5503a08a36 Implement the correct Dirichlet conditions for Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1038
diff changeset
78 % tau = s*e;
0a5503a08a36 Implement the correct Dirichlet conditions for Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1038
diff changeset
79 % closure = @(v) obj.Hi*tau*(((v(index)-s*abs(v(index)))/3)*v(index));
0a5503a08a36 Implement the correct Dirichlet conditions for Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1038
diff changeset
80 % penalty = -obj.Hi*tau;
0a5503a08a36 Implement the correct Dirichlet conditions for Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1038
diff changeset
81
1197
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
82 penalty_parameter = 1/3;
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
83 tau = @(v) s*penalty_parameter*obj.Hi*e*(v(index)-s*abs(v(index)))/2;
1148
0a5503a08a36 Implement the correct Dirichlet conditions for Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1038
diff changeset
84 closure = @(v) tau(v)*v(index);
0a5503a08a36 Implement the correct Dirichlet conditions for Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1038
diff changeset
85 penalty = @(v) -tau(v);
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
86 otherwise
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
87 error('No such boundary condition: type = %s',type);
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
88 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
89 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
90
1197
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
91
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
92 % Returns the boundary sign. The right boundary is considered the positive boundary
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
93 % boundary -- string
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
94 function s = getBoundarySign(obj, boundary)
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
95 assertIsMember(boundary, {'l', 'r'})
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
96
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
97 switch boundary
1197
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
98 case {'r'}
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
99 s = 1;
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
100 case {'l'}
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
101 s = -1;
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
102 end
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
103 end
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
104
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
105 % Returns the boundary operator op for the boundary specified by the string boundary.
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
106 % op -- string
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
107 % boundary -- string
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
108 function o = getBoundaryOperator(obj, op, boundary)
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
109 assertIsMember(op, {'e'})
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
110 assertIsMember(boundary, {'l', 'r'})
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
111
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
112 o = obj.([op, '_', boundary]);
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
113 end
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
114
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
115 % Returns square boundary quadrature matrix, of dimension
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
116 % corresponding to the number of boundary points
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
117 %
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
118 % boundary -- string
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
119 % Note: for 1d diffOps, the boundary quadrature is the scalar 1.
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
120 function H_b = getBoundaryQuadrature(obj, boundary)
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
121 assertIsMember(boundary, {'l', 'r'})
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
122 H_b = 1;
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
123 end
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
124
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
125 % Returns the boundary index. The right boundary has the last index
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
126 % boundary -- string
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
127 function index = getBoundaryIndex(obj, boundary)
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
128 assertIsMember(boundary, {'l', 'r'})
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
129 switch boundary
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
130 case {'r'}
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
131 index = length(obj.e_r);
433c89bf19e0 Merge with default
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1196
diff changeset
132 case {'l'}
1038
8537fdd6830a Use opSets in Burgers1d.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1035
diff changeset
133 index = 1;
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
134 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
135 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
136
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
137 function [closure, penalty] = interface(obj,boundary,neighbour_scheme,neighbour_boundary)
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
138 error('An interface function does not exist yet');
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
139 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
140
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
141 function N = size(obj)
832
5573913a0949 Merged with default, and updated +scheme/Burgers1D accordingly
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 831
diff changeset
142 N = obj.grid.m;
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
143 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
144 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
145 end