annotate +sbp/+implementations/d2_variable_4.m @ 1299:73e52c74baac feature/boundary_optimized_grids

Closed branch feature/boundary_optimized_grids
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Wed, 08 Jul 2020 18:20:57 +0200
parents 43d02533bea3
children b758d1cf4c8e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
1 function [H, HI, D1, D2, e_l, e_r, d1_l, d1_r] = d2_variable_4(m,h)
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
2
341
43d02533bea3 Fixed error in boundary point check.
Jonatan Werpers <jonatan@werpers.com>
parents: 303
diff changeset
3 BP = 6;
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
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
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
8
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
9
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
10
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
11 % Norm
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
12 Hv = ones(m,1);
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
13 Hv(1:4) = [17/48 59/48 43/48 49/48];
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
14 Hv(m-3:m) = rot90(Hv(1:4),2);
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
15 Hv = h*Hv;
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
16 H = spdiag(Hv, 0);
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
17 HI = spdiag(1./Hv, 0);
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
18
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
19
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
20 % Boundary operators
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
21 e_l = sparse(m,1);
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
22 e_l(1) = 1;
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
23 e_r = rot90(e_l, 2);
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
24
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
25 d1_l = sparse(m,1);
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
26 d1_l(1:4) = 1/h*[-11/6 3 -3/2 1/3];
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
27 d1_r = -rot90(d1_l, 2);
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
28
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
29
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
30
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
31
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
32 S = d1_l*d1_l' + d1_r*d1_r';
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
33
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
34 stencil = [1/12 -2/3 0 2/3 -1/12];
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
35 diags = -2:2;
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
36
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
37 Q_U = [
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
38 0 0.59e2/0.96e2 -0.1e1/0.12e2 -0.1e1/0.32e2;
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
39 -0.59e2/0.96e2 0 0.59e2/0.96e2 0;
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
40 0.1e1/0.12e2 -0.59e2/0.96e2 0 0.59e2/0.96e2;
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
41 0.1e1/0.32e2 0 -0.59e2/0.96e2 0;
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
42 ];
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
43
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
44 Q = stripeMatrix(stencil, diags, m);
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
45 Q(1:4,1:4) = Q_U;
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
46 Q(m-3:m,m-3:m) = -rot90(Q_U, 2);
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
47
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
48 D1 = HI*(Q - 1/2*e_l*e_l' + 1/2*e_r*e_r');
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
49
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
50
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
51 N = m;
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
52 function D2 = D2_fun(c)
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
53 M = 78+(N-12)*5;
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
54 %h = 1/(N-1);
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
55
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
56
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
57 U = [
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
58 48/(17)*(0.12e2/0.17e2 * c(1) + 0.59e2/0.192e3 * c(2) + 0.27010400129e11/0.345067064608e12 * c(3) + 0.69462376031e11/0.2070402387648e13 * c(4)) 48/(17)*(-0.59e2/0.68e2 * c(1) - 0.6025413881e10/0.21126554976e11 * c(3) - 0.537416663e9/0.7042184992e10 * c(4)) 48/(17)*(0.2e1/0.17e2 * c(1) - 0.59e2/0.192e3 * c(2) + 0.213318005e9/0.16049630912e11 * c(4) + 0.2083938599e10/0.8024815456e10 * c(3)) 48/(17)*(0.3e1/0.68e2 * c(1) - 0.1244724001e10/0.21126554976e11 * c(3) + 0.752806667e9/0.21126554976e11 * c(4)) 48/(17)*(0.49579087e8/0.10149031312e11 * c(3) - 0.49579087e8/0.10149031312e11 * c(4)) 48/(17)*(-c(4)/0.784e3 + c(3)/0.784e3);...
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
59 48/(59)*(-0.59e2/0.68e2 * c(1) - 0.6025413881e10/0.21126554976e11 * c(3) - 0.537416663e9/0.7042184992e10 * c(4)) 48/(59)*(0.3481e4/0.3264e4 * c(1) + 0.9258282831623875e16/0.7669235228057664e16 * c(3) + 0.236024329996203e15/0.1278205871342944e16 * c(4)) 48/(59)*(-0.59e2/0.408e3 * c(1) - 0.29294615794607e14/0.29725717938208e14 * c(3) - 0.2944673881023e13/0.29725717938208e14 * c(4)) 48/(59)*(-0.59e2/0.1088e4 * c(1) + 0.260297319232891e15/0.2556411742685888e16 * c(3) - 0.60834186813841e14/0.1278205871342944e16 * c(4)) 48/(59)*(-0.1328188692663e13/0.37594290333616e14 * c(3) + 0.1328188692663e13/0.37594290333616e14 * c(4)) 48/(59)*(-0.8673e4/0.2904112e7 * c(3) + 0.8673e4/0.2904112e7 * c(4));...
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
60 48/(43)*(0.2e1/0.17e2 * c(1) - 0.59e2/0.192e3 * c(2) + 0.213318005e9/0.16049630912e11 * c(4) + 0.2083938599e10/0.8024815456e10 * c(3)) 48/(43)*(-0.59e2/0.408e3 * c(1) - 0.29294615794607e14/0.29725717938208e14 * c(3) - 0.2944673881023e13/0.29725717938208e14 * c(4)) 48/(43)*(c(1)/0.51e2 + 0.59e2/0.192e3 * c(2) + 0.13777050223300597e17/0.26218083221499456e17 * c(4) + 0.564461e6/0.13384296e8 * c(5) + 0.378288882302546512209e21/0.270764341349677687456e21 * c(3)) 48/(43)*(c(1)/0.136e3 - 0.125059e6/0.743572e6 * c(5) - 0.4836340090442187227e19/0.5525802884687299744e19 * c(3) - 0.17220493277981e14/0.89177153814624e14 * c(4)) 48/(43)*(-0.10532412077335e14/0.42840005263888e14 * c(4) + 0.1613976761032884305e19/0.7963657098519931984e19 * c(3) + 0.564461e6/0.4461432e7 * c(5)) 48/(43)*(-0.960119e6/0.1280713392e10 * c(4) - 0.3391e4/0.6692148e7 * c(5) + 0.33235054191e11/0.26452850508784e14 * c(3));...
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
61 48/(49)*(0.3e1/0.68e2 * c(1) - 0.1244724001e10/0.21126554976e11 * c(3) + 0.752806667e9/0.21126554976e11 * c(4)) 48/(49)*(-0.59e2/0.1088e4 * c(1) + 0.260297319232891e15/0.2556411742685888e16 * c(3) - 0.60834186813841e14/0.1278205871342944e16 * c(4)) 48/(49)*(c(1)/0.136e3 - 0.125059e6/0.743572e6 * c(5) - 0.4836340090442187227e19/0.5525802884687299744e19 * c(3) - 0.17220493277981e14/0.89177153814624e14 * c(4)) 48/(49)*(0.3e1/0.1088e4 * c(1) + 0.507284006600757858213e21/0.475219048083107777984e21 * c(3) + 0.1869103e7/0.2230716e7 * c(5) + c(6)/0.24e2 + 0.1950062198436997e16/0.3834617614028832e16 * c(4)) 48/(49)*(-0.4959271814984644613e19/0.20965546238960637264e20 * c(3) - c(6)/0.6e1 - 0.15998714909649e14/0.37594290333616e14 * c(4) - 0.375177e6/0.743572e6 * c(5)) 48/(49)*(-0.368395e6/0.2230716e7 * c(5) + 0.752806667e9/0.539854092016e12 * c(3) + 0.1063649e7/0.8712336e7 * c(4) + c(6)/0.8e1);...
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
62 0.49579087e8/0.10149031312e11 * c(3) - 0.49579087e8/0.10149031312e11 * c(4) -0.1328188692663e13/0.37594290333616e14 * c(3) + 0.1328188692663e13/0.37594290333616e14 * c(4) -0.10532412077335e14/0.42840005263888e14 * c(4) + 0.1613976761032884305e19/0.7963657098519931984e19 * c(3) + 0.564461e6/0.4461432e7 * c(5) -0.4959271814984644613e19/0.20965546238960637264e20 * c(3) - c(6)/0.6e1 - 0.15998714909649e14/0.37594290333616e14 * c(4) - 0.375177e6/0.743572e6 * c(5) 0.8386761355510099813e19/0.128413970713633903242e21 * c(3) + 0.2224717261773437e16/0.2763180339520776e16 * c(4) + 0.5e1/0.6e1 * c(6) + c(7)/0.24e2 + 0.280535e6/0.371786e6 * c(5) -0.35039615e8/0.213452232e9 * c(4) - c(7)/0.6e1 - 0.13091810925e11/0.13226425254392e14 * c(3) - 0.1118749e7/0.2230716e7 * c(5) - c(6)/0.2e1;...
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
63 -c(4)/0.784e3 + c(3)/0.784e3 -0.8673e4/0.2904112e7 * c(3) + 0.8673e4/0.2904112e7 * c(4) -0.960119e6/0.1280713392e10 * c(4) - 0.3391e4/0.6692148e7 * c(5) + 0.33235054191e11/0.26452850508784e14 * c(3) -0.368395e6/0.2230716e7 * c(5) + 0.752806667e9/0.539854092016e12 * c(3) + 0.1063649e7/0.8712336e7 * c(4) + c(6)/0.8e1 -0.35039615e8/0.213452232e9 * c(4) - c(7)/0.6e1 - 0.13091810925e11/0.13226425254392e14 * c(3) - 0.1118749e7/0.2230716e7 * c(5) - c(6)/0.2e1 0.3290636e7/0.80044587e8 * c(4) + 0.5580181e7/0.6692148e7 * c(5) + 0.5e1/0.6e1 * c(7) + c(8)/0.24e2 + 0.660204843e9/0.13226425254392e14 * c(3) + 0.3e1/0.4e1 * c(6)
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
64 ];
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
65
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
66
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
67 L = [
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
68 c(N-7)/0.24e2 + 0.5e1/0.6e1 * c(N-6) + 0.5580181e7/0.6692148e7 * c(N-4) + 0.4887707739997e13/0.119037827289528e15 * c(N-3) + 0.3e1/0.4e1 * c(N-5) + 0.660204843e9/0.13226425254392e14 * c(N-2) + 0.660204843e9/0.13226425254392e14 * c(N-1) -c(N-6)/0.6e1 - 0.1618585929605e13/0.9919818940794e13 * c(N-3) - c(N-5)/0.2e1 - 0.1118749e7/0.2230716e7 * c(N-4) - 0.13091810925e11/0.13226425254392e14 * c(N-2) - 0.13091810925e11/0.13226425254392e14 * c(N-1) -0.368395e6/0.2230716e7 * c(N-4) + c(N-5)/0.8e1 + 0.48866620889e11/0.404890569012e12 * c(N-3) + 0.752806667e9/0.539854092016e12 * c(N-2) + 0.752806667e9/0.539854092016e12 * c(N-1) -0.3391e4/0.6692148e7 * c(N-4) - 0.238797444493e12/0.119037827289528e15 * c(N-3) + 0.33235054191e11/0.26452850508784e14 * c(N-2) + 0.33235054191e11/0.26452850508784e14 * c(N-1) -0.8673e4/0.2904112e7 * c(N-2) - 0.8673e4/0.2904112e7 * c(N-1) + 0.8673e4/0.1452056e7 * c(N-3) -c(N-3)/0.392e3 + c(N-2)/0.784e3 + c(N-1)/0.784e3;...
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
69 -c(N-6)/0.6e1 - 0.1618585929605e13/0.9919818940794e13 * c(N-3) - c(N-5)/0.2e1 - 0.1118749e7/0.2230716e7 * c(N-4) - 0.13091810925e11/0.13226425254392e14 * c(N-2) - 0.13091810925e11/0.13226425254392e14 * c(N-1) c(N-6)/0.24e2 + 0.5e1/0.6e1 * c(N-5) + 0.3896014498639e13/0.4959909470397e13 * c(N-3) + 0.8386761355510099813e19/0.128413970713633903242e21 * c(N-2) + 0.280535e6/0.371786e6 * c(N-4) + 0.3360696339136261875e19/0.171218627618178537656e21 * c(N-1) -c(N-5)/0.6e1 - 0.4959271814984644613e19/0.20965546238960637264e20 * c(N-2) - 0.375177e6/0.743572e6 * c(N-4) - 0.13425842714e11/0.33740880751e11 * c(N-3) - 0.193247108773400725e18/0.6988515412986879088e19 * c(N-1) -0.365281640980e12/0.1653303156799e13 * c(N-3) + 0.564461e6/0.4461432e7 * c(N-4) + 0.1613976761032884305e19/0.7963657098519931984e19 * c(N-2) - 0.198407225513315475e18/0.7963657098519931984e19 * c(N-1) -0.1328188692663e13/0.37594290333616e14 * c(N-2) + 0.2226377963775e13/0.37594290333616e14 * c(N-1) - 0.8673e4/0.363014e6 * c(N-3) c(N-3)/0.49e2 + 0.49579087e8/0.10149031312e11 * c(N-2) - 0.256702175e9/0.10149031312e11 * c(N-1);...
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
70 48/(49)*(-0.368395e6/0.2230716e7 * c(N-4) + c(N-5)/0.8e1 + 0.48866620889e11/0.404890569012e12 * c(N-3) + 0.752806667e9/0.539854092016e12 * c(N-2) + 0.752806667e9/0.539854092016e12 * c(N-1)) 48/(49)*(-c(N-5)/0.6e1 - 0.4959271814984644613e19/0.20965546238960637264e20 * c(N-2) - 0.375177e6/0.743572e6 * c(N-4) - 0.13425842714e11/0.33740880751e11 * c(N-3) - 0.193247108773400725e18/0.6988515412986879088e19 * c(N-1)) 48/(49)*(c(N-5)/0.24e2 + 0.1869103e7/0.2230716e7 * c(N-4) + 0.507284006600757858213e21/0.475219048083107777984e21 * c(N-2) + 0.3e1/0.1088e4 * c(N) + 0.31688435395e11/0.67481761502e11 * c(N-3) + 0.27769176016102795561e20/0.712828572124661666976e21 * c(N-1)) 48/(49)*(-0.125059e6/0.743572e6 * c(N-4) + c(N)/0.136e3 - 0.23099342648e11/0.101222642253e12 * c(N-3) - 0.4836340090442187227e19/0.5525802884687299744e19 * c(N-2) + 0.193950157930938693e18/0.5525802884687299744e19 * c(N-1)) 48/(49)*(0.260297319232891e15/0.2556411742685888e16 * c(N-2) - 0.59e2/0.1088e4 * c(N) - 0.106641839640553e15/0.1278205871342944e16 * c(N-1) + 0.26019e5/0.726028e6 * c(N-3)) 48/(49)*(-0.1244724001e10/0.21126554976e11 * c(N-2) + 0.3e1/0.68e2 * c(N) + 0.752806667e9/0.21126554976e11 * c(N-1));...
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
71 48/(43)*(-0.3391e4/0.6692148e7 * c(N-4) - 0.238797444493e12/0.119037827289528e15 * c(N-3) + 0.33235054191e11/0.26452850508784e14 * c(N-2) + 0.33235054191e11/0.26452850508784e14 * c(N-1)) 48/(43)*(-0.365281640980e12/0.1653303156799e13 * c(N-3) + 0.564461e6/0.4461432e7 * c(N-4) + 0.1613976761032884305e19/0.7963657098519931984e19 * c(N-2) - 0.198407225513315475e18/0.7963657098519931984e19 * c(N-1)) 48/(43)*(-0.125059e6/0.743572e6 * c(N-4) + c(N)/0.136e3 - 0.23099342648e11/0.101222642253e12 * c(N-3) - 0.4836340090442187227e19/0.5525802884687299744e19 * c(N-2) + 0.193950157930938693e18/0.5525802884687299744e19 * c(N-1)) 48/(43)*(0.564461e6/0.13384296e8 * c(N-4) + 0.470299699916357e15/0.952302618316224e15 * c(N-3) + 0.550597048646198778781e21/0.1624586048098066124736e22 * c(N-1) + c(N)/0.51e2 + 0.378288882302546512209e21/0.270764341349677687456e21 * c(N-2)) 48/(43)*(-0.59e2/0.408e3 * c(N) - 0.29294615794607e14/0.29725717938208e14 * c(N-2) - 0.2234477713167e13/0.29725717938208e14 * c(N-1) - 0.8673e4/0.363014e6 * c(N-3)) 48/(43)*(-0.59e2/0.3136e4 * c(N-3) - 0.13249937023e11/0.48148892736e11 * c(N-1) + 0.2e1/0.17e2 * c(N) + 0.2083938599e10/0.8024815456e10 * c(N-2));...
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
72 48/(59)*(-0.8673e4/0.2904112e7 * c(N-2) - 0.8673e4/0.2904112e7 * c(N-1) + 0.8673e4/0.1452056e7 * c(N-3)) 48/(59)*(-0.1328188692663e13/0.37594290333616e14 * c(N-2) + 0.2226377963775e13/0.37594290333616e14 * c(N-1) - 0.8673e4/0.363014e6 * c(N-3)) 48/(59)*(0.260297319232891e15/0.2556411742685888e16 * c(N-2) - 0.59e2/0.1088e4 * c(N) - 0.106641839640553e15/0.1278205871342944e16 * c(N-1) + 0.26019e5/0.726028e6 * c(N-3)) 48/(59)*(-0.59e2/0.408e3 * c(N) - 0.29294615794607e14/0.29725717938208e14 * c(N-2) - 0.2234477713167e13/0.29725717938208e14 * c(N-1) - 0.8673e4/0.363014e6 * c(N-3)) 48/(59)*(0.9258282831623875e16/0.7669235228057664e16 * c(N-2) + 0.3481e4/0.3264e4 * c(N) + 0.228389721191751e15/0.1278205871342944e16 * c(N-1) + 0.8673e4/0.1452056e7 * c(N-3)) 48/(59)*(-0.6025413881e10/0.21126554976e11 * c(N-2) - 0.59e2/0.68e2 * c(N) - 0.537416663e9/0.7042184992e10 * c(N-1));...
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
73 48/(17)*(-c(N-3)/0.392e3 + c(N-2)/0.784e3 + c(N-1)/0.784e3) 48/(17)*(c(N-3)/0.49e2 + 0.49579087e8/0.10149031312e11 * c(N-2) - 0.256702175e9/0.10149031312e11 * c(N-1)) 48/(17)*(-0.1244724001e10/0.21126554976e11 * c(N-2) + 0.3e1/0.68e2 * c(N) + 0.752806667e9/0.21126554976e11 * c(N-1)) 48/(17)*(-0.59e2/0.3136e4 * c(N-3) - 0.13249937023e11/0.48148892736e11 * c(N-1) + 0.2e1/0.17e2 * c(N) + 0.2083938599e10/0.8024815456e10 * c(N-2)) 48/(17)*(-0.6025413881e10/0.21126554976e11 * c(N-2) - 0.59e2/0.68e2 * c(N) - 0.537416663e9/0.7042184992e10 * c(N-1)) 48/(17)*(0.3e1/0.3136e4 * c(N-3) + 0.27010400129e11/0.345067064608e12 * c(N-2) + 0.234566387291e12/0.690134129216e12 * c(N-1) + 0.12e2/0.17e2 * c(N))
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
74 ];
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
75
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
76
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
77
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
78 R = sparse(M,1);
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
79 R(1:24) = reshape(U(1:4,:)',24,1);
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
80 R(25:30) = U(5,:);
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
81 R(31) = -c(5+1)/0.6e1 + c(5)/0.8e1 + c(5+2)/0.8e1;
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
82 R(32:37) = U(6,:);
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
83 R(38:39) = [-c(6-1)/0.6e1 - c(6+2)/0.6e1 - c(6)/0.2e1 - c(6+1)/0.2e1;...
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
84 -c(6+1)/0.6e1 + c(6)/0.8e1 + c(6+2)/0.8e1];
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
85
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
86 R(M-38:M-37) = [-c(N-6)/0.6e1 + c(N-7)/0.8e1 + c(N-5)/0.8e1;...
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
87 -c(N-7)/0.6e1 - c(N-4)/0.6e1 - c(N-6)/0.2e1 - c(N-5)/0.2e1];
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
88 R(M-36:M-31) = L(1,:);
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
89 R(M-30) = -c(N-5)/0.6e1 + c(N-6)/0.8e1 + c(N-4)/0.8e1;
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
90 R(M-29:M-24) = L(2,:);
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
91 R(M-23:M) = reshape(L(3:6,:)',24,1);
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
92
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
93 for i=7:N-6
303
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
94 R(40+(i-7)*5:44+(i-7)*5) = [
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
95 -c(i-1)/0.6e1 + c(i-2)/0.8e1 + c(i)/0.8e1,...
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
96 -c(i-2)/0.6e1 - c(i+1)/0.6e1 - c(i-1)/0.2e1 - c(i)/0.2e1,...
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
97 c(i-2)/0.24e2 + 0.5e1/0.6e1 * c(i-1) + 0.5e1/0.6e1 * c(i+1) + c(i+2)/0.24e2 + 0.3e1/0.4e1 * c(i),...
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
98 -c(i-1)/0.6e1 - c(i+2)/0.6e1 - c(i)/0.2e1 - c(i+1)/0.2e1,...
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
99 -c(i+1)/0.6e1 + c(i)/0.8e1 + c(i+2)/0.8e1
f18142c1530b Fixed Wave2dCurve for new operators. Some cleanup in d2_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents: 267
diff changeset
100 ];
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
101 end
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
102
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
103 R = R/h/h;
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
104 D2 = -R;
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
105 D2(1:4) = -48/17/h/h*[c(1)*(-11/6);c(1)*3;c(1)*(-3/2);c(1)*1/3] + D2(1:4);
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
106 D2(M-3:M) = -48/17/h/h*[c(N)*1/3;c(N)*(-3/2);c(N)*3;c(N)*(-11/6)] + D2(M-3:M);
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
107
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
108
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
109
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
110 % BS = sparse(N,N);
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
111 % BS(1,1:4) = -c(1)*1/h*[(-11/6);3;(-3/2);1/3];
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
112 % BS(N,N-3:N) = c(N)*1/h*[(-1/3);3/2;(-3);11/6];
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
113 % BS = sparse(BS);
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
114
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
115 % %%Row and column indices%%
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
116 M = 78+(N-12)*5;
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
117 rows = [kron([1;2;3;4],ones(6,1));...
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
118 5*ones(7,1);...
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
119 6*ones(8,1);...
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
120 kron((7:N-6)',ones(5,1));...
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
121 (N-5)*ones(8,1);...
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
122 (N-4)*ones(7,1);...
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
123 kron([N-3;N-2;N-1;N],ones(6,1))];
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
124
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
125 cols = sparse(M,1);
261
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
126 cols(1:24) = kron(ones(4,1),[1;2;3;4;5;6]);
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
127 cols(25:39) = [(1:7)';(1:8)'];
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
128 cols(M-23:M) = kron(ones(4,1),[N-5;N-4;N-3;N-2;N-1;N]);
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
129 cols(M-38:M-24) = [(N-7:N)';(N-6:N)'];
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
130 for i=7:N-6
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
131 cols(40+(i-7)*5:44+(i-7)*5) = [i-2;i-1;i;i+1;i+2];
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
132 end
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
133 D2 = sparse(rows,cols,D2);
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
134 end
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
135 D2 = @D2_fun;
6009f2712d13 Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
136 end