Supplementary codes and datasets for "Modular-topology optimization for additive manufacturing of reusable mechanisms"
Creators
Description
This repository supports manuscript “Modular-topology optimization for additive manufacturing of reusable mechanisms“ by M. Tyburec, M. Doškář, M. Somr, M. Kružík, and J. Zeman, published first as a preprint at researchgate.org; see the actual description of the Zenodo entry for the latest reference.
This repository contains:
- MATLAB source codes for (modular) free material optimisation and hierarchical stiffness clustering (folder
./mFMO/
) - C++ source codes for modular topology optimization (folder
./MTO/
) - Input/output data of the test suite (folder
./data/
)
Data flow
The test suite considered in the manuscript covers 3 problems:
- Non-modular design (labelled as
nonmodular
) - Modular design without connectivity constraints (labelled as
modular_not_connected
) - Modular design with connectivity constraints (labelled as
modular_connected
)
Each problem in the dataset is stored within a separate subfolder named according to the labels mentioned above and contains
- step_{X}.vtu
files that contain topology optimization data related to the iteration X
- step_{X}_proj_{Y}.stl
files containing optimized topologies for the iteration X
and the projected field Y
(0
is intermediate, 1
for eroded, and 2
for dilated)
- *.json
file that serves as an input to reproduce the topology optimization
Running codes
Modular free material optimisation
MATLAB scripts and functions for (modular) Free Material Optimization (FMO) are contained in the mFMO
data folder. The codes have been tested with MATLAB R2022b. To run the codes the user is required to install the PENNON optimizer. A free academic license is provided by its authors on request.
Input files for individual problems are defined in the mFMO/problems
folder and are launched with the runproblem(problemName, numClusters)
, where problemName
is grip
for the gripper mechanism and inv
for the inverter mechanisms. The numClusters
parameter is arbitrary in this case and can be set to 1 for the fastest evaluation. Based on the problemName
parameter, free-material optimization provides optimized designs for each of the mechanisms, resulting in the {problemName}_tmp.mat
output file. Next, it is needed to build an instance of invgrip
that contains optimized data from the independent optimization to perform simultaneous clustering. This data is already prepared in the file named invgrip.mat
. Using this file, clustering and modular free-material optimization is performed by running solveFMO(invgrip.mat, numClusters)
, where numClusters
is 15 in our case.
If successful, the optimization produces output files in mFMO/fmo_fig/
:
{label}{X}.mat
(contains clustering and assembly plan information){label}{X}guess.mat
(guess for TO)
where T
is the optimization time stamp.
Modular topology optimisation
All results were obtained with version v0.2.0
, which is also provided in the folder MTO
, and linked Intel® oneAPI Math Kernel Library and the incorporated PARDISO sparse solver. For the recent development of the code see the open git repository at https://gitlab.com/MartinDoskar/modular-topology-optimization. The repository also contains a detailed description of input parameters and code design.
Modular topology optimisation code uses CMake for the cross-platform build automation. For instance, under Linux, the whole code can be compiled in the standard five steps:
cd ./MTO
mkdir build
cd ./build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
All executables are automatically stored in ./MTO/bin/
folder. Individual problems can be optimized by parsing the JSON files generated based on the FMO data, e.g.,
./MTO/bin/MTO.Application.exe input.json
Acknowledgement
The related research and code development was supported by the Czech Science Foundation, project No. 19-26143X.
Files
data.zip
Additional details
Software
- Repository URL
- https://gitlab.com/MartinDoskar/modular-topology-optimization
- Programming language
- Objective-C++, MATLAB
- Development Status
- Active