def femScalarPoisson(cad, mesh, mesher): fem = dfm2.FEM_ScalarPoisson(source=1.0) fem.updated_topology(mesh) npIdP = mesher.points_on_edges([0, 1, 2, 3], cad) fem.ls.bc[npIdP] = 1 fem.solve() field = dfm2.gl.VisFEM_ColorContour(fem, "value") dfm2.gl.glfw.winDraw3d([field]) field.write_vtk("poisson2d.vtk")
def femScalarPoissonMasterSlave(cad, mesh): npIdP_ms = cad.points_edge([0], mesh.np_pos) vec_ms = numpy.zeros((mesh.np_pos.shape[0], 1), dtype=numpy.int32) vec_ms[:] = -1 vec_ms[npIdP_ms] = npIdP_ms[0] vec_ms[npIdP_ms[0]] = -1 fem = dfm2.FEM_ScalarPoisson(source=0.2) fem.updated_topology(mesh=mesh, master_slave_pattern=vec_ms) npIdP_fix = cad.points_edge([2], mesh.np_pos) fem.ls.bc[npIdP_fix] = 1 fem.solve() field = dfm2.gl.VisFEM_ColorContour(fem, "value") dfm2.gl.glfw.winDraw3d([field])
def test1(self, request): cad = dfm2.Cad2D() cad.add_polygon(list_xy=[-1, -1, +1, -1, +1, +1, -1, +1]) mesher = dfm2.Mesher_Cad2D(edge_length=0.05) msh = mesher.meshing(cad) fem = dfm2.FEM_ScalarPoisson(source=1.0) fem.updated_topology(msh) npIdP = cad.points_edge([0, 1, 2, 3], msh.np_pos) fem.ls.bc[npIdP] = 1 fem.solve() ## field = dfm2.gl.VisFEM_ColorContour(fem, "value") if request.config.getoption('--is_gl') == "true": dfm2.gl.glfw.winDraw3d([field], nframe=10)
def test1(self, request): sdf0 = dfm2.CppSDF3_Sphere(0.55, [-0.5, 0, 0], True) sdf1 = dfm2.CppSDF3_Sphere(0.55, [+0.5, 0, 0], True) np_xyz, np_tet = dfm2.isosurface([sdf0, sdf1]) msh = dfm2.Mesh(np_xyz, np_tet, dfm2.TET) npIdP0 = numpy.where(msh.np_pos[:, 0] > +1) npIdP1 = numpy.where(msh.np_pos[:, 0] < -1) fem = dfm2.FEM_ScalarPoisson() fem.updated_topology(msh) fem.ls.bc[npIdP0] = 1 fem.ls.bc[npIdP1] = 2 fem.value[:] = 0.5 fem.value[npIdP0] = 0.0 fem.value[npIdP1] = 1.0 fem.solve() ## field = dfm2.gl.VisFEM_ColorContour(fem, "value") field.set_color_minmax() if request.config.getoption('--is_gl') == "true": dfm2.gl.glfw.winDraw3d([field], nframe=10)
def main_MeshDynTri2D_2(): cad = dfm2.Cad2D() cad.add_polygon([-1,-1, +1,-1, +1,+1, -1,+1]) mesher = dfm2.Mesher_Cad2D(edge_length=0.05) dmsh = mesher.meshing(cad) #### fem = dfm2.FEM_ScalarPoisson(source=1.0) fem.updated_topology(dmsh) npIdP = cad.points_edge([0,1,2,3], dmsh.np_pos) fem.value[npIdP] = 0.0 fem.ls.bc[npIdP] = 1 fem.solve() vis = dfm2.gl.VisFEM_ColorContour(fem,name_color="value") dfm2.gl.glfw.winDraw3d([vis,dmsh]) ##### mapper = dmsh.refine_EdgeLongerThan_InsideCircle(0.05, 0.0,0.0,0.5) fem.updated_topology(dmsh,mapper=mapper) dfm2.gl.glfw.winDraw3d([vis,dmsh]) ##### fem.value[npIdP] = 0.0 fem.ls.bc[npIdP] = 1 fem.solve() dfm2.gl.glfw.winDraw3d([vis,dmsh])