Difference between revisions of "MPM Input Files"

From OSUPDOCS
Jump to navigation Jump to search
Tag: Manual revert
 
(123 intermediate revisions by the same user not shown)
Line 1: Line 1:
The [[#Introduction|introduction]] lists some key features of [[OSParticulas]] and [[NairnMPM]] with links to where those features are doucmented in this help. The remaining section explain how to run MPM calculations be described all the sections of input command files.
MPM simulations are run using [[NairnMPM]]. Some of the key features of these code engines (with links) are listed [[NairnMPM|here]]. The documentation on this page explains how to run MPM calculations by described all the sections of input command files.
 
== Introduction ==
 
This page documents all the options for the [[OSParticulas]] and [[NairnMPM]] code engines. The capabilities and features of these code engines are embedded in the documentation of input commands for each option. Some highlights of capabilities (with links to input commands) are:
 
* 2D, Axisymmetric, and 3D
* Various Shape Functions
* Many Material Models
* Explicit Cracks, Fracture Mechanics, and Cohesive Zones
* Multimaterial Mode
* Models from Images
* Coupled Diffusion and Conductivity
* VTK Archiving
* Rigid Particle Features
* Custom Tasks


== Input Command File Overview ==
== Input Command File Overview ==


When using [[NairnFEAMPM]] or [[NairnFEAMPMViz]] to set up calculations, the input command files are script files. When you interpret these scripts, the applications will create an <tt>XML</tt> input command file that is needed to drive the code engines. Because the scripting language handles all the <tt>XML</tt> formatting, you can skip this section. See the help documentation in [[NairnFEAMPM]] or [[NairnFEAMPMViz]] for syntax and features of the scripting languages. Click this link to see a [[Sample MPM Input Command FIle|sample scripted MPM input command file]] for simulation of two colliding disks.
When using [[NairnFEAMPM]] or [[NairnFEAMPMViz]] to set up calculations, the input command files are usually script files written using the custom [[Scripting Language Syntax|scripting language]]. When you interpret these scripts, the applications will create an <tt>XML</tt> input command file that is needed to drive the code engines. Click this link to see a [[Sample MPM Input Command File|sample scripted MPM input command file]] for simulation of two colliding disks.
 
Alternatively, you can directly create <tt>XML</tt> input command files (although usually much less powerful then learning the scripting methods). If you use the manual methods, the files must conform to the structure defined in this section. All <tt>XML</tt> input command files for MPM calculations must begin with an <tt>XML</tt> declaration, an optional document type declaration, and the main input file tag and end with the corresponding closing tags. For MPM calculations, the global file structure is:


<pre>
Alternatively, you can directly create <tt>XML</tt> input command files. Because this approach cannot use the language control options of a [[Scripting Language Syntax|scripting language]], it is much less powerful then scripting methods and much harder to customize for a range of simulations. If you do use the manual <tt>XML</tt> method, the files must conform to the structure defined [[XML Input Files for NairnMPM|here]]. Click this link to see a [[Sample MPM Input Command File#XML MPM Input Command File|sample XML MPM input command file]] for simulation of two colliding disks.
&lt;?xml version='1.0'?&gt;
&lt;!DOCTYPE JANFEAInput SYSTEM &quot;NairnMPM.dtd&quot;
[
  &lt;!ENTITY maxtime &quot;1e-03&quot;&gt;
  &lt;!ENTITY width &quot;100&quot;&gt; 
]&gt;
&lt;JANFEAInput version='3'&gt;
  ...
  (XML Command to define the calculation)
  ...
&lt;/JANFEAInput&gt;
</pre>


The <tt>!DOCTYPE</tt> element defines the file type and has the <tt>SYSTEM</tt> option to provide a path to a Document Type Definition (or <tt>DTD</tt>) file. This path is needed when you [[Running_MPM_Calculations|run the code]] with the validation option (<tt>-v</tt>), which is highly recommended. The required <tt>DTD</tt> file for MPM calculations is provided in the <tt>/input</tt> folder of the source code files.
Some input commands for calculations support the use of [[User Defined Functions|user defined functions]] to increase options for setting up simulations. These functions can be used in both scripting commands and in <tt>XML</tt> commands. Scripting commands can build  functions using [[Expression Syntax|string expressions]]. In <tt>XML</tt> files, you enter the entire function.
 
The <tt>!DOCTYPE</tt> element can define any number of entities. These entities can be used elsewhere in the text of the <tt>XML</tt> file and they will be replaced by the text in the entity definition. For example, the above MPM file can use the entity <tt>&amp;maxtime;</tt> and it will be replaced with the text <tt>1e-03</tt>. Entities can define values that make it easier to read input <tt>XML</tt> files and easier to modify them for new calculations.
 
The remainder of the file is included withing a <tt>JANFEAInput</tt> block. The <tt>version</tt> attribute is currently not needed, but may be important in the future. When input files are validated using the DTD file (as recommended), the sections must appear in the specified order defined in the [[#toc|table of contents]] on this page. Elements that are not used can be omitted, but all needed elements must be in that specific order. Click this link to see a [[Sample MPM Input Command FIle|sample XML MPM input command file]] for simulation of two colliding disks.


== Main Header ==
== Main Header ==


This section defines the type of analysis to run and provides an optional description of the calculations. When using a scripting language, the header is created automatically and its content is controlled by commands defined below. When manually writing <tt>XML</tt> files, the header, which is required, is defined in a single header block:
This section defines the type of analysis to run, number of processors (for parallel code), the units for input parameters, and provides an optional description of the calculations. When using a scripting language, the header is created automatically and its content is controlled by commands defined below. When manually writing <tt>XML</tt> files, the header, which is required, is defined in a single header block:


  &lt;Header&gt;
  &lt;Header&gt;
Line 53: Line 20:


* [[Analysis Command]] - pick the type of MPM analysis to run.
* [[Analysis Command]] - pick the type of MPM analysis to run.
* [[ConsistentUnits Command]] - pick units for the calculations
* [[Processors Command]] - pick number of processors for parallel code.
* [[Description Command|Annotation Commands]]  - these commands let you annotate the calculations.
* [[Description Command|Annotation Commands]]  - these commands let you annotate the calculations.
* [[Processors Command]] - pick number of processors for parallel code.
* [[RandSeed Command]] - to pick a seed for random number generation
* [[Setting Developer Flags]]
* [[Setting Developer Flags]]


Line 68: Line 37:


* [[MPM Methods and Simulation Timing]] - these commands determine the MPM method to use, the time step, and the maximum simulations time.
* [[MPM Methods and Simulation Timing]] - these commands determine the MPM method to use, the time step, and the maximum simulations time.
* [[DefGradTerms]] - move methods and simulations
* [[MPM Archiving Options]] - these commands determine which results are archived and where they are saved.
* [[MPM Global Archiving Options]] - these commands determine which results are archived in a global results file.
* [[Multimaterial MPM]] - these commands configure the calculations to run in multimaterial mode.
* [[Crack Settings]] - these commands define various simulation features when using cracks.
* [[Diffusion Calculations]] - this command activates diffusion calculations.
* [[Damping Options]] - these commands set up grid-based damping options.
* [[Damping Options]] - these commands set up grid-based damping options.
* [[LeaveLimit Command]] - this command determine what happens when particles leave the grid.
* [[XPIC Features|XPIC(k) and FMPM(k) Features]] - improved MPM with enhanced stability and noise reduction
* [[LeaveLimit Command]] - this command determines what happens when particles leave the grid.
* [[DeleteLimit Command]] - this command determines what happens when particles get nan values.
* [[ExtrapolateRigid Command]] - activates a mode where rigid materials extrapolate to the grid before setting boundary conditions.
 
== Archiving Results ==
 
MPM results can be saved as particle results or global results, where global results are averages over all particles, or specific material types during the calculations:
 
* [[MPM Archiving Options]] - these commands determine which particle results are archived and where they are saved.
* [[MPM Global Archiving Options]] - these commands determine which averaged, global results are archived in a global results file.
 
Besides the above built-in archiving options, some [[#Custom Tasks|custom tasks]] provide additional options:
 
* [[VTKArchive Custom Task]] - to archive results extrapolated to the grid in "VTK Legacy" files.
* [[HistoryArchive Custom Task]] -  to archive material history data to a tab-delimited file.
 
If more archiving options are needed, you can always [[Writing a Custom Task|write a new custom task]].


== Creating the MPM Background Grid ==
== Creating the MPM Background Grid ==
==== Generated MPM Grid ====
==== Explicit Mesh Definition ====


== Creating the Material Point ==
Although MPM is a particle method, it uses a background grid for calculations. In general, this grid is a regular grid of orthogonal elements with linear shape functions. The background grid is easily [[MPM Grid Generation|generated with a few commands]]. [[NairnMPM]] does allow [[Explicit FEA Mesh Generation#Explicit MPM Grid|explicitly generated grids]], but you should never use them because many important features of MPM rely on a regular grid and are only efficient for a regular grid (''e.g.'', [[MPM Methods and Simulation Timing|uGIMP and CPDI shape functions]]).
== Using Explicit Cracks ==
 
== Creating the Material Points ==
 
In MPM the object is discretized by a collection of material points. Once the [[MPM Grid Generation|background grid is created]], the material points are added to that grid using a series of [[MPM Region and Hole Commands|<tt>Region</tt> and <tt>Hole</tt> commands]] or additionally by [[BMPRegion Command|directly translating pixels in an image to an MPM model]]. Each of these command fills part of the grid with a collection of material points and those material points are assigned initial conditions and [[Material Models|material type]].
 
When using [[#Custom Tasks|custom tasks]] that inject particles, a simulation must fill the [[Material Point Reservoir]] with any material point types needed by that task.
 
== Defining Material Models ==
== Defining Material Models ==


Each material point is assigned a material type. [[NairnMPM]] and [[OSParticulas]] support numerous [[Material Models|material models]]. For plasticity materials, each material type can choose from among a set of [[Hardening Laws|hardening laws]]. Finally, when [[#Using Explicit Cracks|using explicit cracks]], the material points along the cracks can be assigned to various [[Traction Laws|traction laws]]. The information on these options are in the following sections:
Each material point is assigned a material type. [[NairnMPM]] supports numerous [[Material Models|material models]]. For plasticity materials, each material type can choose from among a set of [[Hardening Laws|hardening laws]]. For softening materials, each material type can choose amoung a set of [[Damage Initiation Laws|damage initiation laws]] and [[Softening Laws|softening laws]]. When [[#Using Explicit Cracks|using explicit cracks]], the material points along the cracks can be assigned to various [[Traction Laws|traction laws]]. Finally when using [[Multimaterial MPM|multimaterial mode]] or  [[#Using Explicit Cracks|using explicit cracks]], the contact mechanics at that interfaces can be controlled by [[Contact Laws|contact laws]]. The information on these options are in the following sections:


* [[Material Models]] - all material models available for MPM simulations
* [[Material Models]] - all material models available for MPM simulations, which have the following types
** [[Material Models#Linear Elastic Small Strain Materials|Linear Elastic Small Strain]]
** [[Material Models#Hyperelastic Materials|Hyperelastic]]
** [[Material Models#Elastic-Plastic Small Strain Materials|Elastic-Plastic Small Strain]]
** [[Material Models#Hyperelastic-Plastic Materials|Hyperelastic-Plastic]]
** [[Material Models#Softening Materials| Softening]]
** [[Material Models#Viscoelastic Materials| Viscoelastic]]
** [[Material Models#Phase Transition Materials|Phase Transition]]
** [[Material Models#Membrane Materials| Membrane]]
** [[Material Models#Rigid Materials|Rigid]]
* [[Traction Laws]] - all traction laws available for modeling cohesive zones on cracks
* [[Contact Laws]] - all contact laws used for implementing friction or imperfect interface on cracks or between materials
* [[Hardening Laws]] - all hardening laws available for plasticity materials
* [[Hardening Laws]] - all hardening laws available for plasticity materials
* [[Traction Laws]] - all traction laws available for modeling cohesive zones on cracks
* [[Damage Initiation Laws]] - all damage initiation laws available for modeling softening materials
* [[Softening Laws]] - all softening laws available for modeling softening materials
 
== Using Explicit Cracks ==
 
An advanced feature of [[NairnMPM]] is that it can model explicit cracks including multiple cracks, interacting cracks, and crack propagation. To create a simultion with cracks, you first [[Defining Cracks|define the cracks]] and then optionally [[Crack Settings|customize crack settings]] to customize crack modeling methods. To include crack propagation, you also need to set all needed [[Common Material Properties|material fracture properties]]. By choosing a default [[Contact Laws|contact law]] (or by choosing custom [[Contact Laws|contact laws]] for each crack), crack surfaces can model either [[Friction|frictional contact]] or model the crack plane as an [[Imperfect Interfaces|imperfect interface]]. By adding [[Traction Laws|traction laws]] to cracks, they can model cohesive zones.
 
== Multimaterial MPM ==
 
Running in [[Multimaterial MPM|multimaterial mode]] allows a simulation to model contact between materials. By choosing a default [[Contact Laws|contact law]] (or by choosing custom [[Contact Laws|contact laws]] for each material pair), multimaterial mode simulations can model material interfaces as [[Friction|frictional contact]] or as an [[Imperfect Interfaces|imperfect interface]].
 
== Boundary Conditions ==


== Grid-Based Boundary Conditions ==
In MPM, boundary conditions can be applied to nodes on the grid or applied directly on the particles:
==== Velocity Conditions ====
==== Temperature Conditions ====
==== Concentration Conditions ====
==== Explicit Grid-Based Boundary Conditions ====


== Particle-Based Boundary Conditions ==
* [[Grid-Based Boundary Conditions]] - These boundary conditions are applied to nodes on the grid and are used to set velocity, temperature, and concentration. Grid-based velocity conditions can also set up object symmetry planes.
==== Load and Traction Conditions ====
* [[Particle-Based Boundary Conditions]] - Most of the commands set boundary conditions that are applied to the particles for such things as forces, tractions, and fluxes. Some commands in these blocks instead set initial conditions for particle such as damage state.
==== Concentration Flux Conditions ====
==== Explicit Particle-Based Boundary Conditions ====


== Thermal Calculations ==
== Thermal Calculations ==


MPM simulations can do [[Thermal Calculations|thermal calculations]] that account for thermal strains in the stress analysis and can model thermal conduction. The commands in this section activate thermal calculations.
MPM simulations can do [[Thermal Calculations|thermal calculations]] that account for thermal strains in the stress analysis and can model [[Thermal Calculations#Conduction|thermal conduction]].
 
== Diffusion, Poroelasticity, or Other Transport Calculations ==
 
MPM simulations can model [[Diffusion Calculations|diffusion]] and track concentration of an absorbed solvent in the materials. The concentration is coupled to strains by solvent expansion coefficients of the [[Material Models|materials]].
 
Alternatively, MPM simulations can model [[Poroelasticity Calculations|poroelastic materials]] and track pore pressure within a material saturated with fluid. The fluid transport between particles is modeled using Darcey's law. The pore pressure is coupled to changes in volume by [[Common_Material_Properties#Poroelasticity_Properties|poroelasticity properties of the materials]].
 
In additional to diffusion or poroelasticity (only one of which can be in any simulation), MPM simulations can [[Additional Transport Calculations|couple to other transport properties]] into the analysis.


== Gravitation Field ==
== Gravitation Field ==
MPM calculations can apply a [[Gravitational Field|gravitation field]] (or actually any constant body forces).
== Custom Tasks ==
== Custom Tasks ==
Custom tasks are special calculations that are performed at the end of each time step in MPM calculations. Custom tasks can be written by users working with [[NairnMPM]] source code. These user-defined custom tasks can then be scheduled when needed in some calculations. The current custom tasks are:
* [[PeriodicXPIC Custom Task]] - implement [[Damping Options#XPIC Features|XPIC(m) simulations]] with an option to run them periodically instead of every time step
* [[AdjustTimeStep Custom Task]] - to adjust time step during the calculations according to current stress state of the particles.
* [[VTKArchive Custom Task]] - to archive results extrapolated to the grid in "VTK Legacy" files.
* [[HistoryArchive Custom Task]] -  to archive material history data to a tab-delimited file.
* [[ReverseLoad Custom Task]] - to monitor crack length and perform actions when a specified crack length is reached.
* [[PropertyRamp Custom Task]] - to gradually change a particle property
* [[DeleteDamaged Custom Task]] - to delete failure particles or remove unneeded particles
* [[FluidSource Custom Task]] - to inject liquid particles into a simulation
* [[TrackError Custom Task]] - archive simulations errors in a tab-delimited file
* [[LoadControl Custom Task]] - to run load control simulation based on calculations of contact or reaction forces.
The following custom tasks are currently available only in [[OSParticulas]]
* CarnotCycle Custom Task - demonstration task to run simulation through a Carnot cycle.
* PressureDependentMelting Custom Task - method to change melting temperature with pressure
* ReactionEnergy Custom Task - research task for chemical reaction modeling
* Crack3DArchive Custom Task - research task for 3D cracks
* JiggleGrid Custom Tasks - research task for grid changes
* JPIC Custom Task - research task for noise reduction
Custom tasks are a good way to add features or to test out new feature. See help on [[Writing a Custom Task|writing a custom task]] for steps on writing source code for a new custom task. If you do add a new custom taks, the following link explains how to include it in you input command files:
* [[Undocumented Custom Task]] - you can include custom tasks that are in [[NairnMPM]] but not yet supported by scripted files.
== XML Insertion ==
When writing scripted input files, it is sometimes useful to insert raw <tt>XML</tt> commands into the automatically-format <tt>XML</tt> input file. The two commands that help in this task are:
* [[Entity Command]] - to define entities that will appear in the automatically-format <tt>XML</tt> input file.
* [[XMLData Command]] - to insert raw <tt>XML</tt> data into various sections of the automatically-format <tt>XML</tt> input file.

Latest revision as of 13:48, 26 April 2024

MPM simulations are run using NairnMPM. Some of the key features of these code engines (with links) are listed here. The documentation on this page explains how to run MPM calculations by described all the sections of input command files.

Input Command File Overview

When using NairnFEAMPM or NairnFEAMPMViz to set up calculations, the input command files are usually script files written using the custom scripting language. When you interpret these scripts, the applications will create an XML input command file that is needed to drive the code engines. Click this link to see a sample scripted MPM input command file for simulation of two colliding disks.

Alternatively, you can directly create XML input command files. Because this approach cannot use the language control options of a scripting language, it is much less powerful then scripting methods and much harder to customize for a range of simulations. If you do use the manual XML method, the files must conform to the structure defined here. Click this link to see a sample XML MPM input command file for simulation of two colliding disks.

Some input commands for calculations support the use of user defined functions to increase options for setting up simulations. These functions can be used in both scripting commands and in XML commands. Scripting commands can build functions using string expressions. In XML files, you enter the entire function.

Main Header

This section defines the type of analysis to run, number of processors (for parallel code), the units for input parameters, and provides an optional description of the calculations. When using a scripting language, the header is created automatically and its content is controlled by commands defined below. When manually writing XML files, the header, which is required, is defined in a single header block:

<Header>
  (commands)
</Header>

The possible header commands are

MPM Header

This section defines many settings and features for the MPM calculations. When using a scripting language, the MPM header is created automatically by various commands defined in this section. When writing XML input files, all these commands must be within a single MPM header block:

<MPMHeader>
  (commands)
</MPMHeader>

The possible MPM header commands are given below by categories.

Archiving Results

MPM results can be saved as particle results or global results, where global results are averages over all particles, or specific material types during the calculations:

Besides the above built-in archiving options, some custom tasks provide additional options:

If more archiving options are needed, you can always write a new custom task.

Creating the MPM Background Grid

Although MPM is a particle method, it uses a background grid for calculations. In general, this grid is a regular grid of orthogonal elements with linear shape functions. The background grid is easily generated with a few commands. NairnMPM does allow explicitly generated grids, but you should never use them because many important features of MPM rely on a regular grid and are only efficient for a regular grid (e.g., uGIMP and CPDI shape functions).

Creating the Material Points

In MPM the object is discretized by a collection of material points. Once the background grid is created, the material points are added to that grid using a series of Region and Hole commands or additionally by directly translating pixels in an image to an MPM model. Each of these command fills part of the grid with a collection of material points and those material points are assigned initial conditions and material type.

When using custom tasks that inject particles, a simulation must fill the Material Point Reservoir with any material point types needed by that task.

Defining Material Models

Each material point is assigned a material type. NairnMPM supports numerous material models. For plasticity materials, each material type can choose from among a set of hardening laws. For softening materials, each material type can choose amoung a set of damage initiation laws and softening laws. When using explicit cracks, the material points along the cracks can be assigned to various traction laws. Finally when using multimaterial mode or using explicit cracks, the contact mechanics at that interfaces can be controlled by contact laws. The information on these options are in the following sections:

Using Explicit Cracks

An advanced feature of NairnMPM is that it can model explicit cracks including multiple cracks, interacting cracks, and crack propagation. To create a simultion with cracks, you first define the cracks and then optionally customize crack settings to customize crack modeling methods. To include crack propagation, you also need to set all needed material fracture properties. By choosing a default contact law (or by choosing custom contact laws for each crack), crack surfaces can model either frictional contact or model the crack plane as an imperfect interface. By adding traction laws to cracks, they can model cohesive zones.

Multimaterial MPM

Running in multimaterial mode allows a simulation to model contact between materials. By choosing a default contact law (or by choosing custom contact laws for each material pair), multimaterial mode simulations can model material interfaces as frictional contact or as an imperfect interface.

Boundary Conditions

In MPM, boundary conditions can be applied to nodes on the grid or applied directly on the particles:

  • Grid-Based Boundary Conditions - These boundary conditions are applied to nodes on the grid and are used to set velocity, temperature, and concentration. Grid-based velocity conditions can also set up object symmetry planes.
  • Particle-Based Boundary Conditions - Most of the commands set boundary conditions that are applied to the particles for such things as forces, tractions, and fluxes. Some commands in these blocks instead set initial conditions for particle such as damage state.

Thermal Calculations

MPM simulations can do thermal calculations that account for thermal strains in the stress analysis and can model thermal conduction.

Diffusion, Poroelasticity, or Other Transport Calculations

MPM simulations can model diffusion and track concentration of an absorbed solvent in the materials. The concentration is coupled to strains by solvent expansion coefficients of the materials.

Alternatively, MPM simulations can model poroelastic materials and track pore pressure within a material saturated with fluid. The fluid transport between particles is modeled using Darcey's law. The pore pressure is coupled to changes in volume by poroelasticity properties of the materials.

In additional to diffusion or poroelasticity (only one of which can be in any simulation), MPM simulations can couple to other transport properties into the analysis.

Gravitation Field

MPM calculations can apply a gravitation field (or actually any constant body forces).

Custom Tasks

Custom tasks are special calculations that are performed at the end of each time step in MPM calculations. Custom tasks can be written by users working with NairnMPM source code. These user-defined custom tasks can then be scheduled when needed in some calculations. The current custom tasks are:

The following custom tasks are currently available only in OSParticulas

  • CarnotCycle Custom Task - demonstration task to run simulation through a Carnot cycle.
  • PressureDependentMelting Custom Task - method to change melting temperature with pressure
  • ReactionEnergy Custom Task - research task for chemical reaction modeling
  • Crack3DArchive Custom Task - research task for 3D cracks
  • JiggleGrid Custom Tasks - research task for grid changes
  • JPIC Custom Task - research task for noise reduction

Custom tasks are a good way to add features or to test out new feature. See help on writing a custom task for steps on writing source code for a new custom task. If you do add a new custom taks, the following link explains how to include it in you input command files:

XML Insertion

When writing scripted input files, it is sometimes useful to insert raw XML commands into the automatically-format XML input file. The two commands that help in this task are:

  • Entity Command - to define entities that will appear in the automatically-format XML input file.
  • XMLData Command - to insert raw XML data into various sections of the automatically-format XML input file.