Mercurial > repos > public > sbplib
comparison +time/SBPInTimeScaled.m @ 1113:47e86b5270ad feature/timesteppers
Change name of property k to dt in time.Timestepper
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 10 Apr 2019 22:40:55 +0200 |
parents | e95a0f2f7a8d |
children |
comparison
equal
deleted
inserted
replaced
1112:835c8fa456ec | 1113:47e86b5270ad |
---|---|
5 % M*u_next= K*u_prev_end + f | 5 % M*u_next= K*u_prev_end + f |
6 properties | 6 properties |
7 A,B | 7 A,B |
8 f | 8 f |
9 | 9 |
10 k % total time step. | 10 dt % total time step. |
11 | 11 |
12 blockSize % number of points in each block | 12 blockSize % number of points in each block |
13 N % Number of components | 13 N % Number of components |
14 | 14 |
15 order | 15 order |
27 vtilde | 27 vtilde |
28 n | 28 n |
29 end | 29 end |
30 | 30 |
31 methods | 31 methods |
32 function obj = SBPInTimeScaled(A, B, f, k, t0, v0, scaling, TYPE, order, blockSize) | 32 function obj = SBPInTimeScaled(A, B, f, dt, t0, v0, scaling, TYPE, order, blockSize) |
33 default_arg('TYPE','gauss'); | 33 default_arg('TYPE','gauss'); |
34 default_arg('f',[]); | 34 default_arg('f',[]); |
35 | 35 |
36 if(strcmp(TYPE,'gauss')) | 36 if(strcmp(TYPE,'gauss')) |
37 default_arg('order',4) | 37 default_arg('order',4) |
49 obj.f = f; | 49 obj.f = f; |
50 else | 50 else |
51 obj.f = @(t)sparse(length(v0),1); | 51 obj.f = @(t)sparse(length(v0),1); |
52 end | 52 end |
53 | 53 |
54 obj.k = k; | 54 obj.dt = dt; |
55 obj.blockSize = blockSize; | 55 obj.blockSize = blockSize; |
56 obj.N = length(v0); | 56 obj.N = length(v0); |
57 | 57 |
58 obj.n = 0; | 58 obj.n = 0; |
59 obj.t = t0; | 59 obj.t = t0; |
60 | 60 |
61 %==== Build the time discretization matrix =====% | 61 %==== Build the time discretization matrix =====% |
62 switch TYPE | 62 switch TYPE |
63 case 'equidistant' | 63 case 'equidistant' |
64 ops = sbp.D2Standard(blockSize,{0,obj.k},order); | 64 ops = sbp.D2Standard(blockSize,{0,obj.dt},order); |
65 case 'optimal' | 65 case 'optimal' |
66 ops = sbp.D1Nonequidistant(blockSize,{0,obj.k},order); | 66 ops = sbp.D1Nonequidistant(blockSize,{0,obj.dt},order); |
67 case 'minimal' | 67 case 'minimal' |
68 ops = sbp.D1Nonequidistant(blockSize,{0,obj.k},order,'minimal'); | 68 ops = sbp.D1Nonequidistant(blockSize,{0,obj.dt},order,'minimal'); |
69 case 'gauss' | 69 case 'gauss' |
70 ops = sbp.D1Gauss(blockSize,{0,obj.k}); | 70 ops = sbp.D1Gauss(blockSize,{0,obj.dt}); |
71 end | 71 end |
72 | 72 |
73 I = speye(size(A)); | 73 I = speye(size(A)); |
74 I_t = speye(blockSize,blockSize); | 74 I_t = speye(blockSize,blockSize); |
75 | 75 |
119 w = zeros(size(z)); | 119 w = zeros(size(z)); |
120 w(obj.q) = z; | 120 w(obj.q) = z; |
121 | 121 |
122 obj.vtilde = obj.e_T'*w; | 122 obj.vtilde = obj.e_T'*w; |
123 | 123 |
124 obj.t = obj.t + obj.k; | 124 obj.t = obj.t + obj.dt; |
125 obj.n = obj.n + 1; | 125 obj.n = obj.n + 1; |
126 end | 126 end |
127 end | 127 end |
128 | 128 |
129 methods(Static) | 129 methods(Static) |