Skip to main content

COMPAS Masonry

[!WARNING] This plugin is under active development, and its functionality will frequently change.

COMPAS Masonry

COMPAS Masonry is a plugin for Rhino for the assessment of masonry structures, and for the stability analsis of Discrete Element Models in general.

The current version of this plugin is based on COMPAS 2 and is only available for Rhino 8.

Installation

To install COMPAS-Masonry, use Rhino's package manager Yak. To open Yak, type PackageManager on the Rhino command line. Then search for "COMPAS Masonry" and install.

COMPAS Packages

COMPAS-Masonry uses the following COMPAS packages:

After installing COMPAS-Masonry with Yak, these requirements will be installed automatically if necessary. The tool might be unresponsive during this process, which might take up to 1 or 2 mins. The packages are installed in a separate virtual environment named COMPAS-Masonry.

Solvers

Equilibrium analysis runs through compas_cra:

  • RBE — rigid block equilibrium
  • CRA — coupled rigid block analysis, with an optional penalty formulation

Both return contact forces rather than displacements.

[!IMPORTANT] These need compas_cra >= 0.8.0, which solves IPOPT in-process through a bundled native binding. There is no ipopt executable to install and nothing to put on PATH: wheels are published for CPython 3.9-3.13 on macOS (arm64 and x86_64), manylinux and Windows, each carrying the compiled solver, so a plain pip install is the whole setup. compas_cra 0.4.0 cannot be used in a NumPy 2 environment, and 0.5.0-0.7.0 have been withdrawn from PyPI.

compas_cra still solves for self-weight only — external_force_setup(assembly, density) takes no external load vector. A problem carrying any boundary condition is therefore refused by check_ready() and has to go to LMGC90 or 3DEC instead.

LMGC90 provides contact dynamics and displacements in-process through compas_lmgc90.

3DEC provides staged gravity, load, and prescribed-displacement analyses through compas_3dec and a licensed external Itasca 3DEC installation. The Python adapter ships as a base requirement, so a 3DEC solver can be configured and saved on any machine — the parameters belong to the problem, not to the computer that runs it. The 3DEC executable itself is discovered automatically, or its path and run workspace can be set in CM_Problem_setsolver.

[!NOTE] 3DEC is Windows software, and compas_3dec discovers it only under the Windows Program Files\Itasca locations. On macOS and Linux a 3DEC solve is refused up front, before any stage prompt, rather than failing inside a subprocess launch. An explicit executable path is honoured on every platform, so a reachable licensed install is used wherever it is found.

CRA and RBE exclude support blocks from the equilibrium system, so they have no displacement degrees of freedom and refuse a problem carrying a prescribed displacement. Use LMGC90 or 3DEC for those problems.

User Interface

COMPAS-Masonry defines 28 Rhino commands, all prefixed CM_ and grouped by the stage they belong to:

Group Commands
Session CM_Masonry_start, CM_Session_undo, CM_Session_redo, CM_Session_import, CM_Session_save, CM_Session_redraw, CM_Session_clear, CM_Session_settings
Model CM_Model_blocks, CM_Model_contacts, CM_Model_supports, CM_Model_material, CM_Model_materialassign
Problem CM_Problem_create, CM_Problem_contactlaw, CM_Problem_setsolver, CM_Problem_loads, CM_Problem_displacements, CM_Problem_solve
Results CM_Results_show, CM_Results_print, CM_Results_block
TNA CM_TNA_envelope, CM_TNA_formdiagram, CM_TNA_supports, CM_TNA_loads, CM_TNA_analysis, CM_TNA_blockexport

A typical run goes left to right through those groups: build the model, compute its contacts, mark supports, assign a material, create a problem with a contact law and a solver, add loads, solve, and draw the results.

A problem is the load case. Loads and prescribed movements are added straight to a problem; solving applies all of them. To compare two load cases, duplicate the problem in CM_Problem_create.

Saving works the way RhinoVAULT's does: CM_Session_save writes the whole session to one JSON file and CM_Session_import opens it. There are no per-artefact import/export commands. Results are left out deliberately — they are re-derived by CM_Problem_solve.

These commands can be executed using the Rhino command line (simply start typing the command name), or with the corresponding buttons of the COMPAS-Masonry toolbar.

COMPAS-Masonry toolbar

If the toolbar is not visible after installing COMPAS-Masonry, you can load it from the "Toolbars" page. To open the "Toolbars" page, type Toolbar on the Rhino command line...

Rhino Toolbars

Documentation

For further "getting started" instructions, a tutorial, examples, and an detailed description of the individual commands and the user interface, please check out the online documentation here: COMPAS-Masonry Gitbook

Issues

Please report problems using the issue tracker of the github repo: https://github.com/blockresearchgroup/compas-Masonry/issues

Metadata

Release files for compas-masonry 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for compas-masonry 0.4.2
File Size Uploaded
compas_masonry-0.4.2.tar.gz 118.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for compas-masonry 0.4.2
File Interpreter ABI Platform
compas_masonry-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 204.4 kB

Release files / compas_masonry-0.4.2.tar.gz

Download URL compas_masonry-0.4.2.tar.gz
Size 118.2 kB
Tags Source
SHA-256 checksum
How to use checksums
e87e435c0dc601b698a7e84892521097b17c7c6b18d2e0ae2c5b07426b8610a5
BLAKE2b-256 checksum
How to use checksums
c658ad437edebb326746a2146f2832fc4eb24ede80914fcc67703b38a8ae19a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Release files / compas_masonry-0.4.2-py3-none-any.whl

Download URL compas_masonry-0.4.2-py3-none-any.whl
Size 86.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d66ea152aa225a794c1e51a716884402d905ac69fff7c79eeec64e7fafc0b9dc
BLAKE2b-256 checksum
How to use checksums
380a84581b1c3f39cf2eaaaf9b71a47f5f55c856e270cb4ffafc6d55cec23ce8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Release history Release notifications | RSS feed

This release

0.4.2 This release

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page