Load-path optimisation of funicular networks


This paper describes the use of load-path optimisation for discrete, doubly curved, compression-only structures, represented by thrust networks. The load-path of a thrust network is defined as the sum of the internal forces in the edges multiplied by their lengths. The presented approach allows for the finding of the funicular solution for a network layout defined in plan, that has the lowest volume for the given boundary conditions. The compression-only thrust networks are constructed with Thrust Network Analysis by assigning force densities to the network’s independent edges. By defining a load-path function and deriving its associated gradient and Hessian functions, optimisation routines were used to find the optimum independent force densities that minimised the load-path function subject to compression-only constraints. A selection of example cases showed a dependence of the optimum load-path and force distribution on the network topology. Appropriate selection of the network pattern encouraged the flow of compression forces by avoiding long network edges with high force densities. A general, non-orthogonal network example showed that structures of high network indeterminacy can be investigated both directly for weight minimisation, and for the understanding of efficient thrust network patterns within the structure.

This is a preview of subscription content, access via your institution.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12
Fig. 13


  1. 1.

    De Wilde WP (2006) Conceptual design of lightweight structures: the role of morphological indicators and the structural index. High Perform Struct Mater III WIT Trans Built Environ 85:3–12

    Google Scholar 

  2. 2.

    Vandenbergh T, De Wilde WP, Latteur P, Verbeeck B, Ponsaert W, Van Steirteghem J (2006) Influence of stiffness constraints on optimal design of trusses using morphological indicators. High Performance Structures and Materials III. WIT Trans Built Environ 85:31–40

    Google Scholar 

  3. 3.

    Pyl L, Sitters CWM, De Wilde WP (2013) Design and optimization of roof trusses using morphological indicators. Adv Eng Softw 62–63:9–19

    Article  Google Scholar 

  4. 4.

    Mazurek A, Baker WF, Tort C (2011) Geometrical aspects of optimum truss like structures. Struct Multidisciplinary Optim 43(2):231–242

    Article  Google Scholar 

  5. 5.

    Baker WF, Beghini LL, Mazurek A, Carrion J, Beghini A (2013) Maxwells reciprocal diagrams and discrete Michell frames. Struct Multidisciplinary Optim 48(2):267–277

    MathSciNet  Article  Google Scholar 

  6. 6.

    Beghini LL, Carrion J, Beghini A, Mazurek A, Baker WF (2014) Structural optimization using graphic statics. Struct Multidisciplinary Optim 49(3):351–366

    Article  Google Scholar 

  7. 7.

    Maxwell JC (1864) On reciprocal figures and diagrams of forces. Philos Mag J Ser 4(27):250–261

    Google Scholar 

  8. 8.

    Baker WF, Beghini A, Mazurek A (2012) Applications of structural optimization in architectural design. In: 20th analysis and computation speciality conference, pp 257–266

  9. 9.

    Block P, Ochsendorf J (2007) Thrust network analysis: a new methodology for three-dimensional equilibrium. J Int Assoc Shell Spat Struct 48(3):167–173

    Google Scholar 

  10. 10.

    Block P (2009) Thrust network analysis: exploring three-dimensional equilibrium. PhD dissertation, Massachusetts Institute of Technology, Cambridge, USA

  11. 11.

    O’Dwyer DW (1999) Funicular analysis of masonry vaults. Comput Struct 73:187–197

    Article  MATH  Google Scholar 

  12. 12.

    Fraternali F (2010) A thrust network approach to the equilibrium problem of unreinforced masonry vaults via polyhedral stress functions. Mech Res Commun 37:198–204

    Article  MATH  Google Scholar 

  13. 13.

    Marmo F, Rosati L (2017) Reformulation and extension of the thrust network analysis. Comput Struct 182:104–118

    Article  Google Scholar 

  14. 14.

    Linkwitz K, Schek HJ (1971) Einige Bemerkungen zur Berechnung von vorgespannten Seilnetzkonstruktionen. Ingenieur Archiv 40:145–158

    Article  Google Scholar 

  15. 15.

    Schek HJ (1974) The force density method for form finding and computation of general networks. Comput Methods Appl Mech Eng 3:115–134

    ADS  MathSciNet  Article  Google Scholar 

  16. 16.

    Van Mele T, Rippmann M, Lachauer L, Block P (2012) Geometry-based understanding of structures. J Int Assoc Shell Spat Struct 53(2):285–295

    Google Scholar 

  17. 17.

    Block P, Lachauer L (2014) Three-dimensional funicular analysis of masonry vaults. Mech Res Commun 56:53–60

    Article  Google Scholar 

  18. 18.

    Van Mele T, Block P (2014) Algebraic graph statics. Comput Aided Des 53:104–116

    Article  Google Scholar 

  19. 19.

    Van der Walt S, Colbert C, Varoquaux G (2011) The NumPy array: a structure for efficient numerical computation. Comput Sci Eng 13:22–30

    Article  Google Scholar 

  20. 20.

    Jones E, Oliphant T, Peterson P, et al. (2001) SciPy: open source scientific tools for Python, (Online; accessed 2017-02-13)

  21. 21.

    Python Software Foundation. Python Language Reference, 2016. Version 3.5

  22. 22.

    Storn R, Price K (1997) Differential evolution—a simple and efficient heuristic for global optimization over continuous spaces. J Glob Optim 11(4):341–359

    MathSciNet  Article  MATH  Google Scholar 

  23. 23.

    Magnus JR, Neudecker H (1985) Matrix differential calculus with applications to simple, hadamard, and kronecker products. J Math Psychol 29(4):474–492

    MathSciNet  Article  MATH  Google Scholar 

Download references


The authors would like to acknowledge William Baker for presenting the load-path concept to the authors and for solving the optimal h / l ratio for the continuous parabola.

Author information



Corresponding author

Correspondence to A. Liew.



Gradient and Hessian derivation of the load-path function

To calculate the gradient and Hessian of the external load-path function in Eq. (31), the following common matrix calculus properties are used, which follow [23] Differential Calculus notation,

$$\begin{aligned} \frac{\mathrm {d}{\mathbf {A}}\mathbf {X}{\mathbf {B}}}{\mathrm {d}\mathbf {X}}= & {} {\mathbf {B}}^\mathrm {T}\otimes {\mathbf {A}} \end{aligned}$$
$$\begin{aligned} \frac{\mathrm {d}{\mathbf {A}}^{-1}}{\mathrm {d}{\mathbf {A}}}= & {} -({\mathbf {A}}^{-T}\otimes {\mathbf {A}}^{-1}), \end{aligned}$$

Note that this derivative is essentially a fourth-order tensor, whose generic component represents the derivative of the inverse of a matrix with respect to its matrix. Let matrix functions \(f:\mathbb {R}^{n\times k}\rightarrow \mathbf {R}^{m\times p}\text { and }g:\mathbb {R}^{n\times k}\rightarrow \mathbb {R}^{p\times q}\) then

$$\begin{aligned} \begin{aligned} \frac{\mathrm {d}f(\mathbf {X})\cdot g(\mathbf {X})}{\mathrm {d}\mathbf {X}}=(g(\mathbf {X})^{\mathrm {T}}\otimes \mathbf {I}_{\mathrm {m}})f'(\mathbf {X})+(\mathbf {I}_{\mathrm {q}}\otimes f(\mathbf {X}))g'(\mathbf {X}), \end{aligned} \end{aligned}$$

where \(\mathbf {I}_{\mathrm {m}}\) and \(\mathbf {I}_{\mathrm {q}}\) are the \(m\times m, q\times q\) identity matrices, and \(\otimes\) is the Kronecker matrix operator, defined as the complete multiplication between two matrices i.e. if \({\mathbf {A}}\) \((m\times n)\) and \({\mathbf {B}}\) \((p\times q)\) matrices, then \({\mathbf {A}}\otimes {\mathbf {B}}\) is an \((mp\times nq)\) matrix. Using the chain rule on the load-path function, Equation (31) gives

$$\begin{aligned} \frac{\mathrm {d}f(\mathbf {q}_{\mathrm {id}})}{\mathrm {d}\mathbf {q}_{\mathrm {id}}}=\frac{\mathrm {d}f(\mathbf {q}_{\mathrm {id}})}{\mathrm {d}\mathbf {Q}}\cdot \frac{\mathrm {d}\mathbf {Q}}{\mathrm {d}\mathbf {q}_{\mathrm {id}}} \end{aligned}$$

To find \(\frac{\mathrm {d}\mathbf {Q}}{\mathrm {d}\mathbf {q}_{\mathrm {id}}}\), notice that the diagonal matrix \(\mathbf {Q}\) can mathematically be written as a function of vector \(\mathbf {q}\) with

$$\begin{aligned} \mathbf {Q}=\sum _{i=1}^m\mathbf {E}_{\mathrm {i}}\mathbf {q}{\mathbf {e}}_{\mathrm {i}}^{\mathrm {T}}, \end{aligned}$$

where \(\mathbf {E}_{\mathrm {i}}\) is an \(m\times m\) matrix with all its entries zero except for identity in (ii), and \({\mathbf {e}}_{\mathrm {i}}\) is an \(m\times 1\) vector with identity on the \(i{\mathrm {th}}\) element and zero everywhere else. This derivative then becomes

$$\begin{aligned} \frac{\mathrm {d}\mathbf {Q}}{\mathrm {d}\mathbf {q}_{\mathrm {id}}}=&\frac{\mathrm {d}\sum _{i=1}^m\mathbf {E}_{\mathrm {i}}\mathbf {q}{\mathbf {e}}_{\mathrm {i}}^{\mathrm {T}}}{\mathrm {d}\mathbf {q}_{\mathrm {id}}}= \frac{\mathrm {d}\sum _{i=1}^m\mathbf {E}_{\mathrm {i}}{\mathbf {K}}\mathbf {q}_{\mathrm {id}}{\mathbf {e}}_{\mathrm {i}}^{\mathrm {T}}}{\mathrm {d}\mathbf {q}_{\mathrm {id}}}= \sum _1^m{\mathbf {e}}_{\mathrm {i}}\otimes \mathbf {E}_{\mathrm {i}}{\mathbf {K}} \end{aligned}$$
$$\begin{aligned} =&\sum _1^m\mathbf {I}_{m^2\times m}(m(i-1)+i,i){\mathbf {K}}={{\varvec{\Omega }}}{\mathbf {K}}, \end{aligned}$$

where the matrix \({{\varvec{\Omega }}}\) is constructed by adding unity in the aforementioned slots \(\forall i\), \(1\le i\le m\) of the \(m^2\times m\) matrix \(\mathbf {I}\).

Now the derivative \(\frac{\mathrm {d}f(\mathbf {q}_{\mathrm {id}})}{\mathrm {d}\mathbf {Q}}\) of Eq. (36) is

$$\begin{aligned} \frac{\mathrm {d}f(\mathbf {q}_{\mathrm {id}})}{\mathrm {d}\mathbf {Q}}=&-({\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}\otimes {\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}})({\mathbf {D}}_{\mathrm {i}}^{-1}\otimes {\mathbf {D}}_{\mathrm {i}}^{-1})({\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\otimes {\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}})+ \mathbf {x}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}\otimes \mathbf {x}^{\mathrm {T}}{\mathbf {C}}^{\mathrm {T}} \nonumber \\&+\mathbf {y}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}\otimes \mathbf {y}^{\mathrm {T}}{\mathbf {C}}^{\mathrm {T}} -\frac{\mathrm {d}\,{\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {D}}_{\mathrm {b}}\mathbf {z}_{\mathrm {b}}}{\mathrm {d}\,\mathbf {Q}} \nonumber \\ =&-{\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\otimes {\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}+ \mathbf {x}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}\otimes \mathbf {x}^{\mathrm {T}}{\mathbf {C}}^{\mathrm {T}} \nonumber \\&+ \mathbf {y}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}\otimes \mathbf {y}^{\mathrm {T}}{\mathbf {C}}^{\mathrm {T}} -\frac{\mathrm {d}{\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {D}}_{\mathrm {b}}\mathbf {z}_{\mathrm {b}}}{\mathrm {d}\mathbf {Q}} \end{aligned}$$

Note that the term \({\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {D}}_{\mathrm {b}}\) is a function of \(\mathbf {q}_{\mathrm {id}}\) if \({\mathbf {C}}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\) and is singular, i.e its spectral decomposition has a diagonal matrix with at least one zero diagonal element. The invariance of this term, in the case that \({\mathbf {C}}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\) is invertible, holds by

$$\begin{aligned} {\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}({\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\mathbf {Q}{\mathbf {C}}_{\mathrm {i}})^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\mathbf {Q}{\mathbf {C}}_{\mathbf {b}}\mathbf {z}_{\mathrm {b}} =\;&{\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}({\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\mathbf {Q}{\mathbf {C}}_{\mathrm {i}})^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\mathbf {Q}{\mathbf {C}}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}({\mathbf {C}}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}})^{-1}{\mathbf {C}}_{\mathrm {b}}\mathbf {z}_{\mathrm {b}} \nonumber \\ =\;&{\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}({\mathbf {C}}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}})^{-1}{\mathbf {C}}_{\mathrm {b}}\mathbf {z}_{\mathrm {b}}. \end{aligned}$$

Assuming that \({\mathbf {C}}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\) is not invertible, using Eq. (35c), the derivative of \({\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {D}}_{\mathrm {b}}\mathbf {z}_{\mathrm {b}}\) is then

$$\begin{aligned}&\frac{\mathrm {d}[{\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}({\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\mathbf {Q}{\mathbf {C}}_{\mathbf {i}})^{-1}]\cdot ({\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\mathbf {Q}{\mathbf {C}}_{\mathrm {b}}\mathbf {z}_{\mathrm {b}})}{\mathrm {d}\mathbf {Q}} \nonumber \\&\quad = -(\mathbf {z}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}\otimes \mathbf {I}_1)({\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\otimes {\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}) + (\mathbf {I}_1\otimes {\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1})(\mathbf {z}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}\otimes {\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}) \nonumber \\&\quad = -(\mathbf {z}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}})\otimes ({\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}) \nonumber + (\mathbf {z}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}})\otimes ({\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}) \nonumber \\&\quad = [\mathbf {z}_{\mathrm {b}}^{\mathrm {T}}({\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}-{\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}})]\otimes ({\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}). \end{aligned}$$


$$\begin{aligned} \frac{\mathrm {d}f(\mathbf {Q})}{\mathrm {d}\mathbf {Q}}=&-{\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\otimes {\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}} + \mathbf {x}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}\otimes \mathbf {x}^{\mathrm {T}}{\mathbf {C}}^{\mathrm {T}}+\mathbf {y}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}\otimes \mathbf {y}^{\mathrm {T}}{\mathbf {C}}^{\mathrm {T}} \nonumber \\&- [\mathbf {z}_{\mathrm {b}}^{\mathrm {T}}({\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}-{\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}})]\otimes ({\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}). \end{aligned}$$

Inserting Eqs. (43) and (39) into (36) gives the \(1\times k\) gradient of the load-path

$$\begin{aligned} {{\varvec{\nabla }}}f(\mathbf {q}_{\mathrm {id}}) =&\frac{\mathrm {d}f(\mathbf {Q})}{\mathrm {d}\mathbf {Q}}\cdot \frac{\mathrm {d}\mathbf {Q}}{\mathrm {d}\mathbf {q}_{\mathrm {id}}} \nonumber \\ =&[-({\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\otimes {\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}) + \mathbf {x}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}\otimes \mathbf {x}^{\mathrm {T}}{\mathbf {C}}^{\mathrm {T}}+\mathbf {y}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}\otimes \mathbf {y}^{\mathrm {T}}{\mathbf {C}}^{\mathrm {T}} \nonumber \\&- [\mathbf {z}_{\mathrm {b}}^{\mathrm {T}}({\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}-{\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}})]\otimes ({\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}})]\cdot \Omega {\mathbf {K}} \nonumber \\ =&{\sum }_{i=1}^m\left[ \mathbf {x}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {e}}_{\mathrm {i}}\mathbf {x}^{\mathrm {T}}{\mathbf {C}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {K}} +\; \mathbf {y}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {e}}_{\mathrm {i}}\mathbf {y}^{\mathrm {T}}{\mathbf {C}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {K}} - {\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {e}}_{\mathrm {i}}{\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {K}} \right. \nonumber \\&\left. +\; \mathbf {z}_{\mathrm {b}}^{\mathrm {T}}({\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}-{\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}){\mathbf {e}}_{\mathrm {i}} {\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {K}}\right] . \end{aligned}$$

In the same fashion, to determine the Hessian of the function, the following chain rule is used

$$\begin{aligned} {{\varvec{\nabla }}}^2f(\mathbf {q}_{\mathrm {id}})=\frac{\mathrm {d}{{\varvec{\nabla }}}f}{\mathrm {d}\mathbf {Q}}\cdot \frac{\mathrm {d}\mathbf {Q}}{\mathrm {d}\mathbf {q}_{\mathrm {id}}}. \end{aligned}$$

Note that one can temporarily ignore the sums of the gradient, since \(\mathrm {d}\sum =\sum \mathrm {d}\), and consider them in the final chain-rule calculation. The first two terms of Equation (44) vanish in the Hessian, leaving only the derivative

$$\begin{aligned} \frac{\mathrm {d}{\varvec{\nabla }}f}{\mathrm {d}\mathbf {Q}}=&- \dfrac{\mathrm {d}\,{\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {e}}_{\mathrm {i}}{\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {K}}}{\mathrm {d}\mathbf {Q}} \nonumber \\&+ \dfrac{\mathrm {d}\,\mathbf {z}_{\mathrm {b}}^{\mathrm {T}}({\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}} - {\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}){\mathbf {e}}_{\mathrm {i}}{\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {K}}}{\mathrm {d}\mathbf {Q}}. \end{aligned}$$

The first term of Eq. (46) by the multiplication rule is equivalent to

$$\begin{aligned}&\dfrac{\mathrm {d}({\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {e}}_{\mathrm {i}})({\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {K}})}{\mathrm {d}\mathbf {Q}}\end{aligned}$$
$$\begin{aligned}&\quad =-({\mathbf {K}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {p}}_{\mathrm {z}}\otimes \mathbf {I}_1)[{\mathbf {e}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\otimes {\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}]\end{aligned}$$
$$\begin{aligned}&\qquad -(\mathbf {I}_{\mathrm {k}\times \mathrm {k}}\otimes {\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {e}}_{\mathrm {i}})[{\mathbf {K}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1} {\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\otimes {\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}]\end{aligned}$$
$$\begin{aligned}&\quad =-\left[ {\mathbf {K}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}({\mathbf {p}}_{\mathrm {z}}{\mathbf {e}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}+\;{\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {e}}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}})\otimes {\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\right] . \end{aligned}$$

The second derivative of Eq. (46) is slightly more complicated and is thus split in two parts

$$\begin{aligned}&\frac{\mathrm {d}\,\mathbf {z}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {e}}_{\mathrm {i}}{\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1} {\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {K}}}{\mathrm {d}\mathbf {Q}} \end{aligned}$$
$$\begin{aligned}&\frac{\mathrm {d}\,\mathbf {z}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {e}}_{\mathrm {i}}{\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {K}}}{\mathrm {d}\mathbf {Q}}. \end{aligned}$$

Using Eqs. (35a) and (35b), the derivative (52) becomes

$$\begin{aligned} -\mathbf {z}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {e}}_{\mathrm {i}}({\mathbf {K}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}} \otimes {\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}). \end{aligned}$$

Using the multiplication rule on Eq. (51) gives

$$\begin{aligned}&\frac{\mathrm {d}(\mathbf {z}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {e}}_{\mathrm {i}})({\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1} {\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {K}})}{\mathrm {d}\mathbf {Q}}\end{aligned}$$
$$\begin{aligned}&\quad = ({\mathbf {K}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {p}}_{\mathrm {z}}\otimes \mathbf {I}_1)[({\mathbf {e}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}})\otimes \mathbf {z}_{\mathrm {b}}^{\mathrm {T}}({\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}-{\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}})]\end{aligned}$$
$$\begin{aligned}&\qquad - (\mathbf {I}_{\mathrm {k}\times \mathrm {k}}\otimes \mathbf {z}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {e}}_{\mathrm {i}})[{\mathbf {K}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}} {\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\otimes {\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}]\end{aligned}$$
$$\begin{aligned}&\quad = {\mathbf {K}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {p}}_{\mathrm {z}}{\mathbf {e}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\otimes \mathbf {z}_{\mathrm {b}}^{\mathrm {T}} ({\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}-{\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}})\end{aligned}$$
$$\begin{aligned}&\qquad -\mathbf {z}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {e}}_{\mathrm {i}}({\mathbf {K}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1} {\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\otimes {\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}) \end{aligned}$$

Putting (50), (58) and (53) together gives

$$\begin{aligned} \frac{\mathrm {d}{\varvec{\nabla }}f}{\mathrm {d}\mathbf {Q}} =&{\sum }_{i=1}^m \left[ {\mathbf {K}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}\left[ \mathbf {z}_{\mathrm {b}}^{\mathrm {T}}({\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}-{\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}) {\mathbf {e}}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}+\;{\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {e}}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}} + {\mathbf {p}}_\mathrm {z}{\mathbf {e}}_{\mathrm {i}}^{\mathrm {T}} {\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\right] \right. \nonumber \\&\left. \otimes\; ({\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}) + {\mathbf {K}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {p}}_{\mathrm {z}}{\mathbf {e}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}} \otimes\; \mathbf {z}_{\mathrm {b}}^{\mathrm {T}}({\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}- {\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}) \right] \end{aligned}$$

Finally, using Eq. (45) one gets the \(k\times k\) Hessian matrix of the load-path

$$\begin{aligned} {\varvec{\nabla }}^2f(\mathbf {q}_{\mathrm {id}}) =&{\sum }_{i=1}^m\left[ {\mathbf {K}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}\left[ \mathbf {z}_{\mathrm {b}}^{\mathrm {T}}({\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}-{\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}) {\mathbf {e}}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}+{\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1} {\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {e}}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}+{\mathbf {p}}_{\mathrm {z}}{\mathbf {e}}_{\mathrm {i}}^{\mathrm {T}} {\mathbf {C}}_{\mathrm {i}} {\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\right] \right. \nonumber \\&\left. \otimes\; ({\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}) + {\mathbf {K}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {p}}_{\mathrm {z}}{\mathbf {e}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}} \otimes \mathbf {z}_{\mathrm {b}}^{\mathrm {T}}({\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}- {\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}) \right] \cdot {\varvec{\Omega }} {\mathbf {K}} \nonumber \\ =&{\sum }_{j=1}^m{\sum }_{i=1}^m\left[ {\mathbf {K}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}\left[ \mathbf {z}_{\mathrm {b}}^{\mathrm {T}} ({\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}-{\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}) {\mathbf {e}}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}+{\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}} {\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {e}}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}+{\mathbf {p}}_{\mathrm {z}}{\mathbf {e}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1} {\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\right] {\mathbf {e}}_{\mathrm {j}} \right. \nonumber \\&\left. \otimes ({\mathbf {p}}_{\mathrm {z}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\mathbf {E}_{\mathrm {j}}{\mathbf {K}}) +({\mathbf {K}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {p}}_{\mathrm {z}}{\mathbf {e}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {C}}_{\mathrm {i}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}{\mathbf {e}}_{\mathrm {j}}) \otimes \mathbf {z}_{\mathrm {b}}^{\mathrm {T}}({\mathbf {C}}_{\mathrm {b}}^{\mathrm {T}}-{\mathbf {D}}_{\mathrm {b}}^{\mathrm {T}}{\mathbf {D}}_{\mathrm {i}}^{-1}{\mathbf {C}}_{\mathrm {i}}^{\mathrm {T}}\mathbf {E}_{\mathrm {i}}{\mathbf {K}}) \right] . \end{aligned}$$

All authors confirm/declare that they have no conflict of interests with respect to the submitted research project.

Rights and permissions

Reprints and Permissions

About this article

Verify currency and authenticity via CrossMark

Cite this article

Liew, A., Pagonakis, D., Van Mele, T. et al. Load-path optimisation of funicular networks. Meccanica 53, 279–294 (2018). https://doi.org/10.1007/s11012-017-0714-1

Download citation


  • Load-path optimisation
  • Minimum volume problem
  • Thrust Network Analysis
  • Structural optimisation
  • Thrust network topology