Mercurial > repos > public > sbplib
annotate +scheme/Beam.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 |
rev | line source |
---|---|
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
1 classdef Beam < scheme.Scheme |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
2 properties |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
3 order % Order accuracy for the approximation |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
4 grid |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
5 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
6 D % non-stabalized scheme operator |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
7 alpha |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
8 |
242 | 9 h |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 H % Discrete norm |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 Hi |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 |
328
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
245
diff
changeset
|
13 e_l, e_r |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 d1_l, d1_r |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 d2_l, d2_r |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
16 d3_l, d3_r |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
17 gamm |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
18 delt |
242 | 19 alphaII |
20 alphaIII | |
240
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
21 |
944
a35ed1d124d3
Change from opts to type in a few schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
910
diff
changeset
|
22 opt % TODO: Get rid of this and use the interface type instead |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
23 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
24 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
25 methods |
240
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
26 function obj = Beam(grid, order, alpha, opsGen, opt) |
236
8592358a3935
Beam: Added tuning as a parameter to contructor.
Jonatan Werpers <jonatan@werpers.com>
parents:
235
diff
changeset
|
27 default_arg('alpha', -1); |
240
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
28 |
328
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
245
diff
changeset
|
29 % default_arg('opsGen', @sbp.D4); |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
245
diff
changeset
|
30 default_arg('opsGen', @sbp.D4Variable); % Supposed to be better |
240
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
31 |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
32 opt_default.interface_l.tuning = 1.1; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
33 opt_default.interface_l.tau = []; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
34 opt_default.interface_l.sig = []; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
35 opt_default.interface_r.tuning = 1.1; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
36 opt_default.interface_r.tau = []; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
37 opt_default.interface_r.sig = []; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
38 default_struct('opt', opt_default); |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
39 |
176
d095b5396103
Fixed some bugs in Beam schemes.
Jonatan Werpers <jonatan@werpers.com>
parents:
175
diff
changeset
|
40 if ~isa(grid, 'grid.Cartesian') || grid.D() ~= 1 |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
41 error('Grid must be 1d cartesian'); |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
42 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
43 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
44 obj.grid = grid; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
45 obj.order = order; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
46 obj.alpha = alpha; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
47 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
48 m = grid.m; |
176
d095b5396103
Fixed some bugs in Beam schemes.
Jonatan Werpers <jonatan@werpers.com>
parents:
175
diff
changeset
|
49 h = grid.scaling(); |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
50 |
328
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
245
diff
changeset
|
51 x_lim = {grid.x{1}(1), grid.x{1}(end)}; |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
245
diff
changeset
|
52 ops = opsGen(m, x_lim, order); |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
53 |
328
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
245
diff
changeset
|
54 D4 = ops.D4; |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
245
diff
changeset
|
55 obj.H = ops.H; |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
245
diff
changeset
|
56 obj.Hi = ops.HI; |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
245
diff
changeset
|
57 obj.e_l = ops.e_l; |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
245
diff
changeset
|
58 obj.e_r = ops.e_r; |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
245
diff
changeset
|
59 obj.d1_l = ops.d1_l; |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
245
diff
changeset
|
60 obj.d1_r = ops.d1_r; |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
245
diff
changeset
|
61 obj.d2_l = ops.d2_l; |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
245
diff
changeset
|
62 obj.d2_r = ops.d2_r; |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
245
diff
changeset
|
63 obj.d3_l = ops.d3_l; |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
245
diff
changeset
|
64 obj.d3_r = ops.d3_r; |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
65 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
66 obj.D = alpha*D4; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
67 |
328
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
245
diff
changeset
|
68 alphaII = ops.borrowing.N.S2/2; |
240
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
69 alphaIII = ops.borrowing.N.S3/2; |
239
ba56e0d621f2
Beam: Added ability to pick alphaII and alphaIII to control tau and sigma.
Jonatan Werpers <jonatan@werpers.com>
parents:
236
diff
changeset
|
70 |
ba56e0d621f2
Beam: Added ability to pick alphaII and alphaIII to control tau and sigma.
Jonatan Werpers <jonatan@werpers.com>
parents:
236
diff
changeset
|
71 obj.gamm = h*alphaII; |
ba56e0d621f2
Beam: Added ability to pick alphaII and alphaIII to control tau and sigma.
Jonatan Werpers <jonatan@werpers.com>
parents:
236
diff
changeset
|
72 obj.delt = h^3*alphaIII; |
242 | 73 obj.alphaII = alphaII; |
74 obj.alphaIII = alphaIII; | |
75 obj.h = h; | |
240
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
76 obj.opt = opt; |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
77 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
78 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
79 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
80 % Closure functions return the opertors applied to the own doamin to close the boundary |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
81 % Penalty functions return the opertors to force the solution. In the case of an interface it returns the operator applied to the other doamin. |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
82 % boundary is a string specifying the boundary e.g. 'l','r' or 'e','w','n','s'. |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
83 % type is a string specifying the type of boundary condition if there are several. |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
84 % neighbour_scheme is an instance of Scheme that should be interfaced to. |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
85 % neighbour_boundary is a string specifying which boundary to interface to. |
220
5df8d20281fe
Made scheme boundary_condition return a cell array of penalties if there are several of them.
Jonatan Werpers <jonatan@werpers.com>
parents:
176
diff
changeset
|
86 function [closure, penalty] = boundary_condition(obj,boundary,type) |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
87 default_arg('type','dn'); |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
88 |
1045
dc1bcbef2a86
Remove ability to get several boundary ops at the same time from a few of the schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
1044
diff
changeset
|
89 e = obj.getBoundaryOperator('e', boundary); |
dc1bcbef2a86
Remove ability to get several boundary ops at the same time from a few of the schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
1044
diff
changeset
|
90 d1 = obj.getBoundaryOperator('d1', boundary); |
dc1bcbef2a86
Remove ability to get several boundary ops at the same time from a few of the schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
1044
diff
changeset
|
91 d2 = obj.getBoundaryOperator('d2', boundary); |
dc1bcbef2a86
Remove ability to get several boundary ops at the same time from a few of the schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
1044
diff
changeset
|
92 d3 = obj.getBoundaryOperator('d3', boundary); |
998
2b1b944deae1
Add getBoundaryOperator to all 1d schemes. Did not add getBoundaryQuadrature because it doesnt make sense in 1d (?)
Martin Almquist <malmquist@stanford.edu>
parents:
944
diff
changeset
|
93 s = obj.getBoundarySign(boundary); |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
94 gamm = obj.gamm; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
95 delt = obj.delt; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
96 |
545 | 97 |
98 % TODO: Can this be simplifed? Can I handle conditions on u on its own, u_x on its own ... | |
99 | |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
100 switch type |
339
3135e13ae509
Implemented free BC. Not tested yet.
Jonatan Werpers <jonatan@werpers.com>
parents:
329
diff
changeset
|
101 case {'dn', 'clamped'} % Dirichlet-neumann boundary condition |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
102 alpha = obj.alpha; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
103 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
104 % tau1 < -alpha^2/gamma |
220
5df8d20281fe
Made scheme boundary_condition return a cell array of penalties if there are several of them.
Jonatan Werpers <jonatan@werpers.com>
parents:
176
diff
changeset
|
105 % tuning = 2; |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
106 tuning = 1.1; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
107 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
108 tau1 = tuning * alpha/delt; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
109 tau4 = s*alpha; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
110 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
111 sig2 = tuning * alpha/gamm; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
112 sig3 = -s*alpha; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
113 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
114 tau = tau1*e+tau4*d3; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
115 sig = sig2*d1+sig3*d2; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
116 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
117 closure = obj.Hi*(tau*e' + sig*d1'); |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
118 |
223
96dedf892910
Fixed sign error in beam BC penalties.
Jonatan Werpers <jonatan@werpers.com>
parents:
220
diff
changeset
|
119 penalty{1} = -obj.Hi*tau; |
96dedf892910
Fixed sign error in beam BC penalties.
Jonatan Werpers <jonatan@werpers.com>
parents:
220
diff
changeset
|
120 penalty{2} = -obj.Hi*sig; |
339
3135e13ae509
Implemented free BC. Not tested yet.
Jonatan Werpers <jonatan@werpers.com>
parents:
329
diff
changeset
|
121 |
3135e13ae509
Implemented free BC. Not tested yet.
Jonatan Werpers <jonatan@werpers.com>
parents:
329
diff
changeset
|
122 |
3135e13ae509
Implemented free BC. Not tested yet.
Jonatan Werpers <jonatan@werpers.com>
parents:
329
diff
changeset
|
123 case {'free'} |
340
25ae8333ce2b
scheme.Beam: Fixed stability of free bc.
Jonatan Werpers <jonatan@werpers.com>
parents:
339
diff
changeset
|
124 a = obj.alpha; |
339
3135e13ae509
Implemented free BC. Not tested yet.
Jonatan Werpers <jonatan@werpers.com>
parents:
329
diff
changeset
|
125 |
3135e13ae509
Implemented free BC. Not tested yet.
Jonatan Werpers <jonatan@werpers.com>
parents:
329
diff
changeset
|
126 tau = s*a*d1; |
3135e13ae509
Implemented free BC. Not tested yet.
Jonatan Werpers <jonatan@werpers.com>
parents:
329
diff
changeset
|
127 sig = -s*a*e; |
3135e13ae509
Implemented free BC. Not tested yet.
Jonatan Werpers <jonatan@werpers.com>
parents:
329
diff
changeset
|
128 |
3135e13ae509
Implemented free BC. Not tested yet.
Jonatan Werpers <jonatan@werpers.com>
parents:
329
diff
changeset
|
129 closure = obj.Hi*(tau*d2' + sig*d3'); |
3135e13ae509
Implemented free BC. Not tested yet.
Jonatan Werpers <jonatan@werpers.com>
parents:
329
diff
changeset
|
130 penalty{1} = -obj.Hi*tau; |
1041
25d0efdb0f75
Fix penalty bug in Beam
Jonatan Werpers <jonatan@werpers.com>
parents:
944
diff
changeset
|
131 penalty{2} = -obj.Hi*sig; |
339
3135e13ae509
Implemented free BC. Not tested yet.
Jonatan Werpers <jonatan@werpers.com>
parents:
329
diff
changeset
|
132 |
617
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
133 case 'e' |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
134 alpha = obj.alpha; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
135 tuning = 1.1; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
136 |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
137 tau1 = tuning * alpha/delt; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
138 tau4 = s*alpha; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
139 |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
140 tau = tau1*e+tau4*d3; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
141 |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
142 closure = obj.Hi*tau*e'; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
143 penalty = -obj.Hi*tau; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
144 case 'd1' |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
145 alpha = obj.alpha; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
146 |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
147 tuning = 1.1; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
148 |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
149 sig2 = tuning * alpha/gamm; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
150 sig3 = -s*alpha; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
151 |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
152 sig = sig2*d1+sig3*d2; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
153 |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
154 closure = obj.Hi*sig*d1'; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
155 penalty = -obj.Hi*sig; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
156 |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
157 case 'd2' |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
158 a = obj.alpha; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
159 |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
160 tau = s*a*d1; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
161 |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
162 closure = obj.Hi*tau*d2'; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
163 penalty = -obj.Hi*tau; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
164 case 'd3' |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
165 a = obj.alpha; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
166 |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
167 sig = -s*a*e; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
168 |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
169 closure = obj.Hi*sig*d3'; |
4ced7d47bd1f
Beam: Add ability to set one BC at a time
Jonatan Werpers <jonatan@werpers.com>
parents:
545
diff
changeset
|
170 penalty = -obj.Hi*sig; |
339
3135e13ae509
Implemented free BC. Not tested yet.
Jonatan Werpers <jonatan@werpers.com>
parents:
329
diff
changeset
|
171 |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
172 otherwise % Unknown, boundary condition |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
173 error('No such boundary condition: type = %s',type); |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
174 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
175 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
176 |
944
a35ed1d124d3
Change from opts to type in a few schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
910
diff
changeset
|
177 function [closure, penalty] = interface(obj,boundary,neighbour_scheme,neighbour_boundary, type) |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
178 % u denotes the solution in the own domain |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
179 % v denotes the solution in the neighbour domain |
1045
dc1bcbef2a86
Remove ability to get several boundary ops at the same time from a few of the schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
1044
diff
changeset
|
180 e_u = obj.getBoundaryOperator('e', boundary); |
dc1bcbef2a86
Remove ability to get several boundary ops at the same time from a few of the schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
1044
diff
changeset
|
181 d1_u = obj.getBoundaryOperator('d1', boundary); |
dc1bcbef2a86
Remove ability to get several boundary ops at the same time from a few of the schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
1044
diff
changeset
|
182 d2_u = obj.getBoundaryOperator('d2', boundary); |
dc1bcbef2a86
Remove ability to get several boundary ops at the same time from a few of the schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
1044
diff
changeset
|
183 d3_u = obj.getBoundaryOperator('d3', boundary); |
998
2b1b944deae1
Add getBoundaryOperator to all 1d schemes. Did not add getBoundaryQuadrature because it doesnt make sense in 1d (?)
Martin Almquist <malmquist@stanford.edu>
parents:
944
diff
changeset
|
184 s_u = obj.getBoundarySign(boundary); |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
185 |
1045
dc1bcbef2a86
Remove ability to get several boundary ops at the same time from a few of the schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
1044
diff
changeset
|
186 e_v = neighbour_scheme.getBoundaryOperator('e', neighbour_boundary); |
dc1bcbef2a86
Remove ability to get several boundary ops at the same time from a few of the schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
1044
diff
changeset
|
187 d1_v = neighbour_scheme.getBoundaryOperator('d1', neighbour_boundary); |
dc1bcbef2a86
Remove ability to get several boundary ops at the same time from a few of the schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
1044
diff
changeset
|
188 d2_v = neighbour_scheme.getBoundaryOperator('d2', neighbour_boundary); |
dc1bcbef2a86
Remove ability to get several boundary ops at the same time from a few of the schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
1044
diff
changeset
|
189 d3_v = neighbour_scheme.getBoundaryOperator('d3', neighbour_boundary); |
998
2b1b944deae1
Add getBoundaryOperator to all 1d schemes. Did not add getBoundaryQuadrature because it doesnt make sense in 1d (?)
Martin Almquist <malmquist@stanford.edu>
parents:
944
diff
changeset
|
190 s_v = neighbour_scheme.getBoundarySign(neighbour_boundary); |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
191 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
192 alpha_u = obj.alpha; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
193 alpha_v = neighbour_scheme.alpha; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
194 |
240
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
195 switch boundary |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
196 case 'l' |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
197 interface_opt = obj.opt.interface_l; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
198 case 'r' |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
199 interface_opt = obj.opt.interface_r; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
200 end |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
201 |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
202 |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
203 if isempty(interface_opt.tau) && isempty(interface_opt.sig) |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
204 gamm_u = obj.gamm; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
205 delt_u = obj.delt; |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
206 |
240
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
207 gamm_v = neighbour_scheme.gamm; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
208 delt_v = neighbour_scheme.delt; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
209 |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
210 tuning = interface_opt.tuning; |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
211 |
240
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
212 tau1 = ((alpha_u/2)/delt_u + (alpha_v/2)/delt_v)/2*tuning; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
213 sig2 = ((alpha_u/2)/gamm_u + (alpha_v/2)/gamm_v)/2*tuning; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
214 else |
242 | 215 h_u = obj.h; |
216 h_v = neighbour_scheme.h; | |
217 | |
218 switch neighbour_boundary | |
219 case 'l' | |
220 neighbour_interface_opt = neighbour_scheme.opt.interface_l; | |
221 case 'r' | |
222 neighbour_interface_opt = neighbour_scheme.opt.interface_r; | |
223 end | |
224 | |
225 tau_u = interface_opt.tau; | |
226 sig_u = interface_opt.sig; | |
227 tau_v = neighbour_interface_opt.tau; | |
228 sig_v = neighbour_interface_opt.sig; | |
229 | |
230 tau1 = tau_u/h_u^3 + tau_v/h_v^3; | |
231 sig2 = sig_u/h_u + sig_v/h_v; | |
240
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
232 end |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
233 |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
234 tau4 = s_u*alpha_u/2; |
46256fffa329
Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents:
239
diff
changeset
|
235 sig3 = -s_u*alpha_u/2; |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
236 phi2 = s_u*1/2; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
237 psi1 = -s_u*1/2; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
238 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
239 tau = tau1*e_u + tau4*d3_u; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
240 sig = sig2*d1_u + sig3*d2_u ; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
241 phi = phi2*d1_u ; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
242 psi = psi1*e_u ; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
243 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
244 closure = obj.Hi*(tau*e_u' + sig*d1_u' + phi*alpha_u*d2_u' + psi*alpha_u*d3_u'); |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
245 penalty = -obj.Hi*(tau*e_v' + sig*d1_v' + phi*alpha_v*d2_v' + psi*alpha_v*d3_v'); |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
246 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
247 |
998
2b1b944deae1
Add getBoundaryOperator to all 1d schemes. Did not add getBoundaryQuadrature because it doesnt make sense in 1d (?)
Martin Almquist <malmquist@stanford.edu>
parents:
944
diff
changeset
|
248 % Returns the boundary operator op for the boundary specified by the string boundary. |
1045
dc1bcbef2a86
Remove ability to get several boundary ops at the same time from a few of the schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
1044
diff
changeset
|
249 % op -- string |
998
2b1b944deae1
Add getBoundaryOperator to all 1d schemes. Did not add getBoundaryQuadrature because it doesnt make sense in 1d (?)
Martin Almquist <malmquist@stanford.edu>
parents:
944
diff
changeset
|
250 % boundary -- string |
1045
dc1bcbef2a86
Remove ability to get several boundary ops at the same time from a few of the schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
1044
diff
changeset
|
251 function o = getBoundaryOperator(obj, op, boundary) |
1046
19ed046aec52
Clean up getBoundaryOps for a few schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
1045
diff
changeset
|
252 assertIsMember(op, {'e', 'd1', 'd2', 'd3'}) |
1042
8d73fcdb07a5
Add asserts to boundary identifier inputs
Jonatan Werpers <jonatan@werpers.com>
parents:
998
diff
changeset
|
253 assertIsMember(boundary, {'l', 'r'}) |
998
2b1b944deae1
Add getBoundaryOperator to all 1d schemes. Did not add getBoundaryQuadrature because it doesnt make sense in 1d (?)
Martin Almquist <malmquist@stanford.edu>
parents:
944
diff
changeset
|
254 |
1046
19ed046aec52
Clean up getBoundaryOps for a few schemes
Jonatan Werpers <jonatan@werpers.com>
parents:
1045
diff
changeset
|
255 o = obj.([op, '_', boundary]); |
998
2b1b944deae1
Add getBoundaryOperator to all 1d schemes. Did not add getBoundaryQuadrature because it doesnt make sense in 1d (?)
Martin Almquist <malmquist@stanford.edu>
parents:
944
diff
changeset
|
256 end |
2b1b944deae1
Add getBoundaryOperator to all 1d schemes. Did not add getBoundaryQuadrature because it doesnt make sense in 1d (?)
Martin Almquist <malmquist@stanford.edu>
parents:
944
diff
changeset
|
257 |
1049
0c504a21432d
Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents:
1046
diff
changeset
|
258 % Returns square boundary quadrature matrix, of dimension |
0c504a21432d
Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents:
1046
diff
changeset
|
259 % corresponding to the number of boundary points |
0c504a21432d
Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents:
1046
diff
changeset
|
260 % |
0c504a21432d
Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents:
1046
diff
changeset
|
261 % boundary -- string |
0c504a21432d
Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents:
1046
diff
changeset
|
262 % Note: for 1d diffOps, the boundary quadrature is the scalar 1. |
0c504a21432d
Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents:
1046
diff
changeset
|
263 function H_b = getBoundaryQuadrature(obj, boundary) |
0c504a21432d
Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents:
1046
diff
changeset
|
264 assertIsMember(boundary, {'l', 'r'}) |
0c504a21432d
Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents:
1046
diff
changeset
|
265 |
0c504a21432d
Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents:
1046
diff
changeset
|
266 H_b = 1; |
0c504a21432d
Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents:
1046
diff
changeset
|
267 end |
0c504a21432d
Add getBoundaryQuadrature to all 1d diffOps
Martin Almquist <malmquist@stanford.edu>
parents:
1046
diff
changeset
|
268 |
998
2b1b944deae1
Add getBoundaryOperator to all 1d schemes. Did not add getBoundaryQuadrature because it doesnt make sense in 1d (?)
Martin Almquist <malmquist@stanford.edu>
parents:
944
diff
changeset
|
269 % Returns the boundary sign. The right boundary is considered the positive boundary |
2b1b944deae1
Add getBoundaryOperator to all 1d schemes. Did not add getBoundaryQuadrature because it doesnt make sense in 1d (?)
Martin Almquist <malmquist@stanford.edu>
parents:
944
diff
changeset
|
270 % boundary -- string |
2b1b944deae1
Add getBoundaryOperator to all 1d schemes. Did not add getBoundaryQuadrature because it doesnt make sense in 1d (?)
Martin Almquist <malmquist@stanford.edu>
parents:
944
diff
changeset
|
271 function s = getBoundarySign(obj, boundary) |
1042
8d73fcdb07a5
Add asserts to boundary identifier inputs
Jonatan Werpers <jonatan@werpers.com>
parents:
998
diff
changeset
|
272 assertIsMember(boundary, {'l', 'r'}) |
8d73fcdb07a5
Add asserts to boundary identifier inputs
Jonatan Werpers <jonatan@werpers.com>
parents:
998
diff
changeset
|
273 |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
274 switch boundary |
998
2b1b944deae1
Add getBoundaryOperator to all 1d schemes. Did not add getBoundaryQuadrature because it doesnt make sense in 1d (?)
Martin Almquist <malmquist@stanford.edu>
parents:
944
diff
changeset
|
275 case {'r'} |
2b1b944deae1
Add getBoundaryOperator to all 1d schemes. Did not add getBoundaryQuadrature because it doesnt make sense in 1d (?)
Martin Almquist <malmquist@stanford.edu>
parents:
944
diff
changeset
|
276 s = 1; |
2b1b944deae1
Add getBoundaryOperator to all 1d schemes. Did not add getBoundaryQuadrature because it doesnt make sense in 1d (?)
Martin Almquist <malmquist@stanford.edu>
parents:
944
diff
changeset
|
277 case {'l'} |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
278 s = -1; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
279 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
280 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
281 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
282 function N = size(obj) |
224
05304d7792dc
Fixed type in scheme.Beam
Jonatan Werpers <jonatan@werpers.com>
parents:
223
diff
changeset
|
283 N = obj.grid.N; |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
284 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
285 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
286 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
287 end |