comparison +scheme/Hypsyst3d.m @ 355:69b078cf8072 feature/hypsyst

Upwind doed not work in the non curve-linear case.
author Ylva Rydin <ylva.rydin@telia.com>
date Thu, 08 Dec 2016 10:42:11 +0100
parents dbac99d2c318
children 9567a9dd220d
comparison
equal deleted inserted replaced
354:dbac99d2c318 355:69b078cf8072
24 24
25 methods 25 methods
26 function obj = Hypsyst3d(m, lim, order, A, B,C, E, params,operator) 26 function obj = Hypsyst3d(m, lim, order, A, B,C, E, params,operator)
27 default_arg('E', []) 27 default_arg('E', [])
28 default_arg('operatpr',[]) 28 default_arg('operatpr',[])
29 xlim = lim{1}; 29 xlim = lim{1};
30 ylim = lim{2}; 30 ylim = lim{2};
31 zlim = lim{3}; 31 zlim = lim{3};
32 32
33 if length(m) == 1 33 if length(m) == 1
34 m = [m m m]; 34 m = [m m m];
76 obj.Cevaluated = obj.evaluateCoefficientMatrix(C, obj.X, obj.Y,obj.Z); 76 obj.Cevaluated = obj.evaluateCoefficientMatrix(C, obj.X, obj.Y,obj.Z);
77 obj.Eevaluated = obj.evaluateCoefficientMatrix(E, obj.X, obj.Y,obj.Z); 77 obj.Eevaluated = obj.evaluateCoefficientMatrix(E, obj.X, obj.Y,obj.Z);
78 78
79 obj.n = length(A(obj.params,0,0,0)); 79 obj.n = length(A(obj.params,0,0,0));
80 80
81 I_n = eye(obj.n); 81 I_n = speye(obj.n);
82 I_x = speye(m_x); 82 I_x = speye(m_x);
83 obj.I_x = I_x; 83 obj.I_x = I_x;
84 I_y = speye(m_y); 84 I_y = speye(m_y);
85 obj.I_y = I_y; 85 obj.I_y = I_y;
86 I_z = speye(m_z); 86 I_z = speye(m_z);
88 I_N=kr(I_n,I_x,I_y,I_z); 88 I_N=kr(I_n,I_x,I_y,I_z);
89 89
90 obj.Hxi = kr(I_n, ops_x.HI, I_y,I_z); 90 obj.Hxi = kr(I_n, ops_x.HI, I_y,I_z);
91 obj.Hx = ops_x.H; 91 obj.Hx = ops_x.H;
92 obj.Hyi = kr(I_n, I_x, ops_y.HI,I_z); 92 obj.Hyi = kr(I_n, I_x, ops_y.HI,I_z);
93 obj.Hy = ops_y.H 93 obj.Hy = ops_y.H;
94 obj.Hzi = kr(I_n, I_x,I_y, ops_z.HI); 94 obj.Hzi = kr(I_n, I_x,I_y, ops_z.HI);
95 obj.Hz = ops_z.H; 95 obj.Hz = ops_z.H;
96 96
97 obj.e_w = kr(I_n, ops_x.e_l, I_y,I_z); 97 obj.e_w = kr(I_n, ops_x.e_l, I_y,I_z);
98 obj.e_e = kr(I_n, ops_x.e_r, I_y,I_z); 98 obj.e_e = kr(I_n, ops_x.e_r, I_y,I_z);
111 alphaB = max(eig(B(params,obj.x(end),obj.y(end),obj.z(end)))); 111 alphaB = max(eig(B(params,obj.x(end),obj.y(end),obj.z(end))));
112 alphaC = max(eig(C(params,obj.x(end),obj.y(end),obj.z(end)))); 112 alphaC = max(eig(C(params,obj.x(end),obj.y(end),obj.z(end))));
113 113
114 Ap = (obj.Aevaluated+alphaA*I_N)/2; 114 Ap = (obj.Aevaluated+alphaA*I_N)/2;
115 Am = (obj.Aevaluated-alphaA*I_N)/2; 115 Am = (obj.Aevaluated-alphaA*I_N)/2;
116 Dpx = kr(I_n, ops_x.Dp, I_y,I_z);
117 Dmx = kr(I_n, ops_x.Dm, I_y,I_z);
118 obj.D=-Am*Dpx;
119 temp=Ap*Dmx;
120 obj.D=obj.D-temp;
121 clear Ap Am Dpx Dmx
122
116 Bp = (obj.Bevaluated+alphaB*I_N)/2; 123 Bp = (obj.Bevaluated+alphaB*I_N)/2;
117 Bm = (obj.Bevaluated-alphaB*I_N)/2; 124 Bm = (obj.Bevaluated-alphaB*I_N)/2;
118 Cp = (obj.Cevaluated+alphaC*I_N)/2;
119 Cm = (obj.Cevaluated-alphaC*I_N)/2;
120
121 Dpx = kr(I_n, ops_x.Dp, I_y,I_z);
122 Dmx = kr(I_n, ops_x.Dm, I_y,I_z);
123 Dpy = kr(I_n, I_x, ops_y.Dp,I_z); 125 Dpy = kr(I_n, I_x, ops_y.Dp,I_z);
124 Dmy = kr(I_n, I_x, ops_y.Dm,I_z); 126 Dmy = kr(I_n, I_x, ops_y.Dm,I_z);
127 temp=Bm*Dpy;
128 obj.D=obj.D-temp;
129 temp=Bp*Dmy;
130 obj.D=obj.D-temp;
131 clear Bp Bm Dpy Dmy
132
133
134 Cp = (obj.Cevaluated+alphaC*I_N)/2;
135 Cm = (obj.Cevaluated-alphaC*I_N)/2;
125 Dpz = kr(I_n, I_x, I_y,ops_z.Dp); 136 Dpz = kr(I_n, I_x, I_y,ops_z.Dp);
126 Dmz = kr(I_n, I_x, I_y,ops_z.Dm); 137 Dmz = kr(I_n, I_x, I_y,ops_z.Dm);
127 138
128 obj.D=-Am*Dpx-Ap*Dmx-Bm*Dpy-Bp*Dmy-Cm*Dpz-Cp*Dmz-obj.Eevaluated; 139 temp=Cm*Dpz;
140 obj.D=obj.D-temp;
141 temp=-Cp*Dmz;
142 obj.D=obj.D-temp;
143 clear Cp Cm Dpz Dmz
144
145 obj.D=obj.D-obj.Eevaluated;
146
129 otherwise 147 otherwise
130 D1_x = kr(I_n, ops_x.D1, I_y,I_z); 148 D1_x = kr(I_n, ops_x.D1, I_y,I_z);
131 D1_y = kr(I_n, I_x, ops_y.D1,I_z); 149 D1_y = kr(I_n, I_x, ops_y.D1,I_z);
132 D1_z = kr(I_n, I_x, I_y,ops_z.D1); 150 D1_z = kr(I_n, I_x, I_y,ops_z.D1);
133 obj.D=-obj.Aevaluated*D1_x-obj.Bevaluated*D1_y-obj.Cevaluated*D1_z-obj.Eevaluated; 151 obj.D=-obj.Aevaluated*D1_x-obj.Bevaluated*D1_y-obj.Cevaluated*D1_z-obj.Eevaluated;