is an option for DiscretizeRegion and related functions that specifies a function to indicate whether mesh cells should be refined or not.
MeshRefinementFunction
is an option for DiscretizeRegion and related functions that specifies a function to indicate whether mesh cells should be refined or not.
Details
- With MeshRefinementFunction->f, the function f[vlist,m] is applied to each simplex created, where vlist is a list of the vertices and m is the measure. If f[vlist,m] returns True, the simplex will be refined.
Examples
open all close allBasic Examples (2)
Discretize a Disk so that the triangles near the center are smaller:
DiscretizeRegion[Disk[], MeshRefinementFunction -> Function[{vertices, area}, area > 0.0005(1 + 10Norm[Mean[vertices]])]]Discretize a Rectangle so that the triangles in the first quadrant are smaller:
DiscretizeRegion[Rectangle[{-1, -1}, {1, 1}], MeshRefinementFunction -> Function[{vertices, area}, Block[{x, y}, {x, y} = Mean[vertices];If[x > 0 && y > 0, area > 0.001, area > 0.01]]]]Scope (4)
MeshRefinementFunction specifies a function to determine if further refinement is needed:
f = Function[{vertices, area}, area > 0.0005(21 - 20Norm[Mean[vertices]])];Further refinement is performed on triangles for which the function returns True:
DiscretizeRegion[Disk[], MeshRefinementFunction -> f]Using If makes it possible to refine triangles satisfying an implicit equation:
f = Function[{vertices, area}, Block[{x, y}, {x, y} = Mean[vertices];If[x ^ 4 + y ^ 4 ≤ 1, area > 0.003, area > 0.01]]];mr = DiscretizeRegion[Rectangle[{-1.5, -1.5}, {1.5, 1.5}], MeshRefinementFunction -> f]See the boundary between large and small triangles:
Show[mr, ContourPlot[x ^ 4 + y ^ 4 == 1, {x, -1.5, 1.5}, {y, -1.5, 1.5}, ColorFunction -> Hue]]MeshRefinementFunction can be used with TriangulateMesh:
mr = MeshRegion[{{0, 0}, {1, 0}, {1, 1}, {0, 1}}, Polygon[{1, 2, 3, 4}]]Triangulate it with smaller triangles near the lower-left corner:
TriangulateMesh[mr, MeshRefinementFunction -> Function[{vertices, area}, area > 0.0001(1 + 20Norm[Mean[vertices]])]]MeshRefinementFunction can be used with DiscretizeRegion:
r = Disk[{0, 0}, {3, 2}];
DiscretizeRegion[r]Discretize it with smaller triangles further away from the center:
DiscretizeRegion[r, MeshRefinementFunction -> Function[{vertices, area}, area > 0.0025(25 - 8Norm[Mean[vertices]])]]Related Guides
History
Text
Wolfram Research (2014), MeshRefinementFunction, Wolfram Language function, https://reference.wolfram.com/language/ref/MeshRefinementFunction.html.
CMS
Wolfram Language. 2014. "MeshRefinementFunction." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/MeshRefinementFunction.html.
APA
Wolfram Language. (2014). MeshRefinementFunction. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/MeshRefinementFunction.html
BibTeX
@misc{reference.wolfram_2026_meshrefinementfunction, author="Wolfram Research", title="{MeshRefinementFunction}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/MeshRefinementFunction.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_meshrefinementfunction, organization={Wolfram Research}, title={MeshRefinementFunction}, year={2014}, url={https://reference.wolfram.com/language/ref/MeshRefinementFunction.html}, note=[Accessed: 12-June-2026]}