CalculiX-Preprocessor
The goal is to develop a Linux preprocessor for CalculiX that allows importing CAD geometry, meshing, and model setup.
Roadmap
| Objective | Priority | Tools |
|---|---|---|
| Importing 3D Models | 1 | Gmsh or Rust STL parser |
| Meshing | 1 | Gmsh called as a plugin through libloading from .so file |
| General UI | 1 | GTK 4 |
| 3D Visualization | 1 | three-d, wgpu, bevy |
| CalculiX Model Development | 1 | GTK 4 |
.inp File Generation | 1 | Called a plugin through libloading allowing users to create plugins for any solver input file format |
ccx Job Submission | 1 | Rust external commands |
.inp Model Import | 2 | native Rust |
| scripting using lua or python | 2 | rlua for lua and pyo3 for python |
| Protocol for arbitrary meshing toolkit integration | 2 | wasmtime or wasmer for allowing interfacing with any WASM compatible language |
| Protocol for calling arbitrary external tools | 2 | tokio for async process calls |
| API exposure | 2 | axum, tonic, pyo3 |
| Serializaion | 2 | serde, serde_json, prost, serde_yaml |
| CAD Functionality | 2 | OpenCASCADE or Gmsh occ API |
| Post Processing | 3 | Initially export .vtu files by converting .frd; eventually develop a custom viewer |
Notes
- Qt looks better than GTK 4 but Qt is not fully integrated with Rust yet.
- UI inspiration comes from ANSA and Abaqus/CAE.
bevyis powerful but heavy and less GTK-friendly.
Phased Approach
The roadmap is divided into priorities to focus on core functionality first (priority 1), then add CAD modeling features (priority 2), and finally post-processing capabilities (priority 3). This phased approach ensures a stable, usable product early on, with gradual enhancements.
Extensibility
- Provide API for function calls to allow scripting and automation.
- APIs can accesses anything the the software does. This will be implemented by mapping every function in source to a python function in the API
- In addition the API will be able to access data structures for mesh, materials, loads etc.
- Provide archtecture for developing meshing plugins.
- Allow writing in any WASM compatible language and loading through
.sofiles - Allow async sys calls through
tokio - Query plugin capabilities for geometry import, export etc
- Allow writing in any WASM compatible language and loading through
License
The software should use a less restrictive license like MIT to allow industry users to develop proprietary forks, which would ease adoption. The aim is not to make all extensions of the code strictly open source but to enable industry to adopt Linux for CAE.