DAMASK with grid solvers  Revision: v2.0.3-2204-gdb1f2151
The Düsseldorf Advanced Material Simulation Kit with Grid Solvers
lattice.f90 File Reference

Go to the source code of this file.

Data Types

interface  lattice::lattice_forestprojection_edge
 
interface  lattice::lattice_forestprojection_screw
 

Modules

module  lattice
 contains lattice structure definitions including Schmid matrices for slip, twin, trans,
 

Enumerations

enum  { lattice::lattice_undefined_id }
 

Functions/Subroutines

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...
 

Variables

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