introduced atol_twinfrac for dislotwin
set values in material.config example atol_rho 1.0, atol_twinFrac 1.0e-7
This commit is contained in:
parent
77c0b32af9
commit
cd0325baf1
|
@ -427,7 +427,7 @@ pexponent 1.0 # p-exponent in glide velocity
|
||||||
qexponent 1.0 # q-exponent in glide velocity
|
qexponent 1.0 # q-exponent in glide velocity
|
||||||
Catomicvolume 1.0 # Adj. parameter controlling the atomic volume [in b]
|
Catomicvolume 1.0 # Adj. parameter controlling the atomic volume [in b]
|
||||||
Cedgedipmindistance 1.0 # Adj. parameter controlling the minimum dipole distance [in b]
|
Cedgedipmindistance 1.0 # Adj. parameter controlling the minimum dipole distance [in b]
|
||||||
atol_rho 1.0e-200
|
atol_rho 1.0
|
||||||
interactionSlipSlip 0.122 0.122 0.625 0.07 0.137 0.122 # Interaction coefficients (Kubin et al. 2008)
|
interactionSlipSlip 0.122 0.122 0.625 0.07 0.137 0.122 # Interaction coefficients (Kubin et al. 2008)
|
||||||
|
|
||||||
### Shearband parameters ###
|
### Shearband parameters ###
|
||||||
|
@ -447,6 +447,7 @@ Cmfptwin 1.0 # Adj. parameter controlling twin mean free
|
||||||
Cthresholdtwin 1.0 # Adj. parameter controlling twin threshold stress
|
Cthresholdtwin 1.0 # Adj. parameter controlling twin threshold stress
|
||||||
interactionSlipTwin 0.0 1.0 # Dislocation-Twin interaction coefficients
|
interactionSlipTwin 0.0 1.0 # Dislocation-Twin interaction coefficients
|
||||||
interactionTwinTwin 0.0 1.0 # Twin-Twin interaction coefficients
|
interactionTwinTwin 0.0 1.0 # Twin-Twin interaction coefficients
|
||||||
|
atol_twinFrac 1.0e-7
|
||||||
SFE_0K -0.0396 # stacking fault energy at zero K; TWIP steel: -0.0526; Cu: -0.0396
|
SFE_0K -0.0396 # stacking fault energy at zero K; TWIP steel: -0.0526; Cu: -0.0396
|
||||||
dSFE_dT 0.0002 # temperature dependance of stacking fault energy
|
dSFE_dT 0.0002 # temperature dependance of stacking fault energy
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,8 @@ real(pReal), dimension(:), allocatable :: constitutive_dislotwin
|
||||||
constitutive_dislotwin_sbQedge, & ! FIXED (for now) value for shearband systems Qedge
|
constitutive_dislotwin_sbQedge, & ! FIXED (for now) value for shearband systems Qedge
|
||||||
constitutive_dislotwin_SFE_0K, & ! stacking fault energy at zero K
|
constitutive_dislotwin_SFE_0K, & ! stacking fault energy at zero K
|
||||||
constitutive_dislotwin_dSFE_dT, & ! temperature dependance of stacking fault energy
|
constitutive_dislotwin_dSFE_dT, & ! temperature dependance of stacking fault energy
|
||||||
constitutive_dislotwin_aTolRho ! absolute tolerance for integration of dislocation density
|
constitutive_dislotwin_aTolRho, & ! absolute tolerance for integration of dislocation density
|
||||||
|
constitutive_dislotwin_aTolTwinFrac ! absolute tolerance for integration of twin volume fraction
|
||||||
real(pReal), dimension(:,:,:), allocatable :: constitutive_dislotwin_Cslip_66 ! elasticity matrix in Mandel notation for each instance
|
real(pReal), dimension(:,:,:), allocatable :: constitutive_dislotwin_Cslip_66 ! elasticity matrix in Mandel notation for each instance
|
||||||
real(pReal), dimension(:,:,:,:), allocatable :: constitutive_dislotwin_Ctwin_66 ! twin elasticity matrix in Mandel notation for each instance
|
real(pReal), dimension(:,:,:,:), allocatable :: constitutive_dislotwin_Ctwin_66 ! twin elasticity matrix in Mandel notation for each instance
|
||||||
real(pReal), dimension(:,:,:,:,:), allocatable :: constitutive_dislotwin_Cslip_3333 ! elasticity matrix for each instance
|
real(pReal), dimension(:,:,:,:,:), allocatable :: constitutive_dislotwin_Cslip_3333 ! elasticity matrix for each instance
|
||||||
|
@ -211,6 +212,8 @@ allocate(constitutive_dislotwin_L0(maxNinstance))
|
||||||
constitutive_dislotwin_L0 = 0.0_pReal
|
constitutive_dislotwin_L0 = 0.0_pReal
|
||||||
allocate(constitutive_dislotwin_aTolRho(maxNinstance))
|
allocate(constitutive_dislotwin_aTolRho(maxNinstance))
|
||||||
constitutive_dislotwin_aTolRho = 0.0_pReal
|
constitutive_dislotwin_aTolRho = 0.0_pReal
|
||||||
|
allocate(constitutive_dislotwin_aTolTwinFrac(maxNinstance))
|
||||||
|
constitutive_dislotwin_aTolTwinFrac = 0.0_pReal
|
||||||
allocate(constitutive_dislotwin_Cslip_66(6,6,maxNinstance))
|
allocate(constitutive_dislotwin_Cslip_66(6,6,maxNinstance))
|
||||||
constitutive_dislotwin_Cslip_66 = 0.0_pReal
|
constitutive_dislotwin_Cslip_66 = 0.0_pReal
|
||||||
allocate(constitutive_dislotwin_Cslip_3333(3,3,3,3,maxNinstance))
|
allocate(constitutive_dislotwin_Cslip_3333(3,3,3,3,maxNinstance))
|
||||||
|
@ -363,6 +366,8 @@ do ! read thru sections of
|
||||||
constitutive_dislotwin_Qsd(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_dislotwin_Qsd(i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('atol_rho')
|
case ('atol_rho')
|
||||||
constitutive_dislotwin_aTolRho(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_dislotwin_aTolRho(i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('atol_twinfrac')
|
||||||
|
constitutive_dislotwin_aTolTwinFrac(i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('cmfptwin')
|
case ('cmfptwin')
|
||||||
constitutive_dislotwin_Cmfptwin(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_dislotwin_Cmfptwin(i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('cthresholdtwin')
|
case ('cthresholdtwin')
|
||||||
|
@ -444,15 +449,17 @@ enddo
|
||||||
//constitutive_dislotwin_label//')')
|
//constitutive_dislotwin_label//')')
|
||||||
if (constitutive_dislotwin_Qsd(i) <= 0.0_pReal) call IO_error(211_pInt,e=i,ext_msg='Qsd (' &
|
if (constitutive_dislotwin_Qsd(i) <= 0.0_pReal) call IO_error(211_pInt,e=i,ext_msg='Qsd (' &
|
||||||
//constitutive_dislotwin_label//')')
|
//constitutive_dislotwin_label//')')
|
||||||
|
if (constitutive_dislotwin_SFE_0K(i) == 0.0_pReal .and. &
|
||||||
|
constitutive_dislotwin_dSFE_dT(i) == 0.0_pReal) call IO_error(211_pInt,e=i,ext_msg='SFE (' &
|
||||||
|
//constitutive_dislotwin_label//')')
|
||||||
if (constitutive_dislotwin_aTolRho(i) <= 0.0_pReal) call IO_error(211_pInt,e=i,ext_msg='aTolRho (' &
|
if (constitutive_dislotwin_aTolRho(i) <= 0.0_pReal) call IO_error(211_pInt,e=i,ext_msg='aTolRho (' &
|
||||||
//constitutive_dislotwin_label//')')
|
//constitutive_dislotwin_label//')')
|
||||||
if (constitutive_dislotwin_sbResistance(i) <= 0.0_pReal) call IO_error(211_pInt,e=i,ext_msg='sbResistance (' &
|
if (constitutive_dislotwin_aTolTwinFrac(i) <= 0.0_pReal) call IO_error(211_pInt,e=i,ext_msg='aTolTwinFrac (' &
|
||||||
|
//constitutive_dislotwin_label//')')
|
||||||
|
if (constitutive_dislotwin_sbResistance(i) < 0.0_pReal) call IO_error(211_pInt,e=i,ext_msg='sbResistance (' &
|
||||||
//constitutive_dislotwin_label//')')
|
//constitutive_dislotwin_label//')')
|
||||||
if (constitutive_dislotwin_sbVelocity(i) < 0.0_pReal) call IO_error(211_pInt,e=i,ext_msg='sbVelocity (' &
|
if (constitutive_dislotwin_sbVelocity(i) < 0.0_pReal) call IO_error(211_pInt,e=i,ext_msg='sbVelocity (' &
|
||||||
//constitutive_dislotwin_label//')')
|
//constitutive_dislotwin_label//')')
|
||||||
if (constitutive_dislotwin_SFE_0K(i) == 0.0_pReal .AND. &
|
|
||||||
constitutive_dislotwin_dSFE_dT(i) == 0.0_pReal) call IO_error(211_pInt,e=i,ext_msg='SFE (' &
|
|
||||||
//constitutive_dislotwin_label//')')
|
|
||||||
|
|
||||||
!* Determine total number of active slip or twin systems
|
!* Determine total number of active slip or twin systems
|
||||||
constitutive_dislotwin_Nslip(:,i) = min(lattice_NslipSystem(:,myStructure),constitutive_dislotwin_Nslip(:,i))
|
constitutive_dislotwin_Nslip(:,i) = min(lattice_NslipSystem(:,myStructure),constitutive_dislotwin_Nslip(:,i))
|
||||||
|
@ -750,18 +757,22 @@ constitutive_dislotwin_stateInit(6_pInt*ns+4_pInt*nt+1_pInt:6_pInt*ns+5_pInt*nt)
|
||||||
end function
|
end function
|
||||||
|
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @brief absolute state tolerance
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
pure function constitutive_dislotwin_aTolState(myInstance)
|
pure function constitutive_dislotwin_aTolState(myInstance)
|
||||||
!*********************************************************************
|
|
||||||
!* absolute state tolerance *
|
|
||||||
!*********************************************************************
|
|
||||||
use prec, only: pReal, pInt
|
|
||||||
implicit none
|
implicit none
|
||||||
|
integer(pInt), intent(in) :: myInstance ! number specifying the current instance of the plasticity
|
||||||
|
real(pReal), dimension(constitutive_dislotwin_sizeState(myInstance)) :: &
|
||||||
|
constitutive_dislotwin_aTolState ! relevant state values for the current instance of this plasticity
|
||||||
|
|
||||||
!* Input-Output variables
|
|
||||||
integer(pInt), intent(in) :: myInstance
|
|
||||||
real(pReal), dimension(constitutive_dislotwin_sizeState(myInstance)) :: constitutive_dislotwin_aTolState
|
|
||||||
|
|
||||||
constitutive_dislotwin_aTolState = constitutive_dislotwin_aTolRho(myInstance)
|
constitutive_dislotwin_aTolState(1:2*constitutive_dislotwin_totalNslip(myInstance)) = &
|
||||||
|
constitutive_dislotwin_aTolRho(myInstance)
|
||||||
|
constitutive_dislotwin_aTolState(2*constitutive_dislotwin_totalNslip(myInstance)+1: &
|
||||||
|
2*constitutive_dislotwin_totalNslip(myInstance)+&
|
||||||
|
constitutive_dislotwin_totalNtwin(myInstance)) = &
|
||||||
|
constitutive_dislotwin_aTolTwinFrac(myInstance)
|
||||||
|
|
||||||
end function constitutive_dislotwin_aTolState
|
end function constitutive_dislotwin_aTolState
|
||||||
|
|
||||||
|
@ -1052,7 +1063,8 @@ do f = 1_pInt,lattice_maxNslipFamily ! loop over
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
!* Shear banding (shearband) part
|
!* Shear banding (shearband) part
|
||||||
if(constitutive_dislotwin_sbVelocity(myInstance) /= 0.0_pReal) then
|
if(constitutive_dislotwin_sbVelocity(myInstance) /= 0.0_pReal .or. &
|
||||||
|
constitutive_dislotwin_sbResistance(myInstance) /= 0.0_pReal) then
|
||||||
gdot_sb = 0.0_pReal
|
gdot_sb = 0.0_pReal
|
||||||
dgdot_dtausb = 0.0_pReal
|
dgdot_dtausb = 0.0_pReal
|
||||||
call math_spectralDecompositionSym33(math_Mandel6to33(Tstar_v),eigValues,eigVectors, error)
|
call math_spectralDecompositionSym33(math_Mandel6to33(Tstar_v),eigValues,eigVectors, error)
|
||||||
|
|
Loading…
Reference in New Issue