Mercurial > repos > public > sbplib
annotate +time/CdiffImplicit.m @ 379:ca73ee0623e5 feature/beams
Added an implicit central time stepping scheme.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Fri, 09 Dec 2016 16:03:30 +0100 |
parents | |
children | 280ae4dbf93b |
rev | line source |
---|---|
379
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
1 classdef CdiffImplicit < time.Timestepper |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
2 properties |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
3 A, B, C, G |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
4 AA, BB, CC |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
5 k |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
6 t |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
7 v, v_prev |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
8 n |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
9 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 % LU factorization |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 L,U,p,q |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 end |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
13 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 methods |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 % Solves |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
16 % A*u_tt + B*u + C*v_t = G(t) |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
17 % u(t0) = f1 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
18 % u_t(t0) = f2 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
19 % starting at time t0 with timestep k |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
20 function obj = CdiffImplicit(A, B, C, G, f1, f2, k, t0) |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
21 default_arg('A', []); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
22 default_arg('C', []); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
23 default_arg('G', []); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
24 default_arg('f1', 0); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
25 default_arg('f2', 0); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
26 default_arg('t0', 0); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
27 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
28 m = size(B,1); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
29 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
30 if isempty(A) |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
31 A = speye(m); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
32 end |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
33 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
34 if isempty(C) |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
35 C = sparse(m,m); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
36 end |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
37 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
38 if isempty(G) |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
39 G = @(t) sparse(m,m); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
40 end |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
41 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
42 if isempty(f1) |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
43 f1 = sparse(m,m); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
44 end |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
45 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
46 if isempty(f2) |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
47 f2 = sparse(m,m); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
48 end |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
49 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
50 obj.A = A; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
51 obj.B = B; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
52 obj.C = C; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
53 obj.G = G; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
54 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
55 AA = 1/k^2*A + 1/2*B + 1/(2*k)*C; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
56 BB = -2/k^2*A; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
57 CC = 1/k^2*A + 1/2*B - 1/(2*k)*C; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
58 % AA*v_next + BB*v + CC*v_prev == G(t_n) |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
59 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
60 obj.AA = AA; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
61 obj.BB = BB; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
62 obj.CC = CC; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
63 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
64 v_prev = f1; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
65 I = speye(m); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
66 v = (1/k^2*A)\((1/k^2*A - 1/2*B)*f1 + (1/k*I - 1/2*C)*f2 + 1/2*G(0)); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
67 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
68 if ~issparse(A) || ~issparse(B) || ~issparse(C) |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
69 error('LU factorization with full pivoting only works for sparse matrices.') |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
70 end |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
71 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
72 [L,U,p,q] = lu(AA,'vector'); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
73 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
74 obj.L = L; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
75 obj.U = U; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
76 obj.p = p; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
77 obj.q = q; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
78 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
79 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
80 obj.k = k; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
81 obj.t = t0+k; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
82 obj.n = 0; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
83 obj.v = v; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
84 obj.v_prev = v_prev; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
85 end |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
86 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
87 function [v,t] = getV(obj) |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
88 v = obj.v; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
89 t = obj.t; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
90 end |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
91 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
92 function [vt,t] = getVt(obj) |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
93 vt = (obj.v-obj.v_prev)/obj.k; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
94 t = obj.t; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
95 end |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
96 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
97 function obj = step(obj) |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
98 b = obj.G(obj.t) - obj.BB*obj.v - obj.CC*obj.v_prev; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
99 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
100 % Backslash |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
101 obj.v_prev = obj.v; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
102 obj.v = obj.AA\b; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
103 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
104 % % LU with column pivot |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
105 % y = obj.L\b(obj.p); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
106 % Qx = U\y; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
107 % v = Qx(q); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
108 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
109 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
110 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
111 obj.t = obj.t + obj.k; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
112 obj.n = obj.n + 1; |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
113 end |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
114 end |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
115 end |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
116 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
117 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
118 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
119 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
120 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
121 %%% Derivation |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
122 % syms A B C G |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
123 % syms n k |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
124 % syms f1 f2 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
125 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
126 % v = symfun(sym('v(n)'),n); |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
127 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
128 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
129 % d = A/k^2 * (v(n+1) - 2*v(n) +v(n-1)) + B/2*(v(n+1)+v(n-1)) + C/(2*k)*(v(n+1) - v(n-1)) == G |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
130 % ic1 = v(0) == f1 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
131 % ic2 = A/k*(v(1)-f1) + k/2*(B*f1 + C*f2 - G) - f2 == 0 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
132 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
133 % c = collect(d, [v(n) v(n-1) v(n+1)]) % (-(2*A)/k^2)*v(n) + (B/2 + A/k^2 - C/(2*k))*v(n - 1) + (B/2 + A/k^2 + C/(2*k))*v(n + 1) == G |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
134 % syms AA BB CC |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
135 % % AA = B/2 + A/k^2 + C/(2*k) |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
136 % % BB = -(2*A)/k^2 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
137 % % CC = B/2 + A/k^2 - C/(2*k) |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
138 % s = subs(c, [B/2 + A/k^2 + C/(2*k), -(2*A)/k^2, B/2 + A/k^2 - C/(2*k)], [AA, BB, CC]) |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
139 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
140 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
141 % ic2_a = collect(ic2, [v(1) f1 f2]) % (A/k)*v(1) + ((B*k)/2 - A/k)*f1 + ((C*k)/2 - 1)*f2 - (G*k)/2 == 0 |
ca73ee0623e5
Added an implicit central time stepping scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
142 |