- 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:
David Mercier 2013-09-17 12:20:50 +00:00
parent cb16b30409
commit a8eb6a985e
5 changed files with 204 additions and 14 deletions

View File

@ -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'

View File

@ -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>
#-------------------# #-------------------#

View File

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

View File

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

View File

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