Thanks for the input @dokken . I am now doing this
def create_internal_ds_measure(mesh, domain_tag, facet_tag):
"""Create internal ds measure for the interior facets."""
fdim = mesh.topology.dim - 1
tdim = mesh.topology.dim
f_to_c = mesh.topology.connectivity(fdim, tdim)
c_to_f = mesh.topology.connectivity(tdim, fdim)
cell_map = mesh.topology.index_map(tdim)
num_cells = cell_map.size_local + cell_map.num_ghosts
facets_to_integrate = facet_tag.find(5)
facet_map = mesh.topology.index_map(fdim)
num_facets = facet_map.size_local + facet_map.num_ghosts
integration_entities = []
for i, facet in enumerate(facets_to_integrate):
if facet >= facet_map.size_local:
continue
cells = f_to_c.links(facet)
marked_cells = domain_tag.values[cells]
correct_cell = np.flatnonzero(marked_cells == 2)
assert len(correct_cell) == 1
local_facets = c_to_f.links(cells[correct_cell[0]])
local_index = np.flatnonzero(local_facets == facet)
assert len(local_index) == 1
integration_entities.append(cells[correct_cell[0]])
integration_entities.append(local_index[0])
ds_internal = ufl.Measure("ds", domain=mesh, subdomain_data=[
(5, np.asarray(integration_entities, dtype=np.int32).flatten())])
return ds_internal
and I then change the call for the drag and lift calculation to
Dr = -dolfinx.fem.assemble_scalar(
dolfinx.fem.form((sigma(v, p, d, mu_f) * n)[0] * ds(6))
)
Li = -dolfinx.fem.assemble_scalar(
dolfinx.fem.form((sigma(v, p, d, mu_f) * n)[1] * ds(6))
)
Dr += -dolfinx.fem.assemble_scalar(
dolfinx.fem.form((sigma(v, p, d, mu_f) * n)[0] * ds_internal(5))
)
Li += -dolfinx.fem.assemble_scalar(
dolfinx.fem.form((sigma(v, p, d, mu_f) * n)[1] * ds_internal(5))
)
but I am getting the error
Traceback (most recent call last):
File “/root/main_fsi.py”, line 194, in
main(args.case)
File “/root/main_fsi.py”, line 150, in main
Dr, Li = compute_drag_lift(
File “/root/src/fsi/modules/solver_utils.py”, line 124, in compute_drag_lift
dolfinx.fem.form((sigma(v, p, d, mu_f) * n)[0] * ds_internal(5))
File “/usr/local/dolfinx-real/lib/python3.10/dist-packages/dolfinx/fem/forms.py”, line 176, in form
return _create_form(form)
File “/usr/local/dolfinx-real/lib/python3.10/dist-packages/dolfinx/fem/forms.py”, line 171, in _create_form
return _form(form)
File “/usr/local/dolfinx-real/lib/python3.10/dist-packages/dolfinx/fem/forms.py”, line 165, in _form
return formcls(ufcx_form, V, coeffs, constants, subdomains, mesh, module.ffi, code)
File “/usr/local/dolfinx-real/lib/python3.10/dist-packages/dolfinx/fem/forms.py”, line 51, in init
super().init(ffi.cast(“uintptr_t”, ffi.addressof(self._ufcx_form)),
TypeError: init(): incompatible constructor arguments. The following argument types are supported:
1. dolfinx.cpp.fem.Form_float64(spaces: List[dolfinx::fem::FunctionSpace], integrals: Dict[dolfinx::fem::IntegralType, Tuple[List[Tuple[int, object]], dolfinx.cpp.mesh.MeshTags_int32]], coefficients: List[dolfinx.cpp.fem.Function_float64], constants: List[dolfinx.cpp.fem.Constant_float64], need_permutation_data: bool, mesh: dolfinx.cpp.mesh.Mesh = None)
2. dolfinx.cpp.fem.Form_float64(form: int, spaces: List[dolfinx::fem::FunctionSpace], coefficients: List[dolfinx.cpp.fem.Function_float64], constants: List[dolfinx.cpp.fem.Constant_float64], subdomains: Dict[dolfinx::fem::IntegralType, dolfinx.cpp.mesh.MeshTags_int32], mesh: dolfinx.cpp.mesh.Mesh)
Invoked with: <cdata ‘uintptr_t’ 126747154867488>,
, [<dolfinx.cpp.fem.Function_float64 object at 0x73469ec770f0>, <dolfinx.cpp.fem.Function_float64 object at 0x73469e9a71f0>, <dolfinx.cpp.fem.Function_float64 object at 0x73469e9a76b0>],
, {<IntegralType.cell: 0>: None, <IntegralType.exterior_facet: 1>: [(5, array([ 375, 2, 397, 2, 398, 2, 421, 2, 444, 2, 464,
2, 488, 2, 489, 2, 514, 2, 532, 2, 536, 2,
559, 2, 581, 2, 604, 2, 609, 2, 633, 2, 634,
2, 659, 2, 660, 2, 684, 2, 706, 2, 728, 2,
748, 2, 772, 2, 779, 2, 806, 2, 824, 2, 835,
2, 856, 2, 861, 2, 886, 2, 891, 2, 917, 2,
927, 2, 963, 2, 964, 2, 933, 2, 935, 2, 973,
2, 960, 2, 1011, 2, 1027, 2, 1070, 2, 1106, 2,
1110, 2, 1107, 2, 1121, 2, 1086, 2, 1125, 1, 1162,
2, 1246, 2, 1254, 1], dtype=int32))], <IntegralType.interior_facet: 2>: None, <IntegralType.vertex: 3>: None}, <dolfinx.mesh.Mesh object at 0x73469e94cfe0>