@@ -1646,6 +1646,7 @@ def __init__(self, form, local_knl, subdomain_id, all_integer_subdomain_ids, dia
16461646 self ._constants = _FormHandler .iter_constants (form , local_knl .kinfo )
16471647 self ._active_exterior_facets = _FormHandler .iter_active_exterior_facets (form , local_knl .kinfo )
16481648 self ._active_interior_facets = _FormHandler .iter_active_interior_facets (form , local_knl .kinfo )
1649+ self ._active_orientations_cell = _FormHandler .iter_active_orientations_cell (form , local_knl .kinfo )
16491650 self ._active_orientations_exterior_facet = _FormHandler .iter_active_orientations_exterior_facet (form , local_knl .kinfo )
16501651 self ._active_orientations_interior_facet = _FormHandler .iter_active_orientations_interior_facet (form , local_knl .kinfo )
16511652
@@ -1668,6 +1669,7 @@ def build(self):
16681669 assert_empty (self ._constants )
16691670 assert_empty (self ._active_exterior_facets )
16701671 assert_empty (self ._active_interior_facets )
1672+ assert_empty (self ._active_orientations_cell )
16711673 assert_empty (self ._active_orientations_exterior_facet )
16721674 assert_empty (self ._active_orientations_interior_facet )
16731675
@@ -1865,6 +1867,17 @@ def _as_global_kernel_arg_interior_facet(_, self):
18651867 return op2 .DatKernelArg ((2 ,), m ._global_kernel_arg )
18661868
18671869
1870+ @_as_global_kernel_arg .register (kernel_args .OrientationsCellKernelArg )
1871+ def _ (_ , self ):
1872+ mesh = next (self ._active_orientations_cell )
1873+ if mesh is self ._mesh :
1874+ return op2 .DatKernelArg ((1 ,))
1875+ else :
1876+ m , integral_type = mesh .topology .trans_mesh_entity_map (self ._mesh .topology , self ._integral_type , self ._subdomain_id , self ._all_integer_subdomain_ids )
1877+ assert integral_type == "cell"
1878+ return op2 .DatKernelArg ((1 ,), m ._global_kernel_arg )
1879+
1880+
18681881@_as_global_kernel_arg .register (kernel_args .OrientationsExteriorFacetKernelArg )
18691882def _ (_ , self ):
18701883 mesh = next (self ._active_orientations_exterior_facet )
@@ -1936,6 +1949,7 @@ def __init__(self, form, bcs, local_knl, subdomain_id,
19361949 self ._constants = _FormHandler .iter_constants (form , local_knl .kinfo )
19371950 self ._active_exterior_facets = _FormHandler .iter_active_exterior_facets (form , local_knl .kinfo )
19381951 self ._active_interior_facets = _FormHandler .iter_active_interior_facets (form , local_knl .kinfo )
1952+ self ._active_orientations_cell = _FormHandler .iter_active_orientations_cell (form , local_knl .kinfo )
19391953 self ._active_orientations_exterior_facet = _FormHandler .iter_active_orientations_exterior_facet (form , local_knl .kinfo )
19401954 self ._active_orientations_interior_facet = _FormHandler .iter_active_orientations_interior_facet (form , local_knl .kinfo )
19411955
@@ -2201,6 +2215,17 @@ def _as_parloop_arg_interior_facet(_, self):
22012215 return op2 .DatParloopArg (mesh .interior_facets .local_facet_dat , m )
22022216
22032217
2218+ @_as_parloop_arg .register (kernel_args .OrientationsCellKernelArg )
2219+ def _ (_ , self ):
2220+ mesh = next (self ._active_orientations_cell )
2221+ if mesh is self ._mesh :
2222+ m = None
2223+ else :
2224+ m , integral_type = mesh .topology .trans_mesh_entity_map (self ._mesh .topology , self ._integral_type , self ._subdomain_id , self ._all_integer_subdomain_ids )
2225+ assert integral_type == "cell"
2226+ return op2 .DatParloopArg (mesh .local_cell_orientation_dat , m )
2227+
2228+
22042229@_as_parloop_arg .register (kernel_args .OrientationsExteriorFacetKernelArg )
22052230def _ (_ , self ):
22062231 mesh = next (self ._active_orientations_exterior_facet )
@@ -2297,6 +2322,14 @@ def iter_active_interior_facets(form, kinfo):
22972322 mesh = all_meshes [i ]
22982323 yield mesh
22992324
2325+ @staticmethod
2326+ def iter_active_orientations_cell (form , kinfo ):
2327+ """Yield the form cell orientations referenced in ``kinfo``."""
2328+ all_meshes = extract_domains (form )
2329+ for i in kinfo .active_domain_numbers .orientations_cell :
2330+ mesh = all_meshes [i ]
2331+ yield mesh
2332+
23002333 @staticmethod
23012334 def iter_active_orientations_exterior_facet (form , kinfo ):
23022335 """Yield the form exterior facet orientations referenced in ``kinfo``."""
0 commit comments