@@ -1661,6 +1661,7 @@ def __init__(self, form, local_knl, subdomain_id, all_integer_subdomain_ids, dia
16611661 self ._constants = _FormHandler .iter_constants (form , local_knl .kinfo )
16621662 self ._active_exterior_facets = _FormHandler .iter_active_exterior_facets (form , local_knl .kinfo )
16631663 self ._active_interior_facets = _FormHandler .iter_active_interior_facets (form , local_knl .kinfo )
1664+ self ._active_orientations_cell = _FormHandler .iter_active_orientations_cell (form , local_knl .kinfo )
16641665 self ._active_orientations_exterior_facet = _FormHandler .iter_active_orientations_exterior_facet (form , local_knl .kinfo )
16651666 self ._active_orientations_interior_facet = _FormHandler .iter_active_orientations_interior_facet (form , local_knl .kinfo )
16661667
@@ -1683,6 +1684,7 @@ def build(self):
16831684 assert_empty (self ._constants )
16841685 assert_empty (self ._active_exterior_facets )
16851686 assert_empty (self ._active_interior_facets )
1687+ assert_empty (self ._active_orientations_cell )
16861688 assert_empty (self ._active_orientations_exterior_facet )
16871689 assert_empty (self ._active_orientations_interior_facet )
16881690
@@ -1880,6 +1882,17 @@ def _as_global_kernel_arg_interior_facet(_, self):
18801882 return op2 .DatKernelArg ((2 ,), m ._global_kernel_arg )
18811883
18821884
1885+ @_as_global_kernel_arg .register (kernel_args .OrientationsCellKernelArg )
1886+ def _ (_ , self ):
1887+ mesh = next (self ._active_orientations_cell )
1888+ if mesh is self ._mesh :
1889+ return op2 .DatKernelArg ((1 ,))
1890+ else :
1891+ m , integral_type = mesh .topology .trans_mesh_entity_map (self ._mesh .topology , self ._integral_type , self ._subdomain_id , self ._all_integer_subdomain_ids )
1892+ assert integral_type == "cell"
1893+ return op2 .DatKernelArg ((1 ,), m ._global_kernel_arg )
1894+
1895+
18831896@_as_global_kernel_arg .register (kernel_args .OrientationsExteriorFacetKernelArg )
18841897def _ (_ , self ):
18851898 mesh = next (self ._active_orientations_exterior_facet )
@@ -1951,6 +1964,7 @@ def __init__(self, form, bcs, local_knl, subdomain_id,
19511964 self ._constants = _FormHandler .iter_constants (form , local_knl .kinfo )
19521965 self ._active_exterior_facets = _FormHandler .iter_active_exterior_facets (form , local_knl .kinfo )
19531966 self ._active_interior_facets = _FormHandler .iter_active_interior_facets (form , local_knl .kinfo )
1967+ self ._active_orientations_cell = _FormHandler .iter_active_orientations_cell (form , local_knl .kinfo )
19541968 self ._active_orientations_exterior_facet = _FormHandler .iter_active_orientations_exterior_facet (form , local_knl .kinfo )
19551969 self ._active_orientations_interior_facet = _FormHandler .iter_active_orientations_interior_facet (form , local_knl .kinfo )
19561970
@@ -2216,6 +2230,17 @@ def _as_parloop_arg_interior_facet(_, self):
22162230 return op2 .DatParloopArg (mesh .interior_facets .local_facet_dat , m )
22172231
22182232
2233+ @_as_parloop_arg .register (kernel_args .OrientationsCellKernelArg )
2234+ def _ (_ , self ):
2235+ mesh = next (self ._active_orientations_cell )
2236+ if mesh is self ._mesh :
2237+ m = None
2238+ else :
2239+ m , integral_type = mesh .topology .trans_mesh_entity_map (self ._mesh .topology , self ._integral_type , self ._subdomain_id , self ._all_integer_subdomain_ids )
2240+ assert integral_type == "cell"
2241+ return op2 .DatParloopArg (mesh .local_cell_orientation_dat , m )
2242+
2243+
22192244@_as_parloop_arg .register (kernel_args .OrientationsExteriorFacetKernelArg )
22202245def _ (_ , self ):
22212246 mesh = next (self ._active_orientations_exterior_facet )
@@ -2312,6 +2337,14 @@ def iter_active_interior_facets(form, kinfo):
23122337 mesh = all_meshes [i ]
23132338 yield mesh
23142339
2340+ @staticmethod
2341+ def iter_active_orientations_cell (form , kinfo ):
2342+ """Yield the form cell orientations referenced in ``kinfo``."""
2343+ all_meshes = extract_domains (form )
2344+ for i in kinfo .active_domain_numbers .orientations_cell :
2345+ mesh = all_meshes [i ]
2346+ yield mesh
2347+
23152348 @staticmethod
23162349 def iter_active_orientations_exterior_facet (form , kinfo ):
23172350 """Yield the form exterior facet orientations referenced in ``kinfo``."""
0 commit comments