- Addition of an example of a material.config file for hcp material (cp-Ti).
- New Error Message #214 when elastic constants are not correctly defined. - Error message when the c/a ratio for hcp is higher than 2 (no physical sense).
This commit is contained in:
parent
cb16b30409
commit
a8eb6a985e
|
@ -1539,6 +1539,8 @@ subroutine IO_error(error_ID,e,i,g,ext_msg)
|
||||||
msg = 'unknown plasticity output:'
|
msg = 'unknown plasticity output:'
|
||||||
case (213_pInt)
|
case (213_pInt)
|
||||||
msg = 'not enough values for material parameter:'
|
msg = 'not enough values for material parameter:'
|
||||||
|
case (214_pInt)
|
||||||
|
msg = 'stiffness parameter close to zero:'
|
||||||
|
|
||||||
case (252_pInt)
|
case (252_pInt)
|
||||||
msg = 'nonlocal plasticity works only for direct CPFEM, i.e. one grain per integration point'
|
msg = 'nonlocal plasticity works only for direct CPFEM, i.e. one grain per integration point'
|
||||||
|
|
|
@ -463,6 +463,56 @@ 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 dependance of stacking fault energy
|
dSFE_dT 0.0002 # temperature dependance of stacking fault energy
|
||||||
|
|
||||||
|
[cpTi-alpha]
|
||||||
|
plasticity phenopowerlaw
|
||||||
|
elasticity hooke
|
||||||
|
|
||||||
|
# (output) resistance_slip
|
||||||
|
# (output) shearrate_slip
|
||||||
|
# (output) resolvedstress_slip
|
||||||
|
# (output) totalshear
|
||||||
|
# (output) resistance_twin
|
||||||
|
# (output) shearrate_twin
|
||||||
|
# (output) resolvedstress_twin
|
||||||
|
# (output) totalvolfrac
|
||||||
|
|
||||||
|
lattice_structure hex
|
||||||
|
covera_ratio 1.587
|
||||||
|
# M. Levy, Handbook of Elastic Properties of Solids, Liquids, and Gases (2001)
|
||||||
|
c11 160e9
|
||||||
|
c12 90e9
|
||||||
|
c13 66.0e9
|
||||||
|
c33 181.7e9
|
||||||
|
c44 46.5e9
|
||||||
|
# C. Zambaldi, "Orientation informed nanoindentation of a-titanium: Indentation pileup in hexagonal metals deforming by prismatic slip", J. Mater. Res., Vol. 27, No. 1, Jan 14, 2012
|
||||||
|
nslip 3 3 0 6 0 0
|
||||||
|
gdot0_slip 0.001
|
||||||
|
n_slip 20
|
||||||
|
tau0_slip 364.3e6 158.9e6 0 1140.9e6 0 0 # 158.9e6 1 1140.9e6 1 1
|
||||||
|
tausat_slip 619.5e6 50e6 0 3673.1e6 0 0 # 1394.2e6 1 3673.1e6 1 1
|
||||||
|
a_slip 2
|
||||||
|
ntwin 0 0 0 0
|
||||||
|
gdot0_twin 0.001 0 0 0
|
||||||
|
n_twin 20
|
||||||
|
tau0_twin 31e6 0 0 0 0
|
||||||
|
s_pr 0
|
||||||
|
twin_b 0
|
||||||
|
twin_c 0
|
||||||
|
twin_d 0
|
||||||
|
twin_e 0
|
||||||
|
h0_slipslip 15e6
|
||||||
|
h0_sliptwin 15e6
|
||||||
|
h0_twinslip 15e6
|
||||||
|
h0_twintwin 15e6
|
||||||
|
atol_resistance 1
|
||||||
|
atol_shear 1
|
||||||
|
# atol_twinfrac
|
||||||
|
interaction_slipslip 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
|
interaction_sliptwin 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
|
interaction_twinslip 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
|
interaction_twintwin 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
|
#nonschmid_coefficients = 0
|
||||||
|
|
||||||
#-------------------#
|
#-------------------#
|
||||||
<texture>
|
<texture>
|
||||||
#-------------------#
|
#-------------------#
|
||||||
|
|
|
@ -27,7 +27,8 @@
|
||||||
module constitutive_phenopowerlaw
|
module constitutive_phenopowerlaw
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pReal,&
|
pReal,&
|
||||||
pInt
|
pInt,&
|
||||||
|
tol_math_check
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
|
@ -282,22 +283,40 @@ subroutine constitutive_phenopowerlaw_init(myFile)
|
||||||
constitutive_phenopowerlaw_CoverA(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_phenopowerlaw_CoverA(i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('c11')
|
case ('c11')
|
||||||
constitutive_phenopowerlaw_Cslip_66(1,1,i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_phenopowerlaw_Cslip_66(1,1,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
if (abs(constitutive_phenopowerlaw_Cslip_66(1,1,i)) < tol_math_check) &
|
||||||
|
call IO_error(214_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
||||||
case ('c12')
|
case ('c12')
|
||||||
constitutive_phenopowerlaw_Cslip_66(1,2,i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_phenopowerlaw_Cslip_66(1,2,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
if (abs(constitutive_phenopowerlaw_Cslip_66(1,2,i)) < tol_math_check) &
|
||||||
|
call IO_error(214_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
||||||
case ('c13')
|
case ('c13')
|
||||||
constitutive_phenopowerlaw_Cslip_66(1,3,i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_phenopowerlaw_Cslip_66(1,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
if (abs(constitutive_phenopowerlaw_Cslip_66(1,3,i)) < tol_math_check) &
|
||||||
|
call IO_error(214_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
||||||
case ('c22')
|
case ('c22')
|
||||||
constitutive_phenopowerlaw_Cslip_66(2,2,i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_phenopowerlaw_Cslip_66(2,2,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
if (abs(constitutive_phenopowerlaw_Cslip_66(2,2,i)) < tol_math_check) &
|
||||||
|
call IO_error(214_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
||||||
case ('c23')
|
case ('c23')
|
||||||
constitutive_phenopowerlaw_Cslip_66(2,3,i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_phenopowerlaw_Cslip_66(2,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
if (abs(constitutive_phenopowerlaw_Cslip_66(2,3,i)) < tol_math_check) &
|
||||||
|
call IO_error(214_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
||||||
case ('c33')
|
case ('c33')
|
||||||
constitutive_phenopowerlaw_Cslip_66(3,3,i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_phenopowerlaw_Cslip_66(3,3,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
if (abs(constitutive_phenopowerlaw_Cslip_66(3,3,i)) < tol_math_check) &
|
||||||
|
call IO_error(214_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
||||||
case ('c44')
|
case ('c44')
|
||||||
constitutive_phenopowerlaw_Cslip_66(4,4,i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_phenopowerlaw_Cslip_66(4,4,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
if (abs(constitutive_phenopowerlaw_Cslip_66(4,4,i)) < tol_math_check) &
|
||||||
|
call IO_error(214_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
||||||
case ('c55')
|
case ('c55')
|
||||||
constitutive_phenopowerlaw_Cslip_66(5,5,i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_phenopowerlaw_Cslip_66(5,5,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
if (abs(constitutive_phenopowerlaw_Cslip_66(5,5,i)) < tol_math_check) &
|
||||||
|
call IO_error(214_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
||||||
case ('c66')
|
case ('c66')
|
||||||
constitutive_phenopowerlaw_Cslip_66(6,6,i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_phenopowerlaw_Cslip_66(6,6,i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
if (abs(constitutive_phenopowerlaw_Cslip_66(6,6,i)) < tol_math_check) &
|
||||||
|
call IO_error(214_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
||||||
case ('nslip')
|
case ('nslip')
|
||||||
if (positions(1) < 1_pInt + Nchunks_SlipFamilies) then
|
if (positions(1) < 1_pInt + Nchunks_SlipFamilies) then
|
||||||
call IO_warning(50_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
call IO_warning(50_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
||||||
|
@ -362,37 +381,32 @@ subroutine constitutive_phenopowerlaw_init(myFile)
|
||||||
case ('atol_twinfrac')
|
case ('atol_twinfrac')
|
||||||
constitutive_phenopowerlaw_aTolTwinfrac(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_phenopowerlaw_aTolTwinfrac(i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('interaction_slipslip')
|
case ('interaction_slipslip')
|
||||||
if (positions(1) < 1_pInt + Nchunks_SlipSlip) then
|
if (positions(1) < 1_pInt + Nchunks_SlipSlip) &
|
||||||
call IO_error(213_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
call IO_error(213_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
||||||
endif
|
|
||||||
do j = 1_pInt, Nchunks_SlipSlip
|
do j = 1_pInt, Nchunks_SlipSlip
|
||||||
constitutive_phenopowerlaw_interaction_SlipSlip(j,i) = IO_floatValue(line,positions,1_pInt+j)
|
constitutive_phenopowerlaw_interaction_SlipSlip(j,i) = IO_floatValue(line,positions,1_pInt+j)
|
||||||
enddo
|
enddo
|
||||||
case ('interaction_sliptwin')
|
case ('interaction_sliptwin')
|
||||||
if (positions(1) < 1_pInt + Nchunks_SlipTwin) then
|
if (positions(1) < 1_pInt + Nchunks_SlipTwin) &
|
||||||
call IO_error(213_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
call IO_error(213_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
||||||
endif
|
|
||||||
do j = 1_pInt, Nchunks_SlipTwin
|
do j = 1_pInt, Nchunks_SlipTwin
|
||||||
constitutive_phenopowerlaw_interaction_SlipTwin(j,i) = IO_floatValue(line,positions,1_pInt+j)
|
constitutive_phenopowerlaw_interaction_SlipTwin(j,i) = IO_floatValue(line,positions,1_pInt+j)
|
||||||
enddo
|
enddo
|
||||||
case ('interaction_twinslip')
|
case ('interaction_twinslip')
|
||||||
if (positions(1) < 1_pInt + Nchunks_TwinSlip) then
|
if (positions(1) < 1_pInt + Nchunks_TwinSlip) &
|
||||||
call IO_error(213_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
call IO_error(213_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
||||||
endif
|
|
||||||
do j = 1_pInt, Nchunks_TwinSlip
|
do j = 1_pInt, Nchunks_TwinSlip
|
||||||
constitutive_phenopowerlaw_interaction_TwinSlip(j,i) = IO_floatValue(line,positions,1_pInt+j)
|
constitutive_phenopowerlaw_interaction_TwinSlip(j,i) = IO_floatValue(line,positions,1_pInt+j)
|
||||||
enddo
|
enddo
|
||||||
case ('interaction_twintwin')
|
case ('interaction_twintwin')
|
||||||
if (positions(1) < 1_pInt + Nchunks_TwinTwin) then
|
if (positions(1) < 1_pInt + Nchunks_TwinTwin) &
|
||||||
call IO_error(213_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
call IO_error(213_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
||||||
endif
|
|
||||||
do j = 1_pInt, Nchunks_TwinTwin
|
do j = 1_pInt, Nchunks_TwinTwin
|
||||||
constitutive_phenopowerlaw_interaction_TwinTwin(j,i) = IO_floatValue(line,positions,1_pInt+j)
|
constitutive_phenopowerlaw_interaction_TwinTwin(j,i) = IO_floatValue(line,positions,1_pInt+j)
|
||||||
enddo
|
enddo
|
||||||
case ('nonschmid_coefficients')
|
case ('nonschmid_coefficients')
|
||||||
if (positions(1) < 1_pInt + Nchunks_nonSchmid) then
|
if (positions(1) < 1_pInt + Nchunks_nonSchmid) &
|
||||||
call IO_error(213_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
call IO_error(213_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
||||||
endif
|
|
||||||
do j = 1_pInt,Nchunks_nonSchmid
|
do j = 1_pInt,Nchunks_nonSchmid
|
||||||
constitutive_phenopowerlaw_nonSchmidCoeff(j,i) = IO_floatValue(line,positions,1_pInt+j)
|
constitutive_phenopowerlaw_nonSchmidCoeff(j,i) = IO_floatValue(line,positions,1_pInt+j)
|
||||||
enddo
|
enddo
|
||||||
|
|
|
@ -880,9 +880,8 @@ integer(pInt) function lattice_initializeStructure(struct,CoverA)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
case ('hex')
|
case ('hex')
|
||||||
if (CoverA < 1.0_pReal) then ! checking physical significance of c/a
|
if (CoverA < 1.0_pReal .or. CoverA > 2.0_pReal) call IO_error(206_pInt) ! checking physical significance of c/a
|
||||||
call IO_error(206_pInt)
|
|
||||||
endif
|
|
||||||
lattice_hex_Nstructure = lattice_hex_Nstructure + 1_pInt ! count instances of hex structures
|
lattice_hex_Nstructure = lattice_hex_Nstructure + 1_pInt ! count instances of hex structures
|
||||||
myStructure = 2_pInt + lattice_hex_Nstructure ! 3,4,5,.. for hex
|
myStructure = 2_pInt + lattice_hex_Nstructure ! 3,4,5,.. for hex
|
||||||
myNslipSystem = lattice_hex_NslipSystem ! size of slip system families
|
myNslipSystem = lattice_hex_NslipSystem ! size of slip system families
|
||||||
|
|
|
@ -0,0 +1,125 @@
|
||||||
|
# Material : cp-Ti (alpha)
|
||||||
|
|
||||||
|
#####################
|
||||||
|
<homogenization>
|
||||||
|
#####################
|
||||||
|
|
||||||
|
[SX]
|
||||||
|
type isostrain
|
||||||
|
Ngrains 1
|
||||||
|
|
||||||
|
#####################
|
||||||
|
<microstructure>
|
||||||
|
#####################
|
||||||
|
|
||||||
|
[Cube]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 1 fraction 1.0
|
||||||
|
|
||||||
|
[Cube]
|
||||||
|
crystallite 1
|
||||||
|
(constituent) phase 1 texture 2 fraction 1.0
|
||||||
|
|
||||||
|
#####################
|
||||||
|
<crystallite>
|
||||||
|
#####################
|
||||||
|
|
||||||
|
[essential_output]
|
||||||
|
(output) texture
|
||||||
|
(output) orientation
|
||||||
|
(output) grainrotation # deviation from initial orientation as axis (1-3) and angle in degree (4)
|
||||||
|
(output) f # deformation gradient tensor; synonyms: "defgrad"
|
||||||
|
(output) p # first Piola-Kichhoff stress tensor; synonyms: "firstpiola", "1stpiola"
|
||||||
|
|
||||||
|
# (output) phase
|
||||||
|
# (output) texture
|
||||||
|
# (output) volume
|
||||||
|
# (output) orientation
|
||||||
|
# (output) eulerangles
|
||||||
|
# (output) grainorientation
|
||||||
|
# (output) grainorientationx
|
||||||
|
# (output) grainorientationy
|
||||||
|
# (output) grainorientationz
|
||||||
|
# (output) f
|
||||||
|
# (output) fe
|
||||||
|
# (output) fp
|
||||||
|
# (output) e
|
||||||
|
# (output) ee
|
||||||
|
# (output) p
|
||||||
|
# (output) s
|
||||||
|
# (output) lp
|
||||||
|
# (output) elasmatrix
|
||||||
|
# (output) ipcoords
|
||||||
|
|
||||||
|
#####################
|
||||||
|
<phase>
|
||||||
|
#####################
|
||||||
|
|
||||||
|
[Ti]
|
||||||
|
plasticity phenopowerlaw
|
||||||
|
elasticity hooke
|
||||||
|
|
||||||
|
# (output) resistance_slip
|
||||||
|
# (output) shearrate_slip
|
||||||
|
# (output) resolvedstress_slip
|
||||||
|
# (output) totalshear
|
||||||
|
# (output) resistance_twin
|
||||||
|
# (output) shearrate_twin
|
||||||
|
# (output) resolvedstress_twin
|
||||||
|
# (output) totalvolfrac
|
||||||
|
|
||||||
|
lattice_structure hex
|
||||||
|
covera_ratio 1.587
|
||||||
|
# M. Levy, Handbook of Elastic Properties of Solids, Liquids, and Gases (2001)
|
||||||
|
c11 160e9
|
||||||
|
c12 90e9
|
||||||
|
c13 66.0e9
|
||||||
|
# c22
|
||||||
|
# c23
|
||||||
|
c33 181.7e9
|
||||||
|
c44 46.5e9
|
||||||
|
c66 35e9 # =0.5*(c11-c12)
|
||||||
|
|
||||||
|
# C. Zambaldi, "Orientation informed nanoindentation of a-titanium: Indentation pileup in hexagonal metals deforming by prismatic slip", J. Mater. Res., Vol. 27, No. 1, Jan 14, 2012
|
||||||
|
nslip 3 3 0 6 0 0
|
||||||
|
gdot0_slip 0.001
|
||||||
|
n_slip 20
|
||||||
|
tau0_slip 364.3e6 158.9e6 0 1140.9e6 0 0 # 158.9e6 1 1140.9e6 1 1
|
||||||
|
tausat_slip 619.5e6 50e6 0 3673.1e6 0 0 # 1394.2e6 1 3673.1e6 1 1
|
||||||
|
a_slip 2
|
||||||
|
|
||||||
|
ntwin 0 0 0 0
|
||||||
|
gdot0_twin 0.001 0 0 0
|
||||||
|
n_twin 20
|
||||||
|
tau0_twin 31e6 0 0 0 0
|
||||||
|
s_pr 0
|
||||||
|
twin_b 0
|
||||||
|
twin_c 0
|
||||||
|
twin_d 0
|
||||||
|
twin_e 0
|
||||||
|
|
||||||
|
h0_slipslip 15e6
|
||||||
|
h0_sliptwin 15e6
|
||||||
|
h0_twinslip 15e6
|
||||||
|
h0_twintwin 15e6
|
||||||
|
|
||||||
|
atol_resistance 1
|
||||||
|
atol_shear 1
|
||||||
|
# atol_twinfrac
|
||||||
|
|
||||||
|
interaction_slipslip 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
|
interaction_sliptwin 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
|
interaction_twinslip 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
|
interaction_twintwin 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
|
|
||||||
|
nonschmid_coefficients = 0
|
||||||
|
|
||||||
|
#####################
|
||||||
|
<texture>
|
||||||
|
#####################
|
||||||
|
|
||||||
|
[Cube]
|
||||||
|
(gauss) phi1 0 Phi 0 phi2 0 scatter 0.0 fraction 1.0
|
||||||
|
|
||||||
|
[Cube]
|
||||||
|
(gauss) phi1 45 Phi 45 phi2 45 scatter 0.0 fraction 1.0
|
Loading…
Reference in New Issue