Skip to main content

Package pymedit for operating on 2D and 3D meshes in the INRIA mesh format

Project description

PyMedit

PyMedit is a python package which allows to process triangle and tetrahedral meshes in the INRIA .mesh file format (see e.g. the reference documentations of Cecile Dobrzynski here).

Output

A finite element mesh generated by pymedit.examples.generate3DMesh

Features

  • Provides Mesh and Mesh3D classes for reading and writing meshes in ASCII or binary .mesh and .meshb format
  • Provides classes for reading and writing solution files in ASCII or binary .sol or .solb formats: P1Function, P1Function3D, P0Function, P0Function3D, P1Vector, P1Vector3D
  • Connectivity accessible from user friendly attributes: .triangles, .tetrahedra, .vertices, and so on
  • Elementary operations implemented efficiently with vectorized operations (trunc, trunc3DMesh, connectedComponents, connectedComponents3D etc...)
  • Tunable verbosity via the debug attribute
  • Interface with the Mmg and advect and mshdist of the ISCD toolbox for convenient remeshing, advection or signed distance function computation in python
  • 2D plots with matplotlib and 3D plots with medit
  • Generation of 3D mesh with tagged triangles with generate3DMesh and export to VTK with saveToVtk (requires pyfreefem and a recent installation of FreeFEM)

Installation

With pip

pip install pymedit

Manual installation

Clone this repository and use the command pip install -e DIR where DIR is the path to pymedit to install it into your python environment.

Running examples

Examples are available in the folder examples and can be run from the command line with

python -m pymedit.examples.ex0
python -m pymedit.examples.mesh
python -m pymedit.examples.P1
python -m pymedit.examples.P0
python -m pymedit.examples.iscd2d
python -m pymedit.examples.mesh3D
python -m pymedit.examples.P1_3D
python -m pymedit.examples.iscd3d
python -m pymedit.examples.generate3DMesh

Use --debug n with n an integer for more verbose outputs.

You can test everything at once with

python -m pymedit.examples.test_all

Check in particular the files pymedit/examples/iscd2d.py and pymedit/examples/iscd3d.py for examples of use of mmg2d, mmg3d, advect and mshdist.

Requirements

Runs with python 3.6 and the following libraries:

  • numpy (>=1.12.1)
  • scipy (>=0.19.1)
  • cvxopt (>=1.2.1)
  • colored (>=1.3.93) (for colored output)

Extra dependencies:

  • For using savetovtk, a recent version of FreeFEM (>=4.0) should be available from the command line.
  • For using mmg2d, mmg3d, advect, mshdist, the related software should be available from the command line, see Mmg and
    the ISCD toolbox.
  • xdotool is required for passing key press inputs to medit vizualization software
  • Plots in 3D are available if
    medit is available from the command line

Quick example

File pymedit/examples/ex0.py

import numpy as np
from pymedit import cube, mmg3d, P1Function3D, trunc3DMesh

M = cube(30,30,30)
M.plot("Initial mesh", keys="bceZZZZ") #keys are for setting the medit window
M.debug = 4 # For debugging and mmg3d output

# Setting a P1 level set function
phi = lambda x: np.cos(10*x[0])*np.cos(10*x[1])*np.cos(10*x[2])-0.3
phiP1 = P1Function3D(M,phi)

# Remesh according to the level set
newM = mmg3d(M, 0.02, 0.05, 1.3, sol=phiP1, ls=True) 

# Trunc the negative subdomain of the level set
Mf = trunc3DMesh(newM, 3)

Mf.plot(title="Plotting Truncated mesh",keys="bceZZZZ")

Mf.save("Thf.meshb") #Saving in binary format 

Running the script should produce the following image

Output

and the following output:

$ python -m pymedit.examples.ex0
Initial mesh
Saved /tmp/tmpreyvbp8j/Th.solb in 0.00s.
Saved /tmp/tmpreyvbp8j/Th.solb
mmg3d_O3 -nr -hmin 0.02 -hmax 0.05 -hgrad 1.3 -hausd 0.002 -ls -sol /tmp/tmpreyvbp8j/Th.solb /tmp/tmpreyvbp8j/Th.meshb                                                                                                                  
  -- MMG3D, Release 5.4.3 (Feb. 26, 2020) 
     Copyright (c) Bdx INP/CNRS/Inria/UPMC, 2004-
     Apr  6 2020 18:56:14
     git branch: develop
     git commit: b1b0331db11598ff548b382ce036465f49c883c1
     git date:   2020-04-01 20:50:37 +0200


  -- INPUT DATA
  %% /tmp/tmpreyvbp8j/Th.meshb OPENED
  %% /tmp/tmpreyvbp8j/Th.solb OPENED
  -- DATA READING COMPLETED.     0.139s

  &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
   MODULE MMG3D: 5.4.3 (Feb. 26, 2020)
  &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     git branch: develop
     git commit: b1b0331db11598ff548b382ce036465f49c883c1
     git date:   2020-04-01 20:50:37 +0200


  -- MMG3DLS: INPUT DATA
  --  INPUT DATA COMPLETED.     0.000s

  -- PHASE 1 : ISOSURFACE DISCRETIZATION

  -- MESH QUALITY  162000
     BEST   0.657267  AVRG.   0.657267  WRST.   0.657267 (3394)
  -- PHASE 1 COMPLETED.     0.281s

  -- PHASE 2 : ANALYSIS
  -- PHASE 2 COMPLETED.     4.095s

  -- PHASE 3 : MESH IMPROVEMENT
  *** Manifold implicit surface.
                           14606 splitted,    16006 collapsed,    43043 swapped, 6 iter.

  -- GRADATION : 1.300000 (2.300000)
                             387 splitted,     1965 collapsed,     2536 swapped, 6 iter.
        34173 splitted,    22422 collapsed,    85225 swapped,   348982 moved, 7 iter. 
  *** Manifold implicit surface.
  -- PHASE 3 COMPLETED.     22.502s

  -- MESH QUALITY  302987
     BEST   0.999087  AVRG.   0.789762  WRST.   0.243372 (108431)

  -- MESH PACKED UP
     NUMBER OF VERTICES      54729   CORNERS       44
     NUMBER OF TETRAHEDRA   302987
     NUMBER OF EDGES          1282   RIDGES      1282
     NUMBER OF TRIANGLES     27447

   MMG3DLS: ELAPSED TIME  27.035s

  &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
   END OF MODULE MMG3D
  &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&


  -- WRITING DATA FILE /tmp/tmpreyvbp8j/Th.o.meshb
  %% /tmp/tmpreyvbp8j/Th.o.meshb OPENED
  %% /tmp/tmpreyvbp8j/Th.o.sol OPENED
  -- WRITING COMPLETED

   ELAPSED TIME  27.256s

Finished in (27.26s)
Loading /tmp/tmpreyvbp8j/Th.o.meshb
Creating empty mesh
Truncating mesh from region 3
Added 1155 edges
Truncated mesh in 0.42s.
Plotting Truncated mesh
medit /tmp/tmpc35iy48n/Th.meshb
Wrote Thf.meshb in 0.18s.
Saved Thf.meshb

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

pymedit-1.3-py3-none-any.whl (57.7 kB view details)

Uploaded Python 3

File details

Details for the file pymedit-1.3-py3-none-any.whl.

File metadata

  • Download URL: pymedit-1.3-py3-none-any.whl
  • Upload date:
  • Size: 57.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.12

File hashes

Hashes for pymedit-1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 785721a215dc39df210bec072d922f5b0a82305d80f70bb1b9657736f5df78d3
MD5 c470e56df74b50fc9f050f830fa96cd5
BLAKE2b-256 2987843dc4e60398435a62afb75459c2285834ea15e02436157c59b23ce0af7c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page