From b1f4c06f9c22eb41ef593992e7accd57236a1def Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Sat, 26 Jun 2021 12:53:58 +0200 Subject: [PATCH] takeover from Christophs thesis --- .../config/Phase_Nonlocal_Aluminum.config | 63 ------------------- examples/config/Phase_Nonlocal_Nickel.config | 62 ------------------ .../phase/mechanical/plastic/nonlocal_Al.yaml | 49 +++++++++++++++ .../phase/mechanical/plastic/nonlocal_Ni.yaml | 49 +++++++++++++++ src/phase_mechanical_plastic_nonlocal.f90 | 14 ++--- 5 files changed, 105 insertions(+), 132 deletions(-) delete mode 100644 examples/config/Phase_Nonlocal_Aluminum.config delete mode 100644 examples/config/Phase_Nonlocal_Nickel.config create mode 100644 examples/config/phase/mechanical/plastic/nonlocal_Al.yaml create mode 100644 examples/config/phase/mechanical/plastic/nonlocal_Ni.yaml diff --git a/examples/config/Phase_Nonlocal_Aluminum.config b/examples/config/Phase_Nonlocal_Aluminum.config deleted file mode 100644 index 0d835d5aa..000000000 --- a/examples/config/Phase_Nonlocal_Aluminum.config +++ /dev/null @@ -1,63 +0,0 @@ -[Aluminum] -plasticity nonlocal -/nonlocal/ - -(output) rho_sgl_mob_edg_pos -(output) rho_sgl_imm_edg_pos -(output) rho_sgl_mob_edg_neg -(output) rho_sgl_imm_edg_neg -(output) rho_sgl_mob_scr_pos -(output) rho_sgl_imm_scr_pos -(output) rho_sgl_mob_scr_neg -(output) rho_sgl_imm_scr_neg -(output) rho_dip_edg -(output) rho_dip_scr -(output) rho_forest -(output) gamma -(output) tau_pass -(output) v_edg_pos -(output) v_edg_neg -(output) v_scr_pos -(output) v_scr_neg - -lattice_structure fcc -Nslip 12 # number of slip systems - -burgers 2.86e-10 # Burgers vector in m -rhoSglEdgePos0 0.25e10 # Initial positive edge single dislocation density in m/m**3 (per slip family) -rhoSglEdgeNeg0 0.25e10 # Initial negative edge single dislocation density in m/m**3 (per slip family) -rhoSglScrewPos0 0.25e10 # Initial positive screw single dislocation density in m/m**3 (per slip family) -rhoSglScrewNeg0 0.25e10 # Initial negative screw single dislocation density in m/m**3 (per slip family) -rhoDipEdge0 1e8 # Initial edge dipole dislocation density in m/m**3 (per slip family) -rhoDipScrew0 1e8 # Initial screw dipole dislocation density in m/m**3 (per slip family) -rhoSglScatter 0 # standard deviation of scatter in initial single dislocation density -#rhoSglRandom 1e12 # randomly distributed total dislocation density (sum over all slip systems and types) in m/m**3 -#rhoSglRandomBinning 1 # binning size of randomly distributed dislocations (number of dislocations per ip volume) -minimumDipoleHeightEdge 2e-9 # minimum distance for stable edge dipoles in m (per slip family) -minimumDipoleHeightScrew 2e-9 # minimum distance for stable screw dipoles in m (per slip family) -lambda0 80 # prefactor for mean free path -edgeMultiplication 0.1 # factor to which edges contribute to multiplication -atomicVolume 1.7e-29 # atomic volume in m**3 -selfdiffusionPrefactor 1e-4 # prefactor for self-diffusion coefficient in m**2/s -selfdiffusionEnergy 2.3e-19 # activation enthalpy for seld-diffusion in J -solidSolutionEnergy 2e-19 # activation energy of solid solution particles in J -solidSolutionConcentration 1e-5 # concentration of solid solution in parts per b^3 -solidSolutionSize 2 # size of solid solution obstacles in multiples of burgers vector length -peierlsStressEdge 1e5 # Peierls stress for edges in Pa (per slip family) -peierlsStressScrew 1e5 # Peierls stress for screws in Pa (per slip family) -doublekinkWidth 10 # width of double kinks in multiples of burgers vector length b -viscosity 1e-4 # viscosity for dislocation glide in Pa s -p 1 # exponent for thermal barrier profile -q 1 # exponent for thermal barrier profile -attackFrequency 50e9 # attack frequency in Hz -surfaceTransmissivity 1.0 # transmissivity of free surfaces for dislocation flux -grainboundaryTransmissivity 0.0 # transmissivity of grain boundaries for dislocation flux (grain bundaries are identified as interfaces with different textures on both sides); if not set or set to negative number, the subroutine automatically determines the transmissivity at the grain boundary -interaction_SlipSlip 0 0 0.625 0.07 0.137 0.137 0.122 # Dislocation interaction coefficient -linetension 0.8 # constant indicating the effect of the line tension on the hardening coefficients (0 to 1) -edgejog 1.0 # fraction of annihilated screw dipoles that forms edge jogs (0 to 1) -shortRangeStressCorrection 0 # switch for use of short range correction stress -cutoffRadius 1e-3 # cutoff radius for dislocation stress in m -CFLfactor 2.0 # safety factor for CFL flux check (numerical parameter) -significantRho 1e6 # minimum dislocation density considered relevant in m/m**3 -#significantN 0.1 # minimum dislocation number per ip considered relevant -randomMultiplication 0 # switch for probabilistic extension of multiplication rate diff --git a/examples/config/Phase_Nonlocal_Nickel.config b/examples/config/Phase_Nonlocal_Nickel.config deleted file mode 100644 index 7bc2e1581..000000000 --- a/examples/config/Phase_Nonlocal_Nickel.config +++ /dev/null @@ -1,62 +0,0 @@ -[Ni_nonlocal] - -elasticity hooke -plasticity nonlocal -/nonlocal/ -(output) rho_sgl_mob_edg_pos -(output) rho_sgl_imm_edg_pos -(output) rho_sgl_mob_edg_neg -(output) rho_sgl_imm_edg_neg -(output) rho_sgl_mob_scr_pos -(output) rho_sgl_imm_scr_pos -(output) rho_sgl_mob_scr_neg -(output) rho_sgl_imm_scr_neg -(output) rho_dip_edg -(output) rho_dip_scr -(output) rho_forest -(output) gamma -(output) tau_pass -(output) v_edg_pos -(output) v_edg_neg -(output) v_scr_pos -(output) v_scr_neg - - -lattice_structure fcc -Nslip 12 # number of slip systems per family -burgers 2.48e-10 # Burgers vector in m -rhoSglEdgePos0 6e10 # Initial positive edge single dislocation density in m/m**3 -rhoSglEdgeNeg0 6e10 # Initial negative edge single dislocation density in m/m**3 -rhoSglScrewPos0 6e10 # Initial positive screw single dislocation density in m/m**3 -rhoSglScrewNeg0 6e10 # Initial negative screw single dislocation density in m/m**3 -rhoDipEdge0 0 # Initial edge dipole dislocation density in m/m**3 -rhoDipScrew0 0 # Initial screw dipole dislocation density in m/m**3 -rhoSglScatter 0 -minimumDipoleHeightEdge 2.6e-9 # 3.0e-9 # minimum distance for stable edge dipoles in m -minimumDipoleHeightScrew 12.0e-9 # 50e-9 # minimum distance for stable screw dipoles in m -lambda0 45 # 33 # prefactor for mean free path -edgeMultiplication 0.1 -randomMultiplication 0 -atomicVolume 1.2e-29 -selfdiffusionPrefactor 1.9e-4 # Gottstein p.168 # prefactor for self-diffusion coefficient -selfdiffusionEnergy 5.1e-19 # Gottstein p.168 # activation energy self-diffusion -solidSolutionEnergy 1.8e-19 # activation energy of solid solution particles in J -solidSolutionConcentration 5e-7 # 1e-7 -solidSolutionSize 1.0 -peierlsStressEdge 1e5 # Peierls stress for edges in Pa (per slip family) -peierlsStressScrew 1e5 # Peierls stress for screws in Pa (per slip family) -doublekinkWidth 10 # width of double kinks in multiples of burgers vector length b -viscosity 1e-3 # viscosity for dislocation glide in Pa s -p 1 # exponent for thermal barrier profile -q 1 # exponent for thermal barrier profile -attackFrequency 50e9 # attack frequency in Hz -surfaceTransmissivity 1.0 # transmissivity of free surfaces for dislocation flux -grainBoundaryTransmissivity 0.0 -significantRho 1e8 # dislocation density considered relevant in m/m**3 -significantN 1 -shortRangeStressCorrection 0 -CFLfactor 1.1 # safety factor for CFL flux check (numerical parameter) -r 1 -interaction_SlipSlip 0 0 0.625 0.07 0.137 0.137 0.122 # Dislocation interaction coefficient -linetension 0.8 -edgejog 0.01 # 0.2 diff --git a/examples/config/phase/mechanical/plastic/nonlocal_Al.yaml b/examples/config/phase/mechanical/plastic/nonlocal_Al.yaml new file mode 100644 index 000000000..a4a4babb1 --- /dev/null +++ b/examples/config/phase/mechanical/plastic/nonlocal_Al.yaml @@ -0,0 +1,49 @@ +type: nonlocal +references: + C. Kords, + On the role of dislocation transport in the constitutive description of crystal plasticity, + RWTH Aachen 2013 +output: [rho_u_ed_pos, rho_b_ed_pos, rho_u_ed_neg, rho_b_ed_neg, rho_u_sc_pos, rho_b_sc_pos, rho_u_sc_neg, rho_b_sc_neg, rho_d_ed, rho_d_sc] +N_sl: [12] + +b_sl: [2.86e-10] +V_at: 0.017e-27 # Omega +d_ed: [1.6e-9] +d_sc: [10.e-9] +i_sl: [60] # k_2 (lambda_0 in Tab. 7.1) +f_ed_mult: 0.1 # k_1 + +rho_u_ed_neg_0: [1.25e9] # 6e10 / (12*4) +rho_u_ed_pos_0: [1.25e9] # 6e10 / (12*4) +rho_u_sc_neg_0: [1.25e9] # 6e10 / (12*4) +rho_u_sc_pos_0: [1.25e9] # 6e10 / (12*4) +rho_d_ed_0: [0] +rho_d_sc_0: [0] + +D_0: 7.e-29 +Q_cl: 0.0 # no temperature dependency +Q_sol: 2.00272e-19 # 1.25 eV +c_sol: 1.5e-6 # correct unit? +f_sol: 2.0 # d_obst in multiples of b +tau_Peierls_ed: [.1e6] +tau_Peierls_sc: [.1e6] +w: 10 # w_k in multiple of b + +p_sl: 1 +q_sl: 1 + +nu_a: 50.e9 +B: 1.e-2 +f_ed: 1.0 # k_3 + +h_sl-sl: [0, 0, 0.625, 0.07, 0.137, 0.137, 0.122] # Table 3.4 + +chi_GB: 0.0 # full blocking at GB +chi_surface: 1.0 # no blocking at surface + +f_F: 0.0 # no line tension correction +sigma_rho_u: 0 # no random distribution + + +short_range_stress_correction: false +rho_significant: 1e6 diff --git a/examples/config/phase/mechanical/plastic/nonlocal_Ni.yaml b/examples/config/phase/mechanical/plastic/nonlocal_Ni.yaml new file mode 100644 index 000000000..81b4becd1 --- /dev/null +++ b/examples/config/phase/mechanical/plastic/nonlocal_Ni.yaml @@ -0,0 +1,49 @@ +type: nonlocal +references: + C. Kords, + On the role of dislocation transport in the constitutive description of crystal plasticity, + RWTH Aachen 2013 +output: [rho_u_ed_pos, rho_b_ed_pos, rho_u_ed_neg, rho_b_ed_neg, rho_u_sc_pos, rho_b_sc_pos, rho_u_sc_neg, rho_b_sc_neg, rho_d_ed, rho_d_sc] +N_sl: [12] + +b_sl: [2.48e-10] +V_at: 0.012e-27 # Omega +d_ed: [2.6e-9] +d_sc: [12.e-9] +i_sl: [45] # k_2 +f_ed_mult: 0.1 # k_1 + +rho_u_ed_neg_0: [6.e10] # 2.88e12 / (12*4) +rho_u_ed_pos_0: [6.e10] # 2.88e12 / (12*4) +rho_u_sc_neg_0: [6.e10] # 2.88e12 / (12*4) +rho_u_sc_pos_0: [6.e10] # 2.88e12 / (12*4) +rho_d_ed_0: [0] +rho_d_sc_0: [0] + +D_0: 3.e-53 +Q_cl: 0.0 # no temperature dependency +Q_sol: 1.79444e-19 # 1.12 eV +c_sol: 5.e-7 # correct unit? +f_sol: 1. # d_obst +tau_Peierls_ed: [.1e6] +tau_Peierls_sc: [.1e6] +w: 10 # w_k + +p_sl: 1 +q_sl: 1 + +nu_a: 50.e9 +B: 1.e-3 +f_ed: 0.01 # k_3 + +h_sl-sl: [0, 0, 0.625, 0.07, 0.137, 0.137, 0.122] # Table 3.4 + +chi_GB: 0.0 # full blocking at GB +chi_surface: 1.0 # no blocking at surface + +f_F: 0.0 # no line tension correction +sigma_rho_u: 0 # no random distribution + + +short_range_stress_correction: false +rho_significant: 1e6 diff --git a/src/phase_mechanical_plastic_nonlocal.f90 b/src/phase_mechanical_plastic_nonlocal.f90 index 1cd5d3e5b..a49314c7a 100644 --- a/src/phase_mechanical_plastic_nonlocal.f90 +++ b/src/phase_mechanical_plastic_nonlocal.f90 @@ -983,13 +983,13 @@ module subroutine nonlocal_dotState(Mp, Temperature,timestep, & gdot !< shear rates real(pReal), dimension(param(ph)%sum_N_sl) :: & tau, & !< current resolved shear stress - vClimb !< climb velocity of edge dipoles + v_climb !< climb velocity of edge dipoles real(pReal), dimension(param(ph)%sum_N_sl,2) :: & rhoDip, & !< current dipole dislocation densities (screw and edge dipoles) dLower, & !< minimum stable dipole distance for edges and screws dUpper !< current maximum stable dipole distance for edges and screws real(pReal) :: & - selfDiffusion !< self diffusion + D_SD if (timestep <= 0.0_pReal) then plasticState(ph)%dotState = 0.0_pReal @@ -1049,7 +1049,7 @@ module subroutine nonlocal_dotState(Mp, Temperature,timestep, & else isBCC rhoDotMultiplication(:,1:4) = spread( & (sum(abs(gdot(:,1:2)),2) * prm%f_ed_mult + sum(abs(gdot(:,3:4)),2)) & - * sqrt(stt%rho_forest(:,en)) / prm%i_sl / prm%b_sl, 2, 4) + * sqrt(stt%rho_forest(:,en)) / prm%i_sl / prm%b_sl, 2, 4) ! eq. 3.26 endif isBCC forall (s = 1:ns, t = 1:4) v0(s,t) = plasticState(ph)%state0(iV(s,t,ph),en) @@ -1100,11 +1100,11 @@ module subroutine nonlocal_dotState(Mp, Temperature,timestep, & ! thermally activated annihilation of edge dipoles by climb rhoDotThermalAnnihilation = 0.0_pReal - selfDiffusion = prm%D_0 * exp(-prm%Q_cl / (kB * Temperature)) - vClimb = prm%V_at * selfDiffusion * prm%mu & - / ( kB * Temperature * PI * (1.0_pReal-prm%nu) * (dUpper(:,1) + dLower(:,1))) + D_SD = prm%D_0 * exp(-prm%Q_cl / (kB * Temperature)) ! eq. 3.53 + v_climb = D_SD * prm%mu * prm%V_at & + / (PI * (1.0_pReal-prm%nu) * (dUpper(:,1) + dLower(:,1)) * kB * Temperature) ! eq. 3.54 forall (s = 1:ns, dUpper(s,1) > dLower(s,1)) & - rhoDotThermalAnnihilation(s,9) = max(- 4.0_pReal * rhoDip(s,1) * vClimb(s) / (dUpper(s,1) - dLower(s,1)), & + rhoDotThermalAnnihilation(s,9) = max(- 4.0_pReal * rhoDip(s,1) * v_climb(s) / (dUpper(s,1) - dLower(s,1)), & - rhoDip(s,1) / timestep - rhoDotAthermalAnnihilation(s,9) & - rhoDotSingle2DipoleGlide(s,9)) ! make sure that we do not annihilate more dipoles than we have