

<b> (Optional) temperature limits, optimization of voxel mesh. </b>
<b> (Optional) temperature limits, optimization of voxel mesh. </b>
This is the implementation of the paper [Thermo-elastic topology optimization with stress
This is the implementation of the paper [Thermo-elastic topology optimization with stress
and temperature constraints.](ref%2FThermo-elastic%20topology%20optimization%20with%20stress%0Aand%20temperature%20constraints.pdf)
and temperature constraints.](ref%2FThermo-elastic%20topology%20optimization%20with%20stress%0Aand%20temperature%20constraints.pdf)
By the way, this procedure realized the thermo-elastic TO(topology optimization)([Thermo-elastic topology optimization with stress
and temperature constraints.](ref%2FThermo-elastic%20topology%20optimization%20with%20stress%0Aand%20temperature%20constraints), mechanical TO([top3d.pdf](ref%2Ftop3d.pdf)) and corresponding simulations.
## Files
## Files
* `3rd/`: third-party library
* `3rd/`: third-party library
* `assets/`: user-defined assets
* `assets/`: user-defined assets
* `examples/`: several teaching examples
* `examples/`: several teaching examples
- `defined_model_writer`: User defined voxel mesh/model as TO/simulation input.
- `clamped_model_writer`: Clamped to 0 or 1 of the optimized density.
@ -28,9 +37,7 @@ and temperature constraints.](ref%2FThermo-elastic%20topology%20optimization%20w
sudo apt install libomp-dev
sudo apt install libomp-dev
```
```
* [SuiteSparse](https://github.com/DrTimothyAldenDavis/SuiteSparse): Linear solver. Optional, NOTE: Use of the Intel MKL BLAS is strongly recommended.
* [SuiteSparse](https://github.com/DrTimothyAldenDavis/SuiteSparse): Linear solver. Optional, NOTE: Use of the Intel MKL BLAS is strongly recommended.
* [boost](https://github.com/boostorg/boost): Use filesystem
* [CUDA Toolkit](https://developer.nvidia.com/cuda-toolkit): CUDA support. Optional (Suggested).
* [AMGCL](https://github.com/ddemidov/amgcl): Linear solver. Optional.
* [CUDA Toolkit](https://developer.nvidia.com/cuda-toolkit): CUDA support. Optional.
**Select a Linear solver**
**Select a Linear solver**
@ -65,7 +72,6 @@ make -j 16
## Usage
## Usage
### 3/28 update
### 3/28 update
0. Git switch to multiple_top branch.
1. Use `example/top-thermolastic-compare-3d` to run mechanical(Me)/mechanical thermal(MeTh) topology optimization(Top) and simulation(Sim).
1. Use `example/top-thermolastic-compare-3d` to run mechanical(Me)/mechanical thermal(MeTh) topology optimization(Top) and simulation(Sim).
The procedure run in following order:
The procedure run in following order:
1. Me Top & MeTh Top -> density(*_MeTop_rho.vtk & *_MethTop_rho.vtk) and compliance/volume each iteration(*_MeTop_compliance.txt *_MeTop_volume.txt & ...)
1. Me Top & MeTh Top -> density(*_MeTop_rho.vtk & *_MethTop_rho.vtk) and compliance/volume each iteration(*_MeTop_compliance.txt *_MeTop_volume.txt & ...)
@ -73,35 +79,8 @@ The procedure run in following order:
3. MeTh Sim -> temperature(*_T.vtk), displacement(*_U.vtk), Von Mise Stress(*_von_stress.vtk).
3. MeTh Sim -> temperature(*_T.vtk), displacement(*_U.vtk), Von Mise Stress(*_von_stress.vtk).
Note: open .vtk via Paraview software.
Note: open .vtk via Paraview software.
2. Input
2. Input
1. Set parameters in *.json. see comments in `example/top-thermoelastic-*.json`(see comments in `examples/top-thermoelastic-BiclampedStructure/config.json` and ref paper for MeTh parameters; see comments in `examples/top-thermoelastic-compare-3d/config_beam.json`)
1. Set parameters in *.json. see comments in `assets/top-thermoelastic-*.json`(see comments in `assets/config_biclamed.json` and ref paper for MeTh parameters; see comments in `assets/top/config_Lshape.json`)
2. Redirect in `main.cpp` or `main.cu` if ENABLE_AMGCL_CUDA is ON:
2. Redirect in `main.cpp` or `main.cu` if ENABLE_AMGCL_CUDA is ON: