5. History
Version v2.0.3
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 thermomechanically 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 nonoctahedral 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/postprocessing scripts
 improved modularity of the code
 cleaned up the code a lot
 all pre/postprocessing 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
Version v2.0.2
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 thermomechanically 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 forwardbackward differences
 using analytic tangent instead of numerical perturbation
 cleaned up the code
Version v2.0.1
Bug fixes
 Phenopowerlaw: corrected/unified calculation of gamma_dot in case of nonSchmid 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) familywise 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
Version v2.0.0
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 userdefined external heat source
 added spectral solvers for thermal and damage fields
 dropped nonPETSc »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 multifield 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
Revision 3813
Bug fixes
 corrected calculation of homogenizedC in dislotwin
 corrected Lp calculation in dislotwin
 corrected bug when using nonCP 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 thermomechanical 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
 nonSchmid behaviour for bcc in all constitutive models except dislotwin, titanmod (hex only), and j2 (isotropic)
 introduced second intermediate configuration ($\tnsr F = \tnsr F_\text e \tnsr F_\text i \tnsr F_\text p$) for multifield 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
Revision 3108
Bug fixes
 added abaqus_v6_serial.env, not using the openmp option as it does not work with ABQ explicit and newest Intel compilers
New features
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
Revision 3062
Bug fixes
 reading in nested configuration files (using {includefile})
 addStrainTensors.py: set threshold for values treated as zero to 1.e12 (was 1.e15) 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
Revision 2689
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 polarisationbased solver
 added capability for dynamic stress equilibrium
 constitutive laws: added nonSchmid behaviour for bcc materials
 constitutive_nonlocal: multiplication behaviour different for fcc and bcc materials
 material:
 changed keyword for texture manipulation (
rotation
axis
)
 warning if slip/twin families or interactions are not defined, depends on chosen lattice structure
 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
Revision 2555
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 multilevel 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 (nodebased and ipbased) 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 »[19]_p« to extract all nine values.
 keywords in spectral solver geometry description changed:

resolution
grid

dimension
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
General improvements
 significant performance boost for geometryrelated 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 cellcentered data.
 spectral solver: specialized and much faster ipNeighborhood calculation
 spectral solver and MSC.Marc: simplified installation
Revision 2174
Bug fixes
 constitutive_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 hickup (blows up at zero Poisson ratio)
 RGC homogenization: was broken for initial increment
 addStrainTensors: nonlogarithmic 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 fixpoint
 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 nonSchmid 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
Revision 1955
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/
flag
 crystallite: no infinite loop for nonconverging grains anymore
 Makefile: corrected auto detection of Intel Fortran compiler
Revision 1924
Bug fixes
 lattice: corrected $\langle 1 1 \bar 2 3\rangle \{1 0 \bar 1 1\}$ slip system definition of hexagonal structure
 crystallite: fixed bugs in FixedPoint 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 $\langle 1 1 1\rangle \{1 1 2\}$
 lattice: dropped bcc slip systems of type $\langle 1 1 1\rangle \{1 2 3\}$
 material: added ability to
/echo/
selected parts of material.config into the logfile
 mesh: new scaling keyword
unitlength
in numerics.config
 mesh: support for tennoded, higherorder tetrahedron element
 more Python pre and post processing capabilities
General improvements
 constitutive_phenopowerlaw: hardening behavior reverted to Kalidindi, S., Bronkhorst, C., & Anand, L. (1992) J. Mech. Phys. Solids 40 537569
 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)
Revision 1489
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 ratesensitive saturation stress
 Abaqus now uses ifort found in $PATH
General improvements
Revision 1414
 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
References
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 328 083501 (2015)
DOI