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