annotate +scheme/Schrodinger2dCurve.m @ 515:ba92b27da5a0 feature/quantumTriangles

Tried to make skewsym. Values left on the diagonal when time-dep!
author Ylva Rydin <ylva.rydin@telia.com>
date Fri, 07 Jul 2017 14:22:02 +0200
parents 83734c26b8e3
children afff85574ddb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
1 classdef Schrodinger2dCurve < scheme.Scheme
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
2 properties
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
3 m % Number of points in each direction, possibly a vector
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
4 h % Grid spacing
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
5
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
6 grid
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
7 xm, ym
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
8
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
9 order % Order accuracy for the approximation
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
10
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
11 D % non-stabalized scheme operator
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
12 M % Derivative norm
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
13 H % Discrete norm
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
14 Hi
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
15 H_u, H_v % Norms in the x and y directions
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
16 Hu,Hv % Kroneckerd norms. 1'*Hx*v corresponds to integration in the x dir.
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
17 Hi_u, Hi_v
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
18 Hiu, Hiv
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
19 D1_v, D1_u
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
20 D2_v, D2_u
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
21 Du, Dv
492
6b95a894cbd7 fixed a bug in the metric coefficients but something is wrong at the boundaries
Ylva Rydin <ylva.rydin@telia.com>
parents: 491
diff changeset
22 x,y
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
23 b1, b2
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
24 b1_u,b2_v
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
25 DU, DV, DUU, DUV, DVU, DVV
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
26
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
27 e_w, e_e, e_s, e_n
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
28 du_w, dv_w
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
29 du_e, dv_e
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
30 du_s, dv_s
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
31 du_n, dv_n
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
32 g_1, g_2
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
33 c
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
34 ind
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
35 t_up
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
36
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
37 a11, a12, a22
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
38 m_tot, m_u, m_v
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
39 p
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
40 Ji
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
41 end
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
42
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
43 methods
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
44 function obj = Schrodinger2dCurve(g ,order, opSet,p)
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
45 default_arg('opSet',@sbp.D2Variable);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
46 default_arg('c', 1);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
47
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
48 obj.p=p;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
49 obj.c=1;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
50
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
51 m = g.size();
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
52 obj.m_u = m(1);
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
53 obj.m_v = m(2);
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
54 obj.m_tot = g.N();
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
55 obj.grid=g;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
56
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
57 h = g.scaling();
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
58 h_u = h(1);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
59 h_v = h(2);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
60
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
61 % Operators
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
62 ops_u = opSet(obj.m_u, {0, 1}, order);
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
63 ops_v = opSet(obj.m_v, {0, 1}, order);
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
64
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
65 I_u = speye(obj.m_u);
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
66 I_v = speye(obj.m_v);
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
67
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
68 obj.D1_u = ops_u.D1;
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
69 obj.D2_u = ops_u.D2;
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
70
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
71 H_u = ops_u.H;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
72 Hi_u = ops_u.HI;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
73 e_l_u = ops_u.e_l;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
74 e_r_u = ops_u.e_r;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
75 d1_l_u = ops_u.d1_l;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
76 d1_r_u = ops_u.d1_r;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
77
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
78 obj.D1_v = ops_v.D1;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
79 obj.D2_v = ops_v.D2;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
80 H_v = ops_v.H;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
81 Hi_v = ops_v.HI;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
82 e_l_v = ops_v.e_l;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
83 e_r_v = ops_v.e_r;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
84 d1_l_v = ops_v.d1_l;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
85 d1_r_v = ops_v.d1_r;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
86
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
87 obj.Du = kr(obj.D1_u,I_v);
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
88 obj.Dv = kr(I_u,obj.D1_v);
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
89
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
90 obj.H = kr(H_u,H_v);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
91 obj.Hi = kr(Hi_u,Hi_v);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
92 obj.Hu = kr(H_u,I_v);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
93 obj.Hv = kr(I_u,H_v);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
94 obj.Hiu = kr(Hi_u,I_v);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
95 obj.Hiv = kr(I_u,Hi_v);
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
96
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
97 obj.e_w = kr(e_l_u,I_v);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
98 obj.e_e = kr(e_r_u,I_v);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
99 obj.e_s = kr(I_u,e_l_v);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
100 obj.e_n = kr(I_u,e_r_v);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
101 obj.du_w = kr(d1_l_u,I_v);
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
102 obj.dv_w = (obj.e_w'*obj.Dv)';
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
103 obj.du_e = kr(d1_r_u,I_v);
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
104 obj.dv_e = (obj.e_e'*obj.Dv)';
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
105 obj.du_s = (obj.e_s'*obj.Du)';
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
106 obj.dv_s = kr(I_u,d1_l_v);
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
107 obj.du_n = (obj.e_n'*obj.Du)';
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
108 obj.dv_n = kr(I_u,d1_r_v);
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
109
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
110 obj.DUU = sparse(obj.m_tot);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
111 obj.DVV = sparse(obj.m_tot);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
112 obj.ind = grid.funcToMatrix(obj.grid, 1:obj.m_tot);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
113
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
114 obj.m = m;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
115 obj.h = [h_u h_v];
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
116 obj.order = order;
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
117 obj.D = @(t)obj.d_fun(t);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
118 obj.variable_update(0);
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
119 end
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
120
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
121 function [D] = d_fun(obj,t)
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
122 % obj.update_vairables(t); In driscretization?
515
ba92b27da5a0 Tried to make skewsym.
Ylva Rydin <ylva.rydin@telia.com>
parents: 500
diff changeset
123 % D = obj.Ji*(-1/2*(obj.b1*obj.Du-obj.b1_u+obj.Du*obj.b1) -
ba92b27da5a0 Tried to make skewsym.
Ylva Rydin <ylva.rydin@telia.com>
parents: 500
diff changeset
124 % 1/2*(obj.b2*obj.Dv - obj.b2_v +obj.Dv*obj.b2) +
ba92b27da5a0 Tried to make skewsym.
Ylva Rydin <ylva.rydin@telia.com>
parents: 500
diff changeset
125 % 1i*obj.c^2*(obj.DUU + obj.DUV + obj.DVU + obj.DVV)); (ols
ba92b27da5a0 Tried to make skewsym.
Ylva Rydin <ylva.rydin@telia.com>
parents: 500
diff changeset
126 % not skew sym disc
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
127
515
ba92b27da5a0 Tried to make skewsym.
Ylva Rydin <ylva.rydin@telia.com>
parents: 500
diff changeset
128 D = sqrt(obj.Ji)*(-1/2*(obj.b1*obj.Du + obj.Du*obj.b1) - 1/2*(obj.b2*obj.Dv + obj.Dv*obj.b2) + 1i*obj.c^2*(obj.DUU + obj.DUV + obj.DVU + obj.DVV))*sqrt(obj.Ji);
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
129 end
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
130
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
131
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
132 function [D ]= variable_update(obj,t)
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
133 % Metric derivatives
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
134 if(obj.t_up == t)
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
135 return
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
136 else
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
137 ti = parametrization.Ti.points(obj.p{1}(t),obj.p{2}(t),obj.p{3}(t),obj.p{4}(t));
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
138 ti_tau = parametrization.Ti.points(obj.p{5}(t),obj.p{6}(t),obj.p{7}(t),obj.p{8}(t));
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
139
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
140 lcoords=points(obj.grid);
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
141 [obj.xm,obj.ym]= ti.map(lcoords(1:obj.m_v:end,1),lcoords(1:obj.m_v,2));
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
142 [x_tau,y_tau]= ti_tau.map(lcoords(1:obj.m_v:end,1),lcoords(1:obj.m_v,2));
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
143 x = reshape(obj.xm,obj.m_tot,1);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
144 y = reshape(obj.ym,obj.m_tot,1);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
145 obj.x = x;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
146 obj.y = y;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
147
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
148 x_tau = reshape(x_tau,obj.m_tot,1);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
149 y_tau = reshape(y_tau,obj.m_tot,1);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
150
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
151 x_u = obj.Du*x;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
152 x_v = obj.Dv*x;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
153 y_u = obj.Du*y;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
154 y_v = obj.Dv*y;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
155
500
83734c26b8e3 Small changes
Ylva Rydin <ylva.rydin@telia.com>
parents: 499
diff changeset
156 J = (x_u.*y_v - x_v.*y_u);
83734c26b8e3 Small changes
Ylva Rydin <ylva.rydin@telia.com>
parents: 499
diff changeset
157
83734c26b8e3 Small changes
Ylva Rydin <ylva.rydin@telia.com>
parents: 499
diff changeset
158 Ji = spdiags(1./J, 0, obj.m_tot, obj.m_tot);
83734c26b8e3 Small changes
Ylva Rydin <ylva.rydin@telia.com>
parents: 499
diff changeset
159 obj.Ji = Ji;
83734c26b8e3 Small changes
Ylva Rydin <ylva.rydin@telia.com>
parents: 499
diff changeset
160
83734c26b8e3 Small changes
Ylva Rydin <ylva.rydin@telia.com>
parents: 499
diff changeset
161 a11 = Ji* (x_v.^2 + y_v.^2);
83734c26b8e3 Small changes
Ylva Rydin <ylva.rydin@telia.com>
parents: 499
diff changeset
162 a12 = -Ji* (x_u.*x_v + y_u.*y_v);
83734c26b8e3 Small changes
Ylva Rydin <ylva.rydin@telia.com>
parents: 499
diff changeset
163 a22 = Ji* (x_u.^2 + y_u.^2);
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
164
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
165 obj.a11 = a11;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
166 obj.a12 = a12;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
167 obj.a22 = a22;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
168
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
169 % Assemble full operators
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
170 L_12 = spdiags(a12, 0, obj.m_tot, obj.m_tot);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
171 obj.DUV = obj.Du*L_12*obj.Dv;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
172 obj.DVU = obj.Dv*L_12*obj.Du;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
173
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
174
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
175 for i = 1:obj.m_v
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
176 D = obj.D2_u(a11(obj.ind(:,i)));
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
177 p = obj.ind(:,i);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
178 obj.DUU(p,p) = D;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
179 end
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
180
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
181 for i = 1:obj.m_u
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
182 D = obj.D2_v(a22(obj.ind(i,:)));
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
183 p = obj.ind(i,:);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
184 obj.DVV(p,p) = D;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
185 end
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
186
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
187 obj.g_1 = x_v.*y_tau-x_tau.*y_v;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
188 obj.g_2 = x_tau.*y_u - y_tau.*x_u;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
189
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
190 obj.b1 = spdiags(obj.g_1, 0, obj.m_tot, obj.m_tot);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
191 obj.b2 = spdiags(obj.g_2, 0, obj.m_tot, obj.m_tot);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
192
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
193 obj.b1_u = spdiags(obj.Du*obj.g_1, 0, obj.m_tot, obj.m_tot);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
194 obj.b2_v = spdiags(obj.Dv*obj.g_2, 0, obj.m_tot, obj.m_tot);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
195 obj.t_up=t;
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
196 end
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
197 end
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
198
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
199 % Closure functions return the opertors applied to the own doamin to close the boundary
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
200 % Penalty functions return the opertors to force the solution. In the case of an interface it returns the operator applied to the other doamin.
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
201 % boundary is a string specifying the boundary e.g. 'l','r' or 'e','w','n','s'.
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
202 % type is a string specifying the type of boundary condition if there are several.
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
203 % data is a function returning the data that should be applied at the boundary.
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
204 % neighbour_scheme is an instance of Scheme that should be interfaced to.
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
205 % neighbour_boundary is a string specifying which boundary to interface to.
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
206 function [closure, penalty] = boundary_condition(obj, boundary,~)
499
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
207 [e, d_n, d_t, coeff_t, coeff_n s, halfnorm_inv_n, halfnorm_inv_t, halfnorm_t,g] = obj.get_boundary_ops(boundary);
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
208
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
209 a_t = @(t) spdiag(coeff_t(t));
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
210 a_n = @(t) spdiag(coeff_n(t));
499
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
211
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
212
499
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
213 F = @(t)(s * a_n(t)*d_n' + s * a_t(t) *d_t')';
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
214 tau1 = 1;
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
215 a = @(t)spdiag(g(t));
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
216 tau2 = @(t) (-1*s*a(t) - abs(a(t)))/4;
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
217
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
218 penalty_parameter_1 = @(t) 1*1i*halfnorm_inv_n*halfnorm_inv_t*F(t)*e'*halfnorm_t*e;
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
219 penalty_parameter_2 = @(t) halfnorm_inv_n*e*tau2(t);
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
220
515
ba92b27da5a0 Tried to make skewsym.
Ylva Rydin <ylva.rydin@telia.com>
parents: 500
diff changeset
221 closure = @(t) sqrt(obj.Ji)*(obj.c^2 * penalty_parameter_1(t)*e' + penalty_parameter_2(t)*e')*sqrt(obj.Ji);
ba92b27da5a0 Tried to make skewsym.
Ylva Rydin <ylva.rydin@telia.com>
parents: 500
diff changeset
222 penalty = @(t) -sqrt(obj.Ji)*(obj.c^2 * penalty_parameter_1(t)*e' - penalty_parameter_2(t)*e')*sqrt(obj.Ji);
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
223
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
224 end
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
225
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
226 function [closure, penalty] = interface(obj,boundary,neighbour_scheme,neighbour_boundary)
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
227 % u denotes the solution in the own domain
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
228 % v denotes the solution in the neighbour domain
499
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
229 [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);
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
230 [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);
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
231
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
232 a_n_u = @(t) spdiag(coeff_n_u(t));
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
233 a_t_u = @(t) spdiag(coeff_t_u(t));
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
234 a_n_v = @(t) spdiag(coeff_n_v(t));
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
235 a_t_v = @(t) spdiag(coeff_t_v(t));
499
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
236
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
237
499
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
238 F_u = @(t)(a_n_u(t)*d_n_u' + a_t_u(t)*d_t_u')';
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
239 F_v = @(t)(a_n_v(t)*d_n_v' + a_t_v(t)*d_t_v')';
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
240
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
241 a = @(t)spdiag(gamm_u(t));
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
242
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
243 tau = s_u*1*1i/2;
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
244 sig = -s_u*1*1i/2;
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
245 gamm = @(t) (-s_u*a(t))/2;
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
246
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
247 penalty_parameter_1 = @(t) halfnorm_inv_u_n*(tau*halfnorm_inv_u_t*F_u(t)*e_u'*halfnorm_u_t*e_u);
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
248 penalty_parameter_2 = @(t) halfnorm_inv_u_n * e_u * (sig );
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
249 penalty_parameter_3 = @(t) halfnorm_inv_u_n * e_u * (gamm(t) );
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
250
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
251
515
ba92b27da5a0 Tried to make skewsym.
Ylva Rydin <ylva.rydin@telia.com>
parents: 500
diff changeset
252 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);
ba92b27da5a0 Tried to make skewsym.
Ylva Rydin <ylva.rydin@telia.com>
parents: 500
diff changeset
253 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);
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
254 end
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
255
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
256
499
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
257 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)
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
258
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
259 % gridMatrix = zeros(obj.m(2),obj.m(1));
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
260 % gridMatrix(:) = 1:numel(gridMatrix);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
261
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
262 ind = grid.funcToMatrix(obj.grid, 1:prod(obj.m));
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
263
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
264 switch boundary
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
265 case 'w'
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
266 e = obj.e_w;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
267 d_n = obj.du_w;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
268 d_t = obj.dv_w;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
269 s = -1;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
270
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
271 I = ind(1,:);
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
272 coeff_t = @(t)obj.a12(I);
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
273 coeff_n =@(t) obj.a11(I);
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
274 g = @(t)obj.g_1(I);
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
275 case 'e'
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
276 e = obj.e_e;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
277 d_n = obj.du_e;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
278 d_t = obj.dv_e;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
279 s = 1;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
280
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
281 I = ind(end,:);
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
282 coeff_t = @(t)obj.a12(I);
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
283 coeff_n = @(t)obj.a11(I);
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
284 g = @(t)obj.g_1(I);
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
285 case 's'
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
286 e = obj.e_s;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
287 d_n = obj.dv_s;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
288 d_t = obj.du_s;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
289 s = -1;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
290
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
291 I = ind(:,1)';
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
292 coeff_t = @(t)obj.a12(I);
499
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
293 coeff_n = @(t)obj.a22(I);
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
294 g = @(t)obj.g_2(I);
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
295 case 'n'
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
296 e = obj.e_n;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
297 d_n = obj.dv_n;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
298 d_t = obj.du_n;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
299 s = 1;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
300
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
301 I = ind(:,end)';
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
302 coeff_t = @(t)obj.a12(I);
499
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
303 coeff_n = @(t)obj.a22(I);
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
304 g = @(t)obj.g_2(I);
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
305 otherwise
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
306 error('No such boundary: boundary = %s',boundary);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
307 end
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
308
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
309 switch boundary
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
310 case {'w','e'}
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
311 halfnorm_inv_n = obj.Hiu;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
312 halfnorm_inv_t = obj.Hiv;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
313 halfnorm_t = obj.Hv;
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
314
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
315 case {'s','n'}
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
316 halfnorm_inv_n = obj.Hiv;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
317 halfnorm_inv_t = obj.Hiu;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
318 halfnorm_t = obj.Hu;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
319 end
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
320 end
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
321
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
322 function N = size(obj)
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
323 N = prod(obj.m);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
324 end
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
325 end
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
326 methods(Static)
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
327 % Calculates the matrcis need for the inteface coupling between boundary bound_u of scheme schm_u
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
328 % and bound_v of scheme schm_v.
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
329 % [uu, uv, vv, vu] = inteface_couplong(A,'r',B,'l')
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
330 function [uu, uv, vv, vu] = interface_coupling(schm_u,bound_u,schm_v,bound_v)
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
331 [uu,uv] = schm_u.interface(bound_u,schm_v,bound_v);
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
332 [vv,vu] = schm_v.interface(bound_v,schm_u,bound_u);
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
333 end
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
334 end
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
335 end