Mercurial > repos > public > sbplib
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 |