Mercurial > repos > public > sbplib
annotate +time/SBPInTime.m @ 365:f908ce064f35
Added SBP in time timestepper.
author | Martin Almquist <martin.almquist@it.uu.se> |
---|---|
date | Tue, 24 Jan 2017 14:01:18 +0100 |
parents | |
children | fccd746d8573 14f2be4fe9c1 |
rev | line source |
---|---|
365
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
1 classdef SBPInTime < time.Timestepper |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
2 % The SBP in time method. |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
3 % Implemented for v_t = A*v + f(t) |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
4 % k_local -- time-step |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
5 % Nblock -- number of points in each block |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
6 % nodes -- points such that t_n + nodes are the points in block n. |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
7 % Each "step" takes one block step and thus advances |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
8 % k = k_local*(Nblock-1) in time. |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
9 % M -- matrix used in every solve. |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
10 % [L,U,P,Q] = lu(M); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
11 properties |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
12 M |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
13 L |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
14 U |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
15 P |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
16 Q |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
17 A |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
18 Et_r |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
19 penalty |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
20 f |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
21 k_local |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
22 k |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
23 t |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
24 v |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
25 m |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
26 n |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
27 Nblock |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
28 order |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
29 nodes |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
30 end |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
31 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
32 methods |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
33 function obj = SBPInTime(A, f, k, order, Nblock, t0, v0, TYPE) |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
34 default_arg('TYPE','equidistant'); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
35 default_arg('Nblock',time.SBPInTime.smallestBlockSize(order,TYPE)); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
36 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
37 obj.A = A; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
38 obj.f = f; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
39 obj.k_local = k; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
40 obj.k = k*(Nblock-1); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
41 obj.Nblock = Nblock; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
42 obj.t = t0; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
43 obj.m = length(v0); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
44 obj.n = 0; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
45 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
46 %==== Build the time discretization matrix =====% |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
47 switch TYPE |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
48 case 'equidistant' |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
49 ops = sbp.D2Standard(Nblock,{0,obj.k},order); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
50 case 'optimal' |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
51 ops = sbp.D1Nonequidistant(Nblock,{0,obj.k},order); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
52 case 'minimal' |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
53 ops = sbp.D1Nonequidistant(Nblock,{0,obj.k},order,'minimal'); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
54 end |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
55 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
56 D1 = ops.D1; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
57 HI = ops.HI; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
58 e_l = ops.e_l; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
59 e_r = ops.e_r; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
60 obj.nodes = ops.x; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
61 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
62 Ix = speye(size(A)); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
63 It = speye(Nblock,Nblock); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
64 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
65 obj.Et_r = kron(e_r,Ix); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
66 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
67 % Time derivative + penalty |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
68 tau = 1; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
69 Mt = D1 + tau*HI*(e_l*e_l'); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
70 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
71 % penalty to impose "data" |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
72 penalty = tau*HI*e_l; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
73 obj.penalty = kron(penalty,Ix); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
74 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
75 Mx = kron(It,A); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
76 Mt = kron(Mt,Ix); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
77 obj.M = Mt - Mx; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
78 %==============================================% |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
79 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
80 % LU factorization |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
81 [obj.L,obj.U,obj.P,obj.Q] = lu(obj.M); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
82 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
83 % Pretend that the initial condition is the last level |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
84 % of a previous step. |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
85 obj.v = obj.Et_r * v0; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
86 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
87 end |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
88 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
89 function [v,t] = getV(obj) |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
90 v = obj.Et_r' * obj.v; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
91 t = obj.t; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
92 end |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
93 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
94 function obj = step(obj) |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
95 obj.v = time.sbp.sbpintime(obj.v, obj.t, obj.nodes,... |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
96 obj.penalty, obj.f, obj.Nblock,... |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
97 obj.Et_r,... |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
98 obj.L, obj.U, obj.P, obj.Q); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
99 obj.t = obj.t + obj.k; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
100 obj.n = obj.n + obj.Nblock-1; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
101 end |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
102 end |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
103 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
104 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
105 methods(Static) |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
106 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
107 % |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
108 function [k,numberOfBlocks] = alignedTimeStep(k,Tend,Nblock) |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
109 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
110 % input k is the desired time-step |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
111 % Nblock is the number of points per block. |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
112 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
113 % Make sure that we reach the final time by advancing |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
114 % an integer number of blocks |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
115 kblock = (Nblock-1)*k; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
116 numberOfBlocks = ceil(Tend/kblock); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
117 kblock = Tend/(numberOfBlocks); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
118 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
119 % Corrected time step |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
120 k = kblock/(Nblock-1); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
121 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
122 end |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
123 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
124 function N = smallestBlockSize(order,TYPE) |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
125 default_arg('TYPE','equidistant') |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
126 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
127 switch TYPE |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
128 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
129 case 'equidistant' |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
130 switch order |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
131 case 2 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
132 N = 2; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
133 case 4 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
134 N = 8; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
135 case 6 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
136 N = 12; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
137 case 8 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
138 N = 16; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
139 case 10 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
140 N = 20; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
141 case 12 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
142 N = 24; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
143 otherwise |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
144 error('Operator does not exist'); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
145 end |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
146 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
147 case 'optimal' |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
148 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
149 switch order |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
150 case 4 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
151 N = 8; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
152 case 6 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
153 N = 12; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
154 case 8 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
155 N = 16; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
156 case 10 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
157 N = 20; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
158 case 12 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
159 N = 24; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
160 otherwise |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
161 error('Operator does not exist'); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
162 end |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
163 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
164 case 'minimal' |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
165 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
166 switch order |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
167 case 4 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
168 N = 6; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
169 case 6 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
170 N = 10; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
171 case 8 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
172 N = 12; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
173 case 10 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
174 N = 16; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
175 case 12 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
176 N = 20; |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
177 otherwise |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
178 error('Operator does not exist'); |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
179 end |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
180 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
181 end |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
182 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
183 end |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
184 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
185 end |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
186 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
187 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
188 |
f908ce064f35
Added SBP in time timestepper.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
189 end |