Rigid Material
Constitutive Law
This MPM material is actually two materials in one, depending on the value for its SetDirection property.
Moving Boundary Condition
If SetDirection is 0 through 7, the material is not really a material and points that use this type of rigid material will not really be part of the MPM analysis. These rigid material points are used to set boundary conditions on the grid that move with the particles. The rigid material points should be initialized to a velocity, temperature, or concentration when they are created in Region commands. As the rigid material points move through the grid, all nodes connected to those points will be assigned grid-based boundary conditions for the selected particle properties of velocity, temperature, and/or concentration. To have the boundary condition vary in time and position, use the settingFunction(2)(3) and valueFunction properties below to set the value with a user defined functions rather than using the initial particle properties to pick a constant value.
As boundary conditions dynamically created by rigid particles cross between grid elements, the boundary conditions jump for some nodes to neighboring nodes. These jumps can induce artifacts. To minimize these artifacts, the mirrored property should be set, whenever possible, depending on the direction of motion.
Rigid Contact Material
If SetDirection is 8, the material will correspond to actual material points that move through the analysis. Since they are rigid, they will move with their prescribed velocity. They will interact with other material points only through multimaterial contact or imperfect interface laws and thus this type of rigid material can only be used in multimaterial mode MPM calculations.
The advantage of this type of rigid material (unlike the other type) is that you can set frictional properties for contact between rigid materials and non-rigid materials or you can use multimaterial methods to model imperfect interfaces. These rigid materials will move in the direction defined by the initial velocity, or, by using settingFunction(2)(3) properties below, they can moved by any velocity given by user defined functions. If two different rigid materials with SetDirection=8 interact at the same node, however, there is a conflict and the calculations will stop. Finally, because this type of rigid material does not set boundary conditions, it cannot be used to set temperature or concentration.
A SetDirection=8 rigid material ignores cracks, but that actually makes it possible to use them for new crack problems. For example, these rigid particles can provide wedge opening of a crack. If the rigid particles run along an explicit crack plane, those particles may contact particles on both sides of the crack, which can move the top and bottom surfaces of the crack apart. It may be only way to wedge open a crack (i.e., the only material that can act like it is within a crack rather than on either side of the crack). All crack calculations (e.g., crack contact, traction laws, imperfect interfaces, updating of crack position, and J integral) will ignore the rigid particles. The interactions with the rigid particles arise only by contact laws between the rigid particles and the various crack velocity fields.
Material Properties
The rigid material properties are set with the following commands:
Property | Description | Units | Default |
---|---|---|---|
SetDirection direction |
|
none | 0 |
SetTemperature temperature |
1 to set temperature boundary condition or 0 to not set it. This setting has no affect unless the analysis is doing thermal calculations. Can only be used if SetDirection is 0 through 7. Use SetDirection = 0 to having moving heat source only; use SetDirection = 1 to 7 to combine moving heat source with velocity boundary conditions. (Note: the temperature property name can only be use in scripted files) | none | 0 |
SetConcentration concentration |
1 to set concentration boundary condition or 0 to not set it. This setting has no affect unless the analysis is doing diffusion calculations. Can only be used if SetDirection is 0 through 7. Use SetDirection = 0 to having moving concentration source only; use SetDirection = 1 to 7 to combine moving concentration source with velocity boundary conditions. (Note: the concentration property name can only be use in scripted files) | none | 0 |
settingFunction settingFunction2 settingFunction3 |
You can enter one to three user defined functions (settingFunction and settingFunction1 are synonyms) of time, time step, and position. The function should evaluate to the velocity in mm/s and it will set the rigid-particle velocity (any initial velocity setting will be ignored). See example below for a problem that needs to use time step in the functions. | none | none |
valueFunction | You can enter a user defined function of time, time step, and position. The function should evaluate to the temperature or concentration potential. Any initial temperature or concentration assigned to the rigid particles will be ignored. Because there is only one value function, you cannot independently set temperature and concentration with a function. Thus rigid particles with value functions should only set one of these quantities. | none | none |
mirrored | Set to -1 or +1 to indicate that rigid particles with SetDirection = 1 to 7 are setting a velocity on the minimum edge (-1) or maximum edge (+1) of the object along the moving direction. This property can improve the performance of velocity boundary conditions as explained below. The default setting of 0 means to not use mirroring. | none | 0 |
The SetDirection options 1 through 7 set grid velocities to various components of the rigid particle velocity by bit-wise selection with first three bits being for x, y, and z directions (or R, Z, θ if axisymmetric). A value of 0 sets no direction:
Value | Binary | Set Directions |
---|---|---|
0 | 0x000 | no direction |
1 | 0x001 | x only |
2 | 0x010 | y only |
3 | 0x011 | x and y |
4 | 0x100 | z only |
5 | 0x101 | x and z |
6 | 0x110 | y and x |
7 | 0x111 | x, y, and z |
The (up to) three setting functions can set up to three velocity direction, and their meaning depends on the current setting for the SetDirection property:
- For SetDirection = 1 to 7 the functions must be given in order (settingFunction, settingFunction2, and settingFunction3) and they apply to the velocities that are controlled in order (e.g., when controlling y and z with SetDirection=6, the settingFunction is for y velocity and settingFunction2 is for z velocity).
- For SetDirection = 8, the three functions (regardless of order) are for setting x, y, and z velocities and zero to three can be used. Any not controlled will use the initial particle velocity.
- Note that in scripted files, you can use settingFunction1 (or x) as a synonym for settingFunction and you can use settingFunctiony (or z) as a synonym for settingFunction2 (or 3).
Rotation of Rigid Object
The velocity field of a block of rigid particles centered on (x0,y0) and rotating in the counter-clockwise direction can be described by:
[math]\displaystyle{ (v_x,v_y) = 2\pi\omega\bigl(-(y-y_0),x-x_0\bigr) }[/math]
where ω is the rotational frequency. If you model rotation of these particles by setting these x and y velocities, the shape might distort with time and could distort rapidly at high rotation speeds. The problem is this tangential velocity field does not account for the discrete rotation that occurs during each time step. As illustrated on the right, a tangential velocity (vtang) moves the particle in the tangential direction, but after a finite time step, the motion should be to a rotated positioned. If this rotation affect is not accounted for, the rigid object will slowly expand as the simulation proceeds. The solution is to replace vtang with an effective velocity, veff. A particle that starts at (x-x0,y-y0) = (r cosθ,r sinθ) (where r and θ are polar coordinates based on the center of the object), will end at (r cos(θ+dθ),r sin(θ+dθ)) where the incremental rotation angle is:
[math]\displaystyle{ d\theta = 2\pi\omega\Delta t }[/math]
where Δt is time step in msec and ω is now the rotational speed in revolutions per msec. The effective velocity becomes:
[math]\displaystyle{ v_{eff} = {r\over \Delta t}\bigl( \cos(\theta+d\theta) - \cos\theta, \sin(\theta+d\theta) - \sin\theta\bigr) }[/math]
In terms of variables available to user defined functions, the effective velocity field (in mm/sec) for a rotating rigid object is:
[math]\displaystyle{ v_x = {1000\over \Delta t}\bigl((x-x_0)(\cos(2\pi\omega\Delta t)-1)-(y-y_0)\sin(2\pi\omega\Delta t)\bigr) }[/math]
[math]\displaystyle{ v_y = {1000\over \Delta t}\bigl((x-x_0)\sin(2\pi\omega\Delta t) + (y-y_0)(\cos(2\pi\omega\Delta t)-1)\bigr) }[/math]
This function is an example of the need to allow time step as a variable in user defined functions. It generalized the tangential velocity field to allow for discrete rotation in each time step. A rotating and translating object can be modeled by adding the translational velocity and by accounting for any time dependence of x0 and y0.
Mirrored Velocity Property
See figure (to be draw). The velocity at the second layer is set to
[math]\displaystyle{ V_{BC} = 2V_0 - V_{ghost} }[/math]
Rigid Reaction and Contact Forces
Rigid materials with SetDirection = 1 to 7 interact with other material through boundary conditions on the grid. During boundary condition calculations, the code calculates reaction forces at velocity boundary conditions. These forces can be output as follows:
- The global archiving options has options for reactionx, reactiony, and reactionz that output components of the total reaction forces at velocity boundary conditions on the grid. By using the (material) option in the global archive settings, the output can be reaction forces on boundary conditions created by one specific type of rigid material.
Rigid materials with SetDirection = 8 interact with other material through contacts. During contact calculations, the code calculates the contact forces. These force can be a useful output of the simulation. The rigid material controls position and the contact force provide the result surface forces. There are two ways to output contact forces:
- The global archiving options has options for contactx, contacty, and contactz that output components of the total contact forces on the grid due to all rigid particles in the simulation.
- The VTKArchive Custom Task can archive contactForces. This option gives contact force on each node in the grid. Contact forces are only available in this grid archive, and not in particle archiving, because they are a result of a grid-based calculation in multimaterial mode simulations.
History Data
None
Notes
- Note that multimaterial mode MPM calculations can combine moving boundary condition rigid particles (direction=0 to 7) with contact rigid particles (direction=8) to provide different functions, but single-material mode MPM can only use boundary condition rigid particles (direction=0 to 7).
- Note that creating rigid particles but not setting any velocity direction (direction=0) can be used to create moving temperature or concentration boundary conditions that move over the particles; i.e., the rigid particles will move through the real particles. Such moving temperature or concentration boundary conditions can only move at a constant velocity defined by the initial particle velocity, because the direction=0 setting implies no axis is controlled by a function.
- If a rigid particle is added to a problem, but it does not set any velocity, temperature, or concentration (direction=temperature=concentration=0 or omitted), it will have no affect on the calculations. It may plot in visualization software and therefore appear to be part of the simulation, but it will be identical to the results that would be obtained if it had never been added to the problem.