comparison +multiblock/+domain/Annulus.m @ 1254:204b47c51bf8 feature/FMMlabb

Add annulus
author Ylva Rydin <ylva.rydin@telia.com>
date Wed, 22 Jan 2020 15:18:11 +0100
parents
children 5e2a61340d4e
comparison
equal deleted inserted replaced
1250:8ec777fb473e 1254:204b47c51bf8
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();
55 boundaryGroups.E = multiblock.BoundaryGroup({{1,'e'}});
56 boundaryGroups.W = multiblock.BoundaryGroup({{2,'w'}});
57 boundaryGroups.In = multiblock.BoundaryGroup({{1,'w'},{2,'e'}});
58 boundaryGroups.all = multiblock.BoundaryGroup({{1,'e'},{2,'w'},{1,'w'},{2,'e'}});
59
60 obj = obj@multiblock.DefCurvilinear(blocks, conn, boundaryGroups, blocksNames);
61
62 obj.r_inner = r_inner;
63 obj.r_outer = r_outer;
64 obj.c_inner = c_inner;
65 obj.c_outer = c_outer;
66 end
67
68 function ms = getGridSizes(obj, m)
69 % m_S = m;
70 %
71 % % m_Radial
72 % s = 2*obj.hs;
73 % innerArc = obj.r_arc*obj.omega;
74 % outerArc = obj.r*pi/2;
75 % shortSpoke = obj.r-s/sqrt(2);
76 % x = (1/(2-sqrt(3))-1)*obj.hs;
77 % longSpoke = (obj.r+x)-obj.r_arc;
78 % m_R = parametrization.equal_step_size((innerArc+outerArc)/2, m_S, (shortSpoke+longSpoke)/2);
79
80 ms = {[m m], [m m], [m m], [m m], [m m]};
81 end
82 end
83 end