# Mesh refinement with biased node distribution

**URL:** <https://prepomax.discourse.group/t/mesh-refinement-with-biased-node-distribution/3394>\
**Category:** Feature Requests\
**Created:** [April 7, 2026, 1:40pm UTC](https://prepomax.discourse.group/t/mesh-refinement-with-biased-node-distribution/3394 "2026-04-07T13:40:29Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![Robin](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@Robin](https://prepomax.discourse.group/u/Robin)\
**Post date:** [April 7, 2026, 1:40pm UTC](https://prepomax.discourse.group/t/mesh-refinement-with-biased-node-distribution/3394/1 "2026-04-07T13:40:29Z")

</div>

Hello at all,

I’m a new user of PrePoMax and playing around with the hints of MisiaKu’s “simple tutorial on how to divide an object in FreeCAD“ i managed to get a nice mesh refinement of a plate with central hole under axial load.

 ![grafik](https://global.discourse-cdn.com/free1/uploads/prepomax/original/2X/0/021d122b92c9326950942961e960a97a33fa5a7a.jpeg)

Nevertheless at the transition zones between coarse and fine meshes I’ve got some distorted tetrahedrons due to the equal distance of the nodes at the upper and lower edges. I searched for a way to define a biased node distribution along an edge, but I can’t find a hint in the PrePoMax or the gmesh documentation.

Is it possible to define a biased node distribution in PrePoMax ?

With best regards

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [April 7, 2026, 1:44pm UTC](https://prepomax.discourse.group/t/mesh-refinement-with-biased-node-distribution/3394/2 "2026-04-07T13:44:50Z")

</div>

There’s no such feature yet. Recently, local refinement based on the number of elements was implemented. However, there may still be some issues with local refinement due to the mesher limitations. Currently, you have to use partitions to get more edges/faces for refinement.

---

<div class="post-metadata">

**Author:** ![Robin](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@Robin](https://prepomax.discourse.group/u/Robin)\
**Post date:** [April 7, 2026, 1:57pm UTC](https://prepomax.discourse.group/t/mesh-refinement-with-biased-node-distribution/3394/3 "2026-04-07T13:57:45Z")

</div>

Thank you FEAnalyst for the quick reply. So I stop searching for that.

Usually I’m simulating with Abaqus, so when I stumpled over PrePoMax I was very pleased to find something alike Abaqus (with calculix mimics the Abaqus-syntax).

As a holiday project I’ll dive deeper into PrePoMax.

With best regards

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [April 7, 2026, 2:03pm UTC](https://prepomax.discourse.group/t/mesh-refinement-with-biased-node-distribution/3394/4 "2026-04-07T14:03:36Z")

</div>

I also use Abaqus on a daily basis and often find biased distribution useful. It seems that Gmsh has at least a basic version of it called progression: [Useful additional gmsh functionality - #24 by Gunnar](https://prepomax.discourse.group/t/useful-additional-gmsh-functionality/1343/24)

But it’s not yet available in PrePoMax.

For reference, here’s what it looks like in Abaqus:

 ![image](https://global.discourse-cdn.com/free1/uploads/prepomax/original/2X/1/1162a7b2147143f00a6cea58252e832392849fe5.png)

 ![image](https://global.discourse-cdn.com/free1/uploads/prepomax/original/2X/8/852f5587e046195c4476c44b5a86d6d3bbe4f785.png)

---

<div class="post-metadata">

**Author:** ![Robin](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@Robin](https://prepomax.discourse.group/u/Robin)\
**Post date:** [April 7, 2026, 2:17pm UTC](https://prepomax.discourse.group/t/mesh-refinement-with-biased-node-distribution/3394/5 "2026-04-07T14:17:03Z")

</div>

exactly, this is what I miss. Specifically when you are confronted with high stress gradients it’s very useful.

---

<div class="post-metadata">

**Author:** ![synt](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/synt/32/4658_2.png) [@synt](https://prepomax.discourse.group/u/synt)\
**Post date:** [April 7, 2026, 5:43pm UTC](https://prepomax.discourse.group/t/mesh-refinement-with-biased-node-distribution/3394/6 "2026-04-07T17:43:45Z")

</div>

when local mesh set to point or edge it will generate bias distribution by tets automatic mesher.

 ![2026-04-08 00_38_17-](https://global.discourse-cdn.com/free1/uploads/prepomax/original/2X/2/2f565653c866309dd36ade556addc0b1de32a016.png)

 ![2026-04-08 00_39_56-](https://global.discourse-cdn.com/free1/uploads/prepomax/original/2X/2/29f6872a6da6f09357654ccfc51aa447b017e9fa.png)

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [April 7, 2026, 5:45pm UTC](https://prepomax.discourse.group/t/mesh-refinement-with-biased-node-distribution/3394/7 "2026-04-07T17:45:32Z")

</div>

Gmsh has quite specific mesh growth: [https://wiki.freecad.org/FEM\_MeshGmshFromShape#Mesh\_Growth](https://wiki.freecad.org/FEM_MeshGmshFromShape#Mesh_Growth)

But additional partitions help it.

---

<div class="post-metadata">

**Author:** ![Robin](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@Robin](https://prepomax.discourse.group/u/Robin)\
**Post date:** [April 7, 2026, 6:50pm UTC](https://prepomax.discourse.group/t/mesh-refinement-with-biased-node-distribution/3394/8 "2026-04-07T18:50:28Z")

</div>

@synt

I’ll try that on my model. Exotic idea to define a bias distribution with a point.

Thank you for the proposal.

Edit :

I can’t reproduce your result. Maybe with my compound model it’s not working ?

Tomorrow I’ll model your cube and try it again.

---

<div class="post-metadata">

**Author:** ![Robin](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@Robin](https://prepomax.discourse.group/u/Robin)\
**Post date:** [April 8, 2026, 10:09am UTC](https://prepomax.discourse.group/t/mesh-refinement-with-biased-node-distribution/3394/9 "2026-04-08T10:09:23Z")

</div>

I confirm that some sort of bias node distribution occurs, when you define only a local mesh size on a point or edge of a geometry. My assumption is that this behavior is triggered by internal default values of the tet-mesher (maybe a growth faktor between fine and coarse mesh regions). I’ve got a notion that the bias is not influenced by the value of the local mesh size itself. So a little bit random at the end.

 ![grafik](https://global.discourse-cdn.com/free1/uploads/prepomax/original/2X/2/269b9d62881ae95c5033e850b26996a9fd4ab14e.png)

Unfortunately for a complex meshing technique the behavior is not useable.

But thank you @synt for the interesting proposal.

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [April 8, 2026, 10:48am UTC](https://prepomax.discourse.group/t/mesh-refinement-with-biased-node-distribution/3394/10 "2026-04-08T10:48:35Z")

</div>

Here’s a bias (progression) with a simple script in Gmsh (applied to 3 edges meeting at that one vertex so that the mesh is not distorted for the other edges if only 1 has bias):

 ![image](https://global.discourse-cdn.com/free1/uploads/prepomax/original/2X/d/d91db92542a5f99573060ad932e3b8f307a63f42.png)

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [April 8, 2026, 11:00am UTC](https://prepomax.discourse.group/t/mesh-refinement-with-biased-node-distribution/3394/11 "2026-04-08T11:00:30Z")

</div>

Another example with just one (seam) edge:

 ![image](https://global.discourse-cdn.com/free1/uploads/prepomax/original/2X/0/0fc16f5adf09d3447a44532581aaa744b6f34247.png)

---

<div class="post-metadata">

**Author:** ![synt](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/synt/32/4658_2.png) [@synt](https://prepomax.discourse.group/u/synt)\
**Post date:** [April 9, 2026, 2:59am UTC](https://prepomax.discourse.group/t/mesh-refinement-with-biased-node-distribution/3394/12 "2026-04-09T02:59:18Z")

</div>

i can understand local mesh refinement have bit different with bias distribution even capable, this Gmsh approach can be similar with CalculiX GraphiX (CGX).

---

<div class="post-metadata">

**Author:** ![Robin](https://avatars.discourse-cdn.com/v4/letter/r/e5b9ba/32.png) [@Robin](https://prepomax.discourse.group/u/Robin)\
**Post date:** [April 18, 2026, 10:35am UTC](https://prepomax.discourse.group/t/mesh-refinement-with-biased-node-distribution/3394/13 "2026-04-18T10:35:53Z")

</div>

Hello @FEAnalyst,

as a proof of concept here is a doc for a code snippet

which converts abaqus node bias input with node distance to gmesh transfinite curve.

If it’s interesting for the PrePoMax development i can provide the python source code.

[PointInterpolator\_doc.pdf.zip](https://prepomax.discourse.group/uploads/short-url/nYT5OGhJ6tMfuzpijxrfzXZfMmu.zip) (254.5 KB)

with best regards

Robin

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [April 20, 2026, 8:32pm UTC](https://prepomax.discourse.group/t/mesh-refinement-with-biased-node-distribution/3394/14 "2026-04-20T20:32:12Z")

</div>

Thanks, I’ll have a look at this. I still need to test the advanced Gmsh refinements newly implemented in FreeCAD FEM.
