annotate +multiblock/+domain/Annulus.m @ 1255:5e2a61340d4e feature/FMMlabb

Fix boundary groups
author Ylva Rydin <ylva.rydin@telia.com>
date Wed, 22 Jan 2020 16:10:46 +0100
parents 204b47c51bf8
children 479d5672fecd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1254
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
1 classdef Annulus < multiblock.DefCurvilinear
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
2 properties
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
3 r_inner
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
4 r_outer
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
5 c_inner
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
6 c_outer
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
7 end
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
8
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
9 methods
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
10 function obj = Annulus(r_outer, r_inner, c_outer, c_inner)
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
11 default_arg('r_outer', 1)
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
12 default_arg('r_inner', 0.3);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
13 default_arg('c_outer', [0; 0]);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
14 default_arg('c_inner', [0; 0]);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
15
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
16 cir_out_A = parametrization.Curve.circle(c_outer,r_outer,[-pi/2 pi/2]);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
17 cir_in_A = parametrization.Curve.circle(c_inner,r_inner,[pi/2 -pi/2]);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
18
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
19 cir_out_B = parametrization.Curve.circle(c_outer,r_outer,[pi/2 3*pi/2]);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
20 cir_in_B = parametrization.Curve.circle(c_inner,r_inner,[3*pi/2 pi/2]);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
21
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
22 c0_out = cir_out_A(0);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
23 c1_out = cir_out_A(1);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
24
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
25 c0_in_A = cir_in_A(1);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
26 c1_in_A = cir_in_A(0);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
27
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
28 c0_out_B = cir_out_B(0);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
29 c1_out_B = cir_out_B(1);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
30
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
31 c0_in_B = cir_in_B(1);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
32 c1_in_B = cir_in_B(0);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
33
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
34
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
35 sp2_A = parametrization.Curve.line(c0_in_A,c0_out);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
36 sp3_A = parametrization.Curve.line(c1_in_A,c1_out);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
37
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
38 sp2_B = parametrization.Curve.line(c0_in_B,c0_out_B);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
39 sp3_B = parametrization.Curve.line(c1_in_B,c1_out_B);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
40
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
41
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
42 A = parametrization.Ti(sp2_A, cir_out_A, sp3_A.reverse, cir_in_A);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
43 B = parametrization.Ti( sp2_B , cir_out_B,sp3_B.reverse, cir_in_B );
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
44 % B = A.rotate(c_inner,pi).rotate_edges(0);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
45
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
46 blocks = {A,B};
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
47 blocksNames = {'A','B'};
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
48
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
49 conn = cell(2,2);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
50
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
51 conn{1,2} = {'n','s'};
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
52 conn{2,1} = {'n','s'};
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
53
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
54 boundaryGroups = struct();
1255
5e2a61340d4e Fix boundary groups
Ylva Rydin <ylva.rydin@telia.com>
parents: 1254
diff changeset
55 boundaryGroups.out = multiblock.BoundaryGroup({{1,'e'},{2,'e'}});
5e2a61340d4e Fix boundary groups
Ylva Rydin <ylva.rydin@telia.com>
parents: 1254
diff changeset
56 boundaryGroups.in = multiblock.BoundaryGroup({{1,'w'},{2,'w'}});
1254
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
57 boundaryGroups.all = multiblock.BoundaryGroup({{1,'e'},{2,'w'},{1,'w'},{2,'e'}});
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
58
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
59 obj = obj@multiblock.DefCurvilinear(blocks, conn, boundaryGroups, blocksNames);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
60
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
61 obj.r_inner = r_inner;
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
62 obj.r_outer = r_outer;
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
63 obj.c_inner = c_inner;
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
64 obj.c_outer = c_outer;
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
65 end
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
66
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
67 function ms = getGridSizes(obj, m)
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
68 % m_S = m;
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
69 %
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
70 % % m_Radial
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
71 % s = 2*obj.hs;
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
72 % innerArc = obj.r_arc*obj.omega;
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
73 % outerArc = obj.r*pi/2;
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
74 % shortSpoke = obj.r-s/sqrt(2);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
75 % x = (1/(2-sqrt(3))-1)*obj.hs;
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
76 % longSpoke = (obj.r+x)-obj.r_arc;
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
77 % m_R = parametrization.equal_step_size((innerArc+outerArc)/2, m_S, (shortSpoke+longSpoke)/2);
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
78
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
79 ms = {[m m], [m m], [m m], [m m], [m m]};
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
80 end
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
81 end
204b47c51bf8 Add annulus
Ylva Rydin <ylva.rydin@telia.com>
parents:
diff changeset
82 end