changed constitutive_* prefix for plasticity laws to plastic_* to be consistent with novel thermal_, damage_, vacancy_, etc. laws.
This commit is contained in:
parent
6066a03f85
commit
c34252c71c
|
@ -317,8 +317,8 @@ VACANCY_FILES = \
|
||||||
vacancy_constant.o vacancy_generation.o
|
vacancy_constant.o vacancy_generation.o
|
||||||
|
|
||||||
CONSTITUTIVE_FILES = \
|
CONSTITUTIVE_FILES = \
|
||||||
constitutive_dislotwin.o constitutive_dislokmc.o constitutive_j2.o constitutive_phenopowerlaw.o \
|
plastic_dislotwin.o plastic_dislokmc.o plastic_j2.o plastic_phenopowerlaw.o \
|
||||||
constitutive_titanmod.o constitutive_nonlocal.o constitutive_none.o constitutive.o
|
plastic_titanmod.o plastic_nonlocal.o plastic_none.o constitutive.o
|
||||||
|
|
||||||
HOMOGENIZATION_FILES = \
|
HOMOGENIZATION_FILES = \
|
||||||
homogenization_RGC.o homogenization_isostrain.o homogenization_none.o homogenization.o
|
homogenization_RGC.o homogenization_isostrain.o homogenization_none.o homogenization.o
|
||||||
|
@ -431,36 +431,36 @@ crystallite.o: crystallite.f90 \
|
||||||
constitutive.o
|
constitutive.o
|
||||||
|
|
||||||
constitutive.o: constitutive.f90 \
|
constitutive.o: constitutive.f90 \
|
||||||
constitutive_nonlocal.o \
|
plastic_nonlocal.o \
|
||||||
constitutive_titanmod.o \
|
plastic_titanmod.o \
|
||||||
constitutive_dislotwin.o \
|
plastic_dislotwin.o \
|
||||||
constitutive_dislokmc.o \
|
plastic_dislokmc.o \
|
||||||
constitutive_phenopowerlaw.o \
|
plastic_phenopowerlaw.o \
|
||||||
constitutive_j2.o \
|
plastic_j2.o \
|
||||||
constitutive_none.o \
|
plastic_none.o \
|
||||||
$(DAMAGE_FILES) \
|
$(DAMAGE_FILES) \
|
||||||
$(THERMAL_FILES) \
|
$(THERMAL_FILES) \
|
||||||
$(VACANCY_FILES)
|
$(VACANCY_FILES)
|
||||||
|
|
||||||
constitutive_nonlocal.o: constitutive_nonlocal.f90 \
|
plastic_nonlocal.o: plastic_nonlocal.f90 \
|
||||||
lattice.o
|
lattice.o
|
||||||
|
|
||||||
constitutive_titanmod.o: constitutive_titanmod.f90 \
|
plastic_titanmod.o: plastic_titanmod.f90 \
|
||||||
lattice.o
|
lattice.o
|
||||||
|
|
||||||
constitutive_dislokmc.o: constitutive_dislokmc.f90 \
|
plastic_dislokmc.o: plastic_dislokmc.f90 \
|
||||||
lattice.o
|
lattice.o
|
||||||
|
|
||||||
constitutive_dislotwin.o: constitutive_dislotwin.f90 \
|
plastic_dislotwin.o: plastic_dislotwin.f90 \
|
||||||
lattice.o
|
lattice.o
|
||||||
|
|
||||||
constitutive_phenopowerlaw.o: constitutive_phenopowerlaw.f90 \
|
plastic_phenopowerlaw.o: plastic_phenopowerlaw.f90 \
|
||||||
lattice.o
|
lattice.o
|
||||||
|
|
||||||
constitutive_j2.o: constitutive_j2.f90 \
|
plastic_j2.o: plastic_j2.f90 \
|
||||||
lattice.o
|
lattice.o
|
||||||
|
|
||||||
constitutive_none.o: constitutive_none.f90 \
|
plastic_none.o: plastic_none.f90 \
|
||||||
lattice.o
|
lattice.o
|
||||||
|
|
||||||
damage_none.o: damage_none.f90 \
|
damage_none.o: damage_none.f90 \
|
||||||
|
|
|
@ -25,13 +25,13 @@
|
||||||
#include "thermal_adiabatic.f90"
|
#include "thermal_adiabatic.f90"
|
||||||
#include "vacancy_constant.f90"
|
#include "vacancy_constant.f90"
|
||||||
#include "vacancy_generation.f90"
|
#include "vacancy_generation.f90"
|
||||||
#include "constitutive_none.f90"
|
#include "plastic_none.f90"
|
||||||
#include "constitutive_j2.f90"
|
#include "plastic_j2.f90"
|
||||||
#include "constitutive_phenopowerlaw.f90"
|
#include "plastic_phenopowerlaw.f90"
|
||||||
#include "constitutive_titanmod.f90"
|
#include "plastic_titanmod.f90"
|
||||||
#include "constitutive_dislotwin.f90"
|
#include "plastic_dislotwin.f90"
|
||||||
#include "constitutive_dislokmc.f90"
|
#include "plastic_dislokmc.f90"
|
||||||
#include "constitutive_nonlocal.f90"
|
#include "plastic_nonlocal.f90"
|
||||||
#include "constitutive.f90"
|
#include "constitutive.f90"
|
||||||
#include "crystallite.f90"
|
#include "crystallite.f90"
|
||||||
#include "homogenization_none.f90"
|
#include "homogenization_none.f90"
|
||||||
|
|
|
@ -156,13 +156,13 @@ subroutine constitutive_init(temperature_init)
|
||||||
mappingConstitutive
|
mappingConstitutive
|
||||||
|
|
||||||
|
|
||||||
use constitutive_none
|
use plastic_none
|
||||||
use constitutive_j2
|
use plastic_j2
|
||||||
use constitutive_phenopowerlaw
|
use plastic_phenopowerlaw
|
||||||
use constitutive_dislotwin
|
use plastic_dislotwin
|
||||||
use constitutive_dislokmc
|
use plastic_dislokmc
|
||||||
use constitutive_titanmod
|
use plastic_titanmod
|
||||||
use constitutive_nonlocal
|
use plastic_nonlocal
|
||||||
use damage_none
|
use damage_none
|
||||||
use damage_isoBrittle
|
use damage_isoBrittle
|
||||||
use damage_isoDuctile
|
use damage_isoDuctile
|
||||||
|
@ -194,15 +194,15 @@ subroutine constitutive_init(temperature_init)
|
||||||
! parse plasticities from config file
|
! parse plasticities from config file
|
||||||
if (.not. IO_open_jobFile_stat(FILEUNIT,material_localFileExt)) & ! no local material configuration present...
|
if (.not. IO_open_jobFile_stat(FILEUNIT,material_localFileExt)) & ! no local material configuration present...
|
||||||
call IO_open_file(FILEUNIT,material_configFile) ! ... open material.config file
|
call IO_open_file(FILEUNIT,material_configFile) ! ... open material.config file
|
||||||
if (any(phase_plasticity == PLASTICITY_NONE_ID)) call constitutive_none_init
|
if (any(phase_plasticity == PLASTICITY_NONE_ID)) call plastic_none_init
|
||||||
if (any(phase_plasticity == PLASTICITY_J2_ID)) call constitutive_j2_init(FILEUNIT)
|
if (any(phase_plasticity == PLASTICITY_J2_ID)) call plastic_j2_init(FILEUNIT)
|
||||||
if (any(phase_plasticity == PLASTICITY_PHENOPOWERLAW_ID)) call constitutive_phenopowerlaw_init(FILEUNIT)
|
if (any(phase_plasticity == PLASTICITY_PHENOPOWERLAW_ID)) call plastic_phenopowerlaw_init(FILEUNIT)
|
||||||
if (any(phase_plasticity == PLASTICITY_DISLOTWIN_ID)) call constitutive_dislotwin_init(FILEUNIT)
|
if (any(phase_plasticity == PLASTICITY_DISLOTWIN_ID)) call plastic_dislotwin_init(FILEUNIT)
|
||||||
if (any(phase_plasticity == PLASTICITY_DISLOKMC_ID)) call constitutive_dislokmc_init(FILEUNIT)
|
if (any(phase_plasticity == PLASTICITY_DISLOKMC_ID)) call plastic_dislokmc_init(FILEUNIT)
|
||||||
if (any(phase_plasticity == PLASTICITY_TITANMOD_ID)) call constitutive_titanmod_init(FILEUNIT)
|
if (any(phase_plasticity == PLASTICITY_TITANMOD_ID)) call plastic_titanmod_init(FILEUNIT)
|
||||||
if (any(phase_plasticity == PLASTICITY_NONLOCAL_ID)) then
|
if (any(phase_plasticity == PLASTICITY_NONLOCAL_ID)) then
|
||||||
call constitutive_nonlocal_init(FILEUNIT)
|
call plastic_nonlocal_init(FILEUNIT)
|
||||||
call constitutive_nonlocal_stateInit()
|
call plastic_nonlocal_stateInit()
|
||||||
endif
|
endif
|
||||||
close(FILEUNIT)
|
close(FILEUNIT)
|
||||||
|
|
||||||
|
@ -252,38 +252,38 @@ subroutine constitutive_init(temperature_init)
|
||||||
case (PLASTICITY_NONE_ID)
|
case (PLASTICITY_NONE_ID)
|
||||||
outputName = PLASTICITY_NONE_label
|
outputName = PLASTICITY_NONE_label
|
||||||
thisNoutput => null()
|
thisNoutput => null()
|
||||||
thisOutput => null() ! constitutive_none_output
|
thisOutput => null() ! plastic_none_output
|
||||||
thisSize => null() ! constitutive_none_sizePostResult
|
thisSize => null() ! plastic_none_sizePostResult
|
||||||
case (PLASTICITY_J2_ID)
|
case (PLASTICITY_J2_ID)
|
||||||
outputName = PLASTICITY_J2_label
|
outputName = PLASTICITY_J2_label
|
||||||
thisNoutput => constitutive_j2_Noutput
|
thisNoutput => plastic_j2_Noutput
|
||||||
thisOutput => constitutive_j2_output
|
thisOutput => plastic_j2_output
|
||||||
thisSize => constitutive_j2_sizePostResult
|
thisSize => plastic_j2_sizePostResult
|
||||||
case (PLASTICITY_PHENOPOWERLAW_ID)
|
case (PLASTICITY_PHENOPOWERLAW_ID)
|
||||||
outputName = PLASTICITY_PHENOPOWERLAW_label
|
outputName = PLASTICITY_PHENOPOWERLAW_label
|
||||||
thisNoutput => constitutive_phenopowerlaw_Noutput
|
thisNoutput => plastic_phenopowerlaw_Noutput
|
||||||
thisOutput => constitutive_phenopowerlaw_output
|
thisOutput => plastic_phenopowerlaw_output
|
||||||
thisSize => constitutive_phenopowerlaw_sizePostResult
|
thisSize => plastic_phenopowerlaw_sizePostResult
|
||||||
case (PLASTICITY_DISLOTWIN_ID)
|
case (PLASTICITY_DISLOTWIN_ID)
|
||||||
outputName = PLASTICITY_DISLOTWIN_label
|
outputName = PLASTICITY_DISLOTWIN_label
|
||||||
thisNoutput => constitutive_dislotwin_Noutput
|
thisNoutput => plastic_dislotwin_Noutput
|
||||||
thisOutput => constitutive_dislotwin_output
|
thisOutput => plastic_dislotwin_output
|
||||||
thisSize => constitutive_dislotwin_sizePostResult
|
thisSize => plastic_dislotwin_sizePostResult
|
||||||
case (PLASTICITY_DISLOKMC_ID)
|
case (PLASTICITY_DISLOKMC_ID)
|
||||||
outputName = PLASTICITY_DISLOKMC_label
|
outputName = PLASTICITY_DISLOKMC_label
|
||||||
thisNoutput => constitutive_dislokmc_Noutput
|
thisNoutput => plastic_dislokmc_Noutput
|
||||||
thisOutput => constitutive_dislokmc_output
|
thisOutput => plastic_dislokmc_output
|
||||||
thisSize => constitutive_dislokmc_sizePostResult
|
thisSize => plastic_dislokmc_sizePostResult
|
||||||
case (PLASTICITY_TITANMOD_ID)
|
case (PLASTICITY_TITANMOD_ID)
|
||||||
outputName = PLASTICITY_TITANMOD_label
|
outputName = PLASTICITY_TITANMOD_label
|
||||||
thisNoutput => constitutive_titanmod_Noutput
|
thisNoutput => plastic_titanmod_Noutput
|
||||||
thisOutput => constitutive_titanmod_output
|
thisOutput => plastic_titanmod_output
|
||||||
thisSize => constitutive_titanmod_sizePostResult
|
thisSize => plastic_titanmod_sizePostResult
|
||||||
case (PLASTICITY_NONLOCAL_ID)
|
case (PLASTICITY_NONLOCAL_ID)
|
||||||
outputName = PLASTICITY_NONLOCAL_label
|
outputName = PLASTICITY_NONLOCAL_label
|
||||||
thisNoutput => constitutive_nonlocal_Noutput
|
thisNoutput => plastic_nonlocal_Noutput
|
||||||
thisOutput => constitutive_nonlocal_output
|
thisOutput => plastic_nonlocal_output
|
||||||
thisSize => constitutive_nonlocal_sizePostResult
|
thisSize => plastic_nonlocal_sizePostResult
|
||||||
case default
|
case default
|
||||||
knownPlasticity = .false.
|
knownPlasticity = .false.
|
||||||
end select
|
end select
|
||||||
|
@ -480,12 +480,12 @@ function constitutive_homogenizedC(ipc,ip,el)
|
||||||
plasticState,&
|
plasticState,&
|
||||||
mappingConstitutive
|
mappingConstitutive
|
||||||
|
|
||||||
use constitutive_titanmod, only: &
|
use plastic_titanmod, only: &
|
||||||
constitutive_titanmod_homogenizedC
|
plastic_titanmod_homogenizedC
|
||||||
use constitutive_dislotwin, only: &
|
use plastic_dislotwin, only: &
|
||||||
constitutive_dislotwin_homogenizedC
|
plastic_dislotwin_homogenizedC
|
||||||
use constitutive_dislokmc, only: &
|
use plastic_dislokmc, only: &
|
||||||
constitutive_dislokmc_homogenizedC
|
plastic_dislokmc_homogenizedC
|
||||||
use lattice, only: &
|
use lattice, only: &
|
||||||
lattice_C66
|
lattice_C66
|
||||||
|
|
||||||
|
@ -499,11 +499,11 @@ function constitutive_homogenizedC(ipc,ip,el)
|
||||||
select case (phase_plasticity(material_phase(ipc,ip,el)))
|
select case (phase_plasticity(material_phase(ipc,ip,el)))
|
||||||
|
|
||||||
case (PLASTICITY_DISLOTWIN_ID)
|
case (PLASTICITY_DISLOTWIN_ID)
|
||||||
constitutive_homogenizedC = constitutive_dislotwin_homogenizedC(ipc,ip,el)
|
constitutive_homogenizedC = plastic_dislotwin_homogenizedC(ipc,ip,el)
|
||||||
case (PLASTICITY_DISLOKMC_ID)
|
case (PLASTICITY_DISLOKMC_ID)
|
||||||
constitutive_homogenizedC = constitutive_dislokmc_homogenizedC(ipc,ip,el)
|
constitutive_homogenizedC = plastic_dislokmc_homogenizedC(ipc,ip,el)
|
||||||
case (PLASTICITY_TITANMOD_ID)
|
case (PLASTICITY_TITANMOD_ID)
|
||||||
constitutive_homogenizedC = constitutive_titanmod_homogenizedC (ipc,ip,el)
|
constitutive_homogenizedC = plastic_titanmod_homogenizedC (ipc,ip,el)
|
||||||
case default
|
case default
|
||||||
constitutive_homogenizedC = lattice_C66(1:6,1:6,material_phase (ipc,ip,el))
|
constitutive_homogenizedC = lattice_C66(1:6,1:6,material_phase (ipc,ip,el))
|
||||||
|
|
||||||
|
@ -569,14 +569,14 @@ subroutine constitutive_microstructure(Tstar_v, Fe, Fp, subdt, ipc, ip, el)
|
||||||
LOCAL_DAMAGE_gurson_ID, &
|
LOCAL_DAMAGE_gurson_ID, &
|
||||||
LOCAL_DAMAGE_phaseField_ID
|
LOCAL_DAMAGE_phaseField_ID
|
||||||
|
|
||||||
use constitutive_titanmod, only: &
|
use plastic_titanmod, only: &
|
||||||
constitutive_titanmod_microstructure
|
plastic_titanmod_microstructure
|
||||||
use constitutive_nonlocal, only: &
|
use plastic_nonlocal, only: &
|
||||||
constitutive_nonlocal_microstructure
|
plastic_nonlocal_microstructure
|
||||||
use constitutive_dislotwin, only: &
|
use plastic_dislotwin, only: &
|
||||||
constitutive_dislotwin_microstructure
|
plastic_dislotwin_microstructure
|
||||||
use constitutive_dislokmc, only: &
|
use plastic_dislokmc, only: &
|
||||||
constitutive_dislokmc_microstructure
|
plastic_dislokmc_microstructure
|
||||||
use damage_isoBrittle, only: &
|
use damage_isoBrittle, only: &
|
||||||
damage_isoBrittle_microstructure
|
damage_isoBrittle_microstructure
|
||||||
use damage_isoDuctile, only: &
|
use damage_isoDuctile, only: &
|
||||||
|
@ -610,13 +610,13 @@ subroutine constitutive_microstructure(Tstar_v, Fe, Fp, subdt, ipc, ip, el)
|
||||||
select case (phase_plasticity(material_phase(ipc,ip,el)))
|
select case (phase_plasticity(material_phase(ipc,ip,el)))
|
||||||
|
|
||||||
case (PLASTICITY_DISLOTWIN_ID)
|
case (PLASTICITY_DISLOTWIN_ID)
|
||||||
call constitutive_dislotwin_microstructure(constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
|
call plastic_dislotwin_microstructure(constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
|
||||||
case (PLASTICITY_DISLOKMC_ID)
|
case (PLASTICITY_DISLOKMC_ID)
|
||||||
call constitutive_dislokmc_microstructure(constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
|
call plastic_dislokmc_microstructure(constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
|
||||||
case (PLASTICITY_TITANMOD_ID)
|
case (PLASTICITY_TITANMOD_ID)
|
||||||
call constitutive_titanmod_microstructure (constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
|
call plastic_titanmod_microstructure (constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
|
||||||
case (PLASTICITY_NONLOCAL_ID)
|
case (PLASTICITY_NONLOCAL_ID)
|
||||||
call constitutive_nonlocal_microstructure (Fe,Fp, ip,el)
|
call plastic_nonlocal_microstructure (Fe,Fp, ip,el)
|
||||||
|
|
||||||
end select
|
end select
|
||||||
|
|
||||||
|
@ -665,22 +665,22 @@ subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, ipc, ip, el)
|
||||||
PLASTICITY_DISLOKMC_ID, &
|
PLASTICITY_DISLOKMC_ID, &
|
||||||
PLASTICITY_TITANMOD_ID, &
|
PLASTICITY_TITANMOD_ID, &
|
||||||
PLASTICITY_NONLOCAL_ID
|
PLASTICITY_NONLOCAL_ID
|
||||||
use constitutive_j2, only: &
|
use plastic_j2, only: &
|
||||||
constitutive_j2_LpAndItsTangent
|
plastic_j2_LpAndItsTangent
|
||||||
use constitutive_phenopowerlaw, only: &
|
use plastic_phenopowerlaw, only: &
|
||||||
constitutive_phenopowerlaw_LpAndItsTangent, &
|
plastic_phenopowerlaw_LpAndItsTangent, &
|
||||||
constitutive_phenopowerlaw_totalNslip
|
plastic_phenopowerlaw_totalNslip
|
||||||
use constitutive_dislotwin, only: &
|
use plastic_dislotwin, only: &
|
||||||
constitutive_dislotwin_LpAndItsTangent, &
|
plastic_dislotwin_LpAndItsTangent, &
|
||||||
constitutive_dislotwin_totalNslip
|
plastic_dislotwin_totalNslip
|
||||||
use constitutive_dislokmc, only: &
|
use plastic_dislokmc, only: &
|
||||||
constitutive_dislokmc_LpAndItsTangent, &
|
plastic_dislokmc_LpAndItsTangent, &
|
||||||
constitutive_dislokmc_totalNslip
|
plastic_dislokmc_totalNslip
|
||||||
use constitutive_titanmod, only: &
|
use plastic_titanmod, only: &
|
||||||
constitutive_titanmod_LpAndItsTangent, &
|
plastic_titanmod_LpAndItsTangent, &
|
||||||
constitutive_titanmod_totalNslip
|
plastic_titanmod_totalNslip
|
||||||
use constitutive_nonlocal, only: &
|
use plastic_nonlocal, only: &
|
||||||
constitutive_nonlocal_LpAndItsTangent, &
|
plastic_nonlocal_LpAndItsTangent, &
|
||||||
totalNslip
|
totalNslip
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -704,35 +704,35 @@ subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar, Tstar_v, ipc, ip, el)
|
||||||
dLp_dTstar = 0.0_pReal
|
dLp_dTstar = 0.0_pReal
|
||||||
case (PLASTICITY_J2_ID)
|
case (PLASTICITY_J2_ID)
|
||||||
nSlip = 1_pInt
|
nSlip = 1_pInt
|
||||||
call constitutive_j2_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
|
call plastic_j2_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
|
||||||
constitutive_getSlipDamage(nSlip,Tstar_v,ipc,ip,el), &
|
constitutive_getSlipDamage(nSlip,Tstar_v,ipc,ip,el), &
|
||||||
ipc,ip,el)
|
ipc,ip,el)
|
||||||
case (PLASTICITY_PHENOPOWERLAW_ID)
|
case (PLASTICITY_PHENOPOWERLAW_ID)
|
||||||
nSlip = constitutive_phenopowerlaw_totalNslip(phase_plasticityInstance(material_phase(ipc,ip,el)))
|
nSlip = plastic_phenopowerlaw_totalNslip(phase_plasticityInstance(material_phase(ipc,ip,el)))
|
||||||
call constitutive_phenopowerlaw_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
|
call plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
|
||||||
constitutive_getSlipDamage(nSlip,Tstar_v,ipc,ip,el), &
|
constitutive_getSlipDamage(nSlip,Tstar_v,ipc,ip,el), &
|
||||||
ipc,ip,el)
|
ipc,ip,el)
|
||||||
case (PLASTICITY_NONLOCAL_ID)
|
case (PLASTICITY_NONLOCAL_ID)
|
||||||
nSlip = totalNslip(phase_plasticityInstance(material_phase(ipc,ip,el)))
|
nSlip = totalNslip(phase_plasticityInstance(material_phase(ipc,ip,el)))
|
||||||
call constitutive_nonlocal_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
|
call plastic_nonlocal_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
|
||||||
constitutive_getTemperature(ipc,ip,el), &
|
constitutive_getTemperature(ipc,ip,el), &
|
||||||
constitutive_getSlipDamage(nSlip,Tstar_v,ipc,ip,el), &
|
constitutive_getSlipDamage(nSlip,Tstar_v,ipc,ip,el), &
|
||||||
ipc,ip,el)
|
ipc,ip,el)
|
||||||
case (PLASTICITY_DISLOTWIN_ID)
|
case (PLASTICITY_DISLOTWIN_ID)
|
||||||
nSlip = constitutive_dislotwin_totalNslip(phase_plasticityInstance(material_phase(ipc,ip,el)))
|
nSlip = plastic_dislotwin_totalNslip(phase_plasticityInstance(material_phase(ipc,ip,el)))
|
||||||
call constitutive_dislotwin_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
|
call plastic_dislotwin_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
|
||||||
constitutive_getTemperature(ipc,ip,el), &
|
constitutive_getTemperature(ipc,ip,el), &
|
||||||
constitutive_getSlipDamage(nSlip,Tstar_v,ipc,ip,el), &
|
constitutive_getSlipDamage(nSlip,Tstar_v,ipc,ip,el), &
|
||||||
ipc,ip,el)
|
ipc,ip,el)
|
||||||
case (PLASTICITY_DISLOKMC_ID)
|
case (PLASTICITY_DISLOKMC_ID)
|
||||||
nSlip = constitutive_dislokmc_totalNslip(phase_plasticityInstance(material_phase(ipc,ip,el)))
|
nSlip = plastic_dislokmc_totalNslip(phase_plasticityInstance(material_phase(ipc,ip,el)))
|
||||||
call constitutive_dislokmc_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
|
call plastic_dislokmc_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
|
||||||
constitutive_getTemperature(ipc,ip,el), &
|
constitutive_getTemperature(ipc,ip,el), &
|
||||||
constitutive_getSlipDamage(nSlip,Tstar_v,ipc,ip,el), &
|
constitutive_getSlipDamage(nSlip,Tstar_v,ipc,ip,el), &
|
||||||
ipc,ip,el)
|
ipc,ip,el)
|
||||||
case (PLASTICITY_TITANMOD_ID)
|
case (PLASTICITY_TITANMOD_ID)
|
||||||
nSlip = constitutive_titanmod_totalNslip(phase_plasticityInstance(material_phase(ipc,ip,el)))
|
nSlip = plastic_titanmod_totalNslip(phase_plasticityInstance(material_phase(ipc,ip,el)))
|
||||||
call constitutive_titanmod_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
|
call plastic_titanmod_LpAndItsTangent(Lp,dLp_dTstar,Tstar_v, &
|
||||||
constitutive_getTemperature(ipc,ip,el), &
|
constitutive_getTemperature(ipc,ip,el), &
|
||||||
constitutive_getSlipDamage(nSlip,Tstar_v,ipc,ip,el), &
|
constitutive_getSlipDamage(nSlip,Tstar_v,ipc,ip,el), &
|
||||||
ipc,ip,el)
|
ipc,ip,el)
|
||||||
|
@ -1086,18 +1086,18 @@ subroutine constitutive_collectDotState(Tstar_v, Lp, FeArray, FpArray, subdt, su
|
||||||
LOCAL_DAMAGE_anisoBrittle_ID, &
|
LOCAL_DAMAGE_anisoBrittle_ID, &
|
||||||
LOCAL_DAMAGE_gurson_ID, &
|
LOCAL_DAMAGE_gurson_ID, &
|
||||||
LOCAL_VACANCY_generation_ID
|
LOCAL_VACANCY_generation_ID
|
||||||
use constitutive_j2, only: &
|
use plastic_j2, only: &
|
||||||
constitutive_j2_dotState
|
plastic_j2_dotState
|
||||||
use constitutive_phenopowerlaw, only: &
|
use plastic_phenopowerlaw, only: &
|
||||||
constitutive_phenopowerlaw_dotState
|
plastic_phenopowerlaw_dotState
|
||||||
use constitutive_dislotwin, only: &
|
use plastic_dislotwin, only: &
|
||||||
constitutive_dislotwin_dotState
|
plastic_dislotwin_dotState
|
||||||
use constitutive_dislokmc, only: &
|
use plastic_dislokmc, only: &
|
||||||
constitutive_dislokmc_dotState
|
plastic_dislokmc_dotState
|
||||||
use constitutive_titanmod, only: &
|
use plastic_titanmod, only: &
|
||||||
constitutive_titanmod_dotState
|
plastic_titanmod_dotState
|
||||||
use constitutive_nonlocal, only: &
|
use plastic_nonlocal, only: &
|
||||||
constitutive_nonlocal_dotState
|
plastic_nonlocal_dotState
|
||||||
use damage_anisoBrittle, only: &
|
use damage_anisoBrittle, only: &
|
||||||
damage_anisoBrittle_dotState
|
damage_anisoBrittle_dotState
|
||||||
use damage_gurson, only: &
|
use damage_gurson, only: &
|
||||||
|
@ -1135,17 +1135,17 @@ subroutine constitutive_collectDotState(Tstar_v, Lp, FeArray, FpArray, subdt, su
|
||||||
|
|
||||||
select case (phase_plasticity(material_phase(ipc,ip,el)))
|
select case (phase_plasticity(material_phase(ipc,ip,el)))
|
||||||
case (PLASTICITY_J2_ID)
|
case (PLASTICITY_J2_ID)
|
||||||
call constitutive_j2_dotState (Tstar_v,ipc,ip,el)
|
call plastic_j2_dotState (Tstar_v,ipc,ip,el)
|
||||||
case (PLASTICITY_PHENOPOWERLAW_ID)
|
case (PLASTICITY_PHENOPOWERLAW_ID)
|
||||||
call constitutive_phenopowerlaw_dotState(Tstar_v,ipc,ip,el)
|
call plastic_phenopowerlaw_dotState(Tstar_v,ipc,ip,el)
|
||||||
case (PLASTICITY_DISLOTWIN_ID)
|
case (PLASTICITY_DISLOTWIN_ID)
|
||||||
call constitutive_dislotwin_dotState (Tstar_v,constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
|
call plastic_dislotwin_dotState (Tstar_v,constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
|
||||||
case (PLASTICITY_DISLOKMC_ID)
|
case (PLASTICITY_DISLOKMC_ID)
|
||||||
call constitutive_dislokmc_dotState (Tstar_v,constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
|
call plastic_dislokmc_dotState (Tstar_v,constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
|
||||||
case (PLASTICITY_TITANMOD_ID)
|
case (PLASTICITY_TITANMOD_ID)
|
||||||
call constitutive_titanmod_dotState (Tstar_v,constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
|
call plastic_titanmod_dotState (Tstar_v,constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
|
||||||
case (PLASTICITY_NONLOCAL_ID)
|
case (PLASTICITY_NONLOCAL_ID)
|
||||||
call constitutive_nonlocal_dotState (Tstar_v,FeArray,FpArray,constitutive_getTemperature(ipc,ip,el), &
|
call plastic_nonlocal_dotState (Tstar_v,FeArray,FpArray,constitutive_getTemperature(ipc,ip,el), &
|
||||||
subdt,subfracArray,ip,el)
|
subdt,subfracArray,ip,el)
|
||||||
end select
|
end select
|
||||||
|
|
||||||
|
@ -1194,8 +1194,8 @@ logical function constitutive_collectDeltaState(Tstar_v, ipc, ip, el)
|
||||||
plasticState, &
|
plasticState, &
|
||||||
mappingConstitutive, &
|
mappingConstitutive, &
|
||||||
PLASTICITY_NONLOCAL_ID
|
PLASTICITY_NONLOCAL_ID
|
||||||
use constitutive_nonlocal, only: &
|
use plastic_nonlocal, only: &
|
||||||
constitutive_nonlocal_deltaState
|
plastic_nonlocal_deltaState
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: &
|
integer(pInt), intent(in) :: &
|
||||||
|
@ -1216,7 +1216,7 @@ logical function constitutive_collectDeltaState(Tstar_v, ipc, ip, el)
|
||||||
|
|
||||||
case (PLASTICITY_NONLOCAL_ID)
|
case (PLASTICITY_NONLOCAL_ID)
|
||||||
constitutive_collectDeltaState = .true.
|
constitutive_collectDeltaState = .true.
|
||||||
call constitutive_nonlocal_deltaState(Tstar_v,ip,el)
|
call plastic_nonlocal_deltaState(Tstar_v,ip,el)
|
||||||
case default
|
case default
|
||||||
constitutive_collectDeltaState = .false.
|
constitutive_collectDeltaState = .false.
|
||||||
|
|
||||||
|
@ -1813,18 +1813,18 @@ subroutine constitutive_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
|
||||||
PLASTICITY_dislokmc_ID, &
|
PLASTICITY_dislokmc_ID, &
|
||||||
PLASTICITY_titanmod_ID, &
|
PLASTICITY_titanmod_ID, &
|
||||||
PLASTICITY_nonlocal_ID
|
PLASTICITY_nonlocal_ID
|
||||||
use constitutive_J2, only: &
|
use plastic_j2, only: &
|
||||||
constitutive_J2_getAccumulatedSlip
|
plastic_j2_getAccumulatedSlip
|
||||||
use constitutive_phenopowerlaw, only: &
|
use plastic_phenopowerlaw, only: &
|
||||||
constitutive_phenopowerlaw_getAccumulatedSlip
|
plastic_phenopowerlaw_getAccumulatedSlip
|
||||||
use constitutive_dislotwin, only: &
|
use plastic_dislotwin, only: &
|
||||||
constitutive_dislotwin_getAccumulatedSlip
|
plastic_dislotwin_getAccumulatedSlip
|
||||||
use constitutive_dislokmc, only: &
|
use plastic_dislokmc, only: &
|
||||||
constitutive_dislokmc_getAccumulatedSlip
|
plastic_dislokmc_getAccumulatedSlip
|
||||||
use constitutive_titanmod, only: &
|
use plastic_titanmod, only: &
|
||||||
constitutive_titanmod_getAccumulatedSlip
|
plastic_titanmod_getAccumulatedSlip
|
||||||
use constitutive_nonlocal, only: &
|
use plastic_nonlocal, only: &
|
||||||
constitutive_nonlocal_getAccumulatedSlip
|
plastic_nonlocal_getAccumulatedSlip
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
|
@ -1842,17 +1842,17 @@ subroutine constitutive_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
|
||||||
nSlip = 0_pInt
|
nSlip = 0_pInt
|
||||||
allocate(accumulatedSlip(nSlip))
|
allocate(accumulatedSlip(nSlip))
|
||||||
case (PLASTICITY_J2_ID)
|
case (PLASTICITY_J2_ID)
|
||||||
call constitutive_J2_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
|
call plastic_j2_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
|
||||||
case (PLASTICITY_PHENOPOWERLAW_ID)
|
case (PLASTICITY_PHENOPOWERLAW_ID)
|
||||||
call constitutive_phenopowerlaw_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
|
call plastic_phenopowerlaw_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
|
||||||
case (PLASTICITY_DISLOTWIN_ID)
|
case (PLASTICITY_DISLOTWIN_ID)
|
||||||
call constitutive_dislotwin_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
|
call plastic_dislotwin_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
|
||||||
case (PLASTICITY_DISLOKMC_ID)
|
case (PLASTICITY_DISLOKMC_ID)
|
||||||
call constitutive_dislokmc_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
|
call plastic_dislokmc_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
|
||||||
case (PLASTICITY_TITANMOD_ID)
|
case (PLASTICITY_TITANMOD_ID)
|
||||||
call constitutive_titanmod_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
|
call plastic_titanmod_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
|
||||||
case (PLASTICITY_NONLOCAL_ID)
|
case (PLASTICITY_NONLOCAL_ID)
|
||||||
call constitutive_nonlocal_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
|
call plastic_nonlocal_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
|
||||||
end select
|
end select
|
||||||
|
|
||||||
end subroutine constitutive_getAccumulatedSlip
|
end subroutine constitutive_getAccumulatedSlip
|
||||||
|
@ -1878,16 +1878,16 @@ subroutine constitutive_getSlipRate(nSlip,slipRate,Lp,ipc, ip, el)
|
||||||
PLASTICITY_dislokmc_ID, &
|
PLASTICITY_dislokmc_ID, &
|
||||||
PLASTICITY_titanmod_ID, &
|
PLASTICITY_titanmod_ID, &
|
||||||
PLASTICITY_nonlocal_ID
|
PLASTICITY_nonlocal_ID
|
||||||
use constitutive_phenopowerlaw, only: &
|
use plastic_phenopowerlaw, only: &
|
||||||
constitutive_phenopowerlaw_getSlipRate
|
plastic_phenopowerlaw_getSlipRate
|
||||||
use constitutive_dislotwin, only: &
|
use plastic_dislotwin, only: &
|
||||||
constitutive_dislotwin_getSlipRate
|
plastic_dislotwin_getSlipRate
|
||||||
use constitutive_dislokmc, only: &
|
use plastic_dislokmc, only: &
|
||||||
constitutive_dislokmc_getSlipRate
|
plastic_dislokmc_getSlipRate
|
||||||
use constitutive_titanmod, only: &
|
use plastic_titanmod, only: &
|
||||||
constitutive_titanmod_getSlipRate
|
plastic_titanmod_getSlipRate
|
||||||
use constitutive_nonlocal, only: &
|
use plastic_nonlocal, only: &
|
||||||
constitutive_nonlocal_getSlipRate
|
plastic_nonlocal_getSlipRate
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
|
@ -1911,15 +1911,15 @@ subroutine constitutive_getSlipRate(nSlip,slipRate,Lp,ipc, ip, el)
|
||||||
allocate(slipRate(nSlip))
|
allocate(slipRate(nSlip))
|
||||||
slipRate(1) = math_equivStrain33(Lp)
|
slipRate(1) = math_equivStrain33(Lp)
|
||||||
case (PLASTICITY_PHENOPOWERLAW_ID)
|
case (PLASTICITY_PHENOPOWERLAW_ID)
|
||||||
call constitutive_phenopowerlaw_getSlipRate(nSlip,slipRate,ipc, ip, el)
|
call plastic_phenopowerlaw_getSlipRate(nSlip,slipRate,ipc, ip, el)
|
||||||
case (PLASTICITY_DISLOTWIN_ID)
|
case (PLASTICITY_DISLOTWIN_ID)
|
||||||
call constitutive_dislotwin_getSlipRate(nSlip,slipRate,ipc, ip, el)
|
call plastic_dislotwin_getSlipRate(nSlip,slipRate,ipc, ip, el)
|
||||||
case (PLASTICITY_DISLOKMC_ID)
|
case (PLASTICITY_DISLOKMC_ID)
|
||||||
call constitutive_dislokmc_getSlipRate(nSlip,slipRate,ipc, ip, el)
|
call plastic_dislokmc_getSlipRate(nSlip,slipRate,ipc, ip, el)
|
||||||
case (PLASTICITY_TITANMOD_ID)
|
case (PLASTICITY_TITANMOD_ID)
|
||||||
call constitutive_titanmod_getSlipRate(nSlip,slipRate,ipc, ip, el)
|
call plastic_titanmod_getSlipRate(nSlip,slipRate,ipc, ip, el)
|
||||||
case (PLASTICITY_NONLOCAL_ID)
|
case (PLASTICITY_NONLOCAL_ID)
|
||||||
call constitutive_nonlocal_getSlipRate(nSlip,slipRate,ipc, ip, el)
|
call plastic_nonlocal_getSlipRate(nSlip,slipRate,ipc, ip, el)
|
||||||
end select
|
end select
|
||||||
|
|
||||||
end subroutine constitutive_getSlipRate
|
end subroutine constitutive_getSlipRate
|
||||||
|
@ -1959,21 +1959,21 @@ function constitutive_postResults(Tstar_v, FeArray, ipc, ip, el)
|
||||||
LOCAL_DAMAGE_phaseField_ID, &
|
LOCAL_DAMAGE_phaseField_ID, &
|
||||||
LOCAL_THERMAL_ADIABATIC_ID, &
|
LOCAL_THERMAL_ADIABATIC_ID, &
|
||||||
LOCAL_VACANCY_generation_ID
|
LOCAL_VACANCY_generation_ID
|
||||||
use constitutive_j2, only: &
|
use plastic_j2, only: &
|
||||||
#ifdef HDF
|
#ifdef HDF
|
||||||
constitutive_j2_postResults2,&
|
plastic_j2_postResults2,&
|
||||||
#endif
|
#endif
|
||||||
constitutive_j2_postResults
|
plastic_j2_postResults
|
||||||
use constitutive_phenopowerlaw, only: &
|
use plastic_phenopowerlaw, only: &
|
||||||
constitutive_phenopowerlaw_postResults
|
plastic_phenopowerlaw_postResults
|
||||||
use constitutive_dislotwin, only: &
|
use plastic_dislotwin, only: &
|
||||||
constitutive_dislotwin_postResults
|
plastic_dislotwin_postResults
|
||||||
use constitutive_dislokmc, only: &
|
use plastic_dislokmc, only: &
|
||||||
constitutive_dislokmc_postResults
|
plastic_dislokmc_postResults
|
||||||
use constitutive_titanmod, only: &
|
use plastic_titanmod, only: &
|
||||||
constitutive_titanmod_postResults
|
plastic_titanmod_postResults
|
||||||
use constitutive_nonlocal, only: &
|
use plastic_nonlocal, only: &
|
||||||
constitutive_nonlocal_postResults
|
plastic_nonlocal_postResults
|
||||||
#ifdef multiphysicsOut
|
#ifdef multiphysicsOut
|
||||||
use damage_isoBrittle, only: &
|
use damage_isoBrittle, only: &
|
||||||
damage_isoBrittle_postResults
|
damage_isoBrittle_postResults
|
||||||
|
@ -2021,21 +2021,21 @@ function constitutive_postResults(Tstar_v, FeArray, ipc, ip, el)
|
||||||
endPos = plasticState(material_phase(ipc,ip,el))%sizePostResults
|
endPos = plasticState(material_phase(ipc,ip,el))%sizePostResults
|
||||||
select case (phase_plasticity(material_phase(ipc,ip,el)))
|
select case (phase_plasticity(material_phase(ipc,ip,el)))
|
||||||
case (PLASTICITY_TITANMOD_ID)
|
case (PLASTICITY_TITANMOD_ID)
|
||||||
constitutive_postResults(startPos:endPos) = constitutive_titanmod_postResults(ipc,ip,el)
|
constitutive_postResults(startPos:endPos) = plastic_titanmod_postResults(ipc,ip,el)
|
||||||
case (PLASTICITY_J2_ID)
|
case (PLASTICITY_J2_ID)
|
||||||
constitutive_postResults(startPos:endPos) = constitutive_j2_postResults(Tstar_v,ipc,ip,el)
|
constitutive_postResults(startPos:endPos) = plastic_j2_postResults(Tstar_v,ipc,ip,el)
|
||||||
case (PLASTICITY_PHENOPOWERLAW_ID)
|
case (PLASTICITY_PHENOPOWERLAW_ID)
|
||||||
constitutive_postResults(startPos:endPos) = &
|
constitutive_postResults(startPos:endPos) = &
|
||||||
constitutive_phenopowerlaw_postResults(Tstar_v,ipc,ip,el)
|
plastic_phenopowerlaw_postResults(Tstar_v,ipc,ip,el)
|
||||||
case (PLASTICITY_DISLOTWIN_ID)
|
case (PLASTICITY_DISLOTWIN_ID)
|
||||||
constitutive_postResults(startPos:endPos) = &
|
constitutive_postResults(startPos:endPos) = &
|
||||||
constitutive_dislotwin_postResults(Tstar_v,constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
|
plastic_dislotwin_postResults(Tstar_v,constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
|
||||||
case (PLASTICITY_DISLOKMC_ID)
|
case (PLASTICITY_DISLOKMC_ID)
|
||||||
constitutive_postResults(startPos:endPos) = &
|
constitutive_postResults(startPos:endPos) = &
|
||||||
constitutive_dislokmc_postResults(Tstar_v,constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
|
plastic_dislokmc_postResults(Tstar_v,constitutive_getTemperature(ipc,ip,el),ipc,ip,el)
|
||||||
case (PLASTICITY_NONLOCAL_ID)
|
case (PLASTICITY_NONLOCAL_ID)
|
||||||
constitutive_postResults(startPos:endPos) = &
|
constitutive_postResults(startPos:endPos) = &
|
||||||
constitutive_nonlocal_postResults (Tstar_v,FeArray,ip,el)
|
plastic_nonlocal_postResults (Tstar_v,FeArray,ip,el)
|
||||||
end select
|
end select
|
||||||
|
|
||||||
#ifdef multiphysicsOut
|
#ifdef multiphysicsOut
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -3991,8 +3991,8 @@ subroutine crystallite_orientations
|
||||||
use lattice, only: &
|
use lattice, only: &
|
||||||
lattice_qDisorientation, &
|
lattice_qDisorientation, &
|
||||||
lattice_structure
|
lattice_structure
|
||||||
use constitutive_nonlocal, only: &
|
use plastic_nonlocal, only: &
|
||||||
constitutive_nonlocal_updateCompatibility
|
plastic_nonlocal_updateCompatibility
|
||||||
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -4073,7 +4073,7 @@ subroutine crystallite_orientations
|
||||||
|
|
||||||
! --- calculate compatibility and transmissivity between me and my neighbor ---
|
! --- calculate compatibility and transmissivity between me and my neighbor ---
|
||||||
|
|
||||||
call constitutive_nonlocal_updateCompatibility(crystallite_orientation,i,e)
|
call plastic_nonlocal_updateCompatibility(crystallite_orientation,i,e)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -8,7 +8,7 @@
|
||||||
!! resolving the stress on the slip systems. Will give the response of phenopowerlaw for an
|
!! resolving the stress on the slip systems. Will give the response of phenopowerlaw for an
|
||||||
!! untextured polycrystal
|
!! untextured polycrystal
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module constitutive_j2
|
module plastic_j2
|
||||||
#ifdef HDF
|
#ifdef HDF
|
||||||
use hdf5, only: &
|
use hdf5, only: &
|
||||||
HID_T
|
HID_T
|
||||||
|
@ -21,35 +21,35 @@ module constitutive_j2
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
integer(pInt), dimension(:), allocatable, public, protected :: &
|
integer(pInt), dimension(:), allocatable, public, protected :: &
|
||||||
constitutive_j2_sizePostResults !< cumulative size of post results
|
plastic_j2_sizePostResults !< cumulative size of post results
|
||||||
|
|
||||||
integer(pInt), dimension(:,:), allocatable, target, public :: &
|
integer(pInt), dimension(:,:), allocatable, target, public :: &
|
||||||
constitutive_j2_sizePostResult !< size of each post result output
|
plastic_j2_sizePostResult !< size of each post result output
|
||||||
|
|
||||||
character(len=64), dimension(:,:), allocatable, target, public :: &
|
character(len=64), dimension(:,:), allocatable, target, public :: &
|
||||||
constitutive_j2_output !< name of each post result output
|
plastic_j2_output !< name of each post result output
|
||||||
|
|
||||||
integer(pInt), dimension(:), allocatable, target, public :: &
|
integer(pInt), dimension(:), allocatable, target, public :: &
|
||||||
constitutive_j2_Noutput !< number of outputs per instance
|
plastic_j2_Noutput !< number of outputs per instance
|
||||||
real(pReal), dimension(:), allocatable, private :: &
|
real(pReal), dimension(:), allocatable, private :: &
|
||||||
constitutive_j2_fTaylor, & !< Taylor factor
|
plastic_j2_fTaylor, & !< Taylor factor
|
||||||
constitutive_j2_tau0, & !< initial plastic stress
|
plastic_j2_tau0, & !< initial plastic stress
|
||||||
constitutive_j2_gdot0, & !< reference velocity
|
plastic_j2_gdot0, & !< reference velocity
|
||||||
constitutive_j2_n, & !< Visco-plastic parameter
|
plastic_j2_n, & !< Visco-plastic parameter
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! h0 as function of h0 = A + B log (gammadot)
|
! h0 as function of h0 = A + B log (gammadot)
|
||||||
constitutive_j2_h0, &
|
plastic_j2_h0, &
|
||||||
constitutive_j2_h0_slopeLnRate, &
|
plastic_j2_h0_slopeLnRate, &
|
||||||
constitutive_j2_tausat, & !< final plastic stress
|
plastic_j2_tausat, & !< final plastic stress
|
||||||
constitutive_j2_a, &
|
plastic_j2_a, &
|
||||||
constitutive_j2_aTolResistance, &
|
plastic_j2_aTolResistance, &
|
||||||
constitutive_j2_aTolShear, &
|
plastic_j2_aTolShear, &
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! tausat += (asinh((gammadot / SinhFitA)**(1 / SinhFitD)))**(1 / SinhFitC) / (SinhFitB * (gammadot / gammadot0)**(1/n))
|
! tausat += (asinh((gammadot / SinhFitA)**(1 / SinhFitD)))**(1 / SinhFitC) / (SinhFitB * (gammadot / gammadot0)**(1/n))
|
||||||
constitutive_j2_tausat_SinhFitA, & !< fitting parameter for normalized strain rate vs. stress function
|
plastic_j2_tausat_SinhFitA, & !< fitting parameter for normalized strain rate vs. stress function
|
||||||
constitutive_j2_tausat_SinhFitB, & !< fitting parameter for normalized strain rate vs. stress function
|
plastic_j2_tausat_SinhFitB, & !< fitting parameter for normalized strain rate vs. stress function
|
||||||
constitutive_j2_tausat_SinhFitC, & !< fitting parameter for normalized strain rate vs. stress function
|
plastic_j2_tausat_SinhFitC, & !< fitting parameter for normalized strain rate vs. stress function
|
||||||
constitutive_j2_tausat_SinhFitD !< fitting parameter for normalized strain rate vs. stress function
|
plastic_j2_tausat_SinhFitD !< fitting parameter for normalized strain rate vs. stress function
|
||||||
|
|
||||||
enum, bind(c)
|
enum, bind(c)
|
||||||
enumerator :: undefined_ID, &
|
enumerator :: undefined_ID, &
|
||||||
|
@ -57,27 +57,27 @@ module constitutive_j2
|
||||||
strainrate_ID
|
strainrate_ID
|
||||||
end enum
|
end enum
|
||||||
integer(kind(undefined_ID)), dimension(:,:), allocatable, private :: &
|
integer(kind(undefined_ID)), dimension(:,:), allocatable, private :: &
|
||||||
constitutive_j2_outputID !< ID of each post result output
|
plastic_j2_outputID !< ID of each post result output
|
||||||
|
|
||||||
|
|
||||||
#ifdef HDF
|
#ifdef HDF
|
||||||
type constitutive_j2_tOutput
|
type plastic_j2_tOutput
|
||||||
real(pReal), dimension(:), allocatable, private :: &
|
real(pReal), dimension(:), allocatable, private :: &
|
||||||
flowstress, &
|
flowstress, &
|
||||||
strainrate
|
strainrate
|
||||||
logical :: flowstressActive = .false., strainrateActive = .false. ! if we can write the output block wise, this is not needed anymore because we can do an if(allocated(xxx))
|
logical :: flowstressActive = .false., strainrateActive = .false. ! if we can write the output block wise, this is not needed anymore because we can do an if(allocated(xxx))
|
||||||
end type constitutive_j2_tOutput
|
end type plastic_j2_tOutput
|
||||||
type(constitutive_j2_tOutput), allocatable, dimension(:) :: constitutive_j2_Output2
|
type(plastic_j2_tOutput), allocatable, dimension(:) :: plastic_j2_Output2
|
||||||
integer(HID_T), allocatable, dimension(:) :: outID
|
integer(HID_T), allocatable, dimension(:) :: outID
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
public :: &
|
public :: &
|
||||||
constitutive_j2_init, &
|
plastic_j2_init, &
|
||||||
constitutive_j2_LpAndItsTangent, &
|
plastic_j2_LpAndItsTangent, &
|
||||||
constitutive_j2_dotState, &
|
plastic_j2_dotState, &
|
||||||
constitutive_J2_getAccumulatedSlip, &
|
plastic_j2_getAccumulatedSlip, &
|
||||||
constitutive_j2_postResults
|
plastic_j2_postResults
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ contains
|
||||||
!> @brief module initialization
|
!> @brief module initialization
|
||||||
!> @details reads in material parameters, allocates arrays, and does sanity checks
|
!> @details reads in material parameters, allocates arrays, and does sanity checks
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine constitutive_j2_init(fileUnit)
|
subroutine plastic_j2_init(fileUnit)
|
||||||
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
|
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
|
||||||
#ifdef HDF
|
#ifdef HDF
|
||||||
use hdf5
|
use hdf5
|
||||||
|
@ -169,30 +169,30 @@ subroutine constitutive_j2_init(fileUnit)
|
||||||
write(6,'(a16,1x,i5,/)') '# instances:',maxNinstance
|
write(6,'(a16,1x,i5,/)') '# instances:',maxNinstance
|
||||||
|
|
||||||
#ifdef HDF
|
#ifdef HDF
|
||||||
allocate(constitutive_j2_Output2(maxNinstance))
|
allocate(plastic_j2_Output2(maxNinstance))
|
||||||
allocate(outID(maxNinstance))
|
allocate(outID(maxNinstance))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
allocate(constitutive_j2_sizePostResults(maxNinstance), source=0_pInt)
|
allocate(plastic_j2_sizePostResults(maxNinstance), source=0_pInt)
|
||||||
allocate(constitutive_j2_sizePostResult(maxval(phase_Noutput), maxNinstance),source=0_pInt)
|
allocate(plastic_j2_sizePostResult(maxval(phase_Noutput), maxNinstance),source=0_pInt)
|
||||||
allocate(constitutive_j2_output(maxval(phase_Noutput), maxNinstance))
|
allocate(plastic_j2_output(maxval(phase_Noutput), maxNinstance))
|
||||||
constitutive_j2_output = ''
|
plastic_j2_output = ''
|
||||||
allocate(constitutive_j2_outputID(maxval(phase_Noutput),maxNinstance), source=undefined_ID)
|
allocate(plastic_j2_outputID(maxval(phase_Noutput),maxNinstance), source=undefined_ID)
|
||||||
allocate(constitutive_j2_Noutput(maxNinstance), source=0_pInt)
|
allocate(plastic_j2_Noutput(maxNinstance), source=0_pInt)
|
||||||
allocate(constitutive_j2_fTaylor(maxNinstance), source=0.0_pReal)
|
allocate(plastic_j2_fTaylor(maxNinstance), source=0.0_pReal)
|
||||||
allocate(constitutive_j2_tau0(maxNinstance), source=0.0_pReal)
|
allocate(plastic_j2_tau0(maxNinstance), source=0.0_pReal)
|
||||||
allocate(constitutive_j2_gdot0(maxNinstance), source=0.0_pReal)
|
allocate(plastic_j2_gdot0(maxNinstance), source=0.0_pReal)
|
||||||
allocate(constitutive_j2_n(maxNinstance), source=0.0_pReal)
|
allocate(plastic_j2_n(maxNinstance), source=0.0_pReal)
|
||||||
allocate(constitutive_j2_h0(maxNinstance), source=0.0_pReal)
|
allocate(plastic_j2_h0(maxNinstance), source=0.0_pReal)
|
||||||
allocate(constitutive_j2_h0_slopeLnRate(maxNinstance), source=0.0_pReal)
|
allocate(plastic_j2_h0_slopeLnRate(maxNinstance), source=0.0_pReal)
|
||||||
allocate(constitutive_j2_tausat(maxNinstance), source=0.0_pReal)
|
allocate(plastic_j2_tausat(maxNinstance), source=0.0_pReal)
|
||||||
allocate(constitutive_j2_a(maxNinstance), source=0.0_pReal)
|
allocate(plastic_j2_a(maxNinstance), source=0.0_pReal)
|
||||||
allocate(constitutive_j2_aTolResistance(maxNinstance), source=0.0_pReal)
|
allocate(plastic_j2_aTolResistance(maxNinstance), source=0.0_pReal)
|
||||||
allocate(constitutive_j2_aTolShear (maxNinstance), source=0.0_pReal)
|
allocate(plastic_j2_aTolShear (maxNinstance), source=0.0_pReal)
|
||||||
allocate(constitutive_j2_tausat_SinhFitA(maxNinstance), source=0.0_pReal)
|
allocate(plastic_j2_tausat_SinhFitA(maxNinstance), source=0.0_pReal)
|
||||||
allocate(constitutive_j2_tausat_SinhFitB(maxNinstance), source=0.0_pReal)
|
allocate(plastic_j2_tausat_SinhFitB(maxNinstance), source=0.0_pReal)
|
||||||
allocate(constitutive_j2_tausat_SinhFitC(maxNinstance), source=0.0_pReal)
|
allocate(plastic_j2_tausat_SinhFitC(maxNinstance), source=0.0_pReal)
|
||||||
allocate(constitutive_j2_tausat_SinhFitD(maxNinstance), source=0.0_pReal)
|
allocate(plastic_j2_tausat_SinhFitD(maxNinstance), source=0.0_pReal)
|
||||||
|
|
||||||
rewind(fileUnit)
|
rewind(fileUnit)
|
||||||
phase = 0_pInt
|
phase = 0_pInt
|
||||||
|
@ -226,70 +226,70 @@ subroutine constitutive_j2_init(fileUnit)
|
||||||
case ('(output)')
|
case ('(output)')
|
||||||
select case(IO_lc(IO_stringValue(line,positions,2_pInt)))
|
select case(IO_lc(IO_stringValue(line,positions,2_pInt)))
|
||||||
case ('flowstress')
|
case ('flowstress')
|
||||||
constitutive_j2_Noutput(instance) = constitutive_j2_Noutput(instance) + 1_pInt
|
plastic_j2_Noutput(instance) = plastic_j2_Noutput(instance) + 1_pInt
|
||||||
constitutive_j2_outputID(constitutive_j2_Noutput(instance),instance) = flowstress_ID
|
plastic_j2_outputID(plastic_j2_Noutput(instance),instance) = flowstress_ID
|
||||||
constitutive_j2_output(constitutive_j2_Noutput(instance),instance) = &
|
plastic_j2_output(plastic_j2_Noutput(instance),instance) = &
|
||||||
IO_lc(IO_stringValue(line,positions,2_pInt))
|
IO_lc(IO_stringValue(line,positions,2_pInt))
|
||||||
#ifdef HDF
|
#ifdef HDF
|
||||||
call HDF5_addScalarDataset(outID(instance),myConstituents,'flowstress','MPa')
|
call HDF5_addScalarDataset(outID(instance),myConstituents,'flowstress','MPa')
|
||||||
allocate(constitutive_j2_Output2(instance)%flowstress(myConstituents))
|
allocate(plastic_j2_Output2(instance)%flowstress(myConstituents))
|
||||||
constitutive_j2_Output2(instance)%flowstressActive = .true.
|
plastic_j2_Output2(instance)%flowstressActive = .true.
|
||||||
#endif
|
#endif
|
||||||
case ('strainrate')
|
case ('strainrate')
|
||||||
constitutive_j2_Noutput(instance) = constitutive_j2_Noutput(instance) + 1_pInt
|
plastic_j2_Noutput(instance) = plastic_j2_Noutput(instance) + 1_pInt
|
||||||
constitutive_j2_outputID(constitutive_j2_Noutput(instance),instance) = strainrate_ID
|
plastic_j2_outputID(plastic_j2_Noutput(instance),instance) = strainrate_ID
|
||||||
constitutive_j2_output(constitutive_j2_Noutput(instance),instance) = &
|
plastic_j2_output(plastic_j2_Noutput(instance),instance) = &
|
||||||
IO_lc(IO_stringValue(line,positions,2_pInt))
|
IO_lc(IO_stringValue(line,positions,2_pInt))
|
||||||
#ifdef HDF
|
#ifdef HDF
|
||||||
call HDF5_addScalarDataset(outID(instance),myConstituents,'strainrate','1/s')
|
call HDF5_addScalarDataset(outID(instance),myConstituents,'strainrate','1/s')
|
||||||
allocate(constitutive_j2_Output2(instance)%strainrate(myConstituents))
|
allocate(plastic_j2_Output2(instance)%strainrate(myConstituents))
|
||||||
constitutive_j2_Output2(instance)%strainrateActive = .true.
|
plastic_j2_Output2(instance)%strainrateActive = .true.
|
||||||
#endif
|
#endif
|
||||||
case default
|
case default
|
||||||
|
|
||||||
end select
|
end select
|
||||||
case ('tau0')
|
case ('tau0')
|
||||||
constitutive_j2_tau0(instance) = IO_floatValue(line,positions,2_pInt)
|
plastic_j2_tau0(instance) = IO_floatValue(line,positions,2_pInt)
|
||||||
if (constitutive_j2_tau0(instance) < 0.0_pReal) &
|
if (plastic_j2_tau0(instance) < 0.0_pReal) &
|
||||||
call IO_error(211_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_J2_label//')')
|
call IO_error(211_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_J2_label//')')
|
||||||
case ('gdot0')
|
case ('gdot0')
|
||||||
constitutive_j2_gdot0(instance) = IO_floatValue(line,positions,2_pInt)
|
plastic_j2_gdot0(instance) = IO_floatValue(line,positions,2_pInt)
|
||||||
if (constitutive_j2_gdot0(instance) <= 0.0_pReal) &
|
if (plastic_j2_gdot0(instance) <= 0.0_pReal) &
|
||||||
call IO_error(211_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_J2_label//')')
|
call IO_error(211_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_J2_label//')')
|
||||||
case ('n')
|
case ('n')
|
||||||
constitutive_j2_n(instance) = IO_floatValue(line,positions,2_pInt)
|
plastic_j2_n(instance) = IO_floatValue(line,positions,2_pInt)
|
||||||
if (constitutive_j2_n(instance) <= 0.0_pReal) &
|
if (plastic_j2_n(instance) <= 0.0_pReal) &
|
||||||
call IO_error(211_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_J2_label//')')
|
call IO_error(211_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_J2_label//')')
|
||||||
case ('h0')
|
case ('h0')
|
||||||
constitutive_j2_h0(instance) = IO_floatValue(line,positions,2_pInt)
|
plastic_j2_h0(instance) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('h0_slope','slopelnrate')
|
case ('h0_slope','slopelnrate')
|
||||||
constitutive_j2_h0_slopeLnRate(instance) = IO_floatValue(line,positions,2_pInt)
|
plastic_j2_h0_slopeLnRate(instance) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('tausat')
|
case ('tausat')
|
||||||
constitutive_j2_tausat(instance) = IO_floatValue(line,positions,2_pInt)
|
plastic_j2_tausat(instance) = IO_floatValue(line,positions,2_pInt)
|
||||||
if (constitutive_j2_tausat(instance) <= 0.0_pReal) &
|
if (plastic_j2_tausat(instance) <= 0.0_pReal) &
|
||||||
call IO_error(211_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_J2_label//')')
|
call IO_error(211_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_J2_label//')')
|
||||||
case ('tausat_sinhfita')
|
case ('tausat_sinhfita')
|
||||||
constitutive_j2_tausat_SinhFitA(instance) = IO_floatValue(line,positions,2_pInt)
|
plastic_j2_tausat_SinhFitA(instance) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('tausat_sinhfitb')
|
case ('tausat_sinhfitb')
|
||||||
constitutive_j2_tausat_SinhFitB(instance) = IO_floatValue(line,positions,2_pInt)
|
plastic_j2_tausat_SinhFitB(instance) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('tausat_sinhfitc')
|
case ('tausat_sinhfitc')
|
||||||
constitutive_j2_tausat_SinhFitC(instance) = IO_floatValue(line,positions,2_pInt)
|
plastic_j2_tausat_SinhFitC(instance) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('tausat_sinhfitd')
|
case ('tausat_sinhfitd')
|
||||||
constitutive_j2_tausat_SinhFitD(instance) = IO_floatValue(line,positions,2_pInt)
|
plastic_j2_tausat_SinhFitD(instance) = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('a', 'w0')
|
case ('a', 'w0')
|
||||||
constitutive_j2_a(instance) = IO_floatValue(line,positions,2_pInt)
|
plastic_j2_a(instance) = IO_floatValue(line,positions,2_pInt)
|
||||||
if (constitutive_j2_a(instance) <= 0.0_pReal) &
|
if (plastic_j2_a(instance) <= 0.0_pReal) &
|
||||||
call IO_error(211_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_J2_label//')')
|
call IO_error(211_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_J2_label//')')
|
||||||
case ('taylorfactor')
|
case ('taylorfactor')
|
||||||
constitutive_j2_fTaylor(instance) = IO_floatValue(line,positions,2_pInt)
|
plastic_j2_fTaylor(instance) = IO_floatValue(line,positions,2_pInt)
|
||||||
if (constitutive_j2_fTaylor(instance) <= 0.0_pReal) &
|
if (plastic_j2_fTaylor(instance) <= 0.0_pReal) &
|
||||||
call IO_error(211_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_J2_label//')')
|
call IO_error(211_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_J2_label//')')
|
||||||
case ('atol_resistance')
|
case ('atol_resistance')
|
||||||
constitutive_j2_aTolResistance(instance) = IO_floatValue(line,positions,2_pInt)
|
plastic_j2_aTolResistance(instance) = IO_floatValue(line,positions,2_pInt)
|
||||||
if (constitutive_j2_aTolResistance(instance) <= 0.0_pReal) &
|
if (plastic_j2_aTolResistance(instance) <= 0.0_pReal) &
|
||||||
call IO_error(211_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_J2_label//')')
|
call IO_error(211_pInt,ext_msg=trim(tag)//' ('//PLASTICITY_J2_label//')')
|
||||||
case ('atol_shear')
|
case ('atol_shear')
|
||||||
constitutive_j2_aTolShear(instance) = IO_floatValue(line,positions,2_pInt)
|
plastic_j2_aTolShear(instance) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
|
||||||
case default
|
case default
|
||||||
|
|
||||||
|
@ -303,22 +303,22 @@ subroutine constitutive_j2_init(fileUnit)
|
||||||
instance = phase_plasticityInstance(phase)
|
instance = phase_plasticityInstance(phase)
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! sanity checks
|
! sanity checks
|
||||||
if (constitutive_j2_aTolShear(instance) <= 0.0_pReal) &
|
if (plastic_j2_aTolShear(instance) <= 0.0_pReal) &
|
||||||
constitutive_j2_aTolShear(instance) = 1.0e-6_pReal ! default absolute tolerance 1e-6
|
plastic_j2_aTolShear(instance) = 1.0e-6_pReal ! default absolute tolerance 1e-6
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! Determine size of postResults array
|
! Determine size of postResults array
|
||||||
outputsLoop: do o = 1_pInt,constitutive_j2_Noutput(instance)
|
outputsLoop: do o = 1_pInt,plastic_j2_Noutput(instance)
|
||||||
select case(constitutive_j2_outputID(o,instance))
|
select case(plastic_j2_outputID(o,instance))
|
||||||
case(flowstress_ID,strainrate_ID)
|
case(flowstress_ID,strainrate_ID)
|
||||||
mySize = 1_pInt
|
mySize = 1_pInt
|
||||||
case default
|
case default
|
||||||
end select
|
end select
|
||||||
|
|
||||||
outputFound: if (mySize > 0_pInt) then
|
outputFound: if (mySize > 0_pInt) then
|
||||||
constitutive_j2_sizePostResult(o,instance) = mySize
|
plastic_j2_sizePostResult(o,instance) = mySize
|
||||||
constitutive_j2_sizePostResults(instance) = &
|
plastic_j2_sizePostResults(instance) = &
|
||||||
constitutive_j2_sizePostResults(instance) + mySize
|
plastic_j2_sizePostResults(instance) + mySize
|
||||||
endif outputFound
|
endif outputFound
|
||||||
enddo outputsLoop
|
enddo outputsLoop
|
||||||
|
|
||||||
|
@ -328,12 +328,12 @@ subroutine constitutive_j2_init(fileUnit)
|
||||||
sizeDotState = sizeState
|
sizeDotState = sizeState
|
||||||
plasticState(phase)%sizeState = sizeState
|
plasticState(phase)%sizeState = sizeState
|
||||||
plasticState(phase)%sizeDotState = sizeDotState
|
plasticState(phase)%sizeDotState = sizeDotState
|
||||||
plasticState(phase)%sizePostResults = constitutive_j2_sizePostResults(instance)
|
plasticState(phase)%sizePostResults = plastic_j2_sizePostResults(instance)
|
||||||
allocate(plasticState(phase)%aTolState ( sizeState))
|
allocate(plasticState(phase)%aTolState ( sizeState))
|
||||||
plasticState(phase)%aTolState(1) = constitutive_j2_aTolResistance(instance)
|
plasticState(phase)%aTolState(1) = plastic_j2_aTolResistance(instance)
|
||||||
plasticState(phase)%aTolState(2) = constitutive_j2_aTolShear(instance)
|
plasticState(phase)%aTolState(2) = plastic_j2_aTolShear(instance)
|
||||||
allocate(plasticState(phase)%state0 ( sizeState,NofMyPhase))
|
allocate(plasticState(phase)%state0 ( sizeState,NofMyPhase))
|
||||||
plasticState(phase)%state0(1,1:NofMyPhase) = constitutive_j2_tau0(instance)
|
plasticState(phase)%state0(1,1:NofMyPhase) = plastic_j2_tau0(instance)
|
||||||
plasticState(phase)%state0(2,1:NofMyPhase) = 0.0_pReal
|
plasticState(phase)%state0(2,1:NofMyPhase) = 0.0_pReal
|
||||||
allocate(plasticState(phase)%partionedState0 ( sizeState,NofMyPhase),source=0.0_pReal)
|
allocate(plasticState(phase)%partionedState0 ( sizeState,NofMyPhase),source=0.0_pReal)
|
||||||
allocate(plasticState(phase)%subState0 ( sizeState,NofMyPhase),source=0.0_pReal)
|
allocate(plasticState(phase)%subState0 ( sizeState,NofMyPhase),source=0.0_pReal)
|
||||||
|
@ -353,13 +353,13 @@ subroutine constitutive_j2_init(fileUnit)
|
||||||
endif myPhase
|
endif myPhase
|
||||||
enddo initializeInstances
|
enddo initializeInstances
|
||||||
|
|
||||||
end subroutine constitutive_j2_init
|
end subroutine plastic_j2_init
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates plastic velocity gradient and its tangent
|
!> @brief calculates plastic velocity gradient and its tangent
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine constitutive_j2_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,slipDamage,ipc,ip,el)
|
subroutine plastic_j2_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,slipDamage,ipc,ip,el)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul6x6, &
|
math_mul6x6, &
|
||||||
math_Mandel6to33, &
|
math_Mandel6to33, &
|
||||||
|
@ -412,32 +412,32 @@ subroutine constitutive_j2_LpAndItsTangent(Lp,dLp_dTstar99,Tstar_v,slipDamage,ip
|
||||||
Lp = 0.0_pReal
|
Lp = 0.0_pReal
|
||||||
dLp_dTstar99 = 0.0_pReal
|
dLp_dTstar99 = 0.0_pReal
|
||||||
else
|
else
|
||||||
gamma_dot = constitutive_j2_gdot0(instance) &
|
gamma_dot = plastic_j2_gdot0(instance) &
|
||||||
* (sqrt(1.5_pReal) * norm_Tstar_dev / (slipDamage(1)*constitutive_j2_fTaylor(instance) * &
|
* (sqrt(1.5_pReal) * norm_Tstar_dev / (slipDamage(1)*plastic_j2_fTaylor(instance) * &
|
||||||
plasticState(mappingConstitutive(2,ipc,ip,el))%state(1,mappingConstitutive(1,ipc,ip,el)))) &
|
plasticState(mappingConstitutive(2,ipc,ip,el))%state(1,mappingConstitutive(1,ipc,ip,el)))) &
|
||||||
**constitutive_j2_n(instance)
|
**plastic_j2_n(instance)
|
||||||
|
|
||||||
Lp = Tstar_dev_33/norm_Tstar_dev * gamma_dot/constitutive_j2_fTaylor(instance)
|
Lp = Tstar_dev_33/norm_Tstar_dev * gamma_dot/plastic_j2_fTaylor(instance)
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! Calculation of the tangent of Lp
|
! Calculation of the tangent of Lp
|
||||||
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt,m=1_pInt:3_pInt,n=1_pInt:3_pInt) &
|
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt,m=1_pInt:3_pInt,n=1_pInt:3_pInt) &
|
||||||
dLp_dTstar_3333(k,l,m,n) = (constitutive_j2_n(instance)-1.0_pReal) * &
|
dLp_dTstar_3333(k,l,m,n) = (plastic_j2_n(instance)-1.0_pReal) * &
|
||||||
Tstar_dev_33(k,l)*Tstar_dev_33(m,n) / squarenorm_Tstar_dev
|
Tstar_dev_33(k,l)*Tstar_dev_33(m,n) / squarenorm_Tstar_dev
|
||||||
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt) &
|
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt) &
|
||||||
dLp_dTstar_3333(k,l,k,l) = dLp_dTstar_3333(k,l,k,l) + 1.0_pReal
|
dLp_dTstar_3333(k,l,k,l) = dLp_dTstar_3333(k,l,k,l) + 1.0_pReal
|
||||||
forall (k=1_pInt:3_pInt,m=1_pInt:3_pInt) &
|
forall (k=1_pInt:3_pInt,m=1_pInt:3_pInt) &
|
||||||
dLp_dTstar_3333(k,k,m,m) = dLp_dTstar_3333(k,k,m,m) - 1.0_pReal/3.0_pReal
|
dLp_dTstar_3333(k,k,m,m) = dLp_dTstar_3333(k,k,m,m) - 1.0_pReal/3.0_pReal
|
||||||
dLp_dTstar99 = math_Plain3333to99(gamma_dot / constitutive_j2_fTaylor(instance) * &
|
dLp_dTstar99 = math_Plain3333to99(gamma_dot / plastic_j2_fTaylor(instance) * &
|
||||||
dLp_dTstar_3333 / norm_Tstar_dev)
|
dLp_dTstar_3333 / norm_Tstar_dev)
|
||||||
end if
|
end if
|
||||||
end subroutine constitutive_j2_LpAndItsTangent
|
end subroutine plastic_j2_LpAndItsTangent
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates the rate of change of microstructure
|
!> @brief calculates the rate of change of microstructure
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine constitutive_j2_dotState(Tstar_v,ipc,ip,el)
|
subroutine plastic_j2_dotState(Tstar_v,ipc,ip,el)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul6x6
|
math_mul6x6
|
||||||
use mesh, only: &
|
use mesh, only: &
|
||||||
|
@ -481,31 +481,31 @@ subroutine constitutive_j2_dotState(Tstar_v,ipc,ip,el)
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! strain rate
|
! strain rate
|
||||||
gamma_dot = constitutive_j2_gdot0(instance) * ( sqrt(1.5_pReal) * norm_Tstar_dev &
|
gamma_dot = plastic_j2_gdot0(instance) * ( sqrt(1.5_pReal) * norm_Tstar_dev &
|
||||||
/ &!-----------------------------------------------------------------------------------
|
/ &!-----------------------------------------------------------------------------------
|
||||||
(constitutive_j2_fTaylor(instance)*plasticState(ph)%state(1,of)) )**constitutive_j2_n(instance)
|
(plastic_j2_fTaylor(instance)*plasticState(ph)%state(1,of)) )**plastic_j2_n(instance)
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! hardening coefficient
|
! hardening coefficient
|
||||||
if (abs(gamma_dot) > 1e-12_pReal) then
|
if (abs(gamma_dot) > 1e-12_pReal) then
|
||||||
if (constitutive_j2_tausat_SinhFitA(instance) == 0.0_pReal) then
|
if (plastic_j2_tausat_SinhFitA(instance) == 0.0_pReal) then
|
||||||
saturation = constitutive_j2_tausat(instance)
|
saturation = plastic_j2_tausat(instance)
|
||||||
else
|
else
|
||||||
saturation = ( constitutive_j2_tausat(instance) &
|
saturation = ( plastic_j2_tausat(instance) &
|
||||||
+ ( log( ( gamma_dot / constitutive_j2_tausat_SinhFitA(instance)&
|
+ ( log( ( gamma_dot / plastic_j2_tausat_SinhFitA(instance)&
|
||||||
)**(1.0_pReal / constitutive_j2_tausat_SinhFitD(instance))&
|
)**(1.0_pReal / plastic_j2_tausat_SinhFitD(instance))&
|
||||||
+ sqrt( ( gamma_dot / constitutive_j2_tausat_SinhFitA(instance) &
|
+ sqrt( ( gamma_dot / plastic_j2_tausat_SinhFitA(instance) &
|
||||||
)**(2.0_pReal / constitutive_j2_tausat_SinhFitD(instance)) &
|
)**(2.0_pReal / plastic_j2_tausat_SinhFitD(instance)) &
|
||||||
+ 1.0_pReal ) &
|
+ 1.0_pReal ) &
|
||||||
) & ! asinh(K) = ln(K + sqrt(K^2 +1))
|
) & ! asinh(K) = ln(K + sqrt(K^2 +1))
|
||||||
)**(1.0_pReal / constitutive_j2_tausat_SinhFitC(instance)) &
|
)**(1.0_pReal / plastic_j2_tausat_SinhFitC(instance)) &
|
||||||
/ ( constitutive_j2_tausat_SinhFitB(instance) &
|
/ ( plastic_j2_tausat_SinhFitB(instance) &
|
||||||
* (gamma_dot / constitutive_j2_gdot0(instance))**(1.0_pReal / constitutive_j2_n(instance)) &
|
* (gamma_dot / plastic_j2_gdot0(instance))**(1.0_pReal / plastic_j2_n(instance)) &
|
||||||
) &
|
) &
|
||||||
)
|
)
|
||||||
endif
|
endif
|
||||||
hardening = ( constitutive_j2_h0(instance) + constitutive_j2_h0_slopeLnRate(instance) * log(gamma_dot) ) &
|
hardening = ( plastic_j2_h0(instance) + plastic_j2_h0_slopeLnRate(instance) * log(gamma_dot) ) &
|
||||||
* abs( 1.0_pReal - plasticState(ph)%state(1,of)/saturation )**constitutive_j2_a(instance) &
|
* abs( 1.0_pReal - plasticState(ph)%state(1,of)/saturation )**plastic_j2_a(instance) &
|
||||||
* sign(1.0_pReal, 1.0_pReal - plasticState(ph)%state(1,of)/saturation)
|
* sign(1.0_pReal, 1.0_pReal - plasticState(ph)%state(1,of)/saturation)
|
||||||
else
|
else
|
||||||
hardening = 0.0_pReal
|
hardening = 0.0_pReal
|
||||||
|
@ -514,13 +514,13 @@ subroutine constitutive_j2_dotState(Tstar_v,ipc,ip,el)
|
||||||
plasticState(ph)%dotState(1,of) = hardening * gamma_dot
|
plasticState(ph)%dotState(1,of) = hardening * gamma_dot
|
||||||
plasticState(ph)%dotState(2,of) = gamma_dot
|
plasticState(ph)%dotState(2,of) = gamma_dot
|
||||||
|
|
||||||
end subroutine constitutive_j2_dotState
|
end subroutine plastic_j2_dotState
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns accumulated slip
|
!> @brief returns accumulated slip
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine constitutive_J2_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
|
subroutine plastic_j2_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
|
||||||
use material, only: &
|
use material, only: &
|
||||||
mappingConstitutive, &
|
mappingConstitutive, &
|
||||||
plasticState, &
|
plasticState, &
|
||||||
|
@ -549,13 +549,13 @@ subroutine constitutive_J2_getAccumulatedSlip(nSlip,accumulatedSlip,ipc, ip, el)
|
||||||
allocate(accumulatedSlip(nSlip))
|
allocate(accumulatedSlip(nSlip))
|
||||||
accumulatedSlip(1) = plasticState(phase)%state(2,constituent)
|
accumulatedSlip(1) = plasticState(phase)%state(2,constituent)
|
||||||
|
|
||||||
end subroutine constitutive_J2_getAccumulatedSlip
|
end subroutine plastic_j2_getAccumulatedSlip
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief return array of constitutive results
|
!> @brief return array of constitutive results
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function constitutive_j2_postResults(Tstar_v,ipc,ip,el)
|
function plastic_j2_postResults(Tstar_v,ipc,ip,el)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul6x6
|
math_mul6x6
|
||||||
use mesh, only: &
|
use mesh, only: &
|
||||||
|
@ -576,8 +576,8 @@ function constitutive_j2_postResults(Tstar_v,ipc,ip,el)
|
||||||
ipc, & !< component-ID of integration point
|
ipc, & !< component-ID of integration point
|
||||||
ip, & !< integration point
|
ip, & !< integration point
|
||||||
el !< element
|
el !< element
|
||||||
real(pReal), dimension(constitutive_j2_sizePostResults(phase_plasticityInstance(material_phase(ipc,ip,el)))) :: &
|
real(pReal), dimension(plastic_j2_sizePostResults(phase_plasticityInstance(material_phase(ipc,ip,el)))) :: &
|
||||||
constitutive_j2_postResults
|
plastic_j2_postResults
|
||||||
|
|
||||||
real(pReal), dimension(6) :: &
|
real(pReal), dimension(6) :: &
|
||||||
Tstar_dev_v ! deviatoric part of the 2nd Piola Kirchhoff stress tensor in Mandel notation
|
Tstar_dev_v ! deviatoric part of the 2nd Piola Kirchhoff stress tensor in Mandel notation
|
||||||
|
@ -601,23 +601,23 @@ function constitutive_j2_postResults(Tstar_v,ipc,ip,el)
|
||||||
norm_Tstar_dev = sqrt(math_mul6x6(Tstar_dev_v,Tstar_dev_v))
|
norm_Tstar_dev = sqrt(math_mul6x6(Tstar_dev_v,Tstar_dev_v))
|
||||||
|
|
||||||
c = 0_pInt
|
c = 0_pInt
|
||||||
constitutive_j2_postResults = 0.0_pReal
|
plastic_j2_postResults = 0.0_pReal
|
||||||
|
|
||||||
outputsLoop: do o = 1_pInt,constitutive_j2_Noutput(instance)
|
outputsLoop: do o = 1_pInt,plastic_j2_Noutput(instance)
|
||||||
select case(constitutive_j2_outputID(o,instance))
|
select case(plastic_j2_outputID(o,instance))
|
||||||
case (flowstress_ID)
|
case (flowstress_ID)
|
||||||
constitutive_j2_postResults(c+1_pInt) = plasticState(ph)%state(1,of)
|
plastic_j2_postResults(c+1_pInt) = plasticState(ph)%state(1,of)
|
||||||
c = c + 1_pInt
|
c = c + 1_pInt
|
||||||
case (strainrate_ID)
|
case (strainrate_ID)
|
||||||
constitutive_j2_postResults(c+1_pInt) = &
|
plastic_j2_postResults(c+1_pInt) = &
|
||||||
constitutive_j2_gdot0(instance) * ( sqrt(1.5_pReal) * norm_Tstar_dev &
|
plastic_j2_gdot0(instance) * ( sqrt(1.5_pReal) * norm_Tstar_dev &
|
||||||
/ &!----------------------------------------------------------------------------------
|
/ &!----------------------------------------------------------------------------------
|
||||||
(constitutive_j2_fTaylor(instance) * plasticState(ph)%state(1,of)) ) ** constitutive_j2_n(instance)
|
(plastic_j2_fTaylor(instance) * plasticState(ph)%state(1,of)) ) ** plastic_j2_n(instance)
|
||||||
c = c + 1_pInt
|
c = c + 1_pInt
|
||||||
end select
|
end select
|
||||||
enddo outputsLoop
|
enddo outputsLoop
|
||||||
|
|
||||||
end function constitutive_j2_postResults
|
end function plastic_j2_postResults
|
||||||
|
|
||||||
|
|
||||||
end module constitutive_j2
|
end module plastic_j2
|
|
@ -5,20 +5,20 @@
|
||||||
!> @author Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
|
!> @author Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
|
||||||
!> @brief material subroutine for purely elastic material
|
!> @brief material subroutine for purely elastic material
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module constitutive_none
|
module plastic_none
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pInt
|
pInt
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
integer(pInt), dimension(:), allocatable, public, protected :: &
|
integer(pInt), dimension(:), allocatable, public, protected :: &
|
||||||
constitutive_none_sizePostResults
|
plastic_none_sizePostResults
|
||||||
|
|
||||||
integer(pInt), dimension(:,:), allocatable, target, public :: &
|
integer(pInt), dimension(:,:), allocatable, target, public :: &
|
||||||
constitutive_none_sizePostResult !< size of each post result output
|
plastic_none_sizePostResult !< size of each post result output
|
||||||
|
|
||||||
public :: &
|
public :: &
|
||||||
constitutive_none_init
|
plastic_none_init
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ contains
|
||||||
!> @brief module initialization
|
!> @brief module initialization
|
||||||
!> @details reads in material parameters, allocates arrays, and does sanity checks
|
!> @details reads in material parameters, allocates arrays, and does sanity checks
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine constitutive_none_init
|
subroutine plastic_none_init
|
||||||
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
|
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
|
||||||
use debug, only: &
|
use debug, only: &
|
||||||
debug_level, &
|
debug_level, &
|
||||||
|
@ -98,8 +98,8 @@ subroutine constitutive_none_init
|
||||||
endif
|
endif
|
||||||
enddo initializeInstances
|
enddo initializeInstances
|
||||||
|
|
||||||
allocate(constitutive_none_sizePostResults(maxNinstance), source=0_pInt)
|
allocate(plastic_none_sizePostResults(maxNinstance), source=0_pInt)
|
||||||
|
|
||||||
end subroutine constitutive_none_init
|
end subroutine plastic_none_init
|
||||||
|
|
||||||
end module constitutive_none
|
end module plastic_none
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue