MPoint Modeling • Examples

Cantilever Beam Vibration

Example Application

The project file for this example may be viewed/run in MPoint2D.[1] The main data file used is shown at the end of this example.

How To Read and Use Examples

This example demonstrates large tip-displacement of a cantilever beam under gravitational load. The model is configured for a fully dynamic analysis, with zero damping. Two options are presented: (1) using only mpoints to create a single beam, and (2) creating four beams using various options of mpoints and zones.

MPoint Beam

The data file “mpointBeam.dat” in this example creates a simple beam with constant cross-section, using the mpoint generate command.

The vertical displacement of an mpoint at one of the tip corner points is plotted using histories. The mpoint grid spacing is set equal to the zone size using the mpoint node spacing command.

MPoint and Zone Beams

The data file “coupledBeam.dat” creates four identical beams, Figure 1. All four beams are initially created using zones. The upper beam is kept as a zone model, and the beam second from the top is converted to an mpoint only beam using the mpoint import command. Note that the material model and properties are assigned to the zones before the mpoints are imported. Thus, there is no need to set any mpoint attributes or properties. The beam third from the top, the free-end half of the beam is converted to mpoints, while the fixed half remains zones. For the beam at the bottom, the fixed half is converted to mpoints, and the free-end remains zones. See Figure 1.

mpm/mpm/test2d/ExampleApplications/Beam/beams.png

Figure 1: Four identical beams discretized with different combinations of zones and mpoints.

Hybrid points are defined in the coupling regions using the mpoint hybrid-points command. Again, the vertical displacement of an mpoint at one of the tip corner points is plotted using histories. The tip-displacement of the zoned beam and the beam third from the top, with zones at the fixed end, correspond well (the upper graph in Figure 1). However, there is a small phase shift in the two beams with mpoints at the fixed end. The reason for this is that the stencil of the quadratic basis function is such that the beams with mpoints at the fixed end, are effectively supported (clamped) over a larger area.

Data Files

mpointBeam.dat

model new
model gravity 9.81 
model large-strain on
model configure dynamic
; geometry
[L = 1.0]      ; beam length
[H = 0.2]      ; beam height
[nx = 40]      ; number of zones in x-direction
[ny = 8]       ; number of zones in y-direction
; elastic material properties
[dens = 1000]
[emod = 5e6]
[poiss = 0.25]
; damping
[damp = 0.0]
; create mpm grid
model domain extent 0 2 0 1
mpoint node spacing [L/nx]
; create beam
mpoint generate group 'beam' range position-x 0 [L] position-y [0.5] [0.5+H]
; set mpoint properties
mpoint cmodel assign elastic
mpoint property density [dens] young [emod] poisson [poiss]
; boundary conditions
mpoint node fix velocity range position-x  0
; histories
model history name 'Time' dynamic time-total
[mp = mpoint.near(vector(L,0.5+H))]
[mp1 = mpoint.id(mp)]
mpoint history name 'Mpoints' displacement-y id [mp1]
history interval 100
; set damping
mpoint node dynamic damping local [damp]
; solve
model mechanical timestep fix 1.5e-4 
model update-interval 100
model step 10000

coupledBeam.dat

model new
model gravity 9.81 
model large-strain on
model configure dynamic
; geometry
[L = 1.0]      ; beam length
[H = 0.2]      ; beam height
[nx = 40]      ; number of zones in x-direction
[ny = 8]       ; number of zones in y-direction
; y-coordinates for the 4 beams
[Y1 = 1.75]
[Y2 = 1.25]
[Y3 = 0.75]
[Y4 = 0.25]
; elastic material properties
[dens = 1000]
[emod = 5e6]
[poiss = 0.25]
; damping
[damp = 0.0]
; create beam 1
zone create quadrilateral point 0 (0,[Y1]) ...
                 point 1 ([L],[Y1]) ...
                 point 2 (0,[Y1+H]) ...
                 size [nx] [ny] ...
                 group 'beam1'
; create beam 2
zone create quadrilateral point 0 (0,[Y2]) ...
                 point 1 ([L],[Y2]) ...
                 point 2 (0,[Y2+H]) ...
                 size [nx] [ny] ...
                 group 'beam2'

; create beam 3
zone create quadrilateral point 0 (0,[Y3]) ...
                 point 1 ([L],[Y3]) ...
                 point 2 (0,[Y3+H]) ...
                 size [nx] [ny] ...
                 group 'beam3'
; create beam 4
zone create quadrilateral point 0 (0,[Y4]) ...
                 point 1 ([L],[Y4]) ...
                 point 2 (0,[Y4+H]) ...
                 size [nx] [ny] ...
                 group 'beam4'
; set zone properties
zone cmodel assign elastic
zone property density [dens] young [emod] poisson [poiss]
; create mpm grid
model domain extent 0 2
mpoint node spacing [L/nx]
; import mpoints
mpoint import from-zones range group 'beam2'
mpoint import from-zones range group 'beam3' position-x [L/2.0] [L]
mpoint import from-zones range group 'beam4' position-x 0 [L/2.0]
; create hybrid points
mpoint hybrid-points range group 'beam3' position-x [L/2-L/4] [L/2]
mpoint hybrid-points range group 'beam4' position-x [L/2] [L/2+L/4]
; boundary conditions
zone gridpoint fix velocity range position-x 0  
mpoint node fix velocity range position-x  0
; histories
model history name 'Time' dynamic time-total
[gp = gp.near(vector(L,Y1+H))]
[gp1 = gp.id(gp)]
zone history name 'Zone' displacement-y gridpointid [gp1]
[mp = mpoint.near(vector(L,Y2+H))]
[mp1 = mpoint.id(mp)]
mpoint history name 'Mpoints' displacement-y id [mp1]
[mp = mpoint.near(vector(L,Y3+H))]
[mp2 = mpoint.id(mp)]
mpoint history name 'Coupled: Zones left' displacement-y id [mp2]
[gp = gp.near(vector(L,Y4+H))]
[gp2 = gp.id(gp)]
zone history name 'Coupled: Mpoints left' displacement-y gridpointid [gp2]
history interval 100
; set damping
mpoint node dynamic damping local [damp]
zone dynamic damping local [damp]
; solve
model mechanical timestep fix 1.5e-4 
model step 10000
;
plot 'Model' export bitmap filename 'beams.png'

Endnote