Hello everyone,
I am trying to solve an Acoustic FSI problem with the HDG method, but an error has occurred. The following lines are the (global) code I wrote.
Creating geometry:
geometry = SplineGeometry()
# point coordinates ...
pnts = [ (-0.5,-0.5), (0,-0.5), (0,0.5), (-0.5,0.5), (0.5,-0.5), (0.5,0.5)]
pnums = [geometry.AppendPoint(*p) for p in pnts]
# start-point, end-point, boundary-condition, domain on left side, domain on right side:
geometry.Append(["line", pnums[0], pnums[1]], bc="fluid", leftdomain=1, rightdomain=0)
geometry.Append(["line", pnums[1], pnums[2]], bc="interface", leftdomain=1, rightdomain=2)
geometry.Append(["line", pnums[2], pnums[3]], bc="fluid", leftdomain=1, rightdomain=0)
geometry.Append(["line", pnums[3], pnums[0]], bc="fluid", leftdomain=1, rightdomain=0)
geometry.Append(["line", pnums[1], pnums[4]], bc="solid", leftdomain=2, rightdomain=0)
geometry.Append(["line", pnums[4], pnums[5]], bc="solid", leftdomain=2, rightdomain=0)
geometry.Append(["line", pnums[5], pnums[2]], bc="solid", leftdomain=2, rightdomain=0)
geometry.SetMaterial(1,"fluid")
geometry.SetMaterial(2,"solid")
mesh = Mesh(geometry.GenerateMesh(maxh=0.1))
Spaces generated:
U_s = VectorL2(mesh, order=order, complex=True, definedon="solid")
F_s = FacetFESpace(mesh, order=order, complex=True, definedon="solid")
U_f = VectorL2(mesh, order=order, complex=True, definedon="fluid")
F_f = FacetFESpace(mesh, order=order, complex=True, definedon="fluid")
Q = L2(mesh, order=order, complex=True) # Pressure space
fes = FESpace([Q, U_f, U_s, F_f, F_f, F_s, F_s], highest_order_dc=True)
(p_f, u_f, u_s, uhatx_f, uhaty_f, uhatx_s, uhaty_s), \
(q_f, v_f, v_s, vhatx_f, vhaty_f, vhatx_s, vhaty_s) = fes.TnT()
bilinear form:
a = BilinearForm(fes, condense=condense)
# fluid domain
dS = dx(element_boundary=True, definedon=mesh.Materials("fluid"))
a += (.........) * dx("fluid") # volume elements
a += (.........) * dS # boundary elements
a += (.........) * ds(definedon=mesh.Boundaries("fluid")) # fluid boundary domain
# solid domain
dS = dx(element_boundary=True, definedon=mesh.Materials("solid"))
a += (.........) * dx("solid") # volume elements
a += (.........) * dS # boundary elements
a += (.........) * ds(definedon=mesh.Boundaries("solid")) # solid boundary domain
# solid domain
dS = dx(element_boundary=True, definedon=mesh.Materials("interface"))
a += (.........) * dx("solid") # volume elements
a += (.........) * dS # boundary elements
a += (.........) * ds(definedon=mesh.Boundaries("solid")) # solid boundary domain
# interface fluid-solid domain
a += (.........) * ds(definedon=mesh.Boundaries("interface"))
# source
f = LinearForm(fes)
f += (.........) * ds(definedon=mesh.Boundaries("fluid")) # fluid
f += (.........) * ds(definedon=mesh.Boundaries("solid")) # solid
a.Assemble()
f.Assemble()
Then, I got the following error:
[color=red]
NgException: FacetBilinearFormIntegrator::CalcFacetMatrix for inner facets not implemented!in Assemble BilinearForm ‘biform_from_py’
[/color]
1- Assuming I wrote the correct formulation, why did I get this error?
2- Am I skipping any steps? Do I need to include anything else?
Finally, I tried to solve the same problem with Galerkin FEM and got the same error.
Please let me know what I did wrong.
Thanks in advance and have a nice new year!
Best Regards,
Alan