invlabmdaslip does not need to be stored

This commit is contained in:
Martin Diehl 2018-11-29 08:32:15 +01:00
parent 228ef831f0
commit 252f1a6a75
1 changed files with 11 additions and 17 deletions

View File

@ -115,14 +115,12 @@ module plastic_disloUCLA
rhoEdge, & rhoEdge, &
rhoEdgeDip, & rhoEdgeDip, &
accshear_slip, & accshear_slip, &
invLambdaSlip, &
mfp_slip, & mfp_slip, &
threshold_stress_slip threshold_stress_slip
end type end type
type, private :: tDisloUCLAMicrostructure type, private :: tDisloUCLAMicrostructure
real(pReal), allocatable, dimension(:,:) :: & real(pReal), allocatable, dimension(:,:) :: &
invLambda, &
mfp, & mfp, &
threshold_stress threshold_stress
end type tDisloUCLAMicrostructure end type tDisloUCLAMicrostructure
@ -516,8 +514,7 @@ plastic_disloUCLA_Noutput(phase_plasticityInstance(p)) = plastic_disloUCLA_Noutp
sizeDotState = int(size(['rhoEdge ','rhoEdgeDip ','accshearslip']),pInt) * ns sizeDotState = int(size(['rhoEdge ','rhoEdgeDip ','accshearslip']),pInt) * ns
sizeDeltaState = 0_pInt sizeDeltaState = 0_pInt
sizeState = sizeDotState & sizeState = sizeDotState &
+ int(size(['invLambdaSlip ',& + int(size(['meanFreePathSlip ','tauSlipThreshold ']),pInt) * ns
'meanFreePathSlip ','tauSlipThreshold ']),pInt) * ns
call material_allocatePlasticState(phase,NofMyPhase,sizeState,sizeDotState,0_pInt, & call material_allocatePlasticState(phase,NofMyPhase,sizeState,sizeDotState,0_pInt, &
ns,0_pInt,0_pInt) ns,0_pInt,0_pInt)
@ -579,10 +576,6 @@ plastic_disloUCLA_Noutput(phase_plasticityInstance(p)) = plastic_disloUCLA_Noutp
dotState(instance)%accshear_slip=>plasticState(phase)%dotState(startIndex:endIndex,:) dotState(instance)%accshear_slip=>plasticState(phase)%dotState(startIndex:endIndex,:)
plasticState(p)%aTolState(startIndex:endIndex) = 1e6_pReal plasticState(p)%aTolState(startIndex:endIndex) = 1e6_pReal
startIndex=endIndex+1_pInt
endIndex=endIndex+ns
stt%invLambdaSlip=>plasticState(phase)%state(startIndex:endIndex,:)
startIndex=endIndex+1_pInt startIndex=endIndex+1_pInt
endIndex=endIndex+ns endIndex=endIndex+ns
stt%mfp_slip=>plasticState(phase)%state(startIndex:endIndex,:) stt%mfp_slip=>plasticState(phase)%state(startIndex:endIndex,:)
@ -591,7 +584,6 @@ plastic_disloUCLA_Noutput(phase_plasticityInstance(p)) = plastic_disloUCLA_Noutp
endIndex=endIndex+ns endIndex=endIndex+ns
stt%threshold_stress_slip=>plasticState(phase)%state(startIndex:endIndex,:) stt%threshold_stress_slip=>plasticState(phase)%state(startIndex:endIndex,:)
allocate(mse%invLambda(prm%totalNslip,NofMyPhase),source=0.0_pReal)
allocate(mse%mfp(prm%totalNslip,NofMyPhase),source=0.0_pReal) allocate(mse%mfp(prm%totalNslip,NofMyPhase),source=0.0_pReal)
allocate(mse%threshold_stress(prm%totalNslip,NofMyPhase),source=0.0_pReal) allocate(mse%threshold_stress(prm%totalNslip,NofMyPhase),source=0.0_pReal)
@ -615,7 +607,8 @@ subroutine plastic_disloUCLA_stateInit(ph,instance)
lattice_maxNslipFamily, & lattice_maxNslipFamily, &
lattice_mu lattice_mu
use material, only: & use material, only: &
plasticState plasticState, &
material_phase
implicit none implicit none
integer(pInt), intent(in) :: & integer(pInt), intent(in) :: &
@ -641,19 +634,18 @@ subroutine plastic_disloUCLA_stateInit(ph,instance)
forall (i = 1_pInt:ns) & forall (i = 1_pInt:ns) &
invLambdaSlip0(i) = sqrt(dot_product((prm%rho0+prm%rhoDip0),plastic_disloUCLA_forestProjectionEdge(1:ns,i,instance)))/ & invLambdaSlip0(i) = sqrt(dot_product((prm%rho0+prm%rhoDip0),plastic_disloUCLA_forestProjectionEdge(1:ns,i,instance)))/ &
plastic_disloUCLA_CLambdaSlipPerSlipSystem(i,instance) plastic_disloUCLA_CLambdaSlipPerSlipSystem(i,instance)
tempState(3_pInt*ns+1:4_pInt*ns) = invLambdaSlip0
forall (i = 1_pInt:ns) & forall (i = 1_pInt:ns) &
MeanFreePathSlip0(i) = & MeanFreePathSlip0(i) = &
plastic_disloUCLA_GrainSize(instance)/(1.0_pReal+invLambdaSlip0(i)*plastic_disloUCLA_GrainSize(instance)) plastic_disloUCLA_GrainSize(instance)/(1.0_pReal+invLambdaSlip0(i)*plastic_disloUCLA_GrainSize(instance))
tempState(4_pInt*ns+1:5_pInt*ns) = MeanFreePathSlip0 tempState(3_pInt*ns+1:4_pInt*ns) = MeanFreePathSlip0
forall (i = 1_pInt:ns) & forall (i = 1_pInt:ns) &
tauSlipThreshold0(i) = & tauSlipThreshold0(i) = &
lattice_mu(ph)*prm%burgers(i) * & lattice_mu(ph)*prm%burgers(i) * &
sqrt(dot_product((prm%rho0+prm%rhoDip0),plastic_disloUCLA_interactionMatrix_SlipSlip(i,1:ns,instance))) sqrt(dot_product((prm%rho0+prm%rhoDip0),plastic_disloUCLA_interactionMatrix_SlipSlip(i,1:ns,instance)))
tempState(5_pInt*ns+1:6_pInt*ns) = tauSlipThreshold0 tempState(4_pInt*ns+1:5_pInt*ns) = tauSlipThreshold0
plasticState(ph)%state = spread(tempState,2,size(plasticState(ph)%state(1,:))) plasticState(ph)%state = spread(tempState,2,size(plasticState(ph)%state(1,:)))
end associate end associate
@ -668,7 +660,8 @@ subroutine plastic_disloUCLA_microstructure(temperature,ipc,ip,el)
pi pi
use material, only: & use material, only: &
phase_plasticityInstance, & phase_plasticityInstance, &
phaseAt, phasememberAt phaseAt, phasememberAt, &
material_phase
use lattice, only: & use lattice, only: &
lattice_mu lattice_mu
@ -685,7 +678,8 @@ subroutine plastic_disloUCLA_microstructure(temperature,ipc,ip,el)
ns,s, & ns,s, &
ph, & ph, &
of of
real(pReal), dimension(plastic_disloUCLA_totalNslip(phase_plasticityInstance(material_phase(ipc,ip,el)))) :: &
invLambdaSlip
!* Shortened notation !* Shortened notation
of = phasememberAt(ipc,ip,el) of = phasememberAt(ipc,ip,el)
ph = phaseAt(ipc,ip,el) ph = phaseAt(ipc,ip,el)
@ -694,7 +688,7 @@ subroutine plastic_disloUCLA_microstructure(temperature,ipc,ip,el)
associate(prm => param(instance), stt => state(instance)) associate(prm => param(instance), stt => state(instance))
!* 1/mean free distance between 2 forest dislocations seen by a moving dislocation !* 1/mean free distance between 2 forest dislocations seen by a moving dislocation
forall (s = 1_pInt:ns) & forall (s = 1_pInt:ns) &
stt%invLambdaSlip(s,of) = & invLambdaSlip(s) = &
sqrt(dot_product((stt%rhoEdge(1_pInt:ns,of)+stt%rhoEdgeDip(1_pInt:ns,of)),& sqrt(dot_product((stt%rhoEdge(1_pInt:ns,of)+stt%rhoEdgeDip(1_pInt:ns,of)),&
plastic_disloUCLA_forestProjectionEdge(1:ns,s,instance)))/ & plastic_disloUCLA_forestProjectionEdge(1:ns,s,instance)))/ &
plastic_disloUCLA_CLambdaSlipPerSlipSystem(s,instance) plastic_disloUCLA_CLambdaSlipPerSlipSystem(s,instance)
@ -703,7 +697,7 @@ subroutine plastic_disloUCLA_microstructure(temperature,ipc,ip,el)
do s = 1_pInt,ns do s = 1_pInt,ns
stt%mfp_slip(s,of) = & stt%mfp_slip(s,of) = &
plastic_disloUCLA_GrainSize(instance)/& plastic_disloUCLA_GrainSize(instance)/&
(1.0_pReal+plastic_disloUCLA_GrainSize(instance)*(stt%invLambdaSlip(s,of))) (1.0_pReal+plastic_disloUCLA_GrainSize(instance)*(invLambdaSlip(s)))
enddo enddo
!* threshold stress for dislocation motion !* threshold stress for dislocation motion