Skip to main content

A Python library for tensor train-based finite element meshing.

Project description

TTFEMesh

PyPI version Documentation Status Tests codecov

License: MIT Python 3.10 Python 3.11 Python 3.12

TTFEMesh is a Python library for generating tensor train representations of finite element meshes. It provides a comprehensive toolkit for creating domains, generating meshes, and computing tensorized Jacobians, Dirichlet masks, and concatenation maps, all of which are essential for solving partial differential equations using tensor train decompositions.

Features

  • Domain creation and manipulation
  • Finite element mesh generation
  • Tensor train representation of mesh components
  • Computation of tensorized Jacobians
  • Dirichlet boundary condition handling
  • Concatenation map generation
  • Integration with the torchtt package for TT decompositions
  • Support for 2D domains and meshes
  • Flexible and extensible architecture

Installation

You can install TTFEMesh using pip:

pip install ttfemesh

System Dependencies

TTFEMesh requires BLAS and LAPACK libraries to be installed on your system:

  • Ubuntu/Debian:

    sudo apt-get update
    sudo apt-get install libblas-dev liblapack-dev
    
  • macOS (using Homebrew):

    brew install openblas lapack
    
  • Windows: These libraries are typically included with scientific Python distributions like Anaconda.

Quick Start

Here's a simple example to get you started:

from ttfemesh.domain import RectangleFactory, CurveConnection2D, DirichletBoundary2D, Domain2D
from ttfemesh.quadrature import GaussLegendre2D
from ttfemesh.mesh import DomainBilinearMesh2D

# Create a domain with two rectangles
rectangle1 = RectangleFactory.create((0, 0), (2, 1))
rectangle2 = RectangleFactory.create((2, 0), (3, 1))

# Connect the rectangles
edge = CurveConnection2D([0, 1], [1, 3])

# Set boundary conditions
bc = DirichletBoundary2D([(0, 3), (1, 1)])

# Create the domain
domain = Domain2D([rectangle1, rectangle2], [edge], bc)

# Generate a mesh
order = 1
qrule = GaussLegendre2D(order)
mesh_size_exponent = 3
mesh = DomainBilinearMesh2D(domain, qrule, mesh_size_exponent)

# Get tensorized components
subdmesh = mesh.get_subdomain_mesh(0)
jac_tts = subdmesh.get_jacobian_tensor_trains()
jac_dets = subdmesh.get_jacobian_det_tensor_trains()
jac_invdets = subdmesh.get_jacobian_invdet_tensor_trains()

# Get element to global index map
element2global_map = mesh.get_element2global_index_map()

# Get Dirichlet masks and concatenation maps
masks = mesh.get_dirichlet_masks()
concat_maps = mesh.get_concatenation_maps()

Documentation

For detailed documentation, including API reference and examples, visit our documentation.

Requirements

  • Python >= 3.10, < 3.13
  • BLAS and LAPACK libraries (system dependencies)
  • torchtt (for tensor train operations)
  • Other dependencies listed in requirements.txt

Contributing

We welcome contributions! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.

License

TTFEMesh is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

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

Source Distribution

ttfemesh-0.1.0.tar.gz (32.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ttfemesh-0.1.0-py3-none-any.whl (40.3 kB view details)

Uploaded Python 3

File details

Details for the file ttfemesh-0.1.0.tar.gz.

File metadata

  • Download URL: ttfemesh-0.1.0.tar.gz
  • Upload date:
  • Size: 32.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for ttfemesh-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d77df43881253cc6a845a81cd5226e02c3f0a9fb3dcddc52efa700152360deba
MD5 c154e2092d77a253e11b0a2f00bafa17
BLAKE2b-256 31baea1bfd924c3cadc239328d89e9268d99fb8660ef3e1596001910383c0b22

See more details on using hashes here.

File details

Details for the file ttfemesh-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: ttfemesh-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 40.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for ttfemesh-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e136e494727ceab80258d5814e9222dce81427125c2e9b15cc93b202d0b1a77d
MD5 27a966d1720b1709b6aa1a6e9a0fb809
BLAKE2b-256 33647a92dde27fa41204c58bef9e4fc8d9229b2ae0ace232a26e5ac781148e2d

See more details on using hashes here.

Supported by

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