annotate +sbp/+implementations/d2_2.m @ 1037:2d7ba44340d0 feature/burgers1d

Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Fri, 18 Jan 2019 09:02:02 +0100
parents 8b8672134be8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
1 function [H, HI, D1, D2, e_1, e_m, M, Q, S_1, S_m] = d2_2(m,h)
382
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
2
266
bfa130b7abf6 Added error message for too few grid points to all implementation files.
Martin Almquist <martin.almquist@it.uu.se>
parents: 261
diff changeset
3 BP = 1;
bfa130b7abf6 Added error message for too few grid points to all implementation files.
Martin Almquist <martin.almquist@it.uu.se>
parents: 261
diff changeset
4 if(m<2*BP)
bfa130b7abf6 Added error message for too few grid points to all implementation files.
Martin Almquist <martin.almquist@it.uu.se>
parents: 261
diff changeset
5 error(['Operator requires at least ' num2str(2*BP) ' grid points']);
bfa130b7abf6 Added error message for too few grid points to all implementation files.
Martin Almquist <martin.almquist@it.uu.se>
parents: 261
diff changeset
6 end
bfa130b7abf6 Added error message for too few grid points to all implementation files.
Martin Almquist <martin.almquist@it.uu.se>
parents: 261
diff changeset
7
267
f7ac3cd6eeaa Sparsified all implementation files, removed all matlab warnings, fixed small bugs on minimum grid points.
Martin Almquist <martin.almquist@it.uu.se>
parents: 266
diff changeset
8 e_1=sparse(m,1);e_1(1)=1;
f7ac3cd6eeaa Sparsified all implementation files, removed all matlab warnings, fixed small bugs on minimum grid points.
Martin Almquist <martin.almquist@it.uu.se>
parents: 266
diff changeset
9 e_m=sparse(m,1);e_m(m)=1;
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
10
267
f7ac3cd6eeaa Sparsified all implementation files, removed all matlab warnings, fixed small bugs on minimum grid points.
Martin Almquist <martin.almquist@it.uu.se>
parents: 266
diff changeset
11 H=(speye(m,m));H(1,1)=0.5;H(m,m)=0.5;
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
12 H=h*H;
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
13 HI=inv(H);
382
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
14
267
f7ac3cd6eeaa Sparsified all implementation files, removed all matlab warnings, fixed small bugs on minimum grid points.
Martin Almquist <martin.almquist@it.uu.se>
parents: 266
diff changeset
15 diags = -1:1;
f7ac3cd6eeaa Sparsified all implementation files, removed all matlab warnings, fixed small bugs on minimum grid points.
Martin Almquist <martin.almquist@it.uu.se>
parents: 266
diff changeset
16 stencil = [-1/2 0 1/2];
f7ac3cd6eeaa Sparsified all implementation files, removed all matlab warnings, fixed small bugs on minimum grid points.
Martin Almquist <martin.almquist@it.uu.se>
parents: 266
diff changeset
17 D1 = stripeMatrix(stencil, diags, m);
382
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
18
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
19 D1(1,1) = -1;
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
20 D1(1,2) = 1;
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
21
382
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
22 D1(m,m-1) = -1;
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
23 D1(m,m) = 1;
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
24
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
25 D1 = D1/h;
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
26
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
27 Q = H*D1 + 1/2*(e_1*e_1') - 1/2*(e_m*e_m');
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
28
267
f7ac3cd6eeaa Sparsified all implementation files, removed all matlab warnings, fixed small bugs on minimum grid points.
Martin Almquist <martin.almquist@it.uu.se>
parents: 266
diff changeset
29 diags = -1:1;
f7ac3cd6eeaa Sparsified all implementation files, removed all matlab warnings, fixed small bugs on minimum grid points.
Martin Almquist <martin.almquist@it.uu.se>
parents: 266
diff changeset
30 stencil = [1 -2 1];
f7ac3cd6eeaa Sparsified all implementation files, removed all matlab warnings, fixed small bugs on minimum grid points.
Martin Almquist <martin.almquist@it.uu.se>
parents: 266
diff changeset
31 D2 = stripeMatrix(stencil, diags, m);
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
32
382
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
33 D2(1,1) = 1;
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
34 D2(1,2) = -2;
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
35 D2(1,3) = 1;
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
36 D2(m,m-2) = 1;
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
37 D2(m,m-1) = -2;
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
38 D2(m,m) = 1;
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
39 D2 = D2/h^2;
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
40
382
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
41 S_U = [-3/2, 2, -1/2]/h;
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
42 S_1 = sparse(1,m);
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
43 S_1(1:3) = S_U;
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
44 S_m = sparse(1,m);
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
45 S_m(m-2:m) = fliplr(-S_U);
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
46
382
8b8672134be8 Edit for clarity.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
47 M = -H*D2-e_1*S_1+e_m*S_m;
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
48 S_1 = S_1';
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
49 S_m = S_m';
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
50 end