Dome minimum thrust
The current example finds minimum thrust for a dome based a radial Form Diagram.
# ----------------------------------------
# Note: EXAMPLE NEEDS THE INSTALLATION OF THE COMPAS MASONRY VIEWER
# ----------------------------------------
from compas_masonry.viewers import MasonryViewer
from compas_tna.diagrams import FormDiagram
from compas_tna.envelope import DomeEnvelope
from compas_tno.analysis import Analysis
# ----------------------------------------
# 1. Shape geometric definition
# ----------------------------------------
center = (5.0, 5.0)
radius = 5.0
r_oculus = 0.5
thickness = 0.20
min_lb = 0.5
n_hoops = 12
n_parallels = 24
envelope = DomeEnvelope(
center=center,
radius=radius,
thickness=thickness,
min_lb=min_lb,
n_hoops=n_hoops * 2,
n_parallels=n_parallels * 2,
r_oculus=r_oculus,
)
# ----------------------------------------
# 2. Form diagram geometric definition
# ----------------------------------------
form = FormDiagram.create_circular_radial_spaced(
center=center,
radius=radius,
n_hoops=n_hoops,
n_parallels=n_parallels,
r_oculus=r_oculus,
)
for edge in form.edges_on_boundary():
form.edge_attribute(edge, "_is_edge", False)
# --------------------------------------------
# 3. Minimum thurst solution and visualisation
# --------------------------------------------
analysis = Analysis.create_minthrust_analysis(form, envelope, printout=True)
analysis.apply_selfweight()
analysis.apply_envelope()
analysis.set_up_optimiser()
analysis.run()
viewer = MasonryViewer(
formdiagram=form,
envelope=envelope,
)
viewer.form_max_thk = 0.03
viewer.setup()
viewer.show()