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