annotate +scheme/Schrodinger.m @ 1198:2924b3a9b921 feature/d2_compatible

Add OpSet for fully compatible D2Variable, created from regular D2Variable by replacing d1 by first row of D1. Formal reduction by one order of accuracy at the boundary point.
author Martin Almquist <malmquist@stanford.edu>
date Fri, 16 Aug 2019 14:30:28 -0700
parents 0c504a21432d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
65
33f0654a2413 Fixed mistakes in Schrodinger scheme. BC are now working.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
1 classdef Schrodinger < scheme.Scheme
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 properties
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 m % Number of points in each direction, possibly a vector
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4 h % Grid spacing
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 x % Grid
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6 order % Order accuracy for the approximation
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8 D % non-stabalized scheme operator
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9 H % Discrete norm
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 M % Derivative norm
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11 alpha
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12
65
33f0654a2413 Fixed mistakes in Schrodinger scheme. BC are now working.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
13 D2
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 Hi
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15 e_l
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16 e_r
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17 d1_l
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18 d1_r
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19 gamm
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22 methods
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23 % Solving SE in the form u_t = i*u_xx -i*V;
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 function obj = Schrodinger(m,xlim,order,V)
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 default_arg('V',0);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27 [x, h] = util.get_grid(xlim{:},m);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29 ops = sbp.Ordinary(m,h,order);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
30
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 obj.D2 = sparse(ops.derivatives.D2);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32 obj.H = sparse(ops.norms.H);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33 obj.Hi = sparse(ops.norms.HI);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
34 obj.M = sparse(ops.norms.M);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
35 obj.e_l = sparse(ops.boundary.e_1);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
36 obj.e_r = sparse(ops.boundary.e_m);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
37 obj.d1_l = sparse(ops.boundary.S_1);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38 obj.d1_r = sparse(ops.boundary.S_m);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
39
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
40
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
41 if isa(V,'function_handle')
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
42 V_vec = V(x);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
43 else
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
44 V_vec = x*0 + V;
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
45 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
46
65
33f0654a2413 Fixed mistakes in Schrodinger scheme. BC are now working.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
47 V_mat = spdiags(V_vec,0,m,m);
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
48
67
446d67a49cd8 Fixed some errors in scheme.Schrodinger.m
Jonatan Werpers <jonatan@werpers.com>
parents: 65
diff changeset
49 obj.D = 1i * obj.D2 - 1i * V_mat;
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
50
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
51 obj.m = m;
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
52 obj.h = h;
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
53 obj.order = order;
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
54
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
55 obj.x = x;
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
56 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
57
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
58
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
59 % Closure functions return the opertors applied to the own doamin to close the boundary
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
60 % Penalty functions return the opertors to force the solution. In the case of an interface it returns the operator applied to the other doamin.
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
61 % boundary is a string specifying the boundary e.g. 'l','r' or 'e','w','n','s'.
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
62 % type is a string specifying the type of boundary condition if there are several.
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
63 % data is a function returning the data that should be applied at the boundary.
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
64 % neighbour_scheme is an instance of Scheme that should be interfaced to.
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
65 % neighbour_boundary is a string specifying which boundary to interface to.
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
66 function [closure, penalty] = boundary_condition(obj,boundary,type,data)
65
33f0654a2413 Fixed mistakes in Schrodinger scheme. BC are now working.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
67 default_arg('type','dirichlet');
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
68 default_arg('data',0);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
69
999
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
70 [e, d] = obj.getBoundaryOperator({'e', 'd'}, boundary);
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
71 s = obj.getBoundarySign(boundary);
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
72
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
73 switch type
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
74 % Dirichlet boundary condition
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
75 case {'D','d','dirichlet'}
65
33f0654a2413 Fixed mistakes in Schrodinger scheme. BC are now working.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
76 tau = s * 1i*d;
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
77 closure = obj.Hi*tau*e';
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
78
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
79 switch class(data)
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
80 case 'double'
65
33f0654a2413 Fixed mistakes in Schrodinger scheme. BC are now working.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
81 penalty = -obj.Hi*tau*data;
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
82 case 'function_handle'
65
33f0654a2413 Fixed mistakes in Schrodinger scheme. BC are now working.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
83 penalty = @(t)-obj.Hi*tau*data(t);
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
84 otherwise
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
85 error('Wierd data argument!')
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
86 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
87
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
88 % Unknown, boundary condition
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
89 otherwise
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
90 error('No such boundary condition: type = %s',type);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
91 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
92 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
93
946
706d1c2b4199 Raname opts to type in a bunch of interface methods
Jonatan Werpers <jonatan@werpers.com>
parents: 910
diff changeset
94 function [closure, penalty] = interface(obj, boundary, neighbour_scheme, neighbour_boundary, type)
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
95 % u denotes the solution in the own domain
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
96 % v denotes the solution in the neighbour domain
999
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
97 [e_u, d_u] = obj.getBoundaryOperator({'e', 'd'}, boundary);
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
98 s_u = obj.getBoundarySign(boundary);
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
99
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
100 [e_v, d_v] = neighbour_scheme.getBoundaryOperator({'e', 'd'}, neighbour_boundary);
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
101 s_v = neighbour_scheme.getBoundarySign(neighbour_boundary);
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
102
67
446d67a49cd8 Fixed some errors in scheme.Schrodinger.m
Jonatan Werpers <jonatan@werpers.com>
parents: 65
diff changeset
103 a = -s_u* 1/2 * 1i ;
65
33f0654a2413 Fixed mistakes in Schrodinger scheme. BC are now working.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
104 b = a';
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
105
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
106 tau = b*d_u;
67
446d67a49cd8 Fixed some errors in scheme.Schrodinger.m
Jonatan Werpers <jonatan@werpers.com>
parents: 65
diff changeset
107 sig = -a*e_u;
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
108
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
109 closure = obj.Hi * (tau*e_u' + sig*d_u');
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
110 penalty = obj.Hi * (-tau*e_v' - sig*d_v');
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
111 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
112
999
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
113 % Returns the boundary operator op for the boundary specified by the string boundary.
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
114 % op -- string or a cell array of strings
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
115 % boundary -- string
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
116 function varargout = getBoundaryOperator(obj, op, boundary)
1042
8d73fcdb07a5 Add asserts to boundary identifier inputs
Jonatan Werpers <jonatan@werpers.com>
parents: 999
diff changeset
117 assertIsMember(boundary, {'l', 'r'})
999
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
118
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
119 if ~iscell(op)
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
120 op = {op};
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
121 end
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
122
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
123 for i = 1:numel(op)
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
124 switch op{i}
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
125 case 'e'
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
126 switch boundary
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
127 case 'l'
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
128 e = obj.e_l;
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
129 case 'r'
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
130 e = obj.e_r;
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
131 end
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
132 varargout{i} = e;
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
133
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
134 case 'd'
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
135 switch boundary
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
136 case 'l'
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
137 d = obj.d1_l;
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
138 case 'r'
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
139 d = obj.d1_r;
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
140 end
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
141 varargout{i} = d;
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
142 end
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
143 end
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
144 end
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
145
1049
0c504a21432d Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents: 1044
diff changeset
146 % Returns square boundary quadrature matrix, of dimension
0c504a21432d Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents: 1044
diff changeset
147 % corresponding to the number of boundary points
0c504a21432d Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents: 1044
diff changeset
148 %
0c504a21432d Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents: 1044
diff changeset
149 % boundary -- string
0c504a21432d Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents: 1044
diff changeset
150 % Note: for 1d diffOps, the boundary quadrature is the scalar 1.
0c504a21432d Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents: 1044
diff changeset
151 function H_b = getBoundaryQuadrature(obj, boundary)
0c504a21432d Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents: 1044
diff changeset
152 assertIsMember(boundary, {'l', 'r'})
0c504a21432d Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents: 1044
diff changeset
153
0c504a21432d Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents: 1044
diff changeset
154 H_b = 1;
0c504a21432d Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents: 1044
diff changeset
155 end
0c504a21432d Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents: 1044
diff changeset
156
999
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
157 % Returns the boundary sign. The right boundary is considered the positive boundary
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
158 % boundary -- string
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
159 function s = getBoundarySign(obj, boundary)
1042
8d73fcdb07a5 Add asserts to boundary identifier inputs
Jonatan Werpers <jonatan@werpers.com>
parents: 999
diff changeset
160 assertIsMember(boundary, {'l', 'r'})
8d73fcdb07a5 Add asserts to boundary identifier inputs
Jonatan Werpers <jonatan@werpers.com>
parents: 999
diff changeset
161
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
162 switch boundary
999
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
163 case {'r'}
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
164 s = 1;
337c4d1dcef5 Fix overlooked Schrodinger1d scheme.
Martin Almquist <malmquist@stanford.edu>
parents: 946
diff changeset
165 case {'l'}
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
166 s = -1;
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
167 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
168 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
169
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
170 function N = size(obj)
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
171 N = obj.m;
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
172 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
173
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
174 end
1043
c12b84fe9b00 Remove static method `interface_coupling` that shouldn't have existed in the first place
Jonatan Werpers <jonatan@werpers.com>
parents: 946
diff changeset
175 end