Mercurial > repos > public > sbplib
annotate +scheme/Beam.m @ 239:ba56e0d621f2 feature/beams
Beam: Added ability to pick alphaII and alphaIII to control tau and sigma.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 28 Jul 2016 12:50:43 +0200 |
parents | 8592358a3935 |
children | 46256fffa329 |
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 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
9 H % Discrete norm |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 Hi |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 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
|
13 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
|
14 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
|
15 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
|
16 gamm |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
17 delt |
236
8592358a3935
Beam: Added tuning as a parameter to contructor.
Jonatan Werpers <jonatan@werpers.com>
parents:
235
diff
changeset
|
18 interface_tuning |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
19 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
20 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
21 methods |
239
ba56e0d621f2
Beam: Added ability to pick alphaII and alphaIII to control tau and sigma.
Jonatan Werpers <jonatan@werpers.com>
parents:
236
diff
changeset
|
22 function obj = Beam(grid, order, alpha, opsGen, interface_tuning, alphaII, alphaIII) |
236
8592358a3935
Beam: Added tuning as a parameter to contructor.
Jonatan Werpers <jonatan@werpers.com>
parents:
235
diff
changeset
|
23 default_arg('alpha', -1); |
8592358a3935
Beam: Added tuning as a parameter to contructor.
Jonatan Werpers <jonatan@werpers.com>
parents:
235
diff
changeset
|
24 default_arg('interface_tuning', 1.1); |
239
ba56e0d621f2
Beam: Added ability to pick alphaII and alphaIII to control tau and sigma.
Jonatan Werpers <jonatan@werpers.com>
parents:
236
diff
changeset
|
25 default_arg('alphaII', []) |
ba56e0d621f2
Beam: Added ability to pick alphaII and alphaIII to control tau and sigma.
Jonatan Werpers <jonatan@werpers.com>
parents:
236
diff
changeset
|
26 default_arg('alphaIII', []) |
236
8592358a3935
Beam: Added tuning as a parameter to contructor.
Jonatan Werpers <jonatan@werpers.com>
parents:
235
diff
changeset
|
27 |
232
443b14ea705b
scheme.Beam: changes to possibly better operators.
Jonatan Werpers <jonatan@werpers.com>
parents:
224
diff
changeset
|
28 % default_arg('opsGen', @sbp.Higher); |
443b14ea705b
scheme.Beam: changes to possibly better operators.
Jonatan Werpers <jonatan@werpers.com>
parents:
224
diff
changeset
|
29 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
|
30 |
176
d095b5396103
Fixed some bugs in Beam schemes.
Jonatan Werpers <jonatan@werpers.com>
parents:
175
diff
changeset
|
31 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
|
32 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
|
33 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
34 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
35 obj.grid = grid; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
36 obj.order = order; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
37 obj.alpha = alpha; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
38 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
39 m = grid.m; |
176
d095b5396103
Fixed some bugs in Beam schemes.
Jonatan Werpers <jonatan@werpers.com>
parents:
175
diff
changeset
|
40 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
|
41 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
42 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
|
43 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
44 I = speye(m); |
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 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
|
47 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
|
48 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
|
49 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
|
50 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
|
51 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
|
52 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
|
53 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
|
54 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
|
55 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
|
56 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
|
57 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
58 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
|
59 |
239
ba56e0d621f2
Beam: Added ability to pick alphaII and alphaIII to control tau and sigma.
Jonatan Werpers <jonatan@werpers.com>
parents:
236
diff
changeset
|
60 if isempty(alphaII) && isempty(alphaIII) |
ba56e0d621f2
Beam: Added ability to pick alphaII and alphaIII to control tau and sigma.
Jonatan Werpers <jonatan@werpers.com>
parents:
236
diff
changeset
|
61 alphaII = ops.borrowing.N.S2/2; |
ba56e0d621f2
Beam: Added ability to pick alphaII and alphaIII to control tau and sigma.
Jonatan Werpers <jonatan@werpers.com>
parents:
236
diff
changeset
|
62 alphaIII = ops.borrowing.N.S3/2; |
ba56e0d621f2
Beam: Added ability to pick alphaII and alphaIII to control tau and sigma.
Jonatan Werpers <jonatan@werpers.com>
parents:
236
diff
changeset
|
63 end |
ba56e0d621f2
Beam: Added ability to pick alphaII and alphaIII to control tau and sigma.
Jonatan Werpers <jonatan@werpers.com>
parents:
236
diff
changeset
|
64 |
ba56e0d621f2
Beam: Added ability to pick alphaII and alphaIII to control tau and sigma.
Jonatan Werpers <jonatan@werpers.com>
parents:
236
diff
changeset
|
65 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
|
66 obj.delt = h^3*alphaIII; |
236
8592358a3935
Beam: Added tuning as a parameter to contructor.
Jonatan Werpers <jonatan@werpers.com>
parents:
235
diff
changeset
|
67 obj.interface_tuning = interface_tuning; |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
68 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
69 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
70 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
71 % 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
|
72 % 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
|
73 % 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
|
74 % 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
|
75 % 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
|
76 % 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
|
77 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
|
78 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
|
79 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
80 [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
|
81 gamm = obj.gamm; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
82 delt = obj.delt; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
83 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
84 switch type |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
85 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
|
86 alpha = obj.alpha; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
87 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
88 % 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
|
89 % tuning = 2; |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
90 tuning = 1.1; |
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 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
|
93 tau4 = s*alpha; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
94 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
95 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
|
96 sig3 = -s*alpha; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
97 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
98 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
|
99 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
|
100 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
101 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
|
102 |
223
96dedf892910
Fixed sign error in beam BC penalties.
Jonatan Werpers <jonatan@werpers.com>
parents:
220
diff
changeset
|
103 penalty{1} = -obj.Hi*tau; |
96dedf892910
Fixed sign error in beam BC penalties.
Jonatan Werpers <jonatan@werpers.com>
parents:
220
diff
changeset
|
104 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
|
105 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
|
106 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
|
107 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
108 end |
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 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
|
111 % 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
|
112 % 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
|
113 [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
|
114 [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
|
115 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
116 gamm_u = obj.gamm; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
117 delt_u = obj.delt; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
118 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
119 gamm_v = neighbour_scheme.gamm; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
120 delt_v = neighbour_scheme.delt; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
121 |
236
8592358a3935
Beam: Added tuning as a parameter to contructor.
Jonatan Werpers <jonatan@werpers.com>
parents:
235
diff
changeset
|
122 tuning = obj.interface_tuning; |
8592358a3935
Beam: Added tuning as a parameter to contructor.
Jonatan Werpers <jonatan@werpers.com>
parents:
235
diff
changeset
|
123 |
175
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
124 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
125 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
|
126 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
|
127 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
128 tau1 = ((alpha_u/2)/delt_u + (alpha_v/2)/delt_v)/2*tuning; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
129 % tau1 = (alpha_u/2 + alpha_v/2)/(2*delt_u)*tuning; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
130 tau4 = s_u*alpha_u/2; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
131 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
132 sig2 = ((alpha_u/2)/gamm_u + (alpha_v/2)/gamm_v)/2*tuning; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
133 sig3 = -s_u*alpha_u/2; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
134 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
135 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
|
136 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
137 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
|
138 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
139 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
|
140 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
|
141 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
|
142 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
|
143 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
144 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
|
145 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
|
146 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
147 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
148 % 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
|
149 % 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
|
150 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
|
151 switch boundary |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
152 case 'l' |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
153 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
|
154 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
|
155 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
|
156 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
|
157 s = -1; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
158 case 'r' |
176
d095b5396103
Fixed some bugs in Beam schemes.
Jonatan Werpers <jonatan@werpers.com>
parents:
175
diff
changeset
|
159 e = obj.e_r; |
d095b5396103
Fixed some bugs in Beam schemes.
Jonatan Werpers <jonatan@werpers.com>
parents:
175
diff
changeset
|
160 d1 = obj.d1_r; |
d095b5396103
Fixed some bugs in Beam schemes.
Jonatan Werpers <jonatan@werpers.com>
parents:
175
diff
changeset
|
161 d2 = obj.d2_r; |
d095b5396103
Fixed some bugs in Beam schemes.
Jonatan Werpers <jonatan@werpers.com>
parents:
175
diff
changeset
|
162 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
|
163 s = 1; |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
164 otherwise |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
165 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
|
166 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
167 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
168 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
169 function N = size(obj) |
224
05304d7792dc
Fixed type in scheme.Beam
Jonatan Werpers <jonatan@werpers.com>
parents:
223
diff
changeset
|
170 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
|
171 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
172 |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
173 end |
8f22829b69d0
Added and upgraded schemes for the beam equation in 1d and 2d.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
174 end |