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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
53abf04f5e4e Made some small changes.
Ylva Rydin <ylva.rydin@telia.com>
parents: 356
diff changeset
107 alphaA = max(abs(eig(A(params,obj.x(end),obj.y(end),obj.z(end)))));
53abf04f5e4e Made some small changes.
Ylva Rydin <ylva.rydin@telia.com>
parents: 356
diff changeset
108 alphaB = max(abs(eig(B(params,obj.x(end),obj.y(end),obj.z(end)))));
53abf04f5e4e Made some small changes.
Ylva Rydin <ylva.rydin@telia.com>
parents: 356
diff changeset
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