
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:
- Open or create an input commands file
- Set up the calculation commands using one of two methods:
- Run the MPM calculations
- Analyze and Plot the results
Quick Start MPM Calculations
To see a sample MPM analysis that illustrates the above process, try the following steps:
- 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.
- 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.
- 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.

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:
- Main Analysis Header commands
- MPM Analysis Header commands
- Material definition commands
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:
- Explicit Cracks commands
- Thermal Calculation commands
- Diffusion Calculation commands
- Custom Task commands
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>