Examples

Box Beam

A simple example using CUBIT is the box beam buckling problem shown in Figure 1. A description of an analysis which uses this type of mesh is found in (Lovejoy, 90). This example uses the merge, nodeset and block commands and the mapping mesh generation scheme. The geometry is generated inside of CUBIT using APREPRO commands and variables. The geometry file is as follows:

 

# File: boxBeamGeom.jou 
# Side = {Side = 1.75}
# Height = {Height = 12.0}
# Upper = {Upper = 2.0}
Brick Width {Side/2.0} depth {Side/2.0} height {Height-Upper}
Body 1 name "lowerSection"
Brick Width {Side/2.0} depth {Side/2.0} height {Upper}
Body 2 name "upperSection"
Move lowerSection xyz {Side/4.0} {Side/4.0} {(Height-
 Upper)/2.0}
Move upperSection xyz {Side/4.0} {Side/4.0} {Upper/2.0 +
 Height - Upper}
Export acis "boxBeam.sat" #Save the file to SAT

Figure 1. Box beam buckling example

In this example, it is assumed that subsequent analyses will take advantage of the problem symmetry and therefore only one-quarter of the box beam will be meshed. It is worth noting that there are a variety of ways to construct a solid model for this problem; however, experience thus far with ACIS and CUBIT indicates that the easiest way to model the box beam is to use ACIS block primitives. (Note that this geometry can also be generated using the internal CUBIT Brick primitive) Even though subsequent meshing will only be performed on the faces of the solid model, the entire 3D body is saved as an ACIS.sat file. The CUBIT journal file for the box beam example is:

# File: boxBeam.jou 

# Thickness = {Thickness = 0.06}
# Crease = {Crease = 0.01}
# XYInts = {XYInts = 10}
# ZInts = {ZInts = 90}
# UpperInts = {UpperInts = 15}

Import Acis 'boxBeam.sat'

Merge All
Label Surface on
Label Curve on
Display

Curve 1 To 8 Interval {XYInts}
Curve 13 To 16 Interval {XYInts}

Curve 9 To 12 Interval {ZInts-UpperInts}
Curve 21 To 24 Interval {UpperInts}

Mesh Surface 3
Mesh Surface 6
Mesh Surface 9
Mesh Surface 12

NodeSet 1 Curve 1
NodeSet 2 Curve 4

NodeSet 1 Move {-Crease} 0 0
NodeSet 2 Move 0 {Crease} 0

Block 2 Surface 3
Block 2 Surface 6

Block 1 Surface 9
Block 1 Surface 12

Block 1 To 2 Attribute {Thickness}

Export Genesis 'boxBeam.exoII'
Quit

Commands worth noting in the CUBIT journal file include:

Block, Block Attribute Allows the user to specify that shell elements for the surfaces of the solid model are to be written to the output (EXODUSII) database, and that shell elements be given a thickness attribute. This is necessary since CUBIT defaults to three-dimensional hexahedral meshing of solid model volumes.

NodeSet Move Allows the user to actually move the specified nodes by a vector (Δx, Δy, Δz). This is advantageous for the buckling problem, since the numerical simulation requires a small "crease" in the beam in order to perform well.

Merge Allows the user to combine geometric features (e.g. edges and surfaces).

Other commands in the journal file should be straightforward. Since the problem is sufficiently simple to mesh using a mapping transformation, specification of a meshing "scheme" is unnecessary (mapping is the default in CUBIT).

Finally, note that both the CUBIT journal files ( boxBeamGeom.jou and boxBeam.jou ) contain macros that are evaluated using Aprepro. The makefile is used to semi-automatically generate the mesh is given below. While this particular example is a trivial use of the software, it does serve to demonstrate a few of the capabilities offered by CUBIT.

# File: Makefile 

boxBeam.g: boxBeam.exoII
ex2exlv2 boxBeam.exoII boxBeam.g

boxBeam.exoII: boxBeam.sat boxBeam.jou
cubit -batch -nographics boxBeam.jou

boxBeam.sat: boxBeamGeom.jou
cubit -batch -nographics boxBeamGeom.jou

boxBeam.jou: boxBeam.jou

clean:
@-rm *.sat *.exoII *.g