NairnFEAMPM Icon

Setting up Material Point Method Calculations

This help information summarizes the process of setting up and running material point method (MPM) calculations. The discussion assumes the user is familiar with MPM and only needs to learn how to do MPM in NairnFEAMPM. See the References section for some papers about MPM.

The basic steps for setting up and running Material Point Method (MPM) calculations using the NairnMPM code engine are:

  1. Open or create an input commands file
  2. Set up the calculation commands using one of two methods:
  3. Run the MPM calculations
  4. Analyze and Plot the results

Quick Start MPM Calculations

To see a sample MPM analysis that illustrates the above process, try the following steps:

  1. Choose any of the "MPM Example" options in the New submenu in the File Menu. A new document will open with analysis commands for the loaded example. You can run "as is" or customize the example by editing the varibles in the "Parameters" section.
  2. Choose Run FEA/MPM Analysis from the Analyze Menu and select file name for saving the MPM results. The MPM analysis will run and the results will appear in a new window. The calculation time will depend on which example you choose and on your Mac's speed.
  3. Choose Particle Plots from the Analyze Menu. A new window will open with the initial material points. Select the desired result to plot from the pop-up menus. For example, select "Stress" and then select "xx" from the "Tensor" menu. Finally, to see evolution of the stress, click the "Play" button near the top-left on the window.

Open or Create an Input Commands File

Calculations are controlled by an input commands file. Use the New→MPM Commands File or the New→MPM 3D Commands File menu command to create a new 2D or 3D MPM commands file. Alternatively, use the Open menu command to open a previous commands file. Input files have extension .fmcmd meaning finite element or material point method input commands file.

Once opened, the window (as shown below) is used to edit the commands. The top part of the window is a tool bar with icons for common tasks (control click on the tool bar to customize the icons). The middle section is a text editing field for entering analysis commands. The bottom section holds the result of interpreting commands which will be the raw XML commands that are input into the NairnMPM code engine (see OSUPDocs wiki for details on raw XML commands). You can drag the bar to adjust the size of the two text fields.

Commands Window

Use NairnFEAMPM Commands

When using the built-in interpretive language, you use NairnFEAMPM Commands to set up the analysis. When the commands are done, use the Interpret Commands menu command to create the raw XML input commands for NairnMPM. Each line is a command which must be formatted as explained in the command line syntax information. See the NairnFEAMPM Commands section for details of all possible commands (you can jump to any help on any command by control (or right) clicking on any line and choosing the menu command to show help on the clicked line). See the section on running MPM calculations when you are ready to do the calculations.

The following example of MPM commands deforms a double cantilever beam specimen and illustrates typical command sections. You can load these example commands into a new input commands file window by selecting the New→MPM Sample - DCB Specimen menu command in the File Menu. Each section of commands is explained below the example.

! ---------- Preamble
! A DCB specimen analysis
Title "MPM Analysis of DCB Specimen"
Name "User Name"

Header
   Analysis of DCB Specimen for energy release rate
EndHeader

! ---------- Parameters
#cell=2                 ! cell size (square cells)
#length=100             ! Length in mm (mult of cell)
#depth=12               ! Depth in mm (mult of cell)
#width=1                ! Width in mm
#tip=50                 ! crack tip location

! ---------- Analysis Type and Materials
Analysis "Plane Stress MPM"
MPMMethod USAVG,GIMP
Archive "Results/DCB"
ArchiveTime 5
MaximumTime 121
ToArchive velocity,stress,strain
ToArchive stressintensity,jintegral
FeedbackDamping 7
Friction 0

Material "beam","Low Stiffness","Isotropic"
  E .1
  nu .33
  a 60
  rho 1.5
Done

! ---------- Create Grid and Material Points
GridHoriz (#length+2*#cell)/#cell
GridVert 2*(#depth+2*#cell)/#cell
GridRect 0,#length+2*#cell,-#depth-2*#cell,#depth+2*#cell

Region "beam",0,0,#width
  Rect 0,#length,-#depth,#depth
EndRegion

! ---------- Optional Calculations
NewCrack #tip-#cell/10,1e-6,"beam"
GrowCrack #length+#cell/4,1e-6

! ---------- Boundary Conditions
MoveLine 0,-#depth-2*#cell,0,#depth+2*#cell,#cell/10
  Velocity x,constant,0
EndMoveLine

! End loads on beam arms
#EndLoad=.0004*#cell/(2*#depth)			! Newtons per particle load
LoadRect #length-(#cell/2),#length,0,#depth
  Load y,constant,#EndLoad
EndLoadRect
LoadRect #length-(#cell/2),#length,-#depth,0
  Load y,constant,-#EndLoad
EndLoadRect

The various command sections have the following functions:

Preamble Section

It is useful, but optional, to start all files with comments that decribe the purpose of the commands. This section usually has a series of comment lines. A Header command is for comments that will by inlcuded in the output file for the calculations.

Parameters Section

For more general commands, it is good practice to use variables and expressions to define key properties of the analysis. These variables and expressions can be used as arguments to other commands. Variables can be defined any place in the file, but it is helpful to collect the important variables in a parameters section near the top.

Analysis Type and Materials Section

This section has commands to set up the calculations such as to describe the problem, enter archiving options, deinfe materials, and various other options. The NairnFEAMPM commands commonly used in this section are:

Grid and Material Points Section

This section has commands to define the background grid and to define material points within the grid. See the grid and material point definition commands for details.

Optional Calculations Section

This section has commands for various calculation options such as explicit cracks, thermal conductivity, or diffusion calculations. The NairnFEAMPM commands commonly used in this section are:

Boundary Condition Section

This section has commands to apply boundary conditions such as velocity boundary conditions, loads on particles, concentration boundary conditions, and temperature boundary conditions. See the Applying Boundary Conditions commands.

Use Direct XML Commands

Alternatively, you can enter and edit XML commands to be directly input into the NairnMPM code engine. When running, XML commands will simply be copied to the bottom field and then input to NairnMPM. The OSUPDocs wiki explains all the direct XML commands.

The following example of direct XML commands is for impact between two disks. Notice that the XML commands can use any feature of XML files such as defining and using entities. You can copy and paste this example to an input commands file window to run an example MPM calculation.

<?xml version='1.0'?>
<!DOCTYPE JANFEAInput SYSTEM 'NairnMPM.dtd'
[
 <!ENTITY modulus '1.0e-02'>
 <!ENTITY vel '1000'>
 <!ENTITY maxtime '0.1'>
 <!ENTITY atime '2.5e-03'>
 <!ENTITY nx '30'>
 <!ENTITY ny '15'>
]>
<JANFEAInput version='3'>

<!-- MPM analysis of two disks that impact an bounce off. It is a
     small analysis to complete rapidly and test the code

     The entities above can change some parameters:
       modulus: modulus of the spheres
       vel: velocity of the approach
       maxtime: time to stop calculation
       atime: archive time
       nx,ny: cells in x an y directions. Must each be multiple
              of 5 and ny = 2*nx
-->

  <Header>
    <Description>
Title: MPM Analysis
User Name: User Name
    Two disks colliding
    </Description>
    <Analysis>10</Analysis>
  </Header>

  <MPMHeader>
    <ArchiveTime>&atime;</ArchiveTime>
    <MaxTime>&maxtime;</MaxTime>
    <ArchiveRoot>TwoDisks/USAVG.</ArchiveRoot>
    <MPMArchiveOrder>iYYYYNNNNNNNN</MPMArchiveOrder>
    <GlobalArchiveTime>&atime;</GlobalArchiveTime>
    <GlobalArchive type='sxx' material='1'/>
    <GlobalArchive type='Kinetic Energy'/>
  </MPMHeader>

  <Mesh output='file'>
    <Grid xmin='0' xmax='100' ymin='0' ymax='50'>
      <Horiz nx='&nx;' rx='1.0'/>
      <Vert ny='&ny;' ry='1.0'/>
    </Grid>
  </Mesh>

  <MaterialPoints>
    <Body mat='1' angle='0' thick='1' vx='&vel;' vy='0'>
      <Oval xmin='10' xmax='40' ymin='10' ymax='40'/>     
    </Body>
    <Body mat='2' angle='0' thick='1' vx='-&vel;' vy='0'>
      <Oval xmin='60' xmax='90' ymin='10' ymax='40'/>     
    </Body>
  </MaterialPoints>

  <Material Type='1' Name='Polymer 1'>
    <rho>1.5</rho>
    <E>&modulus;</E>
    <nu>0.33</nu>
    <alpha>60</alpha>
  </Material>

  <Material Type='1' Name='Polymer 1'>
    <rho>1.5</rho>
    <E>&modulus;</E>
    <nu>0.33</nu>
    <alpha>60</alpha>
  </Material>

  <GridBCs>
    <BCLine x1='0' y1='0' x2='100' y2='0'>
      <DisBC dir='2' disp='0'/>
    </BCLine>
    <BCLine x1='100' y1='0' x2='100' y2='50'>
      <DisBC dir='1' disp='0'/>
    </BCLine>
    <BCLine x1='0' y1='50' x2='100' y2='50'>
      <DisBC dir='2' disp='0'/>
    </BCLine>
    <BCLine x1='0' y1='0' x2='0' y2='50'>
      <DisBC dir='1' disp='0'/>
    </BCLine>
  </GridBCs>

</JANFEAInput>