annotate +sbp/+implementations/d4_lonely_8_min_boundary_points.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 b19e142fcae1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
324
c0cbffcf6513 Created new operator class for lonely D4 operators. Removed some output parameters of implementations.
Jonatan Werpers <jonatan@werpers.com>
parents: 320
diff changeset
1 function [H, HI, D4, e_l, e_r, M4, d2_l, d2_r, d3_l, d3_r, d1_l, d1_r] = d4_variable_8_min_boundary_points(m,h)
312
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
3 %%% 8:te ordn. SBP Finita differens %%%
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
4 %%% operatorer med diagonal norm %%%
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
5 %%% %%%
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
6 %%% %%%
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
7 %%% H (Normen) %%%
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
8 %%% D1=H^(-1)Q (approx f?rsta derivatan) %%%
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
9 %%% D2 (approx andra derivatan) %%%
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
10 %%% D2=HI*(R+C*D*S %%%
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
11 %%% %%%
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
12 %%% R=-D1'*H*C*D1-RR %%%
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
13 %%% %%%
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
14 %%% RR ?r dissipation) %%%
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
15 %%% Dissipationen uppbyggd av D4: %%%
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
16 %%% DI=D4*B*H*D4 %%%
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
17 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
18
320
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
19 BP = 8;
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
20 if(m<2*BP)
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
21 error(['Operator requires at least ' num2str(2*BP) ' grid points']);
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
22 end
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
23
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
24 % Norm
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
25 Hv = ones(m,1);
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
26 Hv(1:8) = [1498139/5080320, 1107307/725760, 20761/80640, 1304999/725760, 299527/725760, 103097/80640, 670091/725760, 5127739/5080320];
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
27 Hv(m-7:m) = rot90(Hv(1:8),2);
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
28 Hv = h*Hv;
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
29 H = spdiag(Hv, 0);
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
30 HI = spdiag(1./Hv, 0);
246
fe26791489e0 Added a bunch of new operators. Still non-functional.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31
fe26791489e0 Added a bunch of new operators. Still non-functional.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32
320
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
33 % Boundary operators
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
34 e_l = sparse(m,1);
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
35 e_l(1) = 1;
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
36 e_r = rot90(e_l, 2);
246
fe26791489e0 Added a bunch of new operators. Still non-functional.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
37
320
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
38 d1_l = sparse(m,1);
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
39 d1_l(1:6) = [-0.137e3/0.60e2 5 -5 0.10e2/0.3e1 -0.5e1/0.4e1 0.1e1/0.5e1;]/h;
326
b19e142fcae1 Fixed bug in setting of boundary derivative.
Jonatan Werpers <jonatan@werpers.com>
parents: 325
diff changeset
40 d1_r = -rot90(d1_l, 2);
316
203afa156f59 Collected boundary operators.
Jonatan Werpers <jonatan@werpers.com>
parents: 312
diff changeset
41
320
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
42 d2_l = sparse(m,1);
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
43 d2_l(1:6) = [0.15e2/0.4e1 -0.77e2/0.6e1 0.107e3/0.6e1 -13 0.61e2/0.12e2 -0.5e1/0.6e1;]/h^2;
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
44 d2_r = rot90(d2_l, 2);
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
45
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
46 d3_l = sparse(m,1);
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
47 d3_l(1:6) = [-0.17e2/0.4e1 0.71e2/0.4e1 -0.59e2/0.2e1 0.49e2/0.2e1 -0.41e2/0.4e1 0.7e1/0.4e1;]/h^3;
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
48 d3_r = -rot90(d3_l, 2);
316
203afa156f59 Collected boundary operators.
Jonatan Werpers <jonatan@werpers.com>
parents: 312
diff changeset
49
203afa156f59 Collected boundary operators.
Jonatan Werpers <jonatan@werpers.com>
parents: 312
diff changeset
50
320
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
51 % Fourth derivative, 1th order accurate at first 8 boundary points
246
fe26791489e0 Added a bunch of new operators. Still non-functional.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
52
320
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
53 stencil = [-0.41e2/0.7560e4, 0.1261e4/0.15120e5,-0.541e3/0.840e3,0.4369e4/0.1260e4,-0.1669e4/0.180e3,0.1529e4/0.120e3,-0.1669e4/0.180e3,0.4369e4/0.1260e4,-0.541e3/0.840e3, 0.1261e4/0.15120e5,-0.41e2/0.7560e4];
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
54 diags = -5:5;
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
55 M4 = stripeMatrix(stencil, diags, m);
246
fe26791489e0 Added a bunch of new operators. Still non-functional.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
56
320
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
57 M4_U = [
312
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
58 0.151705142321e12/0.29189160000e11 -0.25643455801727e14/0.1634592960000e13 0.286417898677e12/0.15135120000e11 -0.4038072020317e13/0.326918592000e12 0.96455968907e11/0.20432412000e11 -0.151076916769e12/0.181621440000e12 0.14511526363e11/0.408648240000e12 -0.196663079e9/0.33359040000e11;
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
59 -0.25643455801727e14/0.1634592960000e13 0.735383382473e12/0.14594580000e11 -0.5035391734409e13/0.77837760000e11 0.20392440917e11/0.467026560e9 -0.109540902413e12/0.6671808000e10 0.2488686539e10/0.884520000e9 -0.2798067539e10/0.33359040000e11 0.6433463591e10/0.408648240000e12;
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
60 0.286417898677e12/0.15135120000e11 -0.5035391734409e13/0.77837760000e11 0.145019791981e12/0.1621620000e10 -0.333577111061e12/0.5189184000e10 0.18928722391e11/0.778377600e9 -0.93081704557e11/0.25945920000e11 -0.372660319e9/0.3243240000e10 0.2861399869e10/0.544864320000e12;
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
61 -0.4038072020317e13/0.326918592000e12 0.20392440917e11/0.467026560e9 -0.333577111061e12/0.5189184000e10 0.59368471277e11/0.1167566400e10 -0.201168708569e12/0.9340531200e10 0.1492314487e10/0.432432000e9 0.1911896257e10/0.9340531200e10 0.24383341e8/0.2554051500e10;
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
62 0.96455968907e11/0.20432412000e11 -0.109540902413e12/0.6671808000e10 0.18928722391e11/0.778377600e9 -0.201168708569e12/0.9340531200e10 0.1451230301e10/0.106142400e9 -0.103548247007e12/0.15567552000e11 0.27808437809e11/0.11675664000e11 -0.36870830713e11/0.65383718400e11;
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
63 -0.151076916769e12/0.181621440000e12 0.2488686539e10/0.884520000e9 -0.93081704557e11/0.25945920000e11 0.1492314487e10/0.432432000e9 -0.103548247007e12/0.15567552000e11 0.1229498243e10/0.115830000e9 -0.32222519717e11/0.3706560000e10 0.470092704233e12/0.136216080000e12;
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
64 0.14511526363e11/0.408648240000e12 -0.2798067539e10/0.33359040000e11 -0.372660319e9/0.3243240000e10 0.1911896257e10/0.9340531200e10 0.27808437809e11/0.11675664000e11 -0.32222519717e11/0.3706560000e10 0.11547819313e11/0.912161250e9 -0.15187033999199e14/0.1634592960000e13;
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
65 -0.196663079e9/0.33359040000e11 0.6433463591e10/0.408648240000e12 0.2861399869e10/0.544864320000e12 0.24383341e8/0.2554051500e10 -0.36870830713e11/0.65383718400e11 0.470092704233e12/0.136216080000e12 -0.15187033999199e14/0.1634592960000e13 0.33832994693e11/0.2653560000e10;
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
66 ];
246
fe26791489e0 Added a bunch of new operators. Still non-functional.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
67
312
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
68 M4(1:8,1:8) = M4_U;
320
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
69 M4(m-7:m,m-7:m) = rot90(M4_U, 2);
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
70 M4 = 1/h^3*M4;
312
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
71
320
3955ccffb7c8 Cleaned d4_variable_8_min_boundary_points
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
72 D4=HI*(M4 - e_l*d3_l'+e_r*d3_r' + d1_l*d2_l'-d1_r*d2_r');
312
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
73 end