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

adds to_global for unstructured 2d grids

parent fc4b685f
No related branches found
No related tags found
No related merge requests found
......@@ -312,6 +312,35 @@ def name_point_in_macro(point_in_micro):
return name
def apply_default_to_global_transformation(name, local):
dim = world_dimension()
temporary_variable(name, shape=(dim,), managed=True)
corners = name_element_corners()
if isinstance(local, str):
local = prim.Variable(local)
d_var = prim.Variable(component_iname('to_global'))
coeffs = bilinear_transformation_coefficients()
# global[d] = T(local)[d]
if dim == 2:
a_var, b_var, c_var = [prim.Variable(coeff) for coeff in coeffs]
expr = (prim.Subscript(a_var, (d_var)) * prim.Subscript(local, (0,)) * prim.Subscript(local, (1,)) +
prim.Subscript(b_var, (d_var,)) * prim.Subscript(local, (0,)) +
prim.Subscript(c_var, (d_var,)) * prim.Subscript(local, (1,)) +
prim.Subscript(prim.Variable(corners), (0, d_var)))
assignee = prim.Subscript(prim.Variable(name), (d_var,))
instruction(assignee=assignee, expression=expr,
within_inames=frozenset(sub_element_inames() + get_backend(interface="quad_inames")() + (d_var.name,)),
within_inames_is_final=True,
depends_on=frozenset({Writes(local.name), Writes(corners)})
)
def apply_constant_to_global_transformation(name, local):
dim = world_dimension()
temporary_variable(name, shape=(dim,), managed=True)
......@@ -344,6 +373,5 @@ def to_global(local):
if get_form_option("constant_transformation_matrix"):
apply_constant_to_global_transformation(name, prim.Variable(macro))
else:
from dune.perftool.pdelab.geometry import apply_to_global_transformation
apply_to_global_transformation(name, prim.Variable(macro))
apply_default_to_global_transformation(name, prim.Variable(macro))
return prim.Variable(name)
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