Skip to content

Instantly share code, notes, and snippets.

@dfroger
Last active August 29, 2015 13:56
Show Gist options
  • Save dfroger/9320375 to your computer and use it in GitHub Desktop.
Save dfroger/9320375 to your computer and use it in GitHub Desktop.
Partionning a triangular mesh using Metis
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This notebook shows how to partition a triangular mesh using Metis."
]
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Various imports"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import triangle\n",
"from pylab import *\n",
"from pymetis import part_graph\n",
"%matplotlib inline"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Mesh a square"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"A = {'vertices' : array([[0,0], [1,0], [1, 1], [0, 1]])}"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"B = triangle.triangulate(A, 'qa0.05')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print B.keys()\n",
"print B['vertex_markers'].shape\n",
"print B['vertices'].shape\n",
"print B['triangles'].shape"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"['vertex_markers', 'vertices', 'triangles']\n",
"(23, 1)\n",
"(23, 2)\n",
"(29, 3)\n"
]
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x1d = B['vertices'][:,0]\n",
"y1d = B['vertices'][:,1]\n",
"triangles = B['triangles']\n",
"ntri = len(triangles)\n",
"figure(figsize=(4,4))\n",
"triplot(x1d,y1d,triangles)\n",
"axis('scaled')\n",
"\n",
"def plot_nodes(marker=True, index=True):\n",
" if marker:\n",
" plot(x1d, y1d, 'ko')\n",
" if index:\n",
" for ipoint,(x,y) in enumerate(zip(x1d,y1d)):\n",
" text(x+0.05,y+0.01,'%i'%ipoint)\n",
"plot_nodes()\n",
"\n",
"# Compute center of triangles.\n",
"xcenter = empty( (ntri) )\n",
"ycenter = empty( (ntri) )\n",
"for itri,tri in enumerate(triangles):\n",
" xcenter[itri] = sum(x1d[tri]) / 3.\n",
" ycenter[itri] = sum(y1d[tri]) / 3.\n",
"for itri,(x,y) in enumerate(zip(xcenter,ycenter)):\n",
" text(x,y,itri,color='red')\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nEQOLiIgI5/wDCFs4MrtzjpcAAAAASUVORK5CYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x2e8a450>"
]
}
],
"prompt_number": 5
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Compute adjacency"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# triangles_inv: {point_index : [itri,...]}\n",
"triangles_inv = {}\n",
"for ip in range(len(x1d)):\n",
" triangles_inv[ip] = []\n",
"for itri, tri in enumerate(triangles):\n",
" for ip in tri:\n",
" triangles_inv[ip].append(itri)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def triangles_with_points(p,q,remove=[]):\n",
" \"\"\"Returns a list of 0, 1 or 2 triangles having both points p and q\"\"\"\n",
" l = list(intersect1d(triangles_inv[p], triangles_inv[q]))\n",
" for itri in remove:\n",
" l.remove(itri)\n",
" return l\n",
"adjacency = {}\n",
"for itri in range(ntri):\n",
" adjacency[itri] = []\n",
"for itri,(p0,p1,p2) in enumerate(triangles):\n",
" adjacency[itri].extend( triangles_with_points(p0,p1,remove=[itri]) )\n",
" adjacency[itri].extend( triangles_with_points(p0,p2,remove=[itri]) )\n",
" adjacency[itri].extend( triangles_with_points(p1,p2,remove=[itri]) )"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print adjacency[22]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[14, 4, 5]\n"
]
}
],
"prompt_number": 8
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Mesh partionning"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"npart = 3\n",
"cuts, part = part_graph(npart,adjacency)\n",
"print cuts, part"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"6 [2, 1, 1, 1, 0, 0, 1, 1, 1, 1, 2, 1, 0, 1, 1, 2, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 0]\n"
]
}
],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"triangle = array(triangle)\n",
"print x1d.shape\n",
"print y1d.shape\n",
"print triangles.shape\n",
"tripcolor(x1d, y1d, triangles, facecolors=array(part), edgecolors='k', cmap=cm.Pastel1)\n",
"axis('scaled')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"(23,)\n",
"(23,)\n",
"(29, 3)\n"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 10,
"text": [
"(0.0, 1.0, 0.0, 1.0)"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x2ea2950>"
]
}
],
"prompt_number": 10
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment