comparison +scheme/Schrodinger2dCurve.m @ 492:6b95a894cbd7 feature/quantumTriangles

fixed a bug in the metric coefficients but something is wrong at the boundaries
author Ylva Rydin <ylva.rydin@telia.com>
date Wed, 15 Feb 2017 11:21:04 +0100
parents 26125cfefe11
children 6b8297f66c91
comparison
equal deleted inserted replaced
491:26125cfefe11 492:6b95a894cbd7
17 Hi_u, Hi_v 17 Hi_u, Hi_v
18 Hiu, Hiv 18 Hiu, Hiv
19 D1_v, D1_u 19 D1_v, D1_u
20 D2_v, D2_u 20 D2_v, D2_u
21 Du, Dv 21 Du, Dv
22 22 x,y
23 23
24 e_w, e_e, e_s, e_n 24 e_w, e_e, e_s, e_n
25 du_w, dv_w 25 du_w, dv_w
26 du_e, dv_e 26 du_e, dv_e
27 du_s, dv_s 27 du_s, dv_s
123 lcoords=points(obj.grid); 123 lcoords=points(obj.grid);
124 [obj.xm,obj.ym]= ti.map(lcoords(1:obj.m_v:end,1),lcoords(1:obj.m_u,2)); 124 [obj.xm,obj.ym]= ti.map(lcoords(1:obj.m_v:end,1),lcoords(1:obj.m_u,2));
125 [x_tau,y_tau]= ti_tau.map(lcoords(1:obj.m_v:end,1),lcoords(1:obj.m_u,2)); 125 [x_tau,y_tau]= ti_tau.map(lcoords(1:obj.m_v:end,1),lcoords(1:obj.m_u,2));
126 x = reshape(obj.xm,obj.m_tot,1); 126 x = reshape(obj.xm,obj.m_tot,1);
127 y = reshape(obj.ym,obj.m_tot,1); 127 y = reshape(obj.ym,obj.m_tot,1);
128 obj.x=x;
129 obj.y=y;
128 130
129 x_tau = reshape(x_tau,obj.m_tot,1); 131 x_tau = reshape(x_tau,obj.m_tot,1);
130 y_tau = reshape(y_tau,obj.m_tot,1); 132 y_tau = reshape(y_tau,obj.m_tot,1);
131 133
132 x_u = obj.Du*x; 134 x_u = obj.Du*x;
165 Dvv(p,p) = D; 167 Dvv(p,p) = D;
166 end 168 end
167 169
168 Ji = spdiags(1./J, 0, obj.m_tot, obj.m_tot); 170 Ji = spdiags(1./J, 0, obj.m_tot, obj.m_tot);
169 obj.Ji=Ji; 171 obj.Ji=Ji;
170 obj.g_1 = x_tau.*y_v-y_tau.*x_v; 172 obj.g_1 = x_v.*y_tau-x_tau.*y_v;
171 obj.g_2 = -x_tau.*y_u + y_tau.*x_u; 173 obj.g_2 = x_tau.*y_u - y_tau.*x_u;
174
175 b1 = spdiags(obj.g_1, 0, obj.m_tot, obj.m_tot);
176 b2 = spdiags(obj.g_2, 0, obj.m_tot, obj.m_tot);
177
178 b1_u = spdiags(obj.Du*obj.g_1, 0, obj.m_tot, obj.m_tot);
179 b2_v = spdiags(obj.Dv*obj.g_2, 0, obj.m_tot, obj.m_tot);
172 180
173 %Add the flux splitting 181 %Add the flux splitting
174 D = Ji*(obj.g_1.*obj.Du + obj.g_2.*obj.Dv + 1i*obj.c^2*(Duu + Duv + Dvu + Dvv)); %% g_1' och g_2'? 182 % D = Ji*(-b1*obj.Du -b2*obj.Dv + 1i*obj.c^2*(Duu + Duv + Dvu + Dvv));
183 D = Ji*(-1/2*(b1*obj.Du-b1_u+obj.Du*b1) - 1/2*(b2*obj.Dv - b2_v +obj.Dv*b2) + 1i*obj.c^2*(Duu + Duv + Dvu + Dvv));
175 184
176 % obj.gamm_u = h_u*ops_u.borrowing.M.d1; 185 % obj.gamm_u = h_u*ops_u.borrowing.M.d1;
177 % obj.gamm_v = h_v*ops_v.borrowing.M.d1; 186 % obj.gamm_v = h_v*ops_v.borrowing.M.d1;
178 187
179 end 188 end
192 F = (s * d_n' + s * a_t*d_t')'; 201 F = (s * d_n' + s * a_t*d_t')';
193 tau1 = 1; 202 tau1 = 1;
194 a = spdiag(g); 203 a = spdiag(g);
195 tau2 = (-1*s*a - abs(a))/4; 204 tau2 = (-1*s*a - abs(a))/4;
196 205
197 penalty_parameter_1 = 1*1i*halfnorm_inv_n*halfnorm_inv_t*e*F'*halfnorm_t*e; 206 penalty_parameter_1 = 1*1i*halfnorm_inv_n*halfnorm_inv_t*F*e'*halfnorm_t*e;
198 penalty_parameter_2 = halfnorm_inv_n*e*tau2; 207 penalty_parameter_2 = halfnorm_inv_n*e*tau2;
199 208
200 closure = obj.Ji*obj.c^2 * penalty_parameter_1*e' +obj.Ji* penalty_parameter_2*e'; 209 closure = obj.Ji*obj.c^2 * penalty_parameter_1*e' + obj.Ji* penalty_parameter_2*e';
201 % penalty = -obj.Ji*obj.c^2 * penalty_parameter_2; 210 penalty = -obj.Ji*obj.c^2 * penalty_parameter_1*e'+ obj.Ji*penalty_parameter_2*e';
202 penalty=0;
203 211
204 end 212 end
205 213
206 function [closure, penalty] = interface(obj,boundary,neighbour_scheme,neighbour_boundary) 214 function [closure, penalty] = interface(obj,boundary,neighbour_scheme,neighbour_boundary)
207 end 215 end