Description: This repository contains a C++ project that implements a Finite Element Method (FEM) solver for plane truss structures. The FEM is a widely used numerical method for analyzing and solving structural engineering problems, such as trusses, beams, and frames. The solver in this project can compute the displacements, reactions, and internal forces of a given plane truss structure subjected to external loads.
- Implementation of the FEM for solving plane truss problems
- Support for various boundary conditions, including inclined pinned, roller, and free supports
- Input file format for defining truss geometry, material properties, and loads
- Visualization of truss geometry, displacements, and internal forces using OpenGL
- Post-processing capabilities.
- Zoom in/out (Ctrl + scroll), Pan operation (Ctrl + Right click drag), Zoom to fit (Ctrl + F)
- Download Truss_static_cpp_portable_version.7z to your PC. Extract and run the exe file to open the application.
- Read How to use Plane Truss Finite Element Solver.pdf.
- Import the truss geometry, define the material properties, constraints, and loads.
- Run the FE solver, which computes the truss displacements, reactions, and internal forces
- Visualize the results using the included OpenGL-based GUI, which provides options for displaying truss geometry, displacements, and internal forces
- Post-process the results as needed for further analysis
- C++ compiler that supports C++17 or higher
- GLFW and GLEW libraries for OpenGL windowing and rendering
- ImGui library for creating GUI
- Eigen library for linear algebra operations
- Other necessary libraries for file I/O, data visualization, and post-processing as needed
This project is open-source and released under the MIT license. Feel free to use, modify, and distribute the code as per the terms of the license.
Create the ImGUI menu bar eventsCreate the mouse eventsImport the model dataCreate class to handle the model dataSet up the vertex buffer, index buffer, buffer layout etcCreate a basic vertex & fragment shaderDefine the model matrix as well as translate, zoom and rotate matrix for vertex shaderPaint the truss model with basic elements (as points and lines)Fit the imported geometry with proper geometry scalePan, zoom and zoom to fit operationImplement circle for nodes (instead of points) texture for nodesUI for adding constraintUI for adding loadAdd load and constraint to the model by clicking on the nodeText in GUI to show load value, length, node number, member number etc.import/export model in native formatUI for updating materialBuild solverColor profile for the model environmentMap the results to nodes and elementsPostprocessing using Dynamic drawAnimate resultsFinalize the resource imports