added new model by david (LLNL/UCLA)

This commit is contained in:
Martin Diehl 2015-01-15 10:56:15 +00:00
parent 125276283b
commit ced00954fe
7 changed files with 2038 additions and 15 deletions

View File

@ -85,7 +85,7 @@ endif
ifneq "$(FASTBUILD)" "YES"
STANDARD_CHECK_ifort ?=-stand f08 -standard-semantics
STANDARD_CHECK_gfortran ?=-std=f2008 -pedantic-errors
STANDARD_CHECK_gfortran ?=-std=f2008ts -pedantic-errors
endif
#-std=f2008ts: for newer gfortran
#-pedantic: more strict on standard, enables some warnings
@ -316,9 +316,10 @@ THERMAL_FILES = \
VACANCY_FILES = \
vacancy_constant.o vacancy_generation.o
CONSTITUTIVE_FILES = \
plastic_dislotwin.o plastic_dislokmc.o plastic_j2.o plastic_phenopowerlaw.o \
PLASTIC_FILES = \
plastic_dislotwin.o plastic_disloKMC.o plastic_disloUCLA.o plastic_j2.o plastic_phenopowerlaw.o \
plastic_titanmod.o plastic_nonlocal.o plastic_none.o constitutive.o
HOMOGENIZATION_FILES = \
homogenization_RGC.o homogenization_isostrain.o homogenization_none.o homogenization.o
@ -335,7 +336,7 @@ DAMASK_spectral.exe: INTERFACENAME := DAMASK_spectral_interface.f90
SPECTRAL_FILES = prec.o DAMASK_interface.o IO.o libs.o numerics.o debug.o math.o \
FEsolving.o mesh.o material.o lattice.o \
$(DAMAGE_FILES) $(THERMAL_FILES) $(VACANCY_FILES) $(CONSTITUTIVE_FILES) \
$(DAMAGE_FILES) $(THERMAL_FILES) $(VACANCY_FILES) $(PLASTIC_FILES) \
crystallite.o $(HOMOGENIZATION_FILES) CPFEM.o \
DAMASK_spectral_utilities.o DAMASK_spectral_solverBasic.o \
DAMASK_spectral_solverAL.o DAMASK_spectral_solverBasicPETSc.o DAMASK_spectral_solverPolarisation.o
@ -344,7 +345,8 @@ DAMASK_spectral.exe: DAMASK_spectral_driver.o
$(PREFIX) $(LINKERNAME) $(OPENMP_FLAG_$(F90)) $(LINK_OPTIONS_$(F90)) $(STANDARD_CHECK_$(F90)) $(OPTIMIZATION_$(MAXOPTI)_$(F90)) \
-o DAMASK_spectral.exe DAMASK_spectral_driver.o \
$(SPECTRAL_FILES) $(LIBRARIES) $(LIB_DIRS) $(RUN_PATH) $(SUFFIX)
DAMASK_spectral_driver.o: DAMASK_spectral_driver.f90 DAMASK_spectral_solverBasic.o \
DAMASK_spectral_solverAL.o \
DAMASK_spectral_solverBasicPETSc.o \
@ -378,7 +380,7 @@ DAMASK_FEM.exe: INCLUDE_DIRS += -I./
FEM_FILES = prec.o DAMASK_interface.o FEZoo.o IO.o libs.o numerics.o debug.o math.o \
FEsolving.o mesh.o material.o lattice.o \
$(DAMAGE_FILES) $(THERMAL_FILES) $(VACANCY_FILES) $(CONSTITUTIVE_FILES) \
$(DAMAGE_FILES) $(THERMAL_FILES) $(VACANCY_FILES) $(PLASTIC_FILES) \
crystallite.o $(HOMOGENIZATION_FILES) CPFEM.o \
FEM_utilities.o FEM_mech.o FEM_thermal.o FEM_damage.o FEM_vacancyDiffusion.o
@ -434,7 +436,8 @@ constitutive.o: constitutive.f90 \
plastic_nonlocal.o \
plastic_titanmod.o \
plastic_dislotwin.o \
plastic_dislokmc.o \
plastic_disloKMC.o \
plastic_disloUCLA.o \
plastic_phenopowerlaw.o \
plastic_j2.o \
plastic_none.o \
@ -442,25 +445,28 @@ constitutive.o: constitutive.f90 \
$(THERMAL_FILES) \
$(VACANCY_FILES)
plastic_nonlocal.o: plastic_nonlocal.f90 \
plastic_nonlocal.o: plastic_nonlocal.f90 \
lattice.o
plastic_titanmod.o: plastic_titanmod.f90 \
plastic_titanmod.o: plastic_titanmod.f90 \
lattice.o
plastic_dislokmc.o: plastic_dislokmc.f90 \
plastic_disloKMC.o: plastic_disloKMC.f90 \
lattice.o
plastic_dislotwin.o: plastic_dislotwin.f90 \
plastic_disloUCLA.o: plastic_disloUCLA.f90 \
lattice.o
plastic_phenopowerlaw.o: plastic_phenopowerlaw.f90 \
plastic_dislotwin.o: plastic_dislotwin.f90 \
lattice.o
plastic_j2.o: plastic_j2.f90 \
plastic_phenopowerlaw.o: plastic_phenopowerlaw.f90 \
lattice.o
plastic_none.o: plastic_none.f90 \
plastic_j2.o: plastic_j2.f90 \
lattice.o
plastic_none.o: plastic_none.f90 \
lattice.o
damage_none.o: damage_none.f90 \

View File

@ -30,7 +30,8 @@
#include "plastic_phenopowerlaw.f90"
#include "plastic_titanmod.f90"
#include "plastic_dislotwin.f90"
#include "plastic_dislokmc.f90"
#include "plastic_disloKMC.f90"
#include "plastic_disloUCLA.f90"
#include "plastic_nonlocal.f90"
#include "constitutive.f90"
#include "crystallite.f90"

View File

@ -0,0 +1,48 @@
[Tungsten]
elasticity hooke
#plasticity dislotwin
#plasticity dislokmc
plasticity disloucla
### Material parameters ###
lattice_structure bcc
C11 523.0e9 # From Marinica et al. Journal of Physics: Condensed Matter(2013)
C12 202.0e9
C44 161.0e9
grainsize 2.7e-5 # Average grain size [m] 2.0e-5
SolidSolutionStrength 0.0 # Strength due to elements in solid solution
### Dislocation glide parameters ###
#per family
Nslip 12 0
slipburgers 2.72e-10 2.72e-10 # Burgers vector of slip system [m]
rhoedge0 1.0e12 1.0e12 # Initial edge dislocation density [m/m**3] 1.0e12
rhoedgedip0 1.0 1.0 # Initial edged dipole dislocation density [m/m**3]
Qedge 2.725e-19 2.725e-19 # Activation energy for dislocation glide [J]
v0 3693.4 755.59 # Initial glide velocity [m/s] 1.0e-4 (kmC 3693.4 ; 755.59)
p_slip 0.86 0.22 # p-exponent in glide velocity
q_slip 1.69 1.01 # q-exponent in glide velocity
u_slip 2.47 0.38 # u-exponent of stress pre-factor (kmC)
s_slip 0.00 0.50 # self hardening in glide velocity (kmC)
tau_peierls 2.03e9 2.03e9 # peierls stress [Pa]
#nonschmid_a1 1.00 1.00 # a1 coeff. non schmid law
#nonschmid_a2 0.00 0.00 # a2 coeff. non schmid law
#mobility law
kink_height 2.567e-10 2.567e-10 # kink height sqrt(6)/3*lattice_parameter [m]
omega 9.1e11 9.1e11 # attemp frequency (from kMC paper) [s^(-1)]
kink_width 29.95e-10 29.95e-10 # kink pair width ~ 11 b (kMC paper) [m]
dislolength 78.0e-10 78.0e-10 # dislocation length (ideally lambda) [m] initial value 25b
#friction_coeff 8.3e-5 8.3e-5 # friction coeff. B (kMC) [Pa*s]
#
#hardening
dipoleformationfactor 0 0 # to have hardening due to dipole formation off
CLambdaSlip 10.0 10.0 # Adj. parameter controlling dislocation mean free path
D0 4.0e-5 4.0e-5 # Vacancy diffusion prefactor [m**2/s]
Qsd 4.5e-19 4.5e-19 # Activation energy for climb [J]
Catomicvolume 1.0 1.0 # Adj. parameter controlling the atomic volume [in b]
Cedgedipmindistance 1.0 1.0 # Adj. parameter controlling the minimum dipole distance [in b]
interaction_slipslip 0.0625 0.0625 0.72 0.05 0.09 0.06 # Queyreau
nonschmid_coefficients 0 0.56 0.75 0 0 0 #??????????????

View File

@ -117,6 +117,7 @@ subroutine constitutive_init(temperature_init)
PLASTICITY_phenopowerlaw_ID, &
PLASTICITY_dislotwin_ID, &
PLASTICITY_dislokmc_ID, &
PLASTICITY_disloucla_ID, &
PLASTICITY_titanmod_ID, &
PLASTICITY_nonlocal_ID ,&
ELASTICITY_HOOKE_label, &
@ -125,6 +126,7 @@ subroutine constitutive_init(temperature_init)
PLASTICITY_PHENOPOWERLAW_label, &
PLASTICITY_DISLOTWIN_label, &
PLASTICITY_DISLOKMC_label, &
PLASTICITY_DISLOUCLA_label, &
PLASTICITY_TITANMOD_label, &
PLASTICITY_NONLOCAL_label, &
LOCAL_DAMAGE_none_ID, &
@ -161,6 +163,7 @@ subroutine constitutive_init(temperature_init)
use plastic_phenopowerlaw
use plastic_dislotwin
use plastic_dislokmc
use plastic_disloucla
use plastic_titanmod
use plastic_nonlocal
use damage_none
@ -199,6 +202,7 @@ subroutine constitutive_init(temperature_init)
if (any(phase_plasticity == PLASTICITY_PHENOPOWERLAW_ID)) call plastic_phenopowerlaw_init(FILEUNIT)
if (any(phase_plasticity == PLASTICITY_DISLOTWIN_ID)) call plastic_dislotwin_init(FILEUNIT)
if (any(phase_plasticity == PLASTICITY_DISLOKMC_ID)) call plastic_dislokmc_init(FILEUNIT)
if (any(phase_plasticity == PLASTICITY_DISLOUCLA_ID)) call plastic_disloucla_init(FILEUNIT)
if (any(phase_plasticity == PLASTICITY_TITANMOD_ID)) call plastic_titanmod_init(FILEUNIT)
if (any(phase_plasticity == PLASTICITY_NONLOCAL_ID)) then
call plastic_nonlocal_init(FILEUNIT)
@ -274,6 +278,11 @@ subroutine constitutive_init(temperature_init)
thisNoutput => plastic_dislokmc_Noutput
thisOutput => plastic_dislokmc_output
thisSize => plastic_dislokmc_sizePostResult
case (PLASTICITY_DISLOUCLA_ID)
outputName = PLASTICITY_DISLOUCLA_label
thisNoutput => plastic_disloucla_Noutput
thisOutput => plastic_disloucla_output
thisSize => plastic_disloucla_sizePostResult
case (PLASTICITY_TITANMOD_ID)
outputName = PLASTICITY_TITANMOD_label
thisNoutput => plastic_titanmod_Noutput
@ -477,6 +486,7 @@ function constitutive_homogenizedC(ipc,ip,el)
PLASTICITY_TITANMOD_ID, &
PLASTICITY_DISLOTWIN_ID, &
PLASTICITY_DISLOKMC_ID, &
PLASTICITY_DISLOUCLA_ID, &
plasticState,&
mappingConstitutive
@ -486,6 +496,8 @@ function constitutive_homogenizedC(ipc,ip,el)
plastic_dislotwin_homogenizedC
use plastic_dislokmc, only: &
plastic_dislokmc_homogenizedC
use plastic_disloucla, only: &
plastic_disloucla_homogenizedC
use lattice, only: &
lattice_C66
@ -502,6 +514,8 @@ function constitutive_homogenizedC(ipc,ip,el)
constitutive_homogenizedC = plastic_dislotwin_homogenizedC(ipc,ip,el)
case (PLASTICITY_DISLOKMC_ID)
constitutive_homogenizedC = plastic_dislokmc_homogenizedC(ipc,ip,el)
case (PLASTICITY_DISLOUCLA_ID)
constitutive_homogenizedC = plastic_disloucla_homogenizedC(ipc,ip,el)
case (PLASTICITY_TITANMOD_ID)
constitutive_homogenizedC = plastic_titanmod_homogenizedC (ipc,ip,el)
case default
@ -569,6 +583,7 @@ subroutine constitutive_microstructure(Tstar_v, Fe, Fp, subdt, ipc, ip, el)
material_phase, &
PLASTICITY_dislotwin_ID, &
PLASTICITY_dislokmc_ID, &
PLASTICITY_disloucla_ID, &
PLASTICITY_titanmod_ID, &
PLASTICITY_nonlocal_ID, &
LOCAL_DAMAGE_isoBrittle_ID, &
@ -586,6 +601,8 @@ subroutine constitutive_microstructure(Tstar_v, Fe, Fp, subdt, ipc, ip, el)
plastic_dislotwin_microstructure
use plastic_dislokmc, only: &
plastic_dislokmc_microstructure
use plastic_disloucla, only: &
plastic_disloucla_microstructure
use damage_isoBrittle, only: &
damage_isoBrittle_microstructure
use damage_isoDuctile, only: &
@ -620,6 +637,8 @@ subroutine constitutive_microstructure(Tstar_v, Fe, Fp, subdt, ipc, ip, el)
call plastic_dislotwin_microstructure(constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
case (PLASTICITY_DISLOKMC_ID)
call plastic_dislokmc_microstructure(constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
case (PLASTICITY_DISLOUCLA_ID)
call plastic_disloucla_microstructure(constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
case (PLASTICITY_TITANMOD_ID)
call plastic_titanmod_microstructure (constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
case (PLASTICITY_NONLOCAL_ID)
@ -676,6 +695,7 @@ subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, ipc, ip, el)
PLASTICITY_PHENOPOWERLAW_ID, &
PLASTICITY_DISLOTWIN_ID, &
PLASTICITY_DISLOKMC_ID, &
PLASTICITY_DISLOUCLA_ID, &
PLASTICITY_TITANMOD_ID, &
PLASTICITY_NONLOCAL_ID
use plastic_j2, only: &
@ -689,6 +709,9 @@ subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, ipc, ip, el)
use plastic_dislokmc, only: &
plastic_dislokmc_LpAndItsTangent, &
plastic_dislokmc_totalNslip
use plastic_disloucla, only: &
plastic_disloucla_LpAndItsTangent, &
plastic_disloucla_totalNslip
use plastic_titanmod, only: &
plastic_titanmod_LpAndItsTangent, &
plastic_titanmod_totalNslip
@ -743,6 +766,12 @@ subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, ipc, ip, el)
constitutive_getTemperature(ipc,ip,el), &
nSlip,constitutive_getSlipDamage(nSlip,Tstar_v,ipc,ip,el), &
ipc,ip,el)
case (PLASTICITY_DISLOUCLA_ID)
nSlip = plastic_disloucla_totalNslip(phase_plasticityInstance(material_phase(ipc,ip,el)))
call plastic_disloucla_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
constitutive_getTemperature(ipc,ip,el), &
nSlip,constitutive_getSlipDamage(nSlip,Tstar_v,ipc,ip,el), &
ipc,ip,el)
case (PLASTICITY_TITANMOD_ID)
nSlip = plastic_titanmod_totalNslip(phase_plasticityInstance(material_phase(ipc,ip,el)))
call plastic_titanmod_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
@ -1130,6 +1159,7 @@ subroutine constitutive_collectDotState(Tstar_v, Lp, FeArray, FpArray, subdt, su
PLASTICITY_phenopowerlaw_ID, &
PLASTICITY_dislotwin_ID, &
PLASTICITY_dislokmc_ID, &
PLASTICITY_disloucla_ID, &
PLASTICITY_titanmod_ID, &
PLASTICITY_nonlocal_ID, &
LOCAL_DAMAGE_gurson_ID
@ -1144,6 +1174,9 @@ subroutine constitutive_collectDotState(Tstar_v, Lp, FeArray, FpArray, subdt, su
use plastic_dislokmc, only: &
plastic_dislokmc_dotState, &
plastic_dislokmc_totalNslip
use plastic_disloucla, only: &
plastic_disloucla_dotState, &
plastic_disloucla_totalNslip
use plastic_titanmod, only: &
plastic_titanmod_dotState, &
plastic_titanmod_totalNslip
@ -1194,6 +1227,10 @@ subroutine constitutive_collectDotState(Tstar_v, Lp, FeArray, FpArray, subdt, su
nSlip = plastic_dislokmc_totalNslip(phase_plasticityInstance(material_phase(ipc,ip,el)))
call plastic_dislokmc_dotState (Tstar_v,constitutive_getTemperature(ipc,ip,el), &
nSlip,constitutive_getSlipDamage(nSlip,Tstar_v,ipc,ip,el),ipc,ip,el)
case (PLASTICITY_DISLOUCLA_ID)
nSlip = plastic_disloucla_totalNslip(phase_plasticityInstance(material_phase(ipc,ip,el)))
call plastic_disloucla_dotState (Tstar_v,constitutive_getTemperature(ipc,ip,el), &
nSlip,constitutive_getSlipDamage(nSlip,Tstar_v,ipc,ip,el),ipc,ip,el)
case (PLASTICITY_TITANMOD_ID)
call plastic_titanmod_dotState (Tstar_v,constitutive_getTemperature(ipc,ip,el), &
ipc,ip,el)
@ -1827,6 +1864,7 @@ function constitutive_getVacancyMobility33(ipc, ip, el)
el !< element number
real(pReal), dimension(3,3) :: &
constitutive_getVacancyMobility33
integer(pInt) :: &
nSlip
@ -1895,6 +1933,7 @@ function constitutive_postResults(Tstar_v, FeArray, ipc, ip, el)
PLASTICITY_PHENOPOWERLAW_ID, &
PLASTICITY_DISLOTWIN_ID, &
PLASTICITY_DISLOKMC_ID, &
PLASTICITY_DISLOUCLA_ID, &
PLASTICITY_TITANMOD_ID, &
PLASTICITY_NONLOCAL_ID, &
LOCAL_DAMAGE_isoBrittle_ID, &
@ -1916,6 +1955,8 @@ function constitutive_postResults(Tstar_v, FeArray, ipc, ip, el)
plastic_dislotwin_postResults
use plastic_dislokmc, only: &
plastic_dislokmc_postResults
use plastic_disloucla, only: &
plastic_disloucla_postResults
use plastic_titanmod, only: &
plastic_titanmod_postResults
use plastic_nonlocal, only: &
@ -1979,6 +2020,9 @@ function constitutive_postResults(Tstar_v, FeArray, ipc, ip, el)
case (PLASTICITY_DISLOKMC_ID)
constitutive_postResults(startPos:endPos) = &
plastic_dislokmc_postResults(Tstar_v,constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
case (PLASTICITY_DISLOUCLA_ID)
constitutive_postResults(startPos:endPos) = &
plastic_disloucla_postResults(Tstar_v,constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
case (PLASTICITY_NONLOCAL_ID)
constitutive_postResults(startPos:endPos) = &
plastic_nonlocal_postResults (Tstar_v,FeArray,ip,el)

View File

@ -26,6 +26,7 @@ module material
PLASTICITY_phenopowerlaw_label = 'phenopowerlaw', &
PLASTICITY_dislotwin_label = 'dislotwin', &
PLASTICITY_dislokmc_label = 'dislokmc', &
PLASTICITY_disloucla_label = 'disloucla', &
PLASTICITY_titanmod_label = 'titanmod', &
PLASTICITY_nonlocal_label = 'nonlocal', &
LOCAL_DAMAGE_none_LABEL = 'none', &
@ -62,6 +63,7 @@ module material
PLASTICITY_phenopowerlaw_ID, &
PLASTICITY_dislotwin_ID, &
PLASTICITY_dislokmc_ID, &
PLASTICITY_disloucla_ID, &
PLASTICITY_titanmod_ID, &
PLASTICITY_nonlocal_ID
end enum
@ -240,6 +242,7 @@ module material
PLASTICITY_phenopowerlaw_ID, &
PLASTICITY_dislotwin_ID, &
PLASTICITY_dislokmc_ID, &
PLASTICITY_disloucla_ID, &
PLASTICITY_titanmod_ID, &
PLASTICITY_nonlocal_ID, &
LOCAL_DAMAGE_none_ID, &
@ -843,6 +846,8 @@ subroutine material_parsePhase(fileUnit,myPart)
phase_plasticity(section) = PLASTICITY_DISLOTWIN_ID
case (PLASTICITY_DISLOKMC_label)
phase_plasticity(section) = PLASTICITY_DISLOKMC_ID
case (PLASTICITY_DISLOUCLA_label)
phase_plasticity(section) = PLASTICITY_DISLOUCLA_ID
case (PLASTICITY_TITANMOD_label)
phase_plasticity(section) = PLASTICITY_TITANMOD_ID
case (PLASTICITY_NONLOCAL_label)

1919
code/plastic_disloUCLA.f90 Normal file

File diff suppressed because it is too large Load Diff