cleavage systems avaialable as function
This commit is contained in:
parent
50b03e0330
commit
2ca7807438
|
@ -2126,9 +2126,7 @@ function lattice_characteristicShear_Twin(Ntwin,structure,CoverA) result(charact
|
||||||
case (2_pInt) ! <11.6>{-1-1.1}
|
case (2_pInt) ! <11.6>{-1-1.1}
|
||||||
characteristicShear(ir) = 1.0_pReal/cOverA
|
characteristicShear(ir) = 1.0_pReal/cOverA
|
||||||
case (3_pInt) ! <10.-2>{10.1}
|
case (3_pInt) ! <10.-2>{10.1}
|
||||||
characteristicShear(ir) = (4.0_pReal*cOverA*cOverA-9.0_pReal)/4.0_pReal &
|
characteristicShear(ir) = (4.0_pReal*cOverA*cOverA-9.0_pReal)/sqrt(48.0_pReal)/cOverA
|
||||||
/ sqrt(3.0_pReal)/cOverA
|
|
||||||
!characteristicShear(ir) = (4.0_pReal*cOverA*cOverA-9.0_pReal)/sqrt(48.0_pReal)/cOverA
|
|
||||||
case (4_pInt) ! <11.-3>{11.2}
|
case (4_pInt) ! <11.-3>{11.2}
|
||||||
characteristicShear(ir) = 2.0_pReal*(cOverA*cOverA-2.0_pReal)/3.0_pReal/cOverA
|
characteristicShear(ir) = 2.0_pReal*(cOverA*cOverA-2.0_pReal)/3.0_pReal/cOverA
|
||||||
end select
|
end select
|
||||||
|
@ -2662,6 +2660,65 @@ function lattice_SchmidMatrix_twin(Ntwin,structure,cOverA) result(SchmidMatrix)
|
||||||
end function lattice_SchmidMatrix_twin
|
end function lattice_SchmidMatrix_twin
|
||||||
|
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @brief Calculates Schmid matrix for active cleavage systems
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
function lattice_SchmidMatrix_cleavage(Ncleavage,structure,cOverA) result(SchmidMatrix)
|
||||||
|
use prec, only: &
|
||||||
|
tol_math_check
|
||||||
|
use IO, only: &
|
||||||
|
IO_error
|
||||||
|
use math, only: &
|
||||||
|
math_trace33, &
|
||||||
|
math_tensorproduct33
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
integer(pInt), dimension(:), intent(in) :: Ncleavage !< number of active cleavage systems per family
|
||||||
|
character(len=*), intent(in) :: structure !< lattice structure
|
||||||
|
real(pReal), dimension(3,3,3,sum(Ncleavage)) :: SchmidMatrix
|
||||||
|
real(pReal), intent(in) :: cOverA
|
||||||
|
|
||||||
|
real(pReal), dimension(3,3,sum(Ncleavage)) :: coordinateSystem
|
||||||
|
real(pReal), dimension(:,:), allocatable :: cleavageSystems
|
||||||
|
integer(pInt), dimension(:), allocatable :: NcleavageMax
|
||||||
|
integer(pInt) :: i
|
||||||
|
|
||||||
|
select case(structure)
|
||||||
|
case('iso')
|
||||||
|
NcleavageMax = LATTICE_ISO_NCLEAVAGESYSTEM
|
||||||
|
cleavageSystems = LATTICE_ISO_SYSTEMCLEAVAGE
|
||||||
|
case('ort')
|
||||||
|
NcleavageMax = LATTICE_ORTHO_NCLEAVAGESYSTEM
|
||||||
|
cleavageSystems = LATTICE_ORTHO_SYSTEMCLEAVAGE
|
||||||
|
case('fcc')
|
||||||
|
NcleavageMax = LATTICE_FCC_NCLEAVAGESYSTEM
|
||||||
|
cleavageSystems = LATTICE_FCC_SYSTEMCLEAVAGE
|
||||||
|
case('bcc')
|
||||||
|
NcleavageMax = LATTICE_BCC_NCLEAVAGESYSTEM
|
||||||
|
cleavageSystems = LATTICE_BCC_SYSTEMCLEAVAGE
|
||||||
|
case('hex','hexagonal') !ToDo: "No alias policy": long or short?
|
||||||
|
NcleavageMax = LATTICE_HEX_NCLEAVAGESYSTEM
|
||||||
|
cleavageSystems = LATTICE_HEX_SYSTEMCLEAVAGE
|
||||||
|
case default
|
||||||
|
call IO_error(130_pInt,ext_msg=trim(structure)//' (lattice_SchmidMatrix_cleavage)')
|
||||||
|
end select
|
||||||
|
|
||||||
|
if (any(NcleavageMax(1:size(Ncleavage)) - Ncleavage < 0_pInt)) &
|
||||||
|
call IO_error(145_pInt,ext_msg='Ncleavage '//trim(structure))
|
||||||
|
if (any(Ncleavage < 0_pInt)) &
|
||||||
|
call IO_error(144_pInt,ext_msg='Ncleavage '//trim(structure))
|
||||||
|
|
||||||
|
coordinateSystem = buildCoordinateSystem(Ncleavage,NcleavageMax,cleavageSystems,structure,cOverA)
|
||||||
|
|
||||||
|
do i = 1, sum(Ncleavage)
|
||||||
|
SchmidMatrix(1:3,1:3,1,i) = math_tensorproduct33(coordinateSystem(1:3,1,i),coordinateSystem(1:3,2,i))
|
||||||
|
SchmidMatrix(1:3,1:3,2,i) = math_tensorproduct33(coordinateSystem(1:3,3,i),coordinateSystem(1:3,2,i))
|
||||||
|
SchmidMatrix(1:3,1:3,3,i) = math_tensorproduct33(coordinateSystem(1:3,2,i),coordinateSystem(1:3,2,i))
|
||||||
|
enddo
|
||||||
|
|
||||||
|
end function lattice_SchmidMatrix_cleavage
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Populates reduced interaction matrix
|
!> @brief Populates reduced interaction matrix
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue