introduced H_int for family--wise assignment of initial hardening rate.
This commit is contained in:
parent
fb09f8477b
commit
739fc0f9ad
|
@ -1,4 +1,3 @@
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
!> @author Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
|
!> @author Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
|
||||||
!> @author Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
|
!> @author Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
|
||||||
!> @brief material subroutine for phenomenological crystal plasticity formulation using a powerlaw
|
!> @brief material subroutine for phenomenological crystal plasticity formulation using a powerlaw
|
||||||
|
@ -60,6 +59,7 @@ module plastic_phenopowerlaw
|
||||||
plastic_phenopowerlaw_tau0_slip, & !< initial critical shear stress for slip (input parameter, per family)
|
plastic_phenopowerlaw_tau0_slip, & !< initial critical shear stress for slip (input parameter, per family)
|
||||||
plastic_phenopowerlaw_tau0_twin, & !< initial critical shear stress for twin (input parameter, per family)
|
plastic_phenopowerlaw_tau0_twin, & !< initial critical shear stress for twin (input parameter, per family)
|
||||||
plastic_phenopowerlaw_tausat_slip, & !< maximum critical shear stress for slip (input parameter, per family)
|
plastic_phenopowerlaw_tausat_slip, & !< maximum critical shear stress for slip (input parameter, per family)
|
||||||
|
plastic_phenopowerlaw_H_int, & !< per family hardening activity(input parameter(optional), per family)
|
||||||
plastic_phenopowerlaw_nonSchmidCoeff, &
|
plastic_phenopowerlaw_nonSchmidCoeff, &
|
||||||
|
|
||||||
plastic_phenopowerlaw_interaction_SlipSlip, & !< interaction factors slip - slip (input parameter)
|
plastic_phenopowerlaw_interaction_SlipSlip, & !< interaction factors slip - slip (input parameter)
|
||||||
|
@ -197,29 +197,30 @@ subroutine plastic_phenopowerlaw_init(fileUnit)
|
||||||
source=0_pInt)
|
source=0_pInt)
|
||||||
allocate(plastic_phenopowerlaw_output(maxval(phase_Noutput),maxNinstance))
|
allocate(plastic_phenopowerlaw_output(maxval(phase_Noutput),maxNinstance))
|
||||||
plastic_phenopowerlaw_output = ''
|
plastic_phenopowerlaw_output = ''
|
||||||
allocate(plastic_phenopowerlaw_outputID(maxval(phase_Noutput),maxNinstance), source=undefined_ID)
|
allocate(plastic_phenopowerlaw_outputID(maxval(phase_Noutput),maxNinstance),source=undefined_ID)
|
||||||
allocate(plastic_phenopowerlaw_Noutput(maxNinstance), source=0_pInt)
|
allocate(plastic_phenopowerlaw_Noutput(maxNinstance), source=0_pInt)
|
||||||
allocate(plastic_phenopowerlaw_Nslip(lattice_maxNslipFamily,maxNinstance), source=0_pInt)
|
allocate(plastic_phenopowerlaw_Nslip(lattice_maxNslipFamily,maxNinstance), source=0_pInt)
|
||||||
allocate(plastic_phenopowerlaw_Ntwin(lattice_maxNtwinFamily,maxNinstance), source=0_pInt)
|
allocate(plastic_phenopowerlaw_Ntwin(lattice_maxNtwinFamily,maxNinstance), source=0_pInt)
|
||||||
allocate(plastic_phenopowerlaw_Ntrans(lattice_maxNtransFamily,maxNinstance), source=0_pInt)
|
allocate(plastic_phenopowerlaw_Ntrans(lattice_maxNtransFamily,maxNinstance),source=0_pInt)
|
||||||
allocate(plastic_phenopowerlaw_totalNslip(maxNinstance), source=0_pInt)
|
allocate(plastic_phenopowerlaw_totalNslip(maxNinstance), source=0_pInt)
|
||||||
allocate(plastic_phenopowerlaw_totalNtwin(maxNinstance), source=0_pInt)
|
allocate(plastic_phenopowerlaw_totalNtwin(maxNinstance), source=0_pInt)
|
||||||
allocate(plastic_phenopowerlaw_totalNtrans(maxNinstance), source=0_pInt)
|
allocate(plastic_phenopowerlaw_totalNtrans(maxNinstance), source=0_pInt)
|
||||||
allocate(plastic_phenopowerlaw_gdot0_slip(maxNinstance), source=0.0_pReal)
|
allocate(plastic_phenopowerlaw_gdot0_slip(maxNinstance), source=0.0_pReal)
|
||||||
allocate(plastic_phenopowerlaw_n_slip(maxNinstance), source=0.0_pReal)
|
allocate(plastic_phenopowerlaw_n_slip(maxNinstance), source=0.0_pReal)
|
||||||
allocate(plastic_phenopowerlaw_tau0_slip(lattice_maxNslipFamily,maxNinstance), source=0.0_pReal)
|
allocate(plastic_phenopowerlaw_tau0_slip(lattice_maxNslipFamily,maxNinstance),source=0.0_pReal)
|
||||||
allocate(plastic_phenopowerlaw_tausat_slip(lattice_maxNslipFamily,maxNinstance),source=0.0_pReal)
|
allocate(plastic_phenopowerlaw_tausat_slip(lattice_maxNslipFamily,maxNinstance),source=0.0_pReal)
|
||||||
allocate(plastic_phenopowerlaw_gdot0_twin(maxNinstance), source=0.0_pReal)
|
allocate(plastic_phenopowerlaw_H_int(lattice_maxNslipFamily,maxNinstance),source=0.0_pReal)
|
||||||
allocate(plastic_phenopowerlaw_n_twin(maxNinstance), source=0.0_pReal)
|
allocate(plastic_phenopowerlaw_gdot0_twin(maxNinstance), source=0.0_pReal)
|
||||||
allocate(plastic_phenopowerlaw_tau0_twin(lattice_maxNtwinFamily,maxNinstance), source=0.0_pReal)
|
allocate(plastic_phenopowerlaw_n_twin(maxNinstance), source=0.0_pReal)
|
||||||
allocate(plastic_phenopowerlaw_spr(maxNinstance), source=0.0_pReal)
|
allocate(plastic_phenopowerlaw_tau0_twin(lattice_maxNtwinFamily,maxNinstance), source=0.0_pReal)
|
||||||
allocate(plastic_phenopowerlaw_twinB(maxNinstance), source=0.0_pReal)
|
allocate(plastic_phenopowerlaw_spr(maxNinstance), source=0.0_pReal)
|
||||||
allocate(plastic_phenopowerlaw_twinC(maxNinstance), source=0.0_pReal)
|
allocate(plastic_phenopowerlaw_twinB(maxNinstance), source=0.0_pReal)
|
||||||
allocate(plastic_phenopowerlaw_twinD(maxNinstance), source=0.0_pReal)
|
allocate(plastic_phenopowerlaw_twinC(maxNinstance), source=0.0_pReal)
|
||||||
allocate(plastic_phenopowerlaw_twinE(maxNinstance), source=0.0_pReal)
|
allocate(plastic_phenopowerlaw_twinD(maxNinstance), source=0.0_pReal)
|
||||||
allocate(plastic_phenopowerlaw_h0_SlipSlip(maxNinstance), source=0.0_pReal)
|
allocate(plastic_phenopowerlaw_twinE(maxNinstance), source=0.0_pReal)
|
||||||
allocate(plastic_phenopowerlaw_h0_TwinSlip(maxNinstance), source=0.0_pReal)
|
allocate(plastic_phenopowerlaw_h0_SlipSlip(maxNinstance), source=0.0_pReal)
|
||||||
allocate(plastic_phenopowerlaw_h0_TwinTwin(maxNinstance), source=0.0_pReal)
|
allocate(plastic_phenopowerlaw_h0_TwinSlip(maxNinstance), source=0.0_pReal)
|
||||||
|
allocate(plastic_phenopowerlaw_h0_TwinTwin(maxNinstance), source=0.0_pReal)
|
||||||
allocate(plastic_phenopowerlaw_interaction_SlipSlip(lattice_maxNinteraction,maxNinstance), &
|
allocate(plastic_phenopowerlaw_interaction_SlipSlip(lattice_maxNinteraction,maxNinstance), &
|
||||||
source=0.0_pReal)
|
source=0.0_pReal)
|
||||||
allocate(plastic_phenopowerlaw_interaction_SlipTwin(lattice_maxNinteraction,maxNinstance), &
|
allocate(plastic_phenopowerlaw_interaction_SlipTwin(lattice_maxNinteraction,maxNinstance), &
|
||||||
|
@ -340,7 +341,7 @@ subroutine plastic_phenopowerlaw_init(fileUnit)
|
||||||
do j = 1_pInt, Nchunks_SlipFamilies
|
do j = 1_pInt, Nchunks_SlipFamilies
|
||||||
plastic_phenopowerlaw_Nslip(j,instance) = IO_intValue(line,chunkPos,1_pInt+j)
|
plastic_phenopowerlaw_Nslip(j,instance) = IO_intValue(line,chunkPos,1_pInt+j)
|
||||||
enddo
|
enddo
|
||||||
case ('tausat_slip','tau0_slip')
|
case ('tausat_slip','tau0_slip','H_int')
|
||||||
tempPerSlip = 0.0_pReal
|
tempPerSlip = 0.0_pReal
|
||||||
do j = 1_pInt, Nchunks_SlipFamilies
|
do j = 1_pInt, Nchunks_SlipFamilies
|
||||||
if (plastic_phenopowerlaw_Nslip(j,instance) > 0_pInt) &
|
if (plastic_phenopowerlaw_Nslip(j,instance) > 0_pInt) &
|
||||||
|
@ -351,6 +352,8 @@ subroutine plastic_phenopowerlaw_init(fileUnit)
|
||||||
plastic_phenopowerlaw_tausat_slip(1:Nchunks_SlipFamilies,instance) = tempPerSlip(1:Nchunks_SlipFamilies)
|
plastic_phenopowerlaw_tausat_slip(1:Nchunks_SlipFamilies,instance) = tempPerSlip(1:Nchunks_SlipFamilies)
|
||||||
case ('tau0_slip')
|
case ('tau0_slip')
|
||||||
plastic_phenopowerlaw_tau0_slip(1:Nchunks_SlipFamilies,instance) = tempPerSlip(1:Nchunks_SlipFamilies)
|
plastic_phenopowerlaw_tau0_slip(1:Nchunks_SlipFamilies,instance) = tempPerSlip(1:Nchunks_SlipFamilies)
|
||||||
|
case ('H_int')
|
||||||
|
plastic_phenopowerlaw_H_int(1:Nchunks_SlipFamilies,instance) = tempPerSlip(1:Nchunks_SlipFamilies)
|
||||||
end select
|
end select
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! parameters depending on number of twin families
|
! parameters depending on number of twin families
|
||||||
|
@ -967,7 +970,6 @@ subroutine plastic_phenopowerlaw_dotState(Tstar_v,ipc,ip,el)
|
||||||
offset_accshear_twin = nSlip + nTwin + 2_pInt + nSlip
|
offset_accshear_twin = nSlip + nTwin + 2_pInt + nSlip
|
||||||
plasticState(ph)%dotState(:,of) = 0.0_pReal
|
plasticState(ph)%dotState(:,of) = 0.0_pReal
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! system-independent (nonlinear) prefactors to M_Xx (X influenced by x) matrices
|
! system-independent (nonlinear) prefactors to M_Xx (X influenced by x) matrices
|
||||||
c_SlipSlip = plastic_phenopowerlaw_h0_SlipSlip(instance)*&
|
c_SlipSlip = plastic_phenopowerlaw_h0_SlipSlip(instance)*&
|
||||||
|
@ -986,7 +988,7 @@ subroutine plastic_phenopowerlaw_dotState(Tstar_v,ipc,ip,el)
|
||||||
index_myFamily = sum(lattice_NslipSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
index_myFamily = sum(lattice_NslipSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
||||||
slipSystems1: do i = 1_pInt,plastic_phenopowerlaw_Nslip(f,instance)
|
slipSystems1: do i = 1_pInt,plastic_phenopowerlaw_Nslip(f,instance)
|
||||||
j = j+1_pInt
|
j = j+1_pInt
|
||||||
left_SlipSlip(j) = 1.0_pReal ! no system-dependent left part
|
left_SlipSlip(j) = 1.0_pReal + plastic_phenopowerlaw_H_int(f,instance) ! modified no system-dependent left part
|
||||||
left_SlipTwin(j) = 1.0_pReal ! no system-dependent left part
|
left_SlipTwin(j) = 1.0_pReal ! no system-dependent left part
|
||||||
right_SlipSlip(j) = abs(1.0_pReal-plasticState(ph)%state(j,of) / &
|
right_SlipSlip(j) = abs(1.0_pReal-plasticState(ph)%state(j,of) / &
|
||||||
(plastic_phenopowerlaw_tausat_slip(f,instance)+ssat_offset)) &
|
(plastic_phenopowerlaw_tausat_slip(f,instance)+ssat_offset)) &
|
||||||
|
@ -1013,6 +1015,7 @@ subroutine plastic_phenopowerlaw_dotState(Tstar_v,ipc,ip,el)
|
||||||
enddo slipFamilies1
|
enddo slipFamilies1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
j = 0_pInt
|
j = 0_pInt
|
||||||
twinFamilies1: do f = 1_pInt,lattice_maxNtwinFamily
|
twinFamilies1: do f = 1_pInt,lattice_maxNtwinFamily
|
||||||
index_myFamily = sum(lattice_NtwinSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
index_myFamily = sum(lattice_NtwinSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
||||||
|
|
Loading…
Reference in New Issue