From ef8fbf4ddaf9e27c27c531bcca518c201c9a4ddc Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Tue, 11 Mar 2014 17:40:59 +0000 Subject: [PATCH] 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 --- .../Phase_Dislotwin_TWIP_Steel_FeMnC.config | 25 ++++++------- code/config/Phase_Dislotwin_Tungsten.config | 36 +++---------------- code/constitutive.f90 | 2 +- code/constitutive_nonlocal.f90 | 16 +++++---- code/lattice.f90 | 14 ++++---- 5 files changed, 34 insertions(+), 59 deletions(-) diff --git a/code/config/Phase_Dislotwin_TWIP_Steel_FeMnC.config b/code/config/Phase_Dislotwin_TWIP_Steel_FeMnC.config index 85551f98e..269bea5b3 100644 --- a/code/config/Phase_Dislotwin_TWIP_Steel_FeMnC.config +++ b/code/config/Phase_Dislotwin_TWIP_Steel_FeMnC.config @@ -31,15 +31,15 @@ grainsize 2.0e-5 # Average grain size [m] SolidSolutionStrength 1.5e8 # Strength due to elements in solid solution ### Dislocation glide parameters ### -Nslip 12 -slipburgers 2.56e-10 # Burgers vector of slip system [m] -rhoedgedip0 1.0 # Initial dislocation density [m/m**3] -rhoedge0 1.0e12 # Initial dislocation density [m/m**3] -v0 1.0e-4 # Initial glide velocity [m/s] -Qedge 3.7e-19 # Activation energy for dislocation glide [J] -pexponent 1.0 # p-exponent in glide velocity -qexponent 1.0 # q-exponent in glide velocity -tau_peierls 0.0 # Peierls stress (only used for bcc materials) +Nslip 12 0 +slipburgers 2.56e-10 0 # Burgers vector of slip system [m] +rhoedgedip0 1.0 0 # Initial dislocation density [m/m**3] +rhoedge0 1.0e12 0 # Initial dislocation density [m/m**3] +v0 1.0e-4 0 # Initial glide velocity [m/s] +Qedge 3.7e-19 0 # Activation energy for dislocation glide [J] +p_slip 1.0 0.0 # p-exponent in glide velocity +q_slip 1.0 0.0 # q-exponent in glide velocity + # hardening of glide CLambdaSlip 10.0 0 # Adj. parameter controlling dislocation mean free path 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 shearbandvelocity 1e-4 # set to zero to turn shear banding of 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 ### 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] 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 +r_twin 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 1.0 1.0 # Dislocation-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 -dSFE_dT 0.0002 # temperature dependence of stacking fault energy \ No newline at end of file +dSFE_dT 0.0002 # temperature dependance of stacking fault energy diff --git a/code/config/Phase_Dislotwin_Tungsten.config b/code/config/Phase_Dislotwin_Tungsten.config index 59d34ef45..9a71ac1d5 100644 --- a/code/config/Phase_Dislotwin_Tungsten.config +++ b/code/config/Phase_Dislotwin_Tungsten.config @@ -17,47 +17,19 @@ SolidSolutionStrength 1.5e8 # Strength due to elements in solid solution #per family Nslip 12 0 slipburgers 2.72e-10 # Burgers vector of slip system [m] -rhoedge0 1.0e12 # Initial dislocation density [m/m**3] -rhoedgedip0 1.0 # Initial dislocation density [m/m**3] +rhoedge0 1.0e12 # Initial edge 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] Qedge 2.725e-19 # Activation energy for dislocation glide [J] -pexponent 0.78 # p-exponent in glide velocity -qexponent 1.58 # q-exponent in glide velocity +p_slip 0.78 # p-exponent in glide velocity +q_slip 1.58 # q-exponent in glide velocity tau_peierls 2.03e9 # peierls stress (for bcc) - #hardening CLambdaSlip 10.0 # Adj. parameter controlling dislocation mean free path D0 4.0e-5 # Vacancy diffusion prefactor [m**2/s] Qsd 4.5e-19 # Activation energy for climb [J] Catomicvolume 1.0 # Adj. parameter controlling the atomic volume [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 diff --git a/code/constitutive.f90 b/code/constitutive.f90 index 91e2ea6ff..aa8928d32 100644 --- a/code/constitutive.f90 +++ b/code/constitutive.f90 @@ -159,7 +159,7 @@ subroutine constitutive_init 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_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) write(6,'(/,a)') ' <<<+- constitutive init -+>>>' diff --git a/code/constitutive_nonlocal.f90 b/code/constitutive_nonlocal.f90 index 3b4929b61..a86f8cb65 100644 --- a/code/constitutive_nonlocal.f90 +++ b/code/constitutive_nonlocal.f90 @@ -326,7 +326,7 @@ integer(pInt), intent(in) :: fileUnit integer(pInt), parameter :: MAXNCHUNKS = LATTICE_maxNinteraction + 1_pInt integer(pInt), & dimension(1_pInt+2_pInt*MAXNCHUNKS) :: positions -integer(pInt) :: phase = 0_pInt, & +integer(pInt) :: phase, & maxNinstances, & maxTotalNslip, & f, & ! index of my slip family @@ -891,9 +891,9 @@ allocate(peierlsStress(maxTotalNslip,2,maxNinstances), allocate(colinearSystem(maxTotalNslip,maxNinstances), source=0_pInt) allocate(nonSchmidProjection(3,3,4,maxTotalNslip,maxNinstances), source=0.0_pReal) - initializeInstances: do phase = 1_pInt, size(phase_plasticity) 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 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) & + nonSchmidCoeff(l,instance) * lattice_Sslip(1:3,1:3,2*l+1,slipSystemLattice(s,instance),phase) enddo - nonSchmidProjection(1:3,1:3,3,s,instance) = -nonSchmidProjection(1:3,1:3,2,s,phase) - nonSchmidProjection(1:3,1:3,4,s,instance) = -nonSchmidProjection(1:3,1:3,1,s,phase) - 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,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,instance) + forall (t = 1:4) & + 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) enddo endif @@ -1194,6 +1194,8 @@ maxNinstances = int(count(phase_plasticity == PLASTICITY_NONLOCAL_ID),pInt) do e = 1_pInt,mesh_NcpElems do i = 1_pInt,FE_Nips(FE_geomtype(mesh_element(2,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 enddo enddo @@ -1207,7 +1209,7 @@ do instance = 1_pInt,maxNinstances ! get the total volume of the instance - minimumIpVolume = 1e99_pReal + minimumIpVolume = 1e99_pReal !use huge here? totalVolume = 0.0_pReal do e = 1_pInt,mesh_NcpElems do i = 1_pInt,FE_Nips(FE_geomtype(mesh_element(2,e))) diff --git a/code/lattice.f90 b/code/lattice.f90 index 8a82e43be..30d2274c6 100644 --- a/code/lattice.f90 +++ b/code/lattice.f90 @@ -185,7 +185,7 @@ module lattice !< 2: screw trace between slip system and twin habit plane (easy cross slip) !< 3: other interaction 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 :: & lattice_fcc_interactionTwinTwin = reshape(int( [& @@ -360,7 +360,7 @@ module lattice !< 2: screw trace between slip system and twin habit plane (easy cross slip) !< 3: other interaction 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 :: & lattice_bcc_interactionTwinTwin = reshape(int( [& @@ -1032,17 +1032,17 @@ subroutine lattice_initializeStructure(myPhase,CoverA) td(1:3,i) = lattice_fcc_systemTwin(1:3,i) tn(1:3,i) = lattice_fcc_systemTwin(4:6,i) ts(i) = lattice_fcc_shearTwin(i) - enddo + enddo lattice_NslipSystem(1:lattice_maxNslipFamily,myPhase) = lattice_fcc_NslipSystem lattice_NtwinSystem(1:lattice_maxNtwinFamily,myPhase) = lattice_fcc_NtwinSystem 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_interactionSlipTwin(1:lattice_fcc_Nslip,1:lattice_fcc_Ntwin,myPhase) = & + lattice_interactionSlipTwin(1:myNslip,1:myNtwin,myPhase) = & 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_interactionTwinTwin(1:lattice_fcc_Ntwin,1:lattice_fcc_Ntwin,myPhase) = & + lattice_interactionTwinTwin(1:myNtwin,1:myNtwin,myPhase) = & lattice_fcc_interactionTwinTwin !--------------------------------------------------------------------------------------------------