annotate +scheme/Schrodinger2dCurve.m @ 517:7a091a3527df feature/quantumTriangles

sign change in SAT-TERM
author Ylva Rydin <ylva.rydin@telia.com>
date Mon, 10 Jul 2017 09:27:58 +0200
parents afff85574ddb
children 4709f2329372
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 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);
83734c26b8e3 Small changes
Ylva Rydin <ylva.rydin@telia.com>
parents: 499
diff changeset
156
83734c26b8e3 Small changes
Ylva Rydin <ylva.rydin@telia.com>
parents: 499
diff changeset
157 Ji = spdiags(1./J, 0, obj.m_tot, obj.m_tot);
83734c26b8e3 Small changes
Ylva Rydin <ylva.rydin@telia.com>
parents: 499
diff changeset
158 obj.Ji = Ji;
83734c26b8e3 Small changes
Ylva Rydin <ylva.rydin@telia.com>
parents: 499
diff changeset
159
83734c26b8e3 Small changes
Ylva Rydin <ylva.rydin@telia.com>
parents: 499
diff changeset
160 a11 = Ji* (x_v.^2 + y_v.^2);
83734c26b8e3 Small changes
Ylva Rydin <ylva.rydin@telia.com>
parents: 499
diff changeset
161 a12 = -Ji* (x_u.*x_v + y_u.*y_v);
83734c26b8e3 Small changes
Ylva Rydin <ylva.rydin@telia.com>
parents: 499
diff changeset
162 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
163
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
164 obj.a11 = a11;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
165 obj.a12 = a12;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
166 obj.a22 = a22;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
167
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
168 % Assemble full operators
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
169 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
170 obj.DUV = obj.Du*L_12*obj.Dv;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
171 obj.DVU = obj.Dv*L_12*obj.Du;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
172
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 for i = 1:obj.m_v
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
175 D = obj.D2_u(a11(obj.ind(:,i)));
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
176 p = obj.ind(:,i);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
177 obj.DUU(p,p) = D;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
178 end
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
179
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
180 for i = 1:obj.m_u
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
181 D = obj.D2_v(a22(obj.ind(i,:)));
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
182 p = obj.ind(i,:);
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
183 obj.DVV(p,p) = D;
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
184 end
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
185
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
186 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
187 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
188
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
189 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
190 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
191
4905446f165e Added 2D interface to shrodinger
Ylva Rydin <ylva.rydin@telia.com>
parents: 493
diff changeset
192 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
193 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
194 obj.t_up=t;
490
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
195 end
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
b13d44271ead Schrodinger2dCurve Added
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
198 % 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
199
490
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));
517
7a091a3527df sign change in SAT-TERM
Ylva Rydin <ylva.rydin@telia.com>
parents: 516
diff changeset
216 tau2 = @(t) (1*s*a(t))/2;
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