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