C1.3 Cable-Nets

The COMPAS network class is ideally suited for representing simple discrete assemblies such as cable nets. These are prestressed structures which can resist external loads thanks to their geometric stiffness. The Block Research Group has employed lightweight cable nets in a flexible formwork system for a doubly-curved thin-shell concrete roof. The cable net together with a fabric shuttering serves as the formwork system for complex geometry, overcoming typical formwork problems for nonstandard geometry, such as high material, waste, cost and labour. The reference project HiLo is shown below.

For a simple starting geometry of a hypar cable net, we can generate a simple grid of nodes and edges:

# ==============================================================================
# create a network
# ==============================================================================

network = Network()

network.update_dna(is_anchor=False)
network.update_dna(rx=0, ry=0, rz=0)
network.update_dna(px=0, py=0, pz=0)
network.update_dea(q=1.0)

# use a nested for loop to generate a square grid
unit_len = 10
size = 6
edges = []
for i in range(size + 1):
    for j in range(size + 1):
        # add the xyz coordinates to nodes
        network.add_node(x=i * unit_len, y=j * unit_len, z=0)
        # index of the node
        index = i * (size + 1) + j
        # store horizontal edge node pairs
        if i != size:
            edges.append((index, index + size + 1))
        # store vertical edge node pairs
        if j != size:
            edges.append((index, index + 1))
# add edges from edge pair tuples
for u, v in edges:
    network.add_edge(u, v)

# move 2 corner nodes vertically
network.nodes_attribute('z', size * 5, [0, (size + 1) ** 2 - 1])
# anchor all corner nodes
for corner in network.nodes_where({'degree': 2}):
    network.node_attribute(corner, 'is_anchor', True)

Last updated