4
4
import pytest
5
5
from gem .interpreter import evaluate
6
6
7
- from fiat_mapping import MyMapping
8
-
9
7
10
8
def make_unisolvent_points (element , interior = False ):
11
9
degree = element .degree ()
@@ -23,7 +21,9 @@ def make_unisolvent_points(element, interior=False):
23
21
return pts
24
22
25
23
26
- def check_zany_mapping (element , ref_cell , phys_cell , * args , ** kwargs ):
24
+ def check_zany_mapping (element , ref_to_phys , * args , ** kwargs ):
25
+ phys_cell = ref_to_phys .phys_cell
26
+ ref_cell = ref_to_phys .ref_cell
27
27
phys_element = element (phys_cell , * args , ** kwargs ).fiat_equivalent
28
28
finat_element = element (ref_cell , * args , ** kwargs )
29
29
@@ -65,9 +65,8 @@ def check_zany_mapping(element, ref_cell, phys_cell, *args, **kwargs):
65
65
# Zany map the results
66
66
num_bfs = phys_element .space_dimension ()
67
67
num_dofs = finat_element .space_dimension ()
68
- mappng = MyMapping (ref_cell , phys_cell )
69
68
try :
70
- Mgem = finat_element .basis_transformation (mappng )
69
+ Mgem = finat_element .basis_transformation (ref_to_phys )
71
70
M = evaluate ([Mgem ])[0 ].arr
72
71
ref_vals_zany = np .tensordot (M , ref_vals_piola , (- 1 , 0 ))
73
72
except AttributeError :
@@ -86,54 +85,37 @@ def check_zany_mapping(element, ref_cell, phys_cell, *args, **kwargs):
86
85
assert np .allclose (ref_vals_zany , phys_vals [:num_dofs ])
87
86
88
87
89
- @pytest .fixture
90
- def ref_el (request ):
91
- K = {dim : FIAT .ufc_simplex (dim ) for dim in (2 , 3 )}
92
- return K
93
-
94
-
95
- @pytest .fixture
96
- def phys_el (request ):
97
- K = {dim : FIAT .ufc_simplex (dim ) for dim in (2 , 3 )}
98
- K [2 ].vertices = ((0.0 , 0.1 ), (1.17 , - 0.09 ), (0.15 , 1.84 ))
99
- K [3 ].vertices = ((0 , 0 , 0 ),
100
- (1. , 0.1 , - 0.37 ),
101
- (0.01 , 0.987 , - .23 ),
102
- (- 0.1 , - 0.2 , 1.38 ))
103
- return K
104
-
105
-
106
88
@pytest .mark .parametrize ("element" , [
107
89
finat .Morley ,
108
90
finat .Hermite ,
109
91
finat .Bell ,
110
92
])
111
- def test_C1_elements (ref_el , phys_el , element ):
112
- check_zany_mapping (element , ref_el [ 2 ], phys_el [2 ])
93
+ def test_C1_elements (ref_to_phys , element ):
94
+ check_zany_mapping (element , ref_to_phys [2 ])
113
95
114
96
115
97
@pytest .mark .parametrize ("element" , [
116
98
finat .QuadraticPowellSabin6 ,
117
99
finat .QuadraticPowellSabin12 ,
118
100
finat .ReducedHsiehCloughTocher ,
119
101
])
120
- def test_C1_macroelements (ref_el , phys_el , element ):
102
+ def test_C1_macroelements (ref_to_phys , element ):
121
103
kwargs = {}
122
104
if element == finat .QuadraticPowellSabin12 :
123
105
kwargs = dict (avg = True )
124
- check_zany_mapping (element , ref_el [ 2 ], phys_el [2 ], ** kwargs )
106
+ check_zany_mapping (element , ref_to_phys [2 ], ** kwargs )
125
107
126
108
127
109
@pytest .mark .parametrize ("element, degree" , [
128
110
* ((finat .Argyris , k ) for k in range (5 , 8 )),
129
111
* ((finat .HsiehCloughTocher , k ) for k in range (3 , 6 ))
130
112
])
131
- def test_high_order_C1_elements (ref_el , phys_el , element , degree ):
132
- check_zany_mapping (element , ref_el [ 2 ], phys_el [2 ], degree , avg = True )
113
+ def test_high_order_C1_elements (ref_to_phys , element , degree ):
114
+ check_zany_mapping (element , ref_to_phys [2 ], degree , avg = True )
133
115
134
116
135
- def test_argyris_point (ref_el , phys_el ):
136
- check_zany_mapping (finat .Argyris , ref_el [ 2 ], phys_el [2 ], variant = "point" )
117
+ def test_argyris_point (ref_to_phys ):
118
+ check_zany_mapping (finat .Argyris , ref_to_phys [2 ], variant = "point" )
137
119
138
120
139
121
zany_piola_elements = {
@@ -162,15 +144,15 @@ def test_argyris_point(ref_el, phys_el):
162
144
* ((2 , e ) for e in zany_piola_elements [3 ]),
163
145
* ((3 , e ) for e in zany_piola_elements [3 ]),
164
146
])
165
- def test_piola (ref_el , phys_el , element , dimension ):
166
- check_zany_mapping (element , ref_el [ dimension ], phys_el [dimension ])
147
+ def test_piola (ref_to_phys , element , dimension ):
148
+ check_zany_mapping (element , ref_to_phys [dimension ])
167
149
168
150
169
151
@pytest .mark .parametrize ("element, degree, variant" , [
170
152
* ((finat .HuZhang , k , v ) for v in ("integral" , "point" ) for k in range (3 , 6 )),
171
153
])
172
- def test_piola_triangle_high_order (ref_el , phys_el , element , degree , variant ):
173
- check_zany_mapping (element , ref_el [ 2 ], phys_el [2 ], degree , variant )
154
+ def test_piola_triangle_high_order (ref_to_phys , element , degree , variant ):
155
+ check_zany_mapping (element , ref_to_phys [2 ], degree , variant )
174
156
175
157
176
158
@pytest .mark .parametrize ("element, degree" , [
@@ -180,5 +162,5 @@ def test_piola_triangle_high_order(ref_el, phys_el, element, degree, variant):
180
162
* ((finat .GopalakrishnanLedererSchoberlSecondKind , k ) for k in range (0 , 3 )),
181
163
])
182
164
@pytest .mark .parametrize ("dimension" , [2 , 3 ])
183
- def test_affine (ref_el , phys_el , element , degree , dimension ):
184
- check_zany_mapping (element , ref_el [ dimension ], phys_el [dimension ], degree )
165
+ def test_affine (ref_to_phys , element , degree , dimension ):
166
+ check_zany_mapping (element , ref_to_phys [dimension ], degree )
0 commit comments