Exemplo n.º 1
0
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")
Exemplo n.º 2
0
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])
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
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])