@@ -95,9 +95,6 @@ def assemble_vector(form: _forms, constraint: MultiPointConstraint, b: Optional[
9595 if e0 .needs_dof_transformations :
9696 raise NotImplementedError ("Dof transformations not implemented" )
9797 # Assemble over cells
98- subdomain_ids = form ._cpp_object .integral_ids (_fem .IntegralType .cell )
99- num_cell_integrals = len (subdomain_ids )
100-
10198 if _PETSc .ScalarType == numpy .float32 : # type: ignore
10299 nptype = "float32"
103100 elif _PETSc .ScalarType == numpy .float64 : # type: ignore
@@ -109,15 +106,15 @@ def assemble_vector(form: _forms, constraint: MultiPointConstraint, b: Optional[
109106 else :
110107 raise RuntimeError (f"Unsupported scalar type { _PETSc .ScalarType } ." ) # type: ignore
111108 ufcx_form = form .ufcx_form
112- if num_cell_integrals > 0 :
109+ if ( num_cell_integrals := form . num_integrals ( _fem . IntegralType . cell , 0 )) > 0 :
113110 V .mesh .topology .create_entity_permutations ()
114111
115112 # NOTE: This depends on enum ordering in ufcx.h
116113 cell_form_pos = ufcx_form .form_integral_offsets [0 ]
117- for i , id in enumerate ( subdomain_ids ):
114+ for i in range ( num_cell_integrals ):
118115 cell_kernel = getattr (ufcx_form .form_integrals [cell_form_pos + i ], f"tabulate_tensor_{ nptype } " )
119- active_cells = form ._cpp_object .domains (_fem .IntegralType .cell , id )
120- coeffs_i = form_coeffs [(_fem .IntegralType .cell , id )]
116+ active_cells = form ._cpp_object .domains (_fem .IntegralType .cell , i )
117+ coeffs_i = form_coeffs [(_fem .IntegralType .cell , i )]
121118 with vector .localForm () as b :
122119 assemble_cells (
123120 numpy .asarray (b ),
@@ -134,9 +131,7 @@ def assemble_vector(form: _forms, constraint: MultiPointConstraint, b: Optional[
134131 )
135132
136133 # Assemble exterior facet integrals
137- subdomain_ids = form ._cpp_object .integral_ids (_fem .IntegralType .exterior_facet )
138- num_exterior_integrals = len (subdomain_ids )
139- if num_exterior_integrals > 0 :
134+ if (num_exterior_integrals := form .num_integrals (_fem .IntegralType .exterior_facet , 0 )) > 0 :
140135 V .mesh .topology .create_entities (tdim - 1 )
141136 V .mesh .topology .create_connectivity (tdim - 1 , tdim )
142137 # Get facet permutations if required
@@ -146,10 +141,10 @@ def assemble_vector(form: _forms, constraint: MultiPointConstraint, b: Optional[
146141 perm = (cell_perms , form ._cpp_object .needs_facet_permutations , facet_perms )
147142 # NOTE: This depends on enum ordering in ufcx.h
148143 ext_facet_pos = ufcx_form .form_integral_offsets [1 ]
149- for i , id in enumerate ( subdomain_ids ):
144+ for i in range ( num_exterior_integrals ):
150145 facet_kernel = getattr (ufcx_form .form_integrals [ext_facet_pos + i ], f"tabulate_tensor_{ nptype } " )
151- coeffs_i = form_coeffs [(_fem .IntegralType .exterior_facet , id )]
152- facets = form ._cpp_object .domains (_fem .IntegralType .exterior_facet , id )
146+ coeffs_i = form_coeffs [(_fem .IntegralType .exterior_facet , i )]
147+ facets = form ._cpp_object .domains (_fem .IntegralType .exterior_facet , i )
153148 facet_info = pack_slave_facet_info (facets , slave_cells )
154149 num_facets_per_cell = len (V .mesh .topology .connectivity (tdim , tdim - 1 ).links (0 ))
155150 with vector .localForm () as b :
0 commit comments