Beispiel #1
0

mesh = TriangleMesh(node, cell)

NN = mesh.number_of_nodes()
NE = mesh.number_of_edges()
NC = mesh.number_of_cells()

node = mesh.entity('node')
edge = mesh.entity('edge')
cell = mesh.entity('cell')

ebc = mesh.entity_barycenter('edge')
cbc = mesh.entity_barycenter('cell')

area = mesh.entity_measure('cell')
eh = mesh.entity_measure('edge')

cell2node = mesh.ds.cell_to_node() # cell
cell2edge = mesh.ds.cell_to_edge() # (NC, 3) 
cell2cell = mesh.ds.cell_to_cell() # (NC, 3)

edge2cell = mesh.ds.edge_to_cell() # (NE, 4)
edge2node = mesh.ds.edge_to_node() # edge
edge2edge = mesh.ds.edge_to_edge() # sparse, (NE, NE)

node2cell = mesh.ds.node_to_cell() # sparse, (NN, NC)
node2edge = mesh.ds.node_to_edge() # sparse, (NN, NE)
node2node = mesh.ds.node_to_node() # sparse, (NN, NN)

isBdNode = mesh.ds.boundary_node_flag() # (NN, ), bool
Beispiel #2
0
from fealpy.mesh import TriangleMesh
from fealpy.mesh.simple_mesh_generator import distmesh2d
from fealpy.mesh.level_set_function import drectangle
import triangle as tri
from scipy.spatial import Delaunay

box = [0, 1, 0, 1]
pfix = np.array([[0.0, 0.0], [1.0, 0.0], [1.0, 1.0], [0.0, 1.0]],
                dtype=np.float)
fd = lambda p: drectangle(p, box)

bbox = [-0.1, 1.1, -0.1, 1.1]
pmesh = distmesh2d(fd, 0.01, box, pfix, meshtype='polygon')

fig = plt.figure()
axes = fig.gca()
pmesh.add_plot(axes)

node = pmesh.entity('node')
t = Delaunay(node)
tmesh = TriangleMesh(node, t.simplices.copy())

area = tmesh.entity_measure('cell')
tmesh.delete_cell(area < 1e-8)
area = tmesh.entity_measure('cell')

fig = plt.figure()
axes = fig.gca()
tmesh.add_plot(axes)
plt.show()
Beispiel #3
0
    bc = mesh.cell_barycenter()
    NC = mesh.number_of_cells()
    cellstart = mesh.ds.cellstart
    isMarkedCell = np.zeros(NC + cellstart, dtype=np.bool_)
    isMarkedCell[cellstart:] = abs(bc[:, 1] - 0.) < tt
    mesh.refine_triangle_rg(isMarkedCell)
    # if k < 2:
    #     mesh.uniform_refine(1)

    # bc = mesh.cell_barycenter()
    # NC = mesh.number_of_cells()
    # cellstart = mesh.ds.cellstart
    # isMarkedCell = np.zeros(NC + cellstart, dtype=np.bool_)
    # isMarkedCell[cellstart:] = (abs(bc[:, 1] - 0.) < tt) & (abs(bc[:, 0] - 0.5) < tt/4)
    # mesh.refine_triangle_rg(isMarkedCell)

    fig = plt.figure()
    axes = fig.gca()
    mesh.add_plot(axes)
    # mesh.find_cell(axes, showindex=True)
    plt.show()
    plt.close()

    k += 1
    print('|--- k = %d ---|' % k)
    cm = np.sqrt(np.min(mesh.entity_measure('cell')))
    if tt > 0.025:
        tt = tt / 2.

print('end of the file')