1111from sympde .topology import Square , Domain
1212from sympde .topology import IdentityMapping , PolarMapping , AffineMapping , Mapping
1313
14- # remove after sympde PR #155 is merged and call Domain.join instead
15- from psydac .feec .multipatch_domain_utilities import sympde_Domain_join
16-
1714#==============================================================================
1815# small extension to SymPDE:
1916class TransposedPolarMapping (Mapping ):
@@ -65,10 +62,33 @@ def flip_axis(name='no_name', c1=0., c2=0.):
6562
6663#==============================================================================
6764
68- # todo: use build_multipatch_domain instead
69- def build_pretzel (domain_name = 'pretzel' , r_min = None , r_max = None ):
65+ def build_2_patch_annulus ():
7066 """
71- design pretzel-like domain
67+ Build a 180º annulus by connecting two 90º annular patches.
68+ """
69+ bounds1 = (0.5 , 1. )
70+ bounds2_A = (0 , np .pi / 2 )
71+ bounds2_B = (np .pi / 2 , np .pi )
72+
73+ A = Square ('A' ,bounds1 = bounds1 , bounds2 = bounds2_A )
74+ B = Square ('B' ,bounds1 = bounds1 , bounds2 = bounds2_B )
75+
76+ mapping_1 = PolarMapping ('M1' ,2 , c1 = 0. , c2 = 0. , rmin = 0. , rmax = 1. )
77+ mapping_2 = PolarMapping ('M2' ,2 , c1 = 0. , c2 = 0. , rmin = 0. , rmax = 1. )
78+
79+ D1 = mapping_1 (A )
80+ D2 = mapping_2 (B )
81+
82+ connectivity = [((0 ,1 ,1 ), (1 ,1 ,- 1 ), 1 )]
83+ patches = [D1 , D2 ]
84+
85+ domain = Domain .join (patches , connectivity , '2_patch_domain' )
86+
87+ return domain
88+
89+ def build_11_patch_pretzel (domain_name = 'pretzel' , r_min = None , r_max = None ):
90+ """
91+ Build a pretzel-like 2D domain by connecting 11 patches through 13 conforming interfaces.
7292 """
7393
7494 if r_min is None :
@@ -87,54 +107,18 @@ def build_pretzel(domain_name='pretzel', r_min=None, r_max=None):
87107 mapping_1 = PolarMapping ('M1' ,2 , c1 = h , c2 = h , rmin = 0. , rmax = 1. )
88108 domain_1 = mapping_1 (dom_log_1 )
89109
90- dom_log_1_1 = Square ('dom1_1' ,bounds1 = (r_min , r_max ), bounds2 = (0 , np .pi / 4 ))
91- mapping_1_1 = PolarMapping ('M1_1' ,2 , c1 = h , c2 = h , rmin = 0. , rmax = 1. )
92- domain_1_1 = mapping_1_1 (dom_log_1_1 )
93-
94- dom_log_1_2 = Square ('dom1_2' ,bounds1 = (r_min , r_max ), bounds2 = (np .pi / 4 , np .pi / 2 ))
95- mapping_1_2 = PolarMapping ('M1_2' ,2 , c1 = h , c2 = h , rmin = 0. , rmax = 1. )
96- domain_1_2 = mapping_1_2 (dom_log_1_2 )
97-
98110 dom_log_2 = Square ('dom2' ,bounds1 = (r_min , r_max ), bounds2 = (np .pi / 2 , np .pi ))
99111 mapping_2 = PolarMapping ('M2' ,2 , c1 = - h , c2 = h , rmin = 0. , rmax = 1. )
100112 domain_2 = mapping_2 (dom_log_2 )
101113
102- dom_log_2_1 = Square ('dom2_1' ,bounds1 = (r_min , r_max ), bounds2 = (np .pi / 2 , np .pi * 3 / 4 ))
103- mapping_2_1 = PolarMapping ('M2_1' ,2 , c1 = - h , c2 = h , rmin = 0. , rmax = 1. )
104- domain_2_1 = mapping_2_1 (dom_log_2_1 )
105-
106- dom_log_2_2 = Square ('dom2_2' ,bounds1 = (r_min , r_max ), bounds2 = (np .pi * 3 / 4 , np .pi ))
107- mapping_2_2 = PolarMapping ('M2_2' ,2 , c1 = - h , c2 = h , rmin = 0. , rmax = 1. )
108- domain_2_2 = mapping_2_2 (dom_log_2_2 )
109-
110- dom_log_10 = Square ('dom10' ,bounds1 = (r_min , r_max ), bounds2 = (np .pi / 2 , np .pi ))
111- mapping_10 = PolarMapping ('M10' ,2 , c1 = h , c2 = h , rmin = 0. , rmax = 1. )
112- domain_10 = mapping_10 (dom_log_10 )
113-
114114 dom_log_3 = Square ('dom3' ,bounds1 = (r_min , r_max ), bounds2 = (np .pi , np .pi * 3 / 2 ))
115115 mapping_3 = PolarMapping ('M3' ,2 , c1 = - h , c2 = 0 , rmin = 0. , rmax = 1. )
116116 domain_3 = mapping_3 (dom_log_3 )
117117
118- dom_log_3_1 = Square ('dom3_1' ,bounds1 = (r_min , r_max ), bounds2 = (np .pi , np .pi * 5 / 4 ))
119- mapping_3_1 = PolarMapping ('M3_1' ,2 , c1 = - h , c2 = 0 , rmin = 0. , rmax = 1. )
120- domain_3_1 = mapping_3_1 (dom_log_3_1 )
121-
122- dom_log_3_2 = Square ('dom3_2' ,bounds1 = (r_min , r_max ), bounds2 = (np .pi * 5 / 4 , np .pi * 3 / 2 ))
123- mapping_3_2 = PolarMapping ('M3_2' ,2 , c1 = - h , c2 = 0 , rmin = 0. , rmax = 1. )
124- domain_3_2 = mapping_3_2 (dom_log_3_2 )
125-
126118 dom_log_4 = Square ('dom4' ,bounds1 = (r_min , r_max ), bounds2 = (np .pi * 3 / 2 , np .pi * 2 ))
127119 mapping_4 = PolarMapping ('M4' ,2 , c1 = h , c2 = 0 , rmin = 0. , rmax = 1. )
128120 domain_4 = mapping_4 (dom_log_4 )
129121
130- dom_log_4_1 = Square ('dom4_1' ,bounds1 = (r_min , r_max ), bounds2 = (np .pi * 3 / 2 , np .pi * 7 / 4 ))
131- mapping_4_1 = PolarMapping ('M4_1' ,2 , c1 = h , c2 = 0 , rmin = 0. , rmax = 1. )
132- domain_4_1 = mapping_4_1 (dom_log_4_1 )
133-
134- dom_log_4_2 = Square ('dom4_2' ,bounds1 = (r_min , r_max ), bounds2 = (np .pi * 7 / 4 , np .pi * 2 ))
135- mapping_4_2 = PolarMapping ('M4_2' ,2 , c1 = h , c2 = 0 , rmin = 0. , rmax = 1. )
136- domain_4_2 = mapping_4_2 (dom_log_4_2 )
137-
138122 dom_log_5 = Square ('dom5' ,bounds1 = (- hr ,hr ) , bounds2 = (- h / 2 , h / 2 ))
139123 mapping_5 = get_2D_rotation_mapping ('M5' , c1 = h / 2 , c2 = cr , alpha = np .pi / 2 )
140124 domain_5 = mapping_5 (dom_log_5 )
@@ -147,45 +131,21 @@ def build_pretzel(domain_name='pretzel', r_min=None, r_max=None):
147131 mapping_7 = get_2D_rotation_mapping ('M7' , c1 = - cr , c2 = h / 2 , alpha = np .pi )
148132 domain_7 = mapping_7 (dom_log_7 )
149133
150- dom_log_9 = Square ('dom9' ,bounds1 = (- hr ,hr ) , bounds2 = (- h , h ))
151- mapping_9 = get_2D_rotation_mapping ('M9' , c1 = 0 , c2 = h - cr , alpha = np .pi * 3 / 2 )
152- domain_9 = mapping_9 (dom_log_9 )
153-
154- dom_log_9_1 = Square ('dom9_1' ,bounds1 = (- hr ,hr ) , bounds2 = (- h , 0 ))
155- mapping_9_1 = get_2D_rotation_mapping ('M9_1' , c1 = 0 , c2 = h - cr , alpha = np .pi * 3 / 2 )
156- domain_9_1 = mapping_9_1 (dom_log_9_1 )
157-
158- dom_log_9_2 = Square ('dom9_2' ,bounds1 = (- hr ,hr ) , bounds2 = (0 , h ))
159- mapping_9_2 = get_2D_rotation_mapping ('M9_2' , c1 = 0 , c2 = h - cr , alpha = np .pi * 3 / 2 )
160- domain_9_2 = mapping_9_2 (dom_log_9_2 )
134+ dom_log_8 = Square ('dom8' ,bounds1 = (- hr ,hr ) , bounds2 = (- h , h ))
135+ mapping_8 = get_2D_rotation_mapping ('M8' , c1 = 0 , c2 = h - cr , alpha = np .pi * 3 / 2 )
136+ domain_8 = mapping_8 (dom_log_8 )
161137
162- dom_log_12 = Square ('dom12' ,bounds1 = (- hr , hr ), bounds2 = (- h / 2 , h / 2 ))
163- mapping_12 = AffineMapping ('M12' , 2 , c1 = cr , c2 = h / 2 , a11 = 1 , a22 = - 1 , a21 = 0 , a12 = 0 )
164- domain_12 = mapping_12 (dom_log_12 )
165-
166- dom_log_13 = Square ('dom13' ,bounds1 = (np .pi * 3 / 2 , np .pi * 2 ), bounds2 = (r_min , r_max ))
167- mapping_13 = TransposedPolarMapping ('M13' ,2 , c1 = - r_min - h , c2 = r_min + h , rmin = 0. , rmax = 1. )
168- domain_13 = mapping_13 (dom_log_13 )
169-
170- dom_log_13_1 = Square ('dom13_1' ,bounds1 = (np .pi * 3 / 2 , np .pi * 7 / 4 ), bounds2 = (r_min , r_max ))
171- mapping_13_1 = TransposedPolarMapping ('M13_1' ,2 , c1 = - r_min - h , c2 = r_min + h , rmin = 0. , rmax = 1. )
172- domain_13_1 = mapping_13_1 (dom_log_13_1 )
173-
174- dom_log_13_2 = Square ('dom13_2' ,bounds1 = (np .pi * 7 / 4 , np .pi * 2 ), bounds2 = (r_min , r_max ))
175- mapping_13_2 = TransposedPolarMapping ('M13_2' ,2 , c1 = - r_min - h , c2 = r_min + h , rmin = 0. , rmax = 1. )
176- domain_13_2 = mapping_13_2 (dom_log_13_2 )
177-
178- dom_log_14 = Square ('dom14' ,bounds1 = (np .pi , np .pi * 3 / 2 ), bounds2 = (r_min , r_max ))
179- mapping_14 = TransposedPolarMapping ('M14' ,2 , c1 = r_min + h , c2 = r_min + h , rmin = 0. , rmax = 1. )
180- domain_14 = mapping_14 (dom_log_14 )
138+ dom_log_9 = Square ('dom9' ,bounds1 = (- hr , hr ), bounds2 = (- h / 2 , h / 2 ))
139+ mapping_9 = AffineMapping ('M9' , 2 , c1 = cr , c2 = h / 2 , a11 = 1 , a22 = - 1 , a21 = 0 , a12 = 0 )
140+ domain_9 = mapping_9 (dom_log_9 )
181141
182- dom_log_14_1 = Square ('dom14_1 ' ,bounds1 = (np .pi , np .pi * 5 / 4 ), bounds2 = (r_min , r_max ))
183- mapping_14_1 = TransposedPolarMapping ('M14_1 ' ,2 , c1 = r_min + h , c2 = r_min + h , rmin = 0. , rmax = 1. )
184- domain_14_1 = mapping_14_1 ( dom_log_14_1 )
142+ dom_log_10 = Square ('dom10 ' ,bounds1 = (np .pi * 3 / 2 , np .pi * 2 ), bounds2 = (r_min , r_max ))
143+ mapping_10 = TransposedPolarMapping ('M10 ' ,2 , c1 = - r_min - h , c2 = r_min + h , rmin = 0. , rmax = 1. )
144+ domain_10 = mapping_10 ( dom_log_10 )
185145
186- dom_log_14_2 = Square ('dom14_2 ' ,bounds1 = (np .pi * 5 / 4 , np .pi * 3 / 2 ), bounds2 = (r_min , r_max ))
187- mapping_14_2 = TransposedPolarMapping ('M14_2 ' ,2 , c1 = r_min + h , c2 = r_min + h , rmin = 0. , rmax = 1. )
188- domain_14_2 = mapping_14_2 ( dom_log_14_2 )
146+ dom_log_11 = Square ('dom11 ' ,bounds1 = (np .pi , np .pi * 3 / 2 ), bounds2 = (r_min , r_max ))
147+ mapping_11 = TransposedPolarMapping ('M11 ' ,2 , c1 = r_min + h , c2 = r_min + h , rmin = 0. , rmax = 1. )
148+ domain_11 = mapping_11 ( dom_log_11 )
189149
190150 patches = ([
191151 domain_1 ,
@@ -195,10 +155,10 @@ def build_pretzel(domain_name='pretzel', r_min=None, r_max=None):
195155 domain_5 ,
196156 domain_6 ,
197157 domain_7 ,
158+ domain_8 ,
198159 domain_9 ,
199- domain_12 ,
200- domain_13 ,
201- domain_14 ,
160+ domain_10 ,
161+ domain_11 ,
202162 ])
203163
204164 axis_0 = 0
@@ -212,18 +172,17 @@ def build_pretzel(domain_name='pretzel', r_min=None, r_max=None):
212172 [(domain_6 , axis_1 , ext_0 ), (domain_2 , axis_1 , ext_0 ), 1 ],
213173 [(domain_2 , axis_1 , ext_1 ), (domain_7 , axis_1 , ext_0 ), 1 ],
214174 [(domain_7 , axis_1 , ext_1 ), (domain_3 , axis_1 , ext_0 ), 1 ],
215- [(domain_3 , axis_1 , ext_1 ), (domain_9 , axis_1 , ext_0 ), 1 ],
216- [(domain_9 , axis_1 , ext_1 ), (domain_4 , axis_1 , ext_0 ), 1 ],
217- [(domain_4 , axis_1 , ext_1 ), (domain_12 , axis_1 , ext_1 ), 1 ],
218- [(domain_12 , axis_1 , ext_0 ), (domain_1 , axis_1 , ext_0 ), 1 ],
219- [(domain_6 , axis_0 , ext_0 ), (domain_13 , axis_0 , ext_1 ), 1 ],
220- [(domain_7 , axis_0 , ext_0 ), (domain_13 , axis_0 , ext_0 ), 1 ],
221- [(domain_5 , axis_0 , ext_0 ), (domain_14 , axis_0 , ext_0 ), 1 ],
222- [(domain_12 , axis_0 , ext_0 ), ( domain_14 , axis_0 , ext_1 ), 1 ],
175+ [(domain_3 , axis_1 , ext_1 ), (domain_8 , axis_1 , ext_0 ), 1 ],
176+ [(domain_8 , axis_1 , ext_1 ), (domain_4 , axis_1 , ext_0 ), 1 ],
177+ [(domain_4 , axis_1 , ext_1 ), (domain_9 , axis_1 , ext_1 ), 1 ],
178+ [(domain_9 , axis_1 , ext_0 ), (domain_1 , axis_1 , ext_0 ), 1 ],
179+ [(domain_6 , axis_0 , ext_0 ), (domain_10 , axis_0 , ext_1 ), 1 ],
180+ [(domain_7 , axis_0 , ext_0 ), (domain_10 , axis_0 , ext_0 ), 1 ],
181+ [(domain_5 , axis_0 , ext_0 ), (domain_11 , axis_0 , ext_0 ), 1 ],
182+ [(domain_9 , axis_0 , ext_0 ), ( domain_11 , axis_0 , ext_1 ), 1 ],
223183 ]
224184
225- # domain = Domain.join(patches, connectivity, name=domain_name)
226- domain = sympde_Domain_join (patches , connectivity , name = domain_name )
227-
185+ domain = Domain .join (patches , connectivity , name = domain_name )
186+
228187 return domain
229188
0 commit comments