diff --git a/code/constitutive_dislotwin.f90 b/code/constitutive_dislotwin.f90 index 15813ccff..3dcf35aa9 100644 --- a/code/constitutive_dislotwin.f90 +++ b/code/constitutive_dislotwin.f90 @@ -145,7 +145,8 @@ integer(pInt), intent(in) :: file integer(pInt), parameter :: maxNchunks = 21_pInt integer(pInt), dimension(1+2*maxNchunks) :: positions integer(pInt) :: section, maxNinstance,mySize,myStructure,maxTotalNslip,maxTotalNtwin,& - f,i,j,k,l,m,n,o,p,q,r,s,s1,s2,t1,t2,ns,nt + f,i,j,k,l,m,n,o,p,q,r,s,ns,nt, & + index_myFamily, index_otherFamily character(len=64) tag character(len=1024) line @@ -678,7 +679,6 @@ do i = 1_pInt,maxNinstance enddo ! instances -return end subroutine @@ -695,7 +695,7 @@ implicit none integer(pInt) :: myInstance real(pReal), dimension(constitutive_dislotwin_sizeState(myInstance)) :: constitutive_dislotwin_stateInit !* Local variables -integer(pInt) i,j,f,ns,nt +integer(pInt) :: i,j,f,ns,nt, index_myFamily real(pReal), dimension(constitutive_dislotwin_totalNslip(myInstance)) :: rhoEdge0, & rhoEdgeDip0, & invLambdaSlip0, & @@ -711,40 +711,43 @@ constitutive_dislotwin_stateInit = 0.0_pReal do f = 1_pInt,lattice_maxNslipFamily index_myFamily = sum(constitutive_dislotwin_Nslip(1:f-1_pInt,myInstance)) ! index in truncated slip system list - rhoEdge0(index_myFamily: & - index_myFamily+constitutive_dislotwin_Nslip(f)-1_pInt) = constitutive_dislotwin_rhoEdge0(f,myInstance) - rhoEdgeDip0(index_myFamily: & - index_myFamily+constitutive_dislotwin_Nslip(f)-1_pInt) = constitutive_dislotwin_rhoEdgeDip0(f,myInstance) + rhoEdge0(index_myFamily+1_pInt: & + index_myFamily+constitutive_dislotwin_Nslip(f,myInstance)) = & + constitutive_dislotwin_rhoEdge0(f,myInstance) + rhoEdgeDip0(index_myFamily+1_pInt: & + index_myFamily+constitutive_dislotwin_Nslip(f,myInstance)) = & + constitutive_dislotwin_rhoEdgeDip0(f,myInstance) +enddo constitutive_dislotwin_stateInit(1_pInt:ns) = rhoEdge0 constitutive_dislotwin_stateInit(ns+1_pInt:2_pInt*ns) = rhoEdgeDip0 !* Initialize dependent slip microstructural variables -forall (s = 1_pInt:ns) & - invLambdaSlip0(s) = sqrt(dot_product((rhoEdge0+rhoEdgeDip0),constitutive_dislotwin_forestProjectionEdge(1:ns,s,myInstance)))/ & - constitutive_dislotwin_CLambdaSlipPerSlipSystem(s,myInstance) - constitutive_dislotwin_stateInit(2_pInt*ns+nt+1_pInt:3_pInt*ns+nt) = invLambdaSlip0 +forall (i = 1_pInt:ns) & + invLambdaSlip0(i) = sqrt(dot_product((rhoEdge0+rhoEdgeDip0),constitutive_dislotwin_forestProjectionEdge(1:ns,i,myInstance)))/ & + constitutive_dislotwin_CLambdaSlipPerSlipSystem(i,myInstance) +constitutive_dislotwin_stateInit(2_pInt*ns+nt+1_pInt:3_pInt*ns+nt) = invLambdaSlip0 -forall (s = 1_pInt:ns) & - MeanFreePathSlip0(s) = & - constitutive_dislotwin_GrainSize(myInstance)/(1.0_pReal+invLambdaSlip0(s)*constitutive_dislotwin_GrainSize(myInstance)) - constitutive_dislotwin_stateInit(4_pInt*ns+2_pInt*nt+1:5_pInt*ns+2_pInt*nt) = MeanFreePathSlip0 +forall (i = 1_pInt:ns) & + MeanFreePathSlip0(i) = & + constitutive_dislotwin_GrainSize(myInstance)/(1.0_pReal+invLambdaSlip0(i)*constitutive_dislotwin_GrainSize(myInstance)) +constitutive_dislotwin_stateInit(4_pInt*ns+2_pInt*nt+1:5_pInt*ns+2_pInt*nt) = MeanFreePathSlip0 -forall (s = 1_pInt:ns) & - tauSlipThreshold0(s) = constitutive_dislotwin_SolidSolutionStrength(myInstance) + & - constitutive_dislotwin_Gmod(myInstance)*constitutive_dislotwin_burgersPerSlipSystem(s,myInstance) * & - sqrt(dot_product((rhoEdge0+rhoEdgeDip0),constitutive_dislotwin_interactionMatrix_SlipSlip(s,1:ns,myInstance))) - constitutive_dislotwin_stateInit(5_pInt*ns+3_pInt*nt+1:6_pInt*ns+3_pInt*nt) = tauSlipThreshold0 +forall (i = 1_pInt:ns) & + tauSlipThreshold0(i) = constitutive_dislotwin_SolidSolutionStrength(myInstance) + & + constitutive_dislotwin_Gmod(myInstance)*constitutive_dislotwin_burgersPerSlipSystem(i,myInstance) * & + sqrt(dot_product((rhoEdge0+rhoEdgeDip0),constitutive_dislotwin_interactionMatrix_SlipSlip(i,1:ns,myInstance))) +constitutive_dislotwin_stateInit(5_pInt*ns+3_pInt*nt+1:6_pInt*ns+3_pInt*nt) = tauSlipThreshold0 !* Initialize dependent twin microstructural variables -forall (t = 1_pInt:nt) & - MeanFreePathTwin0(t) = constitutive_dislotwin_GrainSize(myInstance) - constitutive_dislotwin_stateInit(5_pInt*ns+2_pInt*nt+1_pInt:5_pInt*ns+3_pInt*nt) = MeanFreePathTwin0 +forall (j = 1_pInt:nt) & + MeanFreePathTwin0(j) = constitutive_dislotwin_GrainSize(myInstance) +constitutive_dislotwin_stateInit(5_pInt*ns+2_pInt*nt+1_pInt:5_pInt*ns+3_pInt*nt) = MeanFreePathTwin0 -forall (t = 1_pInt:nt) & - TwinVolume0(t) = & - (pi/6.0_pReal)*constitutive_dislotwin_twinsizePerTwinSystem(t,myInstance)*MeanFreePathTwin0(t)**(2.0_pReal) - constitutive_dislotwin_stateInit(6_pInt*ns+4_pInt*nt+1_pInt:6_pInt*ns+5_pInt*nt) = TwinVolume0 +forall (j = 1_pInt:nt) & + TwinVolume0(j) = & + (pi/6.0_pReal)*constitutive_dislotwin_twinsizePerTwinSystem(j,myInstance)*MeanFreePathTwin0(j)**(2.0_pReal) +constitutive_dislotwin_stateInit(6_pInt*ns+4_pInt*nt+1_pInt:6_pInt*ns+5_pInt*nt) = TwinVolume0 !write(6,*) '#STATEINIT#' !write(6,*) @@ -756,7 +759,6 @@ forall (t = 1_pInt:nt) & !write(6,'(a,/,4(3(f30.20,1x)/))') 'MeanFreePathTwin', MeanFreePathTwin0 !write(6,'(a,/,4(3(f30.20,1x)/))') 'TwinVolume', TwinVolume0 -return end function @@ -773,8 +775,7 @@ real(pReal), dimension(constitutive_dislotwin_sizeState(myInstance)) :: constitu constitutive_dislotwin_aTolState = constitutive_dislotwin_aTolRho(myInstance) -return -endfunction +end function constitutive_dislotwin_aTolState pure function constitutive_dislotwin_homogenizedC(state,g,ip,el) @@ -813,7 +814,6 @@ do i=1_pInt,nt constitutive_dislotwin_homogenizedC + state(g,ip,el)%p(2_pInt*ns+i)*constitutive_dislotwin_Ctwin_66(:,:,i,myInstance) enddo -return end function @@ -940,8 +940,6 @@ forall (t = 1_pInt:nt) & ! write(6,'(a,/,4(3(f10.4,1x)/))') 'Fraction',state(g,ip,el)%p(2*ns+1:2*ns+nt) !endif - -return end subroutine @@ -1163,7 +1161,6 @@ dLp_dTstar = math_Plain3333to99(dLp_dTstar3333) ! write(6,'(a,/,9(9(f10.4,1x)/))') 'dLp_dTstar',dLp_dTstar !endif -return end subroutine @@ -1336,7 +1333,6 @@ enddo !write(6,'(a,/,4(3(f30.20,1x)/))') 'SingleDipole',DotRhoEdgeDipAnnihilation !write(6,'(a,/,4(3(f30.20,1x)/))') 'DipClimb',DotRhoEdgeDipClimb -return end function @@ -1373,8 +1369,7 @@ real(pReal), dimension(constitutive_dislotwin_sizeDotState(phase_plasticityInsta constitutive_dislotwin_deltaState = 0.0_pReal - -endfunction +end function pure function constitutive_dislotwin_dotTemperature(Tstar_v,Temperature,state,g,ip,el) @@ -1402,8 +1397,6 @@ type(p_vec), dimension(homogenization_maxNgrains,mesh_maxNips,mesh_NcpElems), in real(pReal) constitutive_dislotwin_dotTemperature constitutive_dislotwin_dotTemperature = 0.0_pReal - -return end function @@ -1640,7 +1633,6 @@ do o = 1_pInt,phase_Noutput(material_phase(g,ip,el)) end select enddo -return end function END MODULE diff --git a/code/lattice.f90 b/code/lattice.f90 index 3a32a1e73..4acc242aa 100644 --- a/code/lattice.f90 +++ b/code/lattice.f90 @@ -154,7 +154,7 @@ module lattice ],[lattice_fcc_Ntwin]) !< Twin system <112>{111} Sorted according to Eisenlohr & Hantcherli integer(pInt), dimension(lattice_fcc_Nslip,lattice_fcc_Nslip), target, private :: & - lattice_fcc_interactionSlipSlip = transpose(reshape(int( [& + lattice_fcc_interactionSlipSlip = reshape(int( [& 1,2,2,4,6,5,3,5,5,4,5,6, & ! ---> slip 2,1,2,6,4,5,5,4,6,5,3,5, & ! | 2,2,1,5,5,3,5,6,4,6,5,4, & ! | @@ -167,7 +167,7 @@ module lattice 4,5,6,3,5,5,4,6,5,1,2,2, & 5,3,5,5,4,6,6,4,5,2,1,2, & 6,5,4,5,6,4,5,5,3,2,2,1 & - ],pInt),[lattice_fcc_Nslip,lattice_fcc_Nslip])) + ],pInt),[lattice_fcc_Nslip,lattice_fcc_Nslip],order=[2,1]) !< Interaction types !< 1 --- self interaction !< 2 --- coplanar interaction @@ -177,7 +177,7 @@ module lattice !< 6 --- Lomer locks integer(pInt), dimension(lattice_fcc_Nslip,lattice_fcc_Ntwin), target, private :: & - lattice_fcc_interactionSlipTwin = transpose(reshape(int( [& + lattice_fcc_interactionSlipTwin = reshape(int( [& 1,1,1,3,3,3,2,2,2,3,3,3, & ! ---> twin 1,1,1,3,3,3,3,3,3,2,2,2, & ! | 1,1,1,2,2,2,3,3,3,3,3,3, & ! | @@ -190,7 +190,7 @@ module lattice 3,3,3,2,2,2,3,3,3,1,1,1, & 2,2,2,3,3,3,3,3,3,1,1,1, & 3,3,3,3,3,3,2,2,2,1,1,1 & - ],pInt),[lattice_fcc_Ntwin,lattice_fcc_Nslip])) + ],pInt),[lattice_fcc_Nslip,lattice_fcc_Ntwin],order=[2,1]) !< Interaction types !< 1 --- coplanar interaction !< 2 --- colinenar interaction @@ -200,7 +200,7 @@ module lattice lattice_fcc_interactionTwinSlip = 0_pInt integer(pInt), dimension(lattice_fcc_Ntwin,lattice_fcc_Ntwin), target, private :: & - lattice_fcc_interactionTwinTwin = transpose(reshape(int( [& + lattice_fcc_interactionTwinTwin = reshape(int( [& 1,1,1,2,2,2,2,2,2,2,2,2, & ! ---> twin 1,1,1,2,2,2,2,2,2,2,2,2, & ! | 1,1,1,2,2,2,2,2,2,2,2,2, & ! | @@ -213,20 +213,20 @@ module lattice 2,2,2,2,2,2,2,2,2,1,1,1, & 2,2,2,2,2,2,2,2,2,1,1,1, & 2,2,2,2,2,2,2,2,2,1,1,1 & - ],pInt),[lattice_fcc_Ntwin,lattice_fcc_Ntwin])) + ],pInt),[lattice_fcc_Ntwin,lattice_fcc_Ntwin],order=[2,1]) !-------------------------------------------------------------------------------------------------- ! bcc (2) integer(pInt), dimension(lattice_maxNslipFamily), parameter, private :: & - lattice_bcc_NslipSystem = int([ 12,12,24, 0, 0], pInt) + lattice_bcc_NslipSystem = int([ 12, 12, 0, 0, 0], pInt) integer(pInt), dimension(lattice_maxNtwinFamily), parameter, private :: & lattice_bcc_NtwinSystem = int([ 12, 0, 0, 0], pInt) integer(pInt), parameter, private :: & - lattice_bcc_Nslip = 48_pInt ! sum(lattice_bcc_NslipSystem) + lattice_bcc_Nslip = 24_pInt ! sum(lattice_bcc_NslipSystem) integer(pInt), parameter, private :: & lattice_bcc_Ntwin = 12_pInt ! sum(lattice_bcc_NtwinSystem) @@ -261,32 +261,32 @@ module lattice 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,-2 & ! Slip system <111>{123} - ! 1, 1,-1, 1, 2, 3, & - ! 1,-1, 1, -1, 2, 3, & - !-1, 1, 1, 1,-2, 3, & - ! 1, 1, 1, 1, 2,-3, & - ! 1,-1, 1, 1, 3, 2, & - ! 1, 1,-1, -1, 3, 2, & - ! 1, 1, 1, 1,-3, 2, & - !-1, 1, 1, 1, 3,-2, & - ! 1, 1,-1, 2, 1, 3, & - ! 1,-1, 1, -2, 1, 3, & - !-1, 1, 1, 2,-1, 3, & - ! 1, 1, 1, 2, 1,-3, & - ! 1,-1, 1, 2, 3, 1, & - ! 1, 1,-1, -2, 3, 1, & - ! 1, 1, 1, 2,-3, 1, & - !-1, 1, 1, 2, 3,-1, & - !-1, 1, 1, 3, 1, 2, & - ! 1, 1, 1, -3, 1, 2, & - ! 1, 1,-1, 3,-1, 2, & - ! 1,-1, 1, 3, 1,-2, & - !-1, 1, 1, 3, 2, 1, & - ! 1, 1, 1, -3, 2, 1, & - ! 1, 1,-1, 3,-2, 1, & - ! 1,-1, 1, 3, 2,-1 & + ! 1, 1,-1, 1, 2, 3, & + ! 1,-1, 1, -1, 2, 3, & + ! -1, 1, 1, 1,-2, 3, & + ! 1, 1, 1, 1, 2,-3, & + ! 1,-1, 1, 1, 3, 2, & + ! 1, 1,-1, -1, 3, 2, & + ! 1, 1, 1, 1,-3, 2, & + ! -1, 1, 1, 1, 3,-2, & + ! 1, 1,-1, 2, 1, 3, & + ! 1,-1, 1, -2, 1, 3, & + ! -1, 1, 1, 2,-1, 3, & + ! 1, 1, 1, 2, 1,-3, & + ! 1,-1, 1, 2, 3, 1, & + ! 1, 1,-1, -2, 3, 1, & + ! 1, 1, 1, 2,-3, 1, & + ! -1, 1, 1, 2, 3,-1, & + ! -1, 1, 1, 3, 1, 2, & + ! 1, 1, 1, -3, 1, 2, & + ! 1, 1,-1, 3,-1, 2, & + ! 1,-1, 1, 3, 1,-2, & + ! -1, 1, 1, 3, 2, 1, & + ! 1, 1, 1, -3, 2, 1, & + ! 1, 1,-1, 3,-2, 1, & + ! 1,-1, 1, 3, 2,-1 & ],pReal),[ 3_pInt + 3_pInt ,lattice_bcc_Nslip]) real(pReal), dimension(3+3,lattice_bcc_Ntwin), parameter, private :: & @@ -324,59 +324,35 @@ module lattice !> slip--slip interactions for BCC structures (2) integer(pInt), dimension(lattice_bcc_Nslip,lattice_bcc_Nslip), target, private :: & - lattice_bcc_interactionSlipSlip = transpose(reshape(int( [& - 1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & ! ---> slip - 2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & ! | - 2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & ! | - 2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & ! v slip - 2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2, & - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1 & - ],pInt),[lattice_bcc_Nslip,lattice_bcc_Nslip])) + lattice_bcc_interactionSlipSlip = reshape(int( [& + 1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & ! ---> slip + 2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & ! | + 2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & ! | + 2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & ! v slip + 2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & + 2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & + 2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & + 2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & + 2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & + 2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2, & + 2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2, & + 2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2, & + 2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2, & + 2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2, & + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2, & + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2, & + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2, & + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2, & + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2, & + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2, & + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2, & + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2, & + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2, & + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1 & + ],pInt),[lattice_bcc_Nslip,lattice_bcc_Nslip],order=[2,1]) integer(pInt), dimension(lattice_bcc_Nslip,lattice_bcc_Ntwin), target, private :: & - lattice_bcc_interactionSlipTwin = transpose(reshape(int( [& + lattice_bcc_interactionSlipTwin = reshape(int( [& 3,3,3,2,2,3,3,3,3,2,3,3, & ! ---> twin 3,3,2,3,3,2,3,3,2,3,3,3, & ! | 3,2,3,3,3,3,2,3,3,3,3,2, & ! | @@ -400,33 +376,20 @@ module lattice 3,3,2,3,3,2,3,3,1,3,3,3, & 3,3,3,2,2,3,3,3,3,1,3,3, & 2,3,3,3,3,3,3,2,3,3,1,3, & - 3,2,3,3,3,3,2,3,3,3,3,1 & - ],pInt),[lattice_bcc_Ntwin,lattice_bcc_Nslip])) + 3,2,3,3,3,3,2,3,3,3,3,1 & + ],pInt),[lattice_bcc_Nslip,lattice_bcc_Ntwin],order=[2,1]) !< Interaction types !< 1 --- coplanar interaction - !< 2 --- colinenar interaction + !< 2 --- colinear interaction !< 3 --- hardened interaction !>twin--slip interactions for BCC structures (2) MISSING: not implemented yet integer(pInt), dimension(lattice_bcc_Ntwin,lattice_bcc_Nslip), target, private :: & - lattice_fcc_interactionTwinSlip = 0_pInt + lattice_bcc_interactionTwinSlip = 0_pInt !> twin-twin interactions for BCC structures (2) MISSING: not implemented yet integer(pInt), dimension(lattice_bcc_Ntwin,lattice_bcc_Ntwin), target, private :: & - lattice_bcc_interactionTwinTwin = transpose(reshape(int( [& - 0,0,0,0,0,0,0,0,0,0,0,0, & ! ---> twin - 0,0,0,0,0,0,0,0,0,0,0,0, & ! | - 0,0,0,0,0,0,0,0,0,0,0,0, & ! | - 0,0,0,0,0,0,0,0,0,0,0,0, & ! v twin - 0,0,0,0,0,0,0,0,0,0,0,0, & - 0,0,0,0,0,0,0,0,0,0,0,0, & - 0,0,0,0,0,0,0,0,0,0,0,0, & - 0,0,0,0,0,0,0,0,0,0,0,0, & - 0,0,0,0,0,0,0,0,0,0,0,0, & - 0,0,0,0,0,0,0,0,0,0,0,0, & - 0,0,0,0,0,0,0,0,0,0,0,0, & - 0,0,0,0,0,0,0,0,0,0,0,0 & - ],pInt),[lattice_bcc_Ntwin,lattice_bcc_Ntwin])) + lattice_bcc_interactionTwinTwin = 0_pInt !-------------------------------------------------------------------------------------------------- @@ -550,7 +513,7 @@ module lattice !* 4. twin-slip interaction - 16 types integer(pInt), dimension(lattice_hex_Nslip,lattice_hex_Nslip), target, private :: & - lattice_hex_interactionSlipSlip = transpose(reshape(int( [& + lattice_hex_interactionSlipSlip = reshape(int( [& 1, 6, 6, 11,11,11, 15,15,15,15,15,15, 18,18,18,18,18,18,18,18,18,18,18,18, 20,20,20,20,20,20, & ! ---> slip 6, 1, 6, 11,11,11, 15,15,15,15,15,15, 18,18,18,18,18,18,18,18,18,18,18,18, 20,20,20,20,20,20, & ! | 6, 6, 1, 11,11,11, 15,15,15,15,15,15, 18,18,18,18,18,18,18,18,18,18,18,18, 20,20,20,20,20,20, & ! | @@ -585,11 +548,11 @@ module lattice 30,30,30, 29,29,29, 27,27,27,27,27,27, 24,24,24,24,24,24,24,24,24,24,24,24, 10,10,10, 5,10,10, & 30,30,30, 29,29,29, 27,27,27,27,27,27, 24,24,24,24,24,24,24,24,24,24,24,24, 10,10,10,10, 5,10, & 30,30,30, 29,29,29, 27,27,27,27,27,27, 24,24,24,24,24,24,24,24,24,24,24,24, 10,10,10,10,10, 5 & - ],pInt),[lattice_hex_Nslip,lattice_hex_Nslip])) + ],pInt),[lattice_hex_Nslip,lattice_hex_Nslip],order=[2,1]) !* isotropic interaction at the moment integer(pInt), dimension(lattice_hex_Nslip,lattice_hex_Ntwin), target, private :: & - lattice_hex_interactionSlipTwin = transpose(reshape(int( [& + lattice_hex_interactionSlipTwin = reshape(int( [& 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, & ! --> twin 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, & ! | 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, & ! | @@ -624,11 +587,11 @@ module lattice 17,17,17,17,17,17, 18,18,18,18,18,18, 19,19,19,19,19,19, 20,20,20,20,20,20, & 17,17,17,17,17,17, 18,18,18,18,18,18, 19,19,19,19,19,19, 20,20,20,20,20,20, & 17,17,17,17,17,17, 18,18,18,18,18,18, 19,19,19,19,19,19, 20,20,20,20,20,20 & - ],pInt),[lattice_hex_Ntwin,lattice_hex_Nslip])) + ],pInt),[lattice_hex_Nslip,lattice_hex_Ntwin],order=[2,1]) !* isotropic interaction at the moment integer(pInt), dimension(lattice_hex_Ntwin,lattice_hex_Nslip), target, private :: & - lattice_hex_interactionTwinSlip = transpose(reshape(int( [& + lattice_hex_interactionTwinSlip = reshape(int( [& 1, 1, 1, 5, 5, 5, 9, 9, 9, 9, 9, 9, 13,13,13,13,13,13,13,13,13,13,13,13, 17,17,17,17,17,17, & ! --> slip 1, 1, 1, 5, 5, 5, 9, 9, 9, 9, 9, 9, 13,13,13,13,13,13,13,13,13,13,13,13, 17,17,17,17,17,17, & ! | 1, 1, 1, 5, 5, 5, 9, 9, 9, 9, 9, 9, 13,13,13,13,13,13,13,13,13,13,13,13, 17,17,17,17,17,17, & ! | @@ -656,11 +619,11 @@ module lattice 4, 4, 4, 8, 8, 8, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16, 20,20,20,20,20,20, & 4, 4, 4, 8, 8, 8, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16, 20,20,20,20,20,20, & 4, 4, 4, 8, 8, 8, 12,12,12,12,12,12, 16,16,16,16,16,16,16,16,16,16,16,16, 20,20,20,20,20,20 & - ],pInt),[lattice_hex_Nslip,lattice_hex_Ntwin])) + ],pInt),[lattice_hex_Ntwin,lattice_hex_Nslip],order=[2,1]) integer(pInt), dimension(lattice_hex_Ntwin,lattice_hex_Ntwin), target, private :: & - lattice_hex_interactionTwinTwin = transpose(reshape(int( [& + lattice_hex_interactionTwinTwin = reshape(int( [& 1, 5, 5, 5, 5, 5, 9, 9, 9, 9, 9, 9, 12,12,12,12,12,12, 14,14,14,14,14,14, & ! ---> twin 5, 1, 5, 5, 5, 5, 9, 9, 9, 9, 9, 9, 12,12,12,12,12,12, 14,14,14,14,14,14, & ! | 5, 5, 1, 5, 5, 5, 9, 9, 9, 9, 9, 9, 12,12,12,12,12,12, 14,14,14,14,14,14, & ! | @@ -688,7 +651,7 @@ module lattice 20,20,20,20,20,20, 19,19,19,19,19,19, 17,17,17,17,17,17, 8, 8, 8, 4, 8, 8, & 20,20,20,20,20,20, 19,19,19,19,19,19, 17,17,17,17,17,17, 8, 8, 8, 8, 4, 8, & 20,20,20,20,20,20, 19,19,19,19,19,19, 17,17,17,17,17,17, 8, 8, 8, 8, 8, 4 & - ],pInt),[lattice_hex_Ntwin,lattice_hex_Ntwin])) + ],pInt),[lattice_hex_Ntwin,lattice_hex_Ntwin],order=[2,1]) public :: & lattice_init, &