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:
Martin Diehl 2013-02-14 09:57:26 +00:00
parent 77c0b32af9
commit cd0325baf1
2 changed files with 30 additions and 17 deletions

View File

@ -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

View File

@ -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)