mymesh.implicit.tpms#

mymesh.implicit.tpms(name, cellsize=1)[source]#

Triply periodic minimal surfaces.

Parameters:
  • name (str) –

    Name of the TPMS surface

    • ’gyroid’ - Schoen’s gyroid

    • ’primitive’ or ‘P’ - Schwarz P

    • ’diamond’ or ‘D’ - Schwarz D

    • ’S’ - Fischer-Koch S

    • ’Lidinoid’

    • ’Neovius’

    • ’IWP’

    • ’FRD’

    • All 3D nodal surfaces from von Schnering and Nesper [vSN91] (Table 1) are available following their naming convention, including, the above named surfaces e.g. ‘gyroid’ is equivalent to ‘Y**’. Others include ‘I2-Y**’, ‘C(I2-Y**)’, ‘(Fxxx)*’, etc. See tpms.options for a full list.

  • cellsize (float, optional) – Unit cell size or periodicity, by default 1

Returns:

func – Callable implicit function f(x,y,z). This function utilizes sympy operators - for a vectorized function, use implicit.wrapfunc(func)

Return type:

callable

Examples

func = implicit.tpms('gyroid')
surf = implicit.SurfaceMesh(func, [0,1,0,1,0,1], 0.02)
surf.plot()
../../_images/mymesh-implicit-tpms-1.png
func = implicit.tpms('primitive')
surf = implicit.SurfaceMesh(func, [0,1,0,1,0,1], 0.02)
surf.plot()
../../_images/mymesh-implicit-tpms-2.png
func = implicit.tpms('diamond')
surf = implicit.SurfaceMesh(func, [0,1,0,1,0,1], 0.02)
surf.plot()
../../_images/mymesh-implicit-tpms-3.png
func = implicit.tpms('S')
surf = implicit.SurfaceMesh(func, [0,1,0,1,0,1], 0.02)
surf.plot()
../../_images/mymesh-implicit-tpms-4.png
func = implicit.tpms('Lidinoid')
surf = implicit.SurfaceMesh(func, [0,1,0,1,0,1], 0.02)
surf.plot()
../../_images/mymesh-implicit-tpms-5.png
func = implicit.tpms('Neovius')
surf = implicit.SurfaceMesh(func, [0,1,0,1,0,1], 0.02)
surf.plot()
../../_images/mymesh-implicit-tpms-6.png
func = implicit.tpms('IWP')
surf = implicit.SurfaceMesh(func, [0,1,0,1,0,1], 0.02)
surf.plot()
../../_images/mymesh-implicit-tpms-7.png
func = implicit.tpms('FRD')
surf = implicit.SurfaceMesh(func, [0,1,0,1,0,1], 0.02)
surf.plot()
../../_images/mymesh-implicit-tpms-8.png