compas_tna.equilibrium

Horizontal

Algorithms related to horizontal equilibrium of the form diagram and thus of the corresponding thrust network.

Horizontal equilibrium is established when the form and force diagram are reciprocal. Two diagrams are said to be reciprocal if they are each other’s dual and if all corresponding edges are at any specific constant angle.

Note that for legibility, the form and force diagrams in compas_tna are drawn such that corresponding edges of reciprocal diagrams are perpendicular. However, the diagrams are made reciprocal by parallelising the corresponding edges. The diagrams are thus rotated by 90 degrees and back at the beginning and end of each of the horizontal equilibrium algorithms.

horizontal_nodal

Compute horizontal equilibrium using a node-per-node approach.

horizontal_numpy

Compute horizontal equilibrium.

horizontal_nodal_numpy

Compute horizontal equilibrium using a node-per-node approach.

Proxies

The _numpy variants of the above functions can be used directly in Rhino using an RPC server proxy.

Note that whenever the original algorithm expects a diagram instance as parameter, the corresponding proxy function will expect the data representing that diagram instead. The data representing the diagram is stored in the data attribute of the diagram.

>>> tna = Proxy('compas_tna.equilibrium')
>>> horizontal = tna.horizontal_nodal_numpy_proxy

Once the proxy is created, it can be used like an actual function with the same signature.

>>> formdata, forcedata = horizontal(form.data, force.data)
>>> form.data = formdata
>>> force.data = forcedata

horizontal_numpy_proxy

horizontal_nodal_numpy_proxy

Vertical

vertical_from_zmax

For the given form and force diagram, compute the scale of the force diagram for which the highest point of the thrust network is equal to a specified value.

vertical_from_q

Compute vertical equilibrium from the force densities of the independent edges.