

setNumber ( "General.Terminal", 1 ) model. setCurrent ( "Sphere minus box" ) # Generate second order mesh and output gmsh messages to terminal model. rank = 0 : # Using tCurrent(model_name) lets you change between models model. Mesh on rank 0, then build a distributed mesh. write_meshtags ( mt, geometry_xpath = )Ĭreate a distributed (parallel) mesh with quadratic geometry. COMM_WORLD, "out_gmsh/mesh.xdmf", "w" ) as file : file. name = "ball_d1_surface" with XDMFFile ( MPI. create_connectivity ( 2, 0 ) mt = meshtags_from_entities ( msh, 2, create_adjacencylist ( entities ), np.

name = "ball_d1" entities, values = distribute_entity_data ( msh, 2, marked_facets, facet_values ) msh. COMM_WORLD, cells, x, ufl_mesh_from_gmsh ( gmsh_cell_id, 3 )) msh. empty () marked_facets, facet_values = np. bcast ( None, root = 0 ) cells, x = np. bcast ( None, root = 0 ) num_nodes = MPI. getElementType ( "triangle", 1 ) marked_facets = topologies. shape, root = 0 ) gmsh_facet_id = model. getElementType ( "tetrahedron", 1 ), root = 0 ) # Get mesh data for dim (0, tdim) for all physical entities topologies = extract_gmsh_topology_and_markers ( model, "Sphere minus box" ) cells = topologies cell_data = topologies num_nodes = MPI. generate ( 3 ) # Sort mesh nodes according to their index in gmsh x = extract_gmsh_geometry ( model, model_name = "Sphere minus box" ) # Broadcast cell type data and geometric dimension gmsh_cell_id = MPI. setPhysicalName ( 3, 2, "Sphere volume" ) model. addPhysicalGroup ( 3, volume_entities, tag = 2 ) model. setPhysicalName ( 2, 1, "Sphere surface" ) # Add physical tag 2 for the volume volume_entities = for model in model. addPhysicalGroup ( 2, boundary_ids, tag = 1 ) model. getBoundary ( model_dim_tags, oriented = False ) boundary_ids = for b in boundary ] model. synchronize () # Add physical tag 1 for exterior surfaces boundary = model. addSphere ( 0, 0, 0, 1 ) box_dim_tags = model. setCurrent ( "Sphere minus box" ) sphere_dim_tags = model. Mesh on rank 0, then build a distributed mesh write_mesh ( msh )Ĭreate a distributed (parallel) mesh with affine geometry. shape )) # with XDMFFile(MPI.COMM_SELF, f"out_gmsh/mesh_rank_. COMM_SELF, cells, x, ufl_mesh_from_gmsh ( element_types, x. reshape ( - 1, num_nodes ) - 1 msh = create_mesh ( MPI. getElementProperties ( element_types ) cells = node_tags. getElements ( dim = 3 ) assert len ( element_types ) = 1 name, dim, order, num_nodes, local_coords, num_first_order_nodes = model. generate ( 3 ) # Sort mesh nodes according to their index in gmsh (Starts at 1) x = extract_gmsh_geometry ( model, model_name = "Sphere" ) # Extract cells from gmsh (Only interested in tetrahedrons) element_types, element_tags, node_tags = model. addSphere ( 0, 0, 0, 1, tag = 1 ) # Generate mesh model. setNumber ( "General.Terminal", 0 ) model = gmsh.
