Difference between revisions of "MPM Archiving Options"

From OSUPDOCS
Jump to navigation Jump to search
 
(115 intermediate revisions by the same user not shown)
Line 3: Line 3:
== Archiving Particle Data ==
== Archiving Particle Data ==


In MPM calculations, the calculation results are stored in a series of archive files. These files give periodic snapshots for the state of each material point. These files are read after the analysis to plot the results; in fact the results cannot be visualized without them. For more details, you can refer to the [[MPM Archive File Format|output file format definition]].
In MPM calculations, the calculation results are stored in a series of archive files. These files give periodic snapshots for the state of each material point. These files are read after the analysis to plot the results; in fact the results cannot be visualized without them. For more details, you can refer to the [[Archive File Formats|output file format definition]].


=== Scripted Input Files ===
=== Scripted Input Files ===
Line 10: Line 10:


  Archive (path)
  Archive (path)
  ArchiveTime (time),<(first time)>
  ArchiveTime (time),<(first time)>,<(props)>
  ToArchive (list on quantities)
<ArchiveTime (time2),(second time),<(props2)>>
<ArchiveTime (time3),(third time),<(props3)>>
  ToArchive (list of quantities)


or
or


  ArchiveUnique (path)
  ArchiveUnique (path)
  ArchiveTime (time),<(first time)>
  ArchiveTime (time),<(first time)>,<(props)>
<ArchiveTime (time2),<(second time)>,<(props2)>>
<ArchiveTime (time3),(third time),<(props3)>>
  ToArchive (list on quantities)
  ToArchive (list on quantities)


Line 37: Line 41:
where # is chosen from 1, 2, 3, ...  to create a unique folder. You can then safely write multiple MPM output files to the save folder without conflicts
where # is chosen from 1, 2, 3, ...  to create a unique folder. You can then safely write multiple MPM output files to the save folder without conflicts


<li><span id="atime"></span><tt>(time)</tt> gives the time interval between archiving results in milliseconds (it can be an entity). The analysis will always archive the initial state (to define the problem). You only need to archive enough results to get good plots or movies after the analysis is done.</li>
<li><span id="atime"></span><tt>(time)</tt> gives the time interval between archiving results in [[ConsistentUnits Command#Legacy and Consistent Units|alt time units]] (it can be an [[Entity Command|entity]]). The analysis will always archive the initial state (to define the problem). You only need to archive enough results to get good plots or movies after the analysis is done.</li>


<li><span id="ftime"></span><tt>(first time)</tt> is an optional time to start archiving in milliseconds (it can be an entity). If this time is greater than zero, the analysis will archive the initial state (to define the problem) and not archive anymore more results until this time is reached. After this time, archiving will proceed at the time interval specified in <tt>(time)</tt>.
<li><span id="ftime"></span><tt>(first time)</tt> is an optional time to start archiving in [[ConsistentUnits Command#Legacy and Consistent Units|alt time units]] (it can be an [[Entity Command|entity]]). If this time is greater than zero, the analysis will archive the initial state (to define the problem) and not archive anymore more results until this time is reached. After this time, archiving will proceed at the time interval specified in <tt>(time)</tt>.
 
<li><tt>(props)</tt> forces archiving if <tt>(props)</tt> propagations and/or debonds have occurred since the last archive (default is 0, which disables counting of propagations).</li>


<li><tt>(list on quantities)</tt> is a comma-separted list of quantities to be archived (see [[#ToArchive Command|<tt>ToArchive</tt> command]] for the details.
<li><tt>(list on quantities)</tt> is a comma-separted list of quantities to be archived (see [[#ToArchive Command|<tt>ToArchive</tt> command]] for the details.


</ul>
</ul>
A single <tt>ArchiveTime</tt> command is usually enough, but sometimes you want to archive infrequently at the beginning and then more frequently later or to archive by some other custom scheme. To create custom archiving schemes, you create archiving blocks with multiple <tt>ArchiveTime</tt> commands. Each subsequent <tt>ArchiveTime</tt> command adds a new block that archives with new <tt>(time)</tt> and <tt>(props)</tt> settings in the first and optional third arguments. The new block starts at the time given in the second parameter, which is now a required parameter and it must be a later time than the start of the previous archiving block.


==== ToArchive Command ====
==== ToArchive Command ====
Line 52: Line 60:
<li><tt>velocity</tt> - particle velocities</li>
<li><tt>velocity</tt> - particle velocities</li>
<li><tt>stress</tt> - particle stress</li>
<li><tt>stress</tt> - particle stress</li>
<li><tt>strain</tt> - particle strain, which is elastic strain for plasticity materials</li>
<li><tt>strain</tt> - symmetric part of the displacement gradient ('''F-I'''), which in combination with <tt>rotstrain</tt> gives full deformation gradient</li>
<li><tt>plasticstrain</tt> - particle plastic strain</li>
<li><tt>plasticstrain</tt> - an alternate particle strain; it is plastic strain for some [[Material Models|materials]], or something else for others</li>
<li><tt>strainenergy</tt> - particle strain energy</li>
<li><tt>rotstrain</tt> - initial material axis rotation angles. Archiving this strain is needed to find rotation strains, deformation gradients, and to plot transformed material points. It is now automatically activated whenever <tt>strain</tt> is archived and therefore normall does not need to be set.</li>
<li><tt>plasticenergy</tt> - cumulative dissipated energy</li>
<li><tt>strainenergy</tt> - particle strain energy, which is cumulative <i>V</i>*&sigma;.d(&epsilon;-&epsilon;<sub>res</sub>)</li>
<li><tt>externalwork</tt> - cumulative work done on a particle be external forces</li>
<li><tt>workenergy</tt> - particle work energy, which is cumulative <i>V</i>*&sigma;.d&epsilon;</li>
<li><tt>heatenergy</tt> - particle heat energy; the value will only be physically correct if all [[Material Models|materials]] specify their heat capacity</li>
<li><tt>plasticenergy</tt> - cumulative dissipated energy (despite the name, it is energy dissipated by any modeled mechanism)</li>
<li><tt>lp</tt> - the angular momentum due to particle velocity gradient.</li>
<li><tt>wp</tt> - the angular velocity due to particle velocity gradient.</li>
<li><tt>temperature</tt> - particle temperature</li>
<li><tt>temperature</tt> - particle temperature</li>
<li><tt>concentration</tt> - particle concentration and concentration gradients</li>
<li><tt>concentration</tt> or <tt>porepressure</tt> - particle concentration and concentration gradient (when doing [[Diffusion Calculations|diffusion calculations]]) or particle pore pressure and pore pressure gradient (when doing [[Poroelasticity Calculations|poroelasticity calculations]]).</li>
<li><tt>shearcomponents</tt> - separate components of total shear strain (namely u/y and v/x; these sum to total shear strain)</li>
<li><tt>history#</tt> - where '#' is 1 to 19 to archive that history variable for a [[Material Models|material]]. These history variables are only relevant for certain types of materials. To archive history data beyond #19 or to archive to a different format, you can use the [[HistoryArchive Custom Task]].</li>
<li><tt>elementcrossings</tt> - number of times the particle has crossed an element boundary since the last archive time.</li>
<li><tt>damagenormal</tt> - the normal vector of the failure plane in the particle when using [[Material Models#Softening Materials|softening materials]].</li>
<li><tt>size</tt> - to archive particle sizes. The main use is to allow [[ExtractMPM]] to export an VTK file with an unstructured grid (<tt>-U</tt> option). This output can improve visualization in software like [[ParaView]] or [[VisIt]].</li>
</ul>
 
The follow options archive options are for crack particles:
 
<ul>
<li><tt>jintegral</tt> - crack tip J1 and J2 integrals</li>
<li><tt>jintegral</tt> - crack tip J1 and J2 integrals</li>
<li><tt>stressintensity</tt> - crack tip KI and KII</li>
<li><tt>stressintensity</tt> - crack tip KI and KII</li>
<li><tt>energybalance</tt> - energy balance results during crack growth by energy balance.</li>
<li><tt>czmdisp</tt> - mode I and mode II energy dissipated per unit area by cohesive zones. Needed to be able to plot cohesive zone damage length or to find [[Traction Laws#Fracture Mechanics Energy Release Rate|fracture mechanics energy release rate]].</li>
<li><tt>history#</tt> - where '#' is 1 to 4 to archive that history variable for a material. This history variable is only relevant for certain types of materials.</li>
<li><tt>traction#</tt> - where '#' is 1 to 10 to archive that traction history variable for a [[Traction Laws|traction law]]. These history variables are only relevant for certain types of [[Traction Laws|cohesive laws]].</li>
<li><tt>thermalenergy</tt> - approximate particle thermal energy (&rho; C<sub>p</sub> &Delta;T<sup>2</sup>/(2 T<sub>0</sub>) where T<sub>0</sub> is the stress free temperature) - only meaningful when doing conduction calculations and only accurate when the temperature changes are small.</li>
<li><tt>elementcrossings</tt> - number of times the particle has crossed an element boundary since the last archive time.</li>
<li><tt>rotstrain</tt> - rotational strain. Archiving this strain is needed to plot transformed material points.</li>
</ul>
</ul>


Line 74: Line 91:
<li><tt>mass</tt> - particle mass</li>
<li><tt>mass</tt> - particle mass</li>
<li><tt>material ID</tt> - material ID number for particle</li>
<li><tt>material ID</tt> - material ID number for particle</li>
<li><tt>material angle</tt> - material axis angle for anisotropic materials</li>
<li><tt>material angle</tt> - small-strain material angle (this is combined with <tt>strains</tt> and <tt>rotstrain</tt> to find [[Archive File Formats#Rotational Strains and Deformation Gradient|rotational strains and deformation gradients]].</li>
<li><tt>thickness</tt> - thickness for 2D calculations</li>
<li><tt>thickness</tt> - thickness for 2D calculations</li>
<li><tt>position</tt> - current particle position</li>
<li><tt>position</tt> - current particle position</li>
Line 83: Line 100:
</ul>
</ul>


Finally, note that if no <tt>ToArchive</tt> command is used in an input file, the default archived quantities will be equivalent to the commands:
Finally, note that if no <tt>ToArchive</tt> command is used, the simulation will archive velocity, stress, strain, and all above "standard" properties. If <tt>ToArchive</tt> commands are used, the velocity, stress, and strain will no longer be archived unless you include them in the <tt>ToArchive</tt> commands along with any other properties you would like to visualize.
 
ToArchive velocity,stress,strain,plasticstrain
ToArchive plasticenergy,externalwork,temperature
 
But if one or more <tt>ToArchive</tt> commands are used, you have to specify all quantities you want (''i.e.'', the default ones are not automatically included).


=== XML Input Files ===
=== XML Input Files ===


In XML input files, the archiving commands, which must be within the single <tt><MPMHeader></tt> element, are:
In XML input files, the archiving commands, which must be within the [[MPM Input Files#MPM Header|<tt><MPMHeader></tt> element]], are:


  <ArchiveRoot unique='0'>(path)</ArchiveRoot>
  <ArchiveRoot unique='0'>(path)</ArchiveRoot>
  <ArchiveTime>(time)</ArchiveTime>
  <ArchiveGroup time= '(time)' start='(first time)' maxProps='(props)'/>
  <FirstArchiveTime>(first time)</FirstArchiveTime>
  <MPMArchive result="(resultName)" setting='(YorN)'/>
  <MPMArchiveOrder>iYYYYNYYYNYYNNNNNY</MPMArchiveOrder>
  <MPMArchive result="(resultName)" setting='(YorN)'/>
  <CrackArchiveOrder>iYYYN</CrackArchiveOrder>
...
  <MPMArchive result="(resultName)" setting='(YorN)'/>


where
where


* <tt>(path)</tt> is the archive path as explain [[#path_name|above]].
* <tt>(path)</tt> is the archive path. The optional <tt>unique</tt> attribute (if = 1) will force the creation of a new folder. Both these settings are  as explained [[#path_name|above]].
* <tt>(time)</tt> is the [[#atime|time interval between archiving]]. A [[Units Attribute|units attribute]] determines the time units.
* <tt>(time)</tt> is the [[#atime|time interval between archiving]]. A [[Units Attribute|units attribute]] determines the time units or default is [[ConsistentUnits Command#Legacy and Consistent Units|time units]].
* <tt>(time)</tt> is the [[#ftime|first time results are archived]]. A [[Units Attribute|units attribute]] determines the time units.
* <tt>(first time)</tt> is the [[#ftime|first time results are archived]]. A [[Units Attribute|units attribute]] determines the time units or default is [[ConsistentUnits Command#Legacy and Consistent Units|time units]].
* <tt>(props)</tt> forces archiving if <tt>(props)</tt> propagations and/or debonds have occurred since the last archive (default is 0, which disables counting of propagations).
* <tt>(resultName)</tt> is an archive quantity (from case insensitive names given [[#ToArchive Command|above]]). The <tt>setting</tt> can be 'Y' or 'N' to archive or not archive (and the default is 'Y').


The calculations results included in the archive files are determined by a series of 'Y' and 'N' (or other) flags in the strings in the <tt>MPMArchiveOrder</tt> and <tt>CrackArchiveOrder</tt> commands.
==== Alternative Archiving Option in XML Files ====
 
The <tt>MPMArchive</tt> commands for <tt>XML</tt> files became available in Dec. 2016. Prior to that command, MPM archiving options were set instead with the two commands:
 
<MPMArchiveOrder>iYYYYNYYYNYYNNNNNYNNNNNN</MPMArchiveOrder>
<CrackArchiveOrder>iYYYNNN</CrackArchiveOrder>
 
When using these commands instead of <tt>MPMArchive</tt> commands (and they are still allowed), calculation results included in the archive files are determined by a series of 'Y' and 'N' (or other) flags in the strings in the <tt>MPMArchiveOrder</tt> and <tt>CrackArchiveOrder</tt> commands. The byte options are described in following two sections
 
===== <MPMArchiveOrder> =====


==== <MPMArchiveOrder> ====
   <ul>
   <ul>
   <li>Byte 1: Byte order of archived files ('m' for old Macintosh order or 'i' for Intel chip order). This parameter is ignored on input but must be supplied for alignment.</li>
   <li>Byte 1: byte order of archived files ('m' for old Macintosh order or 'i' for Intel chip order). This parameter is ignored on input but must be supplied for alignment.</li>
   <li>Byte 2: Default particle properties (particle mass, position, material information, and thickness). This byte must always by 'Y'.</li>
   <li>Byte 2: default particle properties (particle mass, position, material information, and thickness). This byte must always by 'Y'.</li>
   <li>Byte 3: Particle velocity</li>
   <li>Byte 3: particle velocity</li>
   <li>Byte 4: Particle stress</li>
   <li>Byte 4: particle stress</li>
   <li>Byte 5: Particle strain (which is elastic strain for plasticity materials)</li>
   <li>Byte 5: symmetric part of the displacement gradient ('''F-I'''), which in combination with rotational strain (Byte 18) gives full deformation gradient</li>
   <li>Byte 6: Particle plastic strain</li>
   <li>Byte 6: an alternate particle strain; it is plastic strain for some [[Material Models|materials]], of something else for others</li>
   <li>Byte 7: Should always be 'N'. Present to support reading old versions of archive files.</li>
   <li>Byte 7: should always be 'N'. Present to support reading old versions of archive files.</li>
   <li>Byte 8: Particle external work</li>
   <li>Byte 8: particle work energy, which is cumulative &sigma;.d&epsilon;</li>
   <li>Byte 9: Particle temperature</li>
   <li>Byte 9: particle temperature</li>
   <li>Byte 10: Particle plastic energy</li>
   <li>Byte 10: particle plastic energy</li>
   <li>Byte 11: Should always be 'N'. Present to support reading old versions of archive files.</li>
   <li>Byte 11: should always be 'N'. Present to support reading old versions of archive files.</li>
   <li>Byte 12: Particle total shear strain components (du/dy and dv/dx)</li>
   <li>Byte 12: particle total shear strain components (du/dy and dv/dx), but no longer supported in visualization tools; it should be 'N'</li>
   <li>Byte 13: Particle strain energy</li>
   <li>Byte 13: particle strain energy, which is cumulative &sigma;.d(&epsilon;-&epsilon;<sub>res</sub>)</li>
   <li>Byte 14: Setting 'Y' or 'N' refers to particle history variable 1, but up to four history variables can be archived by using the following characters in this byte:
   <li>Byte 14: setting 'Y' or 'N' refers to particle history variable 1, but up to four history variables can be archived by using the following characters (note: the quantities archived are determined by the 4 least significant bits in the ASCII code shown for that character):
<pre class="near">
'1' (0x31) or 'Y' - history 1
'2' (0x32) - history 2
'3' (0x33) - history 1 and 2
'4' (0x34) - history 3
'5' (0x35) - history 1 and 3
'6' (0x36) - history 2 and 3
'7' (0x37) - history 1, 2, and 3
'8' (0x38) - history 4
'9' (0x39) - history 1 and 4
':' (0x3A) - history 2 and 4
';' (0x3B) - history 1, 2, and 4
'&lt;' (0x3C) - history 3 and 4 (use '|' (0x7C) to avoid '&lt;' in an XML file)
'=' (0x3D) - history 1, 3, and 4
'&gt;' (0x3E) - history 2, 3, and 4 (use '~' (0x7E) to avoid '&gt;' in an XML file)
'?' (0x3F) - history 1, 2, 3, and 4
</pre>
History variables are only meaningful for some [[Material Models|material types]]. See byte 22 to 24 below to archive history data beyond #4. To archive more history data or to archive to a different format, you can use the [[HistoryArchive Custom Task]].</li>
  <li>Byte 15: particle concentration and concentration gradients (when doing [[Diffusion Calculations|diffusion calculations]]) or particle pore pressure and pore pressure gradients (when doing [[Poroelasticity Calculations|poroelasticity calculations]]).</li>
  <li>Byte 16: particle heat energy; the value will only be physically correct if all [[Material Models|materials]] specify their heat capacity</li>
  <li>Byte 17: number of times this particle crossed an element boundary since the last archive time.</li>
  <li>Byte 18: particle rotational strain or antisymmetric part of the deformation gradient. Archiving this strain is needed to plot transformed material points and it is now automatically activated whenever strain or Byte 5 is Y (which means full deformation gradient is archived).</li>
  <li>Byte 19: the normal vector of the failure plane in the particle when using [[Material Models#Softening Materials|softening materials]].</li>
  <li>Byte 20: the angular momentum due to particle spin (zero unless [[Analysis Command#Tracking Particle Spin|particle spin]] is activated).</li>
  <li>Byte 21: the angular velocity due to particle spin (zero unless [[Analysis Command#Tracking Particle Spin|particle spin]] is activated; also zero on time step 0 due to calculations methods).</li>
  <li>Byte 22: setting 'Y' or 'N' refers to particle history variable 5, but up to five more history variables can be archived by using the following characters (note: the quantities archived are determined by the 5 least significant bits in the ASCII code provided for that character):
<pre class="near">
<pre class="near">
'1' or 'Y' - history 1
'!' (0x21) or 'Y' - history 5
'2' - history 2
'"' (0x22) - history 6
'3' - history 1 and 2
'#' (0x23) - history 5 and 6
'4' - history 3
'$' (0x24) - history 7
'5' - history 1 and 3
'%' (0x25) - history 5 and 7
'6' - history 2 and 3
'&amp;' (0x26) - history 6 and 7 (use 'f' (0x66) to avoid '&amp;' in an XML file)
'7' - history 1, 2, and 3
''' (0x27) - history 5, 6, and 7
'8' - history 4
'(' (0x28) - history 8
'9' - history 1 and 4
')' (0x29) - history 5 and 8
':' - history 2 and 4
'*' (0x2A) - history 6 and 8
';' - history 1, 2, and 4
'+' (0x2B) - history 5, 6, and 8
'&lt;' - history 3 and 4
',' (0x2C) - history 7 and 8
'=' - history 1, 3, and 4
'-' (0x2D) - history 5, 7, and 8
'&gt;' - history 2, 3, and 4
'/' (0x2E) - history 6, 7, and 8
'?' - history 1, 2, 3, and 4
'/' (0x2F) - history 5, 6, 7, and 8
'0' (0x30) - history 9
'1' (0x31) - history 5 and 9
'2' (0x32) - history 6 and 9
'3' (0x33) - history 5, 6, and 9
'4' (0x34) - history 7 and 9
'5' (0x35) - history 5, 7, and 9
'6' (0x36) - history 6, 7, and 9
'7' (0x37) - history 5, 6, 7, and 9
'8' (0x38) - history 8 and 9
'9' (0x39) - history 5, 8, and 9
':' (0x3A) - history 6, 8, and 9
';' (0x3B) - history 5, 6, 8, and 4
'&lt;' (0x3C) - history 7, 8, and 9 (use '|' (0x7C) to avoid '&lt;' in an XML file)
'=' (0x3D) - history 5, 7, 8, and 9
'&gt;' (0x3E) - history 6, 7, 8, and 9 (use '~' (0x7E) to avoid '&gt;' in an XML file)
'?' (0x3F) - history 5, 6, 7, 8, and 9
</pre>
</pre>
History variables are only meaningful for some [[Material Models|material types]].</li>
History variables are only meaningful for some [[Material Models|material types]]. See next two bytes to archive history data beyond #9.</li>
   <li>Byte 15: Particle concentration and concentration gradients - only meaningful when doing diffusion calculations.</li>
   <li>Byte 23: setting 'Y' or 'N' refers to particle history variable 10, but history variables 10 to 14 can be archived using the characters listed for byte 22 (and replacing 5 to 9 with 10 to 14). See next byte to archive history data beyond #14.</li>
   <li>Byte 16: Approximate particle thermal energy (&rho; C<sub>p</sub> &Delta;T<sup>2</sup>/(2 T<sub>0</sub>) where T<sub>0</sub> is the <a href="#stressfreetemp">stress free temperature</a>) - only meaningful when doing conduction calculations and only accurate when the temperature changes are small.</li>
   <li>Byte 24: setting 'Y' or 'N' refers to particle history variable 15, but history variables 15 to 19 can be archived using the characters listed for byte 22 (and replacing 5 to 9 with 15 to 19). To archive history data beyond #19 or to archive to a different format, you can use the [[HistoryArchive Custom Task]]. </li>
   <li>Byte 17: Number of times this particle crossed an element boundary since the last archive time.</li>
   <li>Byte 25: particle size</li>
  <li>Byte 18: Rotational strain; this strain must be archived for visualization tools to be able to plot &quot;transformed&quot; points (<i>i.e.</i>, the stretch and shear plotted points to match the material point deformation state).</li>
</ul>
  </ul>
 
 
'''Default value''': <tt>iYNN...</tt> - <i>i.e.</i> one Y and the rest N
'''Default value''': <tt>iYNN...</tt> - <i>i.e.</i> one Y and the rest N
 
===== <CrackArchiveOrder> =====


==== <CrackArchiveOrder> ====
   <ul>
   <ul>
   <li>Byte 1: Byte order of archived files ('m' for Macintosh order or 'i' for Intel chip order). This parameter is ignored on input but must be supplied for alignment.</li>
   <li>Byte 1: Byte order of archived files ('m' for Macintosh order or 'i' for Intel chip order). This parameter is ignored on input but must be supplied for alignment.</li>
Line 156: Line 221:
   <li>Byte 3: J Integral at designated crack tips.</li>
   <li>Byte 3: J Integral at designated crack tips.</li>
   <li>Byte 4: Stress intensity factors at designated crack tips.</li>
   <li>Byte 4: Stress intensity factors at designated crack tips.</li>
   <li>Byte 5: Dynamic energy balancing results (in research, not meant for general use).</li>
   <li>Byte 5: Mode I and Mode II energy dissipated by a cohesive zone.</li>
  <li>Byte 6: Setting 'Y' or 'N' refers to traction history variable 1, but traction history variables 1 to 5 can be archived using the characters listed for byte 22 in the [[#<MPMArchiveOrder>|previous section]] (and replacing 5 to 9 with traction 1 to 5). See next byte to archive traction history data beyond #5.</li>
  <li>Byte 7: Setting 'Y' or 'N' refers to traction history variable 6, but traction history variables 6 to 10 can be archived using the characters listed for byte 22 in the [[#<MPMArchiveOrder>|previous section]] (and replacing 5 to 9 with traction 6 to 10).</li>
   </ul>
   </ul>
    
    
'''Default value''': <tt>iYNNNN</tt>.
'''Default value''': <tt>iYNN...</tt> - <i>i.e.</i> one Y and the rest N.


== Archiving Mesh Data in VTK Files ==
== Archiving Mesh Data in VTK Files ==


See [[Custom Tasks]].
As an alternative to particle data, you can archive grid results using the [[VTKArchive Custom Task]], which write "VTK Legacy" files that can be viewed in other applications. This option is most useful for new visualization options for 3D simulations.


== Notes ==
== Notes ==
Line 169: Line 236:
# There are no options for archiving kinetic energy because it is easily calculated in visualization software from mass and velocity. Thus, to do kinetic energy calculations, you must archive particle velocity.
# There are no options for archiving kinetic energy because it is easily calculated in visualization software from mass and velocity. Thus, to do kinetic energy calculations, you must archive particle velocity.
# Total energy is sum of strain energy and kinetic energy. To visualize total energy results, you must archive strain energy and velocity (for kinetic energy)
# Total energy is sum of strain energy and kinetic energy. To visualize total energy results, you must archive strain energy and velocity (for kinetic energy)
# Potential energy is total energy minus external work. To visualize internal energy results, you must archive strain energy, velocity (for kinetic energy), and internal work. If the problem has not external work (''i.e.'', force loaded particles), potential energy is equal to total energy.

Latest revision as of 09:05, 2 May 2024

These commands determine the way results of the calculations are archived for later analysis.

Archiving Particle Data

In MPM calculations, the calculation results are stored in a series of archive files. These files give periodic snapshots for the state of each material point. These files are read after the analysis to plot the results; in fact the results cannot be visualized without them. For more details, you can refer to the output file format definition.

Scripted Input Files

In scripted input files, the archiving options have two forms:

Archive (path)
ArchiveTime (time),<(first time)>,<(props)>
<ArchiveTime (time2),(second time),<(props2)>>
<ArchiveTime (time3),(third time),<(props3)>>
ToArchive (list of quantities)

or

ArchiveUnique (path)
ArchiveTime (time),<(first time)>,<(props)>
<ArchiveTime (time2),<(second time)>,<(props2)>>
<ArchiveTime (time3),(third time),<(props3)>>
ToArchive (list on quantities)

where

  • (path) gives a relative path name from the saved output file to the archived files. The path name should be entered in Unix style or
    folder/folder/folder/root

    where there can be any number of folders followed by the root archive file name. The saved files will be in that location and have names

    root.num

    where num is the step number being archived. The folder names and root name cannot contain any colons (":"), to avoid conflict with MacOS path names) or spaces (to be consistent with most Unix systems).
       If a series MPM calculations are saved to the same folder without changing the archive path name, the later calculations will most likely overwrite the earlier calculations causing you to lose results. The solution is to use the second form above that replaces the Archive command with an ArchiveUnique command. The ArchiveUnique command forces creation of a new folder within the last folder of the path. In the above path example, the ArchiveUnique option will write to the files:

    folder/folder/folder/#/root.num

    where # is chosen from 1, 2, 3, ... to create a unique folder. You can then safely write multiple MPM output files to the save folder without conflicts

  • (time) gives the time interval between archiving results in alt time units (it can be an entity). The analysis will always archive the initial state (to define the problem). You only need to archive enough results to get good plots or movies after the analysis is done.
  • (first time) is an optional time to start archiving in alt time units (it can be an entity). If this time is greater than zero, the analysis will archive the initial state (to define the problem) and not archive anymore more results until this time is reached. After this time, archiving will proceed at the time interval specified in (time).
  • (props) forces archiving if (props) propagations and/or debonds have occurred since the last archive (default is 0, which disables counting of propagations).
  • (list on quantities) is a comma-separted list of quantities to be archived (see ToArchive command for the details.

A single ArchiveTime command is usually enough, but sometimes you want to archive infrequently at the beginning and then more frequently later or to archive by some other custom scheme. To create custom archiving schemes, you create archiving blocks with multiple ArchiveTime commands. Each subsequent ArchiveTime command adds a new block that archives with new (time) and (props) settings in the first and optional third arguments. The new block starts at the time given in the second parameter, which is now a required parameter and it must be a later time than the start of the previous archiving block.

ToArchive Command

The ToArchive command determines which calculation results to include in archived results by providing a comma-separated list of the following options (which can be in one or more ToArchive commands and are case sensitive):

  • velocity - particle velocities
  • stress - particle stress
  • strain - symmetric part of the displacement gradient (F-I), which in combination with rotstrain gives full deformation gradient
  • plasticstrain - an alternate particle strain; it is plastic strain for some materials, or something else for others
  • rotstrain - initial material axis rotation angles. Archiving this strain is needed to find rotation strains, deformation gradients, and to plot transformed material points. It is now automatically activated whenever strain is archived and therefore normall does not need to be set.
  • strainenergy - particle strain energy, which is cumulative V*σ.d(ε-εres)
  • workenergy - particle work energy, which is cumulative V*σ.dε
  • heatenergy - particle heat energy; the value will only be physically correct if all materials specify their heat capacity
  • plasticenergy - cumulative dissipated energy (despite the name, it is energy dissipated by any modeled mechanism)
  • lp - the angular momentum due to particle velocity gradient.
  • wp - the angular velocity due to particle velocity gradient.
  • temperature - particle temperature
  • concentration or porepressure - particle concentration and concentration gradient (when doing diffusion calculations) or particle pore pressure and pore pressure gradient (when doing poroelasticity calculations).
  • history# - where '#' is 1 to 19 to archive that history variable for a material. These history variables are only relevant for certain types of materials. To archive history data beyond #19 or to archive to a different format, you can use the HistoryArchive Custom Task.
  • elementcrossings - number of times the particle has crossed an element boundary since the last archive time.
  • damagenormal - the normal vector of the failure plane in the particle when using softening materials.
  • size - to archive particle sizes. The main use is to allow ExtractMPM to export an VTK file with an unstructured grid (-U option). This output can improve visualization in software like ParaView or VisIt.

The follow options archive options are for crack particles:

  • jintegral - crack tip J1 and J2 integrals
  • stressintensity - crack tip KI and KII
  • czmdisp - mode I and mode II energy dissipated per unit area by cohesive zones. Needed to be able to plot cohesive zone damage length or to find fracture mechanics energy release rate.
  • traction# - where '#' is 1 to 10 to archive that traction history variable for a traction law. These history variables are only relevant for certain types of cohesive laws.

Certain particle results are always archived and thus there is no need to specify them in a ToArchive command. The standard archived data are:

  • mass - particle mass
  • material ID - material ID number for particle
  • material angle - small-strain material angle (this is combined with strains and rotstrain to find rotational strains and deformation gradients.
  • thickness - thickness for 2D calculations
  • position - current particle position
  • original position - initial position for displacement calculations
  • crack position - crack particle positions
  • crack original position - initial crack particle positions
  • crack surface positions - location of crack surfaces

Finally, note that if no ToArchive command is used, the simulation will archive velocity, stress, strain, and all above "standard" properties. If ToArchive commands are used, the velocity, stress, and strain will no longer be archived unless you include them in the ToArchive commands along with any other properties you would like to visualize.

XML Input Files

In XML input files, the archiving commands, which must be within the <MPMHeader> element, are:

<ArchiveRoot unique='0'>(path)</ArchiveRoot>
<ArchiveGroup time= '(time)' start='(first time)' maxProps='(props)'/>
<MPMArchive result="(resultName)" setting='(YorN)'/>
<MPMArchive result="(resultName)" setting='(YorN)'/>
...
<MPMArchive result="(resultName)" setting='(YorN)'/>

where

  • (path) is the archive path. The optional unique attribute (if = 1) will force the creation of a new folder. Both these settings are as explained above.
  • (time) is the time interval between archiving. A units attribute determines the time units or default is time units.
  • (first time) is the first time results are archived. A units attribute determines the time units or default is time units.
  • (props) forces archiving if (props) propagations and/or debonds have occurred since the last archive (default is 0, which disables counting of propagations).
  • (resultName) is an archive quantity (from case insensitive names given above). The setting can be 'Y' or 'N' to archive or not archive (and the default is 'Y').

Alternative Archiving Option in XML Files

The MPMArchive commands for XML files became available in Dec. 2016. Prior to that command, MPM archiving options were set instead with the two commands:

<MPMArchiveOrder>iYYYYNYYYNYYNNNNNYNNNNNN</MPMArchiveOrder>
<CrackArchiveOrder>iYYYNNN</CrackArchiveOrder>

When using these commands instead of MPMArchive commands (and they are still allowed), calculation results included in the archive files are determined by a series of 'Y' and 'N' (or other) flags in the strings in the MPMArchiveOrder and CrackArchiveOrder commands. The byte options are described in following two sections

<MPMArchiveOrder>
  • Byte 1: byte order of archived files ('m' for old Macintosh order or 'i' for Intel chip order). This parameter is ignored on input but must be supplied for alignment.
  • Byte 2: default particle properties (particle mass, position, material information, and thickness). This byte must always by 'Y'.
  • Byte 3: particle velocity
  • Byte 4: particle stress
  • Byte 5: symmetric part of the displacement gradient (F-I), which in combination with rotational strain (Byte 18) gives full deformation gradient
  • Byte 6: an alternate particle strain; it is plastic strain for some materials, of something else for others
  • Byte 7: should always be 'N'. Present to support reading old versions of archive files.
  • Byte 8: particle work energy, which is cumulative σ.dε
  • Byte 9: particle temperature
  • Byte 10: particle plastic energy
  • Byte 11: should always be 'N'. Present to support reading old versions of archive files.
  • Byte 12: particle total shear strain components (du/dy and dv/dx), but no longer supported in visualization tools; it should be 'N'
  • Byte 13: particle strain energy, which is cumulative σ.d(ε-εres)
  • Byte 14: setting 'Y' or 'N' refers to particle history variable 1, but up to four history variables can be archived by using the following characters (note: the quantities archived are determined by the 4 least significant bits in the ASCII code shown for that character):
    '1' (0x31) or 'Y' - history 1
    '2' (0x32) - history 2
    '3' (0x33) - history 1 and 2
    '4' (0x34) - history 3
    '5' (0x35) - history 1 and 3
    '6' (0x36) - history 2 and 3
    '7' (0x37) - history 1, 2, and 3
    '8' (0x38) - history 4
    '9' (0x39) - history 1 and 4
    ':' (0x3A) - history 2 and 4
    ';' (0x3B) - history 1, 2, and 4
    '<' (0x3C) - history 3 and 4 (use '|' (0x7C) to avoid '<' in an XML file)
    '=' (0x3D) - history 1, 3, and 4
    '>' (0x3E) - history 2, 3, and 4 (use '~' (0x7E) to avoid '>' in an XML file)
    '?' (0x3F) - history 1, 2, 3, and 4
    
    History variables are only meaningful for some material types. See byte 22 to 24 below to archive history data beyond #4. To archive more history data or to archive to a different format, you can use the HistoryArchive Custom Task.
  • Byte 15: particle concentration and concentration gradients (when doing diffusion calculations) or particle pore pressure and pore pressure gradients (when doing poroelasticity calculations).
  • Byte 16: particle heat energy; the value will only be physically correct if all materials specify their heat capacity
  • Byte 17: number of times this particle crossed an element boundary since the last archive time.
  • Byte 18: particle rotational strain or antisymmetric part of the deformation gradient. Archiving this strain is needed to plot transformed material points and it is now automatically activated whenever strain or Byte 5 is Y (which means full deformation gradient is archived).
  • Byte 19: the normal vector of the failure plane in the particle when using softening materials.
  • Byte 20: the angular momentum due to particle spin (zero unless particle spin is activated).
  • Byte 21: the angular velocity due to particle spin (zero unless particle spin is activated; also zero on time step 0 due to calculations methods).
  • Byte 22: setting 'Y' or 'N' refers to particle history variable 5, but up to five more history variables can be archived by using the following characters (note: the quantities archived are determined by the 5 least significant bits in the ASCII code provided for that character):
    '!' (0x21) or 'Y' - history 5
    '"' (0x22) - history 6
    '#' (0x23) - history 5 and 6
    '$' (0x24) - history 7
    '%' (0x25) - history 5 and 7
    '&' (0x26) - history 6 and 7 (use 'f' (0x66) to avoid '&' in an XML file)
    ''' (0x27) - history 5, 6, and 7
    '(' (0x28) - history 8
    ')' (0x29) - history 5 and 8
    '*' (0x2A) - history 6 and 8
    '+' (0x2B) - history 5, 6, and 8
    ',' (0x2C) - history 7 and 8
    '-' (0x2D) - history 5, 7, and 8
    '/' (0x2E) - history 6, 7, and 8
    '/' (0x2F) - history 5, 6, 7, and 8
    '0' (0x30) - history 9
    '1' (0x31) - history 5 and 9
    '2' (0x32) - history 6 and 9
    '3' (0x33) - history 5, 6, and 9
    '4' (0x34) - history 7 and 9
    '5' (0x35) - history 5, 7, and 9
    '6' (0x36) - history 6, 7, and 9
    '7' (0x37) - history 5, 6, 7, and 9
    '8' (0x38) - history 8 and 9
    '9' (0x39) - history 5, 8, and 9
    ':' (0x3A) - history 6, 8, and 9
    ';' (0x3B) - history 5, 6, 8, and 4
    '<' (0x3C) - history 7, 8, and 9 (use '|' (0x7C) to avoid '<' in an XML file)
    '=' (0x3D) - history 5, 7, 8, and 9
    '>' (0x3E) - history 6, 7, 8, and 9 (use '~' (0x7E) to avoid '>' in an XML file)
    '?' (0x3F) - history 5, 6, 7, 8, and 9
    
    History variables are only meaningful for some material types. See next two bytes to archive history data beyond #9.
  • Byte 23: setting 'Y' or 'N' refers to particle history variable 10, but history variables 10 to 14 can be archived using the characters listed for byte 22 (and replacing 5 to 9 with 10 to 14). See next byte to archive history data beyond #14.
  • Byte 24: setting 'Y' or 'N' refers to particle history variable 15, but history variables 15 to 19 can be archived using the characters listed for byte 22 (and replacing 5 to 9 with 15 to 19). To archive history data beyond #19 or to archive to a different format, you can use the HistoryArchive Custom Task.
  • Byte 25: particle size

Default value: iYNN... - i.e. one Y and the rest N

<CrackArchiveOrder>
  • Byte 1: Byte order of archived files ('m' for Macintosh order or 'i' for Intel chip order). This parameter is ignored on input but must be supplied for alignment.
  • Byte 2: Default crack particle properties (location, surface positions). This byte must always by 'Y'.
  • Byte 3: J Integral at designated crack tips.
  • Byte 4: Stress intensity factors at designated crack tips.
  • Byte 5: Mode I and Mode II energy dissipated by a cohesive zone.
  • Byte 6: Setting 'Y' or 'N' refers to traction history variable 1, but traction history variables 1 to 5 can be archived using the characters listed for byte 22 in the previous section (and replacing 5 to 9 with traction 1 to 5). See next byte to archive traction history data beyond #5.
  • Byte 7: Setting 'Y' or 'N' refers to traction history variable 6, but traction history variables 6 to 10 can be archived using the characters listed for byte 22 in the previous section (and replacing 5 to 9 with traction 6 to 10).

Default value: iYNN... - i.e. one Y and the rest N.

Archiving Mesh Data in VTK Files

As an alternative to particle data, you can archive grid results using the VTKArchive Custom Task, which write "VTK Legacy" files that can be viewed in other applications. This option is most useful for new visualization options for 3D simulations.

Notes

  1. There are no options for archiving kinetic energy because it is easily calculated in visualization software from mass and velocity. Thus, to do kinetic energy calculations, you must archive particle velocity.
  2. Total energy is sum of strain energy and kinetic energy. To visualize total energy results, you must archive strain energy and velocity (for kinetic energy)