|
  |
  |
Layout Optimisation |
  |
  |
Once a desired surface geometry has been found, some sort of structural grid will be required to support it. There are many possible approaches to this problem. |
  |
  |
  |
Subdivision GridAn obvious solution is to use the subdivision mesh itself (triangles or quadrelaterals) to define a structural grid. Different levels of subdivision can greate grids of different density, and can be iteratively subdivided down to produce panels or members of the required size. |
![Low density sub-div mesh](div_level1.gif) |
![High density sub-div mesh](div_level2.gif) |
Alternatively, subsets of the subdivision-mesh can be included in the structural model, either based on geometric patterns or on some sort of tree-growth algorithm. Rather than simply deciding whether an edge becomes a structural member or not, the members sizes can be adjusted to give a hierarchy of primary and secondary structure. |
![Select members based on patterns](grid_selective.gif) |
![Select members based on algorithms](grid_tree.gif) |
Selective RemovalTo optimise this even further, the geometry can be automatically linked to a finite element analysis program and analysed for a given loadcase (such as selfweight). Members which are unstressed can be removed and a new analysis performed. By sequential deletion of under-utilised members the structure can converge on an optimum layout, with sufficent members present to support the load but no more. |
![Iterative removal of under-utilised members](robot_opt.gif) |
DrapingNew grids can be drawn in-plan and projected onto the limit surface, but this will only work for fairly flat surfaces. A more optimal solution from a construction point of view is to form a new mesh with fixed edge lengths but variable joint angles and 'draping' it over either the base mesh or the limit surface. |
![Grid draped over base-mesh](drape_faces.gif) |
![Grid draped over limit-surface](drape_limit.gif) |
By attaching the vertices to the surface (base mesh or limit surface) this optimisation can either aim to give equal memebr lengths or equal joint angles.. |
![Equalise Member Lengths](equal_lengths.gif) |
![Equalise Joint Angles](equal_angles.gif) |