comparison +multiblock/+domain/Annulus.m @ 1256:479d5672fecd feature/FMMlabb

Minor cleanup
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Tue, 11 Feb 2020 19:17:49 +0100
parents 5e2a61340d4e
children 4d472d020ccf
comparison
equal deleted inserted replaced
1255:5e2a61340d4e 1256:479d5672fecd
1 classdef Annulus < multiblock.DefCurvilinear 1 classdef Annulus < multiblock.DefCurvilinear
2 properties 2 properties
3 r_inner 3 r_inner % Radii of inner disk
4 r_outer 4 c_inner % Center of inner disk
5 c_inner 5 r_outer % Radii of outer disk
6 c_outer 6 c_outer % Radii of outer disk
7 end 7 end
8 8
9 methods 9 methods
10 function obj = Annulus(r_outer, r_inner, c_outer, c_inner) 10 function obj = Annulus(r_inner, c_inner, r_outer, c_outer)
11 default_arg('r_inner', 0.3);
12 default_arg('c_inner', [0; 0]);
11 default_arg('r_outer', 1) 13 default_arg('r_outer', 1)
12 default_arg('r_inner', 0.3);
13 default_arg('c_outer', [0; 0]); 14 default_arg('c_outer', [0; 0]);
14 default_arg('c_inner', [0; 0]); 15 % Assert that the problem is well-defined
15 16 d = norm(c_outer-c_inner,2);
17 assert(r_outer > d+r_inner, 'Inner disk not contained in outer disk');
18
16 cir_out_A = parametrization.Curve.circle(c_outer,r_outer,[-pi/2 pi/2]); 19 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]); 20 cir_in_A = parametrization.Curve.circle(c_inner,r_inner,[pi/2 -pi/2]);
18 21
19 cir_out_B = parametrization.Curve.circle(c_outer,r_outer,[pi/2 3*pi/2]); 22 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]); 23 cir_in_B = parametrization.Curve.circle(c_inner,r_inner,[3*pi/2 pi/2]);
38 sp2_B = parametrization.Curve.line(c0_in_B,c0_out_B); 41 sp2_B = parametrization.Curve.line(c0_in_B,c0_out_B);
39 sp3_B = parametrization.Curve.line(c1_in_B,c1_out_B); 42 sp3_B = parametrization.Curve.line(c1_in_B,c1_out_B);
40 43
41 44
42 A = parametrization.Ti(sp2_A, cir_out_A, sp3_A.reverse, cir_in_A); 45 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 ); 46 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 47
46 blocks = {A,B}; 48 blocks = {A,B};
47 blocksNames = {'A','B'}; 49 blocksNames = {'A','B'};
48 50
49 conn = cell(2,2); 51 conn = cell(2,2);
63 obj.c_inner = c_inner; 65 obj.c_inner = c_inner;
64 obj.c_outer = c_outer; 66 obj.c_outer = c_outer;
65 end 67 end
66 68
67 function ms = getGridSizes(obj, m) 69 function ms = getGridSizes(obj, m)
68 % m_S = m; 70 ms = {[m m], [m 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 71 end
81 end 72 end
82 end 73 end