Skip to content
Snippets Groups Projects
Commit 28b2030b authored by Marcel Koch's avatar Marcel Koch
Browse files

adds to_global for unstructured 3d grids + some renaming

parent 93fc9070
No related branches found
No related tags found
No related merge requests found
...@@ -320,22 +320,30 @@ def apply_default_to_global_transformation(name, local): ...@@ -320,22 +320,30 @@ def apply_default_to_global_transformation(name, local):
if isinstance(local, str): if isinstance(local, str):
local = prim.Variable(local) local = prim.Variable(local)
d_var = prim.Variable(component_iname('to_global')) dim_pym = prim.Variable(component_iname('to_global'))
coeffs = bilinear_transformation_coefficients() coeffs_pym = [prim.Subscript(prim.Variable(coeff), (dim_pym,)) for coeff in bilinear_transformation_coefficients()]
local_pym = [prim.Subscript(local, i) for i in range(dim)]
corner_0_pym = prim.Subscript(prim.Variable(corners), (0, dim_pym))
# global[d] = T(local)[d] # global[d] = T(local)[d]
if dim == 2: if dim == 2:
a_var, b_var, c_var = [prim.Variable(coeff) for coeff in coeffs] a_pym, b_pym, c_pym = coeffs_pym
expr = (prim.Subscript(a_var, (d_var)) * prim.Subscript(local, (0,)) * prim.Subscript(local, (1,)) + expr = a_pym * local_pym[0] * local_pym[1] + b_pym * local_pym[0] + c_pym * local_pym[1] + corner_0_pym
prim.Subscript(b_var, (d_var,)) * prim.Subscript(local, (0,)) + elif dim == 3:
prim.Subscript(c_var, (d_var,)) * prim.Subscript(local, (1,)) + a_pym, b_pym, c_pym, d_pym, e_pym, f_pym, g_pym = coeffs_pym
prim.Subscript(prim.Variable(corners), (0, d_var))) expr = a_pym * local_pym[0] * local_pym[1] * local_pym[2] + b_pym * local_pym[0] * local_pym[1] + \
c_pym * local_pym[0] * local_pym[2] + d_pym * local_pym[1] * local_pym[2] + \
e_pym * local_pym[0] + f_pym * local_pym[1] + g_pym * local_pym[2] + corner_0_pym
else:
raise NotImplementedError
assignee = prim.Subscript(prim.Variable(name), (d_var,)) assignee = prim.Subscript(prim.Variable(name), (dim_pym,))
instruction(assignee=assignee, expression=expr, instruction(assignee=assignee, expression=expr,
within_inames=frozenset(sub_element_inames() + get_backend(interface="quad_inames")() + (d_var.name,)), within_inames=frozenset(sub_element_inames() + get_backend(interface="quad_inames")() + (dim_pym.name,)),
within_inames_is_final=True, within_inames_is_final=True,
depends_on=frozenset({Writes(local.name), Writes(corners)}) depends_on=frozenset({Writes(local.name), Writes(corners)})
) )
...@@ -349,19 +357,16 @@ def apply_constant_to_global_transformation(name, local): ...@@ -349,19 +357,16 @@ def apply_constant_to_global_transformation(name, local):
if isinstance(local, str): if isinstance(local, str):
local = prim.Variable(local) local = prim.Variable(local)
d = component_iname('to_global') dim_pym = prim.Variable(component_iname('to_global'))
# global[d] = lower_left[d] + local[d] * (upper_right[d] - lower_left[d]) # global[d] = lower_left[d] + local[d] * (upper_right[d] - lower_left[d])
expr = prim.Sum((prim.Subscript(prim.Variable(corners), (0,prim.Variable(d))), expr = (prim.Subscript(prim.Variable(corners), (0, dim_pym)) +
prim.Product((prim.Subscript(local, (prim.Variable(d),)), (prim.Subscript(local, (dim_pym,)) * (prim.Subscript(prim.Variable(corners), (2**dim - 1, dim_pym)) -
prim.Sum((prim.Subscript(prim.Variable(corners), (2**dim - 1, prim.Variable(d))), prim.Subscript(prim.Variable(corners), (0, dim_pym)))))
-1 * prim.Subscript(prim.Variable(corners), (0, prim.Variable(d))))) assignee = prim.Subscript(prim.Variable(name), (dim_pym,))
))
))
assignee = prim.Subscript(prim.Variable(name), (prim.Variable(d),))
instruction(assignee=assignee, expression=expr, instruction(assignee=assignee, expression=expr,
within_inames=frozenset(sub_element_inames() + get_backend(interface="quad_inames")() + (d,)), within_inames=frozenset(sub_element_inames() + get_backend(interface="quad_inames")() + (dim_pym.name,)),
within_inames_is_final=True, within_inames_is_final=True,
depends_on=frozenset({Writes(local.name), Writes(corners)}) depends_on=frozenset({Writes(local.name), Writes(corners)})
) )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment