Mercurial > repos > public > sbplib
annotate +sbp/+implementations/d1_upwind_8.m @ 1337:bf2554f1825d feature/D2_boundary_opt
Add periodic D1 and D2 operators for orders 8,10,12
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Fri, 13 May 2022 13:28:10 +0200 |
parents | f7ac3cd6eeaa |
children |
rev | line source |
---|---|
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
1 function [H, HI, Dp, Dm, e_1, e_m] = d1_upwind_8(m,h) |
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
|
2 |
bfa130b7abf6
Added error message for too few grid points to all implementation files.
Martin Almquist <martin.almquist@it.uu.se>
parents:
261
diff
changeset
|
3 BP = 8; |
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 |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
8 Hv=ones(m,1); |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
9 Hv(1:8) = [0.7489399e7/0.25401600e8; 0.5537831e7/0.3628800e7; 0.103373e6/0.403200e6; 0.261259e6/0.145152e6; 0.298231e6/0.725760e6; 0.515917e6/0.403200e6; 0.3349159e7/0.3628800e7; 0.25639991e8/0.25401600e8]; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
10 Hv(m-7:m)=rot90(Hv(1:8),2); |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
11 Hv=Hv*h; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
12 |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
13 H = spdiag(Hv,0); |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
14 HI = spdiag(1./Hv,0); |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
15 |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
16 q_diags = [-3 -2 -1 0 1 2 3 4 5]; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
17 q_stencil = [-1/168 +1/14 -1/2 -9/20 +5/4 -1/2 +1/6 -1/28 +1/280]; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
18 Qp = stripeMatrix(q_stencil, q_diags,m); |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
19 |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
20 |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
21 Q_U =[ |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
22 -0.16683e5/0.63018560e8 0.29345822969987e14/0.43354248537600e14 -0.2734625426591e13/0.40644608004000e14 -0.113480208109603e15/0.780376473676800e15 -0.830250230261e12/0.26012549122560e14 0.2500519492033e13/0.32515686403200e14 0.2235718279643e13/0.390188236838400e15 -0.388481888477e12/0.26543417472000e14; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
23 -0.29227665839987e14/0.43354248537600e14 -0.493793e6/0.63018560e8 0.8302717120817e13/0.26543417472000e14 0.3739408501537e13/0.9290196115200e13 0.2684481534461e13/0.13935294172800e14 -0.4450185662513e13/0.18580392230400e14 -0.1221838279381e13/0.37160784460800e14 0.90595000956023e14/0.1950941184192000e16; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
24 0.2505689537591e13/0.40644608004000e14 -0.7312922392817e13/0.26543417472000e14 -0.69332623e8/0.1323389760e10 0.10994933811709e14/0.18580392230400e14 -0.9270952411151e13/0.18580392230400e14 0.3191238635141e13/0.20644880256000e14 0.4442211176987e13/0.92901961152000e14 -0.940661365031e12/0.32515686403200e14; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
25 0.118016946570403e15/0.780376473676800e15 -0.4173878828737e13/0.9290196115200e13 -0.7990503962509e13/0.18580392230400e14 -0.207799621e9/0.1323389760e10 0.2044021560341e13/0.2477385630720e13 0.511197701761e12/0.18580392230400e14 0.1237681717213e13/0.13935294172800e14 -0.7784834666617e13/0.130062745612800e15; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
26 0.68609076271e11/0.2364777192960e13 -0.2235651762161e13/0.13935294172800e14 0.6527681584751e13/0.18580392230400e14 -0.1115980068821e13/0.2477385630720e13 -0.55386253e8/0.189055680e9 0.3208334350649e13/0.3716078446080e13 -0.407569013461e12/0.844563283200e12 0.136474842626653e15/0.780376473676800e15; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
27 -0.2487637785013e13/0.32515686403200e14 0.4244231077313e13/0.18580392230400e14 -0.1550378843141e13/0.20644880256000e14 -0.5726967564961e13/0.18580392230400e14 -0.1017898941929e13/0.3716078446080e13 -0.526653889e9/0.1323389760e10 0.45241297077547e14/0.37160784460800e14 -0.2279608411897e13/0.5080576000500e13; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
28 -0.2164019088443e13/0.390188236838400e15 0.1263196075861e13/0.37160784460800e14 -0.6600697610987e13/0.92901961152000e14 0.556610591687e12/0.13935294172800e14 0.926842346471e12/0.9290196115200e13 -0.18757693936747e14/0.37160784460800e14 -0.584765899e9/0.1323389760e10 0.204646287449e12/0.168431424000e12; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
29 0.387091928477e12/0.26543417472000e14 -0.90231551688023e14/0.1950941184192000e16 0.1032404418251e13/0.32515686403200e14 0.3502353445417e13/0.130062745612800e15 -0.15385068876253e14/0.780376473676800e15 0.262499068919e12/0.10161152001000e14 -0.867004691939e12/0.1852745664000e13 -0.85017967e8/0.189055680e9; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
30 ]; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
31 |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
32 Qp(1:8,1:8)=Q_U; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
33 Qp(m-7:m,m-7:m)=rot90(Q_U,2)'; %%% This is different from standard SBP |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
34 |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
35 Qm=-Qp'; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
36 |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
37 e_1=sparse(m,1);e_1(1)=1; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
38 e_m=sparse(m,1);e_m(m)=1; |
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
39 |
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
|
40 Dp=HI*(Qp-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ; |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
41 |
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
|
42 Dm=HI*(Qm-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ; |
261
6009f2712d13
Moved and renamned all implementations.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
43 end |