Despite the existence of various historic and computational methods to discretise shell surfaces, none of the approaches reviewed above meets all requirements for flexible, structurally informed tessellations of funicular shells. Most methods discussed focus on fully automated processes, leaving little flexibility for the user to actively control the design process of such tessellations. Therefore, our objective is to develop new computational strategies to explore tessellation designs for cut-stone vaults and discrete funicular structures in general, while taking into account structural requirements and fabrication constraints. Based on the review of historic stone masonry, these requirements were identified and translated into a set of simple geometric rules that can be summarised as follows:
-
Voussoirs should be aligned such that the load-transferring contact faces are as perpendicular as possible to the local force flow to prevent sliding failure.
-
The tessellation pattern should be staggered or similarly laid out to ensure an interlocking voussoir arrangement.
-
The size of voussoirs should be as uniform as possible over the entirety of the surface.
Applying these rules means controlling the layout and spacing of courses as well as the subdivision of each course into a certain number of voussoirs. The basic principle of these geometric operations and their interdependencies is illustrated in Fig. 4 by showing variations of tessellations for a circular and elliptical boundary. Figure 4a shows a basic tessellation of a circular dome by generating equally spaced rings as transverse cutting curves offset to the boundary. They are locally perpendicular to the force flow, defining the courses and hence the height of the voussoirs. A staggered tessellation is generated by dividing each ring into an equal number of parts and then connecting every second division point pair per course. This approach leads to a relatively large variation in the length of the voussoirs. Especially for structures with a larger number of courses, the approach results in infeasible voussoir dimensions towards the centre or support. Figure 4b shows a possible solution to avoid the small voussoirs in the two inner courses by connecting only every fourth point pair. The approach results in a structured tessellation but cannot be generally applied to complex shapes. Figure 4c shows the result of a more general approach, in which each course is individually divided based on a specific voussoir target length while aiming for a sufficient spacing between vertical joints of neighbouring courses and hence guaranteeing a staggered bond. Besides these approaches to keep the length of voussoirs as uniform as possible, additional strategies are necessary to keep the height of voussoirs within a specific range. For example, the elliptical transverse curves in Fig. 4d are unequally spaced to guarantee their local, perpendicular alignment to the force flow. This results from competing constraints, i.e., the heights of voussoirs cannot be uniform while enforcing their load-bearing contact faces to be normal to the local force direction. To accommodate the large gaps between the transverse curves along the major axis of the elliptical boundary, additional courses are locally added as shown in Fig. 4e.
Based on this analysis and the rules defined above, two alternative tessellation approaches for discrete funicular shells were developed and implemented as software tools using the programming language Python and the compas framework (Van Mele 2017). Both approaches will be discussed in the following subsections.
Tessellations Based on Triangular Meshes
The tessellation design process presented in this section is based on primal, triangular meshes and their dual counterparts. The discretisation approach uses triangular meshes to generate hexagon-dominant tessellations that inherently form a staggered bond. However, besides the staggered configuration, the stability of such hexagonal structures depends on the orientation and alignment of the tessellation based on the local force flow. For example, a closed, funicular dome structure, based on an isotropic, hexagon-dominant tessellation, continuously supported at its circular boundary, is not likely to collapse due to sliding failure (Fig. 5a).
Despite its arbitrarily oriented tessellation, any significant, local sliding of voussoirs is blocked by their neighbours, thanks to their mutually kinematically constraining configuration (Estrin et al. 2011; Tessmann 2013). In contrast, structures based on regular, hexagonal tessellations with openings and open edge arches (Fig. 5b), generally have no self-interlocking configuration. Voussoirs of the barrel vault shown might start sliding in the direction of least resistance, i.e., towards the closest “unsupported” edge arches, which results in a propagating collapse of the structure. In such a case, the friction angle between the local force vector and load transferring faces determines whether sliding occurs. The friction angle is defined as
$$ \tan \theta = \mu_{s} , $$
where \( \theta \) is the angle between the normal of the load-transferring face and the local force vector and \( \mu_{s} \) is the static coefficient of friction between the elements. For example, \( \mu_{s} \) for masonry is \( 0.6 - 0.7 \), which results in a friction angle of approximately \( 31^\circ - 35^\circ \). Consequently, hexagonal tessellation geometries need to be modified based on the force flow in the structure such that the angle between the normal of a load-transferring face and the local force vector is well below the given friction angle. The vault in Fig. 5c shows that an anisotropic, hexagonal tessellation, stretched in the direction perpendicular to the force flow, minimises this angle and thus the risk of sliding failure.
Extending the work of Botsch and Kobbelt (2004) on the isotropic remeshing of triangulated meshes, an anisotropic triangulation method was developed and implemented in a design framework for anisotropic, hexagon-dominant tessellation geometries. The fundamental idea of the presented approach is to locally control the distortion of a triangulated mesh based on the local force flow such that its dual mesh results in a structurally informed and fabrication-aware tessellation geometry. The flow diagram in Fig. 6 provides a visual overview of the successive steps of the approach, briefly introduced as follows:
-
(a)
A NURBS surface as initial input geometry represents the funicular shape. A sufficiently dense force vector field represents the flow of forces.
-
(b)
The user defines supported and unsupported boundaries.
-
(c)
The supported boundaries are divided based on a user-defined voussoir target length, and the unsupported boundaries are divided based on a user-defined voussoir target height.
-
(d)
Based on these division points on the defined boundaries, an initial mesh is generated using Delaunay triangulation.
-
(e)
Before the mesh is refined, target valencies are assigned to all boundary vertices.
-
(f)
The initially generated mesh is refined based on the input surface, the force vector field, the given target valencies and a user-defined height and length for the voussoirs.
-
(g)
Based on the refined mesh, a hexagon-dominant dual mesh is computed by connecting centroids of neighbouring triangles.
-
(h)
Post-processing procedures are applied to complete the dual mesh by adding special faces along the boundaries. Mesh-smoothing techniques can optionally be used to improve the size uniformity of faces in the resulting dual mesh.
The vector field representing the force flow can be obtained by analysing the local principle strain of an input surface assuming the structural behaviour of a continuous shell (Schiftner and Balzer 2010), directly from a Thrust Network Analysis (TNA) form-finding process (Block et al. 2014) or from using a geometric approach based on structural heuristics (Panozzo et al. 2013). The other operations in steps (a)–(d) of the tessellation design process are straightforward and will not be discussed in this paper.
The target valencies defined for the initial mesh in Fig. 6e play an important role for its refinement. This refinement process, which will be discussed in detail below, optimises the topology of the initial mesh by minimising its valency error. The valency error is the absolute difference between the target valencies and the actual valencies for all vertices. For example, the target valencies for an isotropic, triangular mesh is 6 for internal vertices and 2–5 for boundary vertices depending on their inner corner angle (Tam and Armstrong 1991). The initial Delaunay mesh in Fig. 7a results from the division points along the unsupported boundaries (left/right) and the fixed (supported) boundaries (top/bottom). Based on the general definition of vertex valencies, the initial mesh and the unidirectional force vector field, a refined anisotropic mesh is computed (Fig. 7b). The resulting triangulation and its dual, hexagon-dominant mesh are stretched perpendicular to the force vector field. However, the alignment and staggered configuration of the tessellation (dual mesh) are not ideal due to the poor interlocking of the elements along unsupported edges. To avoid this, we use an alternative set of target valencies, as shown in Fig. 7c. The vertices on support boundaries and boundary corners are defined as before, whereas the valencies of vertices along unsupported boundaries are alternatingly assigned to three and five. This specific valency assignment results in more suitable tessellation geometries with better interlocking properties along the unsupported boundaries. Note that the assigned target valencies can differ from the actual valencies of the refined and optimised mesh.
After the initial mesh has been computed and the valencies for the boundary vertices set, the mesh refinement process starts. The remeshing algorithm used for this research extends the work of Botsch and Kobbelt (2004) to facilitate the generation of anisotropic meshes based on a local force vector field. The iterative algorithm uses three simple mesh operations commonly used in triangular mesh optimisation: collapsing an edge to a point, splitting an edge by inserting a new vertex and two adjacent edges, and swapping an existing edge (Hoppe et al. 1993). Using the thrust surface, the force vector field, the initial coarse mesh, the target voussoir width \( w \) and the target voussoir height \( h \), the following steps are performed:
-
1.
Split all mesh edges that are longer than 4/3 \( l_{t} \) at their midpoint. As described later, \( l_{t} \) is the determined, local target length based on \( w \), \( h \) and the angle between the edge and the interpolated, local force vector.
-
2.
Collapse all edges shorter than 4/5 \( l_{t} \) to their midpoint.
-
3.
Flip edges in order to minimize the deviation from valency 6 or the predefined valency for boundary vertices.
-
4.
Relocate vertices on the surface by directional smoothing based on \( l_{t} \).
These steps are repeated until the mesh topology no longer changes for several iterations or until a defined number of iterations is reached.
Whether an edge is split or collapsed throughout the iteration steps depends on the difference between its local target length \( l_{t} \) and its actual length \( l \). Note that \( l_{t} \) ranges between the target voussoir width \( w \) (Fig. 8b) and the target voussoir height \( h \) (Fig. 8e) based on the angle between the corresponding edge and the local, interpolated force vector at its midpoint. The simple examples in Fig. 8 illustrate how the length of a particular edge changes when altering the global direction of the force field. Figure 8a shows a regular mesh containing six equilateral triangles and its central dual polygon, representing the hexagonal voussoir outline. This configuration is isotropic and all edges have the same length. The meshes in Figs. 8b–e are stretched perpendicular to the unidirectional vector fields using anisotropic scaling.
The two mutually perpendicular scaling axes are aligned with the force vectors. For such transformations, the independent scaling factors \( x \) and \( y \) for a particular edge are
$$ x = m \left( {\frac{1}{2} \left( { - w - h} \right) + w} \right) + \frac{w + h}{2} , {\text{and}} $$
$$ y = m \left( {\frac{1}{2} \left( { - w - h} \right) + h} \right) + \frac{w + h}{2} , and $$
where \( m \) is the interpolated force magnitude in the force vector field based on the midpoint of the edge. This normalised magnitude, ranging between \( 0 \) and \( 1 \), is not necessarily proportional to the actual forces in the structure, but can be actively defined to locally control the intensity of the anisotropic scaling. This makes it possible to have uniform, non-stretched faces (Fig. 8a) in areas where no directional constraint can be applied, for example, at and close to singularities (Schiftner and Balzer 2010). For the presented method, the two scaling factors \( x \) and \( y \) are identical for regions where \( m = 0 \). With \( x \) and \( y \) defined, the local target length for an edge is:
$$ l_{t} = \sqrt {\frac{{x^{2} y^{2} }}{{x^{2} \left( {{\hat{\mathbf{e}}} \cdot {\hat{\mathbf{f}}}} \right)^{2} + y^{2} \left( {1 - \left( {{\hat{\mathbf{e}}} \cdot {\hat{\mathbf{f}}}} \right)^{2} } \right)}}} $$
where \( {\hat{\mathbf{e}}} \) is the normalised direction vector of the edge and \( {\hat{\mathbf{f}}} \) is the normalised force vector at its midpoint based on the local force flow. Note that \( l_{t} \) is the radius of an ellipse with the semi-major (x) and semi-minor axis (y) at a specific angle based on \( {\hat{\mathbf{e}}} \) and \( {\hat{\mathbf{f}}} \) (Fig. 8). These target lengths are only computed for non-boundary edges and determine if an internal edge needs to be split or collapsed. For edges adjacent to exactly one vertex with a defined valency of 3 on an unsupported boundary, a special target length \( 1/2 l_{t} \) is applied to meet the geometric requirements of the staggered topology along open edge arches (Fig. 7c). Whether an edge is swapped depends on the valencies of the vertices of both its adjacent triangles (swapping is not allowed on boundary edges). An edge is swapped if its updated orientation would result in a lower valency error for these four vertices.
To allow this mesh refinement process to converge and avoid oscillation effects, the vertices need to be redistributed in each iteration. This relaxation process is performed on the input surface and based on the computed edge target lengths using directional smoothing.
Figure 9 shows this tessellation method applied to two irregular thrust surfaces to structurally improve their tessellation patterns according to the presented geometric rules. All interior edges with a deviation angle \( < 30^\circ \) (based on \( \mu_{s} \approx 0.6 \) for masonry) with respect to the ideal local orientation (perpendicular to the local force flow) are highlighted. Comparing these results with isotropic, non-directed tessellations for the same vaulted shape shows that the total edge length of edges below the defined deviation angles can be increases by \( \sim 65 {\text{\% }} \) when using the presented anisotropic remeshing method, i.e., the risk of sliding failure can be reduced significantly. The method requires little manual modelling and makes it relatively easy for less experienced designers to generate structurally informed tessellation geometries.
Tessellations Based on Transverse Cutting Curves
Applying the method described in “Tessellations Based on Triangular Meshes” on various thrust surfaces revealed that a more controlled tessellation design process is often desirable and led to the development of an alternative tessellation approach. This user-driven procedural method allows controlling the layout of courses and thus the arrangement of voussoirs. The flow diagram in Fig. 10 provides a visual overview of the steps of the method, which can be summarised as follows:
-
(a)
The initial input geometry is the funicular shape represented as NURBS surface. A sufficiently dense force vector field represents the force flow.
-
(b)
Based on the force vector field, the user defines triangular or rectangular regions on the thrust surface. These regions serve as controllable patches to facilitate the subsequent discretisation of complex surfaces with multiple singularities (e.g., at global and local minima and maxima, and saddle points).
-
(c)
Based on a user-defined voussoir target height, the patch boundaries aligned parallel to the local force flow are divided, determining local start and end points to generate the transverse cutting curves (step d) of the respective patches.
-
(d)
The transverse cutting curves are generated on the surface based on the defined division points per patch and the force vector field. The transverse curves define voussoir joints orientated as perpendicular as possible to the local force flow.
-
(e)
Each seed curve lying in between two neighbouring transverse curves is divided based on a specified voussoir length to define the location of equally spaced joint lines. These lines are aligned parallel to the local force flow and define joints between voussoirs in the same course. All joint lines are used to establish an initial starting topology representing the tessellation.
-
(f)
The starting topology can be modified manually.
-
(g)
A balanced staggering is enforced through an automated procedure that maximises the distance between joints of neighbouring courses. The resulting tessellation geometry can be visually and numerically checked by the designer and optionally refined by simply going back to step (f). For changes concerning the dimension of the voussoir, the tessellation process needs to be repeated starting from step (c) or (e).
-
(h)
Post-processing routines can be applied to modify the geometry of faces such that they, for example, have convex boundaries to facilitate certain fabrication techniques.
The initial vector field on the given thrust surface is obtained as previously discussed in “Tessellations Based on Triangular Meshes”. The regions defining the course layout are based on structurally-informed block decomposition techniques (Oval et al. 2017) or simply drawn manually by the user.
The layout of the transverse cutting curves based on the boundary curves between neighbouring regions is shown in Fig. 11.
Figure 11 shows two surface patches containing three patch curves parallel (a, b, c) and four curves perpendicular (d, e, f, g) to the local force flow. All curves parallel to the force flow are divided based on their individual geodesic length and a defined voussoir target height, resulting in three sets of division points A, B, C. Due to the elliptical shape, the division number is different for curves a and b, making it necessary to “fork” transverse cutting curves. Figure 11b shows a simplified connectivity graph, illustrating the transition between two patch curves with different numbers of divisions points. The connectivity is computed using a shortest-path algorithm. The interpolated seed curves (grey), which are used in a later step to generate equally spaced joint lines for a staggered voussoir bond, and the transverse curves (black) are alternately generated, requiring the doubling of the number of divisions per patch curve. Based on the computed connectivity, transverse curves are generated per patch using an optimisation method (Rippmann 2016) to ensure their local alignment perpendicular to the vector field. The dotted transverse curves in Fig. 11 represent alternative curves, which can be generated by simply moving their input points along the corresponding patch curves. The distance and direction of the respective point displacement can be parametrically defined by the user in order to control the resulting transverse curves, resulting in the shape of the corresponding voussoir courses (Fig. 12). The resulting tessellation variations have different consequences regarding fabrication and can be freely adjusted to match the requirements of a particular project.
To form a stable, three-dimensional structural surface, an interlocking, staggered voussoir arrangement is necessary. This is achieved by avoiding alignment of side joints of voussoirs in any course to side joints in the course below. Ideally, a voussoir should overlap its neighbours by half of its length. However, this ideal configuration is not generally possible for tessellation geometries applied to doubly curved surfaces, while simultaneously guaranteeing voussoirs of equal lengths, as discussed previously (see Fig. 4). An automated approach was developed to maximise the distance between joints of neighbouring courses, while minimising the difference in length among all voussoirs. For this approach, an initial topology of the tessellation is generated based on the defined voussoir target length to generate equally spaced vertical joint edges. Special alternating division start points are assigned for neighbouring courses perpendicular to openings to guarantee an initial staggered topology along all unsupported edge arches. All parallel joint edges together with the transverse curves form a tessellation mesh topology that is hexagon-dominant to facilitate a staggered pattern. However, the joint edges are poorly distributed, which results in insufficiently overlapping voussoirs, demanding an additional procedure to optimise the staggered bond. The steps of this iterative procedure are shown in Fig. 13 and briefly introduced here:
-
(a)
The initial configuration and starting topology for a tessellation mesh is generated using the previously discussed method. The vertices \( \{ \varvec{v}_{1} , \ldots \varvec{ },\varvec{ }{\mathbf{v}}_{n} \} \) are constrained to their corresponding transverse curves, which function as guide curves. The three, exemplary vertices \( {\mathbf{v}}_{i} \), \( {\mathbf{v}}_{j} \) and \( {\mathbf{v}}_{k} \) are used throughout the subsequent steps and highlighted in Fig. 13.
-
(b)
The location of all non-boundary vertices is optimised such that the spacing of joint edges of neighbouring courses is maximised. For example, the position of vertex \( {\mathbf{v}}_{j} \) is updated to the projected centroid of its adjacent vertices \( {\mathbf{v}}_{i} \) and \( {\mathbf{v}}_{k} \) on the same guide curve.
-
(c)
The lengths of edges connecting vertices on the same guide curve are bound to a minimum of a third of the voussoir target length and to a maximum of half of the voussoir target length. For example, after performing step (b), the distance between \( {\mathbf{v}}_{i} \) and \( {\mathbf{v}}_{j} \) falls below the defined minimum. Consequently, both vertices are spaced further apart on the guide curve, aiming for a distance that exceeds the allowed minimum. This process is performed simultaneously for all edges exceeding or falling below the defined length bounds.
-
(d)
Joint edges connecting two neighbouring transverse curves shall be parallel to the local force flow, i.e., corresponding edges must be as perpendicular as possible to both transverse curves. This is guaranteed by projecting their midpoints on both transverse curves. Subsequently, the coordinates of the end vertices of these edges are updated based on the projected midpoints.
Steps (b) to (d) are repeated, using a time step \( t \), until the magnitudes of all residuals \( \forall \left( i \right) \in \left\{ {1, \ldots , n} \right\}, {\mathbf{v}}_{i}^{t} - {\mathbf{v}}_{i}^{t - 1} = {\mathbf{r}}_{i} \) fall below a defined threshold value.
Using this method, the voussoirs of neighbouring courses overlap by at least a third of their lengths and their overall dimensions remain relatively uniform. In the example shown in Fig. 13, the number of vertices of one face deviates from the ideal of six vertices per face, i.e., the voussoir overlaps not just two but three neighbouring voussoirs. These required irregularities in the pattern explain why the lengths of edges connecting vertices of the same transverse curve are bound to a minimum of a third of the voussoir target length.
The method has been tested through numerous tessellation designs for various thrust surfaces. Four test shapes with corresponding discretisation layouts are shown in Fig. 14. The resulting patterns are smoothly distributed and comply with the defined structural requirements. Figure 15 shows the exploration of a series of patterns, demonstrating the flexible control of the tessellation design by changing various input parameters.