annotate +scheme/Burgers1d @ 1034:2676ad79f994 feature/burgers1d

Rename Burgers1D to Burgers1d
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Thu, 17 Jan 2019 11:03:22 +0100
parents +scheme/Burgers1D.m@cda996e64925
children
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
832
5573913a0949 Merged with default, and updated +scheme/Burgers1D accordingly
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 831
diff changeset
3 grid % Physical grid
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
4 order % Order accuracy for the approximation
832
5573913a0949 Merged with default, and updated +scheme/Burgers1D accordingly
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 831
diff changeset
5
815
fae41958af4f Add support for artificial viscosity to the 1d burgers scheme.
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents: 814
diff changeset
6 params
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
7
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
8 D % Non-stabalized scheme operator
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
9 H % Discrete norm
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
10 Hi % Norm inverse
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
11 e_l
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
12 e_r
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
13 d_l
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
14 d_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
1034
2676ad79f994 Rename Burgers1D to Burgers1d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 853
diff changeset
18 function obj = Burgers1d(grid, pde_form, operator_type, order, dissipation, params)
832
5573913a0949 Merged with default, and updated +scheme/Burgers1D accordingly
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 831
diff changeset
19 assert(grid.D == 1);
5573913a0949 Merged with default, and updated +scheme/Burgers1D accordingly
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 831
diff changeset
20 assert(grid.size() == length(params.eps));
5573913a0949 Merged with default, and updated +scheme/Burgers1D accordingly
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 831
diff changeset
21 m = grid.size();
5573913a0949 Merged with default, and updated +scheme/Burgers1D accordingly
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 831
diff changeset
22 lim = grid.lim{1}; % Ugly, and only applicable for cartesian grids.
815
fae41958af4f Add support for artificial viscosity to the 1d burgers scheme.
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents: 814
diff changeset
23 switch operator_type
fae41958af4f Add support for artificial viscosity to the 1d burgers scheme.
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents: 814
diff changeset
24 case 'narrow'
833
9f4c45a2d271 Support narrow stencil operators of order 6
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 832
diff changeset
25 ops = sbp.D4Variable(m, lim, order);
815
fae41958af4f Add support for artificial viscosity to the 1d burgers scheme.
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents: 814
diff changeset
26 D1 = ops.D1;
834
f1f0bf087e1c Add support for artificial viscosity
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 833
diff changeset
27 D2 = ops.D2;
844
9e4e0576ca0f Only compute dissipation operator when requested
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 834
diff changeset
28 if (strcmp(dissipation,'on'))
9e4e0576ca0f Only compute dissipation operator when requested
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 834
diff changeset
29 DissipationOp = -1*sbp.dissipationOperator(m, order, ops.HI);
9e4e0576ca0f Only compute dissipation operator when requested
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 834
diff changeset
30 end
834
f1f0bf087e1c Add support for artificial viscosity
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 833
diff changeset
31 d_l = ops.d1_l';
f1f0bf087e1c Add support for artificial viscosity
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 833
diff changeset
32 d_r = ops.d1_r';
852
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
33 case 'upwind-'
834
f1f0bf087e1c Add support for artificial viscosity
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 833
diff changeset
34 ops = sbp.D1Upwind(m, lim, order);
f1f0bf087e1c Add support for artificial viscosity
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 833
diff changeset
35 D1 = (ops.Dp + ops.Dm)/2;
845
1e057b0f2fed Add RK6 with residual viscosity update and reduce computational effort of spatial scheme
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 844
diff changeset
36 D2 = @(eps) ops.Dp*spdiag(eps)*ops.Dm;
852
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
37 if (strcmp(dissipation,'on'))
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
38 DissipationOp = (ops.Dp-ops.Dm)/2;
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
39 end
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
40 d_l = ops.e_l'*ops.Dm;
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
41 d_r = ops.e_r'*ops.Dm;
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
42 case 'upwind+'
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
43 ops = sbp.D1Upwind(m, lim, order);
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
44 D1 = (ops.Dp + ops.Dm)/2;
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
45 D2 = @(eps) ops.Dm*spdiag(eps)*ops.Dp;
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
46 if (strcmp(dissipation,'on'))
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
47 DissipationOp = (ops.Dp-ops.Dm)/2;
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
48 end
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
49 d_l = ops.e_l'*ops.Dp;
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
50 d_r = ops.e_r'*ops.Dp;
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
51 case 'upwind+-'
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
52 ops = sbp.D1Upwind(m, lim, order);
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
53 D1 = (ops.Dp + ops.Dm)/2;
fbb8be3177c8 Fix bug in SAT terms for upwind operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 851
diff changeset
54 D2 = @(eps) (ops.Dp*spdiag(eps)*ops.Dm + ops.Dm*spdiag(eps)*ops.Dp)/2;
844
9e4e0576ca0f Only compute dissipation operator when requested
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 834
diff changeset
55 if (strcmp(dissipation,'on'))
9e4e0576ca0f Only compute dissipation operator when requested
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 834
diff changeset
56 DissipationOp = (ops.Dp-ops.Dm)/2;
9e4e0576ca0f Only compute dissipation operator when requested
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 834
diff changeset
57 end
851
ab2e5a24ddde - Fix bug when constructing closure for narrow stencils
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 848
diff changeset
58 d_l = ops.e_l'*D1;
ab2e5a24ddde - Fix bug when constructing closure for narrow stencils
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 848
diff changeset
59 d_r = ops.e_r'*D1;
815
fae41958af4f Add support for artificial viscosity to the 1d burgers scheme.
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents: 814
diff changeset
60 otherwise
fae41958af4f Add support for artificial viscosity to the 1d burgers scheme.
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents: 814
diff changeset
61 error('Other operator types not yet supported', operator_type);
fae41958af4f Add support for artificial viscosity to the 1d burgers scheme.
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents: 814
diff changeset
62 end
fae41958af4f Add support for artificial viscosity to the 1d burgers scheme.
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents: 814
diff changeset
63
fae41958af4f Add support for artificial viscosity to the 1d burgers scheme.
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents: 814
diff changeset
64 switch pde_form
fae41958af4f Add support for artificial viscosity to the 1d burgers scheme.
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents: 814
diff changeset
65 case 'skew-symmetric'
834
f1f0bf087e1c Add support for artificial viscosity
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 833
diff changeset
66 if (strcmp(dissipation,'on'))
f1f0bf087e1c Add support for artificial viscosity
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 833
diff changeset
67 D = @(v, viscosity) - 1/3*D1*v.^2 + (-1/3*v.*D1 + D2(params.eps + viscosity) + max(abs(v))*DissipationOp)*v;
f1f0bf087e1c Add support for artificial viscosity
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 833
diff changeset
68 else
f1f0bf087e1c Add support for artificial viscosity
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 833
diff changeset
69 D = @(v, viscosity) - 1/3*D1*v.^2 + (-1/3*v.*D1 + D2(params.eps + viscosity))*v;
f1f0bf087e1c Add support for artificial viscosity
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 833
diff changeset
70 end
815
fae41958af4f Add support for artificial viscosity to the 1d burgers scheme.
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents: 814
diff changeset
71 case 'conservative'
834
f1f0bf087e1c Add support for artificial viscosity
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 833
diff changeset
72 if (strcmp(dissipation,'on'))
f1f0bf087e1c Add support for artificial viscosity
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 833
diff changeset
73 D = @(v, viscosity) -1/2*D1*v.^2 + (D2(params.eps + viscosity) + max(abs(v))*DissipationOp)*v;
f1f0bf087e1c Add support for artificial viscosity
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 833
diff changeset
74 else
f1f0bf087e1c Add support for artificial viscosity
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 833
diff changeset
75 D = @(v, viscosity) -1/2*D1*v.^2 + D2(params.eps + viscosity)*v;
f1f0bf087e1c Add support for artificial viscosity
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 833
diff changeset
76 end
853
cda996e64925 Minor renaming and clean up
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 852
diff changeset
77 otherwise
cda996e64925 Minor renaming and clean up
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 852
diff changeset
78 error('Not supported', pde_form);
815
fae41958af4f Add support for artificial viscosity to the 1d burgers scheme.
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents: 814
diff changeset
79 end
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
80
832
5573913a0949 Merged with default, and updated +scheme/Burgers1D accordingly
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 831
diff changeset
81 obj.grid = grid;
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
82 obj.order = order;
815
fae41958af4f Add support for artificial viscosity to the 1d burgers scheme.
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents: 814
diff changeset
83 obj.params = params;
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
84
815
fae41958af4f Add support for artificial viscosity to the 1d burgers scheme.
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents: 814
diff changeset
85 obj.D = D;
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
86 obj.H = ops.H;
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
87 obj.Hi = ops.HI;
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
88 obj.e_l = ops.e_l;
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
89 obj.e_r = ops.e_r;
834
f1f0bf087e1c Add support for artificial viscosity
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 833
diff changeset
90 obj.d_l = d_l;
f1f0bf087e1c Add support for artificial viscosity
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 833
diff changeset
91 obj.d_r = d_r;
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
92 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
93
853
cda996e64925 Minor renaming and clean up
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 852
diff changeset
94 % 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
95 % 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
96 % 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
97 % type is a string specifying the type of boundary condition if there are several.
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
98 % data is a function returning the data that should be applied at the boundary.
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
99 function [closure, penalty] = boundary_condition(obj,boundary,type,data)
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
100 default_arg('type','robin');
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
101 default_arg('data',0);
853
cda996e64925 Minor renaming and clean up
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 852
diff changeset
102 [e, d, i_b, s] = obj.get_boundary_ops(boundary);
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
103 switch type
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
104 % Stable robin-like boundary conditions ((u+-abs(u))*u/3 - eps*u_x)) with +- at left/right boundary
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
105 case {'R','robin'}
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
106 p = s*obj.Hi*e;
851
ab2e5a24ddde - Fix bug when constructing closure for narrow stencils
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 848
diff changeset
107 closure = @(v, viscosity) p*(((v(i_b)-s*abs(v(i_b)))/3)*(v(i_b)) - ((obj.params.eps(i_b) + viscosity(i_b))*d*v));
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
108 switch class(data)
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
109 case 'double'
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
110 penalty = s*p*data;
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
111 case 'function_handle'
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
112 penalty = @(t) s*p*data(t);
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
113 otherwise
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
114 error('Wierd data argument!')
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
115 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
116 otherwise
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
117 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
118 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
119 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
120
853
cda996e64925 Minor renaming and clean up
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 852
diff changeset
121 % Ruturns the boundary ops, boundary index and sign for the boundary specified by the string boundary.
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
122 % The right boundary is considered the positive boundary
853
cda996e64925 Minor renaming and clean up
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 852
diff changeset
123 function [e, d, i_b, s] = get_boundary_ops(obj,boundary)
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
124 switch boundary
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
125 case 'l'
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
126 e = obj.e_l;
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
127 d = obj.d_l;
848
c8ea9bbdc62c Increase efficiency of computing closures
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 845
diff changeset
128 i_b = 1;
853
cda996e64925 Minor renaming and clean up
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 852
diff changeset
129 s = -1;
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
130 case 'r'
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
131 e = obj.e_r;
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
132 d = obj.d_r;
848
c8ea9bbdc62c Increase efficiency of computing closures
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 845
diff changeset
133 i_b = length(e);
853
cda996e64925 Minor renaming and clean up
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 852
diff changeset
134 s = 1;
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
135 otherwise
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
136 error('No such boundary: boundary = %s',boundary);
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
137 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
138 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
139
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
140 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
141 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
142 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
143
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
144 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
145 N = obj.grid.m;
814
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
146 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
147 end
3a5e635a93fd Add scheme for 1D Burgers equation
Vidar Stiernstrom <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
148 end