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 --filteroption to specify filtering conditions.
-  grouping the filtered data by user-defined criteria based on geometry and mesh properties. Use the --separationoption 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 --mapoption 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/-pstring [ auto ]
-     type of resultfile
-  --prefixstring [ none ]
-     prefix to output file name
-  --suffixstring [ none ]
-     suffix to output file name
-  --dir/-dstring [ postProc ]
-     name of subdirectory to hold output
-  --range/-rstart end step [ all ]
-     range of positions (or increments) to output
-  --homogenizationstring or int [ 1 ]
-     homogenization identifier (section in material.config part <homogenization>)
-  --crystallitestring or int [ 1 ]
-     crystallite identifier (section in material.config part <crystallite>)
-  --phasestring or int [ 1 ]
-     phase identifier (section in material.config part <phase>)
-  --nslist
-     nodal scalars to extract
-  --eslist
-     elemental scalars to extract
-  --etlist
-     elemental tensors to extract
-  --holist
-     homogenization results to extract
-  --crlist
-     crystallite results to extract
-  --colist
-     constitutive results to extract
-  --filter/-fPythonCode
-     condition(s) to filter results. keywords interpreted in the PythonCode are 'elem', 'node', 'ip', 'grain', and 'x', 'y', 'z'.
-  --separationlist
-     properties to separate (and sort) results. keywords are 'elem', 'node', 'ip', 'grain', and 'x', 'y', 'z'.
-  --sortlist
-     properties to sort results (overrides --separate order). keywords are 'none', 'elem', 'node', 'ip', 'grain', and 'x', 'y', 'z'.
-  --map/-mstring 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) lambda n,b,a: min(b,a)
-  max lambda n,b,a: max(b,a) lambda n,b,a: max(b,a)
-  avg lambda n,b,a: (n*b+a)/(n+1) lambda n,b,a: (n*b+a)/(n+1)
-  avgabs lambda n,b,a: (n*b+abs(a))/(n+1) lambda n,b,a: (n*b+abs(a))/(n+1)
-  sum lambda n,b,a: b+a lambda n,b,a: b+a
-  sumabs lambda n,b,a: b+abs(a) 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'