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> -->
-
-|      |![](./micr_3d/finalArrayMicro1.png) |![](./micr_3d/finalArrayMicro2.png)|![](./micr_3d/finalArrayMicro3.png)|![](./micr_3d/finalArrayMicro4.png)|![](./micr_3d/finalArrayMicro5.png)|![](./micr_3d/finalArrayMicro6.png)|
-| :----:  | :----: |  :---: |:---: |:---: |:---: |:---: |
-| 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> -->
-
-|      | ![](./micr_3d/finalArrayMicro1c.png) | ![](./micr_3d/finalArrayMicro2c.png)| ![](./micr_3d/finalArrayMicro3c.png)| ![](./micr_3d/finalArrayMicro4c.png)|
-| :----:  | :----: |  :---: |:---: |:---: |
-| 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> -->
+
+|      |![](../micr_3d/finalArrayMicro1.png) |![](../micr_3d/finalArrayMicro2.png)|![](../micr_3d/finalArrayMicro3.png)|![](../micr_3d/finalArrayMicro4.png)|![](../micr_3d/finalArrayMicro5.png)|![](../micr_3d/finalArrayMicro6.png)|
+| :----:  | :----: |  :---: |:---: |:---: |:---: |:---: |
+| 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> -->
+
+|      | ![](../micr_3d/finalArrayMicro1c.png) | ![](../micr_3d/finalArrayMicro2c.png)| ![](../micr_3d/finalArrayMicro3c.png)| ![](../micr_3d/finalArrayMicro4c.png)|
+| :----:  | :----: |  :---: |:---: |:---: |
+| 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
+
+![](./../hca/hca_strut.gif)
+
+## 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*:
+
+![](./img/hca/neigh.png)
+
+*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)
    
 
 ---------------------