def geometry(self) -> Geometry: geom = Geometry() cylinder = geom.add_circle([*self.centre, 0.0], self.radius, lcar=self.lcar) channel = geom.add_rectangle( 0.0, self.length, 0.0, self.height, 0, holes=[cylinder], lcar=self.lcar ) geom.add_physical(channel.surface, "domain") geom.add_physical(channel.lines[1], "outlet") geom.add_physical(channel.lines[3], "inlet") return geom
return sum(np.einsum("j...,ij...->i...", w["wind"], w["wind"].grad) * v) @skfem.BilinearForm def port_pressure(u, v, w): """v is the P2 velocity test-function, u a P1 pressure""" return sum(v * (u * w.n)) radius = 0.05 height = 0.41 geom = Geometry() cylinder = geom.add_circle([0.2, 0.2, 0.0], radius, lcar=radius / 2) channel = geom.add_rectangle( 0.0, 2.2, 0.0, height, 0, holes=[cylinder], lcar=radius / 2 ) geom.add_physical(channel.surface, "domain") geom.add_physical(channel.lines[1], "outlet") geom.add_physical(channel.lines[3], "inlet") mesh = from_meshio(generate_mesh(geom, dim=2)) element = {"u": skfem.ElementVectorH1(skfem.ElementTriP2()), "p": skfem.ElementTriP1()} basis = { **{v: skfem.InteriorBasis(mesh, e, intorder=4) for v, e in element.items()}, "inlet": skfem.FacetBasis(mesh, element["u"], facets=mesh.boundaries["inlet"]), } M = skfem.asm(vector_mass, basis["u"]) L = {"u": skfem.asm(vector_laplace, basis["u"]), "p": skfem.asm(laplace, basis["p"])} B = -skfem.asm(divergence, basis["u"], basis["p"])