@@ -1618,6 +1618,7 @@ def __init__(self, form, local_knl, subdomain_id, all_integer_subdomain_ids, dia
16181618 self ._constants = _FormHandler .iter_constants (form , local_knl .kinfo )
16191619 self ._active_exterior_facets = _FormHandler .iter_active_exterior_facets (form , local_knl .kinfo )
16201620 self ._active_interior_facets = _FormHandler .iter_active_interior_facets (form , local_knl .kinfo )
1621+ self ._active_orientations_cell = _FormHandler .iter_active_orientations_cell (form , local_knl .kinfo )
16211622 self ._active_orientations_exterior_facet = _FormHandler .iter_active_orientations_exterior_facet (form , local_knl .kinfo )
16221623 self ._active_orientations_interior_facet = _FormHandler .iter_active_orientations_interior_facet (form , local_knl .kinfo )
16231624
@@ -1640,6 +1641,7 @@ def build(self):
16401641 assert_empty (self ._constants )
16411642 assert_empty (self ._active_exterior_facets )
16421643 assert_empty (self ._active_interior_facets )
1644+ assert_empty (self ._active_orientations_cell )
16431645 assert_empty (self ._active_orientations_exterior_facet )
16441646 assert_empty (self ._active_orientations_interior_facet )
16451647
@@ -1837,6 +1839,17 @@ def _as_global_kernel_arg_interior_facet(_, self):
18371839 return op2 .DatKernelArg ((2 ,), m ._global_kernel_arg )
18381840
18391841
1842+ @_as_global_kernel_arg .register (kernel_args .OrientationsCellKernelArg )
1843+ def _ (_ , self ):
1844+ mesh = next (self ._active_orientations_cell )
1845+ if mesh is self ._mesh :
1846+ return op2 .DatKernelArg ((1 ,))
1847+ else :
1848+ m , integral_type = mesh .topology .trans_mesh_entity_map (self ._mesh .topology , self ._integral_type , self ._subdomain_id , self ._all_integer_subdomain_ids )
1849+ assert integral_type == "cell"
1850+ return op2 .DatKernelArg ((1 ,), m ._global_kernel_arg )
1851+
1852+
18401853@_as_global_kernel_arg .register (kernel_args .OrientationsExteriorFacetKernelArg )
18411854def _ (_ , self ):
18421855 mesh = next (self ._active_orientations_exterior_facet )
@@ -1908,6 +1921,7 @@ def __init__(self, form, bcs, local_knl, subdomain_id,
19081921 self ._constants = _FormHandler .iter_constants (form , local_knl .kinfo )
19091922 self ._active_exterior_facets = _FormHandler .iter_active_exterior_facets (form , local_knl .kinfo )
19101923 self ._active_interior_facets = _FormHandler .iter_active_interior_facets (form , local_knl .kinfo )
1924+ self ._active_orientations_cell = _FormHandler .iter_active_orientations_cell (form , local_knl .kinfo )
19111925 self ._active_orientations_exterior_facet = _FormHandler .iter_active_orientations_exterior_facet (form , local_knl .kinfo )
19121926 self ._active_orientations_interior_facet = _FormHandler .iter_active_orientations_interior_facet (form , local_knl .kinfo )
19131927
@@ -2173,6 +2187,17 @@ def _as_parloop_arg_interior_facet(_, self):
21732187 return op2 .DatParloopArg (mesh .interior_facets .local_facet_dat , m )
21742188
21752189
2190+ @_as_parloop_arg .register (kernel_args .OrientationsCellKernelArg )
2191+ def _ (_ , self ):
2192+ mesh = next (self ._active_orientations_cell )
2193+ if mesh is self ._mesh :
2194+ m = None
2195+ else :
2196+ m , integral_type = mesh .topology .trans_mesh_entity_map (self ._mesh .topology , self ._integral_type , self ._subdomain_id , self ._all_integer_subdomain_ids )
2197+ assert integral_type == "cell"
2198+ return op2 .DatParloopArg (mesh .local_cell_orientation_dat , m )
2199+
2200+
21762201@_as_parloop_arg .register (kernel_args .OrientationsExteriorFacetKernelArg )
21772202def _ (_ , self ):
21782203 mesh = next (self ._active_orientations_exterior_facet )
@@ -2269,6 +2294,14 @@ def iter_active_interior_facets(form, kinfo):
22692294 mesh = all_meshes [i ]
22702295 yield mesh
22712296
2297+ @staticmethod
2298+ def iter_active_orientations_cell (form , kinfo ):
2299+ """Yield the form cell orientations referenced in ``kinfo``."""
2300+ all_meshes = extract_domains (form )
2301+ for i in kinfo .active_domain_numbers .orientations_cell :
2302+ mesh = all_meshes [i ]
2303+ yield mesh
2304+
22722305 @staticmethod
22732306 def iter_active_orientations_exterior_facet (form , kinfo ):
22742307 """Yield the form exterior facet orientations referenced in ``kinfo``."""
0 commit comments