inducer / inducer/meshpy

generate tuples for quadrilateral elements

Open
#17 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
588
Forks
112
Avg merge
9h 38m
Merged PRs (30d)
2

Description

Hello,

I'm trying to work on adding support for quadrilateral elements
[(Quadrangle, Quadrangle8, Quadrangle9)](http://gmsh.info/doc/texinfo/gmsh.html#Node-ordering)

How can I generate appropriate tuples with generate_nonnegative_integer_tuples_summing_to_at_most tool?

I have added

```
def generate_quadrangle_vertex_tuples(order):
yield (0, 0)
yield (order, 0)
yield (order,order)
yield (0, order)

def generate_quadrangle_edge_tuples(order):
for i in range(1, order):
yield (i, 0)
for i in range(1, order):
yield (order, i)
for i in range(1, order):
yield (i, order)
for i in range(1, order):
yield (0, i)

def generate_quadrangle_volume_tuples(order):
for i in range(1, order):
for j in range(1, order):
yield (j, i)
```

and

```
class GmshIncompleteQuadrilateralElement(GmshElementBase):
dimensions = 2

def __init__(self, order):
self.order = order

@memoize_method
def gmsh_node_tuples(self):
result = []
for tup in generate_quadrangle_vertex_tuples(self.order):
result.append(tup)
for tup in generate_quadrangle_edge_tuples(self.order):
result.append(tup)
return result

class GmshQuadrilateralElement(GmshElementBase):
dimensions = 2

@memoize_method
def gmsh_node_tuples(self):
result = []
for tup in generate_quadrangle_vertex_tuples(self.order):
result.append(tup)
for tup in generate_quadrangle_edge_tuples(self.order):
result.append(tup)
for tup in generate_quadrangle_volume_tuples(self.order):
result.append(tup)
return result
```

which generate:

```
el = GmshQuadrilateralElement(1)
el.gmsh_node_tuples()
```

> [(0, 0), (1, 0), (1, 1), (0, 1)]

```
el = GmshQuadrilateralElement(2)
el.gmsh_node_tuples()
```

> [(0, 0), (2, 0), (2, 2), (0, 2), (1, 0), (2, 1), (1, 2), (0, 1), (1, 1)]

```
el = GmshIncompleteQuadrilateralElement(2)
el.gmsh_node_tuples()
```

> [(0, 0), (2, 0), (2, 2), (0, 2), (1, 0), (2, 1), (1, 2), (0, 1)]

but the node numbering is not compatible (sum of integers > self.order | self.dimension) with tuples returned by lexicographic_node_tuples.

Thanks

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.