Hypothesis

To prove that stress lines grid lead to less timber mass (Lighter) than other systems with same shape and relatively same utilization range

Tool Development for Thesis

## Problem Statement


Limited options for stress line generation and finite element analysis natively within grasshopper, need better stress lines/vectors.


## Technologies


SFEPY -

For computing stress tensors across a given mesh in a generic way.

Docker -

Encapsulated the (substantial) dependencies required for SFEPY.

TETGEN -

Tetrahedralization of surface mesh

Numpy - Data array management

PyVista - Visualization, mesh wrangling

Pydantic - Parsing

F3D - Visualization of results

## Flow


1) Tetrahedralize input surface mesh into volume mesh.  Only works if surface is a closed manifold, if not errors. As a work-around open surface mesh is simply converted to a closed manifold in gh or similar via extrusion.

2) Calculate displacement and stress vectors for newly created volume mesh.

3) Calculate cauchy stress and strain from stress vectors

4) Calculate principal component vectors for each node in the volume mesh. 

[Get the eigen vectors from the cauchy stress matrices after converting them from voight notation, done using online example using numpy]


## Inputs


* Vertices

* Faces

* Young Modulus

* Poisson Ratio

* Load Constraints

* Fixed Constraints




## Outputs


* Tetrahedralized Mesh

* Displacement Vectors

* Cauchy Stress

* Cauchy Strain



6x Gravity

2x Gravity

 1. Sort the provided edge points and create a closed curve.

2. Take N sample points along the edge curve

3a. For each edge point, interpolate the first principal component vector by taking a distance weighted average of the 3 nearest neighbors.

3b. Extend a line segment from the point using the vector.

3c. Repeat the interpolation and extension steps for the new endpoint. Continue until outside the edge curve or until a large angular deviation is encountered.

4. Apply smoothing algorithm to the newly created lines.

5. Mirror lines that don't cross the ZX axis across the zx axis.

6. Repeat 3-5 for the second principal vector.