visualdynamics.demo.barc¶
barc
¶
The BARC, built from planes, and again from bricks.
The BARC — Box Assembly with Removable Component — is a small bolted aluminum structure the structural dynamics community shares as a common test article: a square box tube with its top wall slotted in two, and on it the "Bench", two channels standing on the two halves and a flat bar bolted across their tops. Its solid model, test data and finite element models are shared on the SEM Dynamic Substructuring Focus Group wiki, https://wiki.sem.org/wiki/BARC.
Here it is built the way a person would build a simple plate model with
this package (Brandon, 2026-09-26): each part as the planes it is made
of, meshed at mid-thickness (visualdynamics.mesh), each part an element group
given its material and thickness, and the bolts as rigid, massless
links. Every dimension below comes from the shared solid model (inches):
from visualdynamics.demo import barc
model = barc.build()
shapes = model.eigensolution(maximum_frequency=2000)
The joints are the model. The parts meet through bolts, and their
mid-surfaces do not touch — a channel's foot sits 0.1875 in above the
box wall's mid-surface — so what joins them is a modeling choice, and it
decides the Bench's modes. The choices were checked against the finite
element models shared on the wiki while this was built: a single rigid
link at each bolt came out soft, and softer at every mesh refinement (a
point tie on a plate is a local singularity, not a joint), and each foot
tied over its whole area came out stiff. What is built ties each bolt
over the elements its washer covers (washer_patch), to the part below
with mesh.tie — what the app's Tie does with the same elements picked
(2026-09-26) — so the model a person builds in the app by the
documentation's steps is this one, node for node and link for link.
And from bricks (2026-10-07): the same structure as solid
eight-node bricks (mesh.block), the higher-fidelity model, and the
removable component on its own — the two channels and the beam, the
part the BARC is named for (solid_geometry, solid_project). The
joints follow the finite element model shared on the wiki: the feet
are joined to the box over their whole footprint (the bricks share
nodes there), the beam rests 0.001 in over the channels so it joins
them only where it is bolted, tied over each washer with mesh.tie,
and the bolts are point masses, an element group of point elements given a mass
(fem.GroupProperties(mass=...)). Without the bolt masses the
assembly reads 1 to 8 % stiffer. Checked against the wiki's models and
test: the assembly's first ten elastic modes 1 to 4 % above the
measured ones, its shapes matching the shared model's in order.
Run it directly to print the models and their first modes:
python3 -m visualdynamics.demo.barc
Functions:
| Name | Description |
|---|---|
geometry |
The BARC as a geometry of plates and rigid links, every element group |
washer_patch |
The elements a bolt's washer covers, and the element group it bolts them to: |
build |
The BARC's finite element model ( |
project |
A project to open in the app: the BARC's geometry, its element groups |
solid_geometry |
The BARC, or its removable component, as a geometry of bricks, |
solid_build |
The BARC's, or its removable component's, model of bricks |
solid_project |
A project to open in the app: the BARC and its removable |
describe |
Print the models and their first elastic modes. |
Classes¶
Functions:¶
geometry
¶
The BARC as a geometry of plates and rigid links, every element group
given what it is made of — ready for fem.Model.from_geometry, or
for the app's Solve Modes.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
size
|
float
|
The element size aimed at, in inches. |
SIZE
|
Returns:
| Type | Description |
|---|---|
Geometry
|
Element groups 'box', 'right channel', 'left channel', 'beam' (6061-T6
plates) and 'bolts' (rigid links over the elements each washer
covers, |
Source code in src/visualdynamics/demo/barc.py
washer_patch
¶
The elements a bolt's washer covers, and the element group it bolts them to:
the elements of the part on top whose centers lie within the washer's
radius of the bolt along both edges — at SIZE, the element the bolt
passes through and the eight around it under a foot, the 4 × 4 around
the node it passes through on the beam. A square rather than the
washer's circle because it is what a person picks: whole rows of
elements, countable in the view.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
geometry
|
Geometry
|
The BARC's planes, assembled. |
required |
bolt
|
tuple
|
One of |
required |
Returns:
| Type | Description |
|---|---|
(list of int, str)
|
The element ids, and the name of the element group below. |
Source code in src/visualdynamics/demo/barc.py
build
¶
The BARC's finite element model (geometry built).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
size
|
float
|
The element size aimed at, in inches. |
SIZE
|
Returns:
| Type | Description |
|---|---|
Model
|
|
Source code in src/visualdynamics/demo/barc.py
project
¶
A project to open in the app: the BARC's geometry, its element groups given their properties — Solve Modes on it gives its modes.
barc.project().save('barc.vdyn')
With solved, the modes are solved to SOLVE_TO already: the
example project the downloads page offers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
size
|
float
|
The element size aimed at, in inches. |
SIZE
|
solved
|
bool
|
Solve the modes as well. |
False
|
Returns:
| Type | Description |
|---|---|
Project
|
|
Source code in src/visualdynamics/demo/barc.py
solid_geometry
¶
The BARC, or its removable component, as a geometry of bricks,
rigid ties and point masses, every element group given what it is made of —
ready for fem.Model.from_geometry, or for the app's Solve Modes.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
part
|
str
|
One of |
'BARC'
|
size
|
float
|
The element size aimed at, in inches. |
SIZE
|
Returns:
| Type | Description |
|---|---|
Geometry
|
Element groups 'box' (the assembly only), 'right channel', 'left
channel', 'beam' (6061-T6 bricks), 'bolt ties' (rigid links
from the beam over each washer to its channel) and the bolts'
masses, 'foot bolts' (the assembly only) and 'top bolts',
opening on |
Source code in src/visualdynamics/demo/barc.py
solid_build
¶
The BARC's, or its removable component's, model of bricks
(solid_geometry built).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
part
|
str
|
One of |
'BARC'
|
size
|
float
|
The element size aimed at, in inches. |
SIZE
|
Returns:
| Type | Description |
|---|---|
Model
|
|
Source code in src/visualdynamics/demo/barc.py
solid_project
¶
A project to open in the app: the BARC and its removable component, both of bricks — Solve Modes on either gives its modes.
barc.solid_project().save('barc-bricks.vdyn')
With solved, the BARC's modes are solved to SOLVE_TO and the
removable component's to PART_SOLVE_TO: the example project the
downloads page offers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
size
|
float
|
The element size aimed at, in inches. |
SIZE
|
solved
|
bool
|
Solve the modes as well. |
False
|
Returns:
| Type | Description |
|---|---|
Project
|
|
Source code in src/visualdynamics/demo/barc.py
describe
¶
Print the models and their first elastic modes.