diff --git a/02_Presentation/top_opt/hca/algo.png b/02_Presentation/top_opt/hca/algo.png new file mode 100644 index 0000000000000000000000000000000000000000..784e41efbc89b73dc0ca9c6f5955f85b65843939 Binary files /dev/null and b/02_Presentation/top_opt/hca/algo.png differ diff --git a/02_Presentation/top_opt/hca/connection.png b/02_Presentation/top_opt/hca/connection.png new file mode 100644 index 0000000000000000000000000000000000000000..86319318065dc93fa345609bae462371f1077d8c Binary files /dev/null and b/02_Presentation/top_opt/hca/connection.png differ diff --git a/02_Presentation/top_opt/hca/hca_strut.gif b/02_Presentation/top_opt/hca/hca_strut.gif new file mode 100644 index 0000000000000000000000000000000000000000..3f77d83d63d40037b8e39e306a22f3fafc30e3b5 Binary files /dev/null and b/02_Presentation/top_opt/hca/hca_strut.gif differ diff --git a/02_Presentation/top_opt/hca/load_1.gif b/02_Presentation/top_opt/hca/load_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..7f77527a31045526d2b699e2d6007bb696071ccf Binary files /dev/null and b/02_Presentation/top_opt/hca/load_1.gif differ diff --git a/02_Presentation/top_opt/hca/load_2.gif b/02_Presentation/top_opt/hca/load_2.gif new file mode 100644 index 0000000000000000000000000000000000000000..71836454410e6b8f27324d9418184e9866db9c9a Binary files /dev/null and b/02_Presentation/top_opt/hca/load_2.gif differ diff --git a/02_Presentation/top_opt/hca/load_3.gif b/02_Presentation/top_opt/hca/load_3.gif new file mode 100644 index 0000000000000000000000000000000000000000..06ee4b731e96e9b0c076ad79897c67820c2376d5 Binary files /dev/null and b/02_Presentation/top_opt/hca/load_3.gif differ diff --git a/02_Presentation/top_opt/hca/load_4.gif b/02_Presentation/top_opt/hca/load_4.gif new file mode 100644 index 0000000000000000000000000000000000000000..1f306f2ce1184ec98fb2cb44517ba7e37208d004 Binary files /dev/null and b/02_Presentation/top_opt/hca/load_4.gif differ diff --git a/02_Presentation/top_opt/hca/neigh.png b/02_Presentation/top_opt/hca/neigh.png new file mode 100644 index 0000000000000000000000000000000000000000..0951d79444f6f59189786f819c7b93897977c360 Binary files /dev/null and b/02_Presentation/top_opt/hca/neigh.png differ diff --git a/02_Presentation/top_opt/hca/opt.png b/02_Presentation/top_opt/hca/opt.png new file mode 100644 index 0000000000000000000000000000000000000000..ef9ec12b83d6906f43f8735feda7ace2742c0d90 Binary files /dev/null and b/02_Presentation/top_opt/hca/opt.png differ diff --git a/02_Presentation/top_opt/hca/res_1.png b/02_Presentation/top_opt/hca/res_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6b80f49a7f0cd4ae4a6180ce58574c8cb5bd2e17 Binary files /dev/null and b/02_Presentation/top_opt/hca/res_1.png differ diff --git a/02_Presentation/top_opt/search.md b/02_Presentation/top_opt/search.md index 33d183302c68eeae5a75e7891988a4f334bc1d94..8acbcbfd924675d3d8f0a9a6390a77acbc3371d5 100644 --- a/02_Presentation/top_opt/search.md +++ b/02_Presentation/top_opt/search.md @@ -6,235 +6,33 @@ Implementation of gradient and non gradient based topology optimization in Julia Initial Notebook [Link](https://amiraa.pages.cba.mit.edu/metavoxels/03_Research/topologyOptimization3d.html) and main library/code in [here.](https://gitlab.cba.mit.edu/amiraa/metavoxels-code/-/tree/master/voxel_designer/julia/include) - - ---- - -## 1. Minimum Compliance: - -Equations and detailed explanation [here.](https://amiraa.pages.cba.mit.edu/metavoxels/03_Research/toponotes3.html) (adapted from [here.](https://designinformaticslab.github.io/mechdesign_lecture/2018/04/09/topology.html)) - -### 2D - -<!-- <img src="./top.png" width="300" /> --> -<img src="./top.gif" width="30%" /> <br></br> -<!-- <img src="./topcom.png" width="300" /> --> - -### 3D - -<img src="./top3d.gif" width="30%" /><br></br> - --- -## 2. Desired Compliance: - -### 2D - -<img src="./topcom.gif" width="30%" /> <br></br> - -### 3D - -<img src="./top3dcom.gif" width="30%" /> -<img src="./top3dcomsim.gif" width="30%" /><br></br> - ------ - -## 3. Multi Material: - -### 2D - -Red E=0.9, Green E=3, Blue E=1, Black(void) E=1e-9 +## [1. Minimum & Desired Compliance Compliance](./top_opt/reg.md) -<img src="./multi.gif" width="40%" /><br></br> +<img src="./top3dcomsim.gif" width="40%" /><br></br> -### 3D -<img src="./multtop_3d.gif" width="30%" /> -<img src="./multtop_3d.png" width="40%" /><br></br> +## [2. Multi-material](./top_opt/multimaterial.md) -<img src="./multtop_3d_compliant.gif" width="30%" /> -<img src="./multtop_3d_compliant.png" width="40%" /><br></br> +<img src="./multtop_3d.gif" width="40%" /> ------ -## 4. Microstructure Design: +## [3. Microstructure Design](./top_opt/microstructure.md) -Detailed Explanation [here.](./inverse_hom/inverse_homogenization.md) -### 2D -#### Maximum Bulk Modulus - -<img src="./microstruct.gif" width="30%" /> -<img src="./microstructBulk.gif" width="30%" /><br></br> - -#### Maximum Shear Modulus - -<img src="./microstructShear.gif" width="30%" /><br></br> - -#### Negative Negative Poisson Ratio - -<img src="./microstructPoisson.gif" width="30%" /> -<img src="./microstructPoisson1.gif" width="30%" /><br></br> - -### 3D -#### Maximum Bulk Modulus - -<img src="./micr_3d/bulk_0.2_5_1.5_2_MMA.gif" width="40%" /> -<img src="./micr_3d/bulk3DD_0.2_5_1.5_2.gif" width="40%" /><br></br> - -#### Maximum Shear Modulus - -<img src="./micr_3d/shear_0.2_5_5_2.gif" width="40%" /> -<img src="./micr_3d/shear_0.5_5_5_1.gif" width="40%" /><br></br> - -#### Negative Negative Poisson Ratio - -<img src="./micr_3d/poisson_0.2_5_1.5_2.gif" width="40%" /><br></br> -<img src="./micr_3d/poisson_0.2_5_1_1.gif" width="40%" /> <img src="./micr_3d/poisson_0.5_3_1.5_1.gif" width="40%" /><br></br> ------ - -## 5. Concurrent Topology Optimization: - -Detailed Explanation [here.](./inverse_hom/concurrent.md) -### a. One microstructure -#### 2D - -Macroscale & Microscale - -<img src="./micr_3d/macro_1.gif" width="40%" /> -<img src="./micr_3d/micro_1.gif" width="40%" /><br></br> - -<img src="./micr_3d/macro_2.gif" width="40%" /> -<img src="./micr_3d/micro_2.gif" width="40%" /><br></br> - -#### 3D -Macroscale & Microscale - -<img src="./micr_3d/macro_4.png" width="40%" /> -<img src="./micr_3d/micro_4.png" width="40%" /><br></br> - -<img src="./micr_3d/macro_3.png" width="40%" /> -<img src="./micr_3d/micro_3.png" width="40%" /><br></br> - -### b. Multiple microstructures - -#### 2D -Choosing the number of microstructures and their locations: - -<img src="./micr_3d/free.png" width="40%" /> -<img src="./micr_3d/free2.png" width="40%" /><br></br> - -<img src="./micr_3d/free1.png" width="40%" /> -<img src="./micr_3d/free21.png" width="40%" /><br></br> - -Final results: +## [4. Concurrent Topology Optimization](./top_opt/concurrent.md) -<img src="./micr_3d/multi_macro_2d.png" width="40%" /> -<img src="./micr_3d/multi_macro_2d2.png" width="40%" /><br></br> -<img src="./micr_3d/multi_micro_2d.png" width="40%" /> -<img src="./micr_3d/multi_micro_2d2.png" width="40%" /><br></br> - - -#### 3D - -<img src="./micr_3d/free3.png" width="40%" /> -<img src="./micr_3d/free31.png" width="40%" /><br></br> - -Final results: - -<img src="./micr_3d/FinalMacro_xPhys3.png" width="60%" /><br></br> - -<img src="./micr_3d/FinalMicro_xPhys3_2_0.3.png" width="20%" /> -<img src="./micr_3d/FinalMicro_xPhys3_3_0.5.png" width="20%" /> -<img src="./micr_3d/FinalMicro_xPhys3_4_0.7.png" width="20%" /> -<img src="./micr_3d/FinalMicro_xPhys3_5_1.png" width="20%" /><br></br> - -<img src="./micr_3d/FinalMicro_Array_xPhys3_2.png" width="20%" /> -<img src="./micr_3d/FinalMicro_Array_xPhys3_3.png" width="20%" /> -<img src="./micr_3d/FinalMicro_Array_xPhys3_4.png" width="20%" /> -<img src="./micr_3d/FinalMicro_Array_xPhys3_5.png" width="20%" /><br></br> - -### c. Multiple microstructures with Kmeans clustering - -#### 2D - -<img src="./micr_3d/free2.png" width="40%" /> -<img src="./micr_3d/elbow.png" width="35%" /><br></br> - - -<img src="./micr_3d/clust.png" width="40%" /> -<img src="./micr_3d/hclust.png" width="40%" /><br></br> - -Final results: - -<img src="./micr_3d/macroU_1.gif" width="40%" /><br></br> +<img src="./micr_3d/macroU_1.gif" width="40%" /> <img src="./micr_3d/microU_1.gif" width="40%" /><br></br> -<!-- <img src="./micr_3d/finalArrayMicro1.png" width="15%" /> -<img src="./micr_3d/finalArrayMicro2.png" width="15%" /> -<img src="./micr_3d/finalArrayMicro3.png" width="15%" /> -<img src="./micr_3d/finalArrayMicro4.png" width="15%" /> -<img src="./micr_3d/finalArrayMicro5.png" width="15%" /> -<img src="./micr_3d/finalArrayMicro6.png" width="15%" /><br></br> --> - -| | |||||| -| :----: | :----: | :---: |:---: |:---: |:---: |:---: | -| Ex | 0.32 | 0.27 | 0.187 |0.321 |0.298 |0.15 | -| Ey | 0.102 | 0.103 | 0.255 |0.093 |0.088 |0.098 | -| ux | 0.506 | 0.439 | 0.182 |0.307 |0.488 |0.646 | -| uy | 0.161 | 0.171 | 0.249 |0.088 |0.144 |0.417 | -| S | 0.055 | 0.058 | 0.047 |0.036 |0.049 |0.071 | - - -#### 2D Compliance - -<img src="./micr_3d/free4.png" width="40%" /><br></br> +## [5. Hybrid Cellular Automata (online non-gradient based Optimization)](./top_opt/online.md) -<img src="./micr_3d/free41.png" width="40%" /><br></br> - -Final results: - -<img src="./micr_3d/inv.png" width="40%" /><br></br> - - -<img src="./micr_3d/macroUComp1.gif" width="40%" /> -<img src="./micr_3d/microUComp1.gif" width="40%" /><br></br> - -<!-- <img src="./micr_3d/finalArrayMicro1.png" width="15%" /> -<img src="./micr_3d/finalArrayMicro2.png" width="15%" /> -<img src="./micr_3d/finalArrayMicro3.png" width="15%" /> -<img src="./micr_3d/finalArrayMicro4.png" width="15%" /> -<img src="./micr_3d/finalArrayMicro5.png" width="15%" /> -<img src="./micr_3d/finalArrayMicro6.png" width="15%" /><br></br> --> - -| |  | | | | -| :----: | :----: | :---: |:---: |:---: | -| Ex | 0.151 | 0.168 | 0.229 |0.316 | -| Ey | 0.197 | 0.101 | 0.13 |0.113 | -| ux | 0.259 | 0.584 | 0.497 |0.277 | -| uy | 0.338 | 0.349 | 0.282 |0.099 | -| S | 0.047 | 0.047 | 0.061 |0.035 | - - ---- - -#### 3D - ------ - -## 5. Hybrid Cellular Automata (online non-gradient based Optimization): - -Detailed Explanation [here.](https://amiraa.pages.cba.mit.edu/cpp_frep/hca.html) - -<img src="./hca_strut.gif" width="40%" /><br></br> - - ### Dynamic Optimization: - -<img src="./search.gif" width="40%" /> <img src="./search2.gif" width="40%" /><br></br> ----- \ No newline at end of file +---- + diff --git a/02_Presentation/top_opt/top_opt/concurrent.md b/02_Presentation/top_opt/top_opt/concurrent.md new file mode 100644 index 0000000000000000000000000000000000000000..70e0210d8bcb16b8cb050f98e64019120fb48e48 --- /dev/null +++ b/02_Presentation/top_opt/top_opt/concurrent.md @@ -0,0 +1,131 @@ +## 4. Concurrent Topology Optimization: + +Detailed Explanation [here.](../inverse_hom/concurrent.md) +### a. One microstructure +#### 2D + +Macroscale & Microscale + +<img src="../micr_3d/macro_1.gif" width="40%" /> +<img src="../micr_3d/micro_1.gif" width="40%" /><br></br> + +<img src="../micr_3d/macro_2.gif" width="40%" /> +<img src="../micr_3d/micro_2.gif" width="40%" /><br></br> + +#### 3D +Macroscale & Microscale + +<img src="../micr_3d/macro_4.png" width="40%" /> +<img src="../micr_3d/micro_4.png" width="40%" /><br></br> + +<img src="../micr_3d/macro_3.png" width="40%" /> +<img src="../micr_3d/micro_3.png" width="40%" /><br></br> + +### b. Multiple microstructures + +#### 2D +Choosing the number of microstructures and their locations: + +<img src="../micr_3d/free.png" width="40%" /> +<img src="../micr_3d/free2.png" width="40%" /><br></br> + +<img src="../micr_3d/free1.png" width="40%" /> +<img src="../micr_3d/free21.png" width="40%" /><br></br> + + +Final results: + +<img src="../micr_3d/multi_macro_2d.png" width="40%" /> +<img src="../micr_3d/multi_macro_2d2.png" width="40%" /><br></br> + +<img src="../micr_3d/multi_micro_2d.png" width="40%" /> +<img src="../micr_3d/multi_micro_2d2.png" width="40%" /><br></br> + + +#### 3D + +<img src="../micr_3d/free3.png" width="40%" /> +<img src="../micr_3d/free31.png" width="40%" /><br></br> + +Final results: + +<img src="../micr_3d/FinalMacro_xPhys3.png" width="60%" /><br></br> + +<img src="../micr_3d/FinalMicro_xPhys3_2_0.3.png" width="20%" /> +<img src="../micr_3d/FinalMicro_xPhys3_3_0.5.png" width="20%" /> +<img src="../micr_3d/FinalMicro_xPhys3_4_0.7.png" width="20%" /> +<img src="../micr_3d/FinalMicro_xPhys3_5_1.png" width="20%" /><br></br> + +<img src="../micr_3d/FinalMicro_Array_xPhys3_2.png" width="20%" /> +<img src="../micr_3d/FinalMicro_Array_xPhys3_3.png" width="20%" /> +<img src="../micr_3d/FinalMicro_Array_xPhys3_4.png" width="20%" /> +<img src="../micr_3d/FinalMicro_Array_xPhys3_5.png" width="20%" /><br></br> + +### c. Multiple microstructures with Kmeans clustering + +#### 2D + +<img src="../micr_3d/free2.png" width="40%" /> +<img src="../micr_3d/elbow.png" width="35%" /><br></br> + + +<img src="../micr_3d/clust.png" width="40%" /> +<img src="../micr_3d/hclust.png" width="40%" /><br></br> + +Final results: + +<img src="../micr_3d/macroU_1.gif" width="40%" /> +<img src="../micr_3d/microU_1.gif" width="40%" /><br></br> + +<!-- <img src="../micr_3d/finalArrayMicro1.png" width="15%" /> +<img src="../micr_3d/finalArrayMicro2.png" width="15%" /> +<img src="../micr_3d/finalArrayMicro3.png" width="15%" /> +<img src="../micr_3d/finalArrayMicro4.png" width="15%" /> +<img src="../micr_3d/finalArrayMicro5.png" width="15%" /> +<img src="../micr_3d/finalArrayMicro6.png" width="15%" /><br></br> --> + +| | |||||| +| :----: | :----: | :---: |:---: |:---: |:---: |:---: | +| Ex | 0.32 | 0.27 | 0.187 |0.321 |0.298 |0.15 | +| Ey | 0.102 | 0.103 | 0.255 |0.093 |0.088 |0.098 | +| ux | 0.506 | 0.439 | 0.182 |0.307 |0.488 |0.646 | +| uy | 0.161 | 0.171 | 0.249 |0.088 |0.144 |0.417 | +| S | 0.055 | 0.058 | 0.047 |0.036 |0.049 |0.071 | + + +#### 2D Compliance + +<img src="../micr_3d/free4.png" width="40%" /><br></br> + + +<img src="../micr_3d/free41.png" width="40%" /><br></br> + +Final results: + +<img src="../micr_3d/inv.png" width="40%" /><br></br> + + +<img src="../micr_3d/macroUComp1.gif" width="40%" /> +<img src="../micr_3d/microUComp1.gif" width="40%" /><br></br> + +<!-- <img src="../micr_3d/finalArrayMicro1.png" width="15%" /> +<img src="../micr_3d/finalArrayMicro2.png" width="15%" /> +<img src="../micr_3d/finalArrayMicro3.png" width="15%" /> +<img src="../micr_3d/finalArrayMicro4.png" width="15%" /> +<img src="../micr_3d/finalArrayMicro5.png" width="15%" /> +<img src="../micr_3d/finalArrayMicro6.png" width="15%" /><br></br> --> + +| |  | | | | +| :----: | :----: | :---: |:---: |:---: | +| Ex | 0.151 | 0.168 | 0.229 |0.316 | +| Ey | 0.197 | 0.101 | 0.13 |0.113 | +| ux | 0.259 | 0.584 | 0.497 |0.277 | +| uy | 0.338 | 0.349 | 0.282 |0.099 | +| S | 0.047 | 0.047 | 0.061 |0.035 | + + +--- + +#### 3D + +----- \ No newline at end of file diff --git a/02_Presentation/top_opt/top_opt/microstructure.md b/02_Presentation/top_opt/top_opt/microstructure.md new file mode 100644 index 0000000000000000000000000000000000000000..a9fa9abc581c1cf6c5520bdc50ceeabdce7a97cd --- /dev/null +++ b/02_Presentation/top_opt/top_opt/microstructure.md @@ -0,0 +1,36 @@ +## 3. Microstructure Design: + +Detailed Explanation [here.](./inverse_hom/inverse_homogenization.md) +### 2D +#### Maximum Bulk Modulus + +<img src="../microstruct.gif" width="30%" /> +<img src="../microstructBulk.gif" width="30%" /><br></br> + +#### Maximum Shear Modulus + +<img src="../microstructShear.gif" width="30%" /><br></br> + +#### Negative Negative Poisson Ratio + +<img src="../microstructPoisson.gif" width="30%" /> +<img src="../microstructPoisson1.gif" width="30%" /><br></br> + +### 3D +#### Maximum Bulk Modulus + +<img src="../micr_3d/bulk_0.2_5_1.5_2_MMA.gif" width="40%" /> +<img src="../micr_3d/bulk3DD_0.2_5_1.5_2.gif" width="40%" /><br></br> + +#### Maximum Shear Modulus + +<img src="../micr_3d/shear_0.2_5_5_2.gif" width="40%" /> +<img src="../micr_3d/shear_0.5_5_5_1.gif" width="40%" /><br></br> + +#### Negative Negative Poisson Ratio + +<img src="../micr_3d/poisson_0.2_5_1.5_2.gif" width="40%" /><br></br> +<img src="../micr_3d/poisson_0.2_5_1_1.gif" width="40%" /> +<img src="../micr_3d/poisson_0.5_3_1.5_1.gif" width="40%" /><br></br> + +----- \ No newline at end of file diff --git a/02_Presentation/top_opt/top_opt/multimaterial.md b/02_Presentation/top_opt/top_opt/multimaterial.md new file mode 100644 index 0000000000000000000000000000000000000000..be2ac474c0b9c5fa4a8000c4416995fa2f13ca30 --- /dev/null +++ b/02_Presentation/top_opt/top_opt/multimaterial.md @@ -0,0 +1,17 @@ +## 3. Multi Material: + +### 2D + +Red E=0.9, Green E=3, Blue E=1, Black(void) E=1e-9 + +<img src="../multi.gif" width="40%" /><br></br> + +### 3D + +<img src="../multtop_3d.gif" width="30%" /> +<img src="../multtop_3d.png" width="40%" /><br></br> + +<img src="../multtop_3d_compliant.gif" width="30%" /> +<img src="../multtop_3d_compliant.png" width="40%" /><br></br> + +----- \ No newline at end of file diff --git a/02_Presentation/top_opt/top_opt/online.md b/02_Presentation/top_opt/top_opt/online.md new file mode 100644 index 0000000000000000000000000000000000000000..3df3cd1a6ada56e465768322dcd8c0bcf9bf0b22 --- /dev/null +++ b/02_Presentation/top_opt/top_opt/online.md @@ -0,0 +1,173 @@ +<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0MathJax.js?config=TeX-AMS_CHTML"></script> + +# Local Opimization: Hybrid Cellular Automata + + + +## Background and Approach: + +### [1- A Cellular Automaton Generating Topological Structures (1994)](https://www.spiedigitallibrary.org/conference-proceedings-of-spie/2361/0000/Cellular-automaton-generating-topological-structures/10.1117/12.184866.short?SSO=1) + +<img src="../hca/connection.png" width="300" /><br></br> + +#### Algorithm: +1. Define cells, load, fixed conditions +2. calculate local stresses in cells +3. change material properties of cells based on update rule: +```math +E^{t+1}=E^t(1+ \alpha ( \sigma / \sigma_c -1) +``` +5. Chang cell state ("death", "birth" or "division") +6. return to step 2 + +<img src="../hca/res_1.png" width="300" /><br></br> + + +### [2- Topology Optimization Using a Hybrid Cellular Automaton Method With Local Control Rules](https://asmedigitalcollection.asme.org/mechanicaldesign/article-abstract/128/6/1205/477095/Topology-Optimization-Using-a-Hybrid-Cellular?redirectedFrom=fulltext) + + + +**State** $`\alpha_i`$ of each cell is defined by **design variables** $`x_i(t)`$ (density,geometry,elastic modulus), and **field variables** $`S_i(t)`$ (stress, stain, strain energy density) (the relation between the amount of energy employed to deform a volume unit of a solid and imposed strain)). +```math +\alpha_i = \{x_i{(t)}, S_i(t) \} +``` + +Strain Energy defined as follows: +```math +U= \sum_{i=1}^{N}U_i,v_i +``` +$`U_i`$ Strain energy density, $`v_i`$ volume + +The local minimization problem defined as: +```math +\min_{x_i} |e_i| \\ s.t. \ 0<x_i^{min} \leq x_i \leq 1 +``` + +The error signal $`e_i`$: +```math +e_i= \bar{U}_i-U^*_i +``` + + +$`U^*_i`$ is the local SED target,$`\bar{U}_i`$ is the average SED value: + +```math +\bar{U}_i=\frac{U_1+ \sum_{j=1}^{N}U_j }{N+1} +``` + +*Neighborhood*: + + + +*Local Control Rules*: +1. Two position control + ```math + \Delta x_i(t)=c_T * sgn[e_i(t)] + ``` +2. Proportional control + ```math + \Delta x_i(t)=c_p * e_i(t) + ``` +3. Derivative control + ```math + \Delta x_i(t)=c_d * (e_i(t)-e_i(t-1)) + ``` +4. Integral control + ```math + \Delta x_i(t)=c_I * \sum_{\tau=0}^{t} (e_i(t-\tau)) + ``` + + + +#### Algorithm: + +1. Define design domain, load cases, fixed conditions +2. Define field variables (Simulation) +3. calculate error signals +4. Apply local rules and update the design variables +5. check for convergence if not return to step 2 + +<img src="../hca/algo.png" width="300" /><br></br> + +---- +## Progress + +### Static Shape Optimization + +### Dynamic Optimization: + +<img src="../search.gif" width="60%" /><br></br> +<img src="../search2.gif" width="60%" /><br></br> + +[Jupyter Notebook](https://amiraa.pages.cba.mit.edu/cpp_frep/HCA_notebook.html) + +<img src="../hca/load_1.gif" width="600" /><br></br> +<img src="../hca/hca_strut.gif" width="600" /><br></br> + + + +### Dynamic Shape Optimization +Target minimization problem defined as: +```math +\min_{x_i} |e_i| \\ s.t. \ 0<x_i^{min} \leq x_i \leq 1 +``` + +The error signal $`e_i`$: +```math +e_i= \bar{U}_i-U^*_i +``` + +### Test Cases + +1. Drop Test +2. Gear Search + +<img src="../hca/load_2.gif" width="600" /><br></br> +<img src="../hca/load_3.gif" width="600" /><br></br> +<img src="../hca/load_4.gif" width="600" /><br></br> + +**Approach 1:** Aggregated Target Sum: + +```math + U^*_i= \sum_{j=0}^t U^*_{i,j} $$ +``` +```mermaid +graph LR + A[start] -->B[End] + C[0] --> D[t] -.update-.- E[0] -->F[t] -.update-.- G[0] --> H[t] -.update-.- I[0] --> J[t] + A --> C + J --> B + +``` +... or only consider final position: +```math + U^*_i= U^*_{i,t} $$ +``` + +**Approach 2:** Online Search: +```math + U^*_i= U^*_{i,j} +``` + +```mermaid +graph LR + A[start] --> 0 -.update-.- 1 -.update-.- 2 -.update-.- 3 -.update-.- J[t] -->B[End] + +``` + + + + +---- + +## TODO Next Steps +- [ ] change to triangular lattice +- [ ] Define local rule for dynamic gear search +- [ ] Drop Test + - [ ] Repeat static with dynamic simulation + - [ ] rewrite problem and boundary conditions + - [ ] 2d simulation?/constrains + - [ ] do drop test + - [ ] optimization + - [ ] make mass=0? or just change E? + - [ ] bounce \ No newline at end of file diff --git a/02_Presentation/top_opt/top_opt/reg.md b/02_Presentation/top_opt/top_opt/reg.md new file mode 100644 index 0000000000000000000000000000000000000000..a42fbca95d71e862135b81c939c490f4ef65b99a --- /dev/null +++ b/02_Presentation/top_opt/top_opt/reg.md @@ -0,0 +1,28 @@ +## 1. Minimum Compliance: + +Equations and detailed explanation [here.](https://amiraa.pages.cba.mit.edu/metavoxels/03_Research/toponotes3.html) (adapted from [here.](https://designinformaticslab.github.io/mechdesign_lecture/2018/04/09/topology.html)) + +### 2D + +<!-- <img src="./top.png" width="300" /> --> +<img src="./top.gif" width="30%" /> <br></br> +<!-- <img src="./topcom.png" width="300" /> --> + +### 3D + +<img src="./top3d.gif" width="30%" /><br></br> + +--- + +## 2. Desired Compliance: + +### 2D + +<img src="./topcom.gif" width="30%" /> <br></br> + +### 3D + +<img src="./top3dcom.gif" width="30%" /> +<img src="./top3dcomsim.gif" width="30%" /><br></br> + +----- \ No newline at end of file diff --git a/README.md b/README.md index ddd998143036c45198ad7a7ab9b4bface9947e9d..dc72274a5f24fabc7139f7e790e8c540b138319f 100644 --- a/README.md +++ b/README.md @@ -87,9 +87,10 @@ I am now using this gitlab project for documentation only, the code lives [here] - [x] Multi-voxel simulation - [x] Physical simulation comparison - [x] Parallel dynamic ODE solver -- [ ] Hierarchical simulation +- [x] Hierarchical simulation - [x] One voxel optimization based on desired deformation - [x] Inverse Design of Large Structures +- [ ] Inverse Design of Active structures (offline and online) - [ ] Growing and Evolving structures (Path planing + simulation) ----------------------- @@ -105,15 +106,14 @@ I am now using this gitlab project for documentation only, the code lives [here] - [x] make sure the codec information is correct - [x] Document cpu version and how to change the number of threads ### Demos - - [ ] different kinds of voxels + - [x] different kinds of voxels - [x] add chiral voxel - [x] add auxetic voxel - [x] add compliant voxel - [x] search for one way bendy voxel - - [ ] Demo and .gif different types of voxels beside each other + - [x] Demo and .gif different types of voxels beside each other - [ ] fill mesh/frep with voxels - [ ] port swarm paper asd (voxelizer) - - [ ] use rhino to slice it - [ ] parallelize it - [x] fill frep - [ ] get the gpu thing and get data from function @@ -121,7 +121,8 @@ I am now using this gitlab project for documentation only, the code lives [here] - [x] populate interactive demos - [ ] drop down examples from html instead of saving lots of html pages ### Scaling and Hierarchy - - [ ] comparison hierarchical vs detailed + - [x] comparison hierarchical vs detailed + - [ ] madcat - [x] automatic elasticity vector calculation - [x] use parent data to get hierarchy information - [x] different scale voxels in the same simulation (multi-scale simulation) @@ -135,12 +136,11 @@ I am now using this gitlab project for documentation only, the code lives [here] - [ ] fixed max num of timesteps - [ ] see way to show current timestep - [ ] slider down for displacement instead of animation - - [ ] menu down to chose which example to upload - [ ] gui for boundary conditions - [x] basic boxes - [ ] export to json - - [ ] CMODS - - [ ] finish implementation + - [x] CMODS + - [x] finish implementation - [ ] [node from the browser](https://hackernoon.com/how-to-run-nodejs-in-a-browser-wc4s32by) - [x] show force function between nodes - [x] force graph @@ -156,11 +156,14 @@ I am now using this gitlab project for documentation only, the code lives [here] - [ ] [other](http://apps.amandaghassaei.com/TrussOptimization2D/) ### Physics - [x] change recommended time-step to look at all lengths, E and areas - - [ ] add collision/bins - [x] Non linear behavior get the stress strain curve multiple points and use them + - [ ] add collision/bins - [ ] add note about units - [ ] add detailed parametric study about the different values that can be changed and effect on convergence and num time steps - [ ] for ex: damping factor, stiffness, mass, time steps + - [ ] Explore double beams + - [ ] Add definitions for other beam cross sections + - [ ] include other integrators (better than verlet integration) ---------------------