Skip to content

Commit a508380

Browse files
committed
fixing post rebase, draft of bfs element
1 parent c6df7bf commit a508380

3 files changed

Lines changed: 29 additions & 7 deletions

File tree

fuse/cells.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -383,17 +383,13 @@ def get_topology(self):
383383

384384
self.topology = {}
385385
self.topology_unrelabelled = {}
386-
self.topology_unrelabelled = {}
387386
for i in range(len(structure)):
388387
dimension = structure[i]
389388
self.topology[i] = {}
390389
self.topology_unrelabelled[i] = {}
391-
self.topology_unrelabelled[i] = {}
392390
for node in dimension:
393391
self.topology[i][node - min_ids[i]] = tuple([relabelled_verts[vert] for vert in self.get_node(node).ordered_vertices()])
394392
self.topology_unrelabelled[i][node - min_ids[i]] = tuple([vert - min_ids[0] for vert in self.get_node(node).ordered_vertices()])
395-
return self.topology_unrelabelled
396-
self.topology_unrelabelled[i][node - min_ids[i]] = tuple([vert - min_ids[0] for vert in self.get_node(node).ordered_vertices()])
397393
return self.topology_unrelabelled
398394

399395
def get_starter_ids(self):

fuse/triples.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,18 +125,21 @@ def to_fiat(self):
125125
nodes.extend(fiat_dofs)
126126
entity_ids[dim][dofs[i].trace_entity.id - min_ids[dim]].extend([counter + i for i in range(len(fiat_dofs))])
127127
counter += len(fiat_dofs)
128+
print("nodes", nodes)
128129
entity_perms, pure_perm = self.make_dof_perms(ref_el, entity_ids, nodes, poly_set)
129-
self.matrices = self.make_overall_dense_matrices(ref_el, entity_ids, nodes, poly_set)
130+
# self.matrices = self.make_overall_dense_matrices(ref_el, entity_ids, nodes, poly_set)
130131
form_degree = 1 if self.spaces[0].set_shape else 0
131132
print("my", [n.pt_dict for n in nodes])
132133
print(entity_perms)
133134
print(entity_ids)
134-
print(ref_el.vertices)
135+
print(nodes)
135136
print()
136137
# TODO: Change this when Dense case in Firedrake
137138
if pure_perm:
139+
self.matrices = self.make_overall_dense_matrices(ref_el, entity_ids, nodes, poly_set)
138140
dual = DualSet(nodes, ref_el, entity_ids, entity_perms)
139141
else:
142+
self.matrices = None
140143
dual = DualSet(nodes, ref_el, entity_ids)
141144
return CiarletElement(poly_set, dual, degree, form_degree)
142145

@@ -221,7 +224,7 @@ def make_overall_dense_matrices(self, ref_el, entity_ids, nodes, poly_set):
221224
if g.perm.is_Identity:
222225
res_dict[dim][e_id][val] = np.eye(len(nodes))
223226
else:
224-
new_nodes = [d(g).convert_to_fiat(ref_el, degree) for d in self.generate()]
227+
new_nodes = sum([d(g).convert_to_fiat(ref_el, degree) for d in self.generate()],[])
225228
transformed_V, transformed_basis = self.compute_dense_matrix(ref_el, entity_ids, new_nodes, poly_set)
226229
res_dict[dim][e_id][val] = np.matmul(transformed_basis, original_V.T)
227230
return res_dict

test/bfs.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from firedrake import *
2+
from fuse import *
3+
import numpy as np
4+
from test_convert_to_fiat import create_dg1
5+
from test_tensor_prod import mass_solve
6+
7+
def her_int():
8+
deg = 3
9+
cell = Point(1, [Point(0), Point(0)], vertex_num=2)
10+
vert_dg = create_dg1(cell.vertices()[0])
11+
xs = [immerse(cell, vert_dg, TrH1), immerse(cell, vert_dg, TrGrad)]
12+
13+
Pk = PolynomialSpace(deg)
14+
her = ElementTriple(cell, (Pk, CellL2, C0), DOFGenerator(xs, S2, S1))
15+
return her
16+
17+
r = 3
18+
her1 = her_int()
19+
her2 = her_int()
20+
bfs = tensor_product(her1, her2).flatten()
21+
mesh = UnitSquareMesh(2 ** r, 2 ** r, quadrilateral=quadrilateral)
22+
U = FunctionSpace(mesh, bfs.to_ufl())
23+
mass_solve(U)

0 commit comments

Comments
 (0)