diff --git a/src/lattice.f90 b/src/lattice.f90 index 8d8ca6be1..631d0c671 100644 --- a/src/lattice.f90 +++ b/src/lattice.f90 @@ -400,7 +400,8 @@ module lattice lattice_slip_direction, & lattice_slip_transverse, & lattice_labels_slip, & - lattice_labels_twin + lattice_labels_twin, & + lattice_CorrespondanceMatrix_twin contains @@ -2287,7 +2288,7 @@ end subroutine selfTest !> @brief correspondance matrix for twinning !> details only active twin systems are considered !-------------------------------------------------------------------------------------------------- -function lattice_CorrespondanceMatrix_twin(Ntwin,structure,cOverA) result(CorrespondanceMatrix) +function lattice_CorrespondanceMatrix_twin(Ntwin,lattice,cOverA) result(CorrespondanceMatrix) use prec, only: & tol_math_check use IO, only: & @@ -2300,7 +2301,7 @@ function lattice_CorrespondanceMatrix_twin(Ntwin,structure,cOverA) result(Corres implicit none integer, dimension(:), intent(in) :: Ntwin !< number of active twin systems per family - character(len=*), intent(in) :: structure !< lattice structure + character(len=2), intent(in) :: lattice !< lattice structure real(pReal), intent(in) :: cOverA !< c/a ratio real(pReal), dimension(3,3,sum(Ntwin)) :: CorrespondanceMatrix @@ -2311,32 +2312,32 @@ function lattice_CorrespondanceMatrix_twin(Ntwin,structure,cOverA) result(Corres integer, dimension(:), allocatable :: NtwinMax integer :: i - if (len_trim(structure) /= 3) & - call IO_error(137,ext_msg='lattice_CorrespondanceMatrix_twin: '//trim(structure)) + !if (len_trim(structure) /= 3) & + ! call IO_error(137,ext_msg='lattice_CorrespondanceMatrix_twin: '//trim(structure)) - select case(structure(1:3)) - case('fcc') + select case(lattice) + case('cF') NtwinMax = CF_NTWINSYSTEM twinSystems = CF_SYSTEMTWIN - case('bcc') + case('cI') NtwinMax = CI_NTWINSYSTEM twinSystems = CI_SYSTEMTWIN - case('hex') + case('hP') NtwinMax = HP_NTWINSYSTEM twinSystems = HP_SYSTEMTWIN !< the twin system matrix is different from V2.0 case default - call IO_error(137,ext_msg='lattice_CorrespondanceMatrix_twin: '//trim(structure)) + call IO_error(137,ext_msg='lattice_CorrespondanceMatrix_twin: '//trim(lattice)) end select if (any(NtwinMax(1:size(Ntwin)) - Ntwin < 0)) & - call IO_error(145,ext_msg='Ntwin '//trim(structure)) + call IO_error(145,ext_msg='Ntwin '//trim(lattice)) if (any(Ntwin < 0)) & - call IO_error(144,ext_msg='Ntwin '//trim(structure)) + call IO_error(144,ext_msg='Ntwin '//trim(lattice)) - coordinateSystem = buildCoordinateSystem(Ntwin,NtwinMax,twinSystems,structure,cOverA) - ! characteristicShearTwin = 0.0_pReal*lattice_characteristicShear_Twin(Ntwin,structure,cOverA) ! for removing shear from CorrespondanceMatrix - characteristicShearTwin = lattice_characteristicShear_Twin(Ntwin,structure,cOverA) - SchmidMatrixTwin = lattice_SchmidMatrix_twin(Ntwin,structure,cOverA) + coordinateSystem = buildCoordinateSystem(Ntwin,NtwinMax,twinSystems,lattice,cOverA) + ! characteristicShearTwin = 0.0_pReal*lattice_characteristicShear_Twin(Ntwin,lattice,cOverA) ! for removing shear from CorrespondanceMatrix + characteristicShearTwin = lattice_characteristicShear_Twin(Ntwin,lattice,cOverA) + SchmidMatrixTwin = lattice_SchmidMatrix_twin(Ntwin,lattice,cOverA) do i = 1, sum(Ntwin) CorrespondanceMatrix(1:3,1:3,i) = math_mul3333xx33(math_axisAngleToR(coordinateSystem(1:3,2,i), & diff --git a/src/phase_mechanical_plastic_phenopowerlaw.f90 b/src/phase_mechanical_plastic_phenopowerlaw.f90 index f663596ec..77e7efec4 100644 --- a/src/phase_mechanical_plastic_phenopowerlaw.f90 +++ b/src/phase_mechanical_plastic_phenopowerlaw.f90 @@ -29,13 +29,14 @@ submodule(phase:plastic) phenopowerlaw h_sl_sl, & !< slip resistance from slip activity h_sl_tw, & !< slip resistance from twin activity h_tw_sl, & !< twin resistance from slip activity - h_tw_tw , & - CorrespondanceMatrix !< twin resistance from twin activity + h_tw_tw !< twin resistance from twin activity + real(pReal), allocatable, dimension(:,:,:) :: & P_sl, & P_tw, & P_nS_pos, & - P_nS_neg + P_nS_neg, & + CorrespondanceMatrix integer :: & sum_N_sl, & !< total number of active slip system sum_N_tw !< total number of active twin systems