Posts Tagged ‘visual basic’


A perforated concrete facade with randomly positioned openings wraps the skeleton of the Piraeus Tower. The homogenous texture of openings breaks with the strong verticality of the skeleton and introduces a notion of mass, pronouncing the strong presence of the tower at Piraeus port.

The openings are occupied by three different types of windows:
Type A: A simple window
Type B: A box-type window consisting of a simple window in combination with a exterior glass panel. This window type operates as a natural ventilation device. The hot air in the buffer zone rises and evacuates air from the interior spaces.
Type C: A balcony between a recessed window and exterior glass panels. The balconies create natural ventilation as well, but only if several of them are stacked on top of each other forming a vertical shaft.

Each opening is assigned a window type according to the three main environmental parameters: Noise, sun and wind. The data describing these parameters is translated into image maps. Using the RGB additive color model, all information can be condensed into to a single image.

The window types are assigned as described in the last post:

A script evaluates the parameters for each window position. A lot of noise or wind demands a box-type window that offers more protection than just a simple one. Where the sun intensity gets more important than noise pollution or wind forces, a simple window is preferred because it diminishes the danger of overheating the interior as there is no heat radiation from a heated thermal buffer space. The balconies are only placed in areas without strong noise so that they always offer a calm recreation space. Once the window types are assigned, there’s a recursive function that analyses the stacking of the balconies that is required to contribute to the natural ventilation of the building. Only stacks of at least three balconies are admitted. The remaining balconies are reassigned and become openings of type A or B.
Then an other script places the exterior glass panels in front of the balconies. These glass panels have their own rhythm that is independent from the rhythm of the openings. The glass screen becomes an autonomous layer added to the perforated concrete facade. These two facade layers are working together and against each other at the same time. The resulting panel pattern gets analyzed and recursively modified within the script: Where there are columns of at least six panels on top of each other, the proportions of the thermal buffer required to produce a chimney effect allow an increasing depth of the balconies.

A heatmap illustrates the ventilation covering of each floor by analyzing the distances to the next ventilating window. This feedback allows to detect problematic zones with a lack of ventilation. In turn, parameters can be changed in order to achieve a satisfying result (red area limited to the core of the tower).

The south eastern facade turned out to be the most delicate in terms of ventilation covering due to it’s high percentage of type A windows. That’s why the fire escape stairs are located at this facade. The shaft of the stairs operates, like the stacked balconies, as a climatic device contributing to natural ventilation. The path of the stairs is defined a script within the engine: The stairs avoid balconies and cover the areas on the facade that are the least ventilated. It introduces a fourth window type, the stairs type, that fills the ‘gaps’ on the south eastern facade.

Further possible reactions to an unsatisfying heatmap feedback are relaunching the initial random window repartition, changing the number or the dimensions of the openings or change the ratio between small and large openings. The latter is usually set around fifty-fifty in order to create the typical facade image of the stacked balconies creating stepped shafts.

The plinth with it’s regular window interval is wrapped with glass panels as well. These glass panels are placed by a random based engine that takes in count three layers of information contained in a single gradient map (curtain effect gradient, noise protection, passage openings). A script places the panels by evaluating the map to calculate chance of a panel being placed for each possible panel position.

All these steps lead to the following facade proposal. The stacked balconies create a distinct drawing on the facade of the Piraeus Tower and turn it into an iconic landmark.

The concrete facade is made out of precast insulated elements, which are attached to the existing slabs. The exterior glass panels are hold in place by articulated metal beams that make the transition from the rhythm of the concrete facade to the rhythm of the glass panels. These beams penetrate the concrete facade and are fixed to the existing slabs as well. A cross bracing that allows to absorb the lateral forces is achieved by polygonal beams that follow the contour of the balconies joining the cantilevered beams.

Grasshopper canvas

Grasshopper screen shot

Grasshopper file
Pin up pdf A0 1
Pin up pdf A0 2

1:10 partial model

final deformable skin

The following post has to be seen as a continuation and completion of the overall process and especially of the last post. Its content doesn’t represent the intire project but has to bee seen in the context of the previous ones.

At the port of Piraeus this tower rises on a very prominent site with a vital surrounding. To resolve the problem of the sleeping giant, this project proposal suggests a deformable skin which creates interactions on different levels between the Piraeus Tower and its context.
Taking the current structure as starting point, surrounding urban hotspots attract parts of the façade to reconfigure. These occurring deformations provoke synergies with the surrounding which allow new happenings and revaluate the whole area.
At one side the skin stretches to provide a roof for the market and its lively atmosphere penetrates the ground floor. On another side the skin allows building a pedestrian bridge across the busy road and creates a stronger relation to the waterfront and the port.
On the plinth the structure covers an open space and grows then upward approximately following the existing structure until it detaches again from the existing to end the tower at its top.
The new stairway climbs up and changes the skin as well. The parametrical creation of the structure which follows the form of the deformable skin undertakes several steps of adaption and optimisation to suit its structural and programmatical needs.
The deformable skin starts its life as a new appearance at the port of Piraeus whose tubular steel structure interacts with its surrounding. The facets are empty or faced with aluminum frames holding different infill panels which will changed over time. The so called “sleeping giant” gets lively and looses its name when people start to occupy the empty space. As the stairway will serve all the stories from the beginning on, the occupants can choose their level as they wish.


REPRESENTATION in drawings and renderings

visualisation of the market penetrating the Piraeus Tower

visualisation of an interior conected to the staircase

visualisation of the tower in the urban cotext

the following drawing shows the different materialities and how they’re connected with each other

During the final week I was building a model at a 1:5 scale which shows the different aspects of my project. the new structure is attached to the existing and is attracted to the outside to cover and hold the new staircase. The tubular structure and its joints are shown in an abstraction using wooden components.

GH-file creating the structure in lines
GH-file translating the lines into tubes and adding joints
PDF of the presentation

deformable skin

Considering the project state from the last crit as form finding process, the aim for this crit was to optimize its structure. Several analysis show the strucutre’s weaknesses and strengths. One issue was the maximum span of my structural members and another one consists in the curvature analysis of the deformed surface.

To deal with this optimization idea I first did a quick research in general optimization strategies. Taking them rather as general inputs then as actual algorithms, I came up with my own strategy. The point grid from the form finding process generates several more or less horizontal curves which I first subdivide into segments with the same lenght, which gives a polyline as output. The length can be chosen and in addition there is an option to change the resolution of the polyline following the curve. When the curve’s curvature is higher than a certain value the structural length at that point is only equal the half of the other lengths. The subdivision starts at a given point which consists in the curve’s closest point to the stair attractor and ends by keeping a cerain cap to the starting point.
After the creation of these “horizontal” polylines the neighbours are linked at each point with the two minimal distances. These new “vertical” structural members sometimes have a way too long span to be taken as valuable output. For that reason another subdivision process runs through all of them and subdivides each element taking in account the input value as maximal length. These subdivision points are again linked between each other and sometimes supported by columns standing on the plinth.
Another process at the end consists in bringing the forces down to the ground at certain points.


To be sure about the homogeneity of the lengths I ran again an analysis of the structural length.
Image showing the length analysis before the “vertical” analysis:

And after all the optimization processes all is green:

Finally there are a few special moments in the structure. The first consists in the stair leading up to the dissolving top where the structure gives bigger openings at certain points and looks more dynamic.

The pedestrian bridge is suspended from the structure and crosses the road which today separats the port from the tower.

The columns which support the structure above the plinth create a possibility for a public space or restaurant’s outdoor space covered by steel tubes.

As the Piraeus Tower has quite big dimensions, there are many structural joints which hold up the new deformable skin and fix it to the existing concrete structure. But not all joints connect the same number of tubes and all of them come in with a different angle. To deal with this changes and having one system for all the tower the joints have to be adaptive and able to react to each situation. The following joint allows up to seven tubes coming in and each of them can be adapted with two rotation axis. Two steel plates hold the members together and have to be squeezed together. Where the structure is attached to the existing concrete the squeezing is done by the consoles, otherwise a simple screw can fix the joint.

Overview of the structure in elevations and plan:

heat map and VB question

I’ve two questions concerning representation and response for the curvature analysis.
First I was trying to create some heatmapping for the curvature representation. Actually it works pretty well, but there are some strange things which are wrong! Sometimes it just makes things red when they should be green – such as more or less straight parts of the curves as you can see in the next image (especially the third and nineth curve counted starting from the top).

The next question is concerning my VB-script: I’m creating an engine which subdivides a curve into pieces of the same length. When the curvature is too high, the resolution increases and the subdivision happens with half of the initial lenght. For better understanding have a look at the folw-chart.

Now to the problem: Actually this engine worked very well with any curve I was drawing, but somehow it gives a big mess by applying to curves of my project… I think it just hates my project!
Anyhow, I was looking for an error very long and I thought you might see something which is done in a bad or too complicated way.

See the first image which works on a “freehand drawn” curve:

And the one applied to one of my tower’s curve:

Here you find the GH-file and it’s VB-code and the corresponding rhino file.

strucural optimisation

Taking my research on structural optimisation as a base for the further development of my project for the Piraeus Tower I’d like to show here my intentions. As I researched, there are plenty of different ways of optimising. Some of them are way to advanced and some others go in another direction, but taking them as inspiration and resources I’ve come up with two directions I’d like go. It doesn’t have to be one OR the other but the goal consists in combining them. Taking the point grid from the deformable skin as starting point, I run a first optimisation which uniforms the distribution of points. The aim is to get a point grid where each point is the location of a structural joint and the points are always within a min and max distance to their neighbours.
After the uniforming process the curvature of the skin is analysed in both horizontal and vertical section. When a high curvature occures (which means location where a lot of forces act) the number of points is increased to get a denser structure.

The following flow chart summarises my intention for the whole optimisation process:

As alrady introduced, the first step will be an uniforming process. The aim is to have a recursive optimisation after the point grid is created. The reason for doing that is the standardisation of the structural members. So far some steel tubes were way too long, so that the structure would simply be impossible. While uniforming the point grid I hope to be able to keep the input shape of the point grid and get as an output a more realistic structure with elements of only a small range of lengths.

A first sketch of how I’d like to realize this:

The input will be a tree structured point collection (as I used it so far). Each branch containing the same amount of points with more or less the same Z-coordinate. To allow a recursive function I’ll try to use a VB-component within GH which runs several times. Always analysing the most recent point collection until all the structural member lengths are in a given range.
The main challange will be to be able to access the right points with its neighbours while keep the point organization over the optimasing process. Then to check the neighbouring distances and decide what to do: nothing, moving a neighbour or adding a point when moving would be not effective enough.

The output of the uniforming process will be a very uniform point grid. Given that the shape of the deformable skin won’t be that uniform a structural adaption will be necessery. With adaption I mean a differenciation of structural density depending on the skin’s curfature. The idea is, to take the point grid from the structural optimisation and add points where a high curvature occures.

A first sketch of how I’d like to realize this:

I think the “easiest” way of doing this, will be again a recursive function which compares points, with again more or less the same Z-coordinate, with the curve’s curvature on which they are located. when the curvature at a certain location is higher than a given value the engine adds a point between two neighbours.
As this will only solve structural issues on a more or less horizontal level, it would be good to do the same in the vertical section. For this I’d have to reorganise the point collection tree, to get the curvatures in the section and then run the script from the horizontal adaptive subdivision again for the vertical part.

Of course the best way would be to take directly the surface’s curvature instead the one of some random curves. But I’ve no idea how I could achieve that… Another concern is the structural advantage of this step. It’s my intention, that the highest forces on the skin occure where the curvature is high. I’ll try to check this with an civil engineer and then revise this point.

So I guess now I shoud start writing some scripts…

Collecting Data

I was looking at standard solutions for facades with two layers of glazing and their properties.
Source: CIimaDesign, Lösungen für Gebäude, die mit weniger Technik mehr können, Callwey Verlag, München, 2005,

Box-type window:
- Good acoustic isolation
- Typical use: Sites with strong winds and a lot of noise
- Thermal aspect: Overheating between the glass panes

Exterior panel:
- Limited acoustic isolation
- Typical use: Sites with medium winds and medium noise exposure
- Thermal aspect: Little overheating between the glass panes

Corridor facade:
- Good acoustic isolation
- Typical use: Sites with strong winds and high exposure
- Thermal aspect: Overheating between the glass panes

Box-type window:
-  Good acoustic isolation
- Typical use: Sites with strong winds and a lot of noise
- Thermal aspect: Overheating between the glass panes

The study of these example shows that wind, noise and the sun are the main criteria that influence the choice of a facade system. So I analyzed  the three factors on the site of the Piraeus Tower.




The three layers of information (wind – cyan, noise – magenta, sun – yellow) can be added to a single image map in CMY color code so that every pixel contains a value between 0 and 100 for each of the three main criteria.

Furthermore I was looking at different ventilation concepts. The evacuation of air trough the facade is very efficient in combination with supply air being brought in by conduits. (up to 5h-1 air renewal)

Looking at my window configurations it becomes clear, that the standard box-type window s operate as ventilation units individually. The exterior panels on the other hand produce a ventilation effect in certain configurations only. First the  space between the two layers of glazing has to be closed downwards. So that the hot air that rises evacuates air from the building and is not just being replaced by other outside air. Secondly the effect gets stronger the higher the ‘chimney’ ,  meaning the more balconies are stacked on top of each other.

I wrote a VB component that detects the possible locations of such stacked balconies.

Grasshopper file screen shots:
All possible balcony locations, at least two balconies on top of each other
at least three balconies on top of each other, at least four balconies on top of each other

attractor geometry

To understand better, how my attractor geometry works I’ve produced some images and schemata explaining the different parts of the GH-algorithm.

As I take the existing structure as starting point I introduced its geometry into Grasshopper. The two distinct volumes are drawn separately, as this improves the variability for the further use. Each box is explodet in its six faces which then are subdivided with sliders in both vertical and horizontal direction. The lowest points of the tower volume are eliminated for a smoother deformable skin on the transition from the tower to the plinth. After the subdivisions, all the points are merged together and organized in a way that they can be moved afterwards.

The next step consists in moving the points where they are attracted by an attractor. There are three possible attractor geometries: points, curves and surfaces. For the deformable skin I only used the first two of them, which I’ll explaine here. (A surface as attractor would act the same way as the curves do.)
The moving part is done entirely in a short VB-script. All attractor points are directly put into this component, the curves go first through a curve closest points component and all closest points farther away than the influence radius are culled with a pattern. In addition to all these points there are 5 more inputs: influence radius and force for curve and points and the pointgrid from above. First the curve changes the point grid and then the point geometries refine the deformation.

The influence radius determines which points from the starting point grid are attracted and the force how strong they are moved towards the attractor. Actually the force works as a sort of dumper for the whole attraction.

This VB-script I applied several times, as much as there are urban hotspots. After all deformation happened, the points are taken as curve controlpoints. The organizing of the point collection before moving them allows to have curves going more or less horizontal around the volumes. Of course there are as many curves as there are vertical subdivisions in the beginning – both together from the plinth and the tower (minus the lowest as mentioned above). These curves are again organized in a certain way and then lofted to the final deformed skin.
The following illustrations visualize the different deformations and how they are produced.






A short overview of the whole GH-canvas

So far the application of a structural solution is produced in a seperate script. But i think it would be better to include this step as well in the deformation part.

linking the layers


Facade in prefabricated concrete elements:
- 2 layers of concrete (5cm each) with insulation in between hold together by reinforcement
- Attached to the slabs with a metal juncture: one part screwed onto the slab, the other part cast in the concrete element and then clipped to the first part

Two layers of glazing:
-Interior glazing: actual weather barrier, can be opened
-Exterior glazing: glass pane mounted with a gap between the pane and the concrete
-The exterior layer reflects a important part of the sunlight and serves as sun protection.
-The increase of temperature between the two layers of glazing produces an natural ventilation effect.

Glass panels:
-The exterior glazing can become larger and be placed on the exterior of the concrete facade forming a grid of panels.
-These panels can take a distance to the facade that allows a balcony in between.
-The panels are fixed 4-armed with metal beams attached to the slab and reinforced with a DuPont Sentryglass interlayer to increase their performance.

-The panels might change their materiality: Opaque elements as sun protection or photo voltaic panels.


The openings in the concrete facade are still placed by an algorithm that chooses a random position and one of four sizes for each window. The higher the floor, the more probable to get a large opening. These random  openings however stay in a rigid grid. This grid allows a compatibility with the layer of  glass panels, that sticks to the same grid. The algorithm also defines the location of balconies (at the moment the balcony positions correspond to first defined windows of type L). These balconies are used as starting points for the DLA algorithm that defines the placement of the glass panels.There are 3 types of panels: panels close to the concrete facade, panels distant enough to wrap a balcony and a third type in between. The panels that were first created by the algorithm are the most distant to the concrete facade. The spreading panels produce a distinctive image linking the different balconies.

Furthermore I added two new options to the VB function:
-You can choose if the algorithm works in 8 or in 4 directions (if panels the touch each other only at a corner are considered neighbors)
-Number of neighbors needed to stop the panel from moving (1 or 2)

These options allow to get a denser repartition of the panels with less branches.

GH screenshot

GH canvas

gh definition
vb code for perforated facade
vb code for panels

research on attractor geometry and possible forms

Seeking for solutions for my project I tried to look for different possibilities for several aspects of my current state.

  • different attractor geometries using a GH definition -> what happens if the attractor would be a line, curve or even a surface and not only a point as it has been so far?
  • different sizes of the facetting -> larger triangles would need another (smaller) structure for filling up the surfaces, but smaller facetting might need a supporting structure. Both possibilities would be possible, but they need different kinds of detailing and would give a different appereance of the tower
  • analyzing some possible forms I can produce, using the current GH definition

In general I’m inclined to go for the smaller facetting because it gives a smoother appereance and consists in only one structure all over the facade instead of having a main structure and then a kind of filling structure. To avoid a supporting structure for the small facettes, I’ll try to “touch” the existing structure as often as required.
The different attractor geometries – I analysed in a seperate GH file – have to be developed to be used within my project. Concerning the final overall form of the facade, I think I leave this at this point for a while and come back to it, when I know more precisely what I want and for which reasons.

DLA: pattern becomes structure

I modified the 3D DLA VB component in order to get a list of lines between each new point and it’s neighbour. The starting poins lies on the xy-plane. Every new point is positionned one level higher in z-direction than his neighbouring point, once it has found one. That means every branch is growing upwards.

Animation of the growth

GH definition
VB component