comparison +scheme/Schrodinger2dCurve.m @ 694:1157375c678a feature/quantumTriangles

Add oposit jacobian to penalty term
author Ylva Rydin <ylva.rydin@telia.com>
date Tue, 19 Sep 2017 09:47:14 +0200
parents f235284e2eb1
children ba0d31ce4121
comparison
equal deleted inserted replaced
693:a5d4e3ced9a5 694:1157375c678a
98 obj.e_e = kr(e_r_u,I_v); 98 obj.e_e = kr(e_r_u,I_v);
99 obj.e_s = kr(I_u,e_l_v); 99 obj.e_s = kr(I_u,e_l_v);
100 obj.e_n = kr(I_u,e_r_v); 100 obj.e_n = kr(I_u,e_r_v);
101 obj.du_w = kr(d1_l_u,I_v); 101 obj.du_w = kr(d1_l_u,I_v);
102 obj.dv_w = (obj.e_w'*obj.Dv)'; 102 obj.dv_w = (obj.e_w'*obj.Dv)';
103 obj.du_e = kr(d1_r_u,I_v); 103 obj.du_e = kr(d1_r_u,I_v);
104 obj.dv_e = (obj.e_e'*obj.Dv)'; 104 obj.dv_e = (obj.e_e'*obj.Dv)';
105 obj.du_s = (obj.e_s'*obj.Du)'; 105 obj.du_s = (obj.e_s'*obj.Du)';
106 obj.dv_s = kr(I_u,d1_l_v); 106 obj.dv_s = kr(I_u,d1_l_v);
107 obj.du_n = (obj.e_n'*obj.Du)'; 107 obj.du_n = (obj.e_n'*obj.Du)';
108 obj.dv_n = kr(I_u,d1_r_v); 108 obj.dv_n = kr(I_u,d1_r_v);
225 end 225 end
226 226
227 function [closure, penalty] = interface(obj,boundary,neighbour_scheme,neighbour_boundary) 227 function [closure, penalty] = interface(obj,boundary,neighbour_scheme,neighbour_boundary)
228 % u denotes the solution in the own domain 228 % u denotes the solution in the own domain
229 % v denotes the solution in the neighbour domain 229 % v denotes the solution in the neighbour domain
230 [e_u, d_n_u, d_t_u, coeff_t_u, coeff_n_u,s_u, halfnorm_inv_u_n, halfnorm_inv_u_t, halfnorm_u_t,gamm_u] = obj.get_boundary_ops(boundary); 230 [e_u, d_n_u, d_t_u, coeff_t_u, coeff_n_u,s_u, halfnorm_inv_u_n, halfnorm_inv_u_t, halfnorm_u_t,gamm_u,Ji_u] = obj.get_boundary_ops(boundary);
231 [e_v, d_n_v, d_t_v, coeff_t_v, coeff_n_v s_v, halfnorm_inv_v_n, halfnorm_inv_v_t, halfnorm_v_t,gamm_v] = neighbour_scheme.get_boundary_ops(neighbour_boundary); 231 [e_v, d_n_v, d_t_v, coeff_t_v, coeff_n_v s_v, halfnorm_inv_v_n, halfnorm_inv_v_t, halfnorm_v_t,gamm_v,Ji_v] = neighbour_scheme.get_boundary_ops(neighbour_boundary);
232 232
233 a_n_u = @(t) spdiag(coeff_n_u(t)); 233 a_n_u = @(t) spdiag(coeff_n_u(t));
234 a_t_u = @(t) spdiag(coeff_t_u(t)); 234 a_t_u = @(t) spdiag(coeff_t_u(t));
235 a_n_v = @(t) spdiag(coeff_n_v(t)); 235 a_n_v = @(t) spdiag(coeff_n_v(t));
236 a_t_v = @(t) spdiag(coeff_t_v(t)); 236 a_t_v = @(t) spdiag(coeff_t_v(t));
248 penalty_parameter_1 = @(t) halfnorm_inv_u_n*(tau*halfnorm_inv_u_t*F_u(t)*e_u'*halfnorm_u_t*e_u); 248 penalty_parameter_1 = @(t) halfnorm_inv_u_n*(tau*halfnorm_inv_u_t*F_u(t)*e_u'*halfnorm_u_t*e_u);
249 penalty_parameter_2 = @(t) halfnorm_inv_u_n * e_u * (sig ); 249 penalty_parameter_2 = @(t) halfnorm_inv_u_n * e_u * (sig );
250 penalty_parameter_3 = @(t) halfnorm_inv_u_n * e_u * (gamm(t) ); 250 penalty_parameter_3 = @(t) halfnorm_inv_u_n * e_u * (gamm(t) );
251 251
252 252
253 closure =@(t) sqrt(obj.Ji)*obj.c^2 * ( penalty_parameter_1(t)*e_u' + penalty_parameter_2(t)*F_u(t)' + penalty_parameter_3(t)*e_u')*sqrt(obj.Ji); 253 closure =@(t) sqrt(Ji_u)*obj.c^2 * ( penalty_parameter_1(t)*e_u' + penalty_parameter_2(t)*F_u(t)' + penalty_parameter_3(t)*e_u')*sqrt(Ji_u);
254 penalty =@(t) sqrt(obj.Ji)*obj.c^2 * ( -penalty_parameter_1(t)*e_v' - penalty_parameter_2(t)*F_v(t)' - penalty_parameter_3(t)*e_v')*sqrt(obj.Ji); 254 penalty =@(t) sqrt(Ji_v)*obj.c^2 * ( -penalty_parameter_1(t)*e_v' - penalty_parameter_2(t)*F_v(t)' - penalty_parameter_3(t)*e_v')*sqrt(Ji_v);
255 end 255 end
256 256
257 257
258 function [e, d_n, d_t, coeff_t,coeff_n, s, halfnorm_inv_n, halfnorm_inv_t, halfnorm_t,g] = get_boundary_ops(obj, boundary) 258 function [e, d_n, d_t, coeff_t,coeff_n, s, halfnorm_inv_n, halfnorm_inv_t, halfnorm_t,g] = get_boundary_ops(obj, boundary)
259 259
316 case {'s','n'} 316 case {'s','n'}
317 halfnorm_inv_n = obj.Hiv; 317 halfnorm_inv_n = obj.Hiv;
318 halfnorm_inv_t = obj.Hiu; 318 halfnorm_inv_t = obj.Hiu;
319 halfnorm_t = obj.Hu; 319 halfnorm_t = obj.Hu;
320 end 320 end
321 Ji = obj.Ji;
321 end 322 end
322 323
323 function N = size(obj) 324 function N = size(obj)
324 N = prod(obj.m); 325 N = prod(obj.m);
325 end 326 end