Skip to main content

Process and visualize numerical-analysis-geometries.

Project description

gustaf

gustaf is a Python library to process and visualize numerical-analysis-geometries; gustaf currently supports the following elements:

  • points,
  • lines,
  • triangle,
  • quadrilateral,
  • tetrahedron, and
  • hexahedron.

Installation

gustaf only has numpy for its strict dependency. The minimal version can be installed using pip.

pip install gustaf

To install all the optional dependencies at the same time, you can use:

# quotation marks required for some shells
pip install "gustaf[all]"

For the latest develop version of gustaf:

pip install git+https://github.com/tataratat/gustaf.git@main

Quick Start

This example shows how to create volume elements and plot data on them. For visualization, gustaf uses vedo as main backend.

To begin we need to import the needed libraries:

import gustaf as gus
import numpy as np

Create a tetrahedron

Now we create our first volume. It will be just a basic cube. Even here we can already choose between using a tetrahedron and a hexahedron-based mesh. The Volumes class will use tetrahedrons if the volumes keyword is made up of a list of 4 elements (defining the corners of the tetrahedron), if 8 elements are in each list hexahedrons are used (defining the corners of the hexahedron in the correct order).

# create tetrahedron mesh using Volumes
# it requires vertices and connectivity info, volumes
tet = gus.Volumes(
    vertices=[
        [0.0, 0.0, 0.0],
        [1.0, 0.0, 0.0],
        [0.0, 1.0, 0.0],
        [1.0, 1.0, 0.0],
        [0.0, 0.0, 1.0],
        [1.0, 0.0, 1.0],
        [0.0, 1.0, 1.0],
        [1.0, 1.0, 1.0],
    ],
    volumes=[
        [0, 2, 7, 3],
        [0, 2, 6, 7],
        [0, 6, 4, 7],
        [5, 0, 4, 7],
        [5, 0, 7, 1],
        [7, 0, 3, 1],
    ],
)

# set line color and width
tet.show_options["lc"] = "black"
tet.show_options["lw"] = 4

tet.show(background="grey")

Tetrahedron based volume

hexa = gus.Volumes(
    vertices=[
        [0.0, 0.0, 0.0],  # 0
        [1.0, 0.0, 0.0],  # 1
        [0.0, 1.0, 0.0],
        [1.0, 1.0, 0.0],  # 3
        [0.0, 0.0, 1.0],
        [1.0, 0.0, 1.0],
        [0.0, 1.0, 1.0],  # 6
        [1.0, 1.0, 1.0],
    ],
    volumes=[
        [0, 1, 3, 2, 4, 5, 7, 6],
    ],
)

hexa.show_options["lc"] = "black"
hexa.show_options["lw"] = 4

hexa.show(background="grey")

Hexahedron based volume

Basic visualization

As just shown, it is really easy to show the objects by just calling the show() function on the object. But that is just the beginning of the possibilities in vedo. You can plot multiple objects next to each other:

# show multiple items in one plot
# each list will be put into a separate subplot.
gus.show(["Tetrahedron", tet], ["Hexahedron", hexa])

Compare hexahedron and tetrahedron-based volumes

Now let's add a color map to the object for the norm of the coordinate, and let us also add at each vertex an arrow with random direction and length.

# let's visualize some scalar data and vector data defined on vertices
tet.vertex_data["arange"] = np.arange(len(tet.vertices))  # scalar
tet.show_options["data"] = "arange"
tet.vertex_data["random"] = np.random.random(
    (len(tet.vertices), 3)
)  # vector
tet.show_options["arrow_data"] = "random"
tet.show(background="grey")

Add additional data to the object

Are you interested in splines? Please checkout splinepy!

Optional Dependencies

Package Description
numpy Fast array data operations.
vedo Default renderer / visualization core of gustaf.
scipy Create k-d trees and simple rotation matrices.
napf Fast k-d tree build / query based on nanoflann. Supersedes scipy if it is importable.
funi A different method to find unique float array rows. But faster than k-d trees!
meshio Supports loading/exporting numerous mesh formats.

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

gustaf-0.1.2.tar.gz (64.5 kB view details)

Uploaded Source

Built Distribution

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

gustaf-0.1.2-py3-none-any.whl (69.6 kB view details)

Uploaded Python 3

File details

Details for the file gustaf-0.1.2.tar.gz.

File metadata

  • Download URL: gustaf-0.1.2.tar.gz
  • Upload date:
  • Size: 64.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gustaf-0.1.2.tar.gz
Algorithm Hash digest
SHA256 4037329eb3af0ff253bbc9c855df92043baf1a36802da834289068cd2bcb5176
MD5 a65b1264930289530aa8847093359fab
BLAKE2b-256 9c7b1c04669a849d65db9da1342f3a662d065c2bf7df0db023852378dc4328bc

See more details on using hashes here.

File details

Details for the file gustaf-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: gustaf-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 69.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gustaf-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c22ade7fdee8e4fea9b2a84137c7a015c9743b515d50f6a6fae85fd6295791b3
MD5 47620ef0c448a24248f2cb549c8da929
BLAKE2b-256 1f2d7817ce508a0233662e4bcf339943298d4d2bfcd76a093b0df15841431ce6

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