- 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:'
|
||||
case (213_pInt)
|
||||
msg = 'not enough values for material parameter:'
|
||||
case (214_pInt)
|
||||
msg = 'stiffness parameter close to zero:'
|
||||
|
||||
case (252_pInt)
|
||||
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
|
||||
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>
|
||||
#-------------------#
|
||||
|
|
|
@ -27,7 +27,8 @@
|
|||
module constitutive_phenopowerlaw
|
||||
use prec, only: &
|
||||
pReal,&
|
||||
pInt
|
||||
pInt,&
|
||||
tol_math_check
|
||||
|
||||
implicit none
|
||||
private
|
||||
|
@ -282,22 +283,40 @@ subroutine constitutive_phenopowerlaw_init(myFile)
|
|||
constitutive_phenopowerlaw_CoverA(i) = IO_floatValue(line,positions,2_pInt)
|
||||
case ('c11')
|
||||
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')
|
||||
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')
|
||||
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')
|
||||
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')
|
||||
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')
|
||||
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')
|
||||
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')
|
||||
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')
|
||||
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')
|
||||
if (positions(1) < 1_pInt + Nchunks_SlipFamilies) then
|
||||
call IO_warning(50_pInt,ext_msg=trim(tag)//' ('//CONSTITUTIVE_PHENOPOWERLAW_label//')')
|
||||
|
@ -362,37 +381,32 @@ subroutine constitutive_phenopowerlaw_init(myFile)
|
|||
case ('atol_twinfrac')
|
||||
constitutive_phenopowerlaw_aTolTwinfrac(i) = IO_floatValue(line,positions,2_pInt)
|
||||
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//')')
|
||||
endif
|
||||
do j = 1_pInt, Nchunks_SlipSlip
|
||||
constitutive_phenopowerlaw_interaction_SlipSlip(j,i) = IO_floatValue(line,positions,1_pInt+j)
|
||||
enddo
|
||||
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//')')
|
||||
endif
|
||||
do j = 1_pInt, Nchunks_SlipTwin
|
||||
constitutive_phenopowerlaw_interaction_SlipTwin(j,i) = IO_floatValue(line,positions,1_pInt+j)
|
||||
enddo
|
||||
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//')')
|
||||
endif
|
||||
do j = 1_pInt, Nchunks_TwinSlip
|
||||
constitutive_phenopowerlaw_interaction_TwinSlip(j,i) = IO_floatValue(line,positions,1_pInt+j)
|
||||
enddo
|
||||
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//')')
|
||||
endif
|
||||
do j = 1_pInt, Nchunks_TwinTwin
|
||||
constitutive_phenopowerlaw_interaction_TwinTwin(j,i) = IO_floatValue(line,positions,1_pInt+j)
|
||||
enddo
|
||||
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//')')
|
||||
endif
|
||||
do j = 1_pInt,Nchunks_nonSchmid
|
||||
constitutive_phenopowerlaw_nonSchmidCoeff(j,i) = IO_floatValue(line,positions,1_pInt+j)
|
||||
enddo
|
||||
|
|
|
@ -880,9 +880,8 @@ integer(pInt) function lattice_initializeStructure(struct,CoverA)
|
|||
endif
|
||||
|
||||
case ('hex')
|
||||
if (CoverA < 1.0_pReal) then ! checking physical significance of c/a
|
||||
call IO_error(206_pInt)
|
||||
endif
|
||||
if (CoverA < 1.0_pReal .or. CoverA > 2.0_pReal) call IO_error(206_pInt) ! checking physical significance of c/a
|
||||
|
||||
lattice_hex_Nstructure = lattice_hex_Nstructure + 1_pInt ! count instances of hex structures
|
||||
myStructure = 2_pInt + lattice_hex_Nstructure ! 3,4,5,.. for hex
|
||||
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