Skip to content

Repository files navigation

LMGC90_GUI — Graphical User Interface for LMGC90

This project is deprectaed, see LMGC90_GUI_MVC

LMGC90_GUI Screenshot

LMGC90_GUI is a modern, user-friendly graphical interface built with PyQt6 for the pre-processor module (pre) of the open-source Discrete Element Method (DEM) code LMGC90 and LMGC90 documentation

It allows you to visually create, edit, and manage complex 2D (and partially 3D) mechanical models without writing Python code manually — while still offering full flexibility for advanced users.

All versions are intended for research and prototyping. A full rewrite is planned in the future.

French documentation of LMGC90_GUI

Features

  • Materials: RIGID, ELAS, ELAS_DILA, VISCO_ELAS, ELAS_PLAS, THERMO_ELAS, PORO_ELAS
  • Models:
    • 2D: Rxx2D, T3xxx, Q4xxx, T6xxx, Q8xxx, Q9xxx, BARxx
    • 3D: Rxx3D, H8xxx, SHB8x, H20xx, SHB6x, TE10x, DKTxx
  • Rigid bodies (avatars): disks, polygons (regular or full), ovoids, joncs, clusters, walls (rough/fine/smooth/granular), spheres (3D not implemented), and fully customizable empty avatars with multiple contactors
  • Contact laws: IQS_CLB, IQS_CLB_g0, COUPLED_DOF
  • Visibility tables for detection control
  • Boundary conditions (imposeDrivenDof, translate, rotate, etc.) on individual bodies or named groups
  • Parametric generation:
    • Loops (circle, grid, line, spiral, manual)
    • Granulometry with random size distribution and deposition in Box2D or Disk2D
    • Option to store generated particles in a named group
  • Granulmetry :
    • granulo_Random distrinution
    • deposit in (Box2D, Disk2D, Drum2D and Couette2D)
    • Option to store granolo in named group
  • Post-processing commands (SOLVER INFORMATIONS, TORQUE EVOLUTION, BODY TRACKING, etc.) with optional rigid set selection
  • Dynamic variables: define custom variables (e.g., thickness=0.02, scale=1.5) usable in parameter fields
  • Direct generation of .Datbox file (ready for LMGC90 solver)
  • Python script generation for full reproducibility
  • Project save/load in .lmgc90 JSON format

Requirements

  • Python 3.8+
  • PyQt6
  • pylmgc90 (installed with LMGC90)

Installation

git clone https://github.com/bzerourou/LMGC90_GUI.git
cd LMGC90_GUI
python main.py

Quick Start & Examples

Two example projects are included to help you get started.

  1. Pendulum (pendulum.lmgc90)

A classic pendulum mechanism using COUPLED_DOF joints. How to load and run:

  1. Launch LMGC90_GUIFileOpen → select pendulum.lmgc90

  2. Go to Tools → Generate Datbox

  3. The file DATBOX is created in the project folder

  4. Slider-Crank Mechanism (slider_crank.lmgc90)

A complete slider-crank (bielle-manivelle) with three rigid bodies connected by revolute and prismatic joints. How to load:

  1. File → Open → select slider_crank.lmgc90
  2. Generate Datbox (Generate Datbox)

[0.2.7] — décembre 2025

Nouveautés

  • Dialogue Variables dynamiques (menu Outils → Définir variables dynamiques)
  • Variables utilisables dans les champs de paramètres (QLineEdit)
  • Routines aléatoires et variables internes dans _safe_eval_dict : l, h, ra, rb, axe1, axe2, body, etc.

Correctifs

  • Variable body interne (DOF force)
  • Boutons update / delete
  • body_index en désérialisation
  • Génération d’avatars manuels
  • Indices de bodies pour les DOF
  • Script Python : granulo, DOF, post-pro (aview, dd/del)

[0.2.6] — décembre 2025

Nouveautés

  • Génération directe de fichier .Datbox (generate_datbox)
  • Commandes post-processing (SOLVER INFORMATIONS, etc.)
  • Stockage de la granulométrie dans une liste nommée (groupe)
  • Documentation française (docs/)

Correctifs

  • Combobox avatar dans l’onglet granulométrie
  • modify_selected / delete_selected
  • Dimension dans les onglets modèles
  • Script Python généré

Refactor interne (mi-décembre)

  • Découpage progressif : tabs.py, updates.py, visu.py, preferences.py
  • Déplacement de nombreuses fonctions vers main.py / modules dédiés

[0.2.5] — 31 décembre 2025

Commit tagué : LMGC90_GUI version 0.2.5 (54e26bab)

Nouveautés

  • Préférences d’unités (fenêtre SI / CGS — ébauche)
  • Post-traitement de base (onglet post-pro, focus SOLVER INFORMATIONS)
  • Captures d’écran d’interface (inter_LMGC90_GUI5/6.jpg)

Correctifs

  • Indices de bodies pour les DOF
  • Options fenêtre / onglet post-pro

[0.2.4] — décembre 2025

Nouveautés

  • Onglet Granulométrie
    • Dépôt dans Box2D et Disk2D
    • Initialement limité aux avatars rigidDisk
    • Distribution aléatoire des rayons (granulo_Random)
  • Support ultérieur : Drum2D, Couette2D (README)

Correctifs

  • Distribution / génération paramétrique d’avatars
  • Bugs d’interface divers

[0.2.3] — décembre 2025

Nouveautés

  • Lois de contact IQS_CLB_g0 et COUPLED_DOF
  • Modèles 2D / 3D supplémentaires
  • Éléments MECAx listés dans l’onglet modèle (options, sans implémentation complète)

Correctifs

  • Désérialisation des nouveaux modèles
  • Génération de script pour les nouveaux modèles

[0.2.2] / [0.2.0] — décembre 2025

Nouveautés

  • Onglet Avatar vide (empty avatar) avec contacteurs personnalisés
  • Avatar rigidCluster
  • Paramètre is_Hollow pour rigidDisk
  • Matériaux avancés :
    • ELAS, ELAS_DILA, VISCO_ELAS, ELAS_PLAS, THERMO_ELAS, PORO_ELAS

Correctifs

  • is_Hollow pour rigidDisk()
  • Script Python pour les nouveaux matériaux
  • Noms de matériaux dans l’arbre du modèle

[0.1.9] — novembre 2025

Nouveautés

  • Boucles paramétriques (cercle, grille, ligne, spirale, manuel)
  • Groupes nommés d’avatars (listes stockées)
  • Sérialisation / désérialisation des listes d’avatars
  • Inversion d’axe pour les boucles en ligne

Correctifs

  • Recréation des avatars de boucle à l’ouverture d’un JSON
  • invert_axis pour les boucles
  • _serialize_state / _deserialize_state
  • Centres d’avatars à la désérialisation
  • Génération de script Python
  • Sélection dans l’arbre à la création d’avatars

[0.1.x] — novembre 2025 — premiers commits

Période de démarrage du projet (premier historique Git visible : 11 novembre 2025).

Fonctionnalités posées

  • CRUD matériau, modèle, avatar, loi de contact, règle de visibilité
  • Onglet interaction
  • Avatars : rigidDiscretDisk, roughWall, fineWall, smoothWall, granuloRoughWall
  • Ajout paramétrique d’avatars
  • Premiers README et captures de documentation

Correctifs

  • Stabilisation progressive de l’interface
  • Corrections README / captures

License

Open source — free to use, modify, and distribute.

Author

Zerourou Bachir Email: bachir.zerourou@yahoo.fr © 2025

About

Graphical User Interface for LMGC90

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages