visualdynamics.demo.barc¶
barc
¶
The BARC, built from plates, 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, the beam, 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: 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, in inches:
from visualdynamics.demo import barc
model = barc.build()
shapes = model.eigensolution(maximum_frequency=2000)
The joints decide the Bench's modes. The parts meet through bolts, and
their mid-surfaces do not touch (a channel's foot is 0.1875 in above the
box wall's mid-surface), so what joins them is a modeling choice. The
choices were checked against the finite element models shared on the
wiki: a single rigid link at each bolt came out soft, and softer at
every mesh refinement, because a point tie on a plate is a local
singularity and not a joint; each foot tied over its whole area came
out stiff. What is built ties each bolt over the elements it clamps
(bolt_patch) to the part below with mesh.tie, which is what the
app's Tie does with the same elements picked. So the model a person
builds in the app by the documentation's steps is this one, node for
node and link for link. Four bolts join each channel to the box, each
over the elements its washer covers, and four join the beam to each
channel, each over the element it passes through.
The same structure is also built from solid eight-node bricks, the
higher-fidelity model, along with the removable component on its own:
the two channels and the beam, the part the BARC is named for
(solid_geometry, solid_project). Its parts are solids, each made of
as few blocks as it can be (the box a block less its inside and its
slot, a channel a block less the inside of its C, the beam a block;
BOX_SOLIDS, CHANNEL_SOLIDS, BEAM_SOLID), and meshed by Mesh
Solids, following the documentation's steps. Bricks touch where the
parts do, so their bolts are made differently. The parts are meshed on
one grid, each with its own nodes (parts_apart), coincident with the
next part's nodes where the two touch and joined to none of them. Each
bolt is then a mated set, made by Mate Surfaces with the found patch
trimmed to the places the bolt clamps (bolt_places): at a foot, the
corners of the brick under the bolt and the eight around it, the
washer's area, and at the beam, the four corners of the brick the bolt
passes through. Each node there is tied rigidly to the face beneath it,
and the rest of the contact is left free. The
bolts' masses are point masses, an element group of point elements
given a mass (fem.GroupProperties(mass=...)).
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 |
bolt_patch |
The elements a bolt clamps, and the element group it bolts them to. |
build |
The BARC's finite element model of plates, built from |
project |
A project to open in the app: the BARC's plate geometry, its |
solid_geometry |
The BARC, or its removable component, as a geometry of bricks |
bolt_places |
The places a bolt clamps, as the ids of the nodes of the part on |
solid_build |
The finite element model of bricks of the BARC or of its removable |
solid_project |
A project to open in the app: the BARC and its removable |
describe |
Print the plate model, the brick BARC and the brick removable |
Classes¶
Functions:¶
geometry
¶
The BARC as a geometry of plates and rigid links, every element group
given its material and thickness, 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 bolt
clamps, |
Source code in src/visualdynamics/demo/barc.py
bolt_patch
¶
The elements a bolt clamps, and the element group it bolts them to.
The clamped elements are a square CLAMPED elements across, on the
part on top, centered on the element the bolt passes through: at a
foot that element and the eight around it, the washer's area, and at
the beam the element alone. Whole elements are used, not the washer's
circle, because whole elements are what a person picks in the view,
in rows that can be counted.
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 of plates, built from geometry.
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 plate geometry, its element groups given their properties, so Solve Modes on it gives its modes.
barc.project().save('barc.vdyn')
With solved, the modes are already solved to SOLVE_TO (2000 Hz).
That is 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
and point masses, every element group given its material or mass,
ready for fem.Model.from_geometry or for the app's Solve Modes. A
part not in PARTS raises ValueError.
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, joined only at the bolts,
|
Source code in src/visualdynamics/demo/barc.py
350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 | |
bolt_places
¶
The places a bolt clamps, as the ids of the nodes of the part on top that a bolt's mated set ties there.
They are the corners, on the face where the parts touch, of the
bricks the bolt clamps, picked by the same CLAMPED rule as the
plate model's bolts: the washer's 4 x 4 places at a foot, and the
four corners of the brick the bolt passes through at the beam. These
are the places a person keeps marked in the Mate Surfaces pane.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
geometry
|
Geometry
|
The BARC's bricks, assembled apart. |
required |
axis
|
tuple
|
The bolt's (x, z), inches. |
required |
kind
|
str
|
'foot' or 'top'. |
required |
Returns:
| Type | Description |
|---|---|
set of int
|
Node ids of the part on top. |
Source code in src/visualdynamics/demo/barc.py
solid_build
¶
The finite element model of bricks of the BARC or of its removable
component, built from solid_geometry.
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, so Solve Modes on either gives its modes.
barc.solid_project().save('barc-bricks.vdyn')
With solved, the BARC's modes are already solved to SOLVE_TO
(2000 Hz) and the removable component's to PART_SOLVE_TO
(2600 Hz). That is 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 plate model, the brick BARC and the brick removable
component, each with its size, its mass and its first modes
elastic frequencies (those above 1 Hz).