annotate +scheme/Beam.m @ 242:f4306afd6849 feature/beams

Beam: improvements.
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 30 Aug 2016 10:43:58 +0200
parents 46256fffa329
children 369c643b60c3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
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
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 e_l, e_r
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
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
19 alphaII
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
20 alphaIII
240
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
21
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
22 opt
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
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
29
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
30 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
31 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
32 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
33 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
34 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
35 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
36 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
37
236
8592358a3935 Beam: Added tuning as a parameter to contructor.
Jonatan Werpers <jonatan@werpers.com>
parents: 235
diff changeset
38
232
443b14ea705b scheme.Beam: changes to possibly better operators.
Jonatan Werpers <jonatan@werpers.com>
parents: 224
diff changeset
39 % default_arg('opsGen', @sbp.Higher);
443b14ea705b scheme.Beam: changes to possibly better operators.
Jonatan Werpers <jonatan@werpers.com>
parents: 224
diff changeset
40 default_arg('opsGen', @sbp.HigherCompatibleVariable); % Supposed to be better
175
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
41
176
d095b5396103 Fixed some bugs in Beam schemes.
Jonatan Werpers <jonatan@werpers.com>
parents: 175
diff changeset
42 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
43 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
44 end
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
45
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
46 obj.grid = grid;
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
47 obj.order = order;
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
48 obj.alpha = alpha;
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
49
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
50 m = grid.m;
176
d095b5396103 Fixed some bugs in Beam schemes.
Jonatan Werpers <jonatan@werpers.com>
parents: 175
diff changeset
51 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
52
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
53 ops = opsGen(m, h, order);
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
54
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
55 I = speye(m);
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
56
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
57 D4 = sparse(ops.derivatives.D4);
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
58 obj.H = sparse(ops.norms.H);
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
59 obj.Hi = sparse(ops.norms.HI);
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
60 obj.e_l = sparse(ops.boundary.e_1);
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
61 obj.e_r = sparse(ops.boundary.e_m);
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
62 obj.d1_l = sparse(ops.boundary.S_1);
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
63 obj.d1_r = sparse(ops.boundary.S_m);
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
64 obj.d2_l = sparse(ops.boundary.S2_1);
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
65 obj.d2_r = sparse(ops.boundary.S2_m);
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
66 obj.d3_l = sparse(ops.boundary.S3_1);
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
67 obj.d3_r = sparse(ops.boundary.S3_m);
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
68
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
69 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
70
240
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
71 alphaII = ops.borrowing.N.S2/2;
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
72 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
73
ba56e0d621f2 Beam: Added ability to pick alphaII and alphaIII to control tau and sigma.
Jonatan Werpers <jonatan@werpers.com>
parents: 236
diff changeset
74 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
75 obj.delt = h^3*alphaIII;
242
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
76 obj.alphaII = alphaII;
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
77 obj.alphaIII = alphaIII;
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
78 obj.h = h;
240
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
79 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
80 end
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
81
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
82
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
83 % 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
84 % 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
85 % 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
86 % 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
87 % 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
88 % 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
89 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
90 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
91
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
92 [e, d1, d2, d3, s] = obj.get_boundary_ops(boundary);
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
93 gamm = obj.gamm;
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
94 delt = obj.delt;
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
95
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
96 switch type
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
97 case {'dn'} % Dirichlet-neumann boundary condition
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
98 alpha = obj.alpha;
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
99
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
100 % 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
101 % tuning = 2;
175
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
102 tuning = 1.1;
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 = tuning * alpha/delt;
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
105 tau4 = s*alpha;
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
106
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
107 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
108 sig3 = -s*alpha;
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
109
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
110 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
111 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
112
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
113 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
114
223
96dedf892910 Fixed sign error in beam BC penalties.
Jonatan Werpers <jonatan@werpers.com>
parents: 220
diff changeset
115 penalty{1} = -obj.Hi*tau;
96dedf892910 Fixed sign error in beam BC penalties.
Jonatan Werpers <jonatan@werpers.com>
parents: 220
diff changeset
116 penalty{2} = -obj.Hi*sig;
175
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
117 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
118 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
119 end
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
120 end
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
121
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
122 function [closure, penalty] = interface(obj,boundary,neighbour_scheme,neighbour_boundary)
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
123 % 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
124 % v denotes the solution in the neighbour domain
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
125 [e_u,d1_u,d2_u,d3_u,s_u] = obj.get_boundary_ops(boundary);
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
126 [e_v,d1_v,d2_v,d3_v,s_v] = neighbour_scheme.get_boundary_ops(neighbour_boundary);
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
127
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
128
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
129 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
130 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
131
242
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
132
240
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
133 switch boundary
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
134 case 'l'
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
135 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
136 case 'r'
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
137 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
138 end
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
139
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
140
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
141 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
142 gamm_u = obj.gamm;
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
143 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
144
240
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
145 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
146 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
147
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
148 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
149
240
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
150 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
151 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
152 else
242
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
153 h_u = obj.h;
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
154 h_v = neighbour_scheme.h;
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
155
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
156 switch neighbour_boundary
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
157 case 'l'
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
158 neighbour_interface_opt = neighbour_scheme.opt.interface_l;
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
159 case 'r'
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
160 neighbour_interface_opt = neighbour_scheme.opt.interface_r;
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
161 end
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
162
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
163 tau_u = interface_opt.tau;
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
164 sig_u = interface_opt.sig;
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
165 tau_v = neighbour_interface_opt.tau;
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
166 sig_v = neighbour_interface_opt.sig;
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
167
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
168 tau1 = tau_u/h_u^3 + tau_v/h_v^3;
f4306afd6849 Beam: improvements.
Jonatan Werpers <jonatan@werpers.com>
parents: 240
diff changeset
169 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
170 end
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
171
46256fffa329 Added some stuff for default structs. Improved interface for beam.
Jonatan Werpers <jonatan@werpers.com>
parents: 239
diff changeset
172 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
173 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
174 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
175 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
176
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
177 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
178 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
179 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
180 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
181
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
182 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
183 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
184 end
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
185
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
186 % Returns the boundary ops and sign for the boundary specified by the string boundary.
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
187 % The right boundary is considered the positive boundary
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
188 function [e, d1, d2, d3, s] = get_boundary_ops(obj,boundary)
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
189 switch boundary
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
190 case 'l'
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
191 e = obj.e_l;
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
192 d1 = obj.d1_l;
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
193 d2 = obj.d2_l;
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
194 d3 = obj.d3_l;
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
195 s = -1;
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
196 case 'r'
176
d095b5396103 Fixed some bugs in Beam schemes.
Jonatan Werpers <jonatan@werpers.com>
parents: 175
diff changeset
197 e = obj.e_r;
d095b5396103 Fixed some bugs in Beam schemes.
Jonatan Werpers <jonatan@werpers.com>
parents: 175
diff changeset
198 d1 = obj.d1_r;
d095b5396103 Fixed some bugs in Beam schemes.
Jonatan Werpers <jonatan@werpers.com>
parents: 175
diff changeset
199 d2 = obj.d2_r;
d095b5396103 Fixed some bugs in Beam schemes.
Jonatan Werpers <jonatan@werpers.com>
parents: 175
diff changeset
200 d3 = obj.d3_r;
175
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
201 s = 1;
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
202 otherwise
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
203 error('No such boundary: boundary = %s',boundary);
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
204 end
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
205 end
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
206
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
207 function N = size(obj)
224
05304d7792dc Fixed type in scheme.Beam
Jonatan Werpers <jonatan@werpers.com>
parents: 223
diff changeset
208 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
209 end
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
210
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
211 end
8f22829b69d0 Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
212 end