Package to extract and trace the topological skeleton of a 2-order stress tensor field
Project description
Introduction
This package includes 2 python functions that together are able to extract the topological skeleton of the stress tensor field in the GH/Rhino environment.
Theory
At first degenerate points are identified by comparing the tensors two eigenvalues for equality with a user defined tolerance. Due to teh discrete mesh multiple points around a degeneracy may be identified as degenrate which is why clustering is applied and the mean point of each cluster is chosen. After localizing degenerate points they are classified by delta and the their tensor index. Based on the classification and the theory from Delmarcelle and Hesselink (94) the separating directions are extracted as vectors. Thsi information gets passed to the second function that traces the separating streamlines. Togetehr that forms the topological skeleton.
Topo_Tracer_1
This function locates degenerate points and calculates the separating direction for each of them.
import package in GH component: from Topo_Tracer import Topo_Tracer_1
Inputs:
- neighbors = for partial derivative
- tol_deg = Tolerance for degeneracy
- offset_eps = For partial derivative
- cluster_threshold = distance threshold for clustering
- seed_amplitude = distance of the new seed points from the degenerate points
- index_radius = radius of the jordan curve used for index calculation
- n_sep_merged = the number of separating streamlines for higher order degeneracies (saddles)
- domain_surface = surface or brep
- points = points from the structural mesh in karamba (points where stress values are defined)
- stress_values_1 = stress values from first principal direction
- stress_values_2 = stress values from secondary principal direction
- vectors_1 = first principal stress trajectories as vectors
- vectors_2 = first principal stress trajectories as vectors
Outputs:
- singularities = degenerate points
- seed_vectors_field_1 = separating directions for first principal stress field given as 3D vectors
- seed_vectors_field_2 = separating directions for secondary principal stress field given as 3D vectors
- new_seeds_1 = new seed for each separating direction slighlty offsetted from the degenerate point for first principal stress field
- new_seeds_2 = new seed for each separating direction slighlty offsetted from the degenerate point for first principal stress field
- dege_index = tensor index of the degenerate points measured by eigenvector rotations
- dege_type = classification/type of degenerate point (wedge, trisector or merged singualrity)
Call function in GH: singularities, seed_vectors_field_1, seed_vectors_field_2, new_seeds_1, new_seeds_2, dege_index, dege_type = Topo_Tracer_1.main(domain_surface, points, stress_values_1, vectors_1, stress_values_2, vectors_2,tol_deg, offset_eps, neighbors, cluster_threshold, seed_amplitude, index_radius, n_sep_merged)
Topo_Tracer_2
This function takes the calculated separating directions and the new seed points and traces the separatrices.
import package in GH component: from Topo_Tracer import Topo_Tracer_2
Inputs:
- points = points from the structural mesh in karamba (points where stress values are defined)
- principal_vectors = principal stress trajectories/vectors for chosen field
- seed_points = the new seed points from Topo_Tracer_1
- seed_vectors = the new seed vectors / separating direction from Topo_Tracer_1
- boundary_curves = the curves that form the boundary of the design
- domain_surface = surface or brep
- k = k nearest neighbours for interpolation
- h = step length
- num_steps = max iterations
- step_sign = 1
- boundary_tolerance = from what distance boundaries are detected
- collision_threshold = threshold for when a PSL merges into anotehr psl
- n_back = how many traced points to go back when merging
- seed_dist = distance at what snapping to other seed points occurs.
Outputs:
- separatrices = traced separatrices
- connecting_points = lists with start and end point of connecting lines
Call function in GH: separatrices, connecting_points = Topo_Tracer_2.main(points, principal_vectors, seed_points, seed_vectors,boundary_curves, domain_surface, k, h, num_steps, step_sign , boundary_tolerance, collision_threshold, n_back, seed_dist)
Example files
A GH example file can be found on: https://github.com/Brandes21/PyPa/tree/main/Example_files
For any questions or in case of bugs feel free to contact me on: niclasbrandt97@gmail.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file topo_tracer-0.1.12.tar.gz.
File metadata
- Download URL: topo_tracer-0.1.12.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c681cc9030a2ecb3b31bf1a5999640ca75df05c3285c0993c56c312228db51b2
|
|
| MD5 |
826678f5571fd3efd70dbc528377b8c0
|
|
| BLAKE2b-256 |
42b70007717d3a5b1f7a0eba0d4a09c86c496772ea86cfae19bd1544997be8e5
|
File details
Details for the file topo_tracer-0.1.12-py3-none-any.whl.
File metadata
- Download URL: topo_tracer-0.1.12-py3-none-any.whl
- Upload date:
- Size: 12.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17a2158d9ef20f83f01ce0c7ae0e062f051174f205d8c523c9ed2d034657d254
|
|
| MD5 |
67e01cab3e663be63a80e983a3295edd
|
|
| BLAKE2b-256 |
b3387873f19e4e4aebfe70196a78bd99292669125f9eedf092588cb6a149695b
|