diff --git a/meshmode/mesh/tesselate.py b/meshmode/mesh/tesselate.py new file mode 100644 index 0000000000000000000000000000000000000000..8830a93e17e8dd43b69112d51327a54d943a1d1b --- /dev/null +++ b/meshmode/mesh/tesselate.py @@ -0,0 +1,34 @@ +from pytools import generate_nonnegative_integer_tuples_summing_to_at_most \ + as gnitstam + +node_tuples = list(gnitstam(2, 2)) +node_dict = dict( + (ituple, idx) + for idx, ituple in enumerate(node_tuples)) + +def add_tuples(a, b): + return tuple(ac+bc for ac, bc in zip(a, b)) + +def try_add_tri(current, d1, d2, d3): + try: + result.append(( + node_dict[add_tuples(current, d1)], + node_dict[add_tuples(current, d2)], + node_dict[add_tuples(current, d3)], + )) + except KeyError: + pass + +result = [] +def tesselatetri(): + for current in node_tuples: + # this is a tesselation of a cube into six tets. + # subtets that fall outside of the master tet are simply not added. + + # positively oriented + try_add_tri(current, (0, 0), (1, 0), (0, 1)) + try_add_tri(current, (1, 0), (1, 1), (0, 1)) + return [node_tuples, result] +#tesselatetri() +#print node_tuples +#print result