contains lattice structure definitions including Schmid matrices for slip, twin, trans, More...
Data Types | |
interface | lattice_forestprojection_edge |
interface | lattice_forestprojection_screw |
Enumerations | |
enum | { lattice_undefined_id } |
Functions/Subroutines | |
subroutine, public | lattice_init |
Module initialization. More... | |
real(preal) function, dimension(sum(ntwin)), public | lattice_characteristicshear_twin (Ntwin, structure, CoverA) |
Characteristic shear for twinning. More... | |
real(preal) function, dimension(6, 6, sum(ntwin)), public | 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_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_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_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_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_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_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_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_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_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_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_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_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_slip_direction (Nslip, structure, cOverA) |
Slip direction of slip systems (|| b) More... | |
real(preal) function, dimension(3, sum(nslip)), public | lattice_slip_normal (Nslip, structure, cOverA) |
Normal direction of slip systems (|| n) More... | |
real(preal) function, dimension(3, sum(nslip)), public | lattice_slip_transverse (Nslip, structure, cOverA) |
Transverse direction of slip systems ( || t = b x n) More... | |
character(len=:) function, dimension(:), allocatable, public | 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_applylatticesymmetry33 (T, structure) |
Return 3x3 tensor with symmetry according to given crystal structure. More... | |
real(preal) function, dimension(6, 6) | applylatticesymmetryc66 (C66, structure) |
Return stiffness matrix in 6x6 notation with symmetry according to given crystal structure. More... | |
character(len=:) function, dimension(:), allocatable, public | 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)) | slipprojection_transverse (Nslip, structure, cOverA) |
Projection of the transverse direction onto the slip plane. More... | |
real(preal) function, dimension(sum(nslip), sum(nslip)) | slipprojection_direction (Nslip, structure, cOverA) |
Projection of the slip direction onto the slip plane. More... | |
real(preal) function, dimension(3, 3, sum(nslip)) | coordinatesystem_slip (Nslip, structure, cOverA) |
build a local coordinate system on slip systems More... | |
real(preal) function, dimension(sum(reacting_used), sum(acting_used)) | buildinteraction (reacting_used, acting_used, reacting_max, acting_max, values, matrix) |
Populate reduced interaction matrix. More... | |
real(preal) function, dimension(3, 3, sum(active)) | buildcoordinatesystem (active, potential, system, structure, cOverA) |
Build a local coordinate system on slip, twin, trans, cleavage systems. More... | |
subroutine | buildtransformationsystem (Q, S, Ntrans, cOverA, a_fcc, a_bcc) |
Helper function to define transformation systems. More... | |
character(len=:) function, dimension(:), allocatable | getlabels (active, potential, system) |
select active systems as strings More... | |
real(preal) function | equivalent_nu (C, assumption) |
Equivalent Poisson's ratio (ν) More... | |
real(preal) function | equivalent_mu (C, assumption) |
Equivalent shear modulus (μ) More... | |
subroutine | unittest |
check correctness of some lattice functions More... | |
Variables | |
integer, dimension(2), parameter | fcc_nslipsystem = [12, 6] |
integer, dimension(1), parameter | fcc_ntwinsystem = [12] |
integer, dimension(1), parameter | fcc_ntranssystem = [12] |
integer, dimension(1), parameter | fcc_ncleavagesystem = [3] |
integer, parameter | fcc_nslip = sum(FCC_NSLIPSYSTEM) |
total # of slip systems for fcc More... | |
integer, parameter | fcc_ntwin = sum(FCC_NTWINSYSTEM) |
total # of twin systems for fcc More... | |
integer, parameter | fcc_ntrans = sum(FCC_NTRANSSYSTEM) |
total # of transformation systems for fcc More... | |
integer, parameter | fcc_ncleavage = sum(FCC_NCLEAVAGESYSTEM) |
total # of cleavage systems for fcc More... | |
real(preal), dimension(3+3, fcc_nslip), parameter | 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 | 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_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 | 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 | bcc_nslipsystem = [12, 12] |
integer, dimension(1), parameter | bcc_ntwinsystem = [12] |
integer, dimension(1), parameter | bcc_ncleavagesystem = [3] |
integer, parameter | bcc_nslip = sum(BCC_NSLIPSYSTEM) |
total # of slip systems for bcc More... | |
integer, parameter | bcc_ntwin = sum(BCC_NTWINSYSTEM) |
total # of twin systems for bcc More... | |
integer, parameter | bcc_ncleavage = sum(BCC_NCLEAVAGESYSTEM) |
total # of cleavage systems for bcc More... | |
real(preal), dimension(3+3, bcc_nslip), parameter | 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 | 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 | 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 | hex_nslipsystem = [3, 3, 3, 6, 12, 6] |
integer, dimension(4), parameter | hex_ntwinsystem = [6, 6, 6, 6] |
integer, parameter | hex_nslip = sum(HEX_NSLIPSYSTEM) |
total # of slip systems for hex More... | |
integer, parameter | hex_ntwin = sum(HEX_NTWINSYSTEM) |
total # of twin systems for hex More... | |
real(preal), dimension(4+4, hex_nslip), parameter | 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 | 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 | bct_nslipsystem = [2, 2, 2, 4, 2, 4, 2, 2, 4, 8, 4, 8, 8 ] |
integer, parameter | bct_nslip = sum(BCT_NSLIPSYSTEM) |
total # of slip systems for bct More... | |
real(preal), dimension(3+3, bct_nslip), parameter | 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 | ort_ncleavagesystem = [1, 1, 1] |
integer, parameter | ort_ncleavage = sum(ORT_NCLEAVAGESYSTEM) |
total # of cleavage systems for ortho More... | |
real(preal), dimension(3+3, ort_ncleavage), parameter | 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_iso_id |
@, public | lattice_fcc_id |
@, public | lattice_bcc_id |
@, public | lattice_bct_id |
@, public | lattice_hex_id |
@, public | lattice_ort_id |
real(preal), dimension(:), allocatable, public, protected | lattice_mu |
real(preal), dimension(:), allocatable, public, protected | lattice_nu |
real(preal), dimension(:), allocatable, public, protected | lattice_damagemobility |
real(preal), dimension(:), allocatable, public, protected | lattice_massdensity |
real(preal), dimension(:), allocatable, public, protected | lattice_specificheat |
real(preal), dimension(:,:,:), allocatable, public, protected | lattice_c66 |
real(preal), dimension(:,:,:), allocatable, public, protected | lattice_thermalconductivity |
real(preal), dimension(:,:,:), allocatable, public, protected | lattice_damagediffusion |
integer(kind(lattice_undefined_id)), dimension(:), allocatable, public, protected | lattice_structure |
contains lattice structure definitions including Schmid matrices for slip, twin, trans,
|
private |
Enumerator | |
---|---|
lattice_undefined_id |
Definition at line 388 of file lattice.f90.
|
private |
Return stiffness matrix in 6x6 notation with symmetry according to given crystal structure.
J. A. Rayne and B. S. Chandrasekhar Phys. Rev. 120, 1658 Erratum Phys. Rev. 122, 1962
Definition at line 1730 of file lattice.f90.
References io::io_error().
Referenced by lattice_c66_trans(), lattice_init(), and unittest().
|
private |
Build a local coordinate system on slip, twin, trans, cleavage systems.
Order: Direction, plane (normal), and common perpendicular
[in] | potential | # of potential systems per family |
[in] | structure | lattice structure |
active | # of active systems per family |
Definition at line 1987 of file lattice.f90.
References io::io_error(), and math::math_cross().
Referenced by coordinatesystem_slip(), lattice_c66_twin(), lattice_nonschmidmatrix(), lattice_schmidmatrix_cleavage(), lattice_schmidmatrix_slip(), lattice_schmidmatrix_twin(), and unittest().
|
private |
Populate reduced interaction matrix.
[in] | acting_max | max # of acting systems per family for given lattice |
[in] | values | interaction values |
[in] | matrix | interaction types |
reacting_used | # of reacting systems per family as specified in material.config |
acting_used | # of acting systems per family as specified in material.config |
reacting_max | max # of reacting systems per family for given lattice |
Definition at line 1943 of file lattice.f90.
References io::io_error().
Referenced by lattice_interaction_slipbyslip(), lattice_interaction_slipbytrans(), lattice_interaction_slipbytwin(), lattice_interaction_transbytrans(), lattice_interaction_twinbyslip(), and lattice_interaction_twinbytwin().
|
private |
Helper function to define transformation systems.
[out] | s | Eigendeformation tensor for phase transformation |
[in] | a_fcc | lattice parameter a for parent fcc structure |
Q | Total rotation: Q = R*B |
cOverA | c/a for target hex structure |
a_bcc | lattice parameter a for target bcc structure |
Definition at line 2058 of file lattice.f90.
References prec::deq0(), io::io_error(), math::math_cross(), math::math_i3, and math::math_outer().
Referenced by lattice_c66_trans(), and lattice_schmidmatrix_trans().
|
private |
build a local coordinate system on slip systems
Order: Direction, plane (normal), and common perpendicular
[in] | nslip | number of active slip systems per family |
[in] | structure | lattice structure |
[in] | covera | c/a ratio |
Definition at line 1900 of file lattice.f90.
References bcc_nslipsystem, bcc_systemslip, bct_nslipsystem, bct_systemslip, buildcoordinatesystem(), fcc_nslipsystem, fcc_systemslip, hex_nslipsystem, hex_systemslip, and io::io_error().
Referenced by lattice_slip_direction(), lattice_slip_normal(), and lattice_slip_transverse().
|
private |
Equivalent shear modulus (μ)
https://doi.org/10.1143/JPSJ.20.635
[in] | c | Stiffness tensor (Voigt notation) |
[in] | assumption | Assumption ('Voigt' = isostrain, 'Reuss' = isostress) |
Definition at line 2271 of file lattice.f90.
References io::io_error(), io::io_lc(), and math::math_invert().
Referenced by equivalent_nu(), lattice_init(), and unittest().
|
private |
Equivalent Poisson's ratio (ν)
https://doi.org/10.1143/JPSJ.20.635
[in] | c | Stiffness tensor (Voigt notation) |
[in] | assumption | Assumption ('Voigt' = isostrain, 'Reuss' = isostress) |
Definition at line 2239 of file lattice.f90.
References equivalent_mu(), io::io_error(), io::io_lc(), and math::math_invert().
Referenced by lattice_init(), and unittest().
|
private |
select active systems as strings
[in] | potential | # of potential systems per family |
active | # of active systems per family |
Definition at line 2182 of file lattice.f90.
Referenced by lattice_labels_slip(), and lattice_labels_twin().
real(preal) function, dimension(3,3), public lattice::lattice_applylatticesymmetry33 | ( | real(preal), dimension(3,3), intent(in) | T, |
character(len=*), intent(in) | structure | ||
) |
Return 3x3 tensor with symmetry according to given crystal structure.
Definition at line 1692 of file lattice.f90.
References io::io_error().
Referenced by kinematics_thermal_expansion::kinematics_thermal_expansion_init(), and lattice_init().
real(preal) function, dimension(6,6,sum(ntrans)), public lattice::lattice_c66_trans | ( | integer, dimension(:), intent(in) | Ntrans, |
real(preal), dimension(6,6), intent(in) | C_parent66, | ||
character(len=*), intent(in) | structure_target, | ||
real(preal) | cOverA_trans, | ||
real(preal) | a_bcc, | ||
real(preal) | a_fcc | ||
) |
Rotated elasticity matrices for transformation in 66-vector notation.
[in] | ntrans | number of active twin systems per family |
[in] | structure_target | lattice structure |
Definition at line 665 of file lattice.f90.
References applylatticesymmetryc66(), buildtransformationsystem(), io::io_error(), and prec::tol_math_check.
real(preal) function, dimension(6,6,sum(ntwin)), public lattice::lattice_c66_twin | ( | integer, dimension(:), intent(in) | Ntwin, |
real(preal), dimension(6,6), intent(in) | C66, | ||
character(len=*), intent(in) | structure, | ||
real(preal), intent(in) | CoverA | ||
) |
Rotated elasticity matrices for twinning in 66-vector notation.
[in] | ntwin | number of active twin systems per family |
[in] | structure | lattice structure |
[in] | c66 | unrotated parent stiffness matrix |
[in] | covera | c/a ratio |
Definition at line 624 of file lattice.f90.
References bcc_nslipsystem, bcc_systemtwin, buildcoordinatesystem(), fcc_nslipsystem, fcc_systemtwin, hex_nslipsystem, hex_systemtwin, io::io_error(), and math::pi.
real(preal) function, dimension(sum(ntwin)), public lattice::lattice_characteristicshear_twin | ( | integer, dimension(:), intent(in) | Ntwin, |
character(len=*), intent(in) | structure, | ||
real(preal), intent(in) | CoverA | ||
) |
Characteristic shear for twinning.
[in] | ntwin | number of active twin systems per family |
[in] | structure | lattice structure |
[in] | covera | c/a ratio |
Definition at line 547 of file lattice.f90.
References hex_ntwin, hex_ntwinsystem, and io::io_error().
subroutine, public lattice::lattice_init |
Module initialization.
Definition at line 457 of file lattice.f90.
References applylatticesymmetryc66(), config::config_phase, equivalent_mu(), equivalent_nu(), io::io_error(), lattice_applylatticesymmetry33(), lattice_bcc_id, lattice_bct_id, lattice_c66, lattice_damagediffusion, lattice_damagemobility, lattice_fcc_id, lattice_hex_id, lattice_iso_id, lattice_massdensity, lattice_mu, lattice_nu, lattice_ort_id, lattice_specificheat, lattice_structure, lattice_thermalconductivity, lattice_undefined_id, math::math_sym3333to66(), math::math_voigt66to3333(), prec::tol_math_check, and io::unittest().
Referenced by cpfem2::cpfem_initall().
real(preal) function, dimension(sum(nslip),sum(nslip)), public lattice::lattice_interaction_slipbyslip | ( | integer, dimension(:), intent(in) | Nslip, |
real(preal), dimension(:), intent(in) | interactionValues, | ||
character(len=*), intent(in) | structure | ||
) |
Slip-slip interaction matrix details only active slip systems are considered.
[in] | nslip | number of active slip systems per family |
[in] | interactionvalues | values for slip-slip interaction |
[in] | structure | lattice structure |
Definition at line 775 of file lattice.f90.
References bcc_nslipsystem, bct_nslipsystem, buildinteraction(), fcc_nslipsystem, hex_nslipsystem, and io::io_error().
real(preal) function, dimension(sum(nslip),sum(ntrans)), public lattice::lattice_interaction_slipbytrans | ( | integer, dimension(:), intent(in) | Nslip, |
integer, dimension(:), intent(in) | Ntrans, | ||
real(preal), dimension(:), intent(in) | interactionValues, | ||
character(len=*), intent(in) | structure | ||
) |
Slip-trans interaction matrix details only active slip and trans systems are considered.
[in] | ntrans | number of active trans systems per family |
[in] | interactionvalues | values for slip-trans interaction |
[in] | structure | lattice structure (parent crystal) |
Nslip | number of active slip systems per family |
Definition at line 1281 of file lattice.f90.
References buildinteraction(), fcc_nslipsystem, fcc_ntranssystem, and io::io_error().
real(preal) function, dimension(sum(nslip),sum(ntwin)), public lattice::lattice_interaction_slipbytwin | ( | integer, dimension(:), intent(in) | Nslip, |
integer, dimension(:), intent(in) | Ntwin, | ||
real(preal), dimension(:), intent(in) | interactionValues, | ||
character(len=*), intent(in) | structure | ||
) |
Slip-twin interaction matrix details only active slip and twin systems are considered.
[in] | ntwin | number of active twin systems per family |
[in] | interactionvalues | values for slip-twin interaction |
[in] | structure | lattice structure |
Nslip | number of active slip systems per family |
Definition at line 1141 of file lattice.f90.
References bcc_nslipsystem, bcc_ntwinsystem, buildinteraction(), fcc_nslipsystem, fcc_ntwinsystem, hex_nslipsystem, hex_ntwinsystem, and io::io_error().
real(preal) function, dimension(sum(ntrans),sum(ntrans)), public lattice::lattice_interaction_transbytrans | ( | integer, dimension(:), intent(in) | Ntrans, |
real(preal), dimension(:), intent(in) | interactionValues, | ||
character(len=*), intent(in) | structure | ||
) |
Trans-trans interaction matrix details only active trans systems are considered.
[in] | ntrans | number of active trans systems per family |
[in] | interactionvalues | values for trans-trans interaction |
[in] | structure | lattice structure (parent crystal) |
Definition at line 1096 of file lattice.f90.
References buildinteraction(), fcc_ntranssystem, and io::io_error().
real(preal) function, dimension(sum(ntwin),sum(nslip)), public lattice::lattice_interaction_twinbyslip | ( | integer, dimension(:), intent(in) | Ntwin, |
integer, dimension(:), intent(in) | Nslip, | ||
real(preal), dimension(:), intent(in) | interactionValues, | ||
character(len=*), intent(in) | structure | ||
) |
Twin-slip interaction matrix details only active twin and slip systems are considered.
[in] | nslip | number of active slip systems per family |
[in] | interactionvalues | values for twin-twin interaction |
[in] | structure | lattice structure |
Ntwin | number of active twin systems per family |
Definition at line 1337 of file lattice.f90.
References bcc_nslipsystem, bcc_ntwinsystem, buildinteraction(), fcc_nslipsystem, fcc_ntwinsystem, hex_nslipsystem, hex_ntwinsystem, and io::io_error().
real(preal) function, dimension(sum(ntwin),sum(ntwin)), public lattice::lattice_interaction_twinbytwin | ( | integer, dimension(:), intent(in) | Ntwin, |
real(preal), dimension(:), intent(in) | interactionValues, | ||
character(len=*), intent(in) | structure | ||
) |
Twin-twin interaction matrix details only active twin systems are considered.
[in] | ntwin | number of active twin systems per family |
[in] | interactionvalues | values for twin-twin interaction |
[in] | structure | lattice structure |
Definition at line 995 of file lattice.f90.
References bcc_ntwinsystem, buildinteraction(), fcc_ntwinsystem, hex_ntwinsystem, and io::io_error().
character(len=:) function, dimension(:), allocatable, public lattice::lattice_labels_slip | ( | integer, dimension(:), intent(in) | Nslip, |
character(len=*), intent(in) | structure | ||
) |
Labels for slip systems details only active slip systems are considered.
[in] | nslip | number of active slip systems per family |
[in] | structure | lattice structure |
Definition at line 1649 of file lattice.f90.
References bcc_nslipsystem, bcc_systemslip, bct_nslipsystem, bct_systemslip, fcc_nslipsystem, fcc_systemslip, getlabels(), hex_nslipsystem, hex_systemslip, and io::io_error().
character(len=:) function, dimension(:), allocatable, public lattice::lattice_labels_twin | ( | integer, dimension(:), intent(in) | Ntwin, |
character(len=*), intent(in) | structure | ||
) |
Labels for twin systems details only active twin systems are considered.
[in] | ntwin | number of active slip systems per family |
[in] | structure | lattice structure |
Definition at line 1811 of file lattice.f90.
References bcc_ntwinsystem, bcc_systemtwin, fcc_ntwinsystem, fcc_systemtwin, getlabels(), hex_ntwinsystem, hex_systemtwin, and io::io_error().
real(preal) function, dimension(1:3,1:3,sum(nslip)), public lattice::lattice_nonschmidmatrix | ( | integer, dimension(:), intent(in) | Nslip, |
real(preal), dimension(:), intent(in) | nonSchmidCoefficients, | ||
integer, intent(in) | sense | ||
) |
Non-schmid projections for bcc with up to 6 coefficients.
[in] | nslip | number of active slip systems per family |
[in] | nonschmidcoefficients | non-Schmid coefficients for projections |
[in] | sense | sense (-1,+1) |
Definition at line 728 of file lattice.f90.
References bcc_nslipsystem, bcc_systemslip, buildcoordinatesystem(), io::io_error(), lattice_schmidmatrix_slip(), math::math_cross(), math::math_outer(), and prec::preal.
real(preal) function, dimension(3,3,3,sum(ncleavage)), public lattice::lattice_schmidmatrix_cleavage | ( | integer, dimension(:), intent(in) | Ncleavage, |
character(len=*), intent(in) | structure, | ||
real(preal), intent(in) | cOverA | ||
) |
Schmid matrix for cleavage details only active cleavage systems are considered.
[in] | ncleavage | number of active cleavage systems per family |
[in] | structure | lattice structure |
[in] | covera | c/a ratio |
Definition at line 1546 of file lattice.f90.
References bcc_ncleavagesystem, bcc_systemcleavage, buildcoordinatesystem(), fcc_ncleavagesystem, fcc_systemcleavage, io::io_error(), math::math_outer(), ort_ncleavagesystem, and ort_systemcleavage.
Referenced by kinematics_cleavage_opening::kinematics_cleavage_opening_init(), and source_damage_anisobrittle::source_damage_anisobrittle_init().
real(preal) function, dimension(3,3,sum(nslip)), public lattice::lattice_schmidmatrix_slip | ( | integer, dimension(:), intent(in) | Nslip, |
character(len=*), intent(in) | structure, | ||
real(preal), intent(in) | cOverA | ||
) |
Schmid matrix for slip details only active slip systems are considered.
[in] | nslip | number of active slip systems per family |
[in] | structure | lattice structure |
Definition at line 1415 of file lattice.f90.
References bcc_nslipsystem, bcc_systemslip, bct_nslipsystem, bct_systemslip, buildcoordinatesystem(), fcc_nslipsystem, fcc_systemslip, hex_nslipsystem, hex_systemslip, io::io_error(), math::math_outer(), math::math_trace33(), and prec::tol_math_check.
Referenced by lattice_nonschmidmatrix().
real(preal) function, dimension(3,3,sum(ntrans)), public lattice::lattice_schmidmatrix_trans | ( | integer, dimension(:), intent(in) | Ntrans, |
character(len=*), intent(in) | structure_target, | ||
real(preal), intent(in) | cOverA, | ||
real(preal) | a_bcc, | ||
real(preal) | a_fcc | ||
) |
Schmid matrix for twinning details only active twin systems are considered.
[in] | ntrans | number of active twin systems per family |
[in] | structure_target | lattice structure |
[in] | covera | c/a ratio |
Definition at line 1516 of file lattice.f90.
References buildtransformationsystem(), and io::io_error().
real(preal) function, dimension(3,3,sum(ntwin)), public lattice::lattice_schmidmatrix_twin | ( | integer, dimension(:), intent(in) | Ntwin, |
character(len=*), intent(in) | structure, | ||
real(preal), intent(in) | cOverA | ||
) |
Schmid matrix for twinning details only active twin systems are considered.
[in] | ntwin | number of active twin systems per family |
[in] | structure | lattice structure |
[in] | covera | c/a ratio |
Definition at line 1467 of file lattice.f90.
References bcc_ntwinsystem, bcc_systemtwin, buildcoordinatesystem(), fcc_ntwinsystem, fcc_systemtwin, hex_ntwinsystem, hex_systemtwin, io::io_error(), math::math_outer(), math::math_trace33(), and prec::tol_math_check.
real(preal) function, dimension(3,sum(nslip)), public lattice::lattice_slip_direction | ( | integer, dimension(:), intent(in) | Nslip, |
character(len=*), intent(in) | structure, | ||
real(preal), intent(in) | cOverA | ||
) |
Slip direction of slip systems (|| b)
[in] | nslip | number of active slip systems per family |
[in] | structure | lattice structure |
[in] | covera | c/a ratio |
Definition at line 1594 of file lattice.f90.
References coordinatesystem_slip().
Referenced by kinematics_slipplane_opening::kinematics_slipplane_opening_init(), and slipprojection_direction().
real(preal) function, dimension(3,sum(nslip)), public lattice::lattice_slip_normal | ( | integer, dimension(:), intent(in) | Nslip, |
character(len=*), intent(in) | structure, | ||
real(preal), intent(in) | cOverA | ||
) |
Normal direction of slip systems (|| n)
[in] | nslip | number of active slip systems per family |
[in] | structure | lattice structure |
[in] | covera | c/a ratio |
Definition at line 1612 of file lattice.f90.
References coordinatesystem_slip().
Referenced by kinematics_slipplane_opening::kinematics_slipplane_opening_init(), slipprojection_direction(), and slipprojection_transverse().
real(preal) function, dimension(3,sum(nslip)), public lattice::lattice_slip_transverse | ( | integer, dimension(:), intent(in) | Nslip, |
character(len=*), intent(in) | structure, | ||
real(preal), intent(in) | cOverA | ||
) |
Transverse direction of slip systems ( || t = b x n)
[in] | nslip | number of active slip systems per family |
[in] | structure | lattice structure |
[in] | covera | c/a ratio |
Definition at line 1630 of file lattice.f90.
References coordinatesystem_slip().
Referenced by kinematics_slipplane_opening::kinematics_slipplane_opening_init(), and slipprojection_transverse().
|
private |
Projection of the slip direction onto the slip plane.
: This projection is used to calculate forest hardening for screw dislocations
[in] | nslip | number of active slip systems per family |
[in] | structure | lattice structure |
[in] | covera | c/a ratio |
Definition at line 1876 of file lattice.f90.
References lattice_slip_direction(), lattice_slip_normal(), and math::math_inner().
|
private |
Projection of the transverse direction onto the slip plane.
: This projection is used to calculate forest hardening for edge dislocations
[in] | nslip | number of active slip systems per family |
[in] | structure | lattice structure |
[in] | covera | c/a ratio |
Definition at line 1852 of file lattice.f90.
References lattice_slip_normal(), lattice_slip_transverse(), and math::math_inner().
|
private |
check correctness of some lattice functions
Definition at line 2299 of file lattice.f90.
References applylatticesymmetryc66(), buildcoordinatesystem(), prec::dneq(), equivalent_mu(), equivalent_nu(), io::io_error(), and math::math_i3.
|
private |
total # of cleavage systems for bcc
Definition at line 125 of file lattice.f90.
|
private |
Definition at line 122 of file lattice.f90.
Referenced by lattice_schmidmatrix_cleavage().
|
private |
total # of slip systems for bcc
Definition at line 125 of file lattice.f90.
|
private |
Definition at line 116 of file lattice.f90.
Referenced by coordinatesystem_slip(), lattice_c66_twin(), lattice_interaction_slipbyslip(), lattice_interaction_slipbytwin(), lattice_interaction_twinbyslip(), lattice_labels_slip(), lattice_nonschmidmatrix(), and lattice_schmidmatrix_slip().
|
private |
total # of twin systems for bcc
Definition at line 125 of file lattice.f90.
|
private |
Definition at line 119 of file lattice.f90.
Referenced by lattice_interaction_slipbytwin(), lattice_interaction_twinbyslip(), lattice_interaction_twinbytwin(), lattice_labels_twin(), and lattice_schmidmatrix_twin().
|
private |
Definition at line 184 of file lattice.f90.
Referenced by lattice_schmidmatrix_cleavage().
|
private |
Definition at line 136 of file lattice.f90.
Referenced by coordinatesystem_slip(), lattice_labels_slip(), lattice_nonschmidmatrix(), and lattice_schmidmatrix_slip().
|
private |
Definition at line 167 of file lattice.f90.
Referenced by lattice_c66_twin(), lattice_labels_twin(), and lattice_schmidmatrix_twin().
|
private |
total # of slip systems for bct
Definition at line 290 of file lattice.f90.
|
private |
Definition at line 287 of file lattice.f90.
Referenced by coordinatesystem_slip(), lattice_interaction_slipbyslip(), lattice_labels_slip(), and lattice_schmidmatrix_slip().
|
private |
slip systems for bct sorted by Bieler
Definition at line 297 of file lattice.f90.
Referenced by coordinatesystem_slip(), lattice_labels_slip(), and lattice_schmidmatrix_slip().
|
private |
total # of cleavage systems for fcc
Definition at line 37 of file lattice.f90.
|
private |
Definition at line 34 of file lattice.f90.
Referenced by lattice_schmidmatrix_cleavage().
|
private |
total # of slip systems for fcc
Definition at line 37 of file lattice.f90.
|
private |
Definition at line 25 of file lattice.f90.
Referenced by coordinatesystem_slip(), lattice_c66_twin(), lattice_interaction_slipbyslip(), lattice_interaction_slipbytrans(), lattice_interaction_slipbytwin(), lattice_interaction_twinbyslip(), lattice_labels_slip(), and lattice_schmidmatrix_slip().
|
private |
total # of transformation systems for fcc
Definition at line 37 of file lattice.f90.
|
private |
Definition at line 31 of file lattice.f90.
Referenced by lattice_interaction_slipbytrans(), and lattice_interaction_transbytrans().
|
private |
total # of twin systems for fcc
Definition at line 37 of file lattice.f90.
|
private |
Definition at line 28 of file lattice.f90.
Referenced by lattice_interaction_slipbytwin(), lattice_interaction_twinbyslip(), lattice_interaction_twinbytwin(), lattice_labels_twin(), and lattice_schmidmatrix_twin().
|
private |
Definition at line 106 of file lattice.f90.
Referenced by lattice_schmidmatrix_cleavage().
|
private |
Slip system <110>{111} directions. Sorted according to Eisenlohr & Hantcherli.
Definition at line 50 of file lattice.f90.
Referenced by coordinatesystem_slip(), lattice_labels_slip(), and lattice_schmidmatrix_slip().
|
private |
Twin system <112>{111} directions. Sorted according to Eisenlohr & Hantcherli.
Definition at line 74 of file lattice.f90.
Referenced by lattice_c66_twin(), lattice_labels_twin(), and lattice_schmidmatrix_twin().
|
private |
total # of slip systems for hex
Definition at line 200 of file lattice.f90.
|
private |
Definition at line 194 of file lattice.f90.
Referenced by coordinatesystem_slip(), lattice_c66_twin(), lattice_interaction_slipbyslip(), lattice_interaction_slipbytwin(), lattice_interaction_twinbyslip(), lattice_labels_slip(), and lattice_schmidmatrix_slip().
|
private |
total # of twin systems for hex
Definition at line 200 of file lattice.f90.
Referenced by lattice_characteristicshear_twin().
|
private |
Definition at line 197 of file lattice.f90.
Referenced by lattice_characteristicshear_twin(), lattice_interaction_slipbytwin(), lattice_interaction_twinbyslip(), lattice_interaction_twinbytwin(), lattice_labels_twin(), and lattice_schmidmatrix_twin().
|
private |
slip systems for hex, sorted by P. Eisenlohr CCW around starting next to a_1 axis
Definition at line 209 of file lattice.f90.
Referenced by coordinatesystem_slip(), lattice_labels_slip(), and lattice_schmidmatrix_slip().
|
private |
twin systems for hex, sorted by P. Eisenlohr CCW around starting next to a_1 axis
Definition at line 253 of file lattice.f90.
Referenced by lattice_c66_twin(), lattice_labels_twin(), and lattice_schmidmatrix_twin().
@, public lattice::lattice_bcc_id |
Definition at line 395 of file lattice.f90.
Referenced by crystallite::crystallite_results(), and lattice_init().
@, public lattice::lattice_bct_id |
Definition at line 395 of file lattice.f90.
Referenced by crystallite::crystallite_results(), and lattice_init().
real(preal), dimension(:,:,:), allocatable, public, protected lattice::lattice_c66 |
Definition at line 404 of file lattice.f90.
Referenced by constitutive::constitutive_homogenizedc(), and lattice_init().
real(preal), dimension(:,:,:), allocatable, public, protected lattice::lattice_damagediffusion |
Definition at line 404 of file lattice.f90.
Referenced by lattice_init().
real(preal), dimension(:), allocatable, public, protected lattice::lattice_damagemobility |
Definition at line 399 of file lattice.f90.
Referenced by lattice_init().
@, public lattice::lattice_fcc_id |
Definition at line 395 of file lattice.f90.
Referenced by crystallite::crystallite_results(), and lattice_init().
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)) |
Definition at line 90 of file lattice.f90.
@, public lattice::lattice_hex_id |
Definition at line 395 of file lattice.f90.
Referenced by crystallite::crystallite_results(), and lattice_init().
@, public lattice::lattice_iso_id |
Definition at line 395 of file lattice.f90.
Referenced by crystallite::crystallite_results(), and lattice_init().
real(preal), dimension(:), allocatable, public, protected lattice::lattice_massdensity |
Definition at line 399 of file lattice.f90.
Referenced by lattice_init().
real(preal), dimension(:), allocatable, public, protected lattice::lattice_mu |
Definition at line 399 of file lattice.f90.
Referenced by lattice_init().
real(preal), dimension(:), allocatable, public, protected lattice::lattice_nu |
Definition at line 399 of file lattice.f90.
Referenced by lattice_init().
@, public lattice::lattice_ort_id |
Definition at line 395 of file lattice.f90.
Referenced by crystallite::crystallite_results(), and lattice_init().
real(preal), dimension(:), allocatable, public, protected lattice::lattice_specificheat |
Definition at line 399 of file lattice.f90.
Referenced by lattice_init().
integer(kind(lattice_undefined_id)), dimension(:), allocatable, public, protected lattice::lattice_structure |
Definition at line 408 of file lattice.f90.
Referenced by crystallite::crystallite_results(), and lattice_init().
real(preal), dimension(:,:,:), allocatable, public, protected lattice::lattice_thermalconductivity |
Definition at line 404 of file lattice.f90.
Referenced by lattice_init().
|
private |
total # of cleavage systems for ortho
Definition at line 372 of file lattice.f90.
|
private |
Definition at line 369 of file lattice.f90.
Referenced by lattice_schmidmatrix_cleavage().
|
private |
Definition at line 379 of file lattice.f90.
Referenced by lattice_schmidmatrix_cleavage().