Difference between revisions of "MPM Region and Hole Commands"
Line 92: | Line 92: | ||
<MaterialPoints> | <MaterialPoints> | ||
<Membrane mat='(matid)' vx='(velx)' vy='(vely)' vz='(velz)' thick='(thick)' | <Membrane mat='(matid)' vx='(velx)' vy='(vely)' vz='(velz)' thick='(thick)' angle='(angle)' | ||
temp='(temp)' conc='(conc)' wtconc='(wtconc)' pp='(pp)'> | |||
< | <MemLine y1='(y1)' y2='(y2)' x1='(x1)' x2='(x2)' thickness='(mthick)' length='(mlen)'/> | ||
(interspersed [[Setting Material Point Initial Velocity|initial velocity commands]]) | (interspersed [[Setting Material Point Initial Velocity|initial velocity commands]]) | ||
(interspersed [[Setting Material Point Initial Velocity#Initial Angular Velocity|initial angular momentum commands]]) | (interspersed [[Setting Material Point Initial Velocity#Initial Angular Velocity|initial angular momentum commands]]) | ||
</Membrane> | |||
</ | |||
.... | .... | ||
</MaterialPoints> | </MaterialPoints> | ||
where attributes on the <tt><Membrane></tt> are the same as those defined for the [[#Region Commands|<tt><Body></tt> element. The attributes on the <tt><MemLine></tt> element are: | |||
== Notes == | == Notes == |
Revision as of 08:47, 26 April 2024
In MPM, the most common way to discretize an object is to add material points to the background grid using Region commands and to designate regions of the grid has having no material points using Hole commands. Enclosed in these commands are various shape commands to define the object. An alternative and powerful option for discretizing an object is to create material points automatically from an image of the object.
When modeling with membrane materials (which are only in OSParticulas), membrane material points are added with <Membrane> XML elements.
Region Commands
Once the background grid is created, material points are added to the grid using a series of Region commands. In scripted files, the Region command defines material type, initial velocity, thickness (in 2D), and optionally an initial angle (for some anisotropic materials), temperature, and concentration. The command is
Region (matid),(velx),(vely),(velz) or (thick),<(property),(value)>... (an initial angular momentum command) (any number of shape commands) (one optional Transform Command) (interspersed rotation commands) EndRegion
In XML files, Region command are replaced by <Body> commands and optionally one <PointList> block. All these elements must be within the single <MaterialPoints> element in the input file:
<MaterialPoints> <PointList> (see help on PointList block) </PointList> <Body mat='(matid)' vx='(velx)' vy='(vely)' vz='(velz)' thick='(thick)' angle='(angle)' temp='(temp)' conc='(conc)' wtconc='(wtconc)' pp='(pp)'> <MatlPtsPerElement>(totalNumber)</MatlPtsPerElement> (interspersed initial velocity commands) (interspersed initial angular momentum commands) (any number of shape commands) (interspersed <Deform> and <Undeform> commands) (interspersed rotation commands) </Body> .... </MaterialPoints>
where
- (matid) is the material ID for a previously defined material (which must be a material number in XML files).
- (velx), (vely), and (velz) are the components of the initial velocity for all particles in the region (velz is only used for 3D simulations). The units are velocity units. In scripted input files, the velocities can be numerical constants or can be user defined functions of particle position. The values of the functions are applied to all particles in the region. In XML input files, the velocites must be numerical constants, but you can set position dependent velocities by using initial velocity commands within the <Body> element.
- (thick) is the thickness of each material point in length units. The thickness is only used for planar 2D calculations. In scripted files for axisymmetric calculations, the thickness parameter is still required, but it is only used for parameter alignment (its value is ignored).
- (totalNumber) is to optionally set the number of material points in each element of the background grid for this region to differ from the default setting.1 (it must be square or cube of points per side in 2D or 3D, respectively). This option is for XML files only. Use the "res" option below to pick points per element in scripted file.
Besides the above required parameters, you can provide optional parameters to set initial conditions for all particles in the region. In scripted files, the optional parameters appear in pairs. The first item in the pair (i.e., (property)) is the name of the property to set and the second item (i.e., (value)) is the initial value for that property. In XML files, the optional properties are set using optional attributes:
- angle,(angle) to set the initial rotation angle for the material axes about the z axis. The units are degrees. This parameter is sufficient for 2D analyses with constant material angle. See help on setting material angles for methods to set variable angles or to set more than one rotation angle in 3D calculations.
- temp,(temp) to set the initial particle temperature. The units are degrees.
- conc,(conc) to set the initial particle concentration potential. The dimensionless concentration potential must be from 0 to 1. Only used when doing diffusion calculations.
- (wtconc)to set concentration by weight fraction concentration instead of by concentration potential. The resulting potential will be (wtconc) divided by the material's saturation concentration. This option is only available in XML input files. The units are dimensionless and must be from 0 to the material's saturation concentration. Only used when doing diffusion calculations.
- pp,(pp) to set the initial particle pore pressure in pressure units. Only used when doing poroelasticity calculations.
- res,(axisNumber) is to optionally set the number of material points along each axis in each element of the background grid for this region to differ from the default setting.1 The total number of points per element is square (for 2D) or cube (for 3D) of (axisNumber).
Besides these particle properties, other material point properties some Particle-Based Boundary Conditions set initial values for particles (e.g., particle damage state).
The optional PointList Block can be used to define individual material points, each with individual initial conditions. The option is only available to XML input files.
Shape Commands
Between the Region command and the subsequent EndRegion command (or within each <Body> element), there can be any number of shape commands to define material point positions and the shapes. The details on these shape command are given elsewhere:
By nesting shapes, you can create many more types of shapes.
Hole Commands
The Hole command is used to designate regions of the background grid that should not have material points. In scripted files, the Hole command is:
Hole (any number of shape commands) EndHole
In XML files, the <Hole> block is:
<Hole> (any number of shape commands) </Hole>
Between the Hole command and the subsequent EndHole command (or within the <Hole> block), there can be any number of shape commands to define hole locations. The details on these shape command are given elsewhere:
By nesting shapes, you can create many more types of shapes.
An object with holes (or voids) is created by a sequence of Region and Hole commands. Each Region command fills every location within its shapes with a material point unless that location was previously designated as a hole. Each Hole command designates every location within its shapes as being a hole, but, if any location already has a material point, that point is left intact. In other words, the order of these commands is crucial. By selecting the correct order, you have greatly flexibility in creating objects with solid regions and void (or hole) regions.
Membrane Elements
Membrane material points can only be added in XML commands by added <Membrane> elements with the <MaterialPoints> element. The options are currently very limited. In 2D. membrane particles can only be added along a straight lines using an <MemLine> element. In 3D, the only option is particle within a flat plane using <MemPlane> element. In 2D, the details are
<MaterialPoints> <Membrane mat='(matid)' vx='(velx)' vy='(vely)' vz='(velz)' thick='(thick)' angle='(angle)' temp='(temp)' conc='(conc)' wtconc='(wtconc)' pp='(pp)'> <MemLine y1='(y1)' y2='(y2)' x1='(x1)' x2='(x2)' thickness='(mthick)' length='(mlen)'/> (interspersed initial velocity commands) (interspersed initial angular momentum commands) </Membrane> .... </MaterialPoints>
where attributes on the <Membrane> are the same as those defined for the [[#Region Commands|<Body> element. The attributes on the <MemLine> element are:
Notes
- If you set the number of material points per element in a region that differs from the default setting, the code will no longer check to make sure particles are not overlapping. The user is therefore responsible for defining non-overlapping regions. Note also that this setting can use any valid number per element and is not limited to the values allowed when choosing the default setting.