## Version 3.x

Bug fixes

New features

- Material and loadcase files in YAML format
- Grid-solver geom file in vtk format
- Output and restart file in HDF5 format
- Pre- and post-processing tools as Python library
- Marc: added support for 2020

Dropped features

- (temporarily?) removed Abaqus support due to use of outdated compilers

General improvements

- fully parallelized output
- massive code refracturing
- reduced memory footprint
- most variable names are now in accordance with DAMASK overview paper
- using Bravais names for laticces
- using PETSc 3.14.x

Known Bugs

- some functionality from v2.0.3 still missing

Bug fixes

- RK4 state integrator working again

New features

- Most input files in YAML format
- HDF5 output
- Pre- and post-processing tools as Python library
- Marc: added support for 2019 and 2019.1

Dropped features

- (temporarily?) removed Abaqus support due to repeating errors

General improvements

- massive code refracturing
- reduced memory footprint
- non-local dislocation model uses semi-explicit integration
- above point allowed dropping the “ping-pong” scheme

Known Bugs

- some functionality from v2.0.3 still missing

## Version 2.0.x

Bug fixes

- corrected stiffness assembly for MPI simulations
- consistent orientation convention in DAMASK and the pre- and post-processing tools following [1]

New features

- Marc: added support for 2018 and 2018.1; dropped support for all older versions (not compatible with Python 3)
- Abaqus: included user subroutine DFLUX for thermo-mechanically couped simulation (not tested)
- restart information written in HDF5
- phenopowerlaw: allow for slip (Lp) in twinned volume fraction
- dislotwin: account for runtime in dislocation velocity calculation (improves high temperature behaviour)
- added non-octahedral slip systems for fcc ({110}<110>)

Dropped features

- removed Augmented Lagrange (AL) solver
- dropped support of Abaqus explicit due to repeating errors

General improvements

- renaming variables according to DAMASK overview paper
- speed up initialization by improved handling of config files
- new orientation/rotation class for pre-/post-processing scripts
- improved modularity of the code
- cleaned up the code a lot
- all pre-/post-processing scripts use Python 3
- introduced additional tests
- improved error reporting
- using PETSc 3.10.x
- more portable way to define PI
- keyword for mechanical homogenization changed from type to mech

Known Bugs

- RK4 state integrator broken

Reference

D. Rowenhorst, A.D. Rollett, G.S. Rohter, M. Groeber, M. Jackson, P.J. Konijnenberg, and M. De Graef. Consistent representations of and conversions between 3D rotations. Modelling and Simulation in Materials Science and Engineering 32-8 083501 (2015) DOI

Bug fixes

- corrected sampling of texture components
- spectral solver: corrected cutback issue

New features

- Marc: added support for 2016 and 2017; dropped support for 2013
- Marc: included user subroutine flux for thermo-mechanically couped simulation
- pre- and postprcessing: added more scripts providing additional functionalities

General improvements

- using PETSc 3.9
- python scripts compatible with Python 3
- variable cut back factor for Lp and Li
- use IntrinsicNAN
- additional sanity checks for input
- improved error handling and reporting for MPI simulations
- spectral solver: using forward-backward differences
- using analytic tangent instead of numerical perturbation
- cleaned up the code

Bug fixes

- Phenopowerlaw: corrected/unified calculation of gamma_dot in case of non-Schmid behaviour
- Spectral Solver: request thread aware MPI when using openMP
- Spectral Solver: output was broken for MPI calculations
- corrected occasional error in reading of Abaqus input file
- fixed wrong reshaping order (was ‘C’ now ‘F’) of 3dim to 1dim and back in addEuclideanDistance.py

New features

- Phenopowerlaw: (optional) family–wise assignment of initial hardening rate

General improvements

- central configuration file CONFIG
- Spectral Solver/Pre and postprocessing simplified
- removed core module
- modularized visualization

- additional pre and post processing scripts
- removed old svn ID tags
- cleaned up the code
- started to make python scripts compatible with Python 3
- started to adjust help message of pre- and postprocessing scripts for automated documentation
- improved code to get rid of compiler warnings and pyflakes complaints

Bug fixes

- fixed Fourier convolution and div/curl calculation for even/odd grid according to Johnston 2011 (MIT, FFTW)

New features

- added support for Marc2014.2 and Marc2015
- added support for TRIP effect to dislotwin constitutive model
- combined J2 plasticity with I2 (dilatational) plasticity as constitutive law »isotropic«
- included profiling into the test suite
- accelerated spectral methods based on derivative approximations
- new constitutive model »disloucla« for tungsten based on atomic scale parameter determination
- new constitutive model »phenoplus« accounting for neighbourhood
- bct(beta)-Sn slip systems included in lattice.f90
- added user-defined external heat source
- added spectral solvers for thermal and damage fields
- dropped non-PETSc »basic« spectral solver
- spectral solver now fully parallel (parallel IO, domain decomposition, FFTs, and restart)
- helper routine to get heat generation rate needed for MARC/Abaqus

General improvements

- improved makefile
- additional pre and post processing scripts
- increased use of intrinsic functions and BLAS subroutines
- incorporation of advanced Fortran 2008 features (see plastic_isotropic.f90 for example)
- improved installation instructions
- major restructuring of multi-field handling in DAMASK
- updated linearODF file format (including header and keywords)
- analytic jacobian as default for all solvers
- return elastic tangent, if matrix inversion error encountered during analytic tangent calculation, and give a warning

## Prior Revisions

Bug fixes

- corrected calculation of homogenizedC in dislotwin
- corrected Lp calculation in dislotwin
- corrected bug when using non-CP elements in Marc, thanks to Dong Zhang, Huazhong University of Science & Technology
- corrected bug in calculation of nodal positions for 2D Marc models, thanks to Dong Zhang, Huazhong University of Science & Technology

New features

- added support for Marc2014
- added a number of thermo-mechanical elements for Abaqus
- new script to name Abaqus output (abq_addUserOutput) as for Marc, thanks to B. Bode, University of Kassel
- added subroutines for local temperature evolution
- added subroutines for local damage evolution
- renamed constitutive_* to plastic_* in line with thermal_*, damage_*, …
- made constitutive (elastic and plastic) models damage aware
- additional constitutive model (dislokmc), this is a variant of dislotwin using input from KineticMonteCarlo simulations, thanks to D. Cereceda Senas, UCLA
- dislotwin was extended to also include TRIP effect
- non-Schmid behaviour for bcc in all constitutive models except dislotwin, titanmod (hex only), and j2 (isotropic)
- introduced second intermediate configuration (
**F**=**F**_{e}**F**_{i}**F**_{p}) for multi-field simulations

General improvements

- more consistency checks
- implemented new way of handling state variables to improve speed and memory consumption as well as readability of the code
- improved calculation of analytic tangent, now standard for spectral solver
- improved makefile
- more pre and post processing scripts
- reduced code duplication

Bug fixes

- added abaqus_v6_serial.env, not using the -openmp option as it does not work with ABQ explicit and newest Intel compilers

General improvements

- worked on compiler/linker options for improved compatibilty on different systems
- further improved Marc/Mentat integration
- small improvements in some pre/post processing scripts

[/su_spoiler]

[su_spoiler title=”Revision 3062″ open=”no” style=”fancy” icon=”chevron” anchor=”” class=””]

Bug fixes

- reading in nested configuration files (using {includefile})
- addStrainTensors.py: set threshold for values treated as zero to 1.e-12 (was 1.e-15) to avoid flip in strain direction
- constitutive_nonlocal: blocked density does not contribute to dislocation flux
- fixed crash in calculation of rotation matrix from Euler angles for PHI=180°
- fixed bug in hexagonal slip system definition
- corrected tangent of plastic velocity gradient dLp_dT in some constitutive models, which improves convergence a lot

New features

- added support for Marc2013.1, dropped support for Marc2010 (need features of Intel Fortran >12)
- homogenization_none (keyword
`none`

) for direct CP simulations

dislotwin:- use solid solution stress + Peierls stress as obstacle stress (for use with bcc materials)
- new parameter
`dipoleformationfactor`

; supress dipole evolution if set to zero

General improvements

- geom_grainGrowth.py
- orientation library (orientation.py)
- more pre and post processing scripts
- use enums instead of strings to avoid time consuming comparison in case switches
- restructured material library, seperate config files for individual sections
- simplified installation procedure (configure, make, make install)
- earlier reading of lattice structure allows for consistent reading of slip family parameters etc.
- generally better performance

Bug fixes

- lattice: fixed errors in hexagonal slipslip and twintwin interaction matrix
- homogenization: fixed problem with infinite loop occuring in some cases
- geom_rescale.py: fixed grid rescaling
- spectral solver (mixed variational schemes): fixed formulation to also bring rotational part of div(P) to zero
- spectral solver (mixed variational schemes): consistent convergence check for div(P) and curl(F)
- spectral solver: fixed restarting

New features

- added support for Marc/Mentat2013
- Abaqus: added Windows support
- FE solvers: introduced plain mode, which calculates each IP separately as expected by solvers
- works for local constitutive models only
- is extremely slow!

- spectral solver:
- added polarisation-based solver
- added capability for dynamic stress equilibrium

- constitutive laws: added non-Schmid behaviour for bcc materials
- constitutive_nonlocal: multiplication behaviour different for fcc and bcc materials
- material:
- changed keyword for texture manipulation (
`rotation`

to`axis`

) - warning if slip/twin families or interactions are not defined, depends on chosen lattice structure

- changed keyword for texture manipulation (
- numerics: allow equals sign (»=«) in keyword value pair
- vtk_scalars2vectors.py: new script to translate scalar vector components to vector data
- addCalculation.py: allow formulas that return arrays, added support for NumPy

General improvements

- compilation more robust in different environments
- changed Marc/Mentat integration for minimum interference with original installation
- improved compatibility with Python 3
- more consistent naming of variables

Bug fixes

- 2D elements set to thickness of 1 and can now be used with nonlocal model
- reintroduced calculation of forest projections for edge dislocations, got lost after revision 1908
- passive and active rotations were not clearly distinguished and partly mixed up. Fixed with following convention: Rotation conversions do not switch implicitly from active to passive or vice versa except when converting to or from any Euler type (Euler angles or Euler axis/angles). Those functions expect a passive rotation (i.e., change of coordinate system) as input if converting to Euler type and return a passive rotation if converting from Euler type.

New features

- MSC.Mentat integration featuring a dedicated DAMASK menu in
**Jobs**>**Run** - added possibility for multi-level inclusion of files in *.config and loadcase files by using »
`{path/to/include}`

« statements - added second type prismatic slip system for hexagonal lattices; interaction matrix is changed due to this, so be careful using old material.config files
- dropped ./fftw in favor of /usr/local as default location to search for FFTW library
- script to convert data format of VPFFT, EPFFT (R.A. Lebensohn) to that used by DAMASK spectral solver (geom, material.config)
- script that produces VTK files with the (node-based and ip-based) deformed mesh from MSC.Marc output file
- marc_extractData: simple variant of the postResult script that extracts all data from a *.t16 file (quadratic elements not yet supported) and writes it into an ASCIItable
- vtk_addData: searches for corresponding *.txt and *.vtk file in a given directory and adds the data from the *.txt file as SCALARS to the *.vtk file
- 3Dvisualize: wildcard matching for column headings, e.g. »[159]_p« to extract only the diagonal elements (scalars) of stress, or »[1-9]_p« to extract all nine values.
- keywords in spectral solver geometry description changed:
`resolution`

to`grid`

`dimension`

to`size`

- added library to write out VTK file from Fortran (Lib_VTK_IO)
- homogenization_isostrain: added possibility to select
`mapping`

of multiple grains:`average`

,`avg`

, or`mean`

gives average over Ngrains (default and former behavior)`parallel`

or`sum`

gives sum over Ngrains

- mesh: build_ipVolumes uses openMP parallelization
- spectral solver:
- arbitrary grid dimension in each direction possible (x,y > 1; z > 0)
`setup_code`

replaced by executing`./configure`

,`make`

, and`make install`

in DAMASK/code folder

- calculation of cell node positions now available in Python via damask.core module:
- damask.core.mesh.mesh_init_postprocessing(meshfilename) => initialize all necessary mesh variables
- damask.core.mesh.mesh_build_cellnodes(nodes) => calculate the cell node positions for a given list of node positions. The meshfile that is needed for the init is created automatically by mesh_init() within DAMASK.

- material:
- reworked distribution of microstructure constituents. Each material point represents “as good as possible” the fractional content of constituents.
- dropped error for volume fractions not totaling 1
- capability to rotate the texture given in material.config

- geom_fromVoronoiTessellation: added possibility to have microstructure indices for seed points. Hence, multiple seed points can belong to the same final grain.
- dislotwin: new twin nucleation model for fcc materials based on Acta Materialia 61 (2013) 494 DOI

General improvements

- significant performance boost for geometry-related preprocessing scripts
- reporting current time for most module inits
- material: improved efficiency of memory allocation
- damask Python module: predefined maps in damask.Colormap class; no need for a colorMap config file anymore
- math: pDecomposition enclosed by openMP critical statement as not thread safe
- CPFEM: reorganized calculation modes for better readability and cleaner structure
- mesh: substantial restructuring due to introduction of cells. A cell is the volume (area in 2D elements) that surrounds an integration point. It is described by up to 8 cell nodes and is used to calculate IP volume, area, and face normals and can, for instance, serve to generate a mesh for paraview that contains IP output as cell-centered data.
- spectral solver: specialized and much faster ipNeighborhood calculation
- spectral solver and MSC.Marc: simplified installation

Bug fixes

- onstitutive_J2: used to rely on deviatoric stress as input, now corrected
- constitutive_phenopowerlaw: hardening could diverge from correct asymptotic behavior
- spectral solver: acoustic tensor calculation had symmetry hick-up (blows up at zero Poisson ratio)
- RGC homogenization: was broken for initial increment
- addStrainTensors: non-logarithmic strain calculations were wrong
- additional small bug fixes and enhancements

New features

- spectral solver: now offers three different numerical schemes (can be configured in numerics.config):
- basic scheme fix-point
- basic scheme using PETSc (needs PETSc)
- augmented Lagrange (needs PETSc)

- Abaqus: if present, use *.pes instead of (possibly parameterized) *.inp file
- constitutive: started implementation of non-Schmid behavior
- constitutive_phenopowerlaw: added accumulated shear per system as possible output
- damask Python module: new colormaps class
- postResults: can interpret tetrahedron element with four IPs
- mesh: 2D elements are now operational
- pathinfo: accepts environment $VARs

General improvements

- more Python pre and post processing capabilities

Bug fixes

- lattice: Schmid matrix of twin systems was wrongly scaled (by sqrt(3) for fcc and bcc, and different factors for hex)
- material: fixed behaviour of
`/elementhomogeneous/`

flagcrystallite: no infinite loop for non-converging grains anymore - crystallite: no infinite loop for non-converging grains anymore
- Makefile: corrected auto detection of Intel Fortran compiler

Bug fixes

- lattice: corrected ⟨112-3⟩{101-1} slip system definition of hexagonal structure
- crystallite: fixed bugs in Fixed-Point iteration, adaptive Euler, and Runge–Kutta state integrators
- crystallite: simplification of stress integration algorithm (removed step size increase after any successful Newton–Raphson step, replaced Armijo rule testing for step size by simple check if the residuum got better)
- former random seed initialization didn’t allow to redo calculations that started with a random seed
- shape reconstruction in Fourier space fixed
- many more small bug fixes and enhancements

New features

- constitutive: new plasticity type
`none`

- lattice: improved interaction description for fcc twins
- lattice: introduced bcc twin systems of type ⟨111⟩{112}
- lattice: dropped bcc slip systems of type ⟨111⟩{123}
- material: added ability to
`/echo/`

selected parts of material.config into the log-file - mesh: new scaling keyword
`unitlength`

in numerics.config - mesh: support for ten-noded, higher-order tetrahedron element
- more Python pre and post processing capabilities

General improvements

- constitutive_phenopowerlaw: hardening behavior reverted to Kalidindi, S., Bronkhorst, C., and Anand, L. (1992) J. Mech. Phys. Solids 40 537-569
- more extensive use of numerical libraries (IMKL, ACML, or LAPACK)
- started general »doxygen« commenting for future use
- support of Abaqus 6.12 and MSC.Marc 2012 (dropped support for MSC.Marc 2007 and 2008)
- new version of FFTW (3.3.2)

Bug fixes

- binary representation of NaN now also works with Abaqus
- geometry reconstruction in 3Dvisualize
- »**damask« comments in Abaqus

New features

- J2 constitutive model has strain rate-sensitive saturation stress
- Abaqus now uses ifort found in $PATH

General improvements

- code structure

New features

- separated constitution into plasticity and elasticity and therefore changed syntax of material.config
- replaced keyword
`constitutive`

with keyword`plasticity`

- new mandatory keyword
`elasticity`

; currently the only option is`hooke`

- removed mesh dependance of convergence criteria of spectral solver; typical value for
`err_div_tol`

now 0.1 to 1