2.2.1. postResults
Purpose
Extract data from a simulation result file into an
ASCII table.
Background
- MSC.Marc (*.t16)
- DAMASK_spectral (*.spectralOut)
Types of output
- nodal scalar (displacement, temperature, ...)
- elemental scalar (equivalent stress, ...)
- elemental tensor (stress, strain, ...)
- homogenization output
- crystallite output (phase, orientation, deformation gradient, ...)
- constitutive output (dislocation density, slip resistance, twin volume fraction, ...)
Output processing
The result extraction internally comprises three steps:
- filtering the data according to geometry or mesh properties. Use the
--filter option to specify filtering conditions.
- grouping the filtered data by user-defined criteria based on geometry and mesh properties. Use the
--separation option to indicate which discrimination criteria you want for grouping.
- mapping the values in each group to one scalar quantity by a user-defined function. Use the
--map option to indicate how to map all values of a group to a single scalar.
File positions and increments
Typically, a result file contains more than one time step but, for instance, a number $N$ of them.
We distinguish between »positions«, which follow a strictly consecutive numbering $1,\ldots,N$, and »increments«, which follow the numbering that the respective increment had in the course of the overall simulation.
Example: suppose a simulation comprises 100 increments of which only every tenth is written to the result file.
The result file will then contain positions $0,1,\ldots,10$ and increments $0,10,\ldots,100$ (because the initial configuration is always included as position 0 and increment 0).
Usage
> postResults [options] resultfile
Switches
-
--info / -i [ False ] - just list contents of resultfile
-
--legacy / -l [ False ] - interpret user block according to legacy (prior to DAMASK rev 1115) format
-
--split / -s [ False ] - split output into one separate file per increment
-
--increments [ False ] - range indicator addresses true increment numbers, not plain positions in file
-
--sloppy [ False ] - do not pre-check validity of increment range
-
--time / -t [ False ] - output time of increment (as first data column)
-
--nodal / -n [ False ] - data is extrapolated to nodal value
Options
-
--type / -p string [ auto ] - type of resultfile
-
--prefix string [ none ] - prefix to output file name
-
--suffix string [ none ] - suffix to output file name
-
--dir / -d string [ postProc ] - name of subdirectory to hold output
-
--range / -r start end step [ all ] - range of positions (or increments) to output
-
--homogenization string or int [ 1 ] - homogenization identifier (section in material.config part <homogenization>)
-
--crystallite string or int [ 1 ] - crystallite identifier (section in material.config part <crystallite>)
-
--phase string or int [ 1 ] - phase identifier (section in material.config part <phase>)
-
--ns list - nodal scalars to extract
-
--es list - elemental scalars to extract
-
--et list - elemental tensors to extract
-
--ho list - homogenization results to extract
-
--cr list - crystallite results to extract
-
--co list - constitutive results to extract
-
--filter / -f PythonCode - condition(s) to filter results. keywords interpreted in the PythonCode are 'elem', 'node', 'ip', 'grain', and 'x', 'y', 'z'.
-
--separation list - properties to separate (and sort) results. keywords are 'elem', 'node', 'ip', 'grain', and 'x', 'y', 'z'.
-
--sort list - properties to sort results (overrides --separate order). keywords are 'none', 'elem', 'node', 'ip', 'grain', and 'x', 'y', 'z'.
-
--map / -m string or PythonLambda - function applied to map multiple values to one scalar quantity per group. User-defined mappings (
lambda a,b,n:) are formulated in an incremental fashion for each new data point, a(dd), and may use the current (incremental) result, b(ase), as well as the number, n(umber), of already processed data points for evaluation. Predefined options are
-
min
lambda n,b,a: min(b,a)
-
max
lambda n,b,a: max(b,a)
-
avg
lambda n,b,a: (n*b+a)/(n+1)
-
avgabs
lambda n,b,a: (n*b+abs(a))/(n+1)
-
sum
lambda n,b,a: b+a
-
sumabs
lambda n,b,a: b+abs(a)
Examples
- volume-averaged results of deformation gradient and first PiolaKirchhoff stress for all increments
--cr f,p
- spatially resolved slip resistance (of phenopowerlaw) in separate files for increments 10, 11, and 12
--range 10 12 1 --increments --split --separation x,y,z --co resistance_slip
- get averaged results in slices perpendicular to x for all negative y coordinates split per increment
--filter 'y < 0.0' --split --separation x --map 'avg'
- global sum of squared data falling into first quadrant arc between R1 and R2
--filter 'x >= 0.0 and y >= 0.0 and x*x + y*y >= R1*R1 and x*x + y*y <=R2*R2' --map 'lambda n,b,a: n*b+a*a'