Mercurial > repos > public > sbplib
annotate +scheme/Hypsyst3d.m @ 1031:2ef20d00b386 feature/advectionRV
For easier comparison, return both the first order and residual viscosity when evaluating the residual. Add the first order and residual viscosity to the state of the RungekuttaRV time steppers
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Thu, 17 Jan 2019 10:25:06 +0100 |
parents | 706d1c2b4199 |
children | 0652b34f9f27 |
rev | line source |
---|---|
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
1 classdef Hypsyst3d < scheme.Scheme |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
2 properties |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
3 m % Number of points in each direction, possibly a vector |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
4 n % Size of system |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
5 h % Grid spacing |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
6 x, y, z % Grid |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
7 X, Y, Z% Values of x and y for each grid point |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
8 Yx, Zx, Xy, Zy, Xz, Yz %Grid values for boundary surfaces |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
9 order % Order accuracy for the approximation |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
10 |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
11 D % non-stabalized scheme operator |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
12 A, B, C, E % Symbolic coefficient matrices |
350
5d5652fe826a
A commit before I try resolving the performance issues
Ylva Rydin <ylva.rydin@telia.com>
parents:
349
diff
changeset
|
13 Aevaluated,Bevaluated,Cevaluated, Eevaluated |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
14 |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
15 H % Discrete norm |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
16 Hx, Hy, Hz % Norms in the x, y and z directions |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
17 Hxi,Hyi, Hzi % Kroneckerd norms. 1'*Hx*v corresponds to integration in the x dir. |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
18 I_x,I_y, I_z, I_N |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
19 e_w, e_e, e_s, e_n, e_b, e_t |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
20 params % Parameters for the coeficient matrice |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
21 end |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
22 |
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
23 |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
24 methods |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
25 % Solving Hyperbolic systems on the form u_t=-Au_x-Bu_y-Cu_z-Eu |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
26 function obj = Hypsyst3d(m, lim, order, A, B,C, E, params,operator) |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
27 default_arg('E', []) |
355
69b078cf8072
Upwind doed not work in the non curve-linear case.
Ylva Rydin <ylva.rydin@telia.com>
parents:
354
diff
changeset
|
28 xlim = lim{1}; |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
29 ylim = lim{2}; |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
30 zlim = lim{3}; |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
31 |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
32 if length(m) == 1 |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
33 m = [m m m]; |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
34 end |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
35 |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
36 obj.A = A; |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
37 obj.B = B; |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
38 obj.C = C; |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
39 obj.E = E; |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
40 m_x = m(1); |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
41 m_y = m(2); |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
42 m_z = m(3); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
43 obj.params = params; |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
44 |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
45 switch operator |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
46 case 'upwind' |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
47 ops_x = sbp.D1Upwind(m_x,xlim,order); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
48 ops_y = sbp.D1Upwind(m_y,ylim,order); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
49 ops_z = sbp.D1Upwind(m_z,zlim,order); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
50 otherwise |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
51 ops_x = sbp.D2Standard(m_x,xlim,order); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
52 ops_y = sbp.D2Standard(m_y,ylim,order); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
53 ops_z = sbp.D2Standard(m_z,zlim,order); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
54 end |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
55 |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
56 obj.x = ops_x.x; |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
57 obj.y = ops_y.x; |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
58 obj.z = ops_z.x; |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
59 |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
60 obj.X = kr(obj.x,ones(m_y,1),ones(m_z,1)); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
61 obj.Y = kr(ones(m_x,1),obj.y,ones(m_z,1)); |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
62 obj.Z = kr(ones(m_x,1),ones(m_y,1),obj.z); |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
63 |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
64 obj.Yx = kr(obj.y,ones(m_z,1)); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
65 obj.Zx = kr(ones(m_y,1),obj.z); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
66 obj.Xy = kr(obj.x,ones(m_z,1)); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
67 obj.Zy = kr(ones(m_x,1),obj.z); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
68 obj.Xz = kr(obj.x,ones(m_y,1)); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
69 obj.Yz = kr(ones(m_z,1),obj.y); |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
70 |
350
5d5652fe826a
A commit before I try resolving the performance issues
Ylva Rydin <ylva.rydin@telia.com>
parents:
349
diff
changeset
|
71 obj.Aevaluated = obj.evaluateCoefficientMatrix(A, obj.X, obj.Y,obj.Z); |
5d5652fe826a
A commit before I try resolving the performance issues
Ylva Rydin <ylva.rydin@telia.com>
parents:
349
diff
changeset
|
72 obj.Bevaluated = obj.evaluateCoefficientMatrix(B, obj.X, obj.Y,obj.Z); |
5d5652fe826a
A commit before I try resolving the performance issues
Ylva Rydin <ylva.rydin@telia.com>
parents:
349
diff
changeset
|
73 obj.Cevaluated = obj.evaluateCoefficientMatrix(C, obj.X, obj.Y,obj.Z); |
5d5652fe826a
A commit before I try resolving the performance issues
Ylva Rydin <ylva.rydin@telia.com>
parents:
349
diff
changeset
|
74 obj.Eevaluated = obj.evaluateCoefficientMatrix(E, obj.X, obj.Y,obj.Z); |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
75 |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
76 obj.n = length(A(obj.params,0,0,0)); |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
77 |
355
69b078cf8072
Upwind doed not work in the non curve-linear case.
Ylva Rydin <ylva.rydin@telia.com>
parents:
354
diff
changeset
|
78 I_n = speye(obj.n); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
79 I_x = speye(m_x); |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
80 obj.I_x = I_x; |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
81 I_y = speye(m_y); |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
82 obj.I_y = I_y; |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
83 I_z = speye(m_z); |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
84 obj.I_z = I_z; |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
85 I_N = kr(I_n,I_x,I_y,I_z); |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
86 |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
87 obj.Hxi = kr(I_n, ops_x.HI, I_y,I_z); |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
88 obj.Hx = ops_x.H; |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
89 obj.Hyi = kr(I_n, I_x, ops_y.HI,I_z); |
355
69b078cf8072
Upwind doed not work in the non curve-linear case.
Ylva Rydin <ylva.rydin@telia.com>
parents:
354
diff
changeset
|
90 obj.Hy = ops_y.H; |
350
5d5652fe826a
A commit before I try resolving the performance issues
Ylva Rydin <ylva.rydin@telia.com>
parents:
349
diff
changeset
|
91 obj.Hzi = kr(I_n, I_x,I_y, ops_z.HI); |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
92 obj.Hz = ops_z.H; |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
93 |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
94 obj.e_w = kr(I_n, ops_x.e_l, I_y,I_z); |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
95 obj.e_e = kr(I_n, ops_x.e_r, I_y,I_z); |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
96 obj.e_s = kr(I_n, I_x, ops_y.e_l,I_z); |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
97 obj.e_n = kr(I_n, I_x, ops_y.e_r,I_z); |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
98 obj.e_b = kr(I_n, I_x, I_y, ops_z.e_l); |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
99 obj.e_t = kr(I_n, I_x, I_y, ops_z.e_r); |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
100 |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
101 obj.m = m; |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
102 obj.h = [ops_x.h ops_y.h ops_x.h]; |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
103 obj.order = order; |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
104 |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
105 switch operator |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
106 case 'upwind' |
368 | 107 alphaA = max(abs(eig(A(params,obj.x(end),obj.y(end),obj.z(end))))); |
108 alphaB = max(abs(eig(B(params,obj.x(end),obj.y(end),obj.z(end))))); | |
109 alphaC = max(abs(eig(C(params,obj.x(end),obj.y(end),obj.z(end))))); | |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
110 |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
111 Ap = (obj.Aevaluated+alphaA*I_N)/2; |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
112 Am = (obj.Aevaluated-alphaA*I_N)/2; |
355
69b078cf8072
Upwind doed not work in the non curve-linear case.
Ylva Rydin <ylva.rydin@telia.com>
parents:
354
diff
changeset
|
113 Dpx = kr(I_n, ops_x.Dp, I_y,I_z); |
69b078cf8072
Upwind doed not work in the non curve-linear case.
Ylva Rydin <ylva.rydin@telia.com>
parents:
354
diff
changeset
|
114 Dmx = kr(I_n, ops_x.Dm, I_y,I_z); |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
115 obj.D = -Am*Dpx; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
116 temp = Ap*Dmx; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
117 obj.D = obj.D-temp; |
355
69b078cf8072
Upwind doed not work in the non curve-linear case.
Ylva Rydin <ylva.rydin@telia.com>
parents:
354
diff
changeset
|
118 clear Ap Am Dpx Dmx |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
119 |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
120 Bp = (obj.Bevaluated+alphaB*I_N)/2; |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
121 Bm = (obj.Bevaluated-alphaB*I_N)/2; |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
122 Dpy = kr(I_n, I_x, ops_y.Dp,I_z); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
123 Dmy = kr(I_n, I_x, ops_y.Dm,I_z); |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
124 temp = Bm*Dpy; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
125 obj.D = obj.D-temp; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
126 temp = Bp*Dmy; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
127 obj.D = obj.D-temp; |
355
69b078cf8072
Upwind doed not work in the non curve-linear case.
Ylva Rydin <ylva.rydin@telia.com>
parents:
354
diff
changeset
|
128 clear Bp Bm Dpy Dmy |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
129 |
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
130 |
355
69b078cf8072
Upwind doed not work in the non curve-linear case.
Ylva Rydin <ylva.rydin@telia.com>
parents:
354
diff
changeset
|
131 Cp = (obj.Cevaluated+alphaC*I_N)/2; |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
132 Cm = (obj.Cevaluated-alphaC*I_N)/2; |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
133 Dpz = kr(I_n, I_x, I_y,ops_z.Dp); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
134 Dmz = kr(I_n, I_x, I_y,ops_z.Dm); |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
135 |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
136 temp = Cm*Dpz; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
137 obj.D = obj.D-temp; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
138 temp = Cp*Dmz; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
139 obj.D = obj.D-temp; |
355
69b078cf8072
Upwind doed not work in the non curve-linear case.
Ylva Rydin <ylva.rydin@telia.com>
parents:
354
diff
changeset
|
140 clear Cp Cm Dpz Dmz |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
141 obj.D = obj.D-obj.Eevaluated; |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
142 |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
143 case 'standard' |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
144 D1_x = kr(I_n, ops_x.D1, I_y,I_z); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
145 D1_y = kr(I_n, I_x, ops_y.D1,I_z); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
146 D1_z = kr(I_n, I_x, I_y,ops_z.D1); |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
147 obj.D = -obj.Aevaluated*D1_x-obj.Bevaluated*D1_y-obj.Cevaluated*D1_z-obj.Eevaluated; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
148 otherwise |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
149 error('Opperator not supported'); |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
150 end |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
151 end |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
152 |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
153 % Closure functions return the opertors applied to the own doamin to close the boundary |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
154 % Penalty functions return the opertors to force the solution. In the case of an interface it returns the operator applied to the other doamin. |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
155 % boundary is a string specifying the boundary e.g. 'l','r' or 'e','w','n','s'. |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
156 % type is a string specifying the type of boundary condition if there are several. |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
157 % data is a function returning the data that should be applied at the boundary. |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
158 function [closure, penalty] = boundary_condition(obj,boundary,type,L) |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
159 default_arg('type','char'); |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
160 BM = boundary_matrices(obj,boundary); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
161 switch type |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
162 case{'c','char'} |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
163 [closure,penalty] = boundary_condition_char(obj,BM); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
164 case{'general'} |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
165 [closure,penalty] = boundary_condition_general(obj,BM,boundary,L); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
166 otherwise |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
167 error('No such boundary condition') |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
168 end |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
169 end |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
170 |
946
706d1c2b4199
Raname opts to type in a bunch of interface methods
Jonatan Werpers <jonatan@werpers.com>
parents:
910
diff
changeset
|
171 function [closure, penalty] = interface(obj, boundary, neighbour_scheme, neighbour_boundary, type) |
706d1c2b4199
Raname opts to type in a bunch of interface methods
Jonatan Werpers <jonatan@werpers.com>
parents:
910
diff
changeset
|
172 error('Not implemented'); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
173 end |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
174 |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
175 function N = size(obj) |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
176 N = obj.m; |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
177 end |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
178 |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
179 function [ret] = evaluateCoefficientMatrix(obj, mat, X, Y, Z) |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
180 params = obj.params; |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
181 side = max(length(X),length(Y)); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
182 if isa(mat,'function_handle') |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
183 [rows,cols] = size(mat(params,0,0,0)); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
184 matVec = mat(params,X',Y',Z'); |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
185 matVec = sparse(matVec); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
186 else |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
187 matVec = mat; |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
188 [rows,cols] = size(matVec); |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
189 side = max(length(X),length(Y)); |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
190 cols = cols/side; |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
191 end |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
192 |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
193 ret = cell(rows,cols); |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
194 for ii = 1:rows |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
195 for jj = 1:cols |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
196 ret{ii,jj} = diag(matVec(ii,(jj-1)*side+1:jj*side)); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
197 end |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
198 end |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
199 ret = cell2mat(ret); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
200 end |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
201 |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
202 function [BM] = boundary_matrices(obj,boundary) |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
203 params = obj.params; |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
204 |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
205 switch boundary |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
206 case {'w','W','west'} |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
207 BM.e_ = obj.e_w; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
208 mat = obj.A; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
209 BM.boundpos = 'l'; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
210 BM.Hi = obj.Hxi; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
211 [BM.V,BM.Vi,BM.D,signVec] = obj.matrixDiag(mat,obj.X(1),obj.Yx,obj.Zx); |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
212 BM.side = length(obj.Yx); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
213 case {'e','E','east'} |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
214 BM.e_ = obj.e_e; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
215 mat = obj.A; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
216 BM.boundpos = 'r'; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
217 BM.Hi = obj.Hxi; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
218 [BM.V,BM.Vi,BM.D,signVec] = obj.matrixDiag(mat,obj.X(end),obj.Yx,obj.Zx); |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
219 BM.side = length(obj.Yx); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
220 case {'s','S','south'} |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
221 BM.e_ = obj.e_s; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
222 mat = obj.B; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
223 BM.boundpos = 'l'; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
224 BM.Hi = obj.Hyi; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
225 [BM.V,BM.Vi,BM.D,signVec] = obj.matrixDiag(mat,obj.Xy,obj.Y(1),obj.Zy); |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
226 BM.side = length(obj.Xy); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
227 case {'n','N','north'} |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
228 BM.e_ = obj.e_n; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
229 mat = obj.B; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
230 BM.boundpos = 'r'; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
231 BM.Hi = obj.Hyi; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
232 [BM.V,BM.Vi,BM.D,signVec] = obj.matrixDiag(mat,obj.Xy,obj.Y(end),obj.Zy); |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
233 BM.side = length(obj.Xy); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
234 case{'b','B','Bottom'} |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
235 BM.e_ = obj.e_b; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
236 mat = obj.C; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
237 BM.boundpos = 'l'; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
238 BM.Hi = obj.Hzi; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
239 [BM.V,BM.Vi,BM.D,signVec] = obj.matrixDiag(mat,obj.Xz,obj.Yz,obj.Z(1)); |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
240 BM.side = length(obj.Xz); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
241 case{'t','T','Top'} |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
242 BM.e_ = obj.e_t; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
243 mat = obj.C; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
244 BM.boundpos = 'r'; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
245 BM.Hi = obj.Hzi; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
246 [BM.V,BM.Vi,BM.D,signVec] = obj.matrixDiag(mat,obj.Xz,obj.Yz,obj.Z(end)); |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
247 BM.side = length(obj.Xz); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
248 end |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
249 BM.pos = signVec(1); BM.zeroval=signVec(2); BM.neg=signVec(3); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
250 end |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
251 |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
252 % Characteristic bouyndary consitions |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
253 function [closure, penalty]=boundary_condition_char(obj,BM) |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
254 side = BM.side; |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
255 pos = BM.pos; |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
256 neg = BM.neg; |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
257 zeroval=BM.zeroval; |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
258 V = BM.V; |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
259 Vi = BM.Vi; |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
260 Hi = BM.Hi; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
261 D = BM.D; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
262 e_ = BM.e_; |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
263 |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
264 switch BM.boundpos |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
265 case {'l'} |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
266 tau = sparse(obj.n*side,pos); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
267 Vi_plus = Vi(1:pos,:); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
268 tau(1:pos,:) = -abs(D(1:pos,1:pos)); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
269 closure = Hi*e_*V*tau*Vi_plus*e_'; |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
270 penalty = -Hi*e_*V*tau*Vi_plus; |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
271 case {'r'} |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
272 tau = sparse(obj.n*side,neg); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
273 tau((pos+zeroval)+1:obj.n*side,:) = -abs(D((pos+zeroval)+1:obj.n*side,(pos+zeroval)+1:obj.n*side)); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
274 Vi_minus = Vi((pos+zeroval)+1:obj.n*side,:); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
275 closure = Hi*e_*V*tau*Vi_minus*e_'; |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
276 penalty = -Hi*e_*V*tau*Vi_minus; |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
277 end |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
278 end |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
279 |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
280 % General boundary condition in the form Lu=g(x) |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
281 function [closure,penalty] = boundary_condition_general(obj,BM,boundary,L) |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
282 side = BM.side; |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
283 pos = BM.pos; |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
284 neg = BM.neg; |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
285 zeroval=BM.zeroval; |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
286 V = BM.V; |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
287 Vi = BM.Vi; |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
288 Hi = BM.Hi; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
289 D = BM.D; |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
290 e_ = BM.e_; |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
291 |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
292 switch boundary |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
293 case {'w','W','west'} |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
294 L = obj.evaluateCoefficientMatrix(L,obj.x(1),obj.Yx,obj.Zx); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
295 case {'e','E','east'} |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
296 L = obj.evaluateCoefficientMatrix(L,obj.x(end),obj.Yx,obj.Zx); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
297 case {'s','S','south'} |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
298 L = obj.evaluateCoefficientMatrix(L,obj.Xy,obj.y(1),obj.Zy); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
299 case {'n','N','north'} |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
300 L = obj.evaluateCoefficientMatrix(L,obj.Xy,obj.y(end),obj.Zy);% General boundary condition in the form Lu=g(x) |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
301 case {'b','B','bottom'} |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
302 L = obj.evaluateCoefficientMatrix(L,obj.Xz,obj.Yz,obj.z(1)); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
303 case {'t','T','top'} |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
304 L = obj.evaluateCoefficientMatrix(L,obj.Xz,obj.Yz,obj.z(end)); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
305 end |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
306 |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
307 switch BM.boundpos |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
308 case {'l'} |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
309 tau = sparse(obj.n*side,pos); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
310 Vi_plus = Vi(1:pos,:); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
311 Vi_minus = Vi(pos+zeroval+1:obj.n*side,:); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
312 V_plus = V(:,1:pos); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
313 V_minus = V(:,(pos+zeroval)+1:obj.n*side); |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
314 |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
315 tau(1:pos,:) = -abs(D(1:pos,1:pos)); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
316 R = -inv(L*V_plus)*(L*V_minus); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
317 closure = Hi*e_*V*tau*(Vi_plus-R*Vi_minus)*e_'; |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
318 penalty = -Hi*e_*V*tau*inv(L*V_plus)*L; |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
319 case {'r'} |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
320 tau = sparse(obj.n*side,neg); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
321 tau((pos+zeroval)+1:obj.n*side,:) = -abs(D((pos+zeroval)+1:obj.n*side,(pos+zeroval)+1:obj.n*side)); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
322 Vi_plus = Vi(1:pos,:); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
323 Vi_minus = Vi((pos+zeroval)+1:obj.n*side,:); |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
324 |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
325 V_plus = V(:,1:pos); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
326 V_minus = V(:,(pos+zeroval)+1:obj.n*side); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
327 R = -inv(L*V_minus)*(L*V_plus); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
328 closure = Hi*e_*V*tau*(Vi_minus-R*Vi_plus)*e_'; |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
329 penalty = -Hi*e_*V*tau*inv(L*V_minus)*L; |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
330 end |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
331 end |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
332 |
369
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
333 % Function that diagonalizes a symbolic matrix A as A=V*D*Vi |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
334 % D is a diagonal matrix with the eigenvalues on A on the diagonal sorted by their sign |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
335 % [d+ ] |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
336 % D = [ d0 ] |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
337 % [ d-] |
9d1fc984f40d
Added some comments and cleaned up the code a little
Ylva Rydin <ylva.rydin@telia.com>
parents:
368
diff
changeset
|
338 % signVec is a vector specifying the number of possitive, zero and negative eigenvalues of D |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
339 function [V,Vi, D,signVec]=matrixDiag(obj,mat,x,y,z) |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
340 params = obj.params; |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
341 syms xs ys zs |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
342 [V, D] = eig(mat(params,xs,ys,zs)); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
343 Vi=inv(V); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
344 xs = x; |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
345 ys = y; |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
346 zs = z; |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
347 |
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
348 |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
349 side = max(length(x),length(y)); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
350 Dret = zeros(obj.n,side*obj.n); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
351 Vret = zeros(obj.n,side*obj.n); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
352 Viret= zeros(obj.n,side*obj.n); |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
353 |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
354 for ii=1:obj.n |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
355 for jj=1:obj.n |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
356 Dret(jj,(ii-1)*side+1:side*ii) = eval(D(jj,ii)); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
357 Vret(jj,(ii-1)*side+1:side*ii) = eval(V(jj,ii)); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
358 Viret(jj,(ii-1)*side+1:side*ii) = eval(Vi(jj,ii)); |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
359 end |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
360 end |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
361 |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
362 D = sparse(Dret); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
363 V = sparse(Vret); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
364 Vi = sparse(Viret); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
365 V = obj.evaluateCoefficientMatrix(V,x,y,z); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
366 Vi= obj.evaluateCoefficientMatrix(Vi,x,y,z); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
367 D = obj.evaluateCoefficientMatrix(D,x,y,z); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
368 DD = diag(D); |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
369 |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
370 poseig = (DD>0); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
371 zeroeig = (DD==0); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
372 negeig = (DD<0); |
905
459eeb99130f
Include type as (optional) input parameter in the interface method of all schemes.
Martin Almquist <malmquist@stanford.edu>
parents:
372
diff
changeset
|
373 |
354
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
374 D = diag([DD(poseig); DD(zeroeig); DD(negeig)]); |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
375 V = [V(:,poseig) V(:,zeroeig) V(:,negeig)]; |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
376 Vi= [Vi(poseig,:); Vi(zeroeig,:); Vi(negeig,:)]; |
dbac99d2c318
Removed inv(Vi) to save time
Ylva Rydin <ylva.rydin@telia.com>
parents:
352
diff
changeset
|
377 signVec = [sum(poseig),sum(zeroeig),sum(negeig)]; |
349
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
378 end |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
379 end |
cd6a29ab3746
A 3D is added and an attempt to imlement 3D transfinit interpolation has been initialized
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
380 end |