Mercurial > repos > public > sbplib
annotate +sbp/+implementations/d4_variable_4.m @ 1031:2ef20d00b386 feature/advectionRV
For easier comparison, return both the first order and residual viscosity when evaluating the residual. Add the first order and residual viscosity to the state of the RungekuttaRV time steppers
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Thu, 17 Jan 2019 10:25:06 +0100 |
parents | 4b9e82eab88a |
children |
rev | line source |
---|---|
312 | 1 function [H, HI, D1, D2, D4, e_l, e_r, M4, d2_l, d2_r, d3_l, d3_r, d1_l, d1_r] = d4_variable_4(m,h) |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
3 %%% 4:de ordn. SBP Finita differens %%% |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
4 %%% %%% |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
5 %%% H (Normen) %%% |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
6 %%% D1=H^(-1)Q (approx f?rsta derivatan) %%% |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
7 %%% D2 (approx andra derivatan) %%% |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
8 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
9 |
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 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
|
12 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
|
13 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
|
14 end |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
15 |
314
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
16 % Norm |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
17 Hv = ones(m,1); |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
18 Hv(1:4) = [17/48 59/48 43/48 49/48]; |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
19 Hv(m-3:m) = rot90(Hv(1:4),2); |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
20 Hv = h*Hv; |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
21 H = spdiag(Hv, 0); |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
22 HI = spdiag(1./Hv, 0); |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
23 |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
24 |
314
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
25 % Boundary operators |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
26 e_l = sparse(m,1); |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
27 e_l(1) = 1; |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
28 e_r = rot90(e_l, 2); |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
29 |
314
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
30 d1_l = sparse(m,1); |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
31 d1_l(1:4) = 1/h*[-11/6 3 -3/2 1/3]; |
326
b19e142fcae1
Fixed bug in setting of boundary derivative.
Jonatan Werpers <jonatan@werpers.com>
parents:
315
diff
changeset
|
32 d1_r = -rot90(d1_l, 2); |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
33 |
314
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
34 d2_l = sparse(m,1); |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
35 d2_l(1:4) = 1/h^2*[2 -5 4 -1]; |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
36 d2_r = rot90(d2_l, 2); |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
37 |
314
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
38 d3_l = sparse(m,1); |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
39 d3_l(1:4) = 1/h^3*[-1 3 -3 1]; |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
40 d3_r = -rot90(d3_l, 2); |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
41 |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
42 |
314
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
43 % First derivative SBP operator, |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
44 stencil = [1/12 -2/3 0 2/3 -1/12]; |
390
4b9e82eab88a
Fix bug with D1 in D4Variable.
Jonatan Werpers <jonatan@werpers.com>
parents:
357
diff
changeset
|
45 diags = -2:2; |
314
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
46 |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
47 Q_U = [ |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
48 0 0.59e2/0.96e2 -0.1e1/0.12e2 -0.1e1/0.32e2; |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
49 -0.59e2/0.96e2 0 0.59e2/0.96e2 0; |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
50 0.1e1/0.12e2 -0.59e2/0.96e2 0 0.59e2/0.96e2; |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
51 0.1e1/0.32e2 0 -0.59e2/0.96e2 0; |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
52 ]; |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
53 |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
54 Q = stripeMatrix(stencil, diags, m); |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
55 Q(1:4,1:4)=Q_U; |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
56 Q(m-3:m,m-3:m) = -rot90(Q_U, 2); |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
57 |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
58 D1 = HI*(Q - 1/2*e_l*e_l' + 1/2*e_r*e_r'); |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
59 |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
60 |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
61 % Second derivative |
315
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
62 M = sparse(m,m); |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
63 |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
64 scheme_width = 5; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
65 scheme_radius = (scheme_width-1)/2; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
66 r = (1+scheme_radius):(m-scheme_radius); |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
67 |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
68 function D2 = D2_fun(c) |
357
19495f126f06
Minor clean up of d4_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents:
329
diff
changeset
|
69 Mm2 = c(r-2)/0.8e1 - c(r-1)/0.6e1 + c(r) /0.8e1 ; |
19495f126f06
Minor clean up of d4_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents:
329
diff
changeset
|
70 Mm1 = -c(r-2)/0.6e1 - c(r-1)/0.2e1 - c(r) /0.2e1 - c(r+1)/0.6e1 ; |
19495f126f06
Minor clean up of d4_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents:
329
diff
changeset
|
71 M0 = c(r-2)/2.4e1 + c(r-1)/1.2e0 + c(r)*0.3/0.4 + c(r+1)/1.2e0 + c(r+2)/2.4e1; |
19495f126f06
Minor clean up of d4_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents:
329
diff
changeset
|
72 Mp1 = -c(r-1)/0.6e1 - c(r) /0.2e1 - c(r+1)/0.2e1 - c(r+2)/0.6e1; |
19495f126f06
Minor clean up of d4_variable_4.
Jonatan Werpers <jonatan@werpers.com>
parents:
329
diff
changeset
|
73 Mp2 = c(r) /0.8e1 - c(r+1)/0.6e1 + c(r+2)/0.8e1; |
315
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
74 |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
75 M(r,:) = spdiags([Mm2 Mm1 M0 Mp1 Mp2],0:2*scheme_radius,length(r),m); |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
76 |
312 | 77 M(1:6,1:6) = [ |
78 0.12e2/0.17e2 * c(1) + 0.59e2/0.192e3 * c(2) + 0.27010400129e11/0.345067064608e12 * c(3) + 0.69462376031e11/0.2070402387648e13 * c(4) -0.59e2/0.68e2 * c(1) - 0.6025413881e10/0.21126554976e11 * c(3) - 0.537416663e9/0.7042184992e10 * c(4) 0.2e1/0.17e2 * c(1) - 0.59e2/0.192e3 * c(2) + 0.213318005e9/0.16049630912e11 * c(4) + 0.2083938599e10/0.8024815456e10 * c(3) 0.3e1/0.68e2 * c(1) - 0.1244724001e10/0.21126554976e11 * c(3) + 0.752806667e9/0.21126554976e11 * c(4) 0.49579087e8/0.10149031312e11 * c(3) - 0.49579087e8/0.10149031312e11 * c(4) -c(4)/0.784e3 + c(3)/0.784e3; | |
79 -0.59e2/0.68e2 * c(1) - 0.6025413881e10/0.21126554976e11 * c(3) - 0.537416663e9/0.7042184992e10 * c(4) 0.3481e4/0.3264e4 * c(1) + 0.9258282831623875e16/0.7669235228057664e16 * c(3) + 0.236024329996203e15/0.1278205871342944e16 * c(4) -0.59e2/0.408e3 * c(1) - 0.29294615794607e14/0.29725717938208e14 * c(3) - 0.2944673881023e13/0.29725717938208e14 * c(4) -0.59e2/0.1088e4 * c(1) + 0.260297319232891e15/0.2556411742685888e16 * c(3) - 0.60834186813841e14/0.1278205871342944e16 * c(4) -0.1328188692663e13/0.37594290333616e14 * c(3) + 0.1328188692663e13/0.37594290333616e14 * c(4) -0.8673e4/0.2904112e7 * c(3) + 0.8673e4/0.2904112e7 * c(4); | |
80 0.2e1/0.17e2 * c(1) - 0.59e2/0.192e3 * c(2) + 0.213318005e9/0.16049630912e11 * c(4) + 0.2083938599e10/0.8024815456e10 * c(3) -0.59e2/0.408e3 * c(1) - 0.29294615794607e14/0.29725717938208e14 * c(3) - 0.2944673881023e13/0.29725717938208e14 * c(4) 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) c(1)/0.136e3 - 0.125059e6/0.743572e6 * c(5) - 0.4836340090442187227e19/0.5525802884687299744e19 * c(3) - 0.17220493277981e14/0.89177153814624e14 * c(4) -0.10532412077335e14/0.42840005263888e14 * c(4) + 0.1613976761032884305e19/0.7963657098519931984e19 * c(3) + 0.564461e6/0.4461432e7 * c(5) -0.960119e6/0.1280713392e10 * c(4) - 0.3391e4/0.6692148e7 * c(5) + 0.33235054191e11/0.26452850508784e14 * c(3); | |
81 0.3e1/0.68e2 * c(1) - 0.1244724001e10/0.21126554976e11 * c(3) + 0.752806667e9/0.21126554976e11 * c(4) -0.59e2/0.1088e4 * c(1) + 0.260297319232891e15/0.2556411742685888e16 * c(3) - 0.60834186813841e14/0.1278205871342944e16 * c(4) c(1)/0.136e3 - 0.125059e6/0.743572e6 * c(5) - 0.4836340090442187227e19/0.5525802884687299744e19 * c(3) - 0.17220493277981e14/0.89177153814624e14 * c(4) 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) -0.4959271814984644613e19/0.20965546238960637264e20 * c(3) - c(6)/0.6e1 - 0.15998714909649e14/0.37594290333616e14 * c(4) - 0.375177e6/0.743572e6 * c(5) -0.368395e6/0.2230716e7 * c(5) + 0.752806667e9/0.539854092016e12 * c(3) + 0.1063649e7/0.8712336e7 * c(4) + c(6)/0.8e1; | |
82 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; | |
83 -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); | |
315
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
84 ]; |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
85 |
312 | 86 M(m-5:m,m-5:m) = [ |
87 c(m-7)/0.24e2 + 0.5e1/0.6e1 * c(m-6) + 0.5580181e7/0.6692148e7 * c(m-4) + 0.4887707739997e13/0.119037827289528e15 * c(m-3) + 0.3e1/0.4e1 * c(m-5) + 0.660204843e9/0.13226425254392e14 * c(m-2) + 0.660204843e9/0.13226425254392e14 * c(m-1) -c(m-6)/0.6e1 - 0.1618585929605e13/0.9919818940794e13 * c(m-3) - c(m-5)/0.2e1 - 0.1118749e7/0.2230716e7 * c(m-4) - 0.13091810925e11/0.13226425254392e14 * c(m-2) - 0.13091810925e11/0.13226425254392e14 * c(m-1) -0.368395e6/0.2230716e7 * c(m-4) + c(m-5)/0.8e1 + 0.48866620889e11/0.404890569012e12 * c(m-3) + 0.752806667e9/0.539854092016e12 * c(m-2) + 0.752806667e9/0.539854092016e12 * c(m-1) -0.3391e4/0.6692148e7 * c(m-4) - 0.238797444493e12/0.119037827289528e15 * c(m-3) + 0.33235054191e11/0.26452850508784e14 * c(m-2) + 0.33235054191e11/0.26452850508784e14 * c(m-1) -0.8673e4/0.2904112e7 * c(m-2) - 0.8673e4/0.2904112e7 * c(m-1) + 0.8673e4/0.1452056e7 * c(m-3) -c(m-3)/0.392e3 + c(m-2)/0.784e3 + c(m-1)/0.784e3; | |
88 -c(m-6)/0.6e1 - 0.1618585929605e13/0.9919818940794e13 * c(m-3) - c(m-5)/0.2e1 - 0.1118749e7/0.2230716e7 * c(m-4) - 0.13091810925e11/0.13226425254392e14 * c(m-2) - 0.13091810925e11/0.13226425254392e14 * c(m-1) c(m-6)/0.24e2 + 0.5e1/0.6e1 * c(m-5) + 0.3896014498639e13/0.4959909470397e13 * c(m-3) + 0.8386761355510099813e19/0.128413970713633903242e21 * c(m-2) + 0.280535e6/0.371786e6 * c(m-4) + 0.3360696339136261875e19/0.171218627618178537656e21 * c(m-1) -c(m-5)/0.6e1 - 0.4959271814984644613e19/0.20965546238960637264e20 * c(m-2) - 0.375177e6/0.743572e6 * c(m-4) - 0.13425842714e11/0.33740880751e11 * c(m-3) - 0.193247108773400725e18/0.6988515412986879088e19 * c(m-1) -0.365281640980e12/0.1653303156799e13 * c(m-3) + 0.564461e6/0.4461432e7 * c(m-4) + 0.1613976761032884305e19/0.7963657098519931984e19 * c(m-2) - 0.198407225513315475e18/0.7963657098519931984e19 * c(m-1) -0.1328188692663e13/0.37594290333616e14 * c(m-2) + 0.2226377963775e13/0.37594290333616e14 * c(m-1) - 0.8673e4/0.363014e6 * c(m-3) c(m-3)/0.49e2 + 0.49579087e8/0.10149031312e11 * c(m-2) - 0.256702175e9/0.10149031312e11 * c(m-1); | |
89 -0.368395e6/0.2230716e7 * c(m-4) + c(m-5)/0.8e1 + 0.48866620889e11/0.404890569012e12 * c(m-3) + 0.752806667e9/0.539854092016e12 * c(m-2) + 0.752806667e9/0.539854092016e12 * c(m-1) -c(m-5)/0.6e1 - 0.4959271814984644613e19/0.20965546238960637264e20 * c(m-2) - 0.375177e6/0.743572e6 * c(m-4) - 0.13425842714e11/0.33740880751e11 * c(m-3) - 0.193247108773400725e18/0.6988515412986879088e19 * c(m-1) c(m-5)/0.24e2 + 0.1869103e7/0.2230716e7 * c(m-4) + 0.507284006600757858213e21/0.475219048083107777984e21 * c(m-2) + 0.3e1/0.1088e4 * c(m) + 0.31688435395e11/0.67481761502e11 * c(m-3) + 0.27769176016102795561e20/0.712828572124661666976e21 * c(m-1) -0.125059e6/0.743572e6 * c(m-4) + c(m)/0.136e3 - 0.23099342648e11/0.101222642253e12 * c(m-3) - 0.4836340090442187227e19/0.5525802884687299744e19 * c(m-2) + 0.193950157930938693e18/0.5525802884687299744e19 * c(m-1) 0.260297319232891e15/0.2556411742685888e16 * c(m-2) - 0.59e2/0.1088e4 * c(m) - 0.106641839640553e15/0.1278205871342944e16 * c(m-1) + 0.26019e5/0.726028e6 * c(m-3) -0.1244724001e10/0.21126554976e11 * c(m-2) + 0.3e1/0.68e2 * c(m) + 0.752806667e9/0.21126554976e11 * c(m-1); | |
90 -0.3391e4/0.6692148e7 * c(m-4) - 0.238797444493e12/0.119037827289528e15 * c(m-3) + 0.33235054191e11/0.26452850508784e14 * c(m-2) + 0.33235054191e11/0.26452850508784e14 * c(m-1) -0.365281640980e12/0.1653303156799e13 * c(m-3) + 0.564461e6/0.4461432e7 * c(m-4) + 0.1613976761032884305e19/0.7963657098519931984e19 * c(m-2) - 0.198407225513315475e18/0.7963657098519931984e19 * c(m-1) -0.125059e6/0.743572e6 * c(m-4) + c(m)/0.136e3 - 0.23099342648e11/0.101222642253e12 * c(m-3) - 0.4836340090442187227e19/0.5525802884687299744e19 * c(m-2) + 0.193950157930938693e18/0.5525802884687299744e19 * c(m-1) 0.564461e6/0.13384296e8 * c(m-4) + 0.470299699916357e15/0.952302618316224e15 * c(m-3) + 0.550597048646198778781e21/0.1624586048098066124736e22 * c(m-1) + c(m)/0.51e2 + 0.378288882302546512209e21/0.270764341349677687456e21 * c(m-2) -0.59e2/0.408e3 * c(m) - 0.29294615794607e14/0.29725717938208e14 * c(m-2) - 0.2234477713167e13/0.29725717938208e14 * c(m-1) - 0.8673e4/0.363014e6 * c(m-3) -0.59e2/0.3136e4 * c(m-3) - 0.13249937023e11/0.48148892736e11 * c(m-1) + 0.2e1/0.17e2 * c(m) + 0.2083938599e10/0.8024815456e10 * c(m-2); | |
91 -0.8673e4/0.2904112e7 * c(m-2) - 0.8673e4/0.2904112e7 * c(m-1) + 0.8673e4/0.1452056e7 * c(m-3) -0.1328188692663e13/0.37594290333616e14 * c(m-2) + 0.2226377963775e13/0.37594290333616e14 * c(m-1) - 0.8673e4/0.363014e6 * c(m-3) 0.260297319232891e15/0.2556411742685888e16 * c(m-2) - 0.59e2/0.1088e4 * c(m) - 0.106641839640553e15/0.1278205871342944e16 * c(m-1) + 0.26019e5/0.726028e6 * c(m-3) -0.59e2/0.408e3 * c(m) - 0.29294615794607e14/0.29725717938208e14 * c(m-2) - 0.2234477713167e13/0.29725717938208e14 * c(m-1) - 0.8673e4/0.363014e6 * c(m-3) 0.9258282831623875e16/0.7669235228057664e16 * c(m-2) + 0.3481e4/0.3264e4 * c(m) + 0.228389721191751e15/0.1278205871342944e16 * c(m-1) + 0.8673e4/0.1452056e7 * c(m-3) -0.6025413881e10/0.21126554976e11 * c(m-2) - 0.59e2/0.68e2 * c(m) - 0.537416663e9/0.7042184992e10 * c(m-1); | |
92 -c(m-3)/0.392e3 + c(m-2)/0.784e3 + c(m-1)/0.784e3 c(m-3)/0.49e2 + 0.49579087e8/0.10149031312e11 * c(m-2) - 0.256702175e9/0.10149031312e11 * c(m-1) -0.1244724001e10/0.21126554976e11 * c(m-2) + 0.3e1/0.68e2 * c(m) + 0.752806667e9/0.21126554976e11 * c(m-1) -0.59e2/0.3136e4 * c(m-3) - 0.13249937023e11/0.48148892736e11 * c(m-1) + 0.2e1/0.17e2 * c(m) + 0.2083938599e10/0.8024815456e10 * c(m-2) -0.6025413881e10/0.21126554976e11 * c(m-2) - 0.59e2/0.68e2 * c(m) - 0.537416663e9/0.7042184992e10 * c(m-1) 0.3e1/0.3136e4 * c(m-3) + 0.27010400129e11/0.345067064608e12 * c(m-2) + 0.234566387291e12/0.690134129216e12 * c(m-1) + 0.12e2/0.17e2 * c(m); | |
315
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
93 ]; |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
94 |
312 | 95 M = M/h; |
329
bf801c3709be
Bug fixes in operators.
Jonatan Werpers <jonatan@werpers.com>
parents:
326
diff
changeset
|
96 D2 = HI*(-M - c(1)*e_l*d1_l' + c(m)*e_r*d1_r'); |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
97 end |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
98 D2 = @D2_fun; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
99 |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
100 |
314
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
101 % Fourth derivative |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
102 stencil = [-1/6,2,-13/2, 28/3,-13/2,2,-1/6]; |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
103 diags = -3:3; |
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
|
104 M4 = stripeMatrix(stencil, diags, m); |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
105 |
312 | 106 M4_U = [ |
107 0.5762947e7/0.2316384e7 -0.6374287e7/0.1158192e7 0.573947e6/0.165456e6 -0.124637e6/0.289548e6 0.67979e5/0.2316384e7 -0.60257e5/0.1158192e7; | |
108 -0.6374287e7/0.1158192e7 0.30392389e8/0.2316384e7 -0.2735053e7/0.289548e6 0.273109e6/0.165456e6 0.83767e5/0.1158192e7 0.245549e6/0.2316384e7; | |
109 0.573947e6/0.165456e6 -0.2735053e7/0.289548e6 0.5266855e7/0.579096e6 -0.1099715e7/0.289548e6 0.869293e6/0.1158192e7 -0.10195e5/0.144774e6; | |
110 -0.124637e6/0.289548e6 0.273109e6/0.165456e6 -0.1099715e7/0.289548e6 0.3259225e7/0.579096e6 -0.324229e6/0.72387e5 0.1847891e7/0.1158192e7; | |
111 0.67979e5/0.2316384e7 0.83767e5/0.1158192e7 0.869293e6/0.1158192e7 -0.324229e6/0.72387e5 0.2626501e7/0.330912e6 -0.7115491e7/0.1158192e7; | |
112 -0.60257e5/0.1158192e7 0.245549e6/0.2316384e7 -0.10195e5/0.144774e6 0.1847891e7/0.1158192e7 -0.7115491e7/0.1158192e7 0.21383077e8/0.2316384e7; | |
113 ]; | |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
114 |
312 | 115 M4(1:6,1:6) = M4_U; |
314
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
116 M4(m-5:m,m-5:m) = rot90(M4_U, 2); |
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
117 M4 = 1/h^3*M4; |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
118 |
314
88584b0cfba1
Corrections and clean up order 4
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
119 D4=HI*(M4 - e_l*d3_l'+e_r*d3_r' + d1_l*d2_l'-d1_r*d2_r'); |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
120 end |
315
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
121 |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
122 |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
123 % Alternatives for variable 2nd derivative |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
124 % % ALTERNATIVES %%%%%%%%%%%%% |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
125 % % for i=4:m-3 |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
126 % % M(i,i-2:i+2)=[-c(i-1)/0.6e1 + c(i-2)/0.8e1 + c(i)/0.8e1 -c(i-2)/0.6e1 - c(i+1)/0.6e1 - c(i-1)/0.2e1 - c(i)/0.2e1 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) -c(i-1)/0.6e1 - c(i+2)/0.6e1 - c(i)/0.2e1 - c(i+1)/0.2e1 -c(i+1)/0.6e1 + c(i)/0.8e1 + c(i+2)/0.8e1;]; |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
127 % % end |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
128 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
129 % % for i=4:m-3 |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
130 % % M(i,i-2:i+2)= [ |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
131 % % c(i-2)/0.8e1 - c(i-1)/0.6e1 + c(i) /0.8e1 , |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
132 % % -c(i-2)/0.6e1 - c(i-1)/0.2e1 - c(i) /0.2e1 - c(i+1)/0.6e1 , |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
133 % % c(i-2)/2.4e1 + c(i-1)/1.2e0 + c(i) * 0.3/0.4 + c(i+1)/1.2e0 + c(i+2)/2.4e1 , |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
134 % % -c(i-1)/0.6e1 - c(i) /0.2e1 - c(i+1)/0.2e1 - c(i+2)/0.6e1 , |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
135 % % c(i) /0.8e1 - c(i+1)/0.6e1 + c(i+2)/0.8e1 , |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
136 % % ]; |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
137 % % end |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
138 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
139 % Mm2 = c(r-2)/0.8e1 - c(r-1)/0.6e1 + c(r) /0.8e1 ; |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
140 % Mm1 = -c(r-2)/0.6e1 - c(r-1)/0.2e1 - c(r) /0.2e1 - c(r+1)/0.6e1 ; |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
141 % M0 = c(r-2)/2.4e1 + c(r-1)/1.2e0 + c(r) * 0.3/0.4 + c(r+1)/1.2e0 + c(r+2)/2.4e1; |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
142 % Mp1 = -c(r-1)/0.6e1 - c(r) /0.2e1 - c(r+1)/0.2e1 - c(r+2)/0.6e1; |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
143 % Mp2 = c(r) /0.8e1 - c(r+1)/0.6e1 + c(r+2)/0.8e1; |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
144 |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
145 % M(r,:) = spdiags([Mm2 Mm1 M0 Mp1 Mp2],0:2*scheme_radius,length(r),m); |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
146 % % M(r,:) = spdiags([Mm2 Mm1 M0 Mp1 Mp2],(-2:2)+scheme_radius,M(r,:)); % This is slower |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
147 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
148 % % %% Somthing is wrong here!! |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
149 % % Mm2 = c(r-2)/0.8e1 - c(r-1)/0.6e1 + c(r) /0.8e1 ; |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
150 % % Mm1 = -c(r-2)/0.6e1 - c(r-1)/0.2e1 - c(r) /0.2e1 - c(r+1)/0.6e1 ; |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
151 % % M0 = c(r-2)/2.4e1 + c(r-1)/1.2e0 + c(r) * 0.3/0.4 + c(r+1)/1.2e0 + c(r+2)/2.4e1; |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
152 % % Mp1 = -c(r-1)/0.6e1 - c(r) /0.2e1 - c(r+1)/0.2e1 - c(r+2)/0.6e1; |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
153 % % Mp2 = c(r) /0.8e1 - c(r+1)/0.6e1 + c(r+2)/0.8e1; |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
154 % % % printSize(M_diag_ind); |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
155 % % % Mdiags = [Mm2 Mm1 M0 Mp1 Mp2]; |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
156 % % % printSize(Mdiags); |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
157 % % M(M_diag_ind) = [Mm2 Mm1 M0 Mp1 Mp2]; % This is slightly faster |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
158 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
159 % % Kan man skriva det som en multiplikation av en 3-dim matris? |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
160 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
161 |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
162 |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
163 |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
164 |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
165 |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
166 |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
167 |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
168 |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
169 |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
170 |
297d2cbfbe15
Cleaning of variable 2nd deriv in 4th order.
Jonatan Werpers <jonatan@werpers.com>
parents:
314
diff
changeset
|
171 |