Mercurial > repos > public > sbplib
comparison +time/SBPInTimeSecondOrderFormImplicit.m @ 744:94bd0f3293c8 feature/grids
SBPInTimeSecondOrderForm: Scale the system acording to C by default
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 28 Mar 2018 12:47:53 +0200 |
parents | d4b999585af1 |
children | f2f5efc3644f |
comparison
equal
deleted
inserted
replaced
723:87436a107d8a | 744:94bd0f3293c8 |
---|---|
12 | 12 |
13 methods | 13 methods |
14 % Solves A*u_tt + B*u_t + C*u = f(t) | 14 % Solves A*u_tt + B*u_t + C*u = f(t) |
15 % A, B can either both be constants or both be function handles, | 15 % A, B can either both be constants or both be function handles, |
16 % They can also be omitted by setting them equal to the empty matrix. | 16 % They can also be omitted by setting them equal to the empty matrix. |
17 function obj = SBPInTimeSecondOrderFormImplicit(A, B, C, f, k, t0, v0, v0t, TYPE, order, blockSize) | 17 function obj = SBPInTimeSecondOrderFormImplicit(A, B, C, f, k, t0, v0, v0t, do_scaling, TYPE, order, blockSize) |
18 default_arg('f', []); | 18 default_arg('f', []); |
19 default_arg('TYPE', []); | 19 default_arg('TYPE', []); |
20 default_arg('order', []); | 20 default_arg('order', []); |
21 default_arg('blockSize',[]); | 21 default_arg('blockSize',[]); |
22 default_arg('do_scaling', true); | |
22 | 23 |
23 m = length(v0); | 24 m = length(v0); |
24 | 25 |
25 default_arg('A', sparse(m, m)); | 26 default_arg('A', sparse(m, m)); |
26 default_arg('B', sparse(m, m)); | 27 default_arg('B', sparse(m, m)); |
54 | 55 |
55 obj.k = k; | 56 obj.k = k; |
56 obj.t = t0; | 57 obj.t = t0; |
57 obj.n = 0; | 58 obj.n = 0; |
58 | 59 |
59 obj.firstOrderTimeStepper = time.SBPInTimeImplicitFormulation(obj.AA, obj.BB, obj.ff, obj.k, obj.t, w0, TYPE, order, blockSize); | 60 if do_scaling |
61 scaling = [ones(m,1); sqrt(diag(C))]; | |
62 obj.firstOrderTimeStepper = time.SBPInTimeScaled(obj.AA, obj.BB, obj.ff, obj.k, obj.t, w0, scaling, TYPE, order, blockSize); | |
63 else | |
64 obj.firstOrderTimeStepper = time.SBPInTimeImplicitFormulation(obj.AA, obj.BB, obj.ff, obj.k, obj.t, w0, TYPE, order, blockSize); | |
65 end | |
60 end | 66 end |
61 | 67 |
62 function [v,t] = getV(obj) | 68 function [v,t] = getV(obj) |
63 w = obj.firstOrderTimeStepper.getV(); | 69 w = obj.firstOrderTimeStepper.getV(); |
64 v = w(1:end/2); | 70 v = w(1:end/2); |