Setting Forces and Fluxes
These commands are used within shape commands for grid-based boundary conditions to set loads, tractions, heat fluxes, and concentration fluxes on particles
Load Conditions
The scripted Load command applies a force directly to each particle within the shape command that encloses it:
Load (dir),(style),(value),<(time)>
In XML files, the command is:
<LoadBC dir='(dir)' style='(style)' load='(value)' time='(time)' function='(function)'/>
where
- (dir) is 1, 2, or 3 to specify the loading direction as in the x, y, or z direction (In scripted files, (dir) can be x, y, or z or can be R or Z if axisymmetric).
- (style) specifies the style of the applied load. Each load depends on two parameters specified by arguments (value) and (time). The (value) is required because there is no point in applying zero laod. If (time) is not supplied, it is set to zero. The standard units are N for (value) and ms for (time) (but the units may change depending on the (style) setting). The final magnitude of the load depends on the LoadType setting.
- (function) - if the (style) is function (or 6), this attribute in XML files specifies a user defined function. In scripted files, the user defined function should replace the (value) argument and must be entered as quoted text. The function should evaluate to the desired force in N.
LoadType Options
By default, the (value) argument or the result returned by a function gives the load on each particle with that boundary condition (with standard units of N). Alternatively, a load or function can evaluate to the total Newtons applied to all particles in the current shape. To chose to load style in scripted files, include the command:
LoadType (loadType)
within the current shape. If (loadType) is "net", the boundary conditions specifies to the total load spread out over all particles in the current shape. Alternative, if (loadType) is "perParticle" (or omitted), the load for the boundary condition is applied to each particle. You can switch back and forth between net load and per-particle load in a single shape by using mutliple LoadType commands. Each load boundary condition uses the loading option specified by the most recent LoadType command (or uses "perParticle" is no LoadType command was used).
In XML files, the loading option is set by using the following commands within the current shape:
<net/> <perParticle/>
As expected, the "net" option is specified with a <net/> command and the "perParticle" option is specified with a <perParticle/> command. These commands can be intersperse to apply different loading options to various load boundary conditions.
These loading-option commands only apply to particle load boundary conditions and have no effect on other traction, heat flux, and concentration flux conditions that happen to be within the same shape command.
Traction Conditions
The scripted Traction command sets traction load on the edge of each particle within the shape command that encloses it:
Traction (dir),(face),(style),<(value)>,<(time)>
In XML files, the command is:
<TractionBC dir='(dir)' face='(fact)' style='(style)' stress='(value)' time='(time)' function='(function)'/>
where
- (dir) is 1, 2, or 3 to specify the loading direction as in the x, y, or z direction (In scripted files, (dir) can be x, y, or z or can be R or Z if axisymmetric). For TractionBC, dir can be 11 or 12 to mean normal or shear traction relative to the selected face, respectively. A normal traction is positive if pointing out of the particle domain and a shear traction is positive when oriented in the counter-clockwise direction. Shear tractions (option 12) are not yet allowed in 3D calculations.
- (face) defines which face of the original particle domain is loaded by the traction. In 2D, the faces are the edges numbered 1 through 4 in the counter-clockwise direction with the bottom edge (with normal (0,-1)) being number 1. In 3D, 1 to 4 are the same faces (i.e., faces with normals (0,-1,0), (1,0,0), (0,1,0), and (-1,0,0) on the original particle domain, respectively), 5 is the bottom (with normal (0,0,-1)), and 6 is the top (with normal (0,0,1)).
- (style) specifies the style of the applied traction. Each velocity depends on two parameters specified by arguments (value) and (time). The (value) is required because there is no point in applying zero traction. If (time) is not supplied, it is set to zero. The standard units are MPa for (value) and ms for (time) (but the units may change depending on the (style) setting).
- (function) - if the (style) is function (or 6), this attribute in XML files specifies a user defined function. In scripted files, the user defined function should replace the (value) argument and must be entered as quoted text. The function should evaluate to the desired traction in MPa.
Not that valid calculation of grid forces resulting from specified traction during 2D simulations requires that you have correctly specified the grid thickness and that the grid thickness matches the particle thickness that is set in Region commands. Furthermore, the use of traction boundary conditions is only allowed when using uGIMP or lCPDI anlaysis methods.
Difference Between Loads and Tractions
A Load condition considers the load (in N) to be applied directly to the particle, which in MPM is not really applied to the surface of the body, even when the particle is on the edge. During the MPM algorithm, this load is extrapolated to all nodes around the paraticle resulting in some of a modeled loading being applied internal to the object. It is common, therefore, to see artifacts in particles near edges that are loaded directly by forces. The MPM results away from the particles, however, reflect the edge load better. This form of external loading appears to be common to all MPM codes.
In contrast, a Traction condition applies the load (as a stress) on the actual surface by implementing a surface integral term that appears in MPM derivations. This integral involves integration of the traction times grid shape functions on the particle surface. This surface is found from the current particle deformation, which depending on the current MPM method being used, is as follows:
- Dirac: Traction conditions are not allowed in this method; only Load conditions can be used
- uGIMP: Integrate on the surface determined from the initial particle shape but translated to the new particle position.
- lCPDI or qCPDI: Find parallelogram (2D) or parallelopiped (3D) for the deformed particle domain from the particle's deformation gradient and integrate the selected surface terms by expanding its integrand in linear shape functions (i.e., very similar to CPDI methods for shape function integration).
Traction conditions typically reduce artifacts that occur on particles loaded by Load conditions. Because this method applies forces closer to the actual edge, the potential for artifacts due to low-mass nodes is a concern. The code tries to screen out obvious problem nodes. If instability occurs, try Load conditions instead. Traction conditions will correctly detect one nearby crack and apply force to the appropriate velocity field, but if a Traction condition is interacting with more than one crack, the results will be unpredictable.
Another difference is that a Load condition applies a total force. In large deformation problems, the applied stress will change if the cross-sectional area changes. In contrast, a Traction condition applies a stress to the deformed particle domain, which means its effect depends on MPM method being used. When using uGIMP, the deformed particle domain is the same as the initial particle domain and therefore the applied stress will always be an engineering stress based on initial particle area (i.e., the stress will change if particle cross-sectional area changes). But, when using lCPDI or qCPDI, the stress will be a true stress that remains constant even if the particle cross sectional area changes.
Heat Flux Conditions
The scripted HeatFlux command applies heat fluxes to surfaces near particles (which are expected to be on the surface) within the shape command that encloses it:
HeatFlux (mode),(face),(style),<(value)>,<(time)>
In XML files, the command is:
<LoadBC dir='(dir)' style='(style)' load='(value)' time='(time)' function='(function)'/>
where
- (mode) determines the type of heat flux. The two options are:
- external - this mode applies a surface flux in units of W/m^2 for transport rate of heat per unit area. A positive value is flux into the material while a negative value is flux out of the material.
- coupled - this mode calculates the heat flux from a function of the particle temperature.
- (face> - specifies the particle surface that is on the edge and will have the flux. In 2D, imagine a box around the initial particle. Surfaces 1 to 4 are the four edges of the box in the order bottom, right, top, and left (with normals (0,-1), (1,0), (0,1), and (-1,0)). In 3D, imagine a cube around the initial particle. Surfaces 1 to 4 are same as for 2D (now with normals (0,-1,0), (1,0,0), (0,1,0), and (-1,0,0)), 5 in the bottom z surface (normal = (0,0,-1)), and 6 is the top z surface (normal = (0,0,1)).
- (style) specifies the style of the applied heat flux. For external heat flux, the value depends on two parameters specified by arguments (value) and (time). The standard units are W/m^2 for (value) and ms for (time) (but the units may change depending on the (style) setting). For coupled heat flux, the (style) must be function (or 6).
- (function) - if the (style) is function (or 6), this attribute in XML files specifies a user defined function. In scripted files, the user defined function should replace the (value) argument and must be entered as quoted text. The function should evaluate to the desired force in N.