Mercurial > repos > public > sbplib
annotate +sbp/higher4.m @ 87:0a29a60e0b21
In Curve: Rearranged for speed. arc_length_fun is now a property of Curve. If it is not supplied, it is computed via the derivative and spline fitting. Switching to the arc length parameterization is much faster now. The new stuff can be tested with testArcLength.m (which should be deleted after that).
author | Martin Almquist <martin.almquist@it.uu.se> |
---|---|
date | Sun, 29 Nov 2015 22:23:09 +0100 |
parents | 32b39dc44474 |
children |
rev | line source |
---|---|
29
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
1 function [H, HI, D1, D2, D3, D4, e_1, e_m, M, M4,Q, Q3, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = higher4(m,h) |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
2 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
3 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
5 %%% 4:de ordn. SBP Finita differens %%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
6 %%% operatorer framtagna av Ken Mattsson %%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
7 %%% %%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
8 %%% 6 randpunkter, diagonal norm %%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
9 %%% %%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 %%% Datum: 2013-11-11 %%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 %%% %%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 %%% %%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
13 %%% H (Normen) %%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 %%% D1 (approx f?rsta derivatan) %%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 %%% D2 (approx andra derivatan) %%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
16 %%% D3 (approx tredje derivatan) %%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
17 %%% D2 (approx fj?rde derivatan) %%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
18 %%% %%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
19 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
20 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
21 % M?ste ange antal punkter (m) och stegl?ngd (h) |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
22 % Notera att dessa opetratorer ?r framtagna f?r att anv?ndas n?r |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
23 % vi har 3de och 4de derivator i v?r PDE |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
24 % I annat fall anv?nd de "traditionella" som har noggrannare |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
25 % randsplutningar f?r D1 och D2 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
26 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
27 % Vi b?rjar med normen. Notera att alla SBP operatorer delar samma norm, |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
28 % vilket ?r n?dv?ndigt f?r stabilitet |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
29 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
30 H=diag(ones(m,1),0); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
31 H_U=[0.35809e5 / 0.100800e6 0 0 0 0 0; 0 0.13297e5 / 0.11200e5 0 0 0 0; 0 0 0.5701e4 / 0.5600e4 0 0 0; 0 0 0 0.45109e5 / 0.50400e5 0 0; 0 0 0 0 0.35191e5 / 0.33600e5 0; 0 0 0 0 0 0.33503e5 / 0.33600e5;]; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
32 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
33 H(1:6,1:6)=H_U; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
34 H(m-5:m,m-5:m)=fliplr(flipud(H_U)); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
35 H=H*h; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
36 HI=inv(H); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
37 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
38 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
39 % First derivative SBP operator, 1st order accurate at first 6 boundary points |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
40 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
41 q2=-1/12;q1=8/12; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
42 Q=q2*(diag(ones(m-2,1),2) - diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1)); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
43 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
44 %Q=(-1/12*diag(ones(m-2,1),2)+8/12*diag(ones(m-1,1),1)-8/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2)); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
45 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
46 Q_U = [0 0.526249e6 / 0.907200e6 -0.10819e5 / 0.777600e6 -0.50767e5 / 0.907200e6 -0.631e3 / 0.28800e5 0.91e2 / 0.7776e4; -0.526249e6 / 0.907200e6 0 0.1421209e7 / 0.2721600e7 0.16657e5 / 0.201600e6 -0.8467e4 / 0.453600e6 -0.33059e5 / 0.5443200e7; 0.10819e5 / 0.777600e6 -0.1421209e7 / 0.2721600e7 0 0.631187e6 / 0.1360800e7 0.400139e6 / 0.5443200e7 -0.8789e4 / 0.302400e6; 0.50767e5 / 0.907200e6 -0.16657e5 / 0.201600e6 -0.631187e6 / 0.1360800e7 0 0.496403e6 / 0.907200e6 -0.308533e6 / 0.5443200e7; 0.631e3 / 0.28800e5 0.8467e4 / 0.453600e6 -0.400139e6 / 0.5443200e7 -0.496403e6 / 0.907200e6 0 0.1805647e7 / 0.2721600e7; -0.91e2 / 0.7776e4 0.33059e5 / 0.5443200e7 0.8789e4 / 0.302400e6 0.308533e6 / 0.5443200e7 -0.1805647e7 / 0.2721600e7 0;]; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
47 Q(1:6,1:6)=Q_U; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
48 Q(m-5:m,m-5:m)=flipud( fliplr( -Q_U ) ); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
49 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
50 e_1=zeros(m,1);e_1(1)=1; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
51 e_m=zeros(m,1);e_m(m)=1; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
52 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
53 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
54 D1=HI*(Q-1/2*e_1*e_1'+1/2*e_m*e_m') ; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
55 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
56 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
57 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
58 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
59 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
60 % Second derivative, 1st order accurate at first 6 boundary points |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
61 m2=1/12;m1=-16/12;m0=30/12; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
62 M=m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
63 %M=(1/12*diag(ones(m-2,1),2)-16/12*diag(ones(m-1,1),1)-16/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2)+30/12*diag(ones(m,1),0)); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
64 M_U=[0.2386127e7 / 0.2177280e7 -0.515449e6 / 0.453600e6 -0.10781e5 / 0.777600e6 0.61567e5 / 0.1360800e7 0.6817e4 / 0.403200e6 -0.1069e4 / 0.136080e6; -0.515449e6 / 0.453600e6 0.4756039e7 / 0.2177280e7 -0.1270009e7 / 0.1360800e7 -0.3751e4 / 0.28800e5 0.3067e4 / 0.680400e6 0.119459e6 / 0.10886400e8; -0.10781e5 / 0.777600e6 -0.1270009e7 / 0.1360800e7 0.111623e6 / 0.60480e5 -0.555587e6 / 0.680400e6 -0.551339e6 / 0.5443200e7 0.8789e4 / 0.453600e6; 0.61567e5 / 0.1360800e7 -0.3751e4 / 0.28800e5 -0.555587e6 / 0.680400e6 0.1025327e7 / 0.544320e6 -0.464003e6 / 0.453600e6 0.222133e6 / 0.5443200e7; 0.6817e4 / 0.403200e6 0.3067e4 / 0.680400e6 -0.551339e6 / 0.5443200e7 -0.464003e6 / 0.453600e6 0.5074159e7 / 0.2177280e7 -0.1784047e7 / 0.1360800e7; -0.1069e4 / 0.136080e6 0.119459e6 / 0.10886400e8 0.8789e4 / 0.453600e6 0.222133e6 / 0.5443200e7 -0.1784047e7 / 0.1360800e7 0.1812749e7 / 0.725760e6;]; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
65 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
66 M(1:6,1:6)=M_U; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
67 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
68 M(m-5:m,m-5:m)=flipud( fliplr( M_U ) ); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
69 M=M/h; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
70 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
71 S_U=[-0.11e2 / 0.6e1 3 -0.3e1 / 0.2e1 0.1e1 / 0.3e1;]/h; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
72 S_1=zeros(1,m); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
73 S_1(1:4)=S_U; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
74 S_m=zeros(1,m); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
75 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
76 S_m(m-3:m)=fliplr(-S_U); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
77 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
78 D2=HI*(-M-e_1*S_1+e_m*S_m); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
79 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
80 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
81 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
82 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
83 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
84 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
85 % Third derivative, 1st order accurate at first 6 boundary points |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
86 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
87 q3=-1/8;q2=1;q1=-13/8; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
88 Q3=q3*(diag(ones(m-3,1),3)-diag(ones(m-3,1),-3))+q2*(diag(ones(m-2,1),2)-diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1)); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
89 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
90 %QQ3=(-1/8*diag(ones(m-3,1),3) + 1*diag(ones(m-2,1),2) - 13/8*diag(ones(m-1,1),1) +13/8*diag(ones(m-1,1),-1) -1*diag(ones(m-2,1),-2) + 1/8*diag(ones(m-3,1),-3)); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
91 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
92 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
93 Q3_U = [0 -0.88471e5 / 0.67200e5 0.58139e5 / 0.33600e5 -0.1167e4 / 0.2800e4 -0.89e2 / 0.11200e5 0.7e1 / 0.640e3; 0.88471e5 / 0.67200e5 0 -0.43723e5 / 0.16800e5 0.46783e5 / 0.33600e5 -0.191e3 / 0.3200e4 -0.1567e4 / 0.33600e5; -0.58139e5 / 0.33600e5 0.43723e5 / 0.16800e5 0 -0.4049e4 / 0.2400e4 0.29083e5 / 0.33600e5 -0.71e2 / 0.1400e4; 0.1167e4 / 0.2800e4 -0.46783e5 / 0.33600e5 0.4049e4 / 0.2400e4 0 -0.8591e4 / 0.5600e4 0.10613e5 / 0.11200e5; 0.89e2 / 0.11200e5 0.191e3 / 0.3200e4 -0.29083e5 / 0.33600e5 0.8591e4 / 0.5600e4 0 -0.108271e6 / 0.67200e5; -0.7e1 / 0.640e3 0.1567e4 / 0.33600e5 0.71e2 / 0.1400e4 -0.10613e5 / 0.11200e5 0.108271e6 / 0.67200e5 0;]; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
94 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
95 Q3(1:6,1:6)=Q3_U; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
96 Q3(m-5:m,m-5:m)=flipud( fliplr( -Q3_U ) ); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
97 Q3=Q3/h^2; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
98 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
99 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
100 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
101 S2_U=[2 -5 4 -1;]/h^2; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
102 S2_1=zeros(1,m); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
103 S2_1(1:4)=S2_U; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
104 S2_m=zeros(1,m); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
105 S2_m(m-3:m)=fliplr(S2_U); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
106 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
107 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
108 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
109 D3=HI*(Q3 - e_1*S2_1 + e_m*S2_m +1/2*S_1'*S_1 -1/2*S_m'*S_m ) ; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
110 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
111 % Fourth derivative, 0th order accurate at first 6 boundary points (still |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
112 % yield 4th order convergence if stable: for example u_tt=-u_xxxx |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
113 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
114 m3=-1/6;m2=2;m1=-13/2;m0=28/3; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
115 M4=m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
116 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
117 %M4=(-1/6*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3) ) + 2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2)) -13/2*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)) + 28/3*diag(ones(m,1),0)); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
118 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
119 M4_U=[0.4596181e7 / 0.1814400e7 -0.10307743e8 / 0.1814400e7 0.160961e6 / 0.43200e5 -0.535019e6 / 0.907200e6 0.109057e6 / 0.1814400e7 -0.29273e5 / 0.604800e6; -0.10307743e8 / 0.1814400e7 0.8368543e7 / 0.604800e6 -0.9558943e7 / 0.907200e6 0.2177057e7 / 0.907200e6 -0.11351e5 / 0.86400e5 0.204257e6 / 0.1814400e7; 0.160961e6 / 0.43200e5 -0.9558943e7 / 0.907200e6 0.4938581e7 / 0.453600e6 -0.786473e6 / 0.151200e6 0.1141057e7 / 0.907200e6 -0.120619e6 / 0.907200e6; -0.535019e6 / 0.907200e6 0.2177057e7 / 0.907200e6 -0.786473e6 / 0.151200e6 0.3146581e7 / 0.453600e6 -0.4614143e7 / 0.907200e6 0.24587e5 / 0.14400e5; 0.109057e6 / 0.1814400e7 -0.11351e5 / 0.86400e5 0.1141057e7 / 0.907200e6 -0.4614143e7 / 0.907200e6 0.185709e6 / 0.22400e5 -0.11293343e8 / 0.1814400e7; -0.29273e5 / 0.604800e6 0.204257e6 / 0.1814400e7 -0.120619e6 / 0.907200e6 0.24587e5 / 0.14400e5 -0.11293343e8 / 0.1814400e7 0.16787381e8 / 0.1814400e7;]; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
120 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
121 M4(1:6,1:6)=M4_U; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
122 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
123 M4(m-5:m,m-5:m)=flipud( fliplr( M4_U ) ); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
124 M4=M4/h^3; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
125 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
126 S3_U=[-1 3 -3 1;]/h^3; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
127 S3_1=zeros(1,m); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
128 S3_1(1:4)=S3_U; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
129 S3_m=zeros(1,m); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
130 S3_m(m-3:m)=fliplr(-S3_U); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
131 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
132 D4=HI*(M4-e_1*S3_1+e_m*S3_m + S_1'*S2_1-S_m'*S2_m); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
133 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
134 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
135 % L=h*(m-1); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
136 % |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
137 % x1=linspace(0,L,m)'; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
138 % x2=x1.^2/fac(2); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
139 % x3=x1.^3/fac(3); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
140 % x4=x1.^4/fac(4); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
141 % x5=x1.^5/fac(5); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
142 % |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
143 % x0=x1.^0/fac(1); |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
144 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
145 S_1 = S_1'; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
146 S2_1 = S2_1'; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
147 S3_1 = S3_1'; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
148 S_m = S_m'; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
149 S2_m = S2_m'; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
150 S3_m = S3_m'; |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
151 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
152 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
153 |
32b39dc44474
Removed repository inside +sbp to make it part of the root repo.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
154 end |