Skip to content

Commit b48f210

Browse files
committed
v1.3.0
1 parent d969513 commit b48f210

48 files changed

Lines changed: 4966 additions & 30724 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

NOTICE

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,24 @@
11
# PyLCSS Third-Party Notices
2-
Document Version: 1.2 Last Updated: February 10, 2026
2+
Document Version: 1.3 Last Updated: May 12, 2026
33

44
This document outlines the third-party libraries and components used in PyLCSS, along with their respective licenses. PyLCSS is committed to respecting the intellectual property of all contributors and provides this information in accordance with open-source licensing requirements.
55

6+
## Optional Native Solver Binaries
7+
8+
PyLCSS can launch native solver executables as separate external processes. These binaries are not Python dependencies and are not installed by `pip install -r requirements.txt`. The helper script `scripts/install_solvers.py` can download or locate them under `external_solvers/`, but each solver remains governed by its own upstream license.
9+
10+
### CalculiX (`ccx`)
11+
- **Purpose**: Linear static FEA and CalculiX-in-the-loop optimization evaluations.
12+
- **License**: GNU General Public License v2 or later, per the official CalculiX project notice.
13+
- **Source**: [https://www.calculix.de/](https://www.calculix.de/)
14+
- **Packaging Note**: PyLCSS writes `.inp` decks and launches `ccx` as an external process. The Windows installer helper currently prefers `ccx_static.exe` from the CalculiX 2.23 Windows binary archive because it avoids the missing MKL runtime issue of the dynamic build.
15+
16+
### OpenRadioss
17+
- **Purpose**: Explicit crash/impact solve and animation conversion via Starter, Engine, and `anim_to_vtk`.
18+
- **License**: GNU Affero General Public License v3 or later, per the OpenRadioss `COPYRIGHT.md` distributed with the upstream binaries.
19+
- **Source**: [https://github.com/OpenRadioss/OpenRadioss](https://github.com/OpenRadioss/OpenRadioss)
20+
- **Packaging Note**: PyLCSS writes or stages solver decks, launches OpenRadioss as an external process, and imports converted animation frames. OpenRadioss may include additional third-party runtime components in its `extlib/` directory.
21+
622
## 1. LGPL Licensed Software
723

824
> ⚠️ **LGPL Compliance Note**: PyLCSS is distributed as a Python source package. All LGPL-licensed libraries are dynamically linked and can be replaced by the end user. If distributing as a compiled executable (EXE, DMG), these libraries must not be statically linked. Distributors must ensure that the end-user retains the ability to replace these shared libraries with modified versions to maintain compliance with the LGPL.
@@ -259,4 +275,4 @@ The following versions are explicitly verified for license compliance. Deviating
259275

260276
---
261277

262-
For more information about PyLCSS and its licensing, please refer to the LICENSE file or visit the project repository.
278+
For more information about PyLCSS and its licensing, please refer to the LICENSE file or visit the project repository.

README.md

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
*Visual Modeling · Parametric CAD · Topology Optimisation · FEA · Solution Spaces · Sensitivity Analysis · Surrogate AI · Multi-Objective Optimization*
2424

2525
[![License](https://img.shields.io/badge/License-PolyForm_Shield_1.0.0-blue.svg)](LICENSE)
26-
[![Python](https://img.shields.io/badge/Python-3.8%2B-green.svg)](https://www.python.org/)
27-
[![Version](https://img.shields.io/badge/Version-2.0.0-orange.svg)]()
26+
[![Python](https://img.shields.io/badge/Python-3.10%2B-green.svg)](https://www.python.org/)
27+
[![Version](https://img.shields.io/badge/Version-2.1.0-orange.svg)]()
2828

2929
</div>
3030

@@ -34,7 +34,9 @@
3434

3535
**PyLCSS** (Python Low-Code System Solutions) is a professional engineering design platform. It allows engineers to model complex multidisciplinary systems through a node-based visual interface, run parametric CAD and FEA simulations, explore high-dimensional **Solution Spaces**, and optimise designs using 7 different algorithms — all within a single desktop application.
3636

37-
Built for real-world engineering workflows, PyLCSS features a crash-free multi-threaded architecture, vectorised computation kernels, comprehensive file I/O, and an integrated AI coding assistant.
37+
Built for real-world engineering workflows, PyLCSS features a crash-free multi-threaded architecture, vectorised computation kernels, comprehensive file I/O, external solver integration, and an integrated AI coding assistant.
38+
39+
PyLCSS is more than a standalone CAD environment: the CAD graph is the parametric source of truth for downstream simulation and design optimisation. STEP is supported for exchange, but `.cad` graphs and exposed parameters are required when a model must be rebuilt, swept, or optimised.
3840

3941
---
4042

@@ -48,23 +50,26 @@ PyLCSS implements the **Solution Space** approach for robust design: instead of
4850

4951
## Key Features
5052

51-
### Parametric CAD Environment
53+
### Parametric Engineering Design Environment
5254
- **70+ Node Types** — Primitives, Booleans, Fillets, Chamfers, Sweeps, Lofts, Shells, Patterns, Imports
55+
- **Code-Assisted Modeling Direction** — Parts and assemblies should remain reproducible through graph nodes, exposed parameters, imported STEP/STL geometry, or code-based creation blocks rather than hidden manual edits
5356
- **Topology Optimisation** — SIMP with MMA/OC solvers, density/sensitivity filtering, Heaviside projection, symmetry constraints, shape recovery with marching cubes, and **direct STL/OBJ export** of optimised shapes
5457
- **Advanced Nodes** — Thicken, Pipe, Split, Text emboss, Math Expression evaluator, Import STEP/STL
5558
- **Real-Time 3D Viewer** — VTK-based with density cutoff preview during optimisation
5659
- **Measurement** — Distance, surface area, and volume nodes
5760

5861
### Finite Element Analysis (FEA)
59-
- **scikit-fem** + **Netgen** meshing — Tetrahedral/triangular elements
60-
- **Linear Elasticity** — Displacement, von Mises stress, compliance
62+
- **Netgen Meshing + scikit-fem Mesh Containers** — Tetrahedral/triangular mesh generation and internal mesh representation
63+
- **CalculiX Static Solver Backend** — PyLCSS writes a CalculiX `.inp`, runs `ccx`, parses `.frd`, and displays displacement + Von Mises stress in the in-app VTK viewer
64+
- **Linear Elasticity Results** — Displacement, von Mises stress, compliance, volume, and mass
6165
- **FEA Results Nodes** — Stress extraction, displacement, reaction forces
6266
- **Remeshing** — Surface-to-solid conversion for topology-optimised shapes (up to 20 000 faces)
63-
- **External CalculiX Backend**Full round-trip: PyLCSS writes a CalculiX `.inp`, runs `ccx`, parses the `.frd` output, and displays displacement + Von Mises stress in the in-app VTK viewer (see [Installation](#installation) for the binary fetch step)
67+
- **CalculiX-Coupled Optimisation**Topology, shape, and size optimisation now run through repeated CalculiX evaluations instead of the removed in-process scikit-fem solver path
6468

6569
### Crash / Impact Simulation
66-
- **Internal Explicit Solver** — Central-difference transient solid mechanics with plasticity, fracture, contact, and optional GPU path
67-
- **OpenRadioss Backend** — Full round-trip: PyLCSS writes an LS-DYNA-style keyword deck, runs Starter + Engine, converts the `A001`/`A002`… animation files via `anim_to_vtk`, and plays the frames in the crash viewer (requires the OpenRadioss binaries — see [Installation](#installation))
70+
- **OpenRadioss Backend** — PyLCSS writes an LS-DYNA-style keyword deck, runs Starter + Engine, converts the `A001`/`A002`… animation files via `anim_to_vtk`, and plays the frames in the crash viewer
71+
- **Run Radioss Deck Node** — Existing OpenRadioss/LS-DYNA `.rad`/`.k` decks can be launched and imported
72+
- **Current Limitation** — The generated crash deck is still a thin integration layer. Even simple explicit simulations can run slowly when the mesh has tiny elements, the end time/output frequency is high, or animation conversion dominates.
6873

6974
### Multi-Objective Optimisation (7 Solvers)
7075
| Algorithm | Type | Best For |
@@ -122,7 +127,7 @@ PyLCSS implements the **Solution Space** approach for robust design: instead of
122127
## Installation
123128

124129
### Prerequisites
125-
- **Python** 3.8+
130+
- **Python** 3.10+
126131
- **OS** Windows 10/11 (macOS and Linux: experimental)
127132

128133
### Quick Install
@@ -144,7 +149,7 @@ pip install -r requirements.txt
144149

145150
# (Optional) Download CalculiX + OpenRadioss native binaries.
146151
# These are NOT pip-installable; the script fetches the upstream releases
147-
# into <repo>/external_solvers/ and writes the matching PYLCSS_* env vars.
152+
# into <repo>/external_solvers/ and writes solver_paths.json.
148153
python scripts/install_solvers.py
149154

150155
# Launch
@@ -157,18 +162,18 @@ Or on Windows: double-click `run_gui.bat`.
157162

158163
| Backend | Provided by | How PyLCSS finds it |
159164
|---------|-------------|----------------------|
160-
| CalculiX (`ccx`) | `python scripts/install_solvers.py --only ccx` | `PYLCSS_CALCULIX_CCX`, `CALCULIX_CCX`, or `ccx`/`ccx.exe` on `PATH` |
165+
| CalculiX (`ccx`) | `python scripts/install_solvers.py --only ccx` | `PYLCSS_CALCULIX_CCX`, `CALCULIX_CCX`, `ccx_static`, `ccx`, or `ccx.exe` on `PATH` |
161166
| OpenRadioss Starter/Engine | `python scripts/install_solvers.py --only radioss` | `PYLCSS_OPENRADIOSS_STARTER`, `PYLCSS_OPENRADIOSS_ENGINE`, or `starter_*`/`engine_*` on `PATH` |
162167
| OpenRadioss `anim_to_vtk` | Bundled with the Radioss install above | `PYLCSS_OPENRADIOSS_ANIM2VTK` or `anim_to_vtk*` on `PATH` |
163168

164-
Structural optimization (Topology / Shape / Size) still runs on the in-process scikit-fem solver — the optimization nodes need a Jacobian/adjoint that the external decks do not provide. The external backends are for high-fidelity verification of single FEA / crash runs.
169+
CalculiX and OpenRadioss are launched as external native processes. They are not pip dependencies and remain governed by their own upstream licenses.
165170

166171
---
167172

168173
## Quick Start
169174

170175
1. **Launch**`python scripts/main.py`
171-
2. **Load a Model**`File → Open` → select `data/Gear Unit.json`
176+
2. **Load a Model**`File → Open` → select a project from `data/`
172177
3. **Validate** — Click "Validate" to check units and connections
173178
4. **Solution Space** — Switch to Solution Space tab → "Compute"
174179
5. **Visualise** — Plot Weight vs. Safety Factor
@@ -180,10 +185,12 @@ Structural optimization (Topology / Shape / Size) still runs on the in-process s
180185

181186
```
182187
pylcss/
183-
├── cad/ # Parametric CAD kernel (CadQuery + OCC)
184-
│ ├── nodes/ # 50+ node types (primitives, booleans, FEA, TopOpt)
188+
├── cad/ # Parametric design graph (CadQuery + OCC)
189+
│ ├── nodes/ # 50+ node types (modeling, meshing, FEA, TopOpt, crash)
185190
│ ├── engine.py # Graph execution engine
191+
│ ├── runtime.py # cad.fea / cad.crash / cad.topopt API
186192
│ └── node_library.py # Node registry
193+
├── solver_backends/ # CalculiX and OpenRadioss deck/run/result adapters
187194
├── optimization/ # 7 solvers (SciPy, Nevergrad, NSGA-II, Multi-Start)
188195
├── sensitivity/ # 4 methods (Sobol, Morris, FAST, Delta)
189196
├── solution_space/ # Monte Carlo, step analysis, product families
@@ -199,8 +206,8 @@ pylcss/
199206
| Layer | Technologies |
200207
|-------|-------------|
201208
| **UI** | PySide6, NodeGraphQt, QtAwesome |
202-
| **CAD** | CadQuery, OpenCASCADE (OCP), VTK |
203-
| **FEA** | scikit-fem, Netgen, meshio, CalculiX (`ccx` + `.frd` round-trip), OpenRadioss (`starter`/`engine` + `anim_to_vtk` round-trip) |
209+
| **Parametric Design** | CadQuery, OpenCASCADE (OCP), VTK |
210+
| **FEA / Crash** | Netgen, scikit-fem mesh containers, meshio, CalculiX (`ccx` + `.frd` round-trip), OpenRadioss (`starter`/`engine` + `anim_to_vtk` round-trip) |
204211
| **Computation** | NumPy, SciPy, Pandas |
205212
| **Visualisation** | VTK (3D), pyqtgraph (2D) |
206213
| **ML** | PyTorch, scikit-learn |
@@ -216,7 +223,7 @@ Licensed under the **PolyForm Shield License 1.0.0**.
216223
**Allowed:** Personal use, academic research, internal business use.
217224
**Restricted:** You cannot use this software to build a competing product or service.
218225

219-
See [LICENSE](LICENSE) for full details.
226+
See [LICENSE](LICENSE) and [NOTICE](NOTICE) for full details.
220227

221228
<div align="center">
222229
<sub>Copyright © 2026 Kutay Demir. All rights reserved.</sub>

0 commit comments

Comments
 (0)