vanderAries / HerMES

HerMES is a FEM calculation engine (solver) with GUI for linear and nonlinear trusses.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Contributors Forks Stargazers Issues MIT License LinkedIn


Hermes Logo


HerMES is a FEM calculation engine (solver) with GUI for linear and nonlinear trusses. It has validation examples and is able to import every 2D or 3D structure using specific JSON format.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

The project was created during my master thesis with great help of my thesis supervior Roman Putanowicz.

(back to top)

Built With

This project was build with Python v. 3.10.6 and Python libraries shown below. All dependencies are in file requirements.txt.

  • QT for Pyton (PySide)

    PySide logo

  • NumPy

    NumPy logo

  • SciPy

  • Matplotlib

(back to top)

Getting Started

To get a local copy of HerMES up and running follow these simple example steps.

Prerequisites

To run the program install Python at least version 3.10.6.

Installation

  • First, start by cloning the repository:
git clone https://github.com/vanderAries/HerMES.git
  • Access the project folder
cd HerMES

I recommend to use Python virtual environment e.g. built in venv for development:

  • Create a virtual environment
python -m venv .venv
  • Enable the virtual environment

    • on Windows Powershell
    .\.venv\Scripts\activate.bat
    • on Mac/Linux
    source .venv/bin/activate
  • Install the Python dependencies on the virtual environment

python -m pip install -r requirements.txt
  • Access the source folder
cd src
  • Start the program
python main.py

(back to top)

Usage

Program HerMES can be use to analyze truss structures using FEM. Either with 2D or 3D geometry. There are two types of analysis: linear (suitable for small displacements) and nonlinear (suitable for big displacements) with force and displacement control method.

Main GUI page with Von Mises Truss book example:

Hermes GUI Model

Solver GUI page with analysis setting, results and equilibrium path.

Hermes GUI Solver

This section will be developed and updated in the future. For now, try it yourself!

(back to top)

Project Organization

├── README.md                 <- The top-level README for developers using this project.
├── .gitignore                <- File for ignoring the folders/files in repository.
├── requirements.txt          <- File for dependencies installation (Python libraries)
├── images                    <- Images for README
└── src                       <- Source folder
    │
    ├── data                  <- Folder for non-book JSON examples
    ├── data_exchange         <- Folder for import/export module
    │   │
    │   ├── export.py         <- 2D/3D model converter, JSON results export
    │   └── model_import.py   <- JSON model import
    │
    ├── examples              <- Folder for book examples in JSON
    ├── images                <- Images for GUI
    ├── qml                   <- GUI in QML language (QT Quick)
    │   │
    │   ├── controls          <- Buttons, bars and other GUI elements
    │   ├── pages             <- GUI pages like: model, solver, examples, export etc.
    │   └── main.qml          <- main page of HerMES
    │
    ├── results               <- Folder for example results
    ├── structure             <- Folder with solver and plotter functionality and FEM matrix models
    └── main.py               <- main file to run HerMES

Roadmap

  • GUI

  • 2D Analysis

    • Linear
    • Nonlinear
      • Force Method
      • Displacement Method
        • Book cases
        • Every cases
  • 3D Analysis

    • Linear
    • Nonlinear
      • Force Method
        • Book cases
        • Every cases
      • Displacement Method
        • Book cases
        • Every cases
  • Import

  • Export

  • Pre-processor

  • Post-processor

  • Units converter

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE file for more information.

(back to top)

Contact

Paweł Bąk - gp.bak96@gmail.com

Project Link: https://github.com/vanderAries/HerMES

(back to top)

Acknowledgments

(back to top)

About

HerMES is a FEM calculation engine (solver) with GUI for linear and nonlinear trusses.

License:MIT License


Languages

Language:Python 55.6%Language:QML 44.4%