rbe_solve

compas_cra.equilibrium.rbe_solve(assembly, mu=0.84, density=1.0, verbose=False, timer=False)

RBE solver with penalty formulation using Pyomo + IPOPT.

Parameters:
assemblyAssembly

The rigid block assembly.

mufloat, optional

Friction coefficient value.

densityfloat, optional

Density of the block material.

verbosebool, optional

Print information during the execution of the algorithm.

timerbool, optional

Time the solving time.

Returns:
Assembly

The assembly is updated in place, also return Assembly for compas.rpc and compas.cloud

Notes

This function solves the following optimisation problem, Eq.(6) :

\[\begin{split}\begin{align} \begin{split} \min_{\bf{\tilde{f}}} \quad & \frac{1}{2}\:{\bf{\tilde{f}}^\intercal}\:{\bf{H}}\:{\bf{\tilde{f}}} \\ \textrm{s.t.} \quad & {{\bf{A}}_{eq}}\:{\bf{B}}\:{\bf{\tilde{f}}} = -{\bf{p}} \\ & {\bf{A}}_{fr}\:{\bf{B}}\:{\bf{\tilde{f}}} \le {\bf{0}} \\ & f_{jkn}^{i+}\, ,f_{jkn}^{i-} \ge 0 \;, \quad \forall i,j,k \;, \end{split} \end{align}\end{split}\]

For more information please check our research paper: Coupled Rigid-Block Analysis: Stability-Aware Design of Complex Discrete-Element Assemblies