# Concave parameteric surface mesh generation

**URL:** <https://discourse.julialang.org/t/concave-parameteric-surface-mesh-generation/135375>\
**Category:** Visualization\
**Tags:** mesh\
**Created:** [January 31, 2026, 5:19pm UTC](https://discourse.julialang.org/t/concave-parameteric-surface-mesh-generation/135375 "2026-01-31T17:19:31Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Avina-cK](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/avina-ck/32/220544_2.png) [@Avina-cK](https://discourse.julialang.org/u/Avina-cK)\
**Post date:** [January 31, 2026, 5:19pm UTC](https://discourse.julialang.org/t/concave-parameteric-surface-mesh-generation/135375/1 "2026-01-31T17:19:31Z")

</div>

I would like to generate a surface mesh, using a parametric function f(x,y,z) = (x-(z^2))^2 + y^2 + z^2-1.  
Generating points and creating a vertex list is not an issue. How would I create a proper topology, to then create a simple mesh using Meshes.jl?  
I can create a top and bottom surface but I’m not able to connect them properly. I keep getting into some issue when running a partial differential equation code on it (the PDE code works fine for a sphere, generated using Primitives in Meshes.jl)

---

<div class="post-metadata">

**Author:** ![nhz2](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nhz2/32/44428_2.png) [@nhz2](https://discourse.julialang.org/u/nhz2)\
**Post date:** [January 31, 2026, 5:56pm UTC](https://discourse.julialang.org/t/concave-parameteric-surface-mesh-generation/135375/2 "2026-01-31T17:56:41Z")

</div>

Using `MarchingTetrahedra` from Meshing.jl can generate a proper topology.

Here is a basic example:

```julia
using Meshing: MarchingTetrahedra, isosurface
f(x,y,z) = (x-(z^2))^2 + y^2 + z^2-1
lower_bound = (-2.0, -2.0, -2.0)
upper_bound = (2.0, 2.0, 2.0)
xr,yr,zr = ntuple(i->LinRange(lower_bound[i], upper_bound[i], 50),3)
sdf = [f(x,y,z) for x in xr, y in yr, z in zr]
vts, fcs = isosurface(sdf, MarchingTetrahedra(), xr, yr, zr)

```

Visualized with [MeshCat.jl](https://github.com/rdeits/MeshCat.jl/blob/master/notebooks/demo.ipynb)

```julia
using GeometryBasics: Mesh, Point, TriangleFace
using MeshCat: Visualizer, setobject!, render
vis = Visualizer()
mesh = Mesh(Point.(vts), TriangleFace.(fcs))
setobject!(vis, mesh)
render(vis)

```

 ![image](https://global.discourse-cdn.com/julialang/original/3X/f/a/fac8f2b50e5345d2e1119fa5ee548fd6ad4885c5.png)

---

<div class="post-metadata">

**Author:** ![Avina-cK](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/avina-ck/32/220544_2.png) [@Avina-cK](https://discourse.julialang.org/u/Avina-cK)\
**Post date:** [February 1, 2026, 3:54pm UTC](https://discourse.julialang.org/t/concave-parameteric-surface-mesh-generation/135375/4 "2026-02-01T15:54:10Z")

</div>

Ah. Thank you!
