DAMASK with MSC.Marc FEM solver  Revision: v2.0.3-2204-gdb1f2151
The Düsseldorf Advanced Material Simulation Kit with MSC.Marc
DAMASK_marc.f90 File Reference

Go to the source code of this file.

Data Types

type  prec::group_float
 variable length datatype used for storage of state More...
 
type  prec::group_int
 
type  prec::tstate
 
type  prec::tplasticstate
 
type  prec::tsourcestate
 
type  prec::thomogmapping
 
type  list::tpartitionedstring
 
type  list::tpartitionedstringlist
 
interface  math::math_eye
 
interface  quaternions::quaternion
 
interface  quaternions::assignment(=)
 
interface  quaternions::quaternion
 
interface  quaternions::abs
 
interface  quaternions::dot_product
 
interface  quaternions::conjg
 
interface  quaternions::exp
 
interface  quaternions::log
 
interface  quaternions::real
 
interface  quaternions::aimag
 
type  rotations::rotation
 
type  element::telement
 Properties of a single element. More...
 
interface  hdf5_utilities::hdf5_read
 reads integer or float data of defined shape from file ! ToDo: order of arguments wrong More...
 
interface  hdf5_utilities::hdf5_write
 writes integer or real data of defined shape to file ! ToDo: order of arguments wrong More...
 
interface  hdf5_utilities::hdf5_addattribute
 attached attributes of type char, integer or real to a file/dataset/group More...
 
interface  results::results_writedataset
 
interface  results::results_addattribute
 
type  discretization_marc::tcellnodedefinition
 
interface  lattice::lattice_forestprojection_edge
 
interface  lattice::lattice_forestprojection_screw
 
type  source_thermal_dissipation::tparameters
 container type for internal constitutive parameters More...
 
type  source_thermal_externalheat::tparameters
 container type for internal constitutive parameters More...
 
type  source_damage_isobrittle::tparameters
 container type for internal constitutive parameters More...
 
type  source_damage_isoductile::tparameters
 container type for internal constitutive parameters More...
 
type  source_damage_anisobrittle::tparameters
 container type for internal constitutive parameters More...
 
type  source_damage_anisoductile::tparameters
 container type for internal constitutive parameters More...
 
type  kinematics_cleavage_opening::tparameters
 container type for internal constitutive parameters More...
 
type  kinematics_slipplane_opening::tparameters
 container type for internal constitutive parameters More...
 
type  kinematics_thermal_expansion::tparameters
 
type  thermal_adiabatic::tparameters
 
type  thermal_conduction::tparameters
 
type  damage_local::tparameters
 
type  damage_nonlocal::tparameters
 
type  homogenization::tnumerics
 

Modules

module  prec
 Interfaces DAMASK with MSC.Marc.
 
module  damask_interface
 
module  io
 all DAMASK files without solver
 
module  numerics
 Managing of parameters related to numerics.
 
module  debug
 Reading in and interpretating the debugging settings for the various modules.
 
module  list
 linked list
 
module  future
 New fortran functions for compiler versions that do not support them.
 
module  config
 Reads in the material configuration from file.
 
module  math
 Mathematical library, including random number generation and tensor representations.
 
module  quaternions
 general quaternion math, not limited to unit quaternions
 
module  lambert
 Mapping homochoric <-> cubochoric.
 
module  rotations
 rotation storage and conversion
 
module  fesolving
 global variables for flow control
 
module  element
 
module  hdf5_utilities
 
module  results
 
module  geometry_plastic_nonlocal
 Geometric information about the IP cells needed for the nonlocal.
 
module  discretization
 spatial discretization
 
module  discretization_marc
 Sets up the mesh for the solver MSC.Marc.
 
module  material
 Parses material config file, either solverJobName.materialConfig or material.config.
 
module  lattice
 contains lattice structure definitions including Schmid matrices for slip, twin, trans,
 
module  source_thermal_dissipation
 material subroutine for thermal source due to plastic dissipation
 
module  source_thermal_externalheat
 material subroutine for variable heat source
 
module  source_damage_isobrittle
 material subroutine incoprorating isotropic brittle damage source mechanism
 
module  source_damage_isoductile
 material subroutine incoprorating isotropic ductile damage source mechanism
 
module  source_damage_anisobrittle
 material subroutine incorporating anisotropic brittle damage source mechanism
 
module  source_damage_anisoductile
 material subroutine incorporating anisotropic ductile damage source mechanism
 
module  kinematics_cleavage_opening
 material subroutine incorporating kinematics resulting from opening of cleavage planes
 
module  kinematics_slipplane_opening
 material subroutine incorporating kinematics resulting from opening of slip planes
 
module  kinematics_thermal_expansion
 material subroutine incorporating kinematics resulting from thermal expansion
 
module  constitutive
 elasticity, plasticity, internal microstructure state
 
module  thermal_isothermal
 material subroutine for isothermal temperature field
 
module  thermal_adiabatic
 material subroutine for adiabatic temperature evolution
 
module  thermal_conduction
 material subroutine for temperature evolution from heat conduction
 
module  damage_none
 material subroutine for constant damage field
 
module  damage_local
 material subroutine for locally evolving damage field
 
module  damage_nonlocal
 material subroutine for non-locally evolving damage field
 
module  homogenization
 homogenization manager, organizing deformation partitioning and stress homogenization
 

Enumerations

enum  {
  material::elasticity_undefined_id, material::plasticity_undefined_id, material::source_undefined_id, material::kinematics_undefined_id,
  material::stiffness_degradation_undefined_id, material::homogenization_undefined_id
}
 
enum  { lattice::lattice_undefined_id }
 
enum  { parallel_id, average_id }
 allocates all neccessary fields, reads information from material configuration file More...
 

Functions/Subroutines

subroutine prec::prec_init
 reporting precision More...
 
logical elemental pure function prec::deq (a, b, tol)
 equality comparison for float with double precision More...
 
logical elemental pure function prec::dneq (a, b, tol)
 inequality comparison for float with double precision More...
 
logical elemental pure function prec::deq0 (a, tol)
 equality to 0 comparison for float with double precision More...
 
logical elemental pure function prec::dneq0 (a, tol)
 inequality to 0 comparison for float with double precision More...
 
logical elemental pure function prec::ceq (a, b, tol)
 equality comparison for complex with double precision More...
 
logical elemental pure function prec::cneq (a, b, tol)
 inequality comparison for complex with double precision More...
 
subroutine, private prec::unittest
 check correctness of some prec functions More...
 
subroutine, public damask_interface::damask_interface_init
 reports and sets working directory More...
 
character(len=:) function, allocatable, public damask_interface::getsolverjobname ()
 solver job name (no extension) as combination of geometry and load case name More...
 
logical function damask_interface::solverissymmetric ()
 determines whether a symmetric solver is used More...
 
character(len=len(string)) function lc (string)
 changes characters in string to lower case More...
 
subroutine, public io::io_init
 does nothing. More...
 
character(len=pstringlen) function, dimension(:), allocatable, public io::io_read_ascii (fileName)
 reads an entire ASCII file into an array More...
 
integer function, public io::io_open_binary (fileName, mode)
 opens an existing file for reading or a new file for writing. More...
 
logical pure function, public io::io_isblank (string)
 identifies strings without content More...
 
pure character(len=:) function, allocatable, public io::io_gettag (string, openChar, closeChar)
 get tagged content of string More...
 
pure integer function, dimension(:), allocatable, public io::io_stringpos (string)
 locates all whitespace-separated chunks in given string and returns array containing number them and the left/right position to be used by IO_xxxVal Array size is dynamically adjusted to number of chunks found in string IMPORTANT: first element contains number of chunks! More...
 
character(len=:) function, allocatable, public io::io_stringvalue (string, chunkPos, myChunk)
 reads string value at myChunk from string More...
 
integer function, public io::io_intvalue (string, chunkPos, myChunk)
 reads integer value at myChunk from string More...
 
real(preal) function, public io::io_floatvalue (string, chunkPos, myChunk)
 reads float value at myChunk from string More...
 
pure character(len=len(string)) function, public io::io_lc (string)
 changes characters in string to lower case More...
 
subroutine, public io::io_error (error_ID, el, ip, g, instance, ext_msg)
 write error statements to standard out and terminate the Marc/spectral run with exit #9xxx More...
 
subroutine, public io::io_warning (warning_ID, el, ip, g, ext_msg)
 writes warning statement to standard out More...
 
integer function io::verifyintvalue (string)
 returns verified integer value in given string More...
 
real(preal) function io::verifyfloatvalue (string)
 returns verified float value in given string More...
 
subroutine io::unittest
 check correctness of some IO functions More...
 
subroutine, public numerics::numerics_init
 reads in parameters from numerics.config and sets openMP related parameters. Also does More...
 
subroutine, public debug::debug_init
 reads in parameters from debug.config and allocates arrays More...
 
subroutine, public debug::debug_reset
 resets all debug values More...
 
subroutine, public debug::debug_info
 writes debug statements to standard out More...
 
subroutine list::add (this, string)
 add element More...
 
subroutine list::show (this)
 prints all elements More...
 
subroutine list::free (this)
 empties list and frees associated memory More...
 
recursive subroutine list::finalize (this)
 empties list and frees associated memory More...
 
subroutine list::finalizearray (this)
 cleans entire array of linke lists More...
 
logical function list::keyexists (this, key)
 reports wether a given key (string value at first position) exists in the list More...
 
integer function list::countkeys (this, key)
 count number of key appearances More...
 
real(preal) function list::getfloat (this, key, defaultVal)
 gets float value of for a given key from a linked list More...
 
integer function list::getint (this, key, defaultVal)
 gets integer value of for a given key from a linked list More...
 
character(len=pstringlen) function list::getstring (this, key, defaultVal, raw)
 gets string value of for a given key from a linked list More...
 
real(preal) function, dimension(:), allocatable list::getfloats (this, key, defaultVal, requiredSize)
 gets array of float values of for a given key from a linked list More...
 
integer function, dimension(:), allocatable list::getints (this, key, defaultVal, requiredSize)
 gets array of integer values of for a given key from a linked list More...
 
character(len=pstringlen) function, dimension(:), allocatable list::getstrings (this, key, defaultVal, raw)
 gets array of string values of for a given key from a linked list More...
 
integer function, dimension(:), allocatable future::findloc (a, v)
 substitute for the findloc intrinsic (only for integer, dimension(:) at the moment) More...
 
subroutine, public config::config_init
 reads material.config and stores its content per part More...
 
recursive character(len=pstringlen) function, dimension(:), allocatable read_materialconfig (fileName, cnt)
 reads material.config Recursion is triggered by "{path/to/inputfile}" in a line More...
 
subroutine parse_materialconfig (sectionNames, part, line, fileContent)
 parses the material.config file More...
 
subroutine parse_debugandnumericsconfig (config_list, fileContent)
 parses the material.config file More...
 
subroutine, public config::config_deallocate (what)
 deallocates the linked lists that store the content of the configuration files More...
 
subroutine math::math_init
 initialization of random seed generator and internal checks More...
 
recursive subroutine math::math_sort (a, istart, iend, sortDim)
 Quicksort algorithm for two-dimensional integer arrays. More...
 
integer function qsort_partition (a, istart, iend, sort)
 Partitioning required for quicksort. More...
 
pure real(preal) function, dimension(sum(how)) math::math_expand (what, how)
 vector expansion More...
 
pure integer function, dimension(n) math::math_range (N)
 range of integers starting at one More...
 
pure real(preal) function, dimension(d, d) math::math_identity2nd (d)
 second rank identity tensor of specified dimension More...
 
pure real(preal) function, dimension(d, d, d, d) math::math_identity4th (d)
 symmetric fourth rank identity tensor of specified dimension More...
 
real(preal) pure function math::math_levicivita (i, j, k)
 permutation tensor e_ijk More...
 
real(preal) pure function math::math_delta (i, j)
 kronecker delta function d_ij More...
 
pure real(preal) function, dimension(3) math::math_cross (A, B)
 cross product a x b More...
 
pure real(preal) function, dimension(size(a, 1), size(b, 1)) math::math_outer (A, B)
 outer product of arbitrary sized vectors (A ⊗ B / i,j) More...
 
real(preal) pure function math::math_inner (A, B)
 inner product of arbitrary sized vectors (A · B / i,i) More...
 
real(preal) pure function math::math_tensordot (A, B)
 double contraction of 3x3 matrices (A : B / ij,ij) More...
 
pure real(preal) function, dimension(3, 3) math::math_mul3333xx33 (A, B)
 matrix double contraction 3333x33 = 33 (ijkl,kl) More...
 
pure real(preal) function, dimension(3, 3, 3, 3) math::math_mul3333xx3333 (A, B)
 matrix multiplication 3333x3333 = 3333 (ijkl,klmn) More...
 
pure real(preal) function, dimension(3, 3) math::math_exp33 (A, n)
 3x3 matrix exponential up to series approximation order n (default 5) More...
 
pure real(preal) function, dimension(3, 3) math::math_inv33 (A)
 Cramer inversion of 3x3 matrix (function) More...
 
pure subroutine math::math_invert33 (InvA, DetA, error, A)
 Cramer inversion of 3x3 matrix (subroutine) More...
 
real(preal) function, dimension(3, 3, 3, 3) math::math_invsym3333 (A)
 Inversion of symmetriced 3x3x3x3 matrix. More...
 
subroutine math::math_invert (InvA, error, A)
 invert quadratic matrix of arbitrary dimension More...
 
pure real(preal) function, dimension(3, 3) math::math_symmetric33 (m)
 symmetrize a 3x3 matrix More...
 
pure real(preal) function, dimension(6, 6) math::math_symmetric66 (m)
 symmetrize a 6x6 matrix More...
 
pure real(preal) function, dimension(3, 3) math::math_skew33 (m)
 skew part of a 3x3 matrix More...
 
pure real(preal) function, dimension(3, 3) math::math_spherical33 (m)
 hydrostatic part of a 3x3 matrix More...
 
pure real(preal) function, dimension(3, 3) math::math_deviatoric33 (m)
 deviatoric part of a 3x3 matrix More...
 
real(preal) pure function math::math_trace33 (m)
 trace of a 3x3 matrix More...
 
real(preal) pure function math::math_det33 (m)
 determinant of a 3x3 matrix More...
 
real(preal) pure function math::math_detsym33 (m)
 determinant of a symmetric 3x3 matrix More...
 
pure real(preal) function, dimension(9) math::math_33to9 (m33)
 convert 3x3 matrix into vector 9 More...
 
pure real(preal) function, dimension(3, 3) math::math_9to33 (v9)
 convert 9 vector into 3x3 matrix More...
 
pure real(preal) function, dimension(6) math::math_sym33to6 (m33, weighted)
 convert symmetric 3x3 matrix into 6 vector More...
 
pure real(preal) function, dimension(3, 3) math::math_6tosym33 (v6, weighted)
 convert 6 vector into symmetric 3x3 matrix More...
 
pure real(preal) function, dimension(9, 9) math::math_3333to99 (m3333)
 convert 3x3x3x3 matrix into 9x9 matrix More...
 
pure real(preal) function, dimension(3, 3, 3, 3) math::math_99to3333 (m99)
 convert 9x9 matrix into 3x3x3x3 matrix More...
 
pure real(preal) function, dimension(6, 6) math::math_sym3333to66 (m3333, weighted)
 convert symmetric 3x3x3x3 matrix into 6x6 matrix More...
 
pure real(preal) function, dimension(3, 3, 3, 3) math::math_66tosym3333 (m66, weighted)
 convert 66 matrix into symmetric 3x3x3x3 matrix More...
 
pure real(preal) function, dimension(3, 3, 3, 3) math::math_voigt66to3333 (m66)
 convert 66 Voigt matrix into symmetric 3x3x3x3 matrix More...
 
real(preal) function math::math_samplegaussvar (meanvalue, stddev, width)
 draw a random sample from Gauss variable More...
 
subroutine math::math_eigh (m, w, v, error)
 eigenvalues and eigenvectors of symmetric matrix More...
 
subroutine math::math_eigh33 (m, w, v)
 eigenvalues and eigenvectors of symmetric 3x3 matrix using an analytical expression and the general LAPACK powered version for arbritrary sized matrices as fallback More...
 
real(preal) function, dimension(3, 3) math::math_rotationalpart (m)
 rotational part from polar decomposition of 3x3 tensor More...
 
pure real(preal) function, dimension(3, 3) eigenvectorbasis (m)
 eigenvector basis of positive-definite 3x3 matrix More...
 
real(preal) function, dimension(size(m, 1)) math::math_eigvalsh (m)
 Eigenvalues of symmetric matrix. More...
 
real(preal) function, dimension(3) math::math_eigvalsh33 (m)
 eigenvalues of symmetric 3x3 matrix using an analytical expression More...
 
pure real(preal) function, dimension(3) math::math_invariantssym33 (m)
 invariants of symmetrix 3x3 matrix More...
 
integer pure function math::math_factorial (n)
 factorial More...
 
integer pure function math::math_binomial (n, k)
 binomial coefficient More...
 
integer pure function math::math_multinomial (alpha)
 multinomial coefficient More...
 
real(preal) pure function math::math_voltetrahedron (v1, v2, v3, v4)
 volume of tetrahedron given by four vertices More...
 
real(preal) pure function math::math_areatriangle (v1, v2, v3)
 area of triangle given by three vertices More...
 
real(preal) pure elemental function math::math_clip (a, left, right)
 limits a scalar value to a certain range (either one or two sided) More...
 
subroutine, private math::unittest
 check correctness of some math functions More...
 
subroutine, public quaternions::quaternions_init
 do self test More...
 
type(quaternion) pure function quaternions::init__ (array)
 construct a quaternion from a 4-vector More...
 
elemental pure subroutine quaternions::assign_quat__ (self, other)
 assign a quaternion More...
 
pure subroutine quaternions::assign_vec__ (self, other)
 assign a 4-vector More...
 
type(quaternion) elemental pure function quaternions::add__ (self, other)
 add a quaternion More...
 
type(quaternion) elemental pure function quaternions::pos__ (self)
 return (unary positive operator) More...
 
type(quaternion) elemental pure function quaternions::sub__ (self, other)
 subtract a quaternion More...
 
type(quaternion) elemental pure function quaternions::neg__ (self)
 negate (unary negative operator) More...
 
type(quaternion) elemental pure function quaternions::mul_quat__ (self, other)
 multiply with a quaternion More...
 
type(quaternion) elemental pure function quaternions::mul_scal__ (self, scal)
 multiply with a scalar More...
 
type(quaternion) elemental pure function quaternions::div_quat__ (self, other)
 divide by a quaternion More...
 
type(quaternion) elemental pure function quaternions::div_scal__ (self, scal)
 divide by a scalar More...
 
logical elemental pure function quaternions::eq__ (self, other)
 test equality More...
 
logical elemental pure function quaternions::neq__ (self, other)
 test inequality More...
 
type(quaternion) elemental pure function quaternions::pow_quat__ (self, expon)
 raise to the power of a quaternion More...
 
type(quaternion) elemental pure function quaternions::pow_scal__ (self, expon)
 raise to the power of a scalar More...
 
type(quaternion) elemental pure function quaternions::exp__ (a)
 take exponential More...
 
type(quaternion) elemental pure function quaternions::log__ (a)
 take logarithm More...
 
real(preal) elemental pure function quaternions::abs__ (self)
 return norm More...
 
real(preal) elemental pure function quaternions::dot_product__ (a, b)
 calculate dot product More...
 
type(quaternion) elemental pure function quaternions::conjg__ (self)
 take conjugate complex More...
 
type(quaternion) elemental pure function quaternions::homomorphed (self)
 homomorph More...
 
pure real(preal) function, dimension(4) quaternions::asarray (self)
 return as plain array More...
 
pure real(preal) function quaternions::real__ (self)
 real part (scalar) More...
 
pure real(preal) function, dimension(3) quaternions::aimag__ (self)
 imaginary part (3-vector) More...
 
type(quaternion) elemental pure function quaternions::inverse (self)
 inverse More...
 
subroutine quaternions::unittest
 check correctness of some quaternions functions More...
 
pure real(preal) function, dimension(3), public lambert::lambert_cubetoball (cube)
 map from 3D cubic grid to 3D ball More...
 
pure real(preal) function, dimension(3), public lambert::lambert_balltocube (xyz)
 map from 3D ball to 3D cubic grid
More...
 
pure integer function, dimension(3) lambert::getpyramidorder (xyz)
 determine to which pyramid a point in a cubic grid belongs More...
 
subroutine, public rotations::rotations_init
 doing self test More...
 
pure real(preal) function, dimension(4) rotations::asquaternion (self)
 
pure real(preal) function, dimension(3) rotations::aseulers (self)
 
pure real(preal) function, dimension(4) rotations::asaxisangle (self)
 
pure real(preal) function, dimension(3, 3) rotations::asmatrix (self)
 
pure real(preal) function, dimension(4) rotations::asrodrigues (self)
 
pure real(preal) function, dimension(3) rotations::ashomochoric (self)
 
subroutine rotations::fromquaternion (self, qu)
 
subroutine rotations::fromeulers (self, eu, degrees)
 
subroutine rotations::fromaxisangle (self, ax, degrees, P)
 
subroutine rotations::frommatrix (self, om)
 
pure elemental type(rotation) function rotations::rotrot__ (self, R)
 : Rotate a rotation More...
 
pure elemental subroutine rotations::standardize (self)
 quaternion representation with positive q More...
 
pure real(preal) function, dimension(3) rotations::rotvector (self, v, active)
 rotate a vector passively (default) or actively More...
 
pure real(preal) function, dimension(3, 3) rotations::rottensor2 (self, T, active)
 rotate a rank-2 tensor passively (default) or actively More...
 
pure real(preal) function, dimension(3, 3, 3, 3) rotations::rottensor4 (self, T, active)
 rotate a rank-4 tensor passively (default) or actively More...
 
pure real(preal) function, dimension(6, 6) rotations::rottensor4sym (self, T, active)
 rotate a symmetric rank-4 tensor stored as (6,6) passively (default) or actively ToDo: Need to check active/passive !!! More...
 
pure elemental type(rotation) function rotations::misorientation (self, other)
 misorientation More...
 
pure real(preal) function, dimension(3, 3) rotations::qu2om (qu)
 convert unit quaternion to rotation matrix More...
 
pure real(preal) function, dimension(3) rotations::qu2eu (qu)
 convert unit quaternion to Euler angles More...
 
pure real(preal) function, dimension(4) rotations::qu2ax (qu)
 convert unit quaternion to axis angle pair More...
 
pure real(preal) function, dimension(4) rotations::qu2ro (qu)
 convert unit quaternion to Rodrigues vector More...
 
pure real(preal) function, dimension(3) rotations::qu2ho (qu)
 convert unit quaternion to homochoric More...
 
pure real(preal) function, dimension(3) rotations::qu2cu (qu)
 convert unit quaternion to cubochoric More...
 
pure real(preal) function, dimension(4) rotations::om2qu (om)
 convert rotation matrix to cubochoric More...
 
pure real(preal) function, dimension(3) rotations::om2eu (om)
 orientation matrix to Euler angles More...
 
real(preal) function, dimension(4) rotations::om2ax (om)
 convert orientation matrix to axis angle pair More...
 
pure real(preal) function, dimension(4) rotations::om2ro (om)
 convert rotation matrix to Rodrigues vector More...
 
real(preal) function, dimension(3) rotations::om2ho (om)
 convert rotation matrix to homochoric More...
 
real(preal) function, dimension(3) rotations::om2cu (om)
 convert rotation matrix to cubochoric More...
 
pure real(preal) function, dimension(4) rotations::eu2qu (eu)
 Euler angles to unit quaternion. More...
 
pure real(preal) function, dimension(3, 3), public rotations::eu2om (eu)
 Euler angles to orientation matrix. More...
 
pure real(preal) function, dimension(4) rotations::eu2ax (eu)
 convert euler to axis angle More...
 
pure real(preal) function, dimension(4) rotations::eu2ro (eu)
 Euler angles to Rodrigues vector. More...
 
pure real(preal) function, dimension(3) rotations::eu2ho (eu)
 convert Euler angles to homochoric More...
 
real(preal) function, dimension(3) rotations::eu2cu (eu)
 convert Euler angles to cubochoric More...
 
pure real(preal) function, dimension(4) rotations::ax2qu (ax)
 convert axis angle pair to quaternion More...
 
pure real(preal) function, dimension(3, 3) rotations::ax2om (ax)
 convert axis angle pair to orientation matrix More...
 
pure real(preal) function, dimension(3) rotations::ax2eu (ax)
 convert axis angle pair to Euler angles More...
 
pure real(preal) function, dimension(4) rotations::ax2ro (ax)
 convert axis angle pair to Rodrigues vector More...
 
pure real(preal) function, dimension(3) rotations::ax2ho (ax)
 convert axis angle pair to homochoric More...
 
real(preal) function, dimension(3) rotations::ax2cu (ax)
 convert axis angle pair to cubochoric More...
 
pure real(preal) function, dimension(4) rotations::ro2qu (ro)
 convert Rodrigues vector to unit quaternion More...
 
pure real(preal) function, dimension(3, 3) rotations::ro2om (ro)
 convert Rodrigues vector to rotation matrix More...
 
pure real(preal) function, dimension(3) rotations::ro2eu (ro)
 convert Rodrigues vector to Euler angles More...
 
pure real(preal) function, dimension(4) rotations::ro2ax (ro)
 convert Rodrigues vector to axis angle pair More...
 
pure real(preal) function, dimension(3) rotations::ro2ho (ro)
 convert Rodrigues vector to homochoric More...
 
pure real(preal) function, dimension(3) rotations::ro2cu (ro)
 convert Rodrigues vector to cubochoric More...
 
pure real(preal) function, dimension(4) rotations::ho2qu (ho)
 convert homochoric to unit quaternion More...
 
pure real(preal) function, dimension(3, 3) rotations::ho2om (ho)
 convert homochoric to rotation matrix More...
 
pure real(preal) function, dimension(3) rotations::ho2eu (ho)
 convert homochoric to Euler angles More...
 
pure real(preal) function, dimension(4) rotations::ho2ax (ho)
 convert homochoric to axis angle pair More...
 
pure real(preal) function, dimension(4) rotations::ho2ro (ho)
 convert homochoric to Rodrigues vector More...
 
pure real(preal) function, dimension(3) rotations::ho2cu (ho)
 convert homochoric to cubochoric More...
 
pure real(preal) function, dimension(4) rotations::cu2qu (cu)
 convert cubochoric to unit quaternion More...
 
pure real(preal) function, dimension(3, 3) rotations::cu2om (cu)
 convert cubochoric to rotation matrix More...
 
pure real(preal) function, dimension(3) rotations::cu2eu (cu)
 convert cubochoric to Euler angles More...
 
real(preal) function, dimension(4) rotations::cu2ax (cu)
 convert cubochoric to axis angle pair More...
 
pure real(preal) function, dimension(4) rotations::cu2ro (cu)
 convert cubochoric to Rodrigues vector More...
 
pure real(preal) function, dimension(3) rotations::cu2ho (cu)
 convert cubochoric to homochoric More...
 
subroutine rotations::unittest
 check correctness of some rotations functions More...
 
subroutine element::telement_init (self, elemType)
 define properties of an element More...
 
subroutine hdf5_utilities::hdf5_utilities_init
 open libary and do sanity checks More...
 
integer(hid_t) function hdf5_utilities::hdf5_openfile (fileName, mode, parallel)
 open and initializes HDF5 output file More...
 
subroutine hdf5_utilities::hdf5_closefile (fileHandle)
 close the opened HDF5 output file More...
 
integer(hid_t) function hdf5_utilities::hdf5_addgroup (fileHandle, groupName)
 adds a new group to the fileHandle More...
 
integer(hid_t) function hdf5_utilities::hdf5_opengroup (fileHandle, groupName)
 open an existing group of a file More...
 
subroutine hdf5_utilities::hdf5_closegroup (group_id)
 close a group More...
 
logical function hdf5_utilities::hdf5_objectexists (loc_id, path)
 check whether a group or a dataset exists More...
 
subroutine hdf5_utilities::hdf5_addattribute_str (loc_id, attrLabel, attrValue, path)
 adds a string attribute to the path given relative to the location More...
 
subroutine hdf5_utilities::hdf5_addattribute_int (loc_id, attrLabel, attrValue, path)
 adds a integer attribute to the path given relative to the location More...
 
subroutine hdf5_utilities::hdf5_addattribute_real (loc_id, attrLabel, attrValue, path)
 adds a integer attribute to the path given relative to the location More...
 
subroutine hdf5_utilities::hdf5_addattribute_int_array (loc_id, attrLabel, attrValue, path)
 adds a integer attribute to the path given relative to the location More...
 
subroutine hdf5_utilities::hdf5_addattribute_real_array (loc_id, attrLabel, attrValue, path)
 adds a real attribute to the path given relative to the location More...
 
subroutine hdf5_utilities::hdf5_setlink (loc_id, target_name, link_name)
 set link to object in results file More...
 
subroutine hdf5_utilities::hdf5_read_real1 (loc_id, dataset, datasetName, parallel)
 read dataset of type real with 1 dimension More...
 
subroutine hdf5_utilities::hdf5_read_real2 (loc_id, dataset, datasetName, parallel)
 read dataset of type real with 2 dimensions More...
 
subroutine hdf5_utilities::hdf5_read_real3 (loc_id, dataset, datasetName, parallel)
 read dataset of type real with 2 dimensions More...
 
subroutine hdf5_utilities::hdf5_read_real4 (loc_id, dataset, datasetName, parallel)
 read dataset of type real with 4 dimensions More...
 
subroutine hdf5_utilities::hdf5_read_real5 (loc_id, dataset, datasetName, parallel)
 read dataset of type real with 5 dimensions More...
 
subroutine hdf5_utilities::hdf5_read_real6 (loc_id, dataset, datasetName, parallel)
 read dataset of type real with 6 dimensions More...
 
subroutine hdf5_utilities::hdf5_read_real7 (loc_id, dataset, datasetName, parallel)
 read dataset of type real with 7 dimensions More...
 
subroutine hdf5_utilities::hdf5_read_int1 (loc_id, dataset, datasetName, parallel)
 read dataset of type integer with 1 dimension More...
 
subroutine hdf5_utilities::hdf5_read_int2 (loc_id, dataset, datasetName, parallel)
 read dataset of type integer with 2 dimensions More...
 
subroutine hdf5_utilities::hdf5_read_int3 (loc_id, dataset, datasetName, parallel)
 read dataset of type integer with 3 dimensions More...
 
subroutine hdf5_utilities::hdf5_read_int4 (loc_id, dataset, datasetName, parallel)
 read dataset of type integer withh 4 dimensions More...
 
subroutine hdf5_utilities::hdf5_read_int5 (loc_id, dataset, datasetName, parallel)
 read dataset of type integer with 5 dimensions More...
 
subroutine hdf5_utilities::hdf5_read_int6 (loc_id, dataset, datasetName, parallel)
 read dataset of type integer with 6 dimensions More...
 
subroutine hdf5_utilities::hdf5_read_int7 (loc_id, dataset, datasetName, parallel)
 read dataset of type integer with 7 dimensions More...
 
subroutine hdf5_utilities::hdf5_write_real1 (loc_id, dataset, datasetName, parallel)
 write dataset of type real with 1 dimension More...
 
subroutine hdf5_utilities::hdf5_write_real2 (loc_id, dataset, datasetName, parallel)
 write dataset of type real with 2 dimensions More...
 
subroutine hdf5_utilities::hdf5_write_real3 (loc_id, dataset, datasetName, parallel)
 write dataset of type real with 3 dimensions More...
 
subroutine hdf5_utilities::hdf5_write_real4 (loc_id, dataset, datasetName, parallel)
 write dataset of type real with 4 dimensions More...
 
subroutine hdf5_utilities::hdf5_write_real5 (loc_id, dataset, datasetName, parallel)
 write dataset of type real with 5 dimensions More...
 
subroutine hdf5_utilities::hdf5_write_real6 (loc_id, dataset, datasetName, parallel)
 write dataset of type real with 6 dimensions More...
 
subroutine hdf5_utilities::hdf5_write_real7 (loc_id, dataset, datasetName, parallel)
 write dataset of type real with 7 dimensions More...
 
subroutine hdf5_utilities::hdf5_write_int1 (loc_id, dataset, datasetName, parallel)
 write dataset of type integer with 1 dimension More...
 
subroutine hdf5_utilities::hdf5_write_int2 (loc_id, dataset, datasetName, parallel)
 write dataset of type integer with 2 dimensions More...
 
subroutine hdf5_utilities::hdf5_write_int3 (loc_id, dataset, datasetName, parallel)
 write dataset of type integer with 3 dimensions More...
 
subroutine hdf5_utilities::hdf5_write_int4 (loc_id, dataset, datasetName, parallel)
 write dataset of type integer with 4 dimensions More...
 
subroutine hdf5_utilities::hdf5_write_int5 (loc_id, dataset, datasetName, parallel)
 write dataset of type integer with 5 dimensions More...
 
subroutine hdf5_utilities::hdf5_write_int6 (loc_id, dataset, datasetName, parallel)
 write dataset of type integer with 6 dimensions More...
 
subroutine hdf5_utilities::hdf5_write_int7 (loc_id, dataset, datasetName, parallel)
 write dataset of type integer with 7 dimensions More...
 
subroutine hdf5_utilities::hdf5_write_rotation (loc_id, dataset, datasetName, parallel)
 writes a scalar orientation dataset More...
 
subroutine hdf5_utilities::initialize_read (dset_id, filespace_id, memspace_id, plist_id, aplist_id, myStart, globalShape, loc_id, localShape, datasetName, parallel)
 initialize HDF5 handles, determines global shape and start for parallel read More...
 
subroutine hdf5_utilities::finalize_read (dset_id, filespace_id, memspace_id, plist_id, aplist_id)
 closes HDF5 handles More...
 
subroutine hdf5_utilities::initialize_write (dset_id, filespace_id, memspace_id, plist_id, myStart, totalShape, loc_id, myShape, datasetName, datatype, parallel)
 initialize HDF5 handles, determines global shape and start for parallel write More...
 
subroutine hdf5_utilities::finalize_write (plist_id, dset_id, filespace_id, memspace_id)
 closes HDF5 handles More...
 
subroutine, public results::results_init
 
subroutine, public results::results_openjobfile
 opens the results file to append data More...
 
subroutine, public results::results_closejobfile
 closes the results file More...
 
subroutine, public results::results_addincrement (inc, time)
 creates the group of increment and adds time as attribute to the file More...
 
subroutine, public results::results_finalizeincrement
 finalize increment More...
 
integer(hid_t) function, public results::results_opengroup (groupName)
 open a group from the results file More...
 
integer(hid_t) function, public results::results_addgroup (groupName)
 adds a new group to the results file More...
 
subroutine, public results::results_closegroup (group_id)
 close a group More...
 
subroutine, public results::results_setlink (path, link)
 set link to object in results file More...
 
subroutine results::results_addattribute_str (attrLabel, attrValue, path)
 adds a string attribute to an object in the results file More...
 
subroutine results::results_addattribute_int (attrLabel, attrValue, path)
 adds an integer attribute an object in the results file More...
 
subroutine results::results_addattribute_real (attrLabel, attrValue, path)
 adds a real attribute an object in the results file More...
 
subroutine results::results_addattribute_int_array (attrLabel, attrValue, path)
 adds an integer array attribute an object in the results file More...
 
subroutine results::results_addattribute_real_array (attrLabel, attrValue, path)
 adds a real array attribute an object in the results file More...
 
subroutine, public results::results_removelink (link)
 remove link to an object More...
 
subroutine results::results_writescalardataset_real (group, dataset, label, description, SIunit)
 stores a scalar dataset in a group More...
 
subroutine results::results_writevectordataset_real (group, dataset, label, description, SIunit)
 stores a vector dataset in a group More...
 
subroutine results::results_writetensordataset_real (group, dataset, label, description, SIunit, transposed)
 stores a tensor dataset in a group More...
 
subroutine results::results_writevectordataset_int (group, dataset, label, description, SIunit)
 stores a vector dataset in a group More...
 
subroutine results::results_writetensordataset_int (group, dataset, label, description, SIunit)
 stores a tensor dataset in a group More...
 
subroutine results::results_writescalardataset_rotation (group, dataset, label, description, lattice_structure)
 stores a scalar dataset in a group More...
 
subroutine, public results::results_mapping_constituent (phaseAt, memberAtLocal, label)
 adds the unique mapping from spatial position and constituent ID to results More...
 
subroutine, public results::results_mapping_materialpoint (homogenizationAt, memberAtLocal, label)
 adds the unique mapping from spatial position and constituent ID to results More...
 
subroutine geometry_plastic_nonlocal::geometry_plastic_nonlocal_setipneighborhood (IPneighborhood)
 Set the integration point (IP) neighborhood. More...
 
subroutine geometry_plastic_nonlocal::geometry_plastic_nonlocal_setipvolume (IPvolume)
 Set the initial volume associated with an integration point. More...
 
subroutine geometry_plastic_nonlocal::geometry_plastic_nonlocal_setiparea (IParea)
 Set the initial areas of the unit triangle/unit quadrilateral/tetrahedron/hexahedron. More...
 
subroutine geometry_plastic_nonlocal::geometry_plastic_nonlocal_setipareanormal (IPareaNormal)
 Set the direction normal of the areas of the triangle/quadrilateral/tetrahedron/hexahedron. More...
 
subroutine geometry_plastic_nonlocal::geometry_plastic_nonlocal_disable
 Free memory used by variables only needed by plastic_nonlocal. More...
 
subroutine geometry_plastic_nonlocal::geometry_plastic_nonlocal_results
 Write geometry data to results file. More...
 
subroutine, public discretization::discretization_init (homogenizationAt, microstructureAt, IPcoords0, NodeCoords0, sharedNodesBegin)
 stores the relevant information in globally accesible variables More...
 
subroutine, public discretization::discretization_results
 write the displacements More...
 
subroutine, public discretization::discretization_setipcoords (IPcoords)
 stores current IP coordinates More...
 
subroutine, public discretization::discretization_setnodecoords (NodeCoords)
 stores current IP coordinates More...
 
subroutine, public discretization_marc::discretization_marc_init (ip, el)
 initializes the mesh by calling all necessary private routines the mesh module Order and routines strongly depend on type of solver More...
 
subroutine discretization_marc::writegeometry (elem, connectivity_elem, connectivity_cell, coordinates_nodes, coordinates_points)
 Write all information needed for the DADF5 geometry. More...
 
subroutine discretization_marc::inputread (elem, node0_elem, connectivity_elem, microstructureAt, homogenizationAt)
 Read mesh from marc input file. More...
 
subroutine discretization_marc::inputread_fileformat (fileFormat, fileContent)
 Figures out version of Marc input file format. More...
 
subroutine discretization_marc::inputread_tablestyles (initialcond, hypoelastic, fileContent)
 Figures out table styles for initial cond and hypoelastic. More...
 
subroutine discretization_marc::inputread_matnumber (matNumber, tableStyle, fileContent)
 Figures out material number of hypoelastic material. More...
 
subroutine discretization_marc::inputread_nnodesandelements (nNodes, nElems, fileContent)
 Count overall number of nodes and elements. More...
 
subroutine discretization_marc::inputread_nelemsets (nElemSets, maxNelemInSet, fileContent)
 Count overall number of element sets in mesh. More...
 
subroutine discretization_marc::inputread_mapelemsets (nameElemSet, mapElemSet, fileContent)
 map element sets More...
 
subroutine discretization_marc::inputread_mapelems (FEM2DAMASK, nElems, nNodesPerElem, fileContent)
 Maps elements from FE ID to internal (consecutive) representation. More...
 
subroutine discretization_marc::inputread_mapnodes (FEM2DAMASK, nNodes, fileContent)
 Maps node from FE ID to internal (consecutive) representation. More...
 
subroutine discretization_marc::inputread_elemnodes (nodes, nNode, fileContent)
 store x,y,z coordinates of all nodes in mesh. More...
 
subroutine discretization_marc::inputread_elemtype (elem, nElem, fileContent)
 Gets element type (and checks if the whole mesh comprises of only one type) More...
 
integer function mapelemtype (what)
 mapping of Marc element types to internal representation More...
 
integer function, dimension(nnodes, nelem) discretization_marc::inputread_connectivityelem (nElem, nNodes, fileContent)
 Stores node IDs. More...
 
subroutine discretization_marc::inputread_microstructureandhomogenization (microstructureAt, homogenizationAt, nElem, nNodes, nameElemSet, mapElemSet, initialcondTableStyle, fileContent)
 Stores homogenization and microstructure ID. More...
 
subroutine discretization_marc::buildcells (connectivity_cell, cellNodeDefinition, elem, connectivity_elem)
 Calculates cell node coordinates from element node coordinates. More...
 
pure integer function uniquerows (A)
 count unique rows (same rows need to be stored consecutively) More...
 
subroutine discretization_marc::buildcellnodes (node_cell, definition, node_elem)
 Calculates cell node coordinates from element node coordinates. More...
 
subroutine discretization_marc::buildipcoordinates (IPcoordinates, connectivity_cell, node_cell)
 Calculates IP coordinates as center of cell. More...
 
real(preal) function, dimension(elem%nips, size(connectivity, 3)) discretization_marc::ipvolume (elem, node, connectivity)
 Calculates IP volume. More...
 
real(preal) function, dimension(3, elem%nipneighbors, elem%nips, nelem) discretization_marc::ipareanormal (elem, nElem, connectivity, node)
 calculation of IP interface areas More...
 
integer function, dimension(1+maxn) discretization_marc::continuousintvalues (fileContent, maxN, lookupName, lookupMap, lookupMaxN)
 return integer list corresponding to items in consecutive lines. First integer in array is counter More...
 
logical function discretization_marc::containsrange (str, chunkPos)
 return whether a line contains a range ('X to Y') More...
 
subroutine, public material::material_init
 parses material configuration file More...
 
subroutine material::material_parsehomogenization
 parses the homogenization part from the material configuration More...
 
subroutine material::material_parsemicrostructure
 parses the microstructure part in the material configuration file More...
 
subroutine material::material_parsephase
 parses the phase part in the material configuration file More...
 
subroutine material::material_parsetexture
 parses the texture part in the material configuration file More...
 
subroutine, public material::material_allocateplasticstate (phase, NipcMyPhase, sizeState, sizeDotState, sizeDeltaState)
 allocates the plastic state of a phase More...
 
subroutine, public material::material_allocatesourcestate (phase, of, NipcMyPhase, sizeState, sizeDotState, sizeDeltaState)
 allocates the source state of a phase More...
 
subroutine, public lattice::lattice_init
 Module initialization. More...
 
real(preal) function, dimension(sum(ntwin)), public lattice::lattice_characteristicshear_twin (Ntwin, structure, CoverA)
 Characteristic shear for twinning. More...
 
real(preal) function, dimension(6, 6, sum(ntwin)), public lattice::lattice_c66_twin (Ntwin, C66, structure, CoverA)
 Rotated elasticity matrices for twinning in 66-vector notation. More...
 
real(preal) function, dimension(6, 6, sum(ntrans)), public lattice::lattice_c66_trans (Ntrans, C_parent66, structure_target, cOverA_trans, a_bcc, a_fcc)
 Rotated elasticity matrices for transformation in 66-vector notation. More...
 
real(preal) function, dimension(1:3, 1:3, sum(nslip)), public lattice::lattice_nonschmidmatrix (Nslip, nonSchmidCoefficients, sense)
 Non-schmid projections for bcc with up to 6 coefficients. More...
 
real(preal) function, dimension(sum(nslip), sum(nslip)), public lattice::lattice_interaction_slipbyslip (Nslip, interactionValues, structure)
 Slip-slip interaction matrix details only active slip systems are considered. More...
 
real(preal) function, dimension(sum(ntwin), sum(ntwin)), public lattice::lattice_interaction_twinbytwin (Ntwin, interactionValues, structure)
 Twin-twin interaction matrix details only active twin systems are considered. More...
 
real(preal) function, dimension(sum(ntrans), sum(ntrans)), public lattice::lattice_interaction_transbytrans (Ntrans, interactionValues, structure)
 Trans-trans interaction matrix details only active trans systems are considered. More...
 
real(preal) function, dimension(sum(nslip), sum(ntwin)), public lattice::lattice_interaction_slipbytwin (Nslip, Ntwin, interactionValues, structure)
 Slip-twin interaction matrix details only active slip and twin systems are considered. More...
 
real(preal) function, dimension(sum(nslip), sum(ntrans)), public lattice::lattice_interaction_slipbytrans (Nslip, Ntrans, interactionValues, structure)
 Slip-trans interaction matrix details only active slip and trans systems are considered. More...
 
real(preal) function, dimension(sum(ntwin), sum(nslip)), public lattice::lattice_interaction_twinbyslip (Ntwin, Nslip, interactionValues, structure)
 Twin-slip interaction matrix details only active twin and slip systems are considered. More...
 
real(preal) function, dimension(3, 3, sum(nslip)), public lattice::lattice_schmidmatrix_slip (Nslip, structure, cOverA)
 Schmid matrix for slip details only active slip systems are considered. More...
 
real(preal) function, dimension(3, 3, sum(ntwin)), public lattice::lattice_schmidmatrix_twin (Ntwin, structure, cOverA)
 Schmid matrix for twinning details only active twin systems are considered. More...
 
real(preal) function, dimension(3, 3, sum(ntrans)), public lattice::lattice_schmidmatrix_trans (Ntrans, structure_target, cOverA, a_bcc, a_fcc)
 Schmid matrix for twinning details only active twin systems are considered. More...
 
real(preal) function, dimension(3, 3, 3, sum(ncleavage)), public lattice::lattice_schmidmatrix_cleavage (Ncleavage, structure, cOverA)
 Schmid matrix for cleavage details only active cleavage systems are considered. More...
 
real(preal) function, dimension(3, sum(nslip)), public lattice::lattice_slip_direction (Nslip, structure, cOverA)
 Slip direction of slip systems (|| b) More...
 
real(preal) function, dimension(3, sum(nslip)), public lattice::lattice_slip_normal (Nslip, structure, cOverA)
 Normal direction of slip systems (|| n) More...
 
real(preal) function, dimension(3, sum(nslip)), public lattice::lattice_slip_transverse (Nslip, structure, cOverA)
 Transverse direction of slip systems ( || t = b x n) More...
 
character(len=:) function, dimension(:), allocatable, public lattice::lattice_labels_slip (Nslip, structure)
 Labels for slip systems details only active slip systems are considered. More...
 
real(preal) function, dimension(3, 3), public lattice::lattice_applylatticesymmetry33 (T, structure)
 Return 3x3 tensor with symmetry according to given crystal structure. More...
 
real(preal) function, dimension(6, 6) lattice::applylatticesymmetryc66 (C66, structure)
 Return stiffness matrix in 6x6 notation with symmetry according to given crystal structure. More...
 
character(len=:) function, dimension(:), allocatable, public lattice::lattice_labels_twin (Ntwin, structure)
 Labels for twin systems details only active twin systems are considered. More...
 
real(preal) function, dimension(sum(nslip), sum(nslip)) lattice::slipprojection_transverse (Nslip, structure, cOverA)
 Projection of the transverse direction onto the slip plane. More...
 
real(preal) function, dimension(sum(nslip), sum(nslip)) lattice::slipprojection_direction (Nslip, structure, cOverA)
 Projection of the slip direction onto the slip plane. More...
 
real(preal) function, dimension(3, 3, sum(nslip)) lattice::coordinatesystem_slip (Nslip, structure, cOverA)
 build a local coordinate system on slip systems More...
 
real(preal) function, dimension(sum(reacting_used), sum(acting_used)) lattice::buildinteraction (reacting_used, acting_used, reacting_max, acting_max, values, matrix)
 Populate reduced interaction matrix. More...
 
real(preal) function, dimension(3, 3, sum(active)) lattice::buildcoordinatesystem (active, potential, system, structure, cOverA)
 Build a local coordinate system on slip, twin, trans, cleavage systems. More...
 
subroutine lattice::buildtransformationsystem (Q, S, Ntrans, cOverA, a_fcc, a_bcc)
 Helper function to define transformation systems. More...
 
character(len=:) function, dimension(:), allocatable lattice::getlabels (active, potential, system)
 select active systems as strings More...
 
real(preal) function lattice::equivalent_nu (C, assumption)
 Equivalent Poisson's ratio (ν) More...
 
real(preal) function lattice::equivalent_mu (C, assumption)
 Equivalent shear modulus (μ) More...
 
subroutine lattice::unittest
 check correctness of some lattice functions More...
 
subroutine, public source_thermal_dissipation::source_thermal_dissipation_init
 module initialization More...
 
subroutine, public source_thermal_dissipation::source_thermal_dissipation_getrateanditstangent (TDot, dTDot_dT, Tstar, Lp, phase)
 Ninstances dissipation rate. More...
 
subroutine, public source_thermal_externalheat::source_thermal_externalheat_init
 module initialization More...
 
subroutine, public source_thermal_externalheat::source_thermal_externalheat_dotstate (phase, of)
 rate of change of state More...
 
subroutine, public source_thermal_externalheat::source_thermal_externalheat_getrateanditstangent (TDot, dTDot_dT, phase, of)
 returns local heat generation rate More...
 
subroutine, public source_damage_isobrittle::source_damage_isobrittle_init
 module initialization More...
 
subroutine, public source_damage_isobrittle::source_damage_isobrittle_deltastate (C, Fe, ipc, ip, el)
 calculates derived quantities from state More...
 
subroutine, public source_damage_isobrittle::source_damage_isobrittle_getrateanditstangent (localphiDot, dLocalphiDot_dPhi, phi, phase, constituent)
 returns local part of nonlocal damage driving force More...
 
subroutine, public source_damage_isobrittle::source_damage_isobrittle_results (phase, group)
 writes results to HDF5 output file More...
 
subroutine, public source_damage_isoductile::source_damage_isoductile_init
 module initialization More...
 
subroutine, public source_damage_isoductile::source_damage_isoductile_dotstate (ipc, ip, el)
 calculates derived quantities from state More...
 
subroutine, public source_damage_isoductile::source_damage_isoductile_getrateanditstangent (localphiDot, dLocalphiDot_dPhi, phi, phase, constituent)
 returns local part of nonlocal damage driving force More...
 
subroutine, public source_damage_isoductile::source_damage_isoductile_results (phase, group)
 writes results to HDF5 output file More...
 
subroutine, public source_damage_anisobrittle::source_damage_anisobrittle_init
 module initialization More...
 
subroutine, public source_damage_anisobrittle::source_damage_anisobrittle_dotstate (S, ipc, ip, el)
 calculates derived quantities from state More...
 
subroutine, public source_damage_anisobrittle::source_damage_anisobrittle_getrateanditstangent (localphiDot, dLocalphiDot_dPhi, phi, phase, constituent)
 returns local part of nonlocal damage driving force More...
 
subroutine, public source_damage_anisobrittle::source_damage_anisobrittle_results (phase, group)
 writes results to HDF5 output file More...
 
subroutine, public source_damage_anisoductile::source_damage_anisoductile_init
 module initialization More...
 
subroutine, public source_damage_anisoductile::source_damage_anisoductile_dotstate (ipc, ip, el)
 calculates derived quantities from state More...
 
subroutine, public source_damage_anisoductile::source_damage_anisoductile_getrateanditstangent (localphiDot, dLocalphiDot_dPhi, phi, phase, constituent)
 returns local part of nonlocal damage driving force More...
 
subroutine, public source_damage_anisoductile::source_damage_anisoductile_results (phase, group)
 writes results to HDF5 output file More...
 
subroutine, public kinematics_cleavage_opening::kinematics_cleavage_opening_init
 module initialization More...
 
subroutine, public kinematics_cleavage_opening::kinematics_cleavage_opening_lianditstangent (Ld, dLd_dTstar, S, ipc, ip, el)
 contains the constitutive equation for calculating the velocity gradient More...
 
subroutine, public kinematics_slipplane_opening::kinematics_slipplane_opening_init
 module initialization More...
 
subroutine, public kinematics_slipplane_opening::kinematics_slipplane_opening_lianditstangent (Ld, dLd_dTstar, S, ipc, ip, el)
 contains the constitutive equation for calculating the velocity gradient More...
 
subroutine, public kinematics_thermal_expansion::kinematics_thermal_expansion_init
 module initialization More...
 
pure real(preal) function, dimension(3, 3), public kinematics_thermal_expansion::kinematics_thermal_expansion_initialstrain (homog, phase, offset)
 report initial thermal strain based on current temperature deviation from reference More...
 
subroutine, public kinematics_thermal_expansion::kinematics_thermal_expansion_lianditstangent (Li, dLi_dTstar, ipc, ip, el)
 contains the constitutive equation for calculating the velocity gradient More...
 
subroutine, public constitutive::constitutive_init
 allocates arrays pointing to array of the various constitutive modules More...
 
real(preal) function, dimension(6, 6), public constitutive::constitutive_homogenizedc (ipc, ip, el)
 returns the homogenize elasticity matrix ToDo: homogenizedC66 would be more consistent More...
 
subroutine, public constitutive::constitutive_dependentstate (F, Fp, ipc, ip, el)
 calls microstructure function of the different constitutive models More...
 
subroutine, public constitutive::constitutive_lpanditstangents (Lp, dLp_dS, dLp_dFi, S, Fi, ipc, ip, el)
 contains the constitutive equation for calculating the velocity gradient More...
 
subroutine, public constitutive::constitutive_lianditstangents (Li, dLi_dS, dLi_dFi, S, Fi, ipc, ip, el)
 contains the constitutive equation for calculating the velocity gradient More...
 
pure real(preal) function, dimension(3, 3), public constitutive::constitutive_initialfi (ipc, ip, el)
 collects initial intermediate deformation gradient More...
 
subroutine, public constitutive::constitutive_sanditstangents (S, dS_dFe, dS_dFi, Fe, Fi, ipc, ip, el)
 returns the 2nd Piola-Kirchhoff stress tensor and its tangent with respect to the elastic/intermediate deformation gradients depending on the selected elastic law (so far no case switch because only Hooke is implemented) More...
 
subroutine constitutive::constitutive_hooke_sanditstangents (S, dS_dFe, dS_dFi, Fe, Fi, ipc, ip, el)
 returns the 2nd Piola-Kirchhoff stress tensor and its tangent with respect to the elastic and intermeidate deformation gradients using Hookes law More...
 
subroutine, public constitutive::constitutive_collectdotstate (S, FArray, Fi, FpArray, subdt, ipc, ip, el)
 contains the constitutive equation for calculating the rate of change of microstructure More...
 
subroutine, public constitutive::constitutive_collectdeltastate (S, Fe, Fi, ipc, ip, el)
 for constitutive models having an instantaneous change of state will return false if delta state is not needed/supported by the constitutive model More...
 
subroutine, public constitutive::constitutive_results
 writes constitutive results to HDF5 output file More...
 
program __damask_marc.f90__
 Dummy plasticity for purely elastic material. More...
 
pure subroutine kinetics_slip (Mp, instance, of, gdot_slip_pos, gdot_slip_neg, dgdot_dtau_slip_pos, dgdot_dtau_slip_neg)
 module initialization More...
 
pure subroutine kinetics_twin (Mp, instance, of, gdot_twin, dgdot_dtau_twin)
 Calculate shear rates on twin systems and their derivatives with respect to resolved. More...
 
pure subroutine kinetics (Mp, instance, of, gdot_pos, gdot_neg, dgdot_dtau_pos, dgdot_dtau_neg)
 Phenomenological crystal plasticity using a power law formulation for the shear rates and a Voce-type kinematic hardening rule. More...
 
pure subroutine kinetics_slip (Mp, T, instance, of, dot_gamma_sl, ddot_gamma_dtau_slip, tau_slip)
 material subroutine incoprorating dislocation and twinning physics More...
 
pure subroutine kinetics_twin (Mp, T, dot_gamma_sl, instance, of, dot_gamma_twin, ddot_gamma_dtau_twin)
 Calculate shear rates on twin systems and their derivatives with respect to resolved. More...
 
pure subroutine kinetics_trans (Mp, T, dot_gamma_sl, instance, of, dot_gamma_tr, ddot_gamma_dtau_trans)
 Calculate shear rates on transformation systems and their derivatives with respect to. More...
 
pure subroutine kinetics (Mp, T, instance, of, dot_gamma_pos, dot_gamma_neg, ddot_gamma_dtau_pos, ddot_gamma_dtau_neg, tau_pos_out, tau_neg_out)
 crystal plasticity model for bcc metals, especially Tungsten More...
 
subroutine stateinit (ini, phase, NipcMyPhase)
 material subroutine for plasticity including dislocation flux More...
 
subroutine kinetics (v, dv_dtau, dv_dtauNS, tau, tauNS, tauThreshold, c, Temperature, instance)
 calculates kinetics More...
 
real(preal) function, dimension(param(instance)%sum_n_sl, 10) getrho (instance, of, ip, el)
 returns copy of current dislocation densities from state More...
 
real(preal) function, dimension(param(instance)%sum_n_sl, 10) getrho0 (instance, of, ip, el)
 returns copy of current dislocation densities from state More...
 
subroutine crystallite_init
 crystallite state integration functions and reporting of results More...
 
logical function, dimension(discretization_nip, discretization_nelem) crystallite_stress (dummyArgumentToPreventInternalCompilerErrorWithGCC)
 calculate stress (P) More...
 
subroutine crystallite_stresstangent
 calculate tangent (dPdF) More...
 
subroutine crystallite_orientations
 calculates orientations More...
 
real(preal) function, dimension(3, 3) crystallite_push33toref (ipc, ip, el, tensor33)
 Map 2nd order tensor to reference config. More...
 
subroutine crystallite_results
 writes crystallite results to HDF5 output file More...
 
real(preal) function, dimension(:,:,:), allocatable select_tensors (dataset, instance)
 select tensors for output More...
 
type(rotation) function, dimension(:), allocatable select_rotations (dataset, instance)
 select rotations for output More...
 
logical function integratestress (ipc, ip, el, timeFraction)
 calculation of stress (P) with time integration based on a residuum in Lp and intermediate acceleration of the Newton-Raphson correction More...
 
subroutine integratestatefpi
 integrate stress, state with adaptive 1st order explicit Euler method using Fixed Point Iteration to adapt the stepsize More...
 
real(preal) pure function damper (current, previous, previous2)
 calculate the damping for correction of state and dot state More...
 
subroutine integratestateeuler
 integrate state with 1st order explicit Euler method More...
 
subroutine integratestateadaptiveeuler
 integrate stress, state with 1st order Euler method with adaptive step size More...
 
subroutine integratestaterk4
 integrate stress, state with 4th order explicit Runge Kutta method More...
 
subroutine integratestaterkck45
 integrate stress, state with 5th order Runge-Kutta Cash-Karp method with adaptive step size (use 5th order solution to advance = "local extrapolation") More...
 
subroutine nonlocalconvergencecheck
 sets convergence flag for nonlocal calculations More...
 
logical pure function converged (residuum, state, atol)
 determines whether a point is converged More...
 
logical function statejump (ipc, ip, el)
 calculates a jump in the state according to the current state and the current stress returns true, if state jump was successfull or not needed. false indicates NaN in delta state More...
 
subroutine crystallite_restartwrite
 Write current restart information (Field and constitutive data) to file. More...
 
subroutine crystallite_restartread
 Read data for restart. More...
 
subroutine crystallite_forward
 Forward data after successful increment. More...
 
subroutine thermal_isothermal::thermal_isothermal_init
 allocates all neccessary fields, reads information from material configuration file More...
 
subroutine, public thermal_adiabatic::thermal_adiabatic_init
 module initialization More...
 
logical function, dimension(2), public thermal_adiabatic::thermal_adiabatic_updatestate (subdt, ip, el)
 calculates adiabatic change in temperature based on local heat generation model
More...
 
subroutine, public thermal_adiabatic::thermal_adiabatic_getsourceanditstangent (Tdot, dTdot_dT, T, ip, el)
 returns heat generation rate More...
 
real(preal) function, public thermal_adiabatic::thermal_adiabatic_getspecificheat (ip, el)
 returns homogenized specific heat capacity More...
 
real(preal) function, public thermal_adiabatic::thermal_adiabatic_getmassdensity (ip, el)
 returns homogenized mass density More...
 
subroutine, public thermal_adiabatic::thermal_adiabatic_results (homog, group)
 writes results to HDF5 output file More...
 
subroutine, public thermal_conduction::thermal_conduction_init
 module initialization More...
 
subroutine, public thermal_conduction::thermal_conduction_getsourceanditstangent (Tdot, dTdot_dT, T, ip, el)
 returns heat generation rate More...
 
real(preal) function, dimension(3, 3), public thermal_conduction::thermal_conduction_getconductivity (ip, el)
 returns homogenized thermal conductivity in reference configuration More...
 
real(preal) function, public thermal_conduction::thermal_conduction_getspecificheat (ip, el)
 returns homogenized specific heat capacity More...
 
real(preal) function, public thermal_conduction::thermal_conduction_getmassdensity (ip, el)
 returns homogenized mass density More...
 
subroutine, public thermal_conduction::thermal_conduction_puttemperatureanditsrate (T, Tdot, ip, el)
 updates thermal state with solution from heat conduction PDE More...
 
subroutine, public thermal_conduction::thermal_conduction_results (homog, group)
 writes results to HDF5 output file More...
 
subroutine damage_none::damage_none_init
 allocates all neccessary fields, reads information from material configuration file More...
 
subroutine, public damage_local::damage_local_init
 module initialization More...
 
logical function, dimension(2), public damage_local::damage_local_updatestate (subdt, ip, el)
 calculates local change in damage field More...
 
subroutine damage_local::damage_local_getsourceanditstangent (phiDot, dPhiDot_dPhi, phi, ip, el)
 calculates homogenized local damage driving forces More...
 
subroutine, public damage_local::damage_local_results (homog, group)
 writes results to HDF5 output file More...
 
subroutine, public damage_nonlocal::damage_nonlocal_init
 module initialization More...
 
subroutine, public damage_nonlocal::damage_nonlocal_getsourceanditstangent (phiDot, dPhiDot_dPhi, phi, ip, el)
 calculates homogenized damage driving forces More...
 
real(preal) function, dimension(3, 3), public damage_nonlocal::damage_nonlocal_getdiffusion (ip, el)
 returns homogenized non local damage diffusion tensor in reference configuration More...
 
real(preal) function, public damage_nonlocal::damage_nonlocal_getmobility (ip, el)
 Returns homogenized nonlocal damage mobility. More...
 
subroutine, public damage_nonlocal::damage_nonlocal_putnonlocaldamage (phi, ip, el)
 updated nonlocal damage field with solution from damage phase field PDE More...
 
subroutine, public damage_nonlocal::damage_nonlocal_results (homog, group)
 writes results to HDF5 output file More...
 
subroutine, public homogenization::homogenization_init
 module initialization More...
 
subroutine, public homogenization::materialpoint_stressanditstangent (updateJaco, dt)
 parallelized calculation of stress and corresponding tangent at material points More...
 
subroutine homogenization::partitiondeformation (ip, el)
 partition material point def grad onto constituents More...
 
logical function, dimension(2) homogenization::updatestate (ip, el)
 update the internal state of the homogenization scheme and tell whether "done" and "happy" with result More...
 
subroutine homogenization::averagestressanditstangent (ip, el)
 derive average stress and stiffness from constituent quantities More...
 
subroutine, public homogenization::homogenization_results
 writes homogenization results to HDF5 output file More...
 
subroutine stresspenalty (rPen, nMis, avgF, fDef, ip, el, instance, of)
 allocates all neccessary fields, reads information from material configuration file More...
 
subroutine volumepenalty (vPen, vDiscrep, fAvg, fDef, nGrain, instance, of)
 calculate stress-like penalty due to volume discrepancy More...
 
real(preal) function, dimension(3) surfacecorrection (avgF, instance, of)
 compute the correction factor accouted for surface evolution (area change) due to More...
 
real(preal) function, dimension(2) equivalentmoduli (grainID, ip, el)
 compute the equivalent shear and bulk moduli from the elasticity tensor More...
 
subroutine graindeformation (F, avgF, instance, of)
 calculating the grain deformation gradient (the same with More...
 
pure real(preal) function, dimension(3) relaxationvector (intFace, instance, of)
 derive average stress and stiffness from constituent quantities More...
 
pure real(preal) function, dimension(3) interfacenormal (intFace, instance, of)
 identify the normal of an interface More...
 
pure integer function, dimension(4) getinterface (iFace, iGrain3)
 collect six faces of a grain in 4D (normal and position) More...
 
pure integer function, dimension(3) grain1to3 (grain1, nGDim)
 map grain ID from in 1D (global array) to in 3D (local position) More...
 
integer pure function grain3to1 (grain3, nGDim)
 map grain ID from in 3D (local position) to in 1D (global array) More...
 
integer pure function interface4to1 (iFace4D, nGDim)
 maps interface ID from 4D (normal and local position) into 1D (global array) More...
 
pure integer function, dimension(4) interface1to4 (iFace1D, nGDim)
 maps interface ID from 1D (global array) into 4D (normal and local position) More...
 
subroutine cpfem_initall (el, ip)
 CPFEM engine. More...
 
subroutine cpfem_init
 allocate the arrays defined in module CPFEM and initialize them More...
 
subroutine cpfem_general (mode, parallelExecution, ffn, ffn1, temperature_inp, dt, elFE, ip, cauchyStress, jacobian)
 perform initialization at first call, update variables and call the actual material model More...
 
subroutine cpfem_forward
 Forward data for new time increment. More...
 
subroutine cpfem_results (inc, time)
 Trigger writing of results. More...
 
subroutine hypela2 (d, g, e, de, s, t, dt, ngens, m, nn, kcus, matus, ndi, nshear, disp, dispt, coord, ffn, frotn, strechn, eigvn, ffn1, frotn1, strechn1, eigvn1, ncrd, itel, ndeg, ndm, nnode, jtype, lclass, ifr, ifu)
 This is the MSC.Marc user subroutine for defining material behavior. More...
 
subroutine flux (f, ts, n, time)
 calculate internal heat generated due to inelastic energy dissipation More...
 
subroutine uedinc (inc, incsub)
 trigger writing of results More...
 

Variables

integer, parameter prec::preal = IEEE_selected_real_kind(15, 307)
 number with 15 significant digits, up to 1e+-307 (typically 64 bit) More...
 
integer, parameter prec::pint = selected_int_kind(18)
 number with at least up to +-1e18 (typically 64 bit) More...
 
integer, parameter prec::plongint = selected_int_kind(18)
 number with at least up to +-1e18 (typically 64 bit) More...
 
integer, parameter prec::pstringlen = 256
 default string length More...
 
integer, parameter prec::ppathlen = 4096
 maximum length of a path name on linux More...
 
real(preal), parameter prec::tol_math_check = 1.0e-8_pReal
 tolerance for internal math self-checks (rotation) More...
 
real(preal), parameter, private prec::preal_epsilon = epsilon(0.0_pReal)
 minimum positive number such that 1.0 + EPSILON /= 1.0. More...
 
real(preal), parameter, private prec::preal_min = tiny(0.0_pReal)
 smallest normalized floating point number More...
 
integer, dimension(0), parameter prec::emptyintarray = [integer::]
 
real(preal), dimension(0), parameter prec::emptyrealarray = [real(pReal)::]
 
character(len=pstringlen), dimension(0), parameter prec::emptystringarray = [character(len=pStringLen)::]
 
logical, public, protected damask_interface::symmetricsolver
 
character(len= *), parameter, public damask_interface::inputfileextension = '.dat'
 
character(len= *), parameter, public io::io_eof = '#EOF#'
 end of file string More...
 
character(len= *), parameter, public io::io_whitespace = achar(44)//achar(32)//achar(9)//achar(10)//achar(13)
 whitespace characters More...
 
character, parameter, public io::io_eol = new_line('DAMASK')
 end of line character More...
 
character, parameter, public io::io_comment = '#'
 
character(len= *), parameter, private io::io_divider = '───────────────────'// '───────────────────'// '───────────────────'// '────────────'
 
integer, public, protected numerics::ijacostiffness = 1
 frequency of stiffness update More...
 
integer, public, protected numerics::randomseed = 0
 fixed seeding for pseudo-random number generator, Default 0: use random seed More...
 
integer, public, protected numerics::worldrank = 0
 MPI worldrank (/=0 for MPI simulations only) More...
 
integer, public, protected numerics::worldsize = 1
 MPI worldsize (/=1 for MPI simulations only) More...
 
integer, public, protected numerics::numerics_integrator = 1
 method used for state integration Default 1: fix-point iteration More...
 
integer(4), public, protected numerics::damask_numthreadsint = 0
 value stored in environment variable DAMASK_NUM_THREADS, set to zero if no OpenMP directive More...
 
real(preal), public, protected numerics::defgradtolerance = 1.0e-7_pReal
 deviation of deformation gradient that is still allowed (used by CPFEM to determine outdated ffn1) More...
 
real(preal), public, protected numerics::numerics_unitlength = 1.0_pReal
 determines the physical length of one computational length unit More...
 
real(preal), public, protected numerics::charlength = 1.0_pReal
 characteristic length scale for gradient problems More...
 
real(preal), public, protected numerics::residualstiffness = 1.0e-6_pReal
 non-zero residual damage More...
 
logical, public, protected numerics::usepingpong = .true.
 
real(preal), public, protected numerics::err_struct_tolabs = 1.0e-10_pReal
 absolute tolerance for mechanical equilibrium More...
 
real(preal), public, protected numerics::err_struct_tolrel = 1.0e-4_pReal
 relative tolerance for mechanical equilibrium More...
 
real(preal), public, protected numerics::err_thermal_tolabs = 1.0e-2_pReal
 absolute tolerance for thermal equilibrium More...
 
real(preal), public, protected numerics::err_thermal_tolrel = 1.0e-6_pReal
 relative tolerance for thermal equilibrium More...
 
real(preal), public, protected numerics::err_damage_tolabs = 1.0e-2_pReal
 absolute tolerance for damage evolution More...
 
real(preal), public, protected numerics::err_damage_tolrel = 1.0e-6_pReal
 relative tolerance for damage evolution More...
 
integer, public, protected numerics::itmax = 250
 maximum number of iterations More...
 
integer, public, protected numerics::itmin = 1
 minimum number of iterations More...
 
integer, public, protected numerics::stagitmax = 10
 max number of field level staggered iterations More...
 
integer, public, protected numerics::maxcutback = 3
 max number of cut backs More...
 
integer, parameter, public debug::debug_levelselective = 2**0
 
integer, parameter, public debug::debug_levelbasic = 2**1
 
integer, parameter, public debug::debug_levelextensive = 2**2
 
integer, parameter, private debug::debug_maxgeneral = debug_LEVELEXTENSIVE
 
integer, parameter, public debug::debug_spectralrestart = debug_MAXGENERAL*2**1
 
integer, parameter, public debug::debug_spectralfftw = debug_MAXGENERAL*2**2
 
integer, parameter, public debug::debug_spectraldivergence = debug_MAXGENERAL*2**3
 
integer, parameter, public debug::debug_spectralrotation = debug_MAXGENERAL*2**4
 
integer, parameter, public debug::debug_spectralpetsc = debug_MAXGENERAL*2**5
 
integer, parameter, public debug::debug_debug = 1
 
integer, parameter, public debug::debug_math = 2
 
integer, parameter, public debug::debug_fesolving = 3
 
integer, parameter, public debug::debug_mesh = 4
 stores debug level for mesh part of DAMASK bitwise coded More...
 
integer, parameter, public debug::debug_material = 5
 stores debug level for material part of DAMASK bitwise coded More...
 
integer, parameter, public debug::debug_lattice = 6
 stores debug level for lattice part of DAMASK bitwise coded More...
 
integer, parameter, public debug::debug_constitutive = 7
 stores debug level for constitutive part of DAMASK bitwise coded More...
 
integer, parameter, public debug::debug_crystallite = 8
 
integer, parameter, public debug::debug_homogenization = 9
 
integer, parameter, public debug::debug_cpfem = 10
 
integer, parameter, public debug::debug_spectral = 11
 
integer, parameter, public debug::debug_marc = 12
 
integer, parameter, private debug::debug_maxntype = debug_MARC
 must be set to the maximum defined debug type More...
 
integer, dimension(debug_maxntype+2), public, protected debug::debug_level = 0
 
integer, public, protected debug::debug_e = 1
 
integer, public, protected debug::debug_i = 1
 
integer, public, protected debug::debug_g = 1
 
integer, dimension(2), public debug::debug_stressmaxlocation = 0
 
integer, dimension(2), public debug::debug_stressminlocation = 0
 
integer, dimension(2), public debug::debug_jacobianmaxlocation = 0
 
integer, dimension(2), public debug::debug_jacobianminlocation = 0
 
real(preal), public debug::debug_stressmax = -huge(1.0_pReal)
 
real(preal), public debug::debug_stressmin = huge(1.0_pReal)
 
real(preal), public debug::debug_jacobianmax = -huge(1.0_pReal)
 
real(preal), public debug::debug_jacobianmin = huge(1.0_pReal)
 
type(tpartitionedstringlist), dimension(:), allocatable, public, protected config::config_phase
 
type(tpartitionedstringlist), dimension(:), allocatable, public, protected config::config_microstructure
 
type(tpartitionedstringlist), dimension(:), allocatable, public, protected config::config_homogenization
 
type(tpartitionedstringlist), dimension(:), allocatable, public, protected config::config_texture
 
type(tpartitionedstringlist), dimension(:), allocatable, public, protected config::config_crystallite
 
type(tpartitionedstringlist), public, protected config::config_numerics
 
type(tpartitionedstringlist), public, protected config::config_debug
 
character(len=pstringlen), dimension(:), allocatable, public, protected config::config_name_phase
 name of each phase More...
 
character(len=pstringlen), dimension(:), allocatable, public, protected config::config_name_homogenization
 name of each homogenization More...
 
character(len=pstringlen), dimension(:), allocatable, public, protected config::config_name_crystallite
 name of each crystallite setting More...
 
character(len=pstringlen), dimension(:), allocatable, public, protected config::config_name_microstructure
 name of each microstructure More...
 
character(len=pstringlen), dimension(:), allocatable, public, protected config::config_name_texture
 name of each texture More...
 
real(preal), parameter math::pi = acos(-1.0_pReal)
 ratio of a circle's circumference to its diameter More...
 
real(preal), parameter math::indeg = 180.0_pReal/PI
 conversion from radian into degree More...
 
real(preal), parameter math::inrad = PI/180.0_pReal
 conversion from degree into radian More...
 
complex(preal), parameter math::twopiimg = cmplx(0.0_pReal, 2.0_pReal*PI)
 Re(0.0), Im(2xPi) More...
 
real(preal), dimension(3, 3), parameter math::math_i3 = reshape([ 1.0_pReal,0.0_pReal,0.0_pReal, 0.0_pReal,1.0_pReal,0.0_pReal, 0.0_pReal,0.0_pReal,1.0_pReal ], [3,3])
 3x3 Identity More...
 
real(preal), dimension(6), parameter, private math::nrmmandel = [ 1.0_pReal, 1.0_pReal, 1.0_pReal, sqrt(2.0_pReal), sqrt(2.0_pReal), sqrt(2.0_pReal) ]
 forward weighting for Mandel notation More...
 
real(preal), dimension(6), parameter, private math::invnrmmandel = 1.0_pReal/NRMMANDEL
 backward weighting for Mandel notation More...
 
integer, dimension(2, 6), parameter, private math::mapnye = reshape([ 1,1, 2,2, 3,3, 1,2, 2,3, 1,3 ], [2,6])
 arrangement in Nye notation. More...
 
integer, dimension(2, 6), parameter, private math::mapvoigt = reshape([ 1,1, 2,2, 3,3, 2,3, 1,3, 1,2 ], [2,6])
 arrangement in Voigt notation More...
 
integer, dimension(2, 9), parameter, private math::mapplain = reshape([ 1,1, 1,2, 1,3, 2,1, 2,2, 2,3, 3,1, 3,2, 3,3 ], [2,9])
 arrangement in Plain notation More...
 
real(preal), parameter, public quaternions::p = -1.0_pReal
 parameter for orientation conversion. More...
 
real(preal), parameter lambert::spi = sqrt(PI)
 
real(preal), parameter lambert::pref = sqrt(6.0_pReal/PI)
 
real(preal), parameter lambert::a = PI**(5.0_pReal/6.0_pReal)/6.0_pReal**(1.0_pReal/6.0_pReal)
 
real(preal), parameter lambert::ap = PI**(2.0_pReal/3.0_pReal)
 
real(preal), parameter lambert::sc = A/AP
 
real(preal), parameter lambert::beta = A/2.0_pReal
 
real(preal), parameter lambert::r1 = (3.0_pReal*PI/4.0_pReal)**(1.0_pReal/3.0_pReal)
 
real(preal), parameter lambert::r2 = sqrt(2.0_pReal)
 
real(preal), parameter lambert::pi12 = PI/12.0_pReal
 
real(preal), parameter lambert::prek = R1 * 2.0_pReal**(1.0_pReal/4.0_pReal)/BETA
 
logical fesolving::terminallyill = .false.
 at least one material point is terminally ill More...
 
integer, dimension(2) fesolving::fesolving_execelem
 for ping-pong scheme always whole range, otherwise one specific element More...
 
integer, dimension(2) fesolving::fesolving_execip
 for ping-pong scheme always range to max IP, otherwise one specific IP More...
 
logical, dimension(:,:), allocatable fesolving::calcmode
 do calculation or simply collect when using ping pong scheme More...
 
integer, parameter element::nelemtype = 13
 
integer, dimension(nelemtype), parameter element::nnode = [ 3, 6, 4, 8, 8, 4, 5, 10, 6, 8, 8, 20, 20 ]
 number of nodes that constitute a specific type of element More...
 
integer, dimension(nelemtype), parameter element::geomtype = [ 1, 2, 3, 4, 3, 5, 6, 6, 7, 8, 9, 9, 10 ]
 geometry type (same number of cell nodes and IPs) More...
 
integer, dimension(maxval(geomtype)), parameter element::ncellnode = [ 3, 7, 9, 16, 4, 15, 21, 8, 27, 64 ]
 number of cell nodes More...
 
integer, dimension(maxval(geomtype)), parameter element::nip = [ 1, 3, 4, 9, 1, 4, 6, 1, 8, 27 ]
 number of IPs More...
 
integer, dimension(maxval(geomtype)), parameter element::celltype = [ 1, 2, 2, 2, 3, 4, 4, 4, 4, 4 ]
 cell type More...
 
integer, dimension(maxval(celltype)), parameter element::nipneighbor = [ 3, 4, 4, 6 ]
 number of ip neighbors / cell faces More...
 
integer, dimension(maxval(celltype)), parameter element::ncellnodepercellface = [ 2, 2, 3, 4 ]
 number of cell nodes per face More...
 
integer, dimension(maxval(celltype)), parameter element::ncellnodepercell = [ 3, 4, 4, 8 ]
 number of total cell nodes More...
 
integer, dimension(nipneighbor(celltype(1)), nip(1)), parameter element::ipneighbor1 = reshape([ -2,-3,-1 ], [NIPNEIGHBOR(CELLTYPE(1)),NIP(1)])
 
integer, dimension(nipneighbor(celltype(2)), nip(2)), parameter element::ipneighbor2 = reshape([ 2,-3, 3,-1, -2, 1, 3,-1, 2,-3,-2, 1 ], [NIPNEIGHBOR(CELLTYPE(2)),NIP(2)])
 
integer, dimension(nipneighbor(celltype(3)), nip(3)), parameter element::ipneighbor3 = reshape([ 2,-4, 3,-1, -2, 1, 4,-1, 4,-4,-3, 1, -2, 3,-3, 2 ], [NIPNEIGHBOR(CELLTYPE(3)),NIP(3)])
 
integer, dimension(nipneighbor(celltype(4)), nip(4)), parameter element::ipneighbor4 = reshape([ 2,-4, 4,-1, 3, 1, 5,-1, -2, 2, 6,-1, 5,-4, 7, 1, 6, 4, 8, 2, -2, 5, 9, 3, 8,-4,-3, 4, 9, 7,-3, 5, -2, 8,-3, 6 ], [NIPNEIGHBOR(CELLTYPE(4)),NIP(4)])
 
integer, dimension(nipneighbor(celltype(5)), nip(5)), parameter element::ipneighbor5 = reshape([ -1,-2,-3,-4 ], [NIPNEIGHBOR(CELLTYPE(5)),NIP(5)])
 
integer, dimension(nipneighbor(celltype(6)), nip(6)), parameter element::ipneighbor6 = reshape([ 2,-4, 3,-2, 4,-1, -2, 1, 3,-2, 4,-1, 2,-4,-3, 1, 4,-1, 2,-4, 3,-2,-3, 1 ], [NIPNEIGHBOR(CELLTYPE(6)),NIP(6)])
 
integer, dimension(nipneighbor(celltype(7)), nip(7)), parameter element::ipneighbor7 = reshape([ 2,-4, 3,-2, 4,-1, -3, 1, 3,-2, 5,-1, 2,-4,-3, 1, 6,-1, 5,-4, 6,-2,-5, 1, -3, 4, 6,-2,-5, 2, 5,-4,-3, 4,-5, 3 ], [NIPNEIGHBOR(CELLTYPE(7)),NIP(7)])
 
integer, dimension(nipneighbor(celltype(8)), nip(8)), parameter element::ipneighbor8 = reshape([ -3,-5,-4,-2,-6,-1 ], [NIPNEIGHBOR(CELLTYPE(8)),NIP(8)])
 
integer, dimension(nipneighbor(celltype(9)), nip(9)), parameter element::ipneighbor9 = reshape([ 2,-5, 3,-2, 5,-1, -3, 1, 4,-2, 6,-1, 4,-5,-4, 1, 7,-1, -3, 3,-4, 2, 8,-1, 6,-5, 7,-2,-6, 1, -3, 5, 8,-2,-6, 2, 8,-5,-4, 5,-6, 3, -3, 7,-4, 6,-6, 4 ], [NIPNEIGHBOR(CELLTYPE(9)),NIP(9)])
 
integer, dimension(nipneighbor(celltype(10)), nip(10)), parameter element::ipneighbor10 = reshape([ 2,-5, 4,-2,10,-1, 3, 1, 5,-2,11,-1, -3, 2, 6,-2,12,-1, 5,-5, 7, 1,13,-1, 6, 4, 8, 2,14,-1, -3, 5, 9, 3,15,-1, 8,-5,-4, 4,16,-1, 9, 7,-4, 5,17,-1, -3, 8,-4, 6,18,-1, 11,-5,13,-2,19, 1, 12,10,14,-2,20, 2, -3,11,15,-2,21, 3, 14,-5,16,10,22, 4, 15,13,17,11,23, 5, -3,14,18,12,24, 6, 17,-5,-4,13,25, 7, 18,16,-4,14,26, 8, -3,17,-4,15,27, 9, 20,-5,22,-2,-6,10, 21,19,23,-2,-6,11, -3,20,24,-2,-6,12, 23,-5,25,19,-6,13, 24,22,26,20,-6,14, -3,23,27,21,-6,15, 26,-5,-4,22,-6,16, 27,25,-4,23,-6,17, -3,26,-4,24,-6,18 ], [NIPNEIGHBOR(CELLTYPE(10)),NIP(10)])
 
integer, dimension(nnode(1), ncellnode(geomtype(1))), parameter element::cellnodeparentnodeweights1 = reshape([ 1, 0, 0, 0, 1, 0, 0, 0, 1 ], [NNODE(1),NCELLNODE(GEOMTYPE(1))])
 
integer, dimension(nnode(2), ncellnode(geomtype(2))), parameter element::cellnodeparentnodeweights2 = reshape([ 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2 ], [NNODE(2),NCELLNODE(GEOMTYPE(2))])
 
integer, dimension(nnode(3), ncellnode(geomtype(3))), parameter element::cellnodeparentnodeweights3 = reshape([ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1 ], [NNODE(3),NCELLNODE(GEOMTYPE(3))])
 
integer, dimension(nnode(4), ncellnode(geomtype(4))), parameter element::cellnodeparentnodeweights4 = reshape([ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 2, 4, 1, 1, 1, 8, 2, 2, 8, 1, 4, 1, 1, 8, 8, 2, 2, 1, 1, 4, 1, 2, 8, 8, 2, 1, 1, 1, 4, 2, 2, 8, 8 ], [NNODE(4),NCELLNODE(GEOMTYPE(4))])
 
integer, dimension(nnode(5), ncellnode(geomtype(5))), parameter element::cellnodeparentnodeweights5 = reshape([ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2 ], [NNODE(5),NCELLNODE(GEOMTYPE(5))])
 
integer, dimension(nnode(6), ncellnode(geomtype(6))), parameter element::cellnodeparentnodeweights6 = reshape([ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ], [NNODE(6),NcellNode(GEOMTYPE(6))])
 
integer, dimension(nnode(7), ncellnode(geomtype(7))), parameter element::cellnodeparentnodeweights7 = reshape([ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1 ], [NNODE(7),NCELLNODE(GEOMTYPE(7))])
 
integer, dimension(nnode(8), ncellnode(geomtype(8))), parameter element::cellnodeparentnodeweights8 = reshape([ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 2, 2, 2, 0, 0, 0, 1, 1, 0, 1, 2, 0, 0, 2, 2, 0, 0, 1, 1, 1, 0, 2, 0, 0, 2, 2, 1, 0, 1, 1, 0, 0, 2, 2, 0, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4 ], [NNODE(8),NCELLNODE(GEOMTYPE(8))])
 
integer, dimension(nnode(9), ncellnode(geomtype(9))), parameter element::cellnodeparentnodeweights9 = reshape([ 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [NNODE(9),NCELLNODE(GEOMTYPE(9))])
 
integer, dimension(nnode(10), ncellnode(geomtype(10))), parameter element::cellnodeparentnodeweights10 = reshape([ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 ], [NNODE(10),NCELLNODE(GEOMTYPE(10))])
 
integer, dimension(nnode(11), ncellnode(geomtype(11))), parameter element::cellnodeparentnodeweights11 = reshape([ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [NNODE(11),NCELLNODE(GEOMTYPE(11))])
 
integer, dimension(nnode(12), ncellnode(geomtype(12))), parameter element::cellnodeparentnodeweights12 = reshape([ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 2, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 2, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 2, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 ], [NNODE(12),NCELLNODE(GEOMTYPE(12))])
 
integer, dimension(nnode(13), ncellnode(geomtype(13))), parameter element::cellnodeparentnodeweights13 = reshape([ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 1, 1, 1, 0, 0, 0, 0, 8, 2, 2, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 0, 0, 0, 0, 8, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 4, 1, 0, 0, 0, 0, 2, 8, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 4, 0, 0, 0, 0, 2, 2, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 1, 1, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 8, 2, 0, 0, 1, 4, 0, 0, 1, 1, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 2, 8, 0, 0, 0, 4, 1, 0, 0, 1, 1, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 8, 2, 0, 0, 1, 4, 0, 0, 1, 1, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 2, 8, 0, 0, 0, 4, 1, 0, 0, 1, 1, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 8, 2, 0, 0, 1, 4, 0, 0, 1, 1, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 2, 8, 1, 0, 0, 4, 1, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 2, 2, 0, 0, 8, 4, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 2, 8, 0, 0, 2, 1, 1, 0, 0, 4, 1, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 8, 2, 0, 0, 1, 1, 0, 0, 1, 4, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 2, 8, 0, 0, 0, 1, 1, 0, 0, 4, 1, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 8, 2, 0, 0, 1, 1, 0, 0, 1, 4, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 2, 8, 0, 0, 0, 1, 1, 0, 0, 4, 1, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 8, 2, 0, 0, 1, 1, 0, 0, 1, 4, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 2, 8, 1, 0, 0, 1, 1, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 8, 2, 0, 0, 8, 1, 0, 0, 1, 4, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 8, 0, 0, 2, 0, 0, 0, 0, 4, 1, 1, 1, 0, 0, 0, 0, 8, 2, 2, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 1, 1, 0, 0, 0, 0, 8, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 4, 1, 0, 0, 0, 0, 2, 8, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 4, 0, 0, 0, 0, 2, 2, 8, 8, 0, 0, 0, 0, 24, 8, 4, 8, 8, 4, 3, 4, 32,12,12,32, 12, 4, 4,12, 32,12, 4,12, 8,24, 8, 4, 4, 8, 4, 3, 32,32,12,12, 12,12, 4, 4, 12,32,12, 4, 4, 8,24, 8, 3, 4, 8, 4, 12,32,32,12, 4,12,12, 4, 4,12,32,12, 8, 4, 8,24, 4, 3, 4, 8, 12,12,32,32, 4, 4,12,12, 12, 4,12,32, 8, 4, 3, 4, 24, 8, 4, 8, 12, 4, 4,12, 32,12,12,32, 32,12, 4,12, 4, 8, 4, 3, 8,24, 8, 4, 12,12, 4, 4, 32,32,12,12, 12,32,12, 4, 3, 4, 8, 4, 4, 8,24, 8, 4,12,12, 4, 12,32,32,12, 4,12,32,12, 4, 3, 4, 8, 8, 4, 8,24, 4, 4,12,12, 12,12,32,32, 12, 4,12,32 ], [NNODE(13),NCELLNODE(GEOMTYPE(13))])
 
integer, dimension(ncellnodepercell(celltype(1)), nip(1)), parameter element::cell1 = reshape([ 1,2,3 ], [NCELLNODEPERCELL(CELLTYPE(1)),NIP(1)])
 
integer, dimension(ncellnodepercell(celltype(2)), nip(2)), parameter element::cell2 = reshape([ 1, 4, 7, 6, 2, 5, 7, 4, 3, 6, 7, 5 ], [NCELLNODEPERCELL(CELLTYPE(2)),NIP(2)])
 
integer, dimension(ncellnodepercell(celltype(3)), nip(3)), parameter element::cell3 = reshape([ 1, 5, 9, 8, 5, 2, 6, 9, 8, 9, 7, 4, 9, 6, 3, 7 ], [NCELLNODEPERCELL(CELLTYPE(3)),NIP(3)])
 
integer, dimension(ncellnodepercell(celltype(4)), nip(4)), parameter element::cell4 = reshape([ 1, 5,13,12, 5, 6,14,13, 6, 2, 7,14, 12,13,16,11, 13,14,15,16, 14, 7, 8,15, 11,16,10, 4, 16,15, 9,10, 15, 8, 3, 9 ], [NCELLNODEPERCELL(CELLTYPE(4)),NIP(4)])
 
integer, dimension(ncellnodepercell(celltype(5)), nip(5)), parameter element::cell5 = reshape([ 1, 2, 3, 4 ], [NCELLNODEPERCELL(CELLTYPE(5)),NIP(5)])
 
integer, dimension(ncellnodepercell(celltype(6)), nip(6)), parameter element::cell6 = reshape([ 1, 5,11, 7, 8,12,15,14, 5, 2, 6,11,12, 9,13,15, 7,11, 6, 3,14,15,13,10, 8,12,15, 4, 4, 9,13,10 ], [NCELLNODEPERCELL(CELLTYPE(6)),NIP(6)])
 
integer, dimension(ncellnodepercell(celltype(7)), nip(7)), parameter element::cell7 = reshape([ 1, 7,16, 9,10,17,21,19, 7, 2, 8,16,17,11,18,21, 9,16, 8, 3,19,21,18,12, 10,17,21,19, 4,13,20,15, 17,11,18,21,13, 5,14,20, 19,21,18,12,15,20,14, 6 ], [NCELLNODEPERCELL(CELLTYPE(7)),NIP(7)])
 
integer, dimension(ncellnodepercell(celltype(8)), nip(8)), parameter element::cell8 = reshape([ 1, 2, 3, 4, 5, 6, 7, 8 ], [NCELLNODEPERCELL(CELLTYPE(8)),NIP(8)])
 
integer, dimension(ncellnodepercell(celltype(9)), nip(9)), parameter element::cell9 = reshape([ 1, 9,21,12,17,22,27,25, 9, 2,10,21,22,18,23,27, 12,21,11, 4,25,27,24,20, 21,10, 3,11,27,23,19,24, 17,22,27,25, 5,13,26,16, 22,18,23,27,13, 6,14,26, 25,27,24,20,16,26,15, 8, 27,23,19,24,26,14, 7,15 ], [NCELLNODEPERCELL(CELLTYPE(9)),NIP(9)])
 
integer, dimension(ncellnodepercell(celltype(10)), nip(10)), parameter element::cell10 = reshape([ 1, 9,33,16,17,37,57,44, 9,10,34,33,37,38,58,57, 10, 2,11,34,38,18,39,58, 16,33,36,15,44,57,60,43, 33,34,35,36,57,58,59,60, 34,11,12,35,58,39,40,59, 15,36,14, 4,43,60,42,20, 36,35,13,14,60,59,41,42, 35,12, 3,13,59,40,19,41, 17,37,57,44,21,45,61,52, 37,38,58,57,45,46,62,61, 38,18,39,58,46,22,47,62, 44,57,60,43,52,61,64,51, 57,58,59,60,61,62,63,64, 58,39,40,59,62,47,48,63, 43,60,42,20,51,64,50,24, 60,59,41,42,64,63,49,50, 59,40,19,41,63,48,23,49, 21,45,61,52, 5,25,53,32, 45,46,62,61,25,26,54,53, 46,22,47,62,26, 6,27,54, 52,61,64,51,32,53,56,31, 61,62,63,64,53,54,55,56, 62,47,48,63,54,27,28,55, 51,64,50,24,31,56,30, 8, 64,63,49,50,56,55,29,30, 63,48,23,49,55,28, 7,29 ], [NCELLNODEPERCELL(CELLTYPE(10)),NIP(10)])
 
integer, dimension(ncellnodepercellface(1), nipneighbor(1)), parameter element::cellface1 = reshape([ 2,3, 3,1, 1,2 ], [NCELLNODEPERCELLFACE(1),NIPNEIGHBOR(1)])
 
integer, dimension(ncellnodepercellface(2), nipneighbor(2)), parameter element::cellface2 = reshape([ 2,3, 4,1, 3,4, 1,2 ], [NCELLNODEPERCELLFACE(2),NIPNEIGHBOR(2)])
 
integer, dimension(ncellnodepercellface(3), nipneighbor(3)), parameter element::cellface3 = reshape([ 1,3,2, 1,2,4, 2,3,4, 1,4,3 ], [NCELLNODEPERCELLFACE(3),NIPNEIGHBOR(3)])
 
integer, dimension(ncellnodepercellface(4), nipneighbor(4)), parameter element::cellface4 = reshape([ 2,3,7,6, 4,1,5,8, 3,4,8,7, 1,2,6,5, 5,6,7,8, 1,4,3,2 ], [NCELLNODEPERCELLFACE(4),NIPNEIGHBOR(4)])
 
integer(hid_t) results::resultsfile
 
integer, protected geometry_plastic_nonlocal::geometry_plastic_nonlocal_nipneighbors
 
integer, dimension(:,:,:,:), allocatable, protected geometry_plastic_nonlocal::geometry_plastic_nonlocal_ipneighborhood
 6 or less neighboring IPs as [element ID, IP ID, face ID that point to me] More...
 
real(preal), dimension(:,:), allocatable, protected geometry_plastic_nonlocal::geometry_plastic_nonlocal_ipvolume0
 volume associated with IP (initially!) More...
 
real(preal), dimension(:,:,:), allocatable, protected geometry_plastic_nonlocal::geometry_plastic_nonlocal_iparea0
 area of interface to neighboring IP (initially!) More...
 
real(preal), dimension(:,:,:,:), allocatable, protected geometry_plastic_nonlocal::geometry_plastic_nonlocal_ipareanormal0
 area normal of interface to neighboring IP (initially!) More...
 
integer, public, protected discretization::discretization_nip
 
integer, public, protected discretization::discretization_nelem
 
integer, dimension(:), allocatable, public, protected discretization::discretization_homogenizationat
 
integer, dimension(:), allocatable, public, protected discretization::discretization_microstructureat
 
real(preal), dimension(:,:), allocatable, public, protected discretization::discretization_ipcoords0
 
real(preal), dimension(:,:), allocatable, public, protected discretization::discretization_ipcoords
 
real(preal), dimension(:,:), allocatable, public, protected discretization::discretization_nodecoords0
 
real(preal), dimension(:,:), allocatable, public, protected discretization::discretization_nodecoords
 
integer discretization::discretization_sharednodesbegin
 
type(tcellnodedefinition), dimension(:), allocatable discretization_marc::cellnodedefinition
 
real(preal), public, protected discretization_marc::mesh_unitlength
 physical length of one unit in mesh More...
 
integer, dimension(:), allocatable, public discretization_marc::mesh_fem2damask_elem
 DAMASK element ID for Marc element ID. More...
 
integer, dimension(:), allocatable, public discretization_marc::mesh_fem2damask_node
 DAMASK node ID for Marc node ID. More...
 
character(len= *), parameter, public material::elasticity_hooke_label = 'hooke'
 
character(len= *), parameter, public material::plasticity_none_label = 'none'
 
character(len= *), parameter, public material::plasticity_isotropic_label = 'isotropic'
 
character(len= *), parameter, public material::plasticity_phenopowerlaw_label = 'phenopowerlaw'
 
character(len= *), parameter, public material::plasticity_kinehardening_label = 'kinehardening'
 
character(len= *), parameter, public material::plasticity_dislotwin_label = 'dislotwin'
 
character(len= *), parameter, public material::plasticity_disloucla_label = 'disloucla'
 
character(len= *), parameter, public material::plasticity_nonlocal_label = 'nonlocal'
 
character(len= *), parameter, public material::source_thermal_dissipation_label = 'thermal_dissipation'
 
character(len= *), parameter, public material::source_thermal_externalheat_label = 'thermal_externalheat'
 
character(len= *), parameter, public material::source_damage_isobrittle_label = 'damage_isobrittle'
 
character(len= *), parameter, public material::source_damage_isoductile_label = 'damage_isoductile'
 
character(len= *), parameter, public material::source_damage_anisobrittle_label = 'damage_anisobrittle'
 
character(len= *), parameter, public material::source_damage_anisoductile_label = 'damage_anisoductile'
 
character(len= *), parameter, public material::kinematics_thermal_expansion_label = 'thermal_expansion'
 
character(len= *), parameter, public material::kinematics_cleavage_opening_label = 'cleavage_opening'
 
character(len= *), parameter, public material::kinematics_slipplane_opening_label = 'slipplane_opening'
 
character(len= *), parameter, public material::stiffness_degradation_damage_label = 'damage'
 
character(len= *), parameter, public material::thermal_isothermal_label = 'isothermal'
 
character(len= *), parameter, public material::thermal_adiabatic_label = 'adiabatic'
 
character(len= *), parameter, public material::thermal_conduction_label = 'conduction'
 
character(len= *), parameter, public material::damage_none_label = 'none'
 
character(len= *), parameter, public material::damage_local_label = 'local'
 
character(len= *), parameter, public material::damage_nonlocal_label = 'nonlocal'
 
character(len= *), parameter, public material::homogenization_none_label = 'none'
 
character(len= *), parameter, public material::homogenization_isostrain_label = 'isostrain'
 
character(len= *), parameter, public material::homogenization_rgc_label = 'rgc'
 
@, public material::elasticity_hooke_id
 
@, public material::plasticity_none_id
 
@, public material::plasticity_isotropic_id
 
@, public material::plasticity_phenopowerlaw_id
 
@, public material::plasticity_kinehardening_id
 
@, public material::plasticity_dislotwin_id
 
@, public material::plasticity_disloucla_id
 
@, public material::plasticity_nonlocal_id
 
@, public material::source_thermal_dissipation_id
 
@, public material::source_thermal_externalheat_id
 
@, public material::source_damage_isobrittle_id
 
@, public material::source_damage_isoductile_id
 
@, public material::source_damage_anisobrittle_id
 
@, public material::source_damage_anisoductile_id
 
@, public material::kinematics_cleavage_opening_id
 
@, public material::kinematics_slipplane_opening_id
 
@, public material::kinematics_thermal_expansion_id
 
@, public material::stiffness_degradation_damage_id
 
@, public material::thermal_isothermal_id
 
@, public material::thermal_adiabatic_id
 
@, public material::thermal_conduction_id
 
@, public material::damage_none_id
 
@, public material::damage_local_id
 
@, public material::damage_nonlocal_id
 
@, public material::homogenization_none_id
 
@, public material::homogenization_isostrain_id
 
@, public material::homogenization_rgc_id
 
integer(kind(elasticity_undefined_id)), dimension(:), allocatable, public, protected material::phase_elasticity
 elasticity of each phase More...
 
integer(kind(plasticity_undefined_id)), dimension(:), allocatable, public, protected material::phase_plasticity
 plasticity of each phase More...
 
integer(kind(thermal_isothermal_id)), dimension(:), allocatable, public, protected material::thermal_type
 thermal transport model More...
 
integer(kind(damage_none_id)), dimension(:), allocatable, public, protected material::damage_type
 nonlocal damage model More...
 
integer(kind(homogenization_undefined_id)), dimension(:), allocatable, public, protected material::homogenization_type
 type of each homogenization More...
 
integer, public, protected material::material_nphase
 number of phases More...
 
integer, public, protected material::material_nhomogenization
 number of homogenizations More...
 
integer(kind(source_undefined_id)), dimension(:,:), allocatable, public, protected material::phase_source
 active sources mechanisms of each phase More...
 
integer(kind(source_undefined_id)), dimension(:,:), allocatable, public, protected material::phase_kinematics
 active kinematic mechanisms of each phase More...
 
integer(kind(source_undefined_id)), dimension(:,:), allocatable, public, protected material::phase_stiffnessdegradation
 active stiffness degradation mechanisms of each phase More...
 
integer, public, protected material::homogenization_maxngrains
 max number of grains in any USED homogenization More...
 
integer, dimension(:), allocatable, public, protected material::phase_nsources
 number of source mechanisms active in each phase More...
 
integer, dimension(:), allocatable, public, protected material::phase_nkinematics
 number of kinematic mechanisms active in each phase More...
 
integer, dimension(:), allocatable, public, protected material::phase_nstiffnessdegradations
 number of stiffness degradation mechanisms active in each phase More...
 
integer, dimension(:), allocatable, public, protected material::phase_elasticityinstance
 instance of particular elasticity of each phase More...
 
integer, dimension(:), allocatable, public, protected material::phase_plasticityinstance
 instance of particular plasticity of each phase More...
 
integer, dimension(:), allocatable, public, protected material::homogenization_ngrains
 number of grains in each homogenization More...
 
integer, dimension(:), allocatable, public, protected material::homogenization_typeinstance
 instance of particular type of each homogenization More...
 
integer, dimension(:), allocatable, public, protected material::thermal_typeinstance
 instance of particular type of each thermal transport More...
 
integer, dimension(:), allocatable, public, protected material::damage_typeinstance
 instance of particular type of each nonlocal damage More...
 
real(preal), dimension(:), allocatable, public, protected material::thermal_initialt
 initial temperature per each homogenization More...
 
real(preal), dimension(:), allocatable, public, protected material::damage_initialphi
 initial damage per each homogenization More...
 
integer, dimension(:), allocatable, public, protected material::material_homogenizationat
 homogenization ID of each element (copy of discretization_homogenizationAt) More...
 
integer, dimension(:,:), allocatable, target, public material::material_homogenizationmemberat
 position of the element within its homogenization instance More...
 
integer, dimension(:,:), allocatable, public, protected material::material_phaseat
 phase ID of each element More...
 
integer, dimension(:,:,:), allocatable, public, protected material::material_phasememberat
 position of the element within its phase instance More...
 
type(tplasticstate), dimension(:), allocatable, public material::plasticstate
 
type(tsourcestate), dimension(:), allocatable, public material::sourcestate
 
type(tstate), dimension(:), allocatable, public material::homogstate
 
type(tstate), dimension(:), allocatable, public material::thermalstate
 
type(tstate), dimension(:), allocatable, public material::damagestate
 
integer, dimension(:,:,:), allocatable, public, protected material::material_texture
 texture (index) of each grain,IP,element. Only used by plastic_nonlocal More...
 
type(rotation), dimension(:,:,:), allocatable, public, protected material::material_orientation0
 initial orientation of each grain,IP,element More...
 
logical, dimension(:), allocatable, public, protected material::phase_localplasticity
 flags phases with local constitutive law More...
 
integer, dimension(:), allocatable, private material::microstructure_nconstituents
 number of constituents in each microstructure More...
 
integer, dimension(:,:), allocatable, private material::microstructure_phase
 phase IDs of each microstructure More...
 
integer, dimension(:,:), allocatable, private material::microstructure_texture
 texture IDs of each microstructure More...
 
type(rotation), dimension(:), allocatable, private material::texture_orientation
 Euler angles in material.config (possibly rotated for alignment) More...
 
integer, dimension(:,:), allocatable, target, private material::mappinghomogenizationconst
 mapping from material points to offset in constant state/field More...
 
type(thomogmapping), dimension(:), allocatable, public material::thermalmapping
 mapping for thermal state/fields More...
 
type(thomogmapping), dimension(:), allocatable, public material::damagemapping
 mapping for damage state/fields More...
 
type(group_float), dimension(:), allocatable, public material::temperature
 temperature field More...
 
type(group_float), dimension(:), allocatable, public material::damage
 damage field More...
 
type(group_float), dimension(:), allocatable, public material::temperaturerate
 temperature change rate field More...
 
integer, dimension(2), parameter lattice::fcc_nslipsystem = [12, 6]
 
integer, dimension(1), parameter lattice::fcc_ntwinsystem = [12]
 
integer, dimension(1), parameter lattice::fcc_ntranssystem = [12]
 
integer, dimension(1), parameter lattice::fcc_ncleavagesystem = [3]
 
integer, parameter lattice::fcc_nslip = sum(FCC_NSLIPSYSTEM)
 total # of slip systems for fcc More...
 
integer, parameter lattice::fcc_ntwin = sum(FCC_NTWINSYSTEM)
 total # of twin systems for fcc More...
 
integer, parameter lattice::fcc_ntrans = sum(FCC_NTRANSSYSTEM)
 total # of transformation systems for fcc More...
 
integer, parameter lattice::fcc_ncleavage = sum(FCC_NCLEAVAGESYSTEM)
 total # of cleavage systems for fcc More...
 
real(preal), dimension(3+3, fcc_nslip), parameter lattice::fcc_systemslip = reshape(real([ 0, 1,-1, 1, 1, 1, -1, 0, 1, 1, 1, 1, 1,-1, 0, 1, 1, 1, 0,-1,-1, -1,-1, 1, 1, 0, 1, -1,-1, 1, -1, 1, 0, -1,-1, 1, 0,-1, 1, 1,-1,-1, -1, 0,-1, 1,-1,-1, 1, 1, 0, 1,-1,-1, 0, 1, 1, -1, 1,-1, 1, 0,-1, -1, 1,-1, -1,-1, 0, -1, 1,-1, 1, 1, 0, 1,-1, 0, 1,-1, 0, 1, 1, 0, 1, 0, 1, 1, 0,-1, 1, 0,-1, 1, 0, 1, 0, 1, 1, 0, 1,-1, 0, 1,-1, 0, 1, 1 ], pReal), shape(FCC_SYSTEMSLIP))
 Slip system <110>{111} directions. Sorted according to Eisenlohr & Hantcherli. More...
 
real(preal), dimension(3+3, fcc_ntwin), parameter lattice::fcc_systemtwin = reshape(real( [ -2, 1, 1, 1, 1, 1, 1,-2, 1, 1, 1, 1, 1, 1,-2, 1, 1, 1, 2,-1, 1, -1,-1, 1, -1, 2, 1, -1,-1, 1, -1,-1,-2, -1,-1, 1, -2,-1,-1, 1,-1,-1, 1, 2,-1, 1,-1,-1, 1,-1, 2, 1,-1,-1, 2, 1,-1, -1, 1,-1, -1,-2,-1, -1, 1,-1, -1, 1, 2, -1, 1,-1 ], pReal), shape(FCC_SYSTEMTWIN))
 Twin system <112>{111} directions. Sorted according to Eisenlohr & Hantcherli. More...
 
integer, dimension(2, fcc_ntwin), parameter, public lattice::lattice_fcc_twinnucleationslippair = reshape( [ 2,3, 1,3, 1,2, 5,6, 4,6, 4,5, 8,9, 7,9, 7,8, 11,12, 10,12, 10,11 ], shape(lattice_FCC_TWINNUCLEATIONSLIPPAIR))
 
real(preal), dimension(3+3, fcc_ncleavage), parameter lattice::fcc_systemcleavage = reshape(real([ 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 ], pReal), shape(FCC_SYSTEMCLEAVAGE))
 
integer, dimension(2), parameter lattice::bcc_nslipsystem = [12, 12]
 
integer, dimension(1), parameter lattice::bcc_ntwinsystem = [12]
 
integer, dimension(1), parameter lattice::bcc_ncleavagesystem = [3]
 
integer, parameter lattice::bcc_nslip = sum(BCC_NSLIPSYSTEM)
 total # of slip systems for bcc More...
 
integer, parameter lattice::bcc_ntwin = sum(BCC_NTWINSYSTEM)
 total # of twin systems for bcc More...
 
integer, parameter lattice::bcc_ncleavage = sum(BCC_NCLEAVAGESYSTEM)
 total # of cleavage systems for bcc More...
 
real(preal), dimension(3+3, bcc_nslip), parameter lattice::bcc_systemslip = reshape(real([ 1,-1, 1, 0, 1, 1, -1,-1, 1, 0, 1, 1, 1, 1, 1, 0,-1, 1, -1, 1, 1, 0,-1, 1, -1, 1, 1, 1, 0, 1, -1,-1, 1, 1, 0, 1, 1, 1, 1, -1, 0, 1, 1,-1, 1, -1, 0, 1, -1, 1, 1, 1, 1, 0, -1, 1,-1, 1, 1, 0, 1, 1, 1, -1, 1, 0, 1, 1,-1, -1, 1, 0, -1, 1, 1, 2, 1, 1, 1, 1, 1, -2, 1, 1, 1, 1,-1, 2,-1, 1, 1,-1, 1, 2, 1,-1, 1,-1, 1, 1, 2, 1, 1, 1,-1, -1, 2, 1, 1, 1, 1, 1,-2, 1, -1, 1, 1, 1, 2,-1, 1, 1,-1, 1, 1, 2, 1,-1, 1, -1, 1, 2, -1, 1, 1, 1,-1, 2, 1, 1, 1, 1, 1,-2 ], pReal), shape(BCC_SYSTEMSLIP))
 
real(preal), dimension(3+3, bcc_ntwin), parameter lattice::bcc_systemtwin = reshape(real([ -1, 1, 1, 2, 1, 1, 1, 1, 1, -2, 1, 1, 1, 1,-1, 2,-1, 1, 1,-1, 1, 2, 1,-1, 1,-1, 1, 1, 2, 1, 1, 1,-1, -1, 2, 1, 1, 1, 1, 1,-2, 1, -1, 1, 1, 1, 2,-1, 1, 1,-1, 1, 1, 2, 1,-1, 1, -1, 1, 2, -1, 1, 1, 1,-1, 2, 1, 1, 1, 1, 1,-2 ], pReal), shape(BCC_SYSTEMTWIN))
 
real(preal), dimension(3+3, bcc_ncleavage), parameter lattice::bcc_systemcleavage = reshape(real([ 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 ], pReal), shape(BCC_SYSTEMCLEAVAGE))
 
integer, dimension(6), parameter lattice::hex_nslipsystem = [3, 3, 3, 6, 12, 6]
 
integer, dimension(4), parameter lattice::hex_ntwinsystem = [6, 6, 6, 6]
 
integer, parameter lattice::hex_nslip = sum(HEX_NSLIPSYSTEM)
 total # of slip systems for hex More...
 
integer, parameter lattice::hex_ntwin = sum(HEX_NTWINSYSTEM)
 total # of twin systems for hex More...
 
real(preal), dimension(4+4, hex_nslip), parameter lattice::hex_systemslip = reshape(real([ 2, -1, -1, 0, 0, 0, 0, 1, -1, 2, -1, 0, 0, 0, 0, 1, -1, -1, 2, 0, 0, 0, 0, 1, 2, -1, -1, 0, 0, 1, -1, 0, -1, 2, -1, 0, -1, 0, 1, 0, -1, -1, 2, 0, 1, -1, 0, 0, -1, 1, 0, 0, 1, 1, -2, 0, 0, -1, 1, 0, -2, 1, 1, 0, 1, 0, -1, 0, 1, -2, 1, 0, -1, 2, -1, 0, 1, 0, -1, 1, -2, 1, 1, 0, 0, 1, -1, 1, -1, -1, 2, 0, -1, 1, 0, 1, 1, -2, 1, 0, -1, 0, 1, 1, 2, -1, -1, 0, 0, -1, 1, 1, 1, 1, -2, 0, 1, -1, 0, 1, -2, 1, 1, 3, 1, 0, -1, 1, -1, -1, 2, 3, 1, 0, -1, 1, -1, -1, 2, 3, 0, 1, -1, 1, 1, -2, 1, 3, 0, 1, -1, 1, 1, -2, 1, 3, -1, 1, 0, 1, 2, -1, -1, 3, -1, 1, 0, 1, 2, -1, -1, 3, -1, 0, 1, 1, 1, 1, -2, 3, -1, 0, 1, 1, 1, 1, -2, 3, 0, -1, 1, 1, -1, 2, -1, 3, 0, -1, 1, 1, -1, 2, -1, 3, 1, -1, 0, 1, -2, 1, 1, 3, 1, -1, 0, 1, -1, -1, 2, 3, 1, 1, -2, 2, 1, -2, 1, 3, -1, 2, -1, 2, 2, -1, -1, 3, -2, 1, 1, 2, 1, 1, -2, 3, -1, -1, 2, 2, -1, 2, -1, 3, 1, -2, 1, 2, -2, 1, 1, 3, 2, -1, -1, 2 ], pReal), shape(HEX_SYSTEMSLIP))
 slip systems for hex, sorted by P. Eisenlohr CCW around starting next to a_1 axis More...
 
real(preal), dimension(4+4, hex_ntwin), parameter lattice::hex_systemtwin = reshape(real([ -1, 0, 1, 1, 1, 0, -1, 2, 0, -1, 1, 1, 0, 1, -1, 2, 1, -1, 0, 1, -1, 1, 0, 2, 1, 0, -1, 1, -1, 0, 1, 2, 0, 1, -1, 1, 0, -1, 1, 2, -1, 1, 0, 1, 1, -1, 0, 2, -1, -1, 2, 6, 1, 1, -2, 1, 1, -2, 1, 6, -1, 2, -1, 1, 2, -1, -1, 6, -2, 1, 1, 1, 1, 1, -2, 6, -1, -1, 2, 1, -1, 2, -1, 6, 1, -2, 1, 1, -2, 1, 1, 6, 2, -1, -1, 1, 1, 0, -1, -2, 1, 0, -1, 1, 0, 1, -1, -2, 0, 1, -1, 1, -1, 1, 0, -2, -1, 1, 0, 1, -1, 0, 1, -2, -1, 0, 1, 1, 0, -1, 1, -2, 0, -1, 1, 1, 1, -1, 0, -2, 1, -1, 0, 1, 1, 1, -2, -3, 1, 1, -2, 2, -1, 2, -1, -3, -1, 2, -1, 2, -2, 1, 1, -3, -2, 1, 1, 2, -1, -1, 2, -3, -1, -1, 2, 2, 1, -2, 1, -3, 1, -2, 1, 2, 2, -1, -1, -3, 2, -1, -1, 2 ], pReal), shape(HEX_SYSTEMTWIN))
 twin systems for hex, sorted by P. Eisenlohr CCW around starting next to a_1 axis More...
 
integer, dimension(13), parameter lattice::bct_nslipsystem = [2, 2, 2, 4, 2, 4, 2, 2, 4, 8, 4, 8, 8 ]
 
integer, parameter lattice::bct_nslip = sum(BCT_NSLIPSYSTEM)
 total # of slip systems for bct More...
 
real(preal), dimension(3+3, bct_nslip), parameter lattice::bct_systemslip = reshape(real([ 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, -1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1,-1, 1, 1, 1, 0, 1,-1,-1, 1, 1, 0, -1,-1,-1, -1, 1, 0, -1,-1, 1, -1, 1, 0, 1, -1, 0, 1, 1, 0, 1, 1, 0, 1,-1, 0, 0, 1, 1, 1, 0, 0, 0,-1, 1, 1, 0, 0, -1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, -1, 1, 0, 0, 0, 1, 0, 1,-1, 0, 1, 1, 0,-1,-1, 0,-1, 1, -1, 0,-1, -1, 0, 1, 1, 0,-1, 1, 0, 1, 1,-1, 1, 0, 1, 1, 1, 1,-1, 0, 1, 1, 1, 1, 1, 0, 1,-1, -1, 1, 1, 0, 1,-1, 1,-1,-1, 1, 0, 1, -1,-1, 1, 1, 0, 1, 1, 1, 1, 1, 0,-1, 1,-1, 1, 1, 0,-1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1,-1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,-1, 0, 1,-1, 2, 1, 1, 0,-1,-1, 2,-1, 1, 1, 0,-1, 1, 2, 1, -1, 0,-1, -1, 2, 1, 0, 1,-1, -2, 1, 1, 0,-1,-1, -2,-1, 1, -1, 0,-1, -1,-2, 1, 1, 0,-1, 1,-2, 1, -1, 1, 1, 2, 1, 1, -1,-1, 1, 2,-1, 1, 1,-1, 1, 1, 2, 1, -1,-1, 1, -1, 2, 1, 1, 1, 1, -2, 1, 1, 1,-1, 1, -2,-1, 1, -1, 1, 1, -1,-2, 1, 1, 1, 1, 1,-2, 1 ], pReal), shape(BCT_SYSTEMSLIP))
 slip systems for bct sorted by Bieler More...
 
integer, dimension(3), parameter lattice::ort_ncleavagesystem = [1, 1, 1]
 
integer, parameter lattice::ort_ncleavage = sum(ORT_NCLEAVAGESYSTEM)
 total # of cleavage systems for ortho More...
 
real(preal), dimension(3+3, ort_ncleavage), parameter lattice::ort_systemcleavage = reshape(real([ 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 ], pReal), shape(ORT_SYSTEMCLEAVAGE))
 
@, public lattice::lattice_iso_id
 
@, public lattice::lattice_fcc_id
 
@, public lattice::lattice_bcc_id
 
@, public lattice::lattice_bct_id
 
@, public lattice::lattice_hex_id
 
@, public lattice::lattice_ort_id
 
real(preal), dimension(:), allocatable, public, protected lattice::lattice_mu
 
real(preal), dimension(:), allocatable, public, protected lattice::lattice_nu
 
real(preal), dimension(:), allocatable, public, protected lattice::lattice_damagemobility
 
real(preal), dimension(:), allocatable, public, protected lattice::lattice_massdensity
 
real(preal), dimension(:), allocatable, public, protected lattice::lattice_specificheat
 
real(preal), dimension(:,:,:), allocatable, public, protected lattice::lattice_c66
 
real(preal), dimension(:,:,:), allocatable, public, protected lattice::lattice_thermalconductivity
 
real(preal), dimension(:,:,:), allocatable, public, protected lattice::lattice_damagediffusion
 
integer(kind(lattice_undefined_id)), dimension(:), allocatable, public, protected lattice::lattice_structure
 
integer, dimension(:), allocatable source_thermal_dissipation::source_thermal_dissipation_offset
 which source is my current thermal dissipation mechanism? More...
 
integer, dimension(:), allocatable source_thermal_dissipation::source_thermal_dissipation_instance
 instance of thermal dissipation source mechanism More...
 
type(tparameters), dimension(:), allocatable source_thermal_dissipation::param
 containers of constitutive parameters (len Ninstance) More...
 
integer, dimension(:), allocatable source_thermal_externalheat::source_thermal_externalheat_offset
 which source is my current thermal dissipation mechanism? More...
 
integer, dimension(:), allocatable source_thermal_externalheat::source_thermal_externalheat_instance
 instance of thermal dissipation source mechanism More...
 
type(tparameters), dimension(:), allocatable source_thermal_externalheat::param
 containers of constitutive parameters (len Ninstance) More...
 
integer, dimension(:), allocatable source_damage_isobrittle::source_damage_isobrittle_offset
 
integer, dimension(:), allocatable source_damage_isobrittle::source_damage_isobrittle_instance
 
type(tparameters), dimension(:), allocatable source_damage_isobrittle::param
 containers of constitutive parameters (len Ninstance) More...
 
integer, dimension(:), allocatable source_damage_isoductile::source_damage_isoductile_offset
 which source is my current damage mechanism? More...
 
integer, dimension(:), allocatable source_damage_isoductile::source_damage_isoductile_instance
 instance of damage source mechanism More...
 
type(tparameters), dimension(:), allocatable, private source_damage_isoductile::param
 containers of constitutive parameters (len Ninstance) More...
 
integer, dimension(:), allocatable source_damage_anisobrittle::source_damage_anisobrittle_offset
 which source is my current source mechanism? More...
 
integer, dimension(:), allocatable source_damage_anisobrittle::source_damage_anisobrittle_instance
 instance of source mechanism More...
 
type(tparameters), dimension(:), allocatable source_damage_anisobrittle::param
 containers of constitutive parameters (len Ninstance) More...
 
integer, dimension(:), allocatable source_damage_anisoductile::source_damage_anisoductile_offset
 which source is my current damage mechanism? More...
 
integer, dimension(:), allocatable source_damage_anisoductile::source_damage_anisoductile_instance
 instance of damage source mechanism More...
 
type(tparameters), dimension(:), allocatable, private source_damage_anisoductile::param
 containers of constitutive parameters (len Ninstance) More...
 
integer, dimension(:), allocatable kinematics_cleavage_opening::kinematics_cleavage_opening_instance
 
type(tparameters), dimension(:), allocatable kinematics_cleavage_opening::param
 containers of constitutive parameters (len Ninstance) More...
 
integer, dimension(:), allocatable kinematics_slipplane_opening::kinematics_slipplane_opening_instance
 
type(tparameters), dimension(:), allocatable kinematics_slipplane_opening::param
 containers of constitutive parameters (len Ninstance) More...
 
integer, dimension(:), allocatable kinematics_thermal_expansion::kinematics_thermal_expansion_instance
 
type(tparameters), dimension(:), allocatable kinematics_thermal_expansion::param
 
integer, public, protected constitutive::constitutive_plasticity_maxsizedotstate
 
integer, public, protected constitutive::constitutive_source_maxsizedotstate
 
type(tparameters), dimension(:), allocatable thermal_adiabatic::param
 
type(tparameters), dimension(:), allocatable thermal_conduction::param
 
type(tparameters), dimension(:), allocatable damage_local::param
 
type(tparameters), dimension(:), allocatable damage_nonlocal::param
 
real(preal), dimension(:,:,:,:), allocatable, public homogenization::materialpoint_f0
 def grad of IP at start of FE increment More...
 
real(preal), dimension(:,:,:,:), allocatable, public homogenization::materialpoint_f
 def grad of IP to be reached at end of FE increment More...
 
real(preal), dimension(:,:,:,:), allocatable, public homogenization::materialpoint_p
 first P–K stress of IP More...
 
real(preal), dimension(:,:,:,:,:,:), allocatable, public homogenization::materialpoint_dpdf
 tangent of first P–K stress at IP More...
 
real(preal), dimension(:,:,:,:), allocatable homogenization::materialpoint_subf0
 def grad of IP at beginning of homogenization increment More...
 
real(preal), dimension(:,:,:,:), allocatable homogenization::materialpoint_subf
 def grad of IP to be reached at end of homog inc More...
 
real(preal), dimension(:,:), allocatable homogenization::materialpoint_subfrac
 
real(preal), dimension(:,:), allocatable homogenization::materialpoint_substep
 
real(preal), dimension(:,:), allocatable homogenization::materialpoint_subdt
 
logical, dimension(:,:), allocatable homogenization::materialpoint_requested
 
logical, dimension(:,:), allocatable homogenization::materialpoint_converged
 
logical, dimension(:,:,:), allocatable homogenization::materialpoint_doneandhappy
 
type(tnumerics) homogenization::num
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

allocates all neccessary fields, reads information from material configuration file

Author
Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH
Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH

Isostrain (full constraint Taylor assuption) homogenization scheme

Enumerator
parallel_id 
average_id 

Definition at line 24963 of file DAMASK_marc.f90.

Function/Subroutine Documentation

◆ __damask_marc.f90__()

program __damask_marc.f90__

Dummy plasticity for purely elastic material.

dummy homogenization homogenization scheme for 1 constituent per material point

Author
Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH

Definition at line 16718 of file DAMASK_marc.f90.

References kinetics_slip(), and kinetics_twin().

+ Here is the call graph for this function:

◆ converged()

logical pure function __damask_marc.f90__::converged ( real(preal), dimension(:), intent(in)  residuum,
real(preal), dimension(:), intent(in)  state,
real(preal), dimension(:), intent(in)  atol 
)

determines whether a point is converged

Definition at line 23085 of file DAMASK_marc.f90.

Referenced by integratestateadaptiveeuler(), integratestatefpi(), integratestaterkck45(), and homogenization::materialpoint_stressanditstangent().

+ Here is the caller graph for this function:

◆ cpfem_forward()

subroutine __damask_marc.f90__::cpfem_forward

Forward data for new time increment.

Definition at line 26450 of file DAMASK_marc.f90.

References results::results_addincrement(), and results::results_openjobfile().

Referenced by cpfem_general().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cpfem_general()

subroutine __damask_marc.f90__::cpfem_general ( integer(pint), intent(in)  mode,
logical, intent(in)  parallelExecution,
real(preal), dimension (3,3), intent(in)  ffn,
real(preal), dimension (3,3), intent(in)  ffn1,
real(preal), intent(in)  temperature_inp,
real(preal), intent(in)  dt,
integer(pint), intent(in)  elFE,
integer(pint), intent(in)  ip,
real(preal), dimension(6), intent(out)  cauchyStress,
real(preal), dimension(6,6), intent(out)  jacobian 
)

perform initialization at first call, update variables and call the actual material model

Parameters
[in]ipintegration point number
[in]dttime increment
[in]ffn1deformation gradient for t=t1
[in]modecomputation mode 1: regular computation plus aging of results
[in]temperature_inptemperature
[in]parallelexecutionflag indicating parallel computation of requested IPs
[out]cauchystressstress as 6 vector
[out]jacobianjacobian as 66 tensor (Consistent tangent dcs/dE)
Parameters
ffndeformation gradient for t=t0
elFEFE element number

Definition at line 26246 of file DAMASK_marc.f90.

References cpfem_forward(), crystallite_forward(), debug::debug_cpfem, debug::debug_e, debug::debug_i, debug::debug_jacobianmax, debug::debug_jacobianmaxlocation, debug::debug_jacobianmin, debug::debug_jacobianminlocation, debug::debug_level, debug::debug_levelbasic, debug::debug_levelextensive, debug::debug_levelselective, debug::debug_stressmax, debug::debug_stressmaxlocation, debug::debug_stressmin, debug::debug_stressminlocation, numerics::defgradtolerance, fesolving::fesolving_execelem, fesolving::fesolving_execip, numerics::ijacostiffness, io::io_warning(), material::material_homogenizationat, homogenization::materialpoint_dpdf, homogenization::materialpoint_f, homogenization::materialpoint_f0, homogenization::materialpoint_p, homogenization::materialpoint_stressanditstangent(), math::math_66tosym3333(), math::math_6tosym33(), math::math_delta(), math::math_det33(), math::math_identity2nd(), math::math_sym3333to66(), math::math_sym33to6(), discretization_marc::mesh_fem2damask_elem, material::temperature, fesolving::terminallyill, material::thermal_conduction_id, material::thermal_type, and material::thermalmapping.

Referenced by hypela2(), and interface1to4().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cpfem_init()

subroutine __damask_marc.f90__::cpfem_init

allocate the arrays defined in module CPFEM and initialize them

Definition at line 26224 of file DAMASK_marc.f90.

References debug::debug_cpfem, debug::debug_level, debug::debug_levelbasic, discretization::discretization_nelem, and discretization::discretization_nip.

Referenced by cpfem_initall().

+ Here is the caller graph for this function:

◆ cpfem_initall()

subroutine __damask_marc.f90__::cpfem_initall ( integer(pint), intent(in)  el,
integer(pint), intent(in)  ip 
)

CPFEM engine.

Author
Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH

call (thread safe) all module initializations

Parameters
[in]ipFE integration point number
Parameters
elFE el number

Definition at line 26190 of file DAMASK_marc.f90.

References config::config_init(), constitutive::constitutive_init(), cpfem_init(), crystallite_init(), damask_interface::damask_interface_init(), debug::debug_init(), discretization_marc::discretization_marc_init(), discretization::discretization_nelem, discretization::discretization_nip, hdf5_utilities::hdf5_utilities_init(), homogenization::homogenization_init(), io::io_init(), lattice::lattice_init(), material::material_init(), math::math_init(), numerics::numerics_init(), prec::prec_init(), results::results_init(), and rotations::rotations_init().

Referenced by hypela2(), and interface1to4().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cpfem_results()

subroutine __damask_marc.f90__::cpfem_results ( integer(pint), intent(in)  inc,
real(preal), intent(in)  time 
)

Trigger writing of results.

Definition at line 26460 of file DAMASK_marc.f90.

References constitutive::constitutive_results(), crystallite_results(), discretization::discretization_results(), homogenization::homogenization_results(), results::results_closejobfile(), and results::results_finalizeincrement().

Referenced by interface1to4(), and uedinc().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ crystallite_forward()

subroutine __damask_marc.f90__::crystallite_forward

Forward data after successful increment.

Definition at line 23238 of file DAMASK_marc.f90.

Referenced by cpfem_general(), and getrho0().

+ Here is the caller graph for this function:

◆ crystallite_init()

subroutine __damask_marc.f90__::crystallite_init

crystallite state integration functions and reporting of results

Author
Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH
Pratheek Shanthraj, Max-Planck-Institut für Eisenforschung GmbH
Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
Christoph Kords, Max-Planck-Institut für Eisenforschung GmbH
Chen Zhang, Michigan State University

allocates and initialize per grain variables

Definition at line 21524 of file DAMASK_marc.f90.

References config::config_deallocate(), config::config_numerics, config::config_phase, constitutive::constitutive_dependentstate(), constitutive::constitutive_initialfi(), crystallite_orientations(), crystallite_stress(), crystallite_stresstangent(), discretization::discretization_nelem, discretization::discretization_nip, fesolving::fesolving_execelem, fesolving::fesolving_execip, material::homogenization_maxngrains, material::homogenization_ngrains, integratestateadaptiveeuler(), integratestateeuler(), integratestatefpi(), integratestaterk4(), integratestaterkck45(), io::io_error(), material::material_homogenizationat, material::material_orientation0, material::material_phaseat, math::math_det33(), math::math_i3, math::math_inv33(), numerics::numerics_integrator, material::phase_localplasticity, and numerics::usepingpong.

Referenced by cpfem_initall(), and getrho0().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ crystallite_orientations()

subroutine __damask_marc.f90__::crystallite_orientations

calculates orientations

Definition at line 21972 of file DAMASK_marc.f90.

References fesolving::fesolving_execelem, fesolving::fesolving_execip, material::homogenization_ngrains, material::material_homogenizationat, material::material_phaseat, math::math_rotationalpart(), material::phase_plasticityinstance, and material::plasticstate.

Referenced by crystallite_init(), getrho0(), and homogenization::materialpoint_stressanditstangent().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ crystallite_push33toref()

real(preal) function, dimension(3,3) __damask_marc.f90__::crystallite_push33toref ( integer, intent(in)  ipc,
integer, intent(in)  ip,
integer, intent(in)  el,
real(preal), dimension(3,3), intent(in)  tensor33 
)

Map 2nd order tensor to reference config.

Definition at line 22004 of file DAMASK_marc.f90.

References material::material_orientation0, and math::math_inv33().

Referenced by damage_nonlocal::damage_nonlocal_getdiffusion(), getrho0(), and thermal_conduction::thermal_conduction_getconductivity().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ crystallite_restartread()

subroutine __damask_marc.f90__::crystallite_restartread

Read data for restart.

Definition at line 23197 of file DAMASK_marc.f90.

Referenced by getrho0().

+ Here is the caller graph for this function:

◆ crystallite_restartwrite()

subroutine __damask_marc.f90__::crystallite_restartwrite

Write current restart information (Field and constitutive data) to file.

Definition at line 23156 of file DAMASK_marc.f90.

Referenced by getrho0().

+ Here is the caller graph for this function:

◆ crystallite_results()

subroutine __damask_marc.f90__::crystallite_results

writes crystallite results to HDF5 output file

Definition at line 22024 of file DAMASK_marc.f90.

References config::config_name_phase, lattice::lattice_bcc_id, lattice::lattice_bct_id, lattice::lattice_fcc_id, lattice::lattice_hex_id, lattice::lattice_iso_id, lattice::lattice_ort_id, lattice::lattice_structure, results::results_addgroup(), results::results_closegroup(), select_rotations(), and select_tensors().

Referenced by cpfem_results(), and getrho0().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ crystallite_stress()

logical function, dimension(discretization_nip,discretization_nelem) __damask_marc.f90__::crystallite_stress ( real(preal), intent(in), optional  dummyArgumentToPreventInternalCompilerErrorWithGCC)

calculate stress (P)

Definition at line 21683 of file DAMASK_marc.f90.

References discretization::discretization_nip, fesolving::fesolving_execelem, fesolving::fesolving_execip, material::homogenization_ngrains, material::material_homogenizationat, material::material_phaseat, material::material_phasememberat, math::math_inv33(), material::phase_nsources, material::plasticstate, and material::sourcestate.

Referenced by crystallite_init(), getrho0(), and homogenization::materialpoint_stressanditstangent().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ crystallite_stresstangent()

subroutine __damask_marc.f90__::crystallite_stresstangent

calculate tangent (dPdF)

Definition at line 21836 of file DAMASK_marc.f90.

References constitutive::constitutive_lianditstangents(), constitutive::constitutive_lpanditstangents(), constitutive::constitutive_sanditstangents(), fesolving::fesolving_execelem, fesolving::fesolving_execip, material::homogenization_ngrains, io::io_warning(), material::material_homogenizationat, math::math_3333to99(), math::math_99to3333(), math::math_identity2nd(), math::math_inv33(), math::math_invert(), math::math_mul3333xx3333(), and prec::tol_math_check.

Referenced by crystallite_init(), getrho0(), and homogenization::materialpoint_stressanditstangent().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ damper()

real(preal) pure function integratestatefpi::damper ( real(preal), dimension(:), intent(in)  current,
real(preal), dimension(:), intent(in)  previous,
real(preal), dimension(:), intent(in)  previous2 
)

calculate the damping for correction of state and dot state

Definition at line 22521 of file DAMASK_marc.f90.

Referenced by integratestatefpi().

+ Here is the caller graph for this function:

◆ eigenvectorbasis()

pure real(preal) function, dimension(3,3) math_rotationalpart::eigenvectorbasis ( real(preal), dimension(3,3), intent(in)  m)

eigenvector basis of positive-definite 3x3 matrix

Parameters
[in]mpositive-definite matrix of which the basis is computed

Definition at line 3444 of file DAMASK_marc.f90.

References math::math_clip(), math::math_i3, math::math_invariantssym33(), and math::pi.

Referenced by math::math_rotationalpart().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ equivalentmoduli()

real(preal) function, dimension(2) __damask_marc.f90__::equivalentmoduli ( integer, intent(in)  grainID,
integer, intent(in)  ip,
integer, intent(in)  el 
)

compute the equivalent shear and bulk moduli from the elasticity tensor

Parameters
[in]elelement number
Parameters
ipintegration point number

Definition at line 25796 of file DAMASK_marc.f90.

Referenced by stresspenalty().

+ Here is the caller graph for this function:

◆ flux()

subroutine flux ( real(preal), dimension(2), intent(out)  f,
real(preal), dimension(6), intent(in)  ts,
integer, dimension(10), intent(in)  n,
real(preal), intent(in)  time 
)

calculate internal heat generated due to inelastic energy dissipation

Definition at line 26694 of file DAMASK_marc.f90.

References discretization_marc::mesh_fem2damask_elem, and thermal_conduction::thermal_conduction_getsourceanditstangent().

+ Here is the call graph for this function:

◆ getinterface()

pure integer function, dimension(4) __damask_marc.f90__::getinterface ( integer, intent(in)  iFace,
integer, dimension(3), intent(in)  iGrain3 
)

collect six faces of a grain in 4D (normal and position)

Parameters
[in]igrain3grain ID in 3D array
[in]ifaceface index (1..6) mapped like (-e1,-e2,-e3,+e1,+e2,+e3) or iDir = (-1,-2,-3,1,2,3)

Definition at line 25979 of file DAMASK_marc.f90.

Referenced by graindeformation(), and stresspenalty().

+ Here is the caller graph for this function:

◆ getrho()

real(preal) function, dimension(param(instance)%sum_n_sl,10) __damask_marc.f90__::getrho ( integer, intent(in)  instance,
integer, intent(in)  of,
integer, intent(in)  ip,
integer, intent(in)  el 
)

returns copy of current dislocation densities from state

raw values is rectified

Definition at line 21356 of file DAMASK_marc.f90.

Referenced by kinetics().

+ Here is the caller graph for this function:

◆ getrho0()

real(preal) function, dimension(param(instance)%sum_n_sl,10) __damask_marc.f90__::getrho0 ( integer, intent(in)  instance,
integer, intent(in)  of,
integer, intent(in)  ip,
integer, intent(in)  el 
)

returns copy of current dislocation densities from state

raw values is rectified

Definition at line 21381 of file DAMASK_marc.f90.

References crystallite_forward(), crystallite_init(), crystallite_orientations(), crystallite_push33toref(), crystallite_restartread(), crystallite_restartwrite(), crystallite_results(), crystallite_stress(), and crystallite_stresstangent().

Referenced by kinetics().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ grain1to3()

pure integer function, dimension(3) __damask_marc.f90__::grain1to3 ( integer, intent(in)  grain1,
integer, dimension(3), intent(in)  nGDim 
)

map grain ID from in 1D (global array) to in 3D (local position)

Parameters
[in]grain1grain ID in 1D array

Definition at line 26002 of file DAMASK_marc.f90.

References grain3to1().

Referenced by graindeformation(), and stresspenalty().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ grain3to1()

integer pure function __damask_marc.f90__::grain3to1 ( integer, dimension(3), intent(in)  grain3,
integer, dimension(3), intent(in)  nGDim 
)

map grain ID from in 3D (local position) to in 1D (global array)

Parameters
[in]grain3grain ID in 3D array (pos.x,pos.y,pos.z)

Definition at line 26019 of file DAMASK_marc.f90.

Referenced by grain1to3(), and stresspenalty().

+ Here is the caller graph for this function:

◆ graindeformation()

subroutine __damask_marc.f90__::graindeformation ( real(preal), dimension(:,:,:), intent(out)  F,
real(preal), dimension(:,:), intent(in)  avgF,
integer, intent(in)  instance,
integer, intent(in)  of 
)

calculating the grain deformation gradient (the same with

Parameters
[out]fpartioned F per grain
[in]avgfaveraged F

Definition at line 25831 of file DAMASK_marc.f90.

References getinterface(), grain1to3(), interfacenormal(), and relaxationvector().

+ Here is the call graph for this function:

◆ hypela2()

subroutine hypela2 ( real(preal), dimension(ngens,ngens), intent(out)  d,
real(preal), dimension(ndi+nshear), intent(out)  g,
real(preal), dimension(*), intent(in)  e,
real(preal), dimension(*), intent(in)  de,
real(preal), dimension(ndi+nshear), intent(out)  s,
real(preal), dimension(*), intent(inout)  t,
real(preal), dimension(*), intent(in)  dt,
integer, intent(in)  ngens,
integer, dimension(2), intent(in)  m,
integer, intent(in)  nn,
integer, dimension(2), intent(in)  kcus,
integer, dimension(2), intent(in)  matus,
integer, intent(in)  ndi,
integer, intent(in)  nshear,
real(preal), dimension(ndeg,*), intent(in)  disp,
real(preal), dimension(ndeg,*), intent(in)  dispt,
real(preal), dimension(ncrd,*), intent(in)  coord,
real(preal), dimension(3,3), intent(in)  ffn,
real(preal), dimension(itel,*), intent(in)  frotn,
real(preal), dimension(itel), intent(in)  strechn,
real(preal), dimension(itel,*), intent(in)  eigvn,
real(preal), dimension(3,3), intent(in)  ffn1,
real(preal), dimension(itel,*), intent(in)  frotn1,
real(preal), dimension(itel), intent(in)  strechn1,
real(preal), dimension(itel,*), intent(in)  eigvn1,
integer, intent(in)  ncrd,
integer, intent(in)  itel,
integer, intent(in)  ndeg,
integer, intent(in)  ndm,
integer, intent(in)  nnode,
integer, intent(in)  jtype,
integer, dimension(2), intent(in)  lclass,
integer, intent(in)  ifr,
integer, intent(in)  ifu 
)

This is the MSC.Marc user subroutine for defining material behavior.

(1) F,R,U are only available for continuum and membrane elements (not for

shells and beams).

(2) Use the -> 'Plasticity,3' card(=update+finite+large disp+constant d)

in the parameter section of input deck (updated Lagrangian formulation).

Parameters
[in]ifuset to 1 if stretch has been calculated
[in]lclass(1) element class, (2) 0: displacement, 1: low order Herrmann, 2: high order Herrmann
[in]dtincrement of state variables
[in]strechn1square of principal stretch ratios, lambda(i) at t=n+1
[in]ffn1deformation gradient at t=n+1
[in]eigvn1i principal direction components for j eigenvalues at t=n+1
[in]disptdisplacements at t=n (at assembly, lovl=4) and displacements at t=n+1 (at stress recovery, lovl=6)
[in]coordcoordinates
[in,out]tstate variables (comes in at t=n, must be updated to have state variables at t=n+1)
[out]gchange in stress due to temperature effects
[out]dstress-strain law to be formed
Parameters
etotal elastic strain
deincrement of strain
sstress - should be updated by user
ngenssize of stress-strain law
m(1) user element number, (2) internal element number
nnintegration point number
kcus(1) layer number, (2) internal layer number
matus(1) user material identification number, (2) internal material identification number
ndinumber of direct components
nshearnumber of shear components
dispincremental displacements
ffndeformation gradient at t=n
frotnrotation tensor at t=n
strechnsquare of principal stretch ratios, lambda(i) at t=n
eigvni principal direction components for j eigenvalues at t=n
frotn1rotation tensor at t=n+1
ncrdnumber of coordinates
iteldimension of F and R, either 2 or 3
ndegnumber of degrees of freedom
ndmnot specified in MSC.Marc 2012 Manual D
nnodenumber of nodes per element
jtypeelement type
ifrset to 1 if R has been calculated

Definition at line 26491 of file DAMASK_marc.f90.

References fesolving::calcmode, cpfem_general(), cpfem_initall(), debug::debug_info(), debug::debug_level, debug::debug_levelbasic, debug::debug_marc, debug::debug_reset(), discretization_marc::mesh_fem2damask_elem, damask_interface::symmetricsolver, fesolving::terminallyill, and numerics::usepingpong.

+ Here is the call graph for this function:

◆ integratestateadaptiveeuler()

subroutine __damask_marc.f90__::integratestateadaptiveeuler

integrate stress, state with 1st order Euler method with adaptive step size

Definition at line 22618 of file DAMASK_marc.f90.

References converged(), integratestress(), nonlocalconvergencecheck(), and statejump().

Referenced by crystallite_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ integratestateeuler()

subroutine __damask_marc.f90__::integratestateeuler

integrate state with 1st order explicit Euler method

Definition at line 22544 of file DAMASK_marc.f90.

References integratestress(), nonlocalconvergencecheck(), and statejump().

Referenced by crystallite_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ integratestatefpi()

subroutine __damask_marc.f90__::integratestatefpi

integrate stress, state with adaptive 1st order explicit Euler method using Fixed Point Iteration to adapt the stepsize

Definition at line 22378 of file DAMASK_marc.f90.

References constitutive::constitutive_collectdotstate(), constitutive::constitutive_dependentstate(), converged(), damper(), fesolving::fesolving_execelem, fesolving::fesolving_execip, material::homogenization_ngrains, integratestress(), material::material_homogenizationat, material::material_phaseat, material::material_phasememberat, nonlocalconvergencecheck(), material::phase_nsources, material::plasticstate, material::sourcestate, and statejump().

Referenced by crystallite_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ integratestaterk4()

subroutine __damask_marc.f90__::integratestaterk4

integrate stress, state with 4th order explicit Runge Kutta method

Definition at line 22738 of file DAMASK_marc.f90.

References integratestress(), nonlocalconvergencecheck(), and statejump().

Referenced by crystallite_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ integratestaterkck45()

subroutine __damask_marc.f90__::integratestaterkck45

integrate stress, state with 5th order Runge-Kutta Cash-Karp method with adaptive step size (use 5th order solution to advance = "local extrapolation")

Definition at line 22893 of file DAMASK_marc.f90.

References converged(), integratestress(), nonlocalconvergencecheck(), and statejump().

Referenced by crystallite_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ integratestress()

logical function __damask_marc.f90__::integratestress ( integer, intent(in)  ipc,
integer, intent(in)  ip,
integer, intent(in)  el,
real(preal), intent(in), optional  timeFraction 
)

calculation of stress (P) with time integration based on a residuum in Lp and intermediate acceleration of the Newton-Raphson correction

Definition at line 22154 of file DAMASK_marc.f90.

References constitutive::constitutive_lianditstangents(), constitutive::constitutive_lpanditstangents(), constitutive::constitutive_sanditstangents(), math::math_3333to99(), math::math_33to9(), math::math_9to33(), math::math_det33(), math::math_i3, math::math_identity2nd(), math::math_inv33(), math::math_invert33(), and math::math_mul3333xx3333().

Referenced by integratestateadaptiveeuler(), integratestateeuler(), integratestatefpi(), integratestaterk4(), and integratestaterkck45().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ interface1to4()

pure integer function, dimension(4) __damask_marc.f90__::interface1to4 ( integer, intent(in)  iFace1D,
integer, dimension(3), intent(in)  nGDim 
)

maps interface ID from 1D (global array) into 4D (normal and local position)

Parameters
[in]iface1dinterface ID in 1D array

Definition at line 26080 of file DAMASK_marc.f90.

References cpfem_general(), cpfem_initall(), and cpfem_results().

+ Here is the call graph for this function:

◆ interface4to1()

integer pure function __damask_marc.f90__::interface4to1 ( integer, dimension(4), intent(in)  iFace4D,
integer, dimension(3), intent(in)  nGDim 
)

maps interface ID from 4D (normal and local position) into 1D (global array)

Parameters
[in]iface4dinterface ID in 4D array (n.dir,pos.x,pos.y,pos.z)

Definition at line 26034 of file DAMASK_marc.f90.

Referenced by relaxationvector().

+ Here is the caller graph for this function:

◆ interfacenormal()

pure real(preal) function, dimension(3) __damask_marc.f90__::interfacenormal ( integer, dimension(4), intent(in)  intFace,
integer, intent(in)  instance,
integer, intent(in)  of 
)

identify the normal of an interface

Parameters
[in]intfaceinterface ID in 4D array (normal and position)

Definition at line 25954 of file DAMASK_marc.f90.

Referenced by graindeformation(), stresspenalty(), and surfacecorrection().

+ Here is the caller graph for this function:

◆ kinetics() [1/3]

pure subroutine __damask_marc.f90__::kinetics ( real(preal), dimension(3,3), intent(in)  Mp,
integer, intent(in)  instance,
integer, intent(in)  of,
real(preal), dimension(param(instance)%sum_n_sl), intent(out)  gdot_pos,
real(preal), dimension(param(instance)%sum_n_sl), intent(out)  gdot_neg,
real(preal), dimension(param(instance)%sum_n_sl), intent(out), optional  dgdot_dtau_pos,
real(preal), dimension(param(instance)%sum_n_sl), intent(out), optional  dgdot_dtau_neg 
)

Phenomenological crystal plasticity using a power law formulation for the shear rates and a Voce-type kinematic hardening rule.

Author
Philip Eisenlohr, Michigan State University
Zhuowen Zhao, Michigan State University
Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH

Perform module initialization.

reads in material parameters, allocates arrays, and does sanity checks

Calculate plastic velocity gradient and its tangent.

Calculate the rate of change of microstructure.

Calculate (instantaneous) incremental change of microstructure.

Write results to HDF5 output file.

Calculate shear rates on slip systems and their derivatives with respect to resolved

: Derivatives are calculated only optionally.

Parameters
[in]mpMandel stress

Definition at line 17999 of file DAMASK_marc.f90.

References kinetics_slip(), kinetics_trans(), and kinetics_twin().

Referenced by kinetics(), kinetics_trans(), and kinetics_twin().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ kinetics() [2/3]

pure subroutine __damask_marc.f90__::kinetics ( real(preal), dimension(3,3), intent(in)  Mp,
real(preal), intent(in)  T,
integer, intent(in)  instance,
integer, intent(in)  of,
real(preal), dimension(param(instance)%sum_n_sl), intent(out)  dot_gamma_pos,
real(preal), dimension(param(instance)%sum_n_sl), intent(out)  dot_gamma_neg,
real(preal), dimension(param(instance)%sum_n_sl), intent(out), optional  ddot_gamma_dtau_pos,
real(preal), dimension(param(instance)%sum_n_sl), intent(out), optional  ddot_gamma_dtau_neg,
real(preal), dimension(param(instance)%sum_n_sl), intent(out), optional  tau_pos_out,
real(preal), dimension(param(instance)%sum_n_sl), intent(out), optional  tau_neg_out 
)

crystal plasticity model for bcc metals, especially Tungsten

Author
Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
David Cereceda, Lawrence Livermore National Laboratory
Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH

Perform module initialization.

reads in material parameters, allocates arrays, and does sanity checks

Calculate plastic velocity gradient and its tangent.

Calculate the rate of change of microstructure.

Calculate derived quantities from state.

Write results to HDF5 output file.

Calculate shear rates on slip systems, their derivatives with respect to resolved

Derivatives and resolved stress are calculated only optionally.

Parameters
[in]mpMandel stress
[in]ttemperature

Definition at line 19571 of file DAMASK_marc.f90.

References geometry_plastic_nonlocal::geometry_plastic_nonlocal_iparea0, geometry_plastic_nonlocal::geometry_plastic_nonlocal_ipareanormal0, geometry_plastic_nonlocal::geometry_plastic_nonlocal_ipneighborhood, geometry_plastic_nonlocal::geometry_plastic_nonlocal_ipvolume0, geometry_plastic_nonlocal::geometry_plastic_nonlocal_nipneighbors, getrho(), getrho0(), kinetics(), and stateinit().

+ Here is the call graph for this function:

◆ kinetics() [3/3]

subroutine __damask_marc.f90__::kinetics ( real(preal), dimension(param(instance)%sum_n_sl), intent(out)  v,
real(preal), dimension(param(instance)%sum_n_sl), intent(out)  dv_dtau,
real(preal), dimension(param(instance)%sum_n_sl), intent(out)  dv_dtauNS,
real(preal), dimension(param(instance)%sum_n_sl), intent(in)  tau,
real(preal), dimension(param(instance)%sum_n_sl), intent(in)  tauNS,
real(preal), dimension(param(instance)%sum_n_sl), intent(in)  tauThreshold,
integer, intent(in)  c,
real(preal), intent(in)  Temperature,
integer, intent(in)  instance 
)

calculates kinetics

Parameters
[in]tauthresholdthreshold shear stress
[out]dv_dtaunsvelocity derivative with respect to resolved shear stress (including non Schmid contributions)
Parameters
vvelocity
dv_dtauvelocity derivative with respect to resolved shear stress (without non Schmid contributions)
tauresolved external shear stress (without non Schmid effects)
tauNSresolved external shear stress (including non Schmid effects)
cdislocation character (1:edge, 2:screw)

Definition at line 21241 of file DAMASK_marc.f90.

◆ kinetics_slip() [1/2]

pure subroutine __damask_marc.f90__::kinetics_slip ( real(preal), dimension(3,3), intent(in)  Mp,
integer, intent(in)  instance,
integer, intent(in)  of,
real(preal), dimension(param(instance)%sum_n_sl), intent(out)  gdot_slip_pos,
real(preal), dimension(param(instance)%sum_n_sl), intent(out)  gdot_slip_neg,
real(preal), dimension(param(instance)%sum_n_sl), intent(out), optional  dgdot_dtau_slip_pos,
real(preal), dimension(param(instance)%sum_n_sl), intent(out), optional  dgdot_dtau_slip_neg 
)

module initialization

reads in material parameters, allocates arrays, and does sanity checks

Author
Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH

material subroutine for isotropic plasticity

Isotropic Plasticity which resembles the phenopowerlaw plasticity without resolving the stress on the slip systems. Will give the response of phenopowerlaw for an untextured polycrystal

Perform module initialization.

reads in material parameters, allocates arrays, and does sanity checks

Calculate plastic velocity gradient and its tangent.

Calculate inelastic velocity gradient and its tangent.

Calculate the rate of change of microstructure.

Write results to HDF5 output file.

Author
Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH

phenomenological crystal plasticity formulation using a powerlaw fitting

Perform module initialization.

reads in material parameters, allocates arrays, and does sanity checks

Calculate plastic velocity gradient and its tangent.

asummes that deformation by dislocation glide affects twinned and untwinned volume

Calculate the rate of change of microstructure.

Write results to HDF5 output file.

Calculate shear rates on slip systems and their derivatives with respect to resolved

Derivatives are calculated only optionally.

Parameters
[in]mpMandel stress

Definition at line 17490 of file DAMASK_marc.f90.

Referenced by __damask_marc.f90__(), and kinetics().

+ Here is the caller graph for this function:

◆ kinetics_slip() [2/2]

pure subroutine __damask_marc.f90__::kinetics_slip ( real(preal), dimension(3,3), intent(in)  Mp,
real(preal), intent(in)  T,
integer, intent(in)  instance,
integer, intent(in)  of,
real(preal), dimension(param(instance)%sum_n_sl), intent(out)  dot_gamma_sl,
real(preal), dimension(param(instance)%sum_n_sl), intent(out), optional  ddot_gamma_dtau_slip,
real(preal), dimension(param(instance)%sum_n_sl), intent(out), optional  tau_slip 
)

material subroutine incoprorating dislocation and twinning physics

Author
Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH
Su Leen Wong, Max-Planck-Institut für Eisenforschung GmbH
Nan Jia, Max-Planck-Institut für Eisenforschung GmbH
Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH

to be done

Perform module initialization.

reads in material parameters, allocates arrays, and does sanity checks

Return the homogenized elasticity matrix.

Calculate plastic velocity gradient and its tangent.

Calculate the rate of change of microstructure.

Calculate derived quantities from state.

Write results to HDF5 output file.

Calculate shear rates on slip systems, their derivatives with respect to resolved

Derivatives and resolved stress are calculated only optionally.

Parameters
[in]mpMandel stress
[in]ttemperature

Definition at line 18937 of file DAMASK_marc.f90.

◆ kinetics_trans()

pure subroutine __damask_marc.f90__::kinetics_trans ( real(preal), dimension(3,3), intent(in)  Mp,
real(preal), intent(in)  T,
real(preal), dimension(param(instance)%sum_n_sl), intent(in)  dot_gamma_sl,
integer, intent(in)  instance,
integer, intent(in)  of,
real(preal), dimension(param(instance)%sum_n_tr), intent(out)  dot_gamma_tr,
real(preal), dimension(param(instance)%sum_n_tr), intent(out), optional  ddot_gamma_dtau_trans 
)

Calculate shear rates on transformation systems and their derivatives with respect to.

Derivatives are calculated only optionally.

Parameters
[in]mpMandel stress
[in]ttemperature

Definition at line 19083 of file DAMASK_marc.f90.

References kinetics().

Referenced by kinetics().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ kinetics_twin() [1/2]

pure subroutine __damask_marc.f90__::kinetics_twin ( real(preal), dimension(3,3), intent(in)  Mp,
integer, intent(in)  instance,
integer, intent(in)  of,
real(preal), dimension(param(instance)%sum_n_tw), intent(out)  gdot_twin,
real(preal), dimension(param(instance)%sum_n_tw), intent(out), optional  dgdot_dtau_twin 
)

Calculate shear rates on twin systems and their derivatives with respect to resolved.

Derivatives are calculated only optionally.

Parameters
[in]mpMandel stress

Definition at line 17559 of file DAMASK_marc.f90.

References kinetics().

Referenced by __damask_marc.f90__(), and kinetics().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ kinetics_twin() [2/2]

pure subroutine __damask_marc.f90__::kinetics_twin ( real(preal), dimension(3,3), intent(in)  Mp,
real(preal), intent(in)  T,
real(preal), dimension(param(instance)%sum_n_sl), intent(in)  dot_gamma_sl,
integer, intent(in)  instance,
integer, intent(in)  of,
real(preal), dimension(param(instance)%sum_n_tw), intent(out)  dot_gamma_twin,
real(preal), dimension(param(instance)%sum_n_tw), intent(out), optional  ddot_gamma_dtau_twin 
)

Calculate shear rates on twin systems and their derivatives with respect to resolved.

Derivatives are calculated only optionally.

Parameters
[in]mpMandel stress
[in]ttemperature

Definition at line 19014 of file DAMASK_marc.f90.

◆ lc()

character(len=len(string)) function solverissymmetric::lc ( character(len=*), intent(in)  string)
private

changes characters in string to lower case

copied from IO_lc

Parameters
[in]stringstring to convert

Definition at line 411 of file DAMASK_marc.f90.

Referenced by damask_interface::solverissymmetric().

+ Here is the caller graph for this function:

◆ mapelemtype()

integer function inputread_elemtype::mapelemtype ( character(len=*), intent(in)  what)
private

mapping of Marc element types to internal representation

Definition at line 10626 of file DAMASK_marc.f90.

References io::io_error(), and io::io_lc().

Referenced by discretization_marc::inputread_elemtype().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ nonlocalconvergencecheck()

subroutine __damask_marc.f90__::nonlocalconvergencecheck

sets convergence flag for nonlocal calculations

one non-converged nonlocal sets all other nonlocals to non-converged to trigger cut back

Definition at line 23074 of file DAMASK_marc.f90.

Referenced by integratestateadaptiveeuler(), integratestateeuler(), integratestatefpi(), integratestaterk4(), and integratestaterkck45().

+ Here is the caller graph for this function:

◆ parse_debugandnumericsconfig()

subroutine config_init::parse_debugandnumericsconfig ( type(tpartitionedstringlist), intent(out)  config_list,
character(len=pstringlen), dimension(:), intent(in)  fileContent 
)
private

parses the material.config file

Definition at line 2415 of file DAMASK_marc.f90.

Referenced by config::config_init().

+ Here is the caller graph for this function:

◆ parse_materialconfig()

subroutine config_init::parse_materialconfig ( character(len=pstringlen), dimension(:), intent(out), allocatable  sectionNames,
type(tpartitionedstringlist), dimension(:), intent(inout), allocatable  part,
character(len=pstringlen), intent(inout)  line,
character(len=pstringlen), dimension(:), intent(in)  fileContent 
)
private

parses the material.config file

Definition at line 2363 of file DAMASK_marc.f90.

References io::io_error(), and io::io_gettag().

Referenced by config::config_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ qsort_partition()

integer function math_sort::qsort_partition ( integer, dimension(:,:), intent(inout)  a,
integer, intent(in)  istart,
integer, intent(in)  iend,
integer, intent(in)  sort 
)

Partitioning required for quicksort.

Definition at line 2630 of file DAMASK_marc.f90.

Referenced by math::math_sort().

+ Here is the caller graph for this function:

◆ read_materialconfig()

recursive character(len=pstringlen) function, dimension(:), allocatable config_init::read_materialconfig ( character(len=*), intent(in)  fileName,
integer, intent(in), optional  cnt 
)
private

reads material.config Recursion is triggered by "{path/to/inputfile}" in a line

Parameters
[in]filenamename of the material configuration file
[in]cntrecursion counter
Returns
file content, separated per lines

Definition at line 2281 of file DAMASK_marc.f90.

References io::io_eol, io::io_error(), io::io_warning(), and prec::pstringlen.

Referenced by config::config_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ relaxationvector()

pure real(preal) function, dimension (3) __damask_marc.f90__::relaxationvector ( integer, dimension(4), intent(in)  intFace,
integer, intent(in)  instance,
integer, intent(in)  of 
)

derive average stress and stiffness from constituent quantities

writes results to HDF5 output file

collect relaxation vectors of an interface

Parameters
[in]intfaceset of interface ID in 4D array (normal and position)

Definition at line 25929 of file DAMASK_marc.f90.

References interface4to1().

Referenced by graindeformation().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ select_rotations()

type(rotation) function, dimension(:), allocatable crystallite_results::select_rotations ( type(rotation), dimension(:,:,:), intent(in)  dataset,
integer, intent(in)  instance 
)

select rotations for output

Definition at line 22124 of file DAMASK_marc.f90.

References discretization::discretization_nip, material::homogenization_maxngrains, and material::material_phaseat.

Referenced by crystallite_results().

+ Here is the caller graph for this function:

◆ select_tensors()

real(preal) function, dimension(:,:,:), allocatable crystallite_results::select_tensors ( real(preal), dimension(:,:,:,:,:), intent(in)  dataset,
integer, intent(in)  instance 
)

select tensors for output

Definition at line 22097 of file DAMASK_marc.f90.

References discretization::discretization_nip, and material::material_phaseat.

Referenced by crystallite_results().

+ Here is the caller graph for this function:

◆ stateinit()

subroutine __damask_marc.f90__::stateinit ( type(tinitialparameters)  ini,
integer, intent(in)  phase,
integer, intent(in)  NipcMyPhase 
)

material subroutine for plasticity including dislocation flux

Author
Christoph Kords, Max-Planck-Institut für Eisenforschung GmbH
Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH

module initialization

reads in material parameters, allocates arrays, and does sanity checks

calculates quantities characterizing the microstructure

calculates plastic velocity gradient and its tangent

(instantaneous) incremental change of microstructure

calculates the rate of change of microstructure

Compatibility update @detail Compatibility is defined as normalized product of signed cosine of the angle between the slip

writes results to HDF5 output file

populates the initial dislocation density

Definition at line 21165 of file DAMASK_marc.f90.

Referenced by kinetics().

+ Here is the caller graph for this function:

◆ statejump()

logical function __damask_marc.f90__::statejump ( integer, intent(in)  ipc,
integer, intent(in)  ip,
integer, intent(in)  el 
)

calculates a jump in the state according to the current state and the current stress returns true, if state jump was successfull or not needed. false indicates NaN in delta state

Definition at line 23103 of file DAMASK_marc.f90.

Referenced by integratestateadaptiveeuler(), integratestateeuler(), integratestatefpi(), integratestaterk4(), and integratestaterkck45().

+ Here is the caller graph for this function:

◆ stresspenalty()

subroutine __damask_marc.f90__::stresspenalty ( real(preal), dimension (:,:,:), intent(out)  rPen,
real(preal), dimension (:,:), intent(out)  nMis,
real(preal), dimension (3,3), intent(in)  avgF,
real(preal), dimension (:,:,:), intent(in)  fDef,
integer, intent(in)  ip,
integer, intent(in)  el,
integer, intent(in)  instance,
integer, intent(in)  of 
)

allocates all neccessary fields, reads information from material configuration file

partitions the deformation gradient onto the constituents

derive average stress and stiffness from constituent quantities

Author
Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH
Denny Tjahjanto, Max-Planck-Institut für Eisenforschung GmbH
Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH

Relaxed grain cluster (RGC) homogenization scheme Nconstituents is defined as p x q x r (cluster)

allocates all necessary fields, reads information from material configuration file

partitions the deformation gradient onto the constituents

update the internal state of the homogenization scheme and tell whether "done" and

calculate stress-like penalty due to deformation mismatch

Parameters
[out]rpenstress-like penalty
[out]nmistotal amount of mismatch
[in]fdefdeformation gradients
[in]avgfinitial effective stretch tensor

Definition at line 25613 of file DAMASK_marc.f90.

References equivalentmoduli(), getinterface(), grain1to3(), grain3to1(), interfacenormal(), and surfacecorrection().

+ Here is the call graph for this function:

◆ surfacecorrection()

real(preal) function, dimension(3) __damask_marc.f90__::surfacecorrection ( real(preal), dimension(3,3), intent(in)  avgF,
integer, intent(in)  instance,
integer, intent(in)  of 
)

compute the correction factor accouted for surface evolution (area change) due to

Parameters
[in]avgfaverage F

Definition at line 25765 of file DAMASK_marc.f90.

References interfacenormal().

Referenced by stresspenalty().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ uedinc()

subroutine uedinc ( integer, intent(in)  inc,
integer, intent(in)  incsub 
)

trigger writing of results

uedinc is called before each new increment, not at the end of a converged one. Therefore, storing the last written inc with an 'save' variable is required to avoid writing the

Definition at line 26720 of file DAMASK_marc.f90.

References cpfem_results().

+ Here is the call graph for this function:

◆ uniquerows()

pure integer function buildcells::uniquerows ( integer, dimension(:,:), intent(in)  A)
private

count unique rows (same rows need to be stored consecutively)

Parameters
[in]aarray, rows need to be sorted

Definition at line 10903 of file DAMASK_marc.f90.

Referenced by discretization_marc::buildcells().

+ Here is the caller graph for this function:

◆ volumepenalty()

subroutine __damask_marc.f90__::volumepenalty ( real(preal), dimension (:,:,:), intent(out)  vPen,
real(preal), intent(out)  vDiscrep,
real(preal), dimension (3,3), intent(in)  fAvg,
real(preal), dimension (:,:,:), intent(in)  fDef,
integer, intent(in)  nGrain,
integer, intent(in)  instance,
integer, intent(in)  of 
)

calculate stress-like penalty due to volume discrepancy

Definition at line 25717 of file DAMASK_marc.f90.