Difference between revisions of "Rigid Material"

From OSUPDOCS
Jump to navigation Jump to search
 
(43 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Constitutive Law ==
== Constitutive Law ==


This [[Material Models|MPM material]] is actually two materials in one, depending on the value for its <tt>SetDirection</tt> property.
These page documents two types of rigid [[Material Models|MPM materials]]  depending if you create a [[#RigidBC Material: Moving Boundary Condition|RigidBC material]] or a [[#RigidContact Material|RigidContact material]]. A <tt>RigidBC</tt> material implements moving boundary conditions while a <tt>RigidContact</tt> material is a moving rigid object that interacts with non-rigid materials by contact.


=== Moving Boundary Condition ===
== RigidBC Material: Moving Boundary Condition ==


If <tt>SetDirection</tt> 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 [[Grid-Based Boundary Conditions|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 [[MPM Region and Hole Commands|Region commands]]. As the rigid material points move through the grid, all nodes connected to those points will be assigned [[Grid-Based Boundary Conditions|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 <tt>settingFunction(2)(3)</tt> and <tt>valueFunction</tt> properties below to set the values with [[User Defined Functions|user defined functions]] rather than using the initial particle properties to pick a constant value.
Thiis 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 [[Grid-Based Boundary Conditions|boundary conditions on the grid]] that move with the particles. The rigid material points should be initialized to a velocity, temperature, concentration or pore pressure when they are created in [[MPM Region and Hole Commands|Region commands]]. As the rigid material points move through the grid, all nodes connected to those points will be assigned [[Grid-Based Boundary Conditions|grid-based boundary conditions]] for the selected particle properties of velocity, temperature, concentration, and/or pore pressure.


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 <tt>mirrored</tt> property should be set, whenever possible, depending on the direction of motion.
You use the <tt>direction</tt> property to determine which components of velocity are controlled by the moving rigid particles. Setting grid values for temperature, concentration or pore pressure and determine by other rigid material properties,


=== Rigid Contact Material ===
To have the boundary condition vary in time and position, use the <tt>settingFunction(2)(3)</tt> and <tt>valueFunction</tt> properties below to set the values with [[User Defined Functions|user defined functions]] rather than using the initial particle properties to pick a constant value. When the particle values vary with position, it is sometimes better to use the [[ExtrapolateRigid Command|ExtrapolateRigid mode]] that extrapolates rigid particle to the grid and sets boundary conditions from the extrapolated values instead of the particle values.


If <tt>SetDirection</tt> 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 MPM|multimaterial]] contact or [[Imperfect Interfaces|imperfect interface laws]] and thus this type of rigid material can only be used in [[Multimaterial MPM|multimaterial mode MPM calculations]].
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 <tt>mirrored</tt> property should be set, whenever possible, depending on the direction of motion.
 
The advantage of this type of rigid material (unlike the other type) is that you can set [[Friction|frictional properties]] for contact between rigid materials and non-rigid materials or you can use [[Multimaterial MPM|multimaterial methods]] to model [[Imperfect Interfaces|imperfect interfaces]]. These rigid materials will move in the direction defined by the initial velocity, or, by using <tt>settingFunction(2)(3)</tt> properties below, they can moved by any velocity given by [[User Defined Functions|user defined functions]]. If two ''different'' rigid materials with <tt>SetDirection=8</tt> 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 <tt>SetDirection=8</tt> rigid material ignores [[Defining Cracks|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 [[Defining Cracks|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>i.e.</i>, the only material that can act like it is within a crack rather than on either side of the crack). All crack calculations (<i>e.g.</i>, 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.
=== RigidBC Material Properties ===


== Material Properties ==
The rigid boundary condition material properties are set with the following commands:
 
The rigid material properties are set with the following commands:


{| class="wikitable"
{| class="wikitable"
Line 25: Line 21:
! Property !! Description !! Units !! Default
! Property !! Description !! Units !! Default
|-
|-
| SetDirection  <br> direction|| <ul><li>1 through 7: set grid velocities to various components of the rigid particle velocity (see table below). <li>8: create rigid material that interacts with non-rigid material by contact. <li>0: sets no velocity components, but can set temperature and/or concentration values from moving particles.</ul> (Note: the <tt>direction</tt> property name can only be used in scripted files) || none || 0
| SetDirection  <br> direction|| <ul><li>1 through 7: set grid velocities to various components of the rigid particle velocity (see table below). <li>0: sets no velocity components, but can set temperature and/or concentration values from moving particles.</ul> (Note: the <tt>direction</tt> property name can only be used in scripted files) || none || 0
|-
|-
| SetTemperature <br>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 <tt>SetDirection</tt> is 0 through 7. Use <tt>SetDirection</tt> = 0 to having moving heat source only; use <tt>SetDirection</tt> = 1 to 7 to combine moving heat source with velocity boundary conditions. (Note: the <tt>temperature</tt> property name can only be used in scripted files) || none || 0
| SetTemperature <br>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. Use <tt>SetDirection</tt> = 0 to having moving heat source only; use <tt>SetDirection</tt> = 1 to 7 to combine moving heat source with velocity boundary conditions. (Note: the <tt>temperature</tt> property name can only be used in scripted files) || none || 0
|-
|-
| SetConcentration <br>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 <tt>SetDirection</tt> is 0 through 7. Use <tt>SetDirection</tt> = 0 to having moving concentration source only; use <tt>SetDirection</tt> = 1 to 7 to combine moving concentration source with velocity boundary conditions. (Note: the <tt>concentration</tt> property name can only be used in scripted files)|| none || 0
| SetConcentration<br>concentration || 1 to set concentration boundary condition or 0 to not set it (in scripted files only). This setting has no affect unless the analysis is doing [[Diffusion Calculations|diffusion calculations]]. Use <tt>SetDirection</tt> = 0 to having moving concentration source only; use <tt>SetDirection</tt> = 1 to 7 to combine moving concentration source with velocity boundary conditions. (Note: the <tt>concentration</tt> property name can only be used in scripted files)|| none || 0
|-
|-
| settingFunction<br>settingFunction2<br>settingFunction3 || You can enter one to three [[User Defined Functions|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 [[#Rotation of Rigid Object|below]] for a problem that needs to use time step in the functions. || none || none
| SetPorePressure<br>porepressure || 1 to set pore pressure boundary condition or 0 to not set it (in scripted files only). This setting has no affect unless the analysis is doing [[Poroelasticity Calculations|poroelasticity calculations]]. Use <tt>SetDirection</tt> = 0 to having moving pore pressure source only; use <tt>SetDirection</tt> = 1 to 7 to combine moving pore pressure source with velocity boundary conditions. (Note: the <tt>porepressure</tt> property name can only be used in scripted files)|| none || 0
|-
|-
| valueFunction || You can enter a [[User Defined Functions|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
| settingFunction<br>settingFunction2<br>settingFunction3 || You can enter one to three [[User Defined Functions|user defined functions]] (settingFunction and settingFunction1 are synonyms) of time, time step, and position. The function should evaluate to the velocity in [[ConsistentUnits Command#Legacy and Consistent Units|velocity units]] and it will set the rigid-particle velocity (any initial velocity setting will be ignored). See example [[#Rotation of Rigid Object|below]] for a problem that needs to use time step in the functions. || none || none
|-
| valueFunction || You can enter a [[User Defined Functions|user defined function]] of time, time step, and position. The function should evaluate to the temperature, concentration potential, or pore pressure. 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, concentration, and pore pressure 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 <tt>SetDirection</tt> = 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 [[#Mirrored Velocity Property|below]]. The default setting of 0 means to not use mirroring. || none || 0
| mirrored || Set to -1 or +1 to indicate that rigid particles with <tt>SetDirection</tt> = 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 [[#Mirrored Velocity Property|below]]. The default setting of 0 means to not use mirroring. || none || 0
Line 61: Line 59:
|}
|}


The (up to) three setting functions can set up to three velocity direction, and their meaning depends on the current setting for the <tt>SetDirection</tt> property:
The (up to) three setting functions can set up to three velocity direction. The functions must be given in order (<tt>settingFunction</tt>, <tt>settingFunction2</tt>, and <tt>settingFunction3</tt>) and they apply to the velocities that are controlled in order (''e.g.'', when controlling <tt>y</tt> and <tt>z</tt> with <tt>SetDirection</tt>=6, the <tt>settingFunction</tt> is for <tt>y</tt> velocity and <tt>settingFunction2</tt> is for <tt>z</tt> velocity). Note that in scripted files, you can use <tt>settingFunction1</tt> (or <tt>x</tt>) as a synonym for <tt>settingFunction</tt> and you can use <tt>settingFunctiony</tt> (or <tt>z</tt>) as a synonym for <tt>settingFunction2</tt> (or <tt>3</tt>).
 
* For <tt>SetDirection</tt> =  1 to 7 the functions must be given in order (<tt>settingFunction</tt>, <tt>settingFunction2</tt>, and <tt>settingFunction3</tt>) and they apply to the velocities that are controlled in order (''e.g.'', when controlling <tt>y</tt> and <tt>z</tt> with <tt>SetDirection</tt>=6, the <tt>settingFunction</tt> is for <tt>y</tt> velocity and <tt>settingFunction2</tt> is for <tt>z</tt> velocity).
* For <tt>SetDirection</tt> = 8, the three functions (regardless of order) are for setting <tt>x</tt>, <tt>y</tt>, and <tt>z</tt> 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 <tt>settingFunction1</tt> (or <tt>x</tt>) as a synonym for <tt>settingFunction</tt> and you can use <tt>settingFunctiony</tt> (or <tt>z</tt>) as a synonym for <tt>settingFunction2</tt> (or <tt>3</tt>).


=== Rotation of Rigid Object ===
=== Rotation of Rigid Object ===
Line 72: Line 66:


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math> (v_x,v_y) = 2\pi\omega\bigl(-(y-y_0),x-x_0\bigr)</math>
<math> (v_x,v_y) = \omega r\bigl(-\sin\theta,\cos\theta\bigr) = 2\pi f \bigl(-(y-y_0),x-x_0\bigr)</math>


[[File:RigidRotation.jpg|right]]
[[File:RigidRotation.jpg|right]]


where &omega; is the rotational frequency. If you model rotation of these particles by setting these <tt>x</tt> and <tt>y</tt> 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 (''v<sub>tang</sub>'') 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 ''v<sub>tang</sub>'' with an effective velocity, ''v<sub>eff</sub>''. A particle that starts at <tt>(x-x<sub>0</sub>,y-y<sub>0</sub>)</tt> = <tt>(r</tt> <tt>cos&theta;,r</tt> <tt>sin&theta;)</tt> (where <tt>r</tt> and <tt>&theta;</tt> are polar coordinates based on the center of the object), will end at <tt>(r</tt> <tt>cos(&theta;+d&theta;),r</tt> <tt>sin(&theta;+d&theta;))</tt> where the incremental rotation angle is:
where <tt>r</tt> and <tt>&theta;</tt> are polar coordinates based on the center of the object, &omega; is the angular velocity and ''f'' is frequency in cycles per second. If you model rotation of these particles by setting these <tt>x</tt> and <tt>y</tt> 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 (''v<sub>tang</sub>'') 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 ''v<sub>tang</sub>'' with an effective velocity, ''v<sub>eff</sub>''. A particle that starts at <tt>(x-x<sub>0</sub>,y-y<sub>0</sub>)</tt> = <tt>(r</tt> <tt>cos&theta;,r</tt> <tt>sin&theta;)</tt>, should end at <tt>(r</tt> <tt>cos(&theta;+d&theta;),r</tt> <tt>sin(&theta;+d&theta;))</tt> where the incremental rotation angle is:


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math> d\theta =  2\pi\omega\Delta t</math>
<math> d\theta =  2\pi f\Delta t</math>


where &Delta;t is time step in msec and &omega; is now the rotational speed in revolutions per msec. The effective velocity becomes:
where &Delta;t is time step. The effective velocity becomes:


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math> v_{eff} =  {r\over \Delta t}\bigl( \cos(\theta+d\theta) - \cos\theta, \sin(\theta+d\theta) - \sin\theta\bigr)</math>
<math> 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|user defined functions]], the effective velocity field (in mm/sec) for a rotating rigid object is:
In terms of variables available to [[User Defined Functions|user defined functions]], the effective velocity field (in [[ConsistentUnits Command#Legacy and Consistent Units|velocity units]] when using consistent units) for a rotating rigid object is:


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math> 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> v_x = {1\over \Delta t}\bigl(-(y-y_0)\sin(2\pi f\Delta t)+(x-x_0)(\cos(2\pi f\Delta t)-1)\bigr)</math>


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<math> 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>
<math> v_y = {1\over \Delta t}\bigl((x-x_0)\sin(2\pi f\Delta t) + (y-y_0)(\cos(2\pi f\Delta t)-1)\bigr)</math>


This function is an example of the need to allow time step as a variable in [[User Defined Functions|user defined functions]]. It generalizes 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 <tt>x<sub>0</sub></tt> and <tt>y<sub>0</sub></tt>.
where ''f'' is set to 1/''t<sub>rev</sub>'' where ''t<sub>rev</sub>'' is the amount of simulation time you want to complete one complete revolution. For clockwise rotation, change the sign of each velocity. This function is an example of the need to allow time step as a variable in [[User Defined Functions|user defined functions]]. It generalizes 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 <tt>x<sub>0</sub></tt> and <tt>y<sub>0</sub></tt>.


=== Mirrored Velocity Property ===
=== Mirrored Velocity Property ===
Line 107: Line 101:
[[File:Mirrored.jpg|center]]
[[File:Mirrored.jpg|center]]


The <tt>mirrored</tt> property is set to +1 or -1 to specify the direction from the interior node to the rigid particles. Use when the rigid particles on at the minimum edge of the object at +1 when they are on the maximum edge (as in the above example). At large deformations (after many element crossings) additional artifacts may arise, but mirroring is always beneficial when it can be used in a simulation.
The <tt>mirrored</tt> property is set to +1 or -1 to specify the direction from the interior node to the rigid particles. Use -1 when the rigid particles are at the minimum edge of the object and use +1 when they are at the maximum edge (as in the above example). At large deformations (after many element crossings) additional artifacts may arise, but mirroring is always beneficial when it can be used in a simulation.


== Rigid Reaction and Contact Forces ==
Note that the mirroring property is deactivated when using the [[ExtrapolateRigid Command|ExtrapolateRigid mode]] for setting boundary conditions from rigid particles.


Rigid materials with <tt>SetDirection</tt> = 1 to 7 interact with other material through [[Grid-Based Boundary Conditions|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:
=== Rigid Reaction Forces ===
 
Rigid boundary condition materials with interact with other material through [[Grid-Based Boundary Conditions|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 [[MPM Global Archiving Options|global archiving options]] has options for <tt>reactionx</tt>, <tt>reactiony</tt>, and <tt>reactionz</tt> that output components of the total reaction forces at [[Grid-Based Boundary Conditions|velocity boundary conditions on the grid]]. By using the <tt>(material)</tt> option in the [[MPM Global Archiving Options|global archive settings]], the output can be reaction forces on boundary conditions created by one specific type of rigid material.
* The [[MPM Global Archiving Options|global archiving options]] has options for <tt>reactionx</tt>, <tt>reactiony</tt>, and <tt>reactionz</tt> that output components of the total reaction forces at [[Grid-Based Boundary Conditions|velocity boundary conditions on the grid]]. By using the <tt>(material)</tt> option in the [[MPM Global Archiving Options|global archive settings]], the output can be reaction forces on boundary conditions created by one specific type of rigid material.
* If the [[ExtrapolateRigid Command|ExtrapolateRigid mode]] is activated, you can archive reaction forces for all rigid particles by setting <tt>(material)</tt> option in the [[MPM Global Archiving Options|global archive settings]] to -40 (the ID for all such boundary conditions). In this mode, it is not possible to partition reaction forces into forces on different types of rigid materials.
=== Rigid BC Material History Data ===
None
== RigidContact Material ==
Particle with this material type will correspond to actual material points that move through the analysis at specified velocities. Since they are rigid, they will move with their prescribed velocity. They will interact with other material points only through  [[Multimaterial MPM|multimaterial]] contact or [[Imperfect Interfaces|imperfect interface laws]] and thus this type of rigid material can only be used in [[Multimaterial MPM|multimaterial mode MPM calculations]].
The advantage of this type of rigid material (unlike the other type) is that you can set [[Friction|frictional properties]] for contact between rigid materials and non-rigid materials or you can use [[Multimaterial MPM|multimaterial methods]] to model [[Imperfect Interfaces|imperfect interfaces]]. These rigid materials will move in the direction defined by the initial velocity, or, by using <tt>settingFunction(2)(3)</tt> properties below, they can moved by any velocity given by [[User Defined Functions|user defined functions]]. If two ''different'' rigid contact materials interact at the same node, however, there is a conflict and the calculations will stop.
Rigid contact materials ignores [[Defining Cracks|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 [[Defining Cracks|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>i.e.</i>, the only material that can act like it is within a crack rather than on either side of the crack). All crack calculations (<i>e.g.</i>, 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.
=== RigidContact Material Properties ===


Rigid materials with <tt>SetDirection</tt> = 8 interact with other material through contact. 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 provides the resulting surface forces. There are two ways to output contact forces:
The rigid contact material properties are set with the following commands:
 
{| class="wikitable"
|-
! Property !! Description !! Units !! Default
|-
| settingFunction<br>settingFunction2<br>settingFunction3 || You can enter one to three [[User Defined Functions|user defined functions]] (settingFunction and settingFunction1 are synonyms) of time, time step, and position. The function should evaluate to the velocity in [[ConsistentUnits Command#Legacy and Consistent Units|velocity units]] and it will set the rigid-particle velocity (any initial velocity setting will be ignored). See example [[#Rotation of Rigid Object|below]] for a problem that needs to use time step in the functions. || none || none
|}
 
The possible three setting functions (regardless of order) are for setting <tt>x</tt>, <tt>y</tt>, and <tt>z</tt> 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 <tt>settingFunction1</tt> (or <tt>x</tt>) as a synonym for <tt>settingFunction</tt> and you can use <tt>settingFunctiony</tt> (or <tt>z</tt>) as a synonym for <tt>settingFunction2</tt> (or <tt>3</tt>).
 
=== Rigid Reaction and Contact Forces ===
 
Rigid contact materials interact with other material through contact. 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 provides the resulting surface forces. There are two ways to output contact forces:


* The [[MPM Global Archiving Options|global archiving options]] has options for <tt>contactx</tt>, <tt>contacty</tt>, and <tt>contactz</tt> that output components of the total contact forces on the grid due to all rigid particles in the simulation.
* The [[MPM Global Archiving Options|global archiving options]] has options for <tt>contactx</tt>, <tt>contacty</tt>, and <tt>contactz</tt> 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 <tt>contactForces</tt>. 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 MPM|multimaterial mode]] simulations.
* The [[VTKArchive Custom Task]] can archive <tt>contactForces</tt>. 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 MPM|multimaterial mode]] simulations.


== History Data ==
=== Rigid Contact Material History Data ===


None
None
== Deprecated Rigid Material ==
Prior to introduction of separate rigid boundary condition particles and rigid contact particles, simulations had only one type of rigid material. This type had two functions by choosing <tt>SetDirection</tt> from 0 to 7 to get rigid boundary condition particles or <tt>SetDirection</tt> equal to 8 for rigid contact particles. Old simulations that define rigid materials by this method still work, but that approach is deprecated. New simulations should specify rigid materials as "RigidBC" or  "RigidContact" materials.


== Notes ==
== Notes ==
Line 128: Line 156:
<ol>
<ol>


<li>Note that [[Multimaterial MPM|multimaterial mode MPM]] calculations can combine moving boundary condition rigid particles (<tt>direction</tt>=0 to 7) with contact rigid particles (<tt>direction</tt>=8) to provide different functions, but single-material mode MPM can only use boundary condition rigid particles (<tt>direction</tt>=0 to 7).
<li>Note that [[Multimaterial MPM|multimaterial mode MPM]] calculations can combine rigid boundary condition particles with rigid contact particlesto provide different functions, but single-material mode MPM can only use boundary condition rigid particles (<tt>direction</tt>=0 to 7).


<li>Note that creating rigid particles but not setting any velocity direction (<tt>direction</tt>=0) can be used to create moving temperature or concentration boundary conditions that move over the particles; <i>i.e.</i>, 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 <tt>direction</tt>=0 setting implies no axis is controlled by a function.
<li>Note that creating rigid boundary condition particles but not setting any velocity direction (<tt>direction</tt>=0) can be used to create moving temperature or concentration boundary conditions that move over the particles; <i>i.e.</i>, 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 <tt>direction</tt>=0 setting implies no axis is controlled by a function.


<li>If a rigid particle is added to a problem, but it does not set any velocity, temperature, or concentration (<tt>direction</tt>=<tt>temperature</tt>=<tt>concentration</tt>=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.
<li>If a rigid particle is added to a problem, but it does not set any velocity, temperature, or concentration (<tt>direction</tt>=<tt>temperature</tt>=<tt>concentration</tt>=<tt>porepressure</tt>=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.


</ol>
</ol>
Line 138: Line 166:
== Examples ==
== Examples ==


  Material "rigid","Loading Clamp","Rigid"
  Material "rigid","Loading Clamp","RigidBC"
   direction 1
   direction 1
   mirrored 1
   mirrored 1
  Done
  Done

Latest revision as of 08:37, 28 November 2023

Constitutive Law

These page documents two types of rigid MPM materials depending if you create a RigidBC material or a RigidContact material. A RigidBC material implements moving boundary conditions while a RigidContact material is a moving rigid object that interacts with non-rigid materials by contact.

RigidBC Material: Moving Boundary Condition

Thiis 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, concentration or pore pressure 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, concentration, and/or pore pressure.

You use the direction property to determine which components of velocity are controlled by the moving rigid particles. Setting grid values for temperature, concentration or pore pressure and determine by other rigid material properties,

To have the boundary condition vary in time and position, use the settingFunction(2)(3) and valueFunction properties below to set the values with user defined functions rather than using the initial particle properties to pick a constant value. When the particle values vary with position, it is sometimes better to use the ExtrapolateRigid mode that extrapolates rigid particle to the grid and sets boundary conditions from the extrapolated values instead of the particle values.

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.

RigidBC Material Properties

The rigid boundary condition material properties are set with the following commands:

Property Description Units Default
SetDirection
direction
  • 1 through 7: set grid velocities to various components of the rigid particle velocity (see table below).
  • 0: sets no velocity components, but can set temperature and/or concentration values from moving particles.
(Note: the direction property name can only be used in scripted files)
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. 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 used in scripted files) none 0
SetConcentration
concentration
1 to set concentration boundary condition or 0 to not set it (in scripted files only). This setting has no affect unless the analysis is doing diffusion calculations. 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 used in scripted files) none 0
SetPorePressure
porepressure
1 to set pore pressure boundary condition or 0 to not set it (in scripted files only). This setting has no affect unless the analysis is doing poroelasticity calculations. Use SetDirection = 0 to having moving pore pressure source only; use SetDirection = 1 to 7 to combine moving pore pressure source with velocity boundary conditions. (Note: the porepressure property name can only be used 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 velocity units 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, concentration potential, or pore pressure. 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, concentration, and pore pressure 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. 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). 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) = \omega r\bigl(-\sin\theta,\cos\theta\bigr) = 2\pi f \bigl(-(y-y_0),x-x_0\bigr) }[/math]

RigidRotation.jpg

where r and θ are polar coordinates based on the center of the object, ω is the angular velocity and f is frequency in cycles per second. 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θ), should end at (r cos(θ+dθ),r sin(θ+dθ)) where the incremental rotation angle is:

      [math]\displaystyle{ d\theta = 2\pi f\Delta t }[/math]

where Δt is time step. 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 velocity units when using consistent units) for a rotating rigid object is:

      [math]\displaystyle{ v_x = {1\over \Delta t}\bigl(-(y-y_0)\sin(2\pi f\Delta t)+(x-x_0)(\cos(2\pi f\Delta t)-1)\bigr) }[/math]

      [math]\displaystyle{ v_y = {1\over \Delta t}\bigl((x-x_0)\sin(2\pi f\Delta t) + (y-y_0)(\cos(2\pi f\Delta t)-1)\bigr) }[/math]

where f is set to 1/trev where trev is the amount of simulation time you want to complete one complete revolution. For clockwise rotation, change the sign of each velocity. This function is an example of the need to allow time step as a variable in user defined functions. It generalizes 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

When rigid particles moving along the x, y, or z axis are setting moving boundary conditions, those dynamic boundary conditions will jump from one layer of nodes to the next as the rigid particles cross between grid elements. This jumping of boundary conditions can cause artifacts, but those artifacts can be reduced by using the mirrored property. When mirroring is turned on the node adjacent to the object will set the specified velocity (call it V0), but nodes that are one layer further from the object will set the velocity to:

      [math]\displaystyle{ V_{BC} = 2V_0 - V_{ghost} }[/math]

where Vghost is the extrapolated nodal velocity from particles at the first node interior to the object (i.e., on the opposite side of the node adjacent to the object). The net effect is that the velocity boundary condition on the second layer of nodes will be a linear interpolation from the interior node, through the V0 node to the second layer of nodes. The figure below shows a sample tensile loading calculation with and without the mirrored property. The result on the left without mirroring shows artifacts in the layer of particles next to the rigid particles. The result on the right with mirroring eliminates those artifacts.

Mirrored.jpg

The mirrored property is set to +1 or -1 to specify the direction from the interior node to the rigid particles. Use -1 when the rigid particles are at the minimum edge of the object and use +1 when they are at the maximum edge (as in the above example). At large deformations (after many element crossings) additional artifacts may arise, but mirroring is always beneficial when it can be used in a simulation.

Note that the mirroring property is deactivated when using the ExtrapolateRigid mode for setting boundary conditions from rigid particles.

Rigid Reaction Forces

Rigid boundary condition materials with 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.
  • If the ExtrapolateRigid mode is activated, you can archive reaction forces for all rigid particles by setting (material) option in the global archive settings to -40 (the ID for all such boundary conditions). In this mode, it is not possible to partition reaction forces into forces on different types of rigid materials.

Rigid BC Material History Data

None

RigidContact Material

Particle with this material type will correspond to actual material points that move through the analysis at specified velocities. 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 contact materials interact at the same node, however, there is a conflict and the calculations will stop.

Rigid contact materials 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.

RigidContact Material Properties

The rigid contact material properties are set with the following commands:

Property Description Units Default
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 velocity units 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

The possible three setting 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).

Rigid Reaction and Contact Forces

Rigid contact materials interact with other material through contact. 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 provides the resulting 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.

Rigid Contact Material History Data

None

Deprecated Rigid Material

Prior to introduction of separate rigid boundary condition particles and rigid contact particles, simulations had only one type of rigid material. This type had two functions by choosing SetDirection from 0 to 7 to get rigid boundary condition particles or SetDirection equal to 8 for rigid contact particles. Old simulations that define rigid materials by this method still work, but that approach is deprecated. New simulations should specify rigid materials as "RigidBC" or "RigidContact" materials.

Notes

  1. Note that multimaterial mode MPM calculations can combine rigid boundary condition particles with rigid contact particlesto provide different functions, but single-material mode MPM can only use boundary condition rigid particles (direction=0 to 7).
  2. Note that creating rigid boundary condition 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.
  3. If a rigid particle is added to a problem, but it does not set any velocity, temperature, or concentration (direction=temperature=concentration=porepressure=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.

Examples

Material "rigid","Loading Clamp","RigidBC"
  direction 1
  mirrored 1
Done