FEAnalysisApp is a cross-platform, Python-based graphical user interface (GUI) for performing Finite Element Analysis (FEA). Designed using PyQt6, it provides an intuitive and interactive environment for structural engineers, educators, and researchers to model, analyze, and visualize various types of structures, including beams, trusses, and frames in both 2D and 3D.
- Graphical User Interface built with PyQt6.
- Supports 2D and 3D structures: Trusses, Beams, and Frames.
- Customizable input using structured
.txtfiles or GUI forms. - Modular architecture with extensible solvers and element libraries.
- Supports both direct and iterative solvers.
- Real-time visualization of analysis results.
- Integrated input/output file viewer and result report generator.
- Built-in library for materials, cross-sections, and units.
- Exports results to human-readable reports and visual plots.
FEAnalysisApp/
├── LICENSE # The project's license file.
├── README.md # This file.
├── main.py # Application entry point; starts the GUI.
├── requirements.txt # Python dependencies for the project.
├── setup.cfg # Configuration file for packaging/tools (e.g., setuptools, pytest).
|
├── assets/ # Static resources (icons, styling, web libraries).
│ ├── icons/ # All icon files, structured by their context.
│ │ ├── analysis_window/ # Icons used in the analysis/viewer window (e.g., solve, view).
│ │ └── main_window/ # Icons and images for the main application window (e.g., structure types).
│ ├── plotly/ # External JavaScript libraries (e.g., for data visualization).
│ └── styles/ # CSS/QSS files for application styling (e.g., dark/light mode).
|
├── data/ # Default, user-defined, and library data files (JSON format).
│ ├── defaults/ # Default settings for various analysis components (nodes, elements, units, etc.).
│ └── libraries/ # User-editable libraries for materials and cross-sections.
|
├── examples/ # Sample input text files for running analyses.
│ └── *.txt
|
├── src/ # Source code for the application's logic and modules.
│ ├── config.py # Application-wide configuration settings.
│ ├── constants.py # Definition of numerical or physical constants.
│ ├── core/ # Core FEA logic, including structure handling and solvers.
│ │ ├── structure_io.py # Logic for reading and writing structure data.
│ │ ├── elements/ # Implementation of different element types (bar, beam, frame).
│ │ └── solvers/ # Numerical solvers (direct, iterative) for the stiffness matrix.
│ ├── gui/ # GUI components using the Qt framework (PyQt/PySide).
│ │ ├── setup_docks.py # Configuration for the docked windows.
│ │ ├── viewers/ # Modules for displaying file, report, and analysis results.
│ │ ├── widgets/ # Custom reusable GUI components (spinner, tree widget).
│ │ └── windows/ # Definition of main application windows and dialogs.
│ └── utils/ # Utility functions for common tasks.
│ ├── classes.py # Custom helper classes.
│ ├── errors.py # Custom exception and error handling.
│ ├── http.py # HTTP client/server utilities (if used for data/API).
│ ├── io.py # General Input/Output and file handling utilities.
│ └── units.py # Unit conversion and management logic.
|
└── tests/ # Test suite using pytest.
├── conftest.py # Fixtures and configuration for pytest.
├── test_*.py # Test files for individual elements.
├── integration/ # High-level integration tests.
└── unit/ # Low-level unit tests for specific functions/classes.
- Python 3.10.5
- Recommended: Virtual environment
Install the dependencies using:
pip install -r requirements.txtpython main.pyThe GUI will launch, providing access to structure modeling, analysis configuration, result viewing, and report generation.
- Load a Model: Use sample input files from
/examples/folder or import your own. - Set Parameters: Define material properties, cross-sections, boundary conditions, and loads.
- Solve: Choose between direct or iterative solvers.
- Visualize: View deformation, internal forces, and support reactions graphically.
- Export: Generate formatted reports and save the analysis results.
- 2D Truss
- 2D Beam
- 3D Truss
- 3D Frame
More element types and general 3D solids will be supported in future versions.
The examples/ directory contains ready-to-use structural models. Example:
2D_Truss.txt
2D_Beam.txt
3D_Frame.txt
Input format is simple, human-readable, and structured for easy editing.
core/direct_solver.py: Gauss elimination and banded matrix solver.core/iterative_solver.py: Iterative solving for large systems.core/main_solver.py: Solver interface and result integration.
- Linear bar, beam, and frame elements under
core/isoparametric_elements/.
Run tests using:
pytest tests/Includes unit tests for core finite element components and shape functions.
Main window
Analysis window
File Viewer
Stiffness Matrix Viewer
Solved Displacements Viewer
Solved Stresses Viewer
Beam Shear and Bending Moments
Analysis Report
Logging Console
- Add support for shell and solid elements.
- Web-based remote analysis interface.
- Advanced post-processing with Plotly.
- Improved mesh generation and visualization.
Contributions are welcome! Please fork the repository and submit a pull request.
git clone https://github.com/a-dorgham/FEAnalysisApp.git
cd FEAnalysisAppThis project is licensed under the MIT License.
For bug reports, feature requests, or collaboration:
- GitHub Issues: FEAnalysisApp Issues
- Email: a.k.y.dorgham@gmail.com
- Connect: LinkedIn | GoogleScholar | ResearchGate | ORCiD