Mercurial > repos > public > sbplib
changeset 499:f1465e6aeb26 feature/quantumTriangles
Commit before changing branch
author | Ylva Rydin <ylva.rydin@telia.com> |
---|---|
date | Mon, 06 Mar 2017 17:23:52 +0100 |
parents | 324c927d8b1d |
children | 83734c26b8e3 |
files | +scheme/Schrodinger2dCurve.m |
diffstat | 1 files changed, 11 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/+scheme/Schrodinger2dCurve.m Fri Mar 03 16:19:41 2017 +0100 +++ b/+scheme/Schrodinger2dCurve.m Mon Mar 06 17:23:52 2017 +0100 @@ -198,13 +198,13 @@ % neighbour_scheme is an instance of Scheme that should be interfaced to. % neighbour_boundary is a string specifying which boundary to interface to. function [closure, penalty] = boundary_condition(obj, boundary,~) - [e, d_n, d_t, coeff_t, coeff_n s, halfnorm_inv_n, halfnorm_inv_t, halfnorm_t,g,I,Ji] = obj.get_boundary_ops(boundary); + [e, d_n, d_t, coeff_t, coeff_n s, halfnorm_inv_n, halfnorm_inv_t, halfnorm_t,g] = obj.get_boundary_ops(boundary); a_t = @(t) spdiag(coeff_t(t)); a_n = @(t) spdiag(coeff_n(t)); - Ji = spdiag(Ji); + - F = @(t)(s * (d_n * Ji)' + s * a_t(t) *d_t')'; + F = @(t)(s * a_n(t)*d_n' + s * a_t(t) *d_t')'; tau1 = 1; a = @(t)spdiag(g(t)); tau2 = @(t) (-1*s*a(t) - abs(a(t)))/4; @@ -220,19 +220,17 @@ function [closure, penalty] = interface(obj,boundary,neighbour_scheme,neighbour_boundary) % u denotes the solution in the own domain % v denotes the solution in the neighbour domain - [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, I_u,JI_u] = obj.get_boundary_ops(boundary); - [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, I_v,JI_v] = neighbour_scheme.get_boundary_ops(neighbour_boundary); + [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); + [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); a_n_u = @(t) spdiag(coeff_n_u(t)); a_t_u = @(t) spdiag(coeff_t_u(t)); a_n_v = @(t) spdiag(coeff_n_v(t)); a_t_v = @(t) spdiag(coeff_t_v(t)); - - Ji_u = spdiag(JI_u); - Ji_v = spdiag(JI_v); + - F_u = @(t)((d_n_u*Ji_u)' + a_t_u(t)*d_t_u')'; - F_v = @(t)((d_n_v*Ji_v)' + a_t_v(t)*d_t_v')'; + F_u = @(t)(a_n_u(t)*d_n_u' + a_t_u(t)*d_t_u')'; + F_v = @(t)(a_n_v(t)*d_n_v' + a_t_v(t)*d_t_v')'; a = @(t)spdiag(gamm_u(t)); @@ -250,7 +248,7 @@ end - function [e, d_n, d_t, coeff_t,coeff_n, s, halfnorm_inv_n, halfnorm_inv_t, halfnorm_t,g, I,Ji] = get_boundary_ops(obj, boundary) + 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) % gridMatrix = zeros(obj.m(2),obj.m(1)); % gridMatrix(:) = 1:numel(gridMatrix); @@ -286,7 +284,7 @@ I = ind(:,1)'; coeff_t = @(t)obj.a12(I); - coeff_n = @(t)obj.a11(I); + coeff_n = @(t)obj.a22(I); g = @(t)obj.g_2(I); case 'n' e = obj.e_n; @@ -296,7 +294,7 @@ I = ind(:,end)'; coeff_t = @(t)obj.a12(I); - coeff_n = @(t)obj.a11(I); + coeff_n = @(t)obj.a22(I); g = @(t)obj.g_2(I); otherwise error('No such boundary: boundary = %s',boundary); @@ -313,8 +311,6 @@ halfnorm_inv_t = obj.Hiu; halfnorm_t = obj.Hu; end - fis = diag(obj.Ji); - Ji = fis(I); end function N = size(obj)