all parameters as slip family-dependent
This commit is contained in:
parent
a2c9cfbbea
commit
ffdf478b62
2
PRIVATE
2
PRIVATE
|
@ -1 +1 @@
|
||||||
Subproject commit 8c05965ef4437598898f467a213ffa88938e860a
|
Subproject commit 4e195733964bfa36de70abb768a65a7216180d0f
|
|
@ -10,10 +10,10 @@ output: [xi_sl, gamma_sl]
|
||||||
|
|
||||||
N_sl: [12]
|
N_sl: [12]
|
||||||
|
|
||||||
n_sl: 20
|
dot_gamma_0_sl: [0.001]
|
||||||
a_sl: 3.7
|
n_sl: [20]
|
||||||
h_0_sl-sl: 1.02e+9
|
a_sl: [3.7]
|
||||||
xi_0_sl: [76.e+6]
|
xi_0_sl: [76.e+6]
|
||||||
xi_inf_sl: [266.e+6]
|
xi_inf_sl: [266.e+6]
|
||||||
|
h_0_sl-sl: [1.02e+9]
|
||||||
h_sl-sl: [1, 1, 5.123, 0.574, 1.123, 1.123, 1]
|
h_sl-sl: [1, 1, 5.123, 0.574, 1.123, 1.123, 1]
|
||||||
dot_gamma_0_sl: 0.001
|
|
||||||
|
|
|
@ -10,10 +10,10 @@ output: [xi_sl, gamma_sl]
|
||||||
|
|
||||||
N_sl: [12]
|
N_sl: [12]
|
||||||
|
|
||||||
n_sl: 20
|
dot_gamma_0_sl: [7.5e-5]
|
||||||
a_sl: 5.4
|
n_sl: [20]
|
||||||
h_0_sl-sl: 281.5e+6
|
a_sl: [5.4]
|
||||||
xi_0_sl: [2.69e+6]
|
xi_0_sl: [2.69e+6]
|
||||||
xi_inf_sl: [67.5e+6]
|
xi_inf_sl: [67.5e+6]
|
||||||
|
h_0_sl-sl: [0.2815e+9]
|
||||||
h_sl-sl: [1, 1, 5.123, 0.574, 1.123, 1.123, 1]
|
h_sl-sl: [1, 1, 5.123, 0.574, 1.123, 1.123, 1]
|
||||||
dot_gamma_0_sl: 7.5e-5
|
|
||||||
|
|
|
@ -15,10 +15,10 @@ output: [xi_sl, gamma_sl]
|
||||||
|
|
||||||
N_sl: [12]
|
N_sl: [12]
|
||||||
|
|
||||||
n_sl: 83.3
|
dot_gamma_0_sl: [0.001]
|
||||||
a_sl: 1.0
|
n_sl: [83.3]
|
||||||
h_0_sl-sl: 75.0e+6
|
a_sl: [1.0]
|
||||||
xi_0_sl: [26.25e+6]
|
xi_0_sl: [26.25e+6]
|
||||||
xi_inf_sl: [53.0e+6]
|
xi_inf_sl: [53.0e+6]
|
||||||
|
h_0_sl-sl: [75.0e+6]
|
||||||
h_sl-sl: [1, 1, 1.4, 1.4, 1.4, 1.4, 1.4]
|
h_sl-sl: [1, 1, 1.4, 1.4, 1.4, 1.4, 1.4]
|
||||||
dot_gamma_0_sl: 0.001
|
|
||||||
|
|
|
@ -10,10 +10,10 @@ output: [xi_sl, gamma_sl]
|
||||||
|
|
||||||
N_sl: [12]
|
N_sl: [12]
|
||||||
|
|
||||||
n_sl: 20
|
dot_gamma_0_sl: [3.e-3]
|
||||||
a_sl: 0.6
|
n_sl: [20]
|
||||||
h_0_sl-sl: 3.5e+8
|
a_sl: [0.6]
|
||||||
xi_0_sl: [1.6e+6]
|
xi_0_sl: [1.6e+6]
|
||||||
xi_inf_sl: [96.4e+6]
|
xi_inf_sl: [96.4e+6]
|
||||||
|
h_0_sl-sl: [0.35e+9]
|
||||||
h_sl-sl: [1, 1, 5.123, 0.574, 1.123, 1.123, 1]
|
h_sl-sl: [1, 1, 5.123, 0.574, 1.123, 1.123, 1]
|
||||||
dot_gamma_0_sl: 3.e-3
|
|
||||||
|
|
|
@ -12,10 +12,10 @@ output: [xi_sl, gamma_sl]
|
||||||
|
|
||||||
N_sl: [12, 12]
|
N_sl: [12, 12]
|
||||||
|
|
||||||
n_sl: 20
|
dot_gamma_0_sl: [0.001, 0.001]
|
||||||
a_sl: 2.25
|
n_sl: [20, 20]
|
||||||
h_0_sl-sl: 1.0e+9
|
a_sl: [2.25, 2.25]
|
||||||
xi_0_sl: [95.e+6, 96.e+6]
|
xi_0_sl: [95.e+6, 96.e+6]
|
||||||
xi_inf_sl: [222.e+6, 412.e+6]
|
xi_inf_sl: [222.e+6, 412.e+6]
|
||||||
|
h_0_sl-sl: [1.0e+9, 1.0e+9]
|
||||||
h_sl-sl: [1, 1.4, 1, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4]
|
h_sl-sl: [1, 1.4, 1, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4]
|
||||||
dot_gamma_0_sl: 0.001
|
|
||||||
|
|
|
@ -14,16 +14,16 @@ xi_0_sl: [10.e+6, 55.e+6, 60.e+6, 0., 60.e+6]
|
||||||
xi_inf_sl: [40.e+6, 135.e+6, 150.e+6, 0., 150.e+6]
|
xi_inf_sl: [40.e+6, 135.e+6, 150.e+6, 0., 150.e+6]
|
||||||
xi_0_tw: [40.e+6, 0., 60.e+6]
|
xi_0_tw: [40.e+6, 0., 60.e+6]
|
||||||
|
|
||||||
a_sl: 2.25
|
a_sl: [2.25, 2.25, 2.25, 1, 2.25]
|
||||||
dot_gamma_0_sl: 0.001
|
dot_gamma_0_sl: [0.001, 0.001, 0.001, 0, 0.001]
|
||||||
dot_gamma_0_tw: 0.001
|
dot_gamma_0_tw: [0.001, 0, 0.001]
|
||||||
n_sl: 20
|
n_sl: [20, 20, 20, 1, 20]
|
||||||
n_tw: 20
|
n_tw: [20, 1, 20]
|
||||||
f_sat_sl-tw: 10.0
|
f_sat_sl-tw: [10.0, 10.0, 10.0, 0, 10.0]
|
||||||
|
|
||||||
h_0_sl-sl: 500.0e+6
|
h_0_sl-sl: [0.5e+9, 0.5e+9, 0.5e+9, 0, 0.5e+9]
|
||||||
h_0_tw-tw: 50.0e+6
|
h_0_tw-tw: [50.0e+6, 0, 50.0e+6]
|
||||||
h_0_tw-sl: 150.0e+6
|
h_0_tw-sl: [0.15e+9, 0, 0.15e+9]
|
||||||
h_sl-sl: [+1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
|
h_sl-sl: [+1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
|
||||||
+1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0,
|
+1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0,
|
||||||
-1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
|
-1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0,
|
||||||
|
|
|
@ -10,10 +10,10 @@ output: [xi_sl, gamma_sl]
|
||||||
|
|
||||||
N_sl: [12]
|
N_sl: [12]
|
||||||
|
|
||||||
n_sl: 20
|
dot_gamma_0_sl: [0.001]
|
||||||
a_sl: 0.9
|
n_sl: [20]
|
||||||
h_0_sl-sl: 781.2e+6
|
a_sl: [0.9]
|
||||||
xi_0_sl: [114.e+6]
|
xi_0_sl: [0.114e+9]
|
||||||
xi_inf_sl: [207.e+6]
|
xi_inf_sl: [0.207e+9]
|
||||||
|
h_0_sl-sl: [0.7812e+9]
|
||||||
h_sl-sl: [1, 1, 5.123, 0.574, 1.123, 1.123, 1]
|
h_sl-sl: [1, 1, 5.123, 0.574, 1.123, 1.123, 1]
|
||||||
dot_gamma_0_sl: 0.001
|
|
||||||
|
|
|
@ -9,9 +9,9 @@ output: [xi_sl, gamma_sl]
|
||||||
|
|
||||||
N_sl: [2, 2, 2, 4, 2, 4, 2, 2, 4, 0, 0, 8]
|
N_sl: [2, 2, 2, 4, 2, 4, 2, 2, 4, 0, 0, 8]
|
||||||
|
|
||||||
n_sl: 6.0
|
n_sl: [6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 1, 1, 6.0]
|
||||||
a_sl: 2.0
|
a_sl: [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 1.0, 1.0, 2.0]
|
||||||
h_0_sl-sl: 20.0e+6
|
h_0_sl-sl: [20e+6, 20e+6, 20e+6, 20e+6, 20e+6, 20e+6, 20e+6, 20e+6, 20e+6, 0.0, 0.0, 20e+6]
|
||||||
xi_0_sl: [8.5e+6, 4.3e+6, 10.4e+6, 4.5e+6, 5.6e+6, 5.1e+6, 7.4e+6, 15.0e+6, 6.6e+6, 0.0, 0.0, 12.0e+6]
|
xi_0_sl: [8.5e+6, 4.3e+6, 10.4e+6, 4.5e+6, 5.6e+6, 5.1e+6, 7.4e+6, 15.0e+6, 6.6e+6, 0.0, 0.0, 12.0e+6]
|
||||||
xi_inf_sl: [11.0e+6, 9.0e+6, 11.0e+6, 9.0e+6, 10.0e+6, 10.0e+6, 10.0e+6, 10.0e+6, 9.0e+6, 0.0, 0.0, 13.0e+6]
|
xi_inf_sl: [11.0e+6, 9.0e+6, 11.0e+6, 9.0e+6, 10.0e+6, 10.0e+6, 10.0e+6, 10.0e+6, 9.0e+6, 0.0, 0.0, 13.0e+6]
|
||||||
h_sl-sl: [+1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
|
h_sl-sl: [+1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
|
||||||
|
@ -30,4 +30,4 @@ h_sl-sl: [+1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
|
||||||
-1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
|
-1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
|
||||||
+1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, # 150
|
+1.0, -1.0, -1.0, 1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, # 150
|
||||||
+1.0, 1.0, 1.0, 1.0, 1.0, 1.0] # unused entries are indicated by -1.0
|
+1.0, 1.0, 1.0, 1.0, 1.0, 1.0] # unused entries are indicated by -1.0
|
||||||
dot_gamma_0_sl: 2.6e-8
|
dot_gamma_0_sl: [2.6e-8, 2.6e-8, 2.6e-8, 2.6e-8, 2.6e-8, 2.6e-8, 2.6e-8, 2.6e-8, 2.6e-8, 1.0, 1.0, 2.6e-8]
|
||||||
|
|
|
@ -12,17 +12,17 @@ output: [gamma_sl]
|
||||||
|
|
||||||
N_sl: [3, 3, 0, 12] # basal, prism, -, 1. pyr<c+a>
|
N_sl: [3, 3, 0, 12] # basal, prism, -, 1. pyr<c+a>
|
||||||
|
|
||||||
n_sl: 20
|
dot_gamma_0_sl: [0.001, 0.001, 0.0, 0.001]
|
||||||
a_sl: 2.0
|
n_sl: [20, 20, 1, 20]
|
||||||
dot_gamma_0_sl: 0.001
|
a_sl: [2.0, 2.0, 1.0, 2.0]
|
||||||
h_0_sl-sl: 200.e+6
|
|
||||||
|
|
||||||
# C. Zambaldi et al.:
|
# C. Zambaldi et al.:
|
||||||
xi_0_sl: [349.e+6, 150.e+6, 0.0, 1107.e+6]
|
xi_0_sl: [0.349e+9, 0.15e+9, 0.0, 1.107e+9]
|
||||||
xi_inf_sl: [568.e+6, 150.e+7, 0.0, 3420.e+6]
|
xi_inf_sl: [0.568e+9, 1.50e+9, 0.0, 3.420e+9]
|
||||||
# L. Wang et al. :
|
# L. Wang et al. :
|
||||||
# xi_0_sl: [127.e+6, 96.e+6, 0.0, 240.e+6]
|
# xi_0_sl: [127.e+6, 96.e+6, 0.0, 240.e+6]
|
||||||
|
|
||||||
|
h_0_sl-sl: [0.2e+9, 0.2e+9, 0.0, 0.2e+9]
|
||||||
h_sl-sl: [+1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0,
|
h_sl-sl: [+1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0,
|
||||||
-1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0,
|
-1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0,
|
||||||
+1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
|
+1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
# Tasan et.al. 2015 Acta Materalia
|
# Tasan et.al. 2015 Acta Materalia
|
||||||
# Tasan et.al. 2015 International Journal of Plasticity
|
# Tasan et.al. 2015 International Journal of Plasticity
|
||||||
# Diehl et.al. 2015 Meccanica
|
# Diehl et.al. 2015 Meccanica
|
||||||
N_sl: [12, 12]
|
|
||||||
a_sl: 2.0
|
|
||||||
dot_gamma_0_sl: 0.001
|
|
||||||
h_0_sl-sl: 563.0e+9
|
|
||||||
h_sl-sl: [1, 1.4, 1, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4]
|
|
||||||
n_sl: 20
|
|
||||||
type: phenopowerlaw
|
type: phenopowerlaw
|
||||||
|
|
||||||
|
N_sl: [12, 12]
|
||||||
|
|
||||||
|
dot_gamma_0_sl: [0.001, 0.001]
|
||||||
|
n_sl: [20, 20]
|
||||||
|
a_sl: [2.0, 2.0]
|
||||||
xi_0_sl: [405.8e+6, 456.7e+6]
|
xi_0_sl: [405.8e+6, 456.7e+6]
|
||||||
xi_inf_sl: [872.9e+6, 971.2e+6]
|
xi_inf_sl: [872.9e+6, 971.2e+6]
|
||||||
|
h_0_sl-sl: [563.0e+9, 563.0e+9]
|
||||||
|
h_sl-sl: [1, 1.4, 1, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4]
|
|
@ -13,12 +13,12 @@ phase:
|
||||||
plastic:
|
plastic:
|
||||||
type: phenopowerlaw
|
type: phenopowerlaw
|
||||||
N_sl: [12]
|
N_sl: [12]
|
||||||
a_sl: 2.25
|
a_sl: [2.25]
|
||||||
atol_xi: 1.0
|
atol_xi: 1.0
|
||||||
dot_gamma_0_sl: 0.001
|
dot_gamma_0_sl: [0.001]
|
||||||
h_0_sl-sl: 75.e+6
|
h_0_sl-sl: [75.e+6]
|
||||||
h_sl-sl: [1, 1, 1.4, 1.4, 1.4, 1.4, 1.4]
|
h_sl-sl: [1, 1, 1.4, 1.4, 1.4, 1.4, 1.4]
|
||||||
n_sl: 20
|
n_sl: [20]
|
||||||
output: [xi_sl]
|
output: [xi_sl]
|
||||||
xi_0_sl: [31.e+6]
|
xi_0_sl: [31.e+6]
|
||||||
xi_inf_sl: [63.e+6]
|
xi_inf_sl: [63.e+6]
|
||||||
|
|
|
@ -7,23 +7,21 @@
|
||||||
submodule(phase:plastic) phenopowerlaw
|
submodule(phase:plastic) phenopowerlaw
|
||||||
|
|
||||||
type :: tParameters
|
type :: tParameters
|
||||||
real(pREAL) :: &
|
|
||||||
dot_gamma_0_sl = 1.0_pREAL, & !< reference shear strain rate for slip
|
|
||||||
dot_gamma_0_tw = 1.0_pREAL, & !< reference shear strain rate for twin
|
|
||||||
n_sl = 1.0_pREAL, & !< stress exponent for slip
|
|
||||||
n_tw = 1.0_pREAL, & !< stress exponent for twin
|
|
||||||
f_sat_sl_tw = 1.0_pREAL, & !< push-up factor for slip saturation due to twinning
|
|
||||||
c_1 = 1.0_pREAL, &
|
|
||||||
c_2 = 1.0_pREAL, &
|
|
||||||
c_3 = 1.0_pREAL, &
|
|
||||||
c_4 = 1.0_pREAL, &
|
|
||||||
h_0_sl_sl = 1.0_pREAL, & !< reference hardening slip - slip
|
|
||||||
h_0_tw_sl = 1.0_pREAL, & !< reference hardening twin - slip
|
|
||||||
h_0_tw_tw = 1.0_pREAL, & !< reference hardening twin - twin
|
|
||||||
a_sl = 1.0_pREAL
|
|
||||||
real(pREAL), allocatable, dimension(:) :: &
|
real(pREAL), allocatable, dimension(:) :: &
|
||||||
|
dot_gamma_0_sl, & !< reference shear strain rate for slip
|
||||||
|
dot_gamma_0_tw, & !< reference shear strain rate for twin
|
||||||
|
a_sl, &
|
||||||
|
n_sl, & !< stress exponent for slip
|
||||||
|
n_tw, & !< stress exponent for twin
|
||||||
xi_inf_sl, & !< maximum critical shear stress for slip
|
xi_inf_sl, & !< maximum critical shear stress for slip
|
||||||
h_int, & !< per family hardening activity (optional)
|
f_sat_sl_tw, & !< push-up factor for slip saturation due to twinning
|
||||||
|
c_1, &
|
||||||
|
c_2, &
|
||||||
|
c_3, &
|
||||||
|
c_4, &
|
||||||
|
h_0_sl_sl, & !< reference hardening slip - slip
|
||||||
|
h_0_tw_sl, & !< reference hardening twin - slip
|
||||||
|
h_0_tw_tw, & !< reference hardening twin - twin
|
||||||
gamma_char !< characteristic shear for twins
|
gamma_char !< characteristic shear for twins
|
||||||
real(pREAL), allocatable, dimension(:,:) :: &
|
real(pREAL), allocatable, dimension(:,:) :: &
|
||||||
h_sl_sl, & !< slip resistance from slip activity
|
h_sl_sl, & !< slip resistance from slip activity
|
||||||
|
@ -40,7 +38,7 @@ submodule(phase:plastic) phenopowerlaw
|
||||||
sum_N_tw !< total number of active twin systems
|
sum_N_tw !< total number of active twin systems
|
||||||
logical :: &
|
logical :: &
|
||||||
nonSchmidActive = .false.
|
nonSchmidActive = .false.
|
||||||
character(len=pSTRLEN), allocatable, dimension(:) :: &
|
character(len=pSTRLEN), allocatable, dimension(:) :: &
|
||||||
output
|
output
|
||||||
character(len=:), allocatable, dimension(:) :: &
|
character(len=:), allocatable, dimension(:) :: &
|
||||||
systems_sl, &
|
systems_sl, &
|
||||||
|
@ -81,6 +79,7 @@ module function plastic_phenopowerlaw_init() result(myPlasticity)
|
||||||
logical, dimension(:), allocatable :: myPlasticity
|
logical, dimension(:), allocatable :: myPlasticity
|
||||||
integer :: &
|
integer :: &
|
||||||
ph, i, &
|
ph, i, &
|
||||||
|
N_fam, &
|
||||||
Nmembers, &
|
Nmembers, &
|
||||||
sizeState, sizeDotState, &
|
sizeState, sizeDotState, &
|
||||||
startIndex, endIndex
|
startIndex, endIndex
|
||||||
|
@ -90,7 +89,8 @@ module function plastic_phenopowerlaw_init() result(myPlasticity)
|
||||||
real(pREAL), dimension(:), allocatable :: &
|
real(pREAL), dimension(:), allocatable :: &
|
||||||
xi_0_sl, & !< initial critical shear stress for slip
|
xi_0_sl, & !< initial critical shear stress for slip
|
||||||
xi_0_tw, & !< initial critical shear stress for twin
|
xi_0_tw, & !< initial critical shear stress for twin
|
||||||
a !< non-Schmid coefficients
|
a, & !< non-Schmid coefficients
|
||||||
|
ones
|
||||||
character(len=:), allocatable :: &
|
character(len=:), allocatable :: &
|
||||||
refs, &
|
refs, &
|
||||||
extmsg
|
extmsg
|
||||||
|
@ -134,20 +134,26 @@ module function plastic_phenopowerlaw_init() result(myPlasticity)
|
||||||
prm%output = pl%get_as1dStr('output',defaultVal=emptyStrArray)
|
prm%output = pl%get_as1dStr('output',defaultVal=emptyStrArray)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
N_sl = pl%get_as1dInt('N_sl',defaultVal=emptyIntArray)
|
||||||
|
N_tw = pl%get_as1dInt('N_tw',defaultVal=emptyIntArray)
|
||||||
|
prm%sum_N_sl = sum(abs(N_sl))
|
||||||
|
prm%sum_N_tw = sum(abs(N_tw))
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! slip related parameters
|
! slip related parameters
|
||||||
N_sl = pl%get_as1dInt('N_sl',defaultVal=emptyIntArray)
|
|
||||||
prm%sum_N_sl = sum(abs(N_sl))
|
|
||||||
slipActive: if (prm%sum_N_sl > 0) then
|
slipActive: if (prm%sum_N_sl > 0) then
|
||||||
prm%dot_gamma_0_sl = pl%get_asReal('dot_gamma_0_sl')
|
N_fam = size(N_sl)
|
||||||
prm%n_sl = pl%get_asReal('n_sl')
|
ones = [(1.0_pREAL,i=1,N_fam)]
|
||||||
prm%a_sl = pl%get_asReal('a_sl')
|
prm%dot_gamma_0_sl = math_expand(pl%get_as1dReal('dot_gamma_0_sl',requiredSize=N_fam,defaultVal= ones), N_sl)
|
||||||
prm%h_0_sl_sl = pl%get_asReal('h_0_sl-sl')
|
prm%n_sl = math_expand(pl%get_as1dReal('n_sl', requiredSize=N_fam,defaultVal= ones), N_sl)
|
||||||
|
prm%a_sl = math_expand(pl%get_as1dReal('a_sl', requiredSize=N_fam,defaultVal= ones), N_sl)
|
||||||
xi_0_sl = math_expand(pl%get_as1dReal('xi_0_sl', requiredSize=size(N_sl)),N_sl)
|
prm%h_0_sl_sl = math_expand(pl%get_as1dReal('h_0_sl-sl', requiredSize=N_fam,defaultVal=0.0_pREAL*ones), N_sl)
|
||||||
prm%xi_inf_sl = math_expand(pl%get_as1dReal('xi_inf_sl', requiredSize=size(N_sl)),N_sl)
|
prm%c_1 = math_expand(pl%get_as1dReal('c_1', requiredSize=N_fam,defaultVal=0.0_pREAL*ones), N_sl)
|
||||||
prm%h_int = math_expand(pl%get_as1dReal('h_int', requiredSize=size(N_sl), &
|
prm%c_2 = math_expand(pl%get_as1dReal('c_2', requiredSize=N_fam,defaultVal= ones), N_sl)
|
||||||
defaultVal=[(0.0_pREAL,i=1,size(N_sl))]),N_sl)
|
xi_0_sl = math_expand(pl%get_as1dReal('xi_0_sl', requiredSize=N_fam), N_sl)
|
||||||
|
prm%xi_inf_sl = math_expand(pl%get_as1dReal('xi_inf_sl', requiredSize=N_fam), N_sl)
|
||||||
|
prm%f_sat_sl_tw = math_expand(pl%get_as1dReal('f_sat_sl-tw',requiredSize=N_fam,defaultVal=0.0_pREAL*ones), N_sl)
|
||||||
|
|
||||||
prm%h_sl_sl = crystal_interaction_SlipBySlip(N_sl,pl%get_as1dReal('h_sl-sl'),phase_lattice(ph))
|
prm%h_sl_sl = crystal_interaction_SlipBySlip(N_sl,pl%get_as1dReal('h_sl-sl'),phase_lattice(ph))
|
||||||
|
|
||||||
|
@ -166,35 +172,37 @@ module function plastic_phenopowerlaw_init() result(myPlasticity)
|
||||||
prm%systems_sl = crystal_labels_slip(N_sl,phase_lattice(ph))
|
prm%systems_sl = crystal_labels_slip(N_sl,phase_lattice(ph))
|
||||||
|
|
||||||
! sanity checks
|
! sanity checks
|
||||||
if ( prm%dot_gamma_0_sl <= 0.0_pREAL) extmsg = trim(extmsg)//' dot_gamma_0_sl'
|
if (any(prm%dot_gamma_0_sl <= 0.0_pREAL)) extmsg = trim(extmsg)//' dot_gamma_0_sl'
|
||||||
if ( prm%a_sl <= 0.0_pREAL) extmsg = trim(extmsg)//' a_sl'
|
if (any(prm%a_sl <= 0.0_pREAL)) extmsg = trim(extmsg)//' a_sl'
|
||||||
if ( prm%n_sl <= 0.0_pREAL) extmsg = trim(extmsg)//' n_sl'
|
if (any(prm%n_sl <= 0.0_pREAL)) extmsg = trim(extmsg)//' n_sl'
|
||||||
if (any(xi_0_sl <= 0.0_pREAL)) extmsg = trim(extmsg)//' xi_0_sl'
|
if (any(xi_0_sl <= 0.0_pREAL)) extmsg = trim(extmsg)//' xi_0_sl'
|
||||||
if (any(prm%xi_inf_sl <= 0.0_pREAL)) extmsg = trim(extmsg)//' xi_inf_sl'
|
if (any(prm%xi_inf_sl <= 0.0_pREAL)) extmsg = trim(extmsg)//' xi_inf_sl'
|
||||||
|
|
||||||
else slipActive
|
else slipActive
|
||||||
xi_0_sl = emptyRealArray
|
xi_0_sl = emptyRealArray
|
||||||
allocate(prm%xi_inf_sl, &
|
allocate(prm%dot_gamma_0_sl, & !< reference shear strain rate for slip
|
||||||
prm%h_int, &
|
prm%a_sl, &
|
||||||
|
prm%n_sl, & !< stress exponent for slip
|
||||||
|
prm%xi_inf_sl, & !< maximum critical shear stress for slip
|
||||||
|
prm%f_sat_sl_tw, & !< push-up factor for slip saturation due to twinning
|
||||||
|
prm%c_1, &
|
||||||
|
prm%c_2, &
|
||||||
|
prm%h_0_sl_sl, & !< reference hardening slip - slip
|
||||||
source=emptyRealArray)
|
source=emptyRealArray)
|
||||||
allocate(prm%h_sl_sl(0,0))
|
allocate(prm%h_sl_sl(0,0))
|
||||||
end if slipActive
|
end if slipActive
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! twin related parameters
|
! twin related parameters
|
||||||
N_tw = pl%get_as1dInt('N_tw', defaultVal=emptyIntArray)
|
|
||||||
prm%sum_N_tw = sum(abs(N_tw))
|
|
||||||
twinActive: if (prm%sum_N_tw > 0) then
|
twinActive: if (prm%sum_N_tw > 0) then
|
||||||
prm%c_1 = pl%get_asReal('c_1',defaultVal=0.0_pREAL)
|
N_fam = size(N_tw)
|
||||||
prm%c_2 = pl%get_asReal('c_2',defaultVal=1.0_pREAL)
|
ones = [(1.0_pREAL,i=1,N_fam)]
|
||||||
prm%c_3 = pl%get_asReal('c_3',defaultVal=0.0_pREAL)
|
prm%dot_gamma_0_tw = math_expand(pl%get_as1dReal('dot_gamma_0_tw', requiredSize=N_fam,defaultVal=ones), N_tw)
|
||||||
prm%c_4 = pl%get_asReal('c_4',defaultVal=0.0_pREAL)
|
prm%n_tw = math_expand(pl%get_as1dReal('n_tw', requiredSize=N_fam,defaultVal= ones), N_tw)
|
||||||
prm%dot_gamma_0_tw = pl%get_asReal('dot_gamma_0_tw')
|
prm%c_3 = math_expand(pl%get_as1dReal('c_3', requiredSize=N_fam,defaultVal=0.0_pREAL*ones), N_tw)
|
||||||
prm%n_tw = pl%get_asReal('n_tw')
|
prm%c_4 = math_expand(pl%get_as1dReal('c_4', requiredSize=N_fam,defaultVal=0.0_pREAL*ones), N_tw)
|
||||||
prm%f_sat_sl_tw = pl%get_asReal('f_sat_sl-tw')
|
prm%h_0_tw_tw = math_expand(pl%get_as1dReal('h_0_tw-tw', requiredSize=N_fam,defaultVal=0.0_pReal*ones), N_tw)
|
||||||
prm%h_0_tw_tw = pl%get_asReal('h_0_tw-tw')
|
xi_0_tw = math_expand(pl%get_as1dReal('xi_0_tw', requiredSize=N_fam), N_tw)
|
||||||
|
|
||||||
xi_0_tw = math_expand(pl%get_as1dReal('xi_0_tw',requiredSize=size(N_tw)),N_tw)
|
|
||||||
|
|
||||||
prm%gamma_char = crystal_characteristicShear_twin(N_tw,phase_lattice(ph),phase_cOverA(ph))
|
prm%gamma_char = crystal_characteristicShear_twin(N_tw,phase_lattice(ph),phase_cOverA(ph))
|
||||||
prm%h_tw_tw = crystal_interaction_TwinByTwin(N_tw,pl%get_as1dReal('h_tw-tw'),phase_lattice(ph))
|
prm%h_tw_tw = crystal_interaction_TwinByTwin(N_tw,pl%get_as1dReal('h_tw-tw'),phase_lattice(ph))
|
||||||
|
@ -203,27 +211,33 @@ module function plastic_phenopowerlaw_init() result(myPlasticity)
|
||||||
prm%systems_tw = crystal_labels_twin(N_tw,phase_lattice(ph))
|
prm%systems_tw = crystal_labels_twin(N_tw,phase_lattice(ph))
|
||||||
|
|
||||||
! sanity checks
|
! sanity checks
|
||||||
if (prm%dot_gamma_0_tw <= 0.0_pREAL) extmsg = trim(extmsg)//' dot_gamma_0_tw'
|
if (any(prm%dot_gamma_0_tw <= 0.0_pREAL)) extmsg = trim(extmsg)//' dot_gamma_0_tw'
|
||||||
if (prm%n_tw <= 0.0_pREAL) extmsg = trim(extmsg)//' n_tw'
|
if (any(prm%n_tw <= 0.0_pREAL)) extmsg = trim(extmsg)//' n_tw'
|
||||||
|
if (any(xi_0_tw <= 0.0_pREAL)) extmsg = trim(extmsg)//' xi_0_tw'
|
||||||
|
|
||||||
else twinActive
|
else twinActive
|
||||||
xi_0_tw = emptyRealArray
|
xi_0_tw = emptyRealArray
|
||||||
allocate(prm%gamma_char,source=emptyRealArray)
|
allocate(prm%dot_gamma_0_tw, & !< reference shear strain rate for twin
|
||||||
|
prm%n_tw, & !< stress exponent for twin
|
||||||
|
prm%c_3, &
|
||||||
|
prm%c_4, &
|
||||||
|
prm%gamma_char, & !< characteristic shear for twins
|
||||||
|
prm%h_0_tw_sl, & !< reference hardening twin - slip
|
||||||
|
prm%h_0_tw_tw, & !< reference hardening twin - twin
|
||||||
|
source=emptyRealArray)
|
||||||
allocate(prm%h_tw_tw(0,0))
|
allocate(prm%h_tw_tw(0,0))
|
||||||
end if twinActive
|
end if twinActive
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! slip-twin related parameters
|
! slip-twin related parameters
|
||||||
slipAndTwinActive: if (prm%sum_N_sl > 0 .and. prm%sum_N_tw > 0) then
|
slipAndTwinActive: if (prm%sum_N_sl > 0 .and. prm%sum_N_tw > 0) then
|
||||||
prm%h_0_tw_sl = pl%get_asReal('h_0_tw-sl')
|
prm%h_0_tw_sl = math_expand(pl%get_as1dReal('h_0_tw-sl',requiredSize=N_fam,defaultVal=0.0_pReal*ones), N_tw)
|
||||||
prm%h_sl_tw = crystal_interaction_SlipByTwin(N_sl,N_tw,pl%get_as1dReal('h_sl-tw'), &
|
prm%h_sl_tw = crystal_interaction_SlipByTwin(N_sl,N_tw,pl%get_as1dReal('h_sl-tw'),phase_lattice(ph))
|
||||||
phase_lattice(ph))
|
prm%h_tw_sl = crystal_interaction_TwinBySlip(N_tw,N_sl,pl%get_as1dReal('h_tw-sl'),phase_lattice(ph))
|
||||||
prm%h_tw_sl = crystal_interaction_TwinBySlip(N_tw,N_sl,pl%get_as1dReal('h_tw-sl'), &
|
|
||||||
phase_lattice(ph))
|
|
||||||
else slipAndTwinActive
|
else slipAndTwinActive
|
||||||
allocate(prm%h_sl_tw(prm%sum_N_sl,prm%sum_N_tw)) ! at least one dimension is 0
|
allocate(prm%h_sl_tw(prm%sum_N_sl,prm%sum_N_tw)) ! at least one dimension is 0
|
||||||
allocate(prm%h_tw_sl(prm%sum_N_tw,prm%sum_N_sl)) ! at least one dimension is 0
|
allocate(prm%h_tw_sl(prm%sum_N_tw,prm%sum_N_sl)) ! at least one dimension is 0
|
||||||
prm%h_0_tw_sl = 0.0_pREAL
|
prm%h_0_tw_sl = [(0.0_pREAL,i=1,size(N_tw))]
|
||||||
end if slipAndTwinActive
|
end if slipAndTwinActive
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -242,7 +256,7 @@ module function plastic_phenopowerlaw_init() result(myPlasticity)
|
||||||
endIndex = prm%sum_N_sl
|
endIndex = prm%sum_N_sl
|
||||||
idx_dot%xi_sl = [startIndex,endIndex]
|
idx_dot%xi_sl = [startIndex,endIndex]
|
||||||
stt%xi_sl => plasticState(ph)%state(startIndex:endIndex,:)
|
stt%xi_sl => plasticState(ph)%state(startIndex:endIndex,:)
|
||||||
stt%xi_sl = spread(xi_0_sl, 2, Nmembers)
|
stt%xi_sl = spread(xi_0_sl, 2, Nmembers)
|
||||||
plasticState(ph)%atol(startIndex:endIndex) = pl%get_asReal('atol_xi',defaultVal=1.0_pREAL)
|
plasticState(ph)%atol(startIndex:endIndex) = pl%get_asReal('atol_xi',defaultVal=1.0_pREAL)
|
||||||
if (any(plasticState(ph)%atol(startIndex:endIndex) < 0.0_pREAL)) extmsg = trim(extmsg)//' atol_xi'
|
if (any(plasticState(ph)%atol(startIndex:endIndex) < 0.0_pREAL)) extmsg = trim(extmsg)//' atol_xi'
|
||||||
|
|
||||||
|
@ -250,7 +264,7 @@ module function plastic_phenopowerlaw_init() result(myPlasticity)
|
||||||
endIndex = endIndex + prm%sum_N_tw
|
endIndex = endIndex + prm%sum_N_tw
|
||||||
idx_dot%xi_tw = [startIndex,endIndex]
|
idx_dot%xi_tw = [startIndex,endIndex]
|
||||||
stt%xi_tw => plasticState(ph)%state(startIndex:endIndex,:)
|
stt%xi_tw => plasticState(ph)%state(startIndex:endIndex,:)
|
||||||
stt%xi_tw = spread(xi_0_tw, 2, Nmembers)
|
stt%xi_tw = spread(xi_0_tw, 2, Nmembers)
|
||||||
plasticState(ph)%atol(startIndex:endIndex) = pl%get_asReal('atol_xi',defaultVal=1.0_pREAL)
|
plasticState(ph)%atol(startIndex:endIndex) = pl%get_asReal('atol_xi',defaultVal=1.0_pREAL)
|
||||||
|
|
||||||
startIndex = endIndex + 1
|
startIndex = endIndex + 1
|
||||||
|
@ -344,10 +358,10 @@ module function phenopowerlaw_dotState(Mp,ph,en) result(dotState)
|
||||||
dotState
|
dotState
|
||||||
|
|
||||||
real(pREAL) :: &
|
real(pREAL) :: &
|
||||||
xi_sl_sat_offset,&
|
|
||||||
sumF
|
sumF
|
||||||
real(pREAL), dimension(param(ph)%sum_N_sl) :: &
|
real(pREAL), dimension(param(ph)%sum_N_sl) :: &
|
||||||
dot_gamma_sl_pos,dot_gamma_sl_neg, &
|
dot_gamma_sl_pos,dot_gamma_sl_neg, &
|
||||||
|
xi_sl_sat_offset, &
|
||||||
left_SlipSlip
|
left_SlipSlip
|
||||||
|
|
||||||
associate(prm => param(ph), stt => state(ph), &
|
associate(prm => param(ph), stt => state(ph), &
|
||||||
|
@ -362,10 +376,11 @@ module function phenopowerlaw_dotState(Mp,ph,en) result(dotState)
|
||||||
sumF = sum(stt%gamma_tw(:,en)/prm%gamma_char)
|
sumF = sum(stt%gamma_tw(:,en)/prm%gamma_char)
|
||||||
|
|
||||||
xi_sl_sat_offset = prm%f_sat_sl_tw*sqrt(sumF)
|
xi_sl_sat_offset = prm%f_sat_sl_tw*sqrt(sumF)
|
||||||
|
|
||||||
left_SlipSlip = sign(abs(1.0_pREAL-stt%xi_sl(:,en) / (prm%xi_inf_sl+xi_sl_sat_offset))**prm%a_sl, &
|
left_SlipSlip = sign(abs(1.0_pREAL-stt%xi_sl(:,en) / (prm%xi_inf_sl+xi_sl_sat_offset))**prm%a_sl, &
|
||||||
1.0_pREAL-stt%xi_sl(:,en) / (prm%xi_inf_sl+xi_sl_sat_offset))
|
1.0_pREAL-stt%xi_sl(:,en) / (prm%xi_inf_sl+xi_sl_sat_offset))
|
||||||
|
|
||||||
dot_xi_sl = prm%h_0_sl_sl * (1.0_pREAL + prm%c_1 * sumF**prm%c_2) * (1.0_pREAL + prm%h_int) &
|
dot_xi_sl = prm%h_0_sl_sl * (1.0_pREAL + prm%c_1 * sumF**prm%c_2) &
|
||||||
* left_SlipSlip * matmul(prm%h_sl_sl,dot_gamma_sl) &
|
* left_SlipSlip * matmul(prm%h_sl_sl,dot_gamma_sl) &
|
||||||
+ matmul(prm%h_sl_tw,dot_gamma_tw)
|
+ matmul(prm%h_sl_tw,dot_gamma_tw)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue