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.
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.
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.