annotate +scheme/Schrodinger2dCurve.m @ 520:f235284e2eb1 feature/quantumTriangles

changed sign in penalty parameter
author Ylva Rydin <ylva.rydin@telia.com>
date Mon, 07 Aug 2017 13:20:48 +0200
parents 0de024556427
children 1157375c678a
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
518
4709f2329372 Added J to propertied
Ylva Rydin <ylva.rydin@telia.com>
parents: 517
diff changeset
40 Ji, J
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
520
f235284e2eb1 changed sign in penalty parameter
Ylva Rydin <ylva.rydin@telia.com>
parents: 519
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 lcoords=points(obj.grid);
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
140 [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
141 [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
142 x = reshape(obj.xm,obj.m_tot,1);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
143 y = reshape(obj.ym,obj.m_tot,1);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
144 obj.x = x;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
145 obj.y = y;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
146
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
147 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
148 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
149
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
150 x_u = obj.Du*x;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
151 x_v = obj.Dv*x;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
152 y_u = obj.Du*y;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
153 y_v = obj.Dv*y;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
154
500
83734c26b8e3 Small changes
Ylva Rydin <ylva.rydin@telia.com>
parents: 499
diff changeset
155 J = (x_u.*y_v - x_v.*y_u);
518
4709f2329372 Added J to propertied
Ylva Rydin <ylva.rydin@telia.com>
parents: 517
diff changeset
156 obj.J = spdiags(J, 0, obj.m_tot, obj.m_tot);
500
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
516
afff85574ddb Changed the penalty on the first derivative penalty terms, did not solve the problem
Ylva Rydin <ylva.rydin@telia.com>
parents: 515
diff changeset
200
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
201 % 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
202 % 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
203 % 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
204 % 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
205 % neighbour_scheme is an instance of Scheme that should be interfaced to.
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
206 % 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
207 function [closure, penalty] = boundary_condition(obj, boundary,~)
499
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
208 [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
209
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
210 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
211 a_n = @(t) spdiag(coeff_n(t));
499
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
212
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
213
499
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
214 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
215 tau1 = 1;
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
216 a = @(t)spdiag(g(t));
517
7a091a3527df sign change in SAT-TERM
Ylva Rydin <ylva.rydin@telia.com>
parents: 516
diff changeset
217 tau2 = @(t) (1*s*a(t))/2;
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
218
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
219 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
220 penalty_parameter_2 = @(t) halfnorm_inv_n*e*tau2(t);
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
221
515
ba92b27da5a0 Tried to make skewsym.
Ylva Rydin <ylva.rydin@telia.com>
parents: 500
diff changeset
222 closure = @(t) sqrt(obj.Ji)*(obj.c^2 * penalty_parameter_1(t)*e' + penalty_parameter_2(t)*e')*sqrt(obj.Ji);
520
f235284e2eb1 changed sign in penalty parameter
Ylva Rydin <ylva.rydin@telia.com>
parents: 519
diff changeset
223 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
224
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
225 end
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
226
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
227 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
228 % u denotes the solution in the own domain
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
229 % v denotes the solution in the neighbour domain
499
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
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);
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
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);
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
232
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
233 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
234 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
235 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
236 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
237
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
238
499
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
239 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
240 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
241
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
242 a = @(t)spdiag(gamm_u(t));
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
243
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
244 tau = s_u*1*1i/2;
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
245 sig = -s_u*1*1i/2;
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
246 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
247
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
248 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
249 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
250 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
251
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
252
515
ba92b27da5a0 Tried to make skewsym.
Ylva Rydin <ylva.rydin@telia.com>
parents: 500
diff changeset
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);
ba92b27da5a0 Tried to make skewsym.
Ylva Rydin <ylva.rydin@telia.com>
parents: 500
diff changeset
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);
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
255 end
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
256
497
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
257
499
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
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)
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
259
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
260 % gridMatrix = zeros(obj.m(2),obj.m(1));
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
261 % gridMatrix(:) = 1:numel(gridMatrix);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
262
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
263 ind = grid.funcToMatrix(obj.grid, 1:prod(obj.m));
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
264
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
265 switch boundary
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
266 case 'w'
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
267 e = obj.e_w;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
268 d_n = obj.du_w;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
269 d_t = obj.dv_w;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
270 s = -1;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
271
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
272 I = ind(1,:);
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
273 coeff_t = @(t)obj.a12(I);
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
274 coeff_n =@(t) obj.a11(I);
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
275 g = @(t)obj.g_1(I);
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
276 case 'e'
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
277 e = obj.e_e;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
278 d_n = obj.du_e;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
279 d_t = obj.dv_e;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
280 s = 1;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
281
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
282 I = ind(end,:);
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
283 coeff_t = @(t)obj.a12(I);
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
284 coeff_n = @(t)obj.a11(I);
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
285 g = @(t)obj.g_1(I);
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
286 case 's'
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
287 e = obj.e_s;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
288 d_n = obj.dv_s;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
289 d_t = obj.du_s;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
290 s = -1;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
291
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
292 I = ind(:,1)';
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
293 coeff_t = @(t)obj.a12(I);
499
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
294 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
295 g = @(t)obj.g_2(I);
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
296 case 'n'
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
297 e = obj.e_n;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
298 d_n = obj.dv_n;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
299 d_t = obj.du_n;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
300 s = 1;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
301
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
302 I = ind(:,end)';
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
303 coeff_t = @(t)obj.a12(I);
499
f1465e6aeb26 Commit before changing branch
Ylva Rydin <ylva.rydin@telia.com>
parents: 498
diff changeset
304 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
305 g = @(t)obj.g_2(I);
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
306 otherwise
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
307 error('No such boundary: boundary = %s',boundary);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
308 end
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
309
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
310 switch boundary
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
311 case {'w','e'}
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
312 halfnorm_inv_n = obj.Hiu;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
313 halfnorm_inv_t = obj.Hiv;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
314 halfnorm_t = obj.Hv;
491
26125cfefe11 Schrodinger 2d runs without exploding with fixed coordinates
Ylva Rydin <ylva.rydin@telia.com>
parents: 490
diff changeset
315
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
316 case {'s','n'}
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
317 halfnorm_inv_n = obj.Hiv;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
318 halfnorm_inv_t = obj.Hiu;
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
319 halfnorm_t = obj.Hu;
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 end
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
322
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
323 function N = size(obj)
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
324 N = prod(obj.m);
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
325 end
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
326 end
498
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
327 methods(Static)
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
328 % 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
329 % 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
330 % [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
331 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
332 [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
333 [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
334 end
324c927d8b1d chnaged sbp interfacein 1d among many things
Ylva Rydin <ylva.rydin@telia.com>
parents: 497
diff changeset
335 end
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
336 end