https://github.com/chubi-x/finiteviz
Web-based Finite Element Mesh Generator for creating and visualising Finite Element meshes on the web.
https://github.com/chubi-x/finiteviz
docker flask rabbitmq reactjs redis threejs
Last synced: 3 months ago
JSON representation
Web-based Finite Element Mesh Generator for creating and visualising Finite Element meshes on the web.
- Host: GitHub
- URL: https://github.com/chubi-x/finiteviz
- Owner: chubi-x
- Created: 2023-06-28T15:41:00.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2025-09-01T20:06:27.000Z (10 months ago)
- Last Synced: 2025-10-27T23:41:28.850Z (8 months ago)
- Topics: docker, flask, rabbitmq, reactjs, redis, threejs
- Language: JavaScript
- Homepage:
- Size: 1.16 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
I built FiniteViz, a Web-Based Finite Element 3D Mesh Generator/Viewer, for my Msc Advanced Computer Science dissertation. FiniteViz is a microservices-based web application that efficiently sends and receives mesh data to and from C++ computation environment through a flask REST API and visualises said data on the client using Three.js.
FiniteViz is able to:
* Generate multiple Finite Element meshes scalably and
effectively,
* Accurately visualise 3D mesh results received from the server.
* Horizontally scale based on user load and requirements
FiniteViz was ultimately built to provide an example of a cost-effective
and efficient finite element mesh generation tool which could enable students and
smaller engineering teams to run their computations without having to purchase
proprietary software licenses. My supervisor provided me with proprietary C++ mesh generation code, which I refactored and integrated into the architecture described below. Before integration, a user would have needed to
directly modify the source code to generate meshes for different geometries.
## Architecture
The system has four major components: A Client module, representing the browser User Interface responsible for visualising mesh data and sending
and receiving HTTP requests to a backend, a Computation module built with C++
that generates finite element meshes, the Server module that transfers client mesh data and results to and from the computation
module, and a Data module to store in-flight data shared between the server and
computation modules.


### How it Works
The client would send a payload to the server which contains a representation of a base mesh, including x,y,z coordinates, number of elemements, and how to split the elements, and would received a response
containing a split mesh.
### Example Payload
```json
{
"coordinates": [
[0.0, 0.0],
[1.0, 0.0],
[1.0, 1.0],
[0.0, 1.0],
[2.0, 0.0],
[2.0, 2.0],
[0.0, 2.0]
],
"splitting": [
[1, 2, 3],
[1, 3, 3],
[1, 4, 3]
],
"elements": [
[1, 2, 5, 4],
[2, 3, 6, 5],
[5, 6, 7, 4]
]
}
```

After running the generator:

#### Actual UI

