From f2211260e3a1a6a868a701f622bf8de4efa7d73a Mon Sep 17 00:00:00 2001
From: Pratheek Shanthraj
Date: Wed, 5 Nov 2014 17:41:08 +0000
Subject: [PATCH] introduced possibly nonlocal anisotropic ductile damage model
---
code/CommercialFEM_fileList.f90 | 3 +-
code/Makefile | 5 +-
code/constitutive.f90 | 118 ++++++++++++++++++++++----------
code/homogenization.f90 | 5 +-
code/material.f90 | 5 ++
5 files changed, 96 insertions(+), 40 deletions(-)
diff --git a/code/CommercialFEM_fileList.f90 b/code/CommercialFEM_fileList.f90
index 0142c07f0..84e00d53d 100644
--- a/code/CommercialFEM_fileList.f90
+++ b/code/CommercialFEM_fileList.f90
@@ -17,8 +17,9 @@
#include "damage_none.f90"
#include "damage_isoBrittle.f90"
#include "damage_isoDuctile.f90"
-#include "damage_gurson.f90"
#include "damage_anisoBrittle.f90"
+#include "damage_anisoDuctile.f90"
+#include "damage_gurson.f90"
#include "thermal_isothermal.f90"
#include "thermal_adiabatic.f90"
#include "vacancy_constant.f90"
diff --git a/code/Makefile b/code/Makefile
index f8a22dd8d..01a355c6b 100644
--- a/code/Makefile
+++ b/code/Makefile
@@ -326,7 +326,7 @@ COMPILE =$(COMPILE_OPTIONS_$(F90)) $(STANDARD_CHECK_$(F90)) $(OPTIMIZATI
COMPILE_MAXOPTI =$(COMPILE_OPTIONS_$(F90)) $(STANDARD_CHECK_$(F90)) $(OPTIMIZATION_$(MAXOPTI)_$(F90)) $(INCLUDE_DIRS) $(PRECISION_$(F90))
###################################################################################################
DAMAGE_FILES = \
- damage_none.o damage_isoBrittle.o damage_isoDuctile.o damage_gurson.o damage_anisoBrittle.o
+ damage_none.o damage_isoBrittle.o damage_isoDuctile.o damage_gurson.o damage_anisoBrittle.o damage_anisoDuctile.o
THERMAL_FILES = \
thermal_isothermal.o thermal_adiabatic.o
@@ -490,6 +490,9 @@ damage_isoDuctile.o: damage_isoDuctile.f90 \
damage_anisoBrittle.o: damage_anisoBrittle.f90 \
lattice.o
+damage_anisoDuctile.o: damage_anisoDuctile.f90 \
+ lattice.o
+
damage_gurson.o: damage_gurson.f90 \
lattice.o
diff --git a/code/constitutive.f90 b/code/constitutive.f90
index 0cc0e0f13..3b3aa8eb6 100644
--- a/code/constitutive.f90
+++ b/code/constitutive.f90
@@ -129,6 +129,7 @@ subroutine constitutive_init(temperature_init)
LOCAL_DAMAGE_isoBrittle_ID, &
LOCAL_DAMAGE_isoDuctile_ID, &
LOCAL_DAMAGE_anisoBrittle_ID, &
+ LOCAL_DAMAGE_anisoDuctile_ID, &
LOCAL_DAMAGE_gurson_ID, &
LOCAL_THERMAL_isothermal_ID, &
LOCAL_THERMAL_adiabatic_ID, &
@@ -138,6 +139,7 @@ subroutine constitutive_init(temperature_init)
LOCAL_DAMAGE_isoBrittle_LABEL, &
LOCAL_DAMAGE_isoDuctile_LABEL, &
LOCAL_DAMAGE_anisoBrittle_LABEL, &
+ LOCAL_DAMAGE_anisoDuctile_LABEL, &
LOCAL_DAMAGE_gurson_LABEL, &
LOCAL_THERMAL_isothermal_label, &
LOCAL_THERMAL_adiabatic_label, &
@@ -160,6 +162,7 @@ subroutine constitutive_init(temperature_init)
use damage_none
use damage_isoBrittle
use damage_isoDuctile
+ use damage_anisoDuctile
use damage_anisoBrittle
use damage_gurson
use thermal_isothermal
@@ -205,8 +208,9 @@ subroutine constitutive_init(temperature_init)
if (any(phase_damage == LOCAL_DAMAGE_none_ID)) call damage_none_init(FILEUNIT)
if (any(phase_damage == LOCAL_DAMAGE_isoBrittle_ID)) call damage_isoBrittle_init(FILEUNIT)
if (any(phase_damage == LOCAL_DAMAGE_isoductile_ID)) call damage_isoDuctile_init(FILEUNIT)
- if (any(phase_damage == LOCAL_DAMAGE_gurson_ID)) call damage_gurson_init(FILEUNIT)
if (any(phase_damage == LOCAL_DAMAGE_anisoBrittle_ID)) call damage_anisoBrittle_init(FILEUNIT)
+ if (any(phase_damage == LOCAL_DAMAGE_anisoductile_ID)) call damage_anisoDuctile_init(FILEUNIT)
+ if (any(phase_damage == LOCAL_DAMAGE_gurson_ID)) call damage_gurson_init(FILEUNIT)
close(FILEUNIT)
!--------------------------------------------------------------------------------------------------
@@ -305,16 +309,21 @@ subroutine constitutive_init(temperature_init)
thisNoutput => damage_isoDuctile_Noutput
thisOutput => damage_isoDuctile_output
thisSize => damage_isoDuctile_sizePostResult
- case (LOCAL_DAMAGE_gurson_ID)
- outputName = LOCAL_DAMAGE_gurson_label
- thisNoutput => damage_gurson_Noutput
- thisOutput => damage_gurson_output
- thisSize => damage_gurson_sizePostResult
case (LOCAL_DAMAGE_anisoBrittle_ID)
outputName = LOCAL_DAMAGE_anisoBrittle_label
thisNoutput => damage_anisoBrittle_Noutput
thisOutput => damage_anisoBrittle_output
thisSize => damage_anisoBrittle_sizePostResult
+ case (LOCAL_DAMAGE_anisoDuctile_ID)
+ outputName = LOCAL_DAMAGE_anisoDuctile_LABEL
+ thisNoutput => damage_anisoDuctile_Noutput
+ thisOutput => damage_anisoDuctile_output
+ thisSize => damage_anisoDuctile_sizePostResult
+ case (LOCAL_DAMAGE_gurson_ID)
+ outputName = LOCAL_DAMAGE_gurson_label
+ thisNoutput => damage_gurson_Noutput
+ thisOutput => damage_gurson_output
+ thisSize => damage_gurson_sizePostResult
case default
knownDamage = .false.
end select
@@ -540,6 +549,7 @@ subroutine constitutive_microstructure(Tstar_v, Fe, Fp, ipc, ip, el)
PLASTICITY_nonlocal_ID, &
LOCAL_DAMAGE_isoBrittle_ID, &
LOCAL_DAMAGE_isoDuctile_ID, &
+ LOCAL_DAMAGE_anisoDuctile_ID, &
LOCAL_DAMAGE_gurson_ID
use constitutive_titanmod, only: &
@@ -555,6 +565,8 @@ subroutine constitutive_microstructure(Tstar_v, Fe, Fp, ipc, ip, el)
damage_isoBrittle_getDamage
use damage_isoDuctile, only: &
damage_isoDuctile_microstructure
+ use damage_anisoDuctile, only: &
+ damage_anisoDuctile_microstructure
use damage_gurson, only: &
damage_gurson_microstructure
@@ -595,8 +607,11 @@ subroutine constitutive_microstructure(Tstar_v, Fe, Fp, ipc, ip, el)
Tstar_v_effective = Tstar_v/(damage*damage)
call damage_isoBrittle_microstructure(Tstar_v_effective, Fe, ipc, ip, el)
case (LOCAL_DAMAGE_isoDuctile_ID)
- call constitutive_getAccumulatedSlip(nSlip,accumulatedSlip,Fp,ipc, ip, el)
+ call constitutive_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
call damage_isoDuctile_microstructure(nSlip,accumulatedSlip,ipc, ip, el)
+ case (LOCAL_DAMAGE_anisoDuctile_ID)
+ call constitutive_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
+ call damage_anisoDuctile_microstructure(nSlip,accumulatedSlip,ipc, ip, el)
case (LOCAL_DAMAGE_gurson_ID)
call damage_gurson_microstructure(ipc, ip, el)
@@ -1035,6 +1050,7 @@ subroutine constitutive_collectDotState(Tstar_v, Lp, FeArray, FpArray, subdt, su
PLASTICITY_nonlocal_ID, &
LOCAL_DAMAGE_isoBrittle_ID, &
LOCAL_DAMAGE_isoDuctile_ID, &
+ LOCAL_DAMAGE_anisoDuctile_ID, &
LOCAL_DAMAGE_anisoBrittle_ID, &
LOCAL_DAMAGE_gurson_ID, &
LOCAL_THERMAL_adiabatic_ID, &
@@ -1055,10 +1071,12 @@ subroutine constitutive_collectDotState(Tstar_v, Lp, FeArray, FpArray, subdt, su
damage_isoBrittle_dotState
use damage_isoDuctile, only: &
damage_isoDuctile_dotState
- use damage_gurson, only: &
- damage_gurson_dotState
use damage_anisoBrittle, only: &
damage_anisoBrittle_dotState
+ use damage_anisoDuctile, only: &
+ damage_anisoDuctile_dotState
+ use damage_gurson, only: &
+ damage_gurson_dotState
use thermal_adiabatic, only: &
thermal_adiabatic_dotState
use vacancy_generation, only: &
@@ -1113,10 +1131,12 @@ subroutine constitutive_collectDotState(Tstar_v, Lp, FeArray, FpArray, subdt, su
call damage_isoBrittle_dotState(ipc, ip, el)
case (LOCAL_DAMAGE_isoDuctile_ID)
call damage_isoDuctile_dotState(ipc, ip, el)
- case (LOCAL_DAMAGE_gurson_ID)
- call damage_gurson_dotState(Tstar_v, Lp, ipc, ip, el)
case (LOCAL_DAMAGE_anisoBrittle_ID)
call damage_anisoBrittle_dotState(Tstar_v, ipc, ip, el)
+ case (LOCAL_DAMAGE_anisoDuctile_ID)
+ call damage_anisoDuctile_dotState(ipc, ip, el)
+ case (LOCAL_DAMAGE_gurson_ID)
+ call damage_gurson_dotState(Tstar_v, Lp, ipc, ip, el)
end select
select case (phase_thermal(material_phase(ipc,ip,el)))
@@ -1126,7 +1146,7 @@ subroutine constitutive_collectDotState(Tstar_v, Lp, FeArray, FpArray, subdt, su
select case (phase_vacancy(material_phase(ipc,ip,el)))
case (LOCAL_VACANCY_generation_ID)
- call constitutive_getAccumulatedSlip(nSlip,accumulatedSlip,FpArray(1:3,1:3,ipc,ip,el),ipc,ip,el)
+ call constitutive_getAccumulatedSlip(nSlip,accumulatedSlip,ipc,ip,el)
call vacancy_generation_dotState(nSlip,accumulatedSlip,Tstar_v,constitutive_getTemperature(ipc,ip,el), &
ipc, ip, el)
end select
@@ -1215,16 +1235,19 @@ function constitutive_getLocalDamage(ipc, ip, el)
LOCAL_DAMAGE_isoBrittle_ID, &
LOCAL_DAMAGE_isoDuctile_ID, &
LOCAL_DAMAGE_anisoBrittle_ID, &
+ LOCAL_DAMAGE_anisoDuctile_ID, &
LOCAL_DAMAGE_gurson_ID, &
phase_damage
use damage_isoBrittle, only: &
damage_isoBrittle_getLocalDamage
use damage_isoDuctile, only: &
damage_isoDuctile_getLocalDamage
- use damage_gurson, only: &
- damage_gurson_getLocalDamage
use damage_anisoBrittle, only: &
damage_anisoBrittle_getLocalDamage
+ use damage_anisoDuctile, only: &
+ damage_anisoDuctile_getLocalDamage
+ use damage_gurson, only: &
+ damage_gurson_getLocalDamage
implicit none
integer(pInt), intent(in) :: &
@@ -1243,11 +1266,16 @@ function constitutive_getLocalDamage(ipc, ip, el)
case (LOCAL_DAMAGE_isoDuctile_ID)
constitutive_getLocalDamage = damage_isoDuctile_getLocalDamage(ipc, ip, el)
+ case (LOCAL_DAMAGE_anisoBrittle_ID)
+ constitutive_getLocalDamage = damage_anisoBrittle_getLocalDamage(ipc, ip, el)
+
+ case (LOCAL_DAMAGE_anisoDuctile_ID)
+
+ constitutive_getLocalDamage = damage_anisoDuctile_getLocalDamage(ipc, ip, el)
+
case (LOCAL_DAMAGE_gurson_ID)
constitutive_getLocalDamage = damage_gurson_getLocalDamage(ipc, ip, el)
- case (LOCAL_DAMAGE_anisoBrittle_ID)
- constitutive_getLocalDamage = damage_anisoBrittle_getLocalDamage(ipc, ip, el)
end select
end function constitutive_getLocalDamage
@@ -1263,16 +1291,19 @@ subroutine constitutive_putLocalDamage(ipc, ip, el, localDamage)
LOCAL_DAMAGE_isoBrittle_ID, &
LOCAL_DAMAGE_isoDuctile_ID, &
LOCAL_DAMAGE_anisoBrittle_ID, &
+ LOCAL_DAMAGE_anisoDuctile_ID, &
LOCAL_DAMAGE_gurson_ID, &
phase_damage
use damage_isoBrittle, only: &
damage_isoBrittle_putLocalDamage
use damage_isoDuctile, only: &
damage_isoDuctile_putLocalDamage
- use damage_gurson, only: &
- damage_gurson_putLocalDamage
use damage_anisoBrittle, only: &
damage_anisoBrittle_putLocalDamage
+ use damage_anisoDuctile, only: &
+ damage_anisoDuctile_putLocalDamage
+ use damage_gurson, only: &
+ damage_gurson_putLocalDamage
implicit none
integer(pInt), intent(in) :: &
@@ -1289,12 +1320,15 @@ subroutine constitutive_putLocalDamage(ipc, ip, el, localDamage)
case (LOCAL_DAMAGE_isoDuctile_ID)
call damage_isoDuctile_putLocalDamage(ipc, ip, el, localDamage)
- case (LOCAL_DAMAGE_gurson_ID)
- call damage_gurson_putLocalDamage(ipc, ip, el, localDamage)
-
case (LOCAL_DAMAGE_anisoBrittle_ID)
call damage_anisoBrittle_putLocalDamage(ipc, ip, el, localDamage)
+ case (LOCAL_DAMAGE_anisoDuctile_ID)
+ call damage_anisoDuctile_putLocalDamage(ipc, ip, el, localDamage)
+
+ case (LOCAL_DAMAGE_gurson_ID)
+ call damage_gurson_putLocalDamage(ipc, ip, el, localDamage)
+
end select
end subroutine constitutive_putLocalDamage
@@ -1311,16 +1345,19 @@ function constitutive_getDamage(ipc, ip, el)
LOCAL_DAMAGE_isoBrittle_ID, &
LOCAL_DAMAGE_isoDuctile_ID, &
LOCAL_DAMAGE_anisoBrittle_ID, &
+ LOCAL_DAMAGE_anisoDuctile_ID, &
LOCAL_DAMAGE_gurson_ID, &
phase_damage
use damage_isoBrittle, only: &
damage_isoBrittle_getDamage
use damage_isoDuctile, only: &
damage_isoDuctile_getDamage
- use damage_gurson, only: &
- damage_gurson_getDamage
use damage_anisoBrittle, only: &
damage_anisoBrittle_getDamage
+ use damage_anisoDuctile, only: &
+ damage_anisoDuctile_getDamage
+ use damage_gurson, only: &
+ damage_gurson_getDamage
implicit none
integer(pInt), intent(in) :: &
@@ -1339,11 +1376,15 @@ function constitutive_getDamage(ipc, ip, el)
case (LOCAL_DAMAGE_isoDuctile_ID)
constitutive_getDamage = damage_isoDuctile_getDamage(ipc, ip, el)
+ case (LOCAL_DAMAGE_anisoBrittle_ID)
+ constitutive_getDamage = damage_anisoBrittle_getDamage(ipc, ip, el)
+
+ case (LOCAL_DAMAGE_anisoDuctile_ID)
+ constitutive_getDamage = damage_anisoDuctile_getDamage(ipc, ip, el)
+
case (LOCAL_DAMAGE_gurson_ID)
constitutive_getDamage = damage_gurson_getDamage(ipc, ip, el)
- case (LOCAL_DAMAGE_anisoBrittle_ID)
- constitutive_getDamage = damage_anisoBrittle_getDamage(ipc, ip, el)
end select
end function constitutive_getDamage
@@ -1357,10 +1398,13 @@ function constitutive_getSlipDamage(nSlip, Tstar_v, ipc, ip, el)
use material, only: &
material_phase, &
LOCAL_DAMAGE_isoDuctile_ID, &
+ LOCAL_DAMAGE_anisoDuctile_ID, &
LOCAL_DAMAGE_gurson_ID, &
phase_damage
use damage_isoDuctile, only: &
damage_isoDuctile_getSlipDamage
+ use damage_anisoDuctile, only: &
+ damage_anisoDuctile_getSlipDamage
use damage_gurson, only: &
damage_gurson_getSlipDamage
@@ -1372,12 +1416,19 @@ function constitutive_getSlipDamage(nSlip, Tstar_v, ipc, ip, el)
el !< element number
real(pReal), intent(in), dimension(6) :: &
Tstar_v !< 2nd Piola-Kirchhoff stress
- real(pReal) :: constitutive_getSlipDamage(nSlip)
+ real(pReal) :: &
+ constitutive_getSlipDamage(nSlip)
+ real(pReal), allocatable :: &
+ accumulatedSlip(:)
select case (phase_damage(material_phase(ipc,ip,el)))
case (LOCAL_DAMAGE_isoDuctile_ID)
constitutive_getSlipDamage = damage_isoDuctile_getSlipDamage(ipc, ip, el)
+ case (LOCAL_DAMAGE_anisoDuctile_ID)
+ call constitutive_getAccumulatedSlip(nSlip,accumulatedSlip,ipc,ip,el)
+ constitutive_getSlipDamage = damage_anisoDuctile_getSlipDamage(nSlip, accumulatedSlip, ipc, ip, el)
+
case (LOCAL_DAMAGE_gurson_ID)
constitutive_getSlipDamage = damage_gurson_getSlipDamage(Tstar_v, ipc, ip, el)
@@ -1621,7 +1672,7 @@ end function constitutive_getVacancyConcentration
!--------------------------------------------------------------------------------------------------
!> @brief returns vacancy diffusion tensor
!--------------------------------------------------------------------------------------------------
-function constitutive_getVacancyDiffusion33(Fp, ipc, ip, el)
+function constitutive_getVacancyDiffusion33(ipc, ip, el)
use prec, only: &
pReal
use lattice, only: &
@@ -1639,7 +1690,6 @@ function constitutive_getVacancyDiffusion33(Fp, ipc, ip, el)
ip, & !< integration point number
el !< element number
real(pReal), dimension(3,3) :: &
- Fp, &
constitutive_getVacancyDiffusion33
real(pReal), dimension(:), allocatable :: &
accumulatedSlip
@@ -1649,7 +1699,7 @@ function constitutive_getVacancyDiffusion33(Fp, ipc, ip, el)
constitutive_getVacancyDiffusion33 = lattice_VacancyDiffusion33(1:3,1:3,material_phase(ipc,ip,el))
select case(phase_vacancy(material_phase(ipc,ip,el)))
case (LOCAL_VACANCY_generation_ID)
- call constitutive_getAccumulatedSlip(nSlip,accumulatedSlip,Fp,ipc,ip,el)
+ call constitutive_getAccumulatedSlip(nSlip,accumulatedSlip,ipc,ip,el)
constitutive_getVacancyDiffusion33 = &
vacancy_generation_getVacancyDiffusion33(nSlip,accumulatedSlip,constitutive_getTemperature(ipc,ip,el), &
ipc,ip,el)
@@ -1661,7 +1711,7 @@ end function constitutive_getVacancyDiffusion33
!--------------------------------------------------------------------------------------------------
!> @brief returns accumulated slip on each system defined
!--------------------------------------------------------------------------------------------------
-subroutine constitutive_getAccumulatedSlip(nSlip,accumulatedSlip,Fp,ipc, ip, el)
+subroutine constitutive_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
use prec, only: &
pReal, &
pInt
@@ -1679,6 +1729,8 @@ subroutine constitutive_getAccumulatedSlip(nSlip,accumulatedSlip,Fp,ipc, ip, el)
PLASTICITY_dislokmc_ID, &
PLASTICITY_titanmod_ID, &
PLASTICITY_nonlocal_ID
+ use constitutive_J2, only: &
+ constitutive_J2_getAccumulatedSlip
use constitutive_phenopowerlaw, only: &
constitutive_phenopowerlaw_getAccumulatedSlip
use constitutive_dislotwin, only: &
@@ -1696,8 +1748,6 @@ subroutine constitutive_getAccumulatedSlip(nSlip,accumulatedSlip,Fp,ipc, ip, el)
accumulatedSlip
integer(pInt) :: &
nSlip
- real(pReal), intent(in), dimension(3,3) :: &
- Fp !< plastic velocity gradient
integer(pInt), intent(in) :: &
ipc, & !< grain number
ip, & !< integration point number
@@ -1708,9 +1758,7 @@ subroutine constitutive_getAccumulatedSlip(nSlip,accumulatedSlip,Fp,ipc, ip, el)
nSlip = 0_pInt
allocate(accumulatedSlip(nSlip))
case (PLASTICITY_J2_ID)
- nSlip = 1_pInt
- allocate(accumulatedSlip(nSlip))
- accumulatedSlip(1) = math_equivStrain33((math_mul33xx33(transpose(Fp),Fp) - math_I3)/2.0_pReal)
+ call constitutive_J2_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
case (PLASTICITY_PHENOPOWERLAW_ID)
call constitutive_phenopowerlaw_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
case (PLASTICITY_DISLOTWIN_ID)
diff --git a/code/homogenization.f90 b/code/homogenization.f90
index 957b6c9fa..9a1dd2999 100644
--- a/code/homogenization.f90
+++ b/code/homogenization.f90
@@ -1112,8 +1112,7 @@ function field_getVacancyDiffusion33(ip,el)
FIELD_VACANCY_NONLOCAL_ID, &
homogenization_Ngrains
use crystallite, only: &
- crystallite_push33ToRef, &
- crystallite_Fp
+ crystallite_push33ToRef
use constitutive, only: &
constitutive_getVacancyDiffusion33
@@ -1132,7 +1131,7 @@ function field_getVacancyDiffusion33(ip,el)
do ipc = 1, homogenization_Ngrains(mesh_element(3,el))
field_getVacancyDiffusion33 = field_getVacancyDiffusion33 + &
crystallite_push33ToRef(ipc,ip,el, &
- constitutive_getVacancyDiffusion33(crystallite_Fp(1:3,1:3,ipc,ip,el),ipc,ip,el))
+ constitutive_getVacancyDiffusion33(ipc,ip,el))
enddo
end select
diff --git a/code/material.f90 b/code/material.f90
index 5002a08e9..54890f538 100644
--- a/code/material.f90
+++ b/code/material.f90
@@ -31,6 +31,7 @@ module material
LOCAL_DAMAGE_isoBrittle_LABEL = 'isobrittle', &
LOCAL_DAMAGE_isoDuctile_LABEL = 'isoductile', &
LOCAL_DAMAGE_anisoBrittle_LABEL= 'anisobrittle', &
+ LOCAL_DAMAGE_anisoDuctile_LABEL= 'anisoductile', &
LOCAL_DAMAGE_gurson_LABEL = 'gurson', &
LOCAL_THERMAL_isothermal_label = 'isothermal', &
LOCAL_THERMAL_adiabatic_label = 'adiabatic', &
@@ -67,6 +68,7 @@ module material
LOCAL_DAMAGE_isoBrittle_ID, &
LOCAL_DAMAGE_isoDuctile_ID, &
LOCAL_DAMAGE_anisoBrittle_ID, &
+ LOCAL_DAMAGE_anisoDuctile_ID, &
LOCAL_DAMAGE_gurson_ID
end enum
enum, bind(c)
@@ -240,6 +242,7 @@ module material
LOCAL_DAMAGE_isoBrittle_ID, &
LOCAL_DAMAGE_isoDuctile_ID, &
LOCAL_DAMAGE_anisoBrittle_ID, &
+ LOCAL_DAMAGE_anisoDuctile_ID, &
LOCAL_DAMAGE_gurson_ID, &
LOCAL_THERMAL_isothermal_ID, &
LOCAL_THERMAL_adiabatic_ID, &
@@ -852,6 +855,8 @@ subroutine material_parsePhase(fileUnit,myPart)
phase_damage(section) = LOCAL_DAMAGE_isoDuctile_ID
case (LOCAL_DAMAGE_anisoBrittle_label)
phase_damage(section) = LOCAL_DAMAGE_anisoBrittle_ID
+ case (LOCAL_DAMAGE_anisoDuctile_label)
+ phase_damage(section) = LOCAL_DAMAGE_anisoDuctile_ID
case (LOCAL_DAMAGE_gurson_label)
phase_damage(section) = LOCAL_DAMAGE_gurson_ID
case default