MPM Grid Generation
MPM calculations use a background grid. It can be created with commands on this page.
Grid Generation in Scripted Files
For 2D analysis, the entire grid in generate with the following commands:
GridHoriz (nx),<(symx)>,<(symxdir)> GridVert (ny),<(symy)>,<(symydir)> GridThickness (thick) GridRect (xmin),(xmax),(ymin),(ymax)
For 2D analysis, the entire grid in generate with the following commands:
GridHoriz (nx),<(symx)>,<(symxdir)> GridVert (ny),<(symy)>,<(symydir)> GridDepth (nz),<(symz)>,<(symzdir)> GridRect (xmin),(xmax),(ymin),(ymax),(zmin),(zmax)
where
- (nx), (ny), (nz) - the number of elements in the x, y, and z directions. For axisymmetric calculations (nx) (ny) are the number of elements in the R and Z directions.
- (symx) and (symxdir) (and the analogous ones for y and z) - these optional settings are used to define symmetry planes along one or more axes. Note that a symmetry plane is not allowed in the R direction (i.e., x direction) of axisymmetric calculations.
- (thick) - the grid thickness in 2D planar calculations (see below for details on grid thickness)
- (xmin),(xmax),(ymin),(ymax),(zmin),(zmax) - the ranges for the grid only each axis ((zmin) and (zmax) are only used for 3D calculations).
Grid Generation in XML Files
The entire grid is generated within the <Mesh> block. For 2D analyses, use the following commands are:
<Mesh output='(file)'> <Grid units='mm' xmin='(xmin)' xmax='(xmax)' ymin='(ymin)' ymax='(ymax)' thickness='(thick)'> <Horiz nx='(nx)' sym='(symx)' symdir='(symxdir)'/> <Vert ny='(ny)' sym='(symy)' symdir='(symydir)'/> </Grid> </Mesh>
Axisymmetric calculations use x and y limits for R and Z limits. For 3D analyses, use the following commands:
<Mesh output='(file)'> <Grid units='mm' xmin='(xmin)' xmax='(xmax)' ymin='(ymin)' ymax='(ymax)' zmin='(zmin)' zmax='(zmax)'> <Horiz nx='(nx)' sym='(symx)' symdir='(symxdir)'/> <Vert ny='(ny)' sym='(symy)' symdir='(symydir)'/> <Depth nz='(nz)' sym='(symz)' symdir='(symzdir)'/> </Grid> </Mesh>
The parameters have the same meaning as the parameters for scripted file. XML commands have two additional options:
- (file) - save grid
- Instead of setting the grid by entering the number
Symmetry Planes
By using the optional (symx) and (symxdir) (and the analogous ones for y and z) in GridHoriz, GridVert, or GridDepth commands (or in <Horiz>, <Vert> or <Depth> XML commands), you can create a symmetry plane along one or more axes. The plane is located at x=(symx) (or y=(symy) or z=(symz)). If the corresponding direction property (e.g., (symxdir)) is equal to -1 (or is omitted), the plane is at the minimum edge for the coordinate; if the direction is equal to +1, the plane is at the maximum edge.
The creation of a symmetry plane will do the following:
- Delete all velocity boundary conditions in the specified axis direction that are beyond the symmetry plane because they are not needed (e.g., at values x≤(symx) for (symxdir)=-1 or x≥(symx) for (symxdir)=+1).
- Create boundary condition for every node in the plane at (symx) (or (symy) or (symz)) with velocity in the axis direction set to zero. Note that the symmetry plane must fall on a plane of nodes in the grid, otherwise an error will result.
- Create a second layer of boundary conditions one element from the symmetry plane (e.g., at (symx)+(symxdir)*cell where cell is the cell size along the axis) also with velocity in the axis direction set to zero (this second layer of boundary conditions may be handled differently in the future, but currently they are standard zero velocity boundary conditions). A second layer of boundary conditions is needed for best results when using GIMP or CPDI shape functions.
- Whenever contact occurs for a node on the plane at(symx) (or (symy) or (symz)), the volume gradient in the symmetry direction is set to zero and the volume is doubled.
Symmetry planes are designed to be actual symmetry planes. In other words, the real problem you are trying to solve is where the full object is the object on one side of the symmetry plane combined with its reflection on the opposite side. Although you can manually create pseudo-symmetry planes by creating two rows of zero velocity boundary conditions, the manual approach will not handle contact correctly. When contact may occur on the symmetry plane, the code needs to explicitly know about those planes so it can adjust volumes and volume gradients to account for symmetry. The above approach to symmetry achieves that goal (i.e., item #4 above).
Although setting a symmetry plane seems to be a short cut to setting zero velocity boundary conditions on an edge, if that edge corresponds to a real edge of the object and not to a symmetry plane, you should manually create those boundary conditions rather than use a symmetry plane. In other words, the mechanics (especially contact) at an edge are different than at a symmetry plane.
Notes
The GridThickness in planar 2D calculations defines the thickness of the grid. It is not needed for axisymmetric calculations. In planar calculations, the thickness is required when doing multimaterial contact that includes the optional volume check or when using traction, concentration flux or heat flux boundary conditions. If omitted, the thickness will be assumed to be 1 mm and if that is not correct, the volume screening or boundary conditions will be wrong. The GridThickness is optional in single-material mode because thickness can be set when defining material point regions and when defining cracks. If used, however, all material points and cracks will default to this grid thickness. You can enter different values, although it is not recommended (and may change the physics in multimaterial simulations). A warning is printed in the output if a crack thickness does not match the grid thickness. Currently no warning is given if material points have a different thickness. The thickness must be set before using GridRect to set the size of the background grid. The GridThickness command is only allowed for MPM analyses.
When using a GIMP method (uGIMP, lCPDI, or qCPDI), a particle is considered to have left the grid if it moves into any element on the edge of the analysis. Thus, the use of a GIMP method will cause this command to automatically add an extra boundary of elements.