Mercurial > repos > public > sbplib
annotate +scheme/Schrodinger1dCurve.m @ 511:57f3493f851b feature/quantumTriangles
Added sqrt of Ji in the right places, not sure about the interfaces, will not test it properly now
author | Ylva Rydin <ylva.rydin@telia.com> |
---|---|
date | Thu, 08 Jun 2017 10:33:36 +0200 |
parents | 508b7493be94 |
children | 32a24485f3e8 |
rev | line source |
---|---|
429
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
1 classdef Schrodinger1dCurve < scheme.Scheme |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
2 properties |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
3 m % Number of points in each direction, possibly a vector |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
4 h % Grid spacing |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
5 xi % Grid |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
6 order % Order accuracy for the approximation |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
7 grid |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
8 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
9 D % non-stabalized scheme operator |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
10 H % Discrete norm |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
11 M % Derivative norm |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
12 alpha |
496
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
13 x_r |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
14 x_l |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
15 ddt_x_r |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
16 ddt_x_l |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
17 a |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
18 a_xi |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
19 Ji |
508
508b7493be94
moved all multiplications and divisions bu J and Ji to the siscretization to easier find the error
Ylva Rydin <ylva.rydin@telia.com>
parents:
507
diff
changeset
|
20 J |
496
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
21 t_up |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
22 x |
429
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
23 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
24 V_mat |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
25 D1 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
26 D2 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
27 Hi |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
28 e_l |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
29 e_r |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
30 d1_l |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
31 d1_r |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
32 gamm |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
33 end |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
34 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
35 methods |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
36 % Solving SE in the form u_t = i*u_xx +i*V on deforming 1D domain; |
496
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
37 function obj = Schrodinger1dCurve(g,order,boundaries,V,constJi) |
429
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
38 default_arg('V',0); |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
39 default_arg('constJi',false) |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
40 xilim={0 1}; |
496
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
41 m = N(g); |
429
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
42 if constJi |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
43 ops = sbp.D2Standard(m,xilim,order); |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
44 else |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
45 ops = sbp.D4Variable(m,xilim,order); |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
46 end |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
47 |
496
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
48 obj.x_l = boundaries{1}; |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
49 obj.x_r = boundaries{2}; |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
50 obj.ddt_x_l = boundaries{3}; |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
51 obj.ddt_x_r = boundaries{4}; |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
52 |
429
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
53 obj.xi=ops.x; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
54 obj.h=ops.h; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
55 obj.D2 = ops.D2; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
56 obj.D1 = ops.D1; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
57 obj.H = ops.H; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
58 obj.Hi = ops.HI; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
59 obj.M = ops.M; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
60 obj.e_l = ops.e_l; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
61 obj.e_r = ops.e_r; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
62 obj.d1_l = ops.d1_l; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
63 obj.d1_r = ops.d1_r; |
495
b91d23271481
Added new penalty parameter to the interface in shrodinger curve
Ylva Rydin <ylva.rydin@telia.com>
parents:
493
diff
changeset
|
64 obj.grid = g; |
429
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
65 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
66 if isa(V,'function_handle') |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
67 V_vec = V(obj.x); |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
68 else |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
69 V_vec = obj.xi*0 + V; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
70 end |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
71 |
496
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
72 obj.V_mat = spdiags(V_vec,0,m,m); |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
73 obj.D = @(t) obj.d_fun(t); |
429
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
74 obj.m = m; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
75 obj.order = order; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
76 end |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
77 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
78 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
79 % Closure functions return the opertors appliedo to the own doamin to close the boundary |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
80 % Penalty functions return the opertors to force the solution. In the case of an interface it returns the operator applied to the other doamin. |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
81 % boundary is a string specifying the boundary e.g. 'l','r' or 'e','w','n','s'. |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
82 % type is a string specifying the type of boundary condition if there are several. |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
83 % data is a function returning the data that should be applied at the boundary. |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
84 % neighbour_scheme is an instance of Scheme that should be interfaced to. |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
85 % neighbour_boundary is a string specifying which boundary to interface to. |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
86 |
496
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
87 function [D] = d_fun(obj,t) |
501
b7280c6c6b9a
Found some small bugs when making slides for pressentation
Ylva Rydin <ylva.rydin@telia.com>
parents:
498
diff
changeset
|
88 obj.variable_update(t); % In driscretization? |
511
57f3493f851b
Added sqrt of Ji in the right places, not sure about the interfaces, will not test it properly now
Ylva Rydin <ylva.rydin@telia.com>
parents:
508
diff
changeset
|
89 D = sqrt(obj.Ji)*(-0.5*(obj.D1*obj.a + obj.a*obj.D1) + 1i*obj.D2(diag(obj.Ji)) + 1i*obj.V_mat)*sqrt(obj.Ji); |
508
508b7493be94
moved all multiplications and divisions bu J and Ji to the siscretization to easier find the error
Ylva Rydin <ylva.rydin@telia.com>
parents:
507
diff
changeset
|
90 % D = (-0.5*(obj.D1*obj.a -obj.a_xi+ obj.a*obj.D1) + 1i*obj.D2(diag(obj.Ji)) + 1i*obj.V_mat); |
508b7493be94
moved all multiplications and divisions bu J and Ji to the siscretization to easier find the error
Ylva Rydin <ylva.rydin@telia.com>
parents:
507
diff
changeset
|
91 % D= obj.Ji*(-sqrt(obj.a)*obj.D1*sqrt(obj.a) + 0.5*obj.a_xi + 1i*obj.D2(diag(obj.Ji)) + 1i*obj.V_mat); |
496
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
92 end |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
93 |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
94 |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
95 function [] = variable_update(obj,t) |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
96 if (t == obj.t_up) |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
97 return |
429
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
98 else |
496
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
99 x_r = obj.x_r(t); |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
100 x_l = obj.x_l(t); |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
101 ddt_x_r = obj. ddt_x_r(t); |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
102 ddt_x_l = obj.ddt_x_l(t); |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
103 obj.x = obj.xi*(x_r -x_l) + x_l; |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
104 obj.a = sparse(diag((-ddt_x_l*( x_r - x_l) - (obj.x-x_l)*(ddt_x_r-ddt_x_l))/(x_r-x_l))); |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
105 |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
106 obj.Ji = sparse(diag(1./(x_r - x_l + 0*obj.x))); |
508
508b7493be94
moved all multiplications and divisions bu J and Ji to the siscretization to easier find the error
Ylva Rydin <ylva.rydin@telia.com>
parents:
507
diff
changeset
|
107 obj.J = sparse(x_r -x_l); |
496
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
108 obj.a_xi = sparse(diag(-1*(ddt_x_r - ddt_x_l + 0*obj.x))); |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
109 obj.t_up = t; |
429
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
110 end |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
111 end |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
112 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
113 function [closure, penalty] = boundary_condition(obj,boundary,type,data) |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
114 default_arg('type','dirichlet'); |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
115 default_arg('data',0); |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
116 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
117 [e,d,s,p] = obj.get_boundary_ops(boundary); |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
118 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
119 switch type |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
120 % Dirichlet boundary condition |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
121 case {'D','d','dirichlet'} |
508
508b7493be94
moved all multiplications and divisions bu J and Ji to the siscretization to easier find the error
Ylva Rydin <ylva.rydin@telia.com>
parents:
507
diff
changeset
|
122 tau1 = @(t) s * 1i*obj.Ji(p,p)*d; |
508b7493be94
moved all multiplications and divisions bu J and Ji to the siscretization to easier find the error
Ylva Rydin <ylva.rydin@telia.com>
parents:
507
diff
changeset
|
123 tau2 = @(t) (1*s*obj.a(p,p))/2*e; |
511
57f3493f851b
Added sqrt of Ji in the right places, not sure about the interfaces, will not test it properly now
Ylva Rydin <ylva.rydin@telia.com>
parents:
508
diff
changeset
|
124 closure = @(t)obj.Hi*sqrt(obj.Ji)*(tau1(t)*e' + tau2(obj.a)*e')*sqrt(obj.Ji); |
429
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
125 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
126 switch class(data) |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
127 case 'double' |
511
57f3493f851b
Added sqrt of Ji in the right places, not sure about the interfaces, will not test it properly now
Ylva Rydin <ylva.rydin@telia.com>
parents:
508
diff
changeset
|
128 penalty = @(t) -obj.Hi*sqrt(obj.Ji)*(tau1*data+tau2(obj.a)*data)*sqrt(obj.Ji); |
429
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
129 % case 'function_handle' |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
130 % penalty = @(t)-obj.Hi*tau*data(t); |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
131 otherwise |
508
508b7493be94
moved all multiplications and divisions bu J and Ji to the siscretization to easier find the error
Ylva Rydin <ylva.rydin@telia.com>
parents:
507
diff
changeset
|
132 error('Weird data argument!') |
429
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
133 end |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
134 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
135 % Unknown, boundary condition |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
136 otherwise |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
137 error('No such boundary condition: type = %s',type); |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
138 end |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
139 end |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
140 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
141 function [closure, penalty] = interface(obj,boundary,neighbour_scheme,neighbour_boundary) |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
142 % u denotes the solution in the own domain |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
143 % v denotes the solution in the neighbour domain |
496
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
144 [e_u,d_u,s_u,p_u] = obj.get_boundary_ops(boundary); |
437fad4a47e1
Add 1d interface for shrodinger in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
495
diff
changeset
|
145 [e_v,d_v,s_v,p_v] = neighbour_scheme.get_boundary_ops(neighbour_boundary); |
429
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
146 |
498
324c927d8b1d
chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents:
496
diff
changeset
|
147 a1 = s_u* 1/2 * 1i ; |
324c927d8b1d
chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents:
496
diff
changeset
|
148 b1 = -s_u* 1/2 * 1i; |
511
57f3493f851b
Added sqrt of Ji in the right places, not sure about the interfaces, will not test it properly now
Ylva Rydin <ylva.rydin@telia.com>
parents:
508
diff
changeset
|
149 gamma = @(a) s_u*a(p_u,p_u)/2*e_u; |
429
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
150 |
498
324c927d8b1d
chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents:
496
diff
changeset
|
151 tau = @(t) a1*obj.Ji(p_u,p_u)^2*d_u; |
324c927d8b1d
chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents:
496
diff
changeset
|
152 sig = b1*e_u; |
495
b91d23271481
Added new penalty parameter to the interface in shrodinger curve
Ylva Rydin <ylva.rydin@telia.com>
parents:
493
diff
changeset
|
153 |
511
57f3493f851b
Added sqrt of Ji in the right places, not sure about the interfaces, will not test it properly now
Ylva Rydin <ylva.rydin@telia.com>
parents:
508
diff
changeset
|
154 closure = @(t) obj.Hi * (tau(t)*e_u' + sig*obj.Ji(p_u,p_u)^2*d_u' + obj.Ji(p_u,p_u)*gamma(obj.a)*e_u'); |
57f3493f851b
Added sqrt of Ji in the right places, not sure about the interfaces, will not test it properly now
Ylva Rydin <ylva.rydin@telia.com>
parents:
508
diff
changeset
|
155 penalty = @(t) obj.Hi * (-tau(t)*e_v' - sig*obj.Ji(p_u,p_u)^2*d_v' - obj.Ji(p_u,p_u)*gamma(obj.a)*e_v'); |
429
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
156 end |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
157 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
158 % Ruturns the boundary ops and sign for the boundary specified by the string boundary. |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
159 % The right boundary is considered the positive boundary |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
160 function [e,d,s,p] = get_boundary_ops(obj,boundary) |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
161 switch boundary |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
162 case 'l' |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
163 e = obj.e_l; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
164 d = obj.d1_l; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
165 s = -1; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
166 p=1; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
167 case 'r' |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
168 e = obj.e_r; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
169 d = obj.d1_r; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
170 s = 1; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
171 p=obj.m; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
172 otherwise |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
173 error('No such boundary: boundary = %s',boundary); |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
174 end |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
175 end |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
176 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
177 function N = size(obj) |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
178 N = obj.m; |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
179 end |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
180 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
181 end |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
182 |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
183 methods(Static) |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
184 % Calculates the matrcis need for the inteface coupling between boundary bound_u of scheme schm_u |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
185 % and bound_v of scheme schm_v. |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
186 % [uu, uv, vv, vu] = inteface_couplong(A,'r',B,'l') |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
187 function [uu, uv, vv, vu] = interface_coupling(schm_u,bound_u,schm_v,bound_v) |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
188 [uu,uv] = schm_u.interface(bound_u,schm_v,bound_v); |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
189 [vv,vu] = schm_v.interface(bound_v,schm_u,bound_u); |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
190 end |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
191 end |
dde5760863de
Added a scheme for the time deforming shrodinger equation in 1d
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff
changeset
|
192 end |