introduced case in dislotwin for bcc (peierls stress as critical stress)

renamed some parameters, now exponents (p,q) for slip are per family, shear band got own ones. exponent for twin (r) now per family

fixed bugs in lattice ("empty" interactions should be 1 not zero)

see both Phase examples to check what is needed
This commit is contained in:
Martin Diehl 2014-03-11 17:40:59 +00:00
parent 6781d7d8a5
commit ef8fbf4dda
5 changed files with 34 additions and 59 deletions

View File

@ -31,15 +31,15 @@ grainsize 2.0e-5 # Average grain size [m]
SolidSolutionStrength 1.5e8 # Strength due to elements in solid solution SolidSolutionStrength 1.5e8 # Strength due to elements in solid solution
### Dislocation glide parameters ### ### Dislocation glide parameters ###
Nslip 12 Nslip 12 0
slipburgers 2.56e-10 # Burgers vector of slip system [m] slipburgers 2.56e-10 0 # Burgers vector of slip system [m]
rhoedgedip0 1.0 # Initial dislocation density [m/m**3] rhoedgedip0 1.0 0 # Initial dislocation density [m/m**3]
rhoedge0 1.0e12 # Initial dislocation density [m/m**3] rhoedge0 1.0e12 0 # Initial dislocation density [m/m**3]
v0 1.0e-4 # Initial glide velocity [m/s] v0 1.0e-4 0 # Initial glide velocity [m/s]
Qedge 3.7e-19 # Activation energy for dislocation glide [J] Qedge 3.7e-19 0 # Activation energy for dislocation glide [J]
pexponent 1.0 # p-exponent in glide velocity p_slip 1.0 0.0 # p-exponent in glide velocity
qexponent 1.0 # q-exponent in glide velocity q_slip 1.0 0.0 # q-exponent in glide velocity
tau_peierls 0.0 # Peierls stress (only used for bcc materials)
# hardening of glide # hardening of glide
CLambdaSlip 10.0 0 # Adj. parameter controlling dislocation mean free path CLambdaSlip 10.0 0 # Adj. parameter controlling dislocation mean free path
D0 4.0e-5 # Vacancy diffusion prefactor [m**2/s] D0 4.0e-5 # Vacancy diffusion prefactor [m**2/s]
@ -53,6 +53,8 @@ interactionSlipSlip 0.122 0.122 0.625 0.07 0.137 0.122 # Interaction coefficient
shearbandresistance 180e6 shearbandresistance 180e6
shearbandvelocity 1e-4 # set to zero to turn shear banding of shearbandvelocity 1e-4 # set to zero to turn shear banding of
QedgePerSbSystem 3.7e-19 # Activation energy for shear banding [J] QedgePerSbSystem 3.7e-19 # Activation energy for shear banding [J]
p_shearband 1.0 # p-exponent in glide velocity
q_shearband 1.0 # q-exponent in glide velocity
### Twinning parameters ### ### Twinning parameters ###
Ntwin 12 Ntwin 12
@ -60,14 +62,13 @@ twinburgers 1.47e-10 # Burgers vector of twin system [m]
twinsize 5.0e-8 # Twin stack mean thickness [m] twinsize 5.0e-8 # Twin stack mean thickness [m]
L0 442.0 # Length of twin nuclei in Burgers vectors L0 442.0 # Length of twin nuclei in Burgers vectors
maxtwinfraction 1.0 # Maximum admissible twin volume fraction maxtwinfraction 1.0 # Maximum admissible twin volume fraction
Ndot0 0.0 # Number of potential sources per volume per time [1/m**3.s]
xc 1.0e-9 # critical distance for formation of twin nucleus xc 1.0e-9 # critical distance for formation of twin nucleus
VcrossSlip 1.67e-29 # cross slip volume VcrossSlip 1.67e-29 # cross slip volume
rexponent 10.0 # r-exponent in twin formation probability r_twin 10.0 # r-exponent in twin formation probability
Cmfptwin 1.0 # Adj. parameter controlling twin mean free path Cmfptwin 1.0 # Adj. parameter controlling twin mean free path
Cthresholdtwin 1.0 # Adj. parameter controlling twin threshold stress Cthresholdtwin 1.0 # Adj. parameter controlling twin threshold stress
interactionSlipTwin 0.0 1.0 1.0 # Dislocation-Twin interaction coefficients interactionSlipTwin 0.0 1.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 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 dependence of stacking fault energy dSFE_dT 0.0002 # temperature dependance of stacking fault energy

View File

@ -17,47 +17,19 @@ SolidSolutionStrength 1.5e8 # Strength due to elements in solid solution
#per family #per family
Nslip 12 0 Nslip 12 0
slipburgers 2.72e-10 # Burgers vector of slip system [m] slipburgers 2.72e-10 # Burgers vector of slip system [m]
rhoedge0 1.0e12 # Initial dislocation density [m/m**3] rhoedge0 1.0e12 # Initial edge dislocation density [m/m**3]
rhoedgedip0 1.0 # Initial dislocation density [m/m**3] rhoedgedip0 1.0 # Initial edged dipole dislocation density [m/m**3]
v0 1.0e-4 # Initial glide velocity [m/s] v0 1.0e-4 # Initial glide velocity [m/s]
Qedge 2.725e-19 # Activation energy for dislocation glide [J] Qedge 2.725e-19 # Activation energy for dislocation glide [J]
pexponent 0.78 # p-exponent in glide velocity p_slip 0.78 # p-exponent in glide velocity
qexponent 1.58 # q-exponent in glide velocity q_slip 1.58 # q-exponent in glide velocity
tau_peierls 2.03e9 # peierls stress (for bcc) tau_peierls 2.03e9 # peierls stress (for bcc)
#hardening #hardening
CLambdaSlip 10.0 # Adj. parameter controlling dislocation mean free path CLambdaSlip 10.0 # Adj. parameter controlling dislocation mean free path
D0 4.0e-5 # Vacancy diffusion prefactor [m**2/s] D0 4.0e-5 # Vacancy diffusion prefactor [m**2/s]
Qsd 4.5e-19 # Activation energy for climb [J] Qsd 4.5e-19 # Activation energy for climb [J]
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.0
interactionSlipSlip 0.122 0.122 0.625 0.07 0.137 0.122 # Interaction coefficients (Kubin et al. 2008)
### no shear banding, no twinning
shearbandvelocity 0.0 # no shear banding
Ntwin 0 # no shear banding
### Shearband parameters ###
shearbandresistance 180e6
QedgePerSbSystem 3.7e-19 # Activation energy for shear banding [J]
### twinning parameter ###
twinburgers 1.47e-10 # Burgers vector of twin system [m]
twinsize 5.0e-8 # Twin stack mean thickness [m]
L0 442.0 # Length of twin nuclei in Burgers vectors
maxtwinfraction 1.0 # Maximum admissible twin volume fraction
Ndot0 0.0 # Number of potential sources per volume per time [1/m**3.s]
xc 1.0e-9 # critical distance for formation of twin nucleus
VcrossSlip 1.67e-29 # cross slip volume
rexponent 10.0 # r-exponent in twin formation probability
Cmfptwin 1.0 # Adj. parameter controlling twin mean free path
Cthresholdtwin 1.0 # Adj. parameter controlling twin threshold stress
interactionSlipTwin 0.0 0.0 0.0 # Dislocation-Twin interaction coefficients
interactionTwinTwin 0.0 0.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
dSFE_dT 0.0002 # temperature dependance of stacking fault energy

View File

@ -159,7 +159,7 @@ subroutine constitutive_init
if (any(phase_plasticity == PLASTICITY_PHENOPOWERLAW_ID)) call constitutive_phenopowerlaw_init(FILEUNIT) if (any(phase_plasticity == PLASTICITY_PHENOPOWERLAW_ID)) call constitutive_phenopowerlaw_init(FILEUNIT)
if (any(phase_plasticity == PLASTICITY_TITANMOD_ID)) call constitutive_titanmod_init(FILEUNIT) if (any(phase_plasticity == PLASTICITY_TITANMOD_ID)) call constitutive_titanmod_init(FILEUNIT)
if (any(phase_plasticity == PLASTICITY_DISLOTWIN_ID)) call constitutive_dislotwin_init(FILEUNIT) if (any(phase_plasticity == PLASTICITY_DISLOTWIN_ID)) call constitutive_dislotwin_init(FILEUNIT)
if (any(phase_plasticity == PLASTICITY_NONLOCAL_ID)) call constitutive_nonlocal_init(FILEUNIT) if (any(phase_plasticity == PLASTICITY_NONLOCAL_ID)) call constitutive_nonlocal_init(FILEUNIT)
close(FILEUNIT) close(FILEUNIT)
write(6,'(/,a)') ' <<<+- constitutive init -+>>>' write(6,'(/,a)') ' <<<+- constitutive init -+>>>'

View File

@ -326,7 +326,7 @@ integer(pInt), intent(in) :: fileUnit
integer(pInt), parameter :: MAXNCHUNKS = LATTICE_maxNinteraction + 1_pInt integer(pInt), parameter :: MAXNCHUNKS = LATTICE_maxNinteraction + 1_pInt
integer(pInt), & integer(pInt), &
dimension(1_pInt+2_pInt*MAXNCHUNKS) :: positions dimension(1_pInt+2_pInt*MAXNCHUNKS) :: positions
integer(pInt) :: phase = 0_pInt, & integer(pInt) :: phase, &
maxNinstances, & maxNinstances, &
maxTotalNslip, & maxTotalNslip, &
f, & ! index of my slip family f, & ! index of my slip family
@ -891,9 +891,9 @@ allocate(peierlsStress(maxTotalNslip,2,maxNinstances),
allocate(colinearSystem(maxTotalNslip,maxNinstances), source=0_pInt) allocate(colinearSystem(maxTotalNslip,maxNinstances), source=0_pInt)
allocate(nonSchmidProjection(3,3,4,maxTotalNslip,maxNinstances), source=0.0_pReal) allocate(nonSchmidProjection(3,3,4,maxTotalNslip,maxNinstances), source=0.0_pReal)
initializeInstances: do phase = 1_pInt, size(phase_plasticity) initializeInstances: do phase = 1_pInt, size(phase_plasticity)
if (phase_plasticity(phase) == PLASTICITY_NONLOCAL_ID) then if (phase_plasticity(phase) == PLASTICITY_NONLOCAL_ID) then
instance = phase_plasticityInstance(phase)
!*** Inverse lookup of my slip system family and the slip system in lattice !*** Inverse lookup of my slip system family and the slip system in lattice
l = 0_pInt l = 0_pInt
@ -1128,10 +1128,10 @@ allocate(nonSchmidProjection(3,3,4,maxTotalNslip,maxNinstances),
nonSchmidProjection(1:3,1:3,2,s,instance) = nonSchmidProjection(1:3,1:3,2,s,instance) & nonSchmidProjection(1:3,1:3,2,s,instance) = nonSchmidProjection(1:3,1:3,2,s,instance) &
+ nonSchmidCoeff(l,instance) * lattice_Sslip(1:3,1:3,2*l+1,slipSystemLattice(s,instance),phase) + nonSchmidCoeff(l,instance) * lattice_Sslip(1:3,1:3,2*l+1,slipSystemLattice(s,instance),phase)
enddo enddo
nonSchmidProjection(1:3,1:3,3,s,instance) = -nonSchmidProjection(1:3,1:3,2,s,phase) nonSchmidProjection(1:3,1:3,3,s,instance) = -nonSchmidProjection(1:3,1:3,2,s,instance)
nonSchmidProjection(1:3,1:3,4,s,instance) = -nonSchmidProjection(1:3,1:3,1,s,phase) nonSchmidProjection(1:3,1:3,4,s,instance) = -nonSchmidProjection(1:3,1:3,1,s,instance)
forall (t = 1:4) & forall (t = 1:4) &
nonSchmidProjection(1:3,1:3,t,s,instance) = nonSchmidProjection(1:3,1:3,t,s,phase) & nonSchmidProjection(1:3,1:3,t,s,instance) = nonSchmidProjection(1:3,1:3,t,s,instance) &
+ lattice_Sslip(1:3,1:3,1,slipSystemLattice(s,instance),phase) + lattice_Sslip(1:3,1:3,1,slipSystemLattice(s,instance),phase)
enddo enddo
endif endif
@ -1194,6 +1194,8 @@ maxNinstances = int(count(phase_plasticity == PLASTICITY_NONLOCAL_ID),pInt)
do e = 1_pInt,mesh_NcpElems do e = 1_pInt,mesh_NcpElems
do i = 1_pInt,FE_Nips(FE_geomtype(mesh_element(2,e))) do i = 1_pInt,FE_Nips(FE_geomtype(mesh_element(2,e)))
if (PLASTICITY_NONLOCAL_ID == phase_plasticity(material_phase(1,i,e))) & if (PLASTICITY_NONLOCAL_ID == phase_plasticity(material_phase(1,i,e))) &
write(6,*) shape(state(1,i,e)%p)
flush(6)
state(1,i,e)%p = 0.0_pReal state(1,i,e)%p = 0.0_pReal
enddo enddo
enddo enddo
@ -1207,7 +1209,7 @@ do instance = 1_pInt,maxNinstances
! get the total volume of the instance ! get the total volume of the instance
minimumIpVolume = 1e99_pReal minimumIpVolume = 1e99_pReal !use huge here?
totalVolume = 0.0_pReal totalVolume = 0.0_pReal
do e = 1_pInt,mesh_NcpElems do e = 1_pInt,mesh_NcpElems
do i = 1_pInt,FE_Nips(FE_geomtype(mesh_element(2,e))) do i = 1_pInt,FE_Nips(FE_geomtype(mesh_element(2,e)))

View File

@ -185,7 +185,7 @@ module lattice
!< 2: screw trace between slip system and twin habit plane (easy cross slip) !< 2: screw trace between slip system and twin habit plane (easy cross slip)
!< 3: other interaction !< 3: other interaction
integer(pInt), dimension(lattice_fcc_Ntwin,lattice_fcc_Nslip), parameter, public :: & integer(pInt), dimension(lattice_fcc_Ntwin,lattice_fcc_Nslip), parameter, public :: &
lattice_fcc_interactionTwinSlip = 0_pInt !< Twin--Slip interaction types for fcc lattice_fcc_interactionTwinSlip = 1_pInt !< Twin--Slip interaction types for fcc
integer(pInt), dimension(lattice_fcc_Ntwin,lattice_fcc_Ntwin), parameter,public :: & integer(pInt), dimension(lattice_fcc_Ntwin,lattice_fcc_Ntwin), parameter,public :: &
lattice_fcc_interactionTwinTwin = reshape(int( [& lattice_fcc_interactionTwinTwin = reshape(int( [&
@ -360,7 +360,7 @@ module lattice
!< 2: screw trace between slip system and twin habit plane (easy cross slip) !< 2: screw trace between slip system and twin habit plane (easy cross slip)
!< 3: other interaction !< 3: other interaction
integer(pInt), dimension(lattice_bcc_Ntwin,lattice_bcc_Nslip), parameter, public :: & integer(pInt), dimension(lattice_bcc_Ntwin,lattice_bcc_Nslip), parameter, public :: &
lattice_bcc_interactionTwinSlip = 0_pInt !< Twin--slip interaction types for bcc @todo not implemented yet lattice_bcc_interactionTwinSlip = 1_pInt !< Twin--slip interaction types for bcc @todo not implemented yet
integer(pInt), dimension(lattice_bcc_Ntwin,lattice_bcc_Ntwin), parameter, public :: & integer(pInt), dimension(lattice_bcc_Ntwin,lattice_bcc_Ntwin), parameter, public :: &
lattice_bcc_interactionTwinTwin = reshape(int( [& lattice_bcc_interactionTwinTwin = reshape(int( [&
@ -1032,17 +1032,17 @@ subroutine lattice_initializeStructure(myPhase,CoverA)
td(1:3,i) = lattice_fcc_systemTwin(1:3,i) td(1:3,i) = lattice_fcc_systemTwin(1:3,i)
tn(1:3,i) = lattice_fcc_systemTwin(4:6,i) tn(1:3,i) = lattice_fcc_systemTwin(4:6,i)
ts(i) = lattice_fcc_shearTwin(i) ts(i) = lattice_fcc_shearTwin(i)
enddo enddo
lattice_NslipSystem(1:lattice_maxNslipFamily,myPhase) = lattice_fcc_NslipSystem lattice_NslipSystem(1:lattice_maxNslipFamily,myPhase) = lattice_fcc_NslipSystem
lattice_NtwinSystem(1:lattice_maxNtwinFamily,myPhase) = lattice_fcc_NtwinSystem lattice_NtwinSystem(1:lattice_maxNtwinFamily,myPhase) = lattice_fcc_NtwinSystem
lattice_NnonSchmid(myPhase) = lattice_fcc_NnonSchmid lattice_NnonSchmid(myPhase) = lattice_fcc_NnonSchmid
lattice_interactionSlipSlip(1:lattice_fcc_Nslip,1:lattice_fcc_Nslip,myPhase) = & lattice_interactionSlipSlip(1:myNslip,1:myNslip,myPhase) = &
lattice_fcc_interactionSlipSlip lattice_fcc_interactionSlipSlip
lattice_interactionSlipTwin(1:lattice_fcc_Nslip,1:lattice_fcc_Ntwin,myPhase) = & lattice_interactionSlipTwin(1:myNslip,1:myNtwin,myPhase) = &
lattice_fcc_interactionSlipTwin lattice_fcc_interactionSlipTwin
lattice_interactionTwinSlip(1:lattice_fcc_Ntwin,1:lattice_fcc_Nslip,myPhase) = & lattice_interactionTwinSlip(1:myNtwin,1:myNslip,myPhase) = &
lattice_fcc_interactionTwinSlip lattice_fcc_interactionTwinSlip
lattice_interactionTwinTwin(1:lattice_fcc_Ntwin,1:lattice_fcc_Ntwin,myPhase) = & lattice_interactionTwinTwin(1:myNtwin,1:myNtwin,myPhase) = &
lattice_fcc_interactionTwinTwin lattice_fcc_interactionTwinTwin
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------