more cleaning up. added pure attribute to some functions. differentiating between ‘local’ and ‘nonlocal’ temperature.
This commit is contained in:
parent
1330dae432
commit
d7df5f1934
|
@ -125,25 +125,26 @@ subroutine CPFEM_init
|
||||||
IO_timeStamp, &
|
IO_timeStamp, &
|
||||||
IO_error
|
IO_error
|
||||||
use numerics, only: &
|
use numerics, only: &
|
||||||
worldrank, &
|
worldrank
|
||||||
DAMASK_NumThreadsInt
|
|
||||||
use debug, only: &
|
use debug, only: &
|
||||||
debug_level, &
|
debug_level, &
|
||||||
debug_CPFEM, &
|
debug_CPFEM, &
|
||||||
debug_levelBasic, &
|
debug_levelBasic, &
|
||||||
debug_levelExtensive
|
debug_levelExtensive
|
||||||
use FEsolving, only: &
|
use FEsolving, only: &
|
||||||
|
#if defined(Marc4DAMASK) || defined(Abaqus)
|
||||||
symmetricSolver, &
|
symmetricSolver, &
|
||||||
|
#endif
|
||||||
restartRead, &
|
restartRead, &
|
||||||
modelName
|
modelName
|
||||||
|
#if defined(Marc4DAMASK) || defined(Abaqus)
|
||||||
use mesh, only: &
|
use mesh, only: &
|
||||||
mesh_NcpElems, &
|
mesh_NcpElems, &
|
||||||
mesh_maxNips
|
mesh_maxNips
|
||||||
|
#endif
|
||||||
use material, only: &
|
use material, only: &
|
||||||
homogenization_maxNgrains, &
|
|
||||||
material_phase, &
|
material_phase, &
|
||||||
homogState, &
|
homogState, &
|
||||||
mappingHomogenization, &
|
|
||||||
phase_plasticity, &
|
phase_plasticity, &
|
||||||
plasticState, &
|
plasticState, &
|
||||||
material_Nhomogenization
|
material_Nhomogenization
|
||||||
|
@ -154,8 +155,7 @@ subroutine CPFEM_init
|
||||||
crystallite_Fi0, &
|
crystallite_Fi0, &
|
||||||
crystallite_Li0, &
|
crystallite_Li0, &
|
||||||
crystallite_dPdF0, &
|
crystallite_dPdF0, &
|
||||||
crystallite_Tstar0_v, &
|
crystallite_Tstar0_v
|
||||||
crystallite_localPlasticity
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt) :: k,l,m,ph,homog
|
integer(pInt) :: k,l,m,ph,homog
|
||||||
|
@ -276,8 +276,7 @@ subroutine CPFEM_general(mode, ffn, ffn1, temperature, dt, elFE, ip)
|
||||||
debug_levelBasic, &
|
debug_levelBasic, &
|
||||||
debug_levelExtensive, &
|
debug_levelExtensive, &
|
||||||
debug_levelSelective, &
|
debug_levelSelective, &
|
||||||
debug_e, &
|
#if defined(Marc4DAMASK) || defined(Abaqus)
|
||||||
debug_i, &
|
|
||||||
debug_stressMaxLocation, &
|
debug_stressMaxLocation, &
|
||||||
debug_stressMinLocation, &
|
debug_stressMinLocation, &
|
||||||
debug_jacobianMaxLocation, &
|
debug_jacobianMaxLocation, &
|
||||||
|
@ -285,7 +284,10 @@ subroutine CPFEM_general(mode, ffn, ffn1, temperature, dt, elFE, ip)
|
||||||
debug_stressMax, &
|
debug_stressMax, &
|
||||||
debug_stressMin, &
|
debug_stressMin, &
|
||||||
debug_jacobianMax, &
|
debug_jacobianMax, &
|
||||||
debug_jacobianMin
|
debug_jacobianMin, &
|
||||||
|
#endif
|
||||||
|
debug_e, &
|
||||||
|
debug_i
|
||||||
use FEsolving, only: &
|
use FEsolving, only: &
|
||||||
outdatedFFN1, &
|
outdatedFFN1, &
|
||||||
terminallyIll, &
|
terminallyIll, &
|
||||||
|
@ -312,7 +314,6 @@ subroutine CPFEM_general(mode, ffn, ffn1, temperature, dt, elFE, ip)
|
||||||
mesh_maxNips, &
|
mesh_maxNips, &
|
||||||
mesh_element
|
mesh_element
|
||||||
use material, only: &
|
use material, only: &
|
||||||
homogenization_maxNgrains, &
|
|
||||||
microstructure_elemhomo, &
|
microstructure_elemhomo, &
|
||||||
plasticState, &
|
plasticState, &
|
||||||
damageState, &
|
damageState, &
|
||||||
|
@ -341,12 +342,12 @@ subroutine CPFEM_general(mode, ffn, ffn1, temperature, dt, elFE, ip)
|
||||||
use homogenization, only: &
|
use homogenization, only: &
|
||||||
materialpoint_F, &
|
materialpoint_F, &
|
||||||
materialpoint_F0, &
|
materialpoint_F0, &
|
||||||
|
#if defined(Marc4DAMASK) || defined(Abaqus)
|
||||||
materialpoint_P, &
|
materialpoint_P, &
|
||||||
materialpoint_dPdF, &
|
materialpoint_dPdF, &
|
||||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
|
||||||
materialpoint_results, &
|
materialpoint_results, &
|
||||||
#endif
|
|
||||||
materialpoint_sizeResults, &
|
materialpoint_sizeResults, &
|
||||||
|
#endif
|
||||||
materialpoint_stressAndItsTangent, &
|
materialpoint_stressAndItsTangent, &
|
||||||
materialpoint_postResults, &
|
materialpoint_postResults, &
|
||||||
field_putFieldTemperature
|
field_putFieldTemperature
|
||||||
|
|
|
@ -68,12 +68,10 @@ subroutine constitutive_init(temperature_init)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pReal
|
pReal
|
||||||
use debug, only: &
|
use debug, only: &
|
||||||
debug_level, &
|
|
||||||
debug_constitutive, &
|
debug_constitutive, &
|
||||||
debug_levelBasic
|
debug_levelBasic
|
||||||
use numerics, only: &
|
use numerics, only: &
|
||||||
worldrank, &
|
worldrank
|
||||||
numerics_integrator
|
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_error, &
|
IO_error, &
|
||||||
IO_open_file, &
|
IO_open_file, &
|
||||||
|
@ -82,10 +80,6 @@ subroutine constitutive_init(temperature_init)
|
||||||
IO_write_jobIntFile, &
|
IO_write_jobIntFile, &
|
||||||
IO_timeStamp
|
IO_timeStamp
|
||||||
use mesh, only: &
|
use mesh, only: &
|
||||||
mesh_maxNips, &
|
|
||||||
mesh_NcpElems, &
|
|
||||||
mesh_element, &
|
|
||||||
FE_Nips, &
|
|
||||||
FE_geomtype
|
FE_geomtype
|
||||||
use material, only: &
|
use material, only: &
|
||||||
material_phase, &
|
material_phase, &
|
||||||
|
@ -93,7 +87,6 @@ subroutine constitutive_init(temperature_init)
|
||||||
material_localFileExt, &
|
material_localFileExt, &
|
||||||
material_configFile, &
|
material_configFile, &
|
||||||
phase_name, &
|
phase_name, &
|
||||||
phase_elasticity, &
|
|
||||||
phase_plasticity, &
|
phase_plasticity, &
|
||||||
phase_plasticityInstance, &
|
phase_plasticityInstance, &
|
||||||
phase_damage, &
|
phase_damage, &
|
||||||
|
@ -102,9 +95,6 @@ subroutine constitutive_init(temperature_init)
|
||||||
phase_thermalInstance, &
|
phase_thermalInstance, &
|
||||||
phase_vacancy, &
|
phase_vacancy, &
|
||||||
phase_vacancyInstance, &
|
phase_vacancyInstance, &
|
||||||
phase_Noutput, &
|
|
||||||
homogenization_Ngrains, &
|
|
||||||
homogenization_maxNgrains, &
|
|
||||||
ELASTICITY_hooke_ID, &
|
ELASTICITY_hooke_ID, &
|
||||||
PLASTICITY_none_ID, &
|
PLASTICITY_none_ID, &
|
||||||
PLASTICITY_j2_ID, &
|
PLASTICITY_j2_ID, &
|
||||||
|
@ -148,9 +138,7 @@ subroutine constitutive_init(temperature_init)
|
||||||
plasticState, &
|
plasticState, &
|
||||||
damageState, &
|
damageState, &
|
||||||
thermalState, &
|
thermalState, &
|
||||||
vacancyState, &
|
vacancyState
|
||||||
mappingConstitutive
|
|
||||||
|
|
||||||
|
|
||||||
use plastic_none
|
use plastic_none
|
||||||
use plastic_j2
|
use plastic_j2
|
||||||
|
@ -245,156 +233,158 @@ subroutine constitutive_init(temperature_init)
|
||||||
if (worldrank == 0_pInt) then
|
if (worldrank == 0_pInt) then
|
||||||
call IO_write_jobFile(FILEUNIT,'outputConstitutive')
|
call IO_write_jobFile(FILEUNIT,'outputConstitutive')
|
||||||
do phase = 1_pInt,material_Nphase
|
do phase = 1_pInt,material_Nphase
|
||||||
instance = phase_plasticityInstance(phase) ! which instance of a plasticity is present phase
|
if (any(material_phase == phase)) then ! is this phase active?
|
||||||
knownPlasticity = .true. ! assume valid
|
instance = phase_plasticityInstance(phase) ! which instance of a plasticity is present phase
|
||||||
select case(phase_plasticity(phase)) ! split per constititution
|
knownPlasticity = .true. ! assume valid
|
||||||
case (PLASTICITY_NONE_ID)
|
select case(phase_plasticity(phase)) ! split per constititution
|
||||||
outputName = PLASTICITY_NONE_label
|
case (PLASTICITY_NONE_ID)
|
||||||
thisNoutput => null()
|
outputName = PLASTICITY_NONE_label
|
||||||
thisOutput => null() ! plastic_none_output
|
thisNoutput => null()
|
||||||
thisSize => null() ! plastic_none_sizePostResult
|
thisOutput => null() ! plastic_none_output
|
||||||
case (PLASTICITY_J2_ID)
|
thisSize => null() ! plastic_none_sizePostResult
|
||||||
outputName = PLASTICITY_J2_label
|
case (PLASTICITY_J2_ID)
|
||||||
thisNoutput => plastic_j2_Noutput
|
outputName = PLASTICITY_J2_label
|
||||||
thisOutput => plastic_j2_output
|
thisNoutput => plastic_j2_Noutput
|
||||||
thisSize => plastic_j2_sizePostResult
|
thisOutput => plastic_j2_output
|
||||||
case (PLASTICITY_PHENOPOWERLAW_ID)
|
thisSize => plastic_j2_sizePostResult
|
||||||
outputName = PLASTICITY_PHENOPOWERLAW_label
|
case (PLASTICITY_PHENOPOWERLAW_ID)
|
||||||
thisNoutput => plastic_phenopowerlaw_Noutput
|
outputName = PLASTICITY_PHENOPOWERLAW_label
|
||||||
thisOutput => plastic_phenopowerlaw_output
|
thisNoutput => plastic_phenopowerlaw_Noutput
|
||||||
thisSize => plastic_phenopowerlaw_sizePostResult
|
thisOutput => plastic_phenopowerlaw_output
|
||||||
case (PLASTICITY_DISLOTWIN_ID)
|
thisSize => plastic_phenopowerlaw_sizePostResult
|
||||||
outputName = PLASTICITY_DISLOTWIN_label
|
case (PLASTICITY_DISLOTWIN_ID)
|
||||||
thisNoutput => plastic_dislotwin_Noutput
|
outputName = PLASTICITY_DISLOTWIN_label
|
||||||
thisOutput => plastic_dislotwin_output
|
thisNoutput => plastic_dislotwin_Noutput
|
||||||
thisSize => plastic_dislotwin_sizePostResult
|
thisOutput => plastic_dislotwin_output
|
||||||
case (PLASTICITY_DISLOKMC_ID)
|
thisSize => plastic_dislotwin_sizePostResult
|
||||||
outputName = PLASTICITY_DISLOKMC_label
|
case (PLASTICITY_DISLOKMC_ID)
|
||||||
thisNoutput => plastic_dislokmc_Noutput
|
outputName = PLASTICITY_DISLOKMC_label
|
||||||
thisOutput => plastic_dislokmc_output
|
thisNoutput => plastic_dislokmc_Noutput
|
||||||
thisSize => plastic_dislokmc_sizePostResult
|
thisOutput => plastic_dislokmc_output
|
||||||
case (PLASTICITY_DISLOUCLA_ID)
|
thisSize => plastic_dislokmc_sizePostResult
|
||||||
outputName = PLASTICITY_DISLOUCLA_label
|
case (PLASTICITY_DISLOUCLA_ID)
|
||||||
thisNoutput => plastic_disloucla_Noutput
|
outputName = PLASTICITY_DISLOUCLA_label
|
||||||
thisOutput => plastic_disloucla_output
|
thisNoutput => plastic_disloucla_Noutput
|
||||||
thisSize => plastic_disloucla_sizePostResult
|
thisOutput => plastic_disloucla_output
|
||||||
case (PLASTICITY_TITANMOD_ID)
|
thisSize => plastic_disloucla_sizePostResult
|
||||||
outputName = PLASTICITY_TITANMOD_label
|
case (PLASTICITY_TITANMOD_ID)
|
||||||
thisNoutput => plastic_titanmod_Noutput
|
outputName = PLASTICITY_TITANMOD_label
|
||||||
thisOutput => plastic_titanmod_output
|
thisNoutput => plastic_titanmod_Noutput
|
||||||
thisSize => plastic_titanmod_sizePostResult
|
thisOutput => plastic_titanmod_output
|
||||||
case (PLASTICITY_NONLOCAL_ID)
|
thisSize => plastic_titanmod_sizePostResult
|
||||||
outputName = PLASTICITY_NONLOCAL_label
|
case (PLASTICITY_NONLOCAL_ID)
|
||||||
thisNoutput => plastic_nonlocal_Noutput
|
outputName = PLASTICITY_NONLOCAL_label
|
||||||
thisOutput => plastic_nonlocal_output
|
thisNoutput => plastic_nonlocal_Noutput
|
||||||
thisSize => plastic_nonlocal_sizePostResult
|
thisOutput => plastic_nonlocal_output
|
||||||
case default
|
thisSize => plastic_nonlocal_sizePostResult
|
||||||
knownPlasticity = .false.
|
case default
|
||||||
end select
|
knownPlasticity = .false.
|
||||||
write(FILEUNIT,'(/,a,/)') '['//trim(phase_name(phase))//']'
|
end select
|
||||||
if (knownPlasticity) then
|
write(FILEUNIT,'(/,a,/)') '['//trim(phase_name(phase))//']'
|
||||||
write(FILEUNIT,'(a)') '(plasticity)'//char(9)//trim(outputName)
|
if (knownPlasticity) then
|
||||||
if (phase_plasticity(phase) /= PLASTICITY_NONE_ID) then
|
write(FILEUNIT,'(a)') '(plasticity)'//char(9)//trim(outputName)
|
||||||
do e = 1_pInt,thisNoutput(instance)
|
if (phase_plasticity(phase) /= PLASTICITY_NONE_ID) then
|
||||||
write(FILEUNIT,'(a,i4)') trim(thisOutput(e,instance))//char(9),thisSize(e,instance)
|
do e = 1_pInt,thisNoutput(instance)
|
||||||
enddo
|
write(FILEUNIT,'(a,i4)') trim(thisOutput(e,instance))//char(9),thisSize(e,instance)
|
||||||
|
enddo
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
instance = phase_damageInstance(phase) ! which instance of a plasticity is present phase
|
||||||
instance = phase_damageInstance(phase) ! which instance of a plasticity is present phase
|
knownDamage = .true.
|
||||||
knownDamage = .true.
|
select case(phase_damage(phase)) ! split per constititution
|
||||||
select case(phase_damage(phase)) ! split per constititution
|
case (LOCAL_DAMAGE_none_ID)
|
||||||
case (LOCAL_DAMAGE_none_ID)
|
outputName = LOCAL_DAMAGE_NONE_label
|
||||||
outputName = LOCAL_DAMAGE_NONE_label
|
thisNoutput => null()
|
||||||
thisNoutput => null()
|
thisOutput => null()
|
||||||
thisOutput => null()
|
thisSize => null()
|
||||||
thisSize => null()
|
case (LOCAL_DAMAGE_isoBrittle_ID)
|
||||||
case (LOCAL_DAMAGE_isoBrittle_ID)
|
outputName = LOCAL_DAMAGE_isoBrittle_LABEL
|
||||||
outputName = LOCAL_DAMAGE_isoBrittle_LABEL
|
thisNoutput => damage_isoBrittle_Noutput
|
||||||
thisNoutput => damage_isoBrittle_Noutput
|
thisOutput => damage_isoBrittle_output
|
||||||
thisOutput => damage_isoBrittle_output
|
thisSize => damage_isoBrittle_sizePostResult
|
||||||
thisSize => damage_isoBrittle_sizePostResult
|
case (LOCAL_DAMAGE_isoDuctile_ID)
|
||||||
case (LOCAL_DAMAGE_isoDuctile_ID)
|
outputName = LOCAL_DAMAGE_isoDuctile_LABEL
|
||||||
outputName = LOCAL_DAMAGE_isoDuctile_LABEL
|
thisNoutput => damage_isoDuctile_Noutput
|
||||||
thisNoutput => damage_isoDuctile_Noutput
|
thisOutput => damage_isoDuctile_output
|
||||||
thisOutput => damage_isoDuctile_output
|
thisSize => damage_isoDuctile_sizePostResult
|
||||||
thisSize => damage_isoDuctile_sizePostResult
|
case (LOCAL_DAMAGE_anisoBrittle_ID)
|
||||||
case (LOCAL_DAMAGE_anisoBrittle_ID)
|
outputName = LOCAL_DAMAGE_anisoBrittle_label
|
||||||
outputName = LOCAL_DAMAGE_anisoBrittle_label
|
thisNoutput => damage_anisoBrittle_Noutput
|
||||||
thisNoutput => damage_anisoBrittle_Noutput
|
thisOutput => damage_anisoBrittle_output
|
||||||
thisOutput => damage_anisoBrittle_output
|
thisSize => damage_anisoBrittle_sizePostResult
|
||||||
thisSize => damage_anisoBrittle_sizePostResult
|
case (LOCAL_DAMAGE_anisoDuctile_ID)
|
||||||
case (LOCAL_DAMAGE_anisoDuctile_ID)
|
outputName = LOCAL_DAMAGE_anisoDuctile_LABEL
|
||||||
outputName = LOCAL_DAMAGE_anisoDuctile_LABEL
|
thisNoutput => damage_anisoDuctile_Noutput
|
||||||
thisNoutput => damage_anisoDuctile_Noutput
|
thisOutput => damage_anisoDuctile_output
|
||||||
thisOutput => damage_anisoDuctile_output
|
thisSize => damage_anisoDuctile_sizePostResult
|
||||||
thisSize => damage_anisoDuctile_sizePostResult
|
case (LOCAL_DAMAGE_gurson_ID)
|
||||||
case (LOCAL_DAMAGE_gurson_ID)
|
outputName = LOCAL_DAMAGE_gurson_label
|
||||||
outputName = LOCAL_DAMAGE_gurson_label
|
thisNoutput => damage_gurson_Noutput
|
||||||
thisNoutput => damage_gurson_Noutput
|
thisOutput => damage_gurson_output
|
||||||
thisOutput => damage_gurson_output
|
thisSize => damage_gurson_sizePostResult
|
||||||
thisSize => damage_gurson_sizePostResult
|
case (LOCAL_DAMAGE_phaseField_ID)
|
||||||
case (LOCAL_DAMAGE_phaseField_ID)
|
outputName = LOCAL_DAMAGE_phaseField_label
|
||||||
outputName = LOCAL_DAMAGE_phaseField_label
|
thisNoutput => damage_phaseField_Noutput
|
||||||
thisNoutput => damage_phaseField_Noutput
|
thisOutput => damage_phaseField_output
|
||||||
thisOutput => damage_phaseField_output
|
thisSize => damage_phaseField_sizePostResult
|
||||||
thisSize => damage_phaseField_sizePostResult
|
case default
|
||||||
case default
|
knownDamage = .false.
|
||||||
knownDamage = .false.
|
end select
|
||||||
end select
|
if (knownDamage) then
|
||||||
if (knownDamage) then
|
write(FILEUNIT,'(a)') '(damage)'//char(9)//trim(outputName)
|
||||||
write(FILEUNIT,'(a)') '(damage)'//char(9)//trim(outputName)
|
if (phase_damage(phase) /= LOCAL_DAMAGE_none_ID) then
|
||||||
if (phase_damage(phase) /= LOCAL_DAMAGE_none_ID) then
|
do e = 1_pInt,thisNoutput(instance)
|
||||||
do e = 1_pInt,thisNoutput(instance)
|
write(FILEUNIT,'(a,i4)') trim(thisOutput(e,instance))//char(9),thisSize(e,instance)
|
||||||
write(FILEUNIT,'(a,i4)') trim(thisOutput(e,instance))//char(9),thisSize(e,instance)
|
enddo
|
||||||
enddo
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
instance = phase_thermalInstance(phase) ! which instance is present phase
|
||||||
instance = phase_thermalInstance(phase) ! which instance is present phase
|
knownThermal = .true.
|
||||||
knownThermal = .true.
|
select case(phase_thermal(phase)) ! split per constititution
|
||||||
select case(phase_thermal(phase)) ! split per constititution
|
case (LOCAL_THERMAL_isothermal_ID)
|
||||||
case (LOCAL_THERMAL_isothermal_ID)
|
outputName = LOCAL_THERMAL_ISOTHERMAL_label
|
||||||
outputName = LOCAL_THERMAL_ISOTHERMAL_label
|
thisNoutput => null()
|
||||||
thisNoutput => null()
|
thisOutput => null()
|
||||||
thisOutput => null()
|
thisSize => null()
|
||||||
thisSize => null()
|
case (LOCAL_THERMAL_adiabatic_ID)
|
||||||
case (LOCAL_THERMAL_adiabatic_ID)
|
outputName = LOCAL_THERMAL_ADIABATIC_label
|
||||||
outputName = LOCAL_THERMAL_ADIABATIC_label
|
thisNoutput => thermal_adiabatic_Noutput
|
||||||
thisNoutput => thermal_adiabatic_Noutput
|
thisOutput => thermal_adiabatic_output
|
||||||
thisOutput => thermal_adiabatic_output
|
thisSize => thermal_adiabatic_sizePostResult
|
||||||
thisSize => thermal_adiabatic_sizePostResult
|
case default
|
||||||
case default
|
knownThermal = .false.
|
||||||
knownThermal = .false.
|
end select
|
||||||
end select
|
if (knownThermal) then
|
||||||
if (knownThermal) then
|
write(FILEUNIT,'(a)') '(thermal)'//char(9)//trim(outputName)
|
||||||
write(FILEUNIT,'(a)') '(thermal)'//char(9)//trim(outputName)
|
if (phase_thermal(phase) /= LOCAL_THERMAL_isothermal_ID) then
|
||||||
if (phase_thermal(phase) /= LOCAL_THERMAL_isothermal_ID) then
|
do e = 1_pInt,thisNoutput(instance)
|
||||||
do e = 1_pInt,thisNoutput(instance)
|
write(FILEUNIT,'(a,i4)') trim(thisOutput(e,instance))//char(9),thisSize(e,instance)
|
||||||
write(FILEUNIT,'(a,i4)') trim(thisOutput(e,instance))//char(9),thisSize(e,instance)
|
enddo
|
||||||
enddo
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
instance = phase_vacancyInstance(phase) ! which instance is present phase
|
||||||
instance = phase_vacancyInstance(phase) ! which instance is present phase
|
knownVacancy = .true.
|
||||||
knownVacancy = .true.
|
select case(phase_vacancy(phase)) ! split per constititution
|
||||||
select case(phase_vacancy(phase)) ! split per constititution
|
case (LOCAL_VACANCY_constant_ID)
|
||||||
case (LOCAL_VACANCY_constant_ID)
|
outputName = LOCAL_VACANCY_constant_label
|
||||||
outputName = LOCAL_VACANCY_constant_label
|
thisNoutput => null()
|
||||||
thisNoutput => null()
|
thisOutput => null()
|
||||||
thisOutput => null()
|
thisSize => null()
|
||||||
thisSize => null()
|
case (LOCAL_VACANCY_generation_ID)
|
||||||
case (LOCAL_VACANCY_generation_ID)
|
outputName = LOCAL_VACANCY_generation_label
|
||||||
outputName = LOCAL_VACANCY_generation_label
|
thisNoutput => vacancy_generation_Noutput
|
||||||
thisNoutput => vacancy_generation_Noutput
|
thisOutput => vacancy_generation_output
|
||||||
thisOutput => vacancy_generation_output
|
thisSize => vacancy_generation_sizePostResult
|
||||||
thisSize => vacancy_generation_sizePostResult
|
case default
|
||||||
case default
|
knownVacancy = .false.
|
||||||
knownVacancy = .false.
|
end select
|
||||||
end select
|
if (knownVacancy) then
|
||||||
if (knownVacancy) then
|
write(FILEUNIT,'(a)') '(vacancy)'//char(9)//trim(outputName)
|
||||||
write(FILEUNIT,'(a)') '(vacancy)'//char(9)//trim(outputName)
|
if (phase_vacancy(phase) /= LOCAL_VACANCY_constant_ID) then
|
||||||
if (phase_vacancy(phase) /= LOCAL_VACANCY_constant_ID) then
|
do e = 1_pInt,thisNoutput(instance)
|
||||||
do e = 1_pInt,thisNoutput(instance)
|
write(FILEUNIT,'(a,i4)') trim(thisOutput(e,instance))//char(9),thisSize(e,instance)
|
||||||
write(FILEUNIT,'(a,i4)') trim(thisOutput(e,instance))//char(9),thisSize(e,instance)
|
enddo
|
||||||
enddo
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
@ -480,10 +470,7 @@ function constitutive_homogenizedC(ipc,ip,el)
|
||||||
PLASTICITY_TITANMOD_ID, &
|
PLASTICITY_TITANMOD_ID, &
|
||||||
PLASTICITY_DISLOTWIN_ID, &
|
PLASTICITY_DISLOTWIN_ID, &
|
||||||
PLASTICITY_DISLOKMC_ID, &
|
PLASTICITY_DISLOKMC_ID, &
|
||||||
PLASTICITY_DISLOUCLA_ID, &
|
PLASTICITY_DISLOUCLA_ID
|
||||||
plasticState,&
|
|
||||||
mappingConstitutive
|
|
||||||
|
|
||||||
use plastic_titanmod, only: &
|
use plastic_titanmod, only: &
|
||||||
plastic_titanmod_homogenizedC
|
plastic_titanmod_homogenizedC
|
||||||
use plastic_dislotwin, only: &
|
use plastic_dislotwin, only: &
|
||||||
|
@ -696,10 +683,7 @@ subroutine constitutive_LpAndItsTangent(Lp, dLp_dTstar3333, dLp_dFi3333, Tstar_v
|
||||||
math_Plain99to3333
|
math_Plain99to3333
|
||||||
use material, only: &
|
use material, only: &
|
||||||
phase_plasticity, &
|
phase_plasticity, &
|
||||||
phase_plasticityInstance, &
|
|
||||||
material_phase, &
|
material_phase, &
|
||||||
plasticState,&
|
|
||||||
mappingConstitutive, &
|
|
||||||
PLASTICITY_NONE_ID, &
|
PLASTICITY_NONE_ID, &
|
||||||
PLASTICITY_J2_ID, &
|
PLASTICITY_J2_ID, &
|
||||||
PLASTICITY_PHENOPOWERLAW_ID, &
|
PLASTICITY_PHENOPOWERLAW_ID, &
|
||||||
|
@ -928,11 +912,6 @@ subroutine constitutive_hooke_TandItsTangent(T, dT_dFe, dT_dFi, Fe, Fi, ipc, ip,
|
||||||
math_transpose33, &
|
math_transpose33, &
|
||||||
math_trace33, &
|
math_trace33, &
|
||||||
math_I3
|
math_I3
|
||||||
use material, only: &
|
|
||||||
mappingConstitutive
|
|
||||||
use lattice, only: &
|
|
||||||
lattice_referenceTemperature, &
|
|
||||||
lattice_thermalExpansion33
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: &
|
integer(pInt), intent(in) :: &
|
||||||
|
@ -985,9 +964,7 @@ subroutine constitutive_collectDotState(Tstar_v, Lp, FeArray, FpArray, subdt, su
|
||||||
mesh_maxNips
|
mesh_maxNips
|
||||||
use material, only: &
|
use material, only: &
|
||||||
phase_plasticity, &
|
phase_plasticity, &
|
||||||
phase_plasticityInstance, &
|
|
||||||
phase_damage, &
|
phase_damage, &
|
||||||
phase_vacancy, &
|
|
||||||
material_phase, &
|
material_phase, &
|
||||||
homogenization_maxNgrains, &
|
homogenization_maxNgrains, &
|
||||||
PLASTICITY_none_ID, &
|
PLASTICITY_none_ID, &
|
||||||
|
@ -1095,8 +1072,6 @@ logical function constitutive_collectDeltaState(Tstar_v, ipc, ip, el)
|
||||||
use material, only: &
|
use material, only: &
|
||||||
phase_plasticity, &
|
phase_plasticity, &
|
||||||
material_phase, &
|
material_phase, &
|
||||||
plasticState, &
|
|
||||||
mappingConstitutive, &
|
|
||||||
PLASTICITY_NONLOCAL_ID
|
PLASTICITY_NONLOCAL_ID
|
||||||
use plastic_nonlocal, only: &
|
use plastic_nonlocal, only: &
|
||||||
plastic_nonlocal_deltaState
|
plastic_nonlocal_deltaState
|
||||||
|
@ -1142,17 +1117,15 @@ end function constitutive_collectDeltaState
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Returns the local(regularised) damage
|
!> @brief Returns the local(regularised) damage
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function constitutive_getLocalDamage(ipc, ip, el)
|
pure function constitutive_getLocalDamage(ipc, ip, el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pReal
|
pReal
|
||||||
use material, only: &
|
use material, only: &
|
||||||
material_phase, &
|
material_phase, &
|
||||||
LOCAL_DAMAGE_none_ID, &
|
|
||||||
LOCAL_DAMAGE_isoBrittle_ID, &
|
LOCAL_DAMAGE_isoBrittle_ID, &
|
||||||
LOCAL_DAMAGE_isoDuctile_ID, &
|
LOCAL_DAMAGE_isoDuctile_ID, &
|
||||||
LOCAL_DAMAGE_anisoBrittle_ID, &
|
LOCAL_DAMAGE_anisoBrittle_ID, &
|
||||||
LOCAL_DAMAGE_anisoDuctile_ID, &
|
LOCAL_DAMAGE_anisoDuctile_ID, &
|
||||||
LOCAL_DAMAGE_gurson_ID, &
|
|
||||||
LOCAL_DAMAGE_phaseField_ID, &
|
LOCAL_DAMAGE_phaseField_ID, &
|
||||||
phase_damage
|
phase_damage
|
||||||
use damage_isoBrittle, only: &
|
use damage_isoBrittle, only: &
|
||||||
|
@ -1163,8 +1136,6 @@ function constitutive_getLocalDamage(ipc, ip, el)
|
||||||
damage_anisoBrittle_getLocalDamage
|
damage_anisoBrittle_getLocalDamage
|
||||||
use damage_anisoDuctile, only: &
|
use damage_anisoDuctile, only: &
|
||||||
damage_anisoDuctile_getLocalDamage
|
damage_anisoDuctile_getLocalDamage
|
||||||
use damage_gurson, only: &
|
|
||||||
damage_gurson_getLocalDamage
|
|
||||||
use damage_phaseField, only: &
|
use damage_phaseField, only: &
|
||||||
damage_phaseField_getLocalDamage
|
damage_phaseField_getLocalDamage
|
||||||
|
|
||||||
|
@ -1176,7 +1147,7 @@ function constitutive_getLocalDamage(ipc, ip, el)
|
||||||
real(pReal) :: constitutive_getLocalDamage
|
real(pReal) :: constitutive_getLocalDamage
|
||||||
|
|
||||||
select case (phase_damage(material_phase(ipc,ip,el)))
|
select case (phase_damage(material_phase(ipc,ip,el)))
|
||||||
case (LOCAL_DAMAGE_none_ID)
|
case default
|
||||||
constitutive_getLocalDamage = 1.0_pReal
|
constitutive_getLocalDamage = 1.0_pReal
|
||||||
|
|
||||||
case (LOCAL_DAMAGE_isoBrittle_ID)
|
case (LOCAL_DAMAGE_isoBrittle_ID)
|
||||||
|
@ -1191,9 +1162,6 @@ function constitutive_getLocalDamage(ipc, ip, el)
|
||||||
case (LOCAL_DAMAGE_anisoDuctile_ID)
|
case (LOCAL_DAMAGE_anisoDuctile_ID)
|
||||||
constitutive_getLocalDamage = damage_anisoDuctile_getLocalDamage(ipc, ip, el)
|
constitutive_getLocalDamage = damage_anisoDuctile_getLocalDamage(ipc, ip, el)
|
||||||
|
|
||||||
case (LOCAL_DAMAGE_gurson_ID)
|
|
||||||
constitutive_getLocalDamage = damage_gurson_getLocalDamage(ipc, ip, el)
|
|
||||||
|
|
||||||
case (LOCAL_DAMAGE_phaseField_ID)
|
case (LOCAL_DAMAGE_phaseField_ID)
|
||||||
constitutive_getLocalDamage = damage_phaseField_getLocalDamage(ipc, ip, el)
|
constitutive_getLocalDamage = damage_phaseField_getLocalDamage(ipc, ip, el)
|
||||||
|
|
||||||
|
@ -1263,17 +1231,15 @@ end subroutine constitutive_putLocalDamage
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns nonlocal (regularised) damage
|
!> @brief returns nonlocal (regularised) damage
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function constitutive_getDamage(ipc, ip, el)
|
pure function constitutive_getDamage(ipc, ip, el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pReal
|
pReal
|
||||||
use material, only: &
|
use material, only: &
|
||||||
material_phase, &
|
material_phase, &
|
||||||
LOCAL_DAMAGE_none_ID, &
|
|
||||||
LOCAL_DAMAGE_isoBrittle_ID, &
|
LOCAL_DAMAGE_isoBrittle_ID, &
|
||||||
LOCAL_DAMAGE_isoDuctile_ID, &
|
LOCAL_DAMAGE_isoDuctile_ID, &
|
||||||
LOCAL_DAMAGE_anisoBrittle_ID, &
|
LOCAL_DAMAGE_anisoBrittle_ID, &
|
||||||
LOCAL_DAMAGE_anisoDuctile_ID, &
|
LOCAL_DAMAGE_anisoDuctile_ID, &
|
||||||
LOCAL_DAMAGE_gurson_ID, &
|
|
||||||
LOCAL_DAMAGE_phaseField_ID, &
|
LOCAL_DAMAGE_phaseField_ID, &
|
||||||
phase_damage
|
phase_damage
|
||||||
use damage_isoBrittle, only: &
|
use damage_isoBrittle, only: &
|
||||||
|
@ -1284,8 +1250,6 @@ function constitutive_getDamage(ipc, ip, el)
|
||||||
damage_anisoBrittle_getDamage
|
damage_anisoBrittle_getDamage
|
||||||
use damage_anisoDuctile, only: &
|
use damage_anisoDuctile, only: &
|
||||||
damage_anisoDuctile_getDamage
|
damage_anisoDuctile_getDamage
|
||||||
use damage_gurson, only: &
|
|
||||||
damage_gurson_getDamage
|
|
||||||
use damage_phaseField, only: &
|
use damage_phaseField, only: &
|
||||||
damage_phaseField_getDamage
|
damage_phaseField_getDamage
|
||||||
|
|
||||||
|
@ -1297,7 +1261,7 @@ function constitutive_getDamage(ipc, ip, el)
|
||||||
real(pReal) :: constitutive_getDamage
|
real(pReal) :: constitutive_getDamage
|
||||||
|
|
||||||
select case (phase_damage(material_phase(ipc,ip,el)))
|
select case (phase_damage(material_phase(ipc,ip,el)))
|
||||||
case (LOCAL_DAMAGE_none_ID)
|
case default
|
||||||
constitutive_getDamage = 1.0_pReal
|
constitutive_getDamage = 1.0_pReal
|
||||||
|
|
||||||
case (LOCAL_DAMAGE_isoBrittle_ID)
|
case (LOCAL_DAMAGE_isoBrittle_ID)
|
||||||
|
@ -1312,9 +1276,6 @@ function constitutive_getDamage(ipc, ip, el)
|
||||||
case (LOCAL_DAMAGE_anisoDuctile_ID)
|
case (LOCAL_DAMAGE_anisoDuctile_ID)
|
||||||
constitutive_getDamage = damage_anisoDuctile_getDamage(ipc, ip, el)
|
constitutive_getDamage = damage_anisoDuctile_getDamage(ipc, ip, el)
|
||||||
|
|
||||||
case (LOCAL_DAMAGE_gurson_ID)
|
|
||||||
constitutive_getDamage = damage_gurson_getDamage(ipc, ip, el)
|
|
||||||
|
|
||||||
case (LOCAL_DAMAGE_phaseField_ID)
|
case (LOCAL_DAMAGE_phaseField_ID)
|
||||||
constitutive_getDamage = damage_phaseField_getDamage(ipc, ip, el)
|
constitutive_getDamage = damage_phaseField_getDamage(ipc, ip, el)
|
||||||
|
|
||||||
|
@ -1325,7 +1286,7 @@ end function constitutive_getDamage
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns damage diffusion tensor
|
!> @brief returns damage diffusion tensor
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function constitutive_getDamageDiffusion33(ipc, ip, el)
|
pure function constitutive_getDamageDiffusion33(ipc, ip, el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pReal
|
pReal
|
||||||
use lattice, only: &
|
use lattice, only: &
|
||||||
|
@ -1368,19 +1329,18 @@ end function constitutive_getDamageDiffusion33
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns local (unregularised) temperature
|
!> @brief returns local (unregularised) temperature
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function constitutive_getAdiabaticTemperature(ipc, ip, el)
|
pure function constitutive_getAdiabaticTemperature(ipc, ip, el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pReal
|
pReal
|
||||||
use material, only: &
|
use material, only: &
|
||||||
material_phase, &
|
material_phase, &
|
||||||
LOCAL_THERMAL_isothermal_ID, &
|
|
||||||
LOCAL_THERMAL_adiabatic_ID, &
|
LOCAL_THERMAL_adiabatic_ID, &
|
||||||
phase_thermal, &
|
phase_thermal, &
|
||||||
phase_thermalInstance
|
phase_thermalInstance
|
||||||
use thermal_isothermal, only: &
|
use thermal_isothermal, only: &
|
||||||
thermal_isothermal_temperature
|
thermal_isothermal_temperature
|
||||||
use thermal_adiabatic, only: &
|
use thermal_adiabatic, only: &
|
||||||
thermal_adiabatic_getTemperature
|
thermal_adiabatic_getLocalTemperature
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: &
|
integer(pInt), intent(in) :: &
|
||||||
|
@ -1390,12 +1350,13 @@ function constitutive_getAdiabaticTemperature(ipc, ip, el)
|
||||||
real(pReal) :: constitutive_getAdiabaticTemperature
|
real(pReal) :: constitutive_getAdiabaticTemperature
|
||||||
|
|
||||||
select case (phase_thermal(material_phase(ipc,ip,el)))
|
select case (phase_thermal(material_phase(ipc,ip,el)))
|
||||||
case (LOCAL_THERMAL_isothermal_ID)
|
case (LOCAL_THERMAL_adiabatic_ID)
|
||||||
|
constitutive_getAdiabaticTemperature = thermal_adiabatic_getLocalTemperature(ipc, ip, el)
|
||||||
|
|
||||||
|
case default
|
||||||
constitutive_getAdiabaticTemperature = &
|
constitutive_getAdiabaticTemperature = &
|
||||||
thermal_isothermal_temperature(phase_thermalInstance(material_phase(ipc,ip,el)))
|
thermal_isothermal_temperature(phase_thermalInstance(material_phase(ipc,ip,el)))
|
||||||
|
|
||||||
case (LOCAL_THERMAL_adiabatic_ID)
|
|
||||||
constitutive_getAdiabaticTemperature = thermal_adiabatic_getTemperature(ipc, ip, el)
|
|
||||||
end select
|
end select
|
||||||
|
|
||||||
end function constitutive_getAdiabaticTemperature
|
end function constitutive_getAdiabaticTemperature
|
||||||
|
@ -1411,7 +1372,7 @@ subroutine constitutive_putAdiabaticTemperature(ipc, ip, el, localTemperature)
|
||||||
LOCAL_THERMAL_adiabatic_ID, &
|
LOCAL_THERMAL_adiabatic_ID, &
|
||||||
phase_thermal
|
phase_thermal
|
||||||
use thermal_adiabatic, only: &
|
use thermal_adiabatic, only: &
|
||||||
thermal_adiabatic_putTemperature
|
thermal_adiabatic_putLocalTemperature
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: &
|
integer(pInt), intent(in) :: &
|
||||||
|
@ -1423,7 +1384,7 @@ subroutine constitutive_putAdiabaticTemperature(ipc, ip, el, localTemperature)
|
||||||
|
|
||||||
select case (phase_thermal(material_phase(ipc,ip,el)))
|
select case (phase_thermal(material_phase(ipc,ip,el)))
|
||||||
case (LOCAL_THERMAL_adiabatic_ID)
|
case (LOCAL_THERMAL_adiabatic_ID)
|
||||||
call thermal_adiabatic_putTemperature(ipc, ip, el, localTemperature)
|
call thermal_adiabatic_putLocalTemperature(ipc, ip, el, localTemperature)
|
||||||
|
|
||||||
end select
|
end select
|
||||||
|
|
||||||
|
@ -1432,17 +1393,18 @@ end subroutine constitutive_putAdiabaticTemperature
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns nonlocal (regularised) temperature
|
!> @brief returns nonlocal (regularised) temperature
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function constitutive_getTemperature(ipc, ip, el)
|
pure function constitutive_getTemperature(ipc, ip, el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pReal
|
pReal
|
||||||
use material, only: &
|
use material, only: &
|
||||||
mappingHomogenization, &
|
|
||||||
material_phase, &
|
material_phase, &
|
||||||
fieldThermal, &
|
LOCAL_THERMAL_adiabatic_ID, &
|
||||||
field_thermal_type, &
|
phase_thermal
|
||||||
FIELD_THERMAL_local_ID, &
|
use thermal_adiabatic, only: &
|
||||||
FIELD_THERMAL_nonlocal_ID, &
|
thermal_adiabatic_getTemperature
|
||||||
material_homog
|
use thermal_isothermal, only: &
|
||||||
|
thermal_isothermal_temperature
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: &
|
integer(pInt), intent(in) :: &
|
||||||
ipc, & !< grain number
|
ipc, & !< grain number
|
||||||
|
@ -1450,14 +1412,13 @@ function constitutive_getTemperature(ipc, ip, el)
|
||||||
el !< element number
|
el !< element number
|
||||||
real(pReal) :: constitutive_getTemperature
|
real(pReal) :: constitutive_getTemperature
|
||||||
|
|
||||||
select case(field_thermal_type(material_homog(ip,el)))
|
select case (phase_thermal(material_phase(ipc,ip,el)))
|
||||||
case (FIELD_THERMAL_local_ID)
|
case (LOCAL_THERMAL_adiabatic_ID)
|
||||||
constitutive_getTemperature = constitutive_getAdiabaticTemperature(ipc, ip, el)
|
constitutive_getTemperature = thermal_adiabatic_getTemperature(ipc, ip, el)
|
||||||
|
|
||||||
case (FIELD_THERMAL_nonlocal_ID)
|
|
||||||
constitutive_getTemperature = fieldThermal(material_homog(ip,el))% &
|
|
||||||
field(1,mappingHomogenization(1,ip,el)) ! Taylor type
|
|
||||||
|
|
||||||
|
case default
|
||||||
|
constitutive_getTemperature = thermal_isothermal_temperature(material_phase(ipc,ip,el))
|
||||||
|
|
||||||
end select
|
end select
|
||||||
|
|
||||||
end function constitutive_getTemperature
|
end function constitutive_getTemperature
|
||||||
|
@ -1465,12 +1426,11 @@ end function constitutive_getTemperature
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns heat generation rate
|
!> @brief returns heat generation rate
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function constitutive_getHeatGeneration(Tstar_v, Lp, ipc, ip, el)
|
pure function constitutive_getHeatGeneration(Tstar_v, Lp, ipc, ip, el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pReal
|
pReal
|
||||||
use material, only: &
|
use material, only: &
|
||||||
material_phase, &
|
material_phase, &
|
||||||
LOCAL_THERMAL_isothermal_ID, &
|
|
||||||
LOCAL_THERMAL_adiabatic_ID, &
|
LOCAL_THERMAL_adiabatic_ID, &
|
||||||
phase_thermal
|
phase_thermal
|
||||||
use thermal_adiabatic, only: &
|
use thermal_adiabatic, only: &
|
||||||
|
@ -1488,11 +1448,12 @@ function constitutive_getHeatGeneration(Tstar_v, Lp, ipc, ip, el)
|
||||||
real(pReal) :: constitutive_getHeatGeneration
|
real(pReal) :: constitutive_getHeatGeneration
|
||||||
|
|
||||||
select case (phase_thermal(material_phase(ipc,ip,el)))
|
select case (phase_thermal(material_phase(ipc,ip,el)))
|
||||||
case (LOCAL_THERMAL_isothermal_ID)
|
|
||||||
constitutive_getHeatGeneration = 0.0_pReal
|
|
||||||
|
|
||||||
case (LOCAL_THERMAL_adiabatic_ID)
|
case (LOCAL_THERMAL_adiabatic_ID)
|
||||||
constitutive_getHeatGeneration = thermal_adiabatic_getHeatGeneration(Tstar_v, Lp)
|
constitutive_getHeatGeneration = thermal_adiabatic_getHeatGeneration(Tstar_v, Lp)
|
||||||
|
|
||||||
|
case default
|
||||||
|
constitutive_getHeatGeneration = 0.0_pReal
|
||||||
|
|
||||||
end select
|
end select
|
||||||
|
|
||||||
end function constitutive_getHeatGeneration
|
end function constitutive_getHeatGeneration
|
||||||
|
@ -1500,12 +1461,11 @@ end function constitutive_getHeatGeneration
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns local vacancy concentration
|
!> @brief returns local vacancy concentration
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function constitutive_getLocalVacancyConcentration(ipc, ip, el)
|
pure function constitutive_getLocalVacancyConcentration(ipc, ip, el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pReal
|
pReal
|
||||||
use material, only: &
|
use material, only: &
|
||||||
material_phase, &
|
material_phase, &
|
||||||
LOCAL_VACANCY_constant_ID, &
|
|
||||||
LOCAL_VACANCY_generation_ID, &
|
LOCAL_VACANCY_generation_ID, &
|
||||||
phase_vacancy
|
phase_vacancy
|
||||||
use vacancy_generation, only: &
|
use vacancy_generation, only: &
|
||||||
|
@ -1521,12 +1481,13 @@ function constitutive_getLocalVacancyConcentration(ipc, ip, el)
|
||||||
real(pReal) :: constitutive_getLocalVacancyConcentration
|
real(pReal) :: constitutive_getLocalVacancyConcentration
|
||||||
|
|
||||||
select case (phase_vacancy(material_phase(ipc,ip,el)))
|
select case (phase_vacancy(material_phase(ipc,ip,el)))
|
||||||
case (LOCAL_VACANCY_constant_ID)
|
case (LOCAL_VACANCY_generation_ID)
|
||||||
|
constitutive_getLocalVacancyConcentration = vacancy_generation_getLocalConcentration(ipc, ip, el)
|
||||||
|
|
||||||
|
case default
|
||||||
constitutive_getLocalVacancyConcentration = &
|
constitutive_getLocalVacancyConcentration = &
|
||||||
lattice_equilibriumVacancyConcentration(material_phase(ipc,ip,el))
|
lattice_equilibriumVacancyConcentration(material_phase(ipc,ip,el))
|
||||||
|
|
||||||
case (LOCAL_VACANCY_generation_ID)
|
|
||||||
constitutive_getLocalVacancyConcentration = vacancy_generation_getLocalConcentration(ipc, ip, el)
|
|
||||||
end select
|
end select
|
||||||
|
|
||||||
end function constitutive_getLocalVacancyConcentration
|
end function constitutive_getLocalVacancyConcentration
|
||||||
|
@ -1563,12 +1524,11 @@ end subroutine constitutive_putLocalVacancyConcentration
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns nonlocal vacancy concentration
|
!> @brief returns nonlocal vacancy concentration
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function constitutive_getVacancyConcentration(ipc, ip, el)
|
pure function constitutive_getVacancyConcentration(ipc, ip, el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pReal
|
pReal
|
||||||
use material, only: &
|
use material, only: &
|
||||||
material_phase, &
|
material_phase, &
|
||||||
LOCAL_VACANCY_constant_ID, &
|
|
||||||
LOCAL_VACANCY_generation_ID, &
|
LOCAL_VACANCY_generation_ID, &
|
||||||
phase_vacancy
|
phase_vacancy
|
||||||
use vacancy_generation, only: &
|
use vacancy_generation, only: &
|
||||||
|
@ -1584,12 +1544,13 @@ function constitutive_getVacancyConcentration(ipc, ip, el)
|
||||||
real(pReal) :: constitutive_getVacancyConcentration
|
real(pReal) :: constitutive_getVacancyConcentration
|
||||||
|
|
||||||
select case (phase_vacancy(material_phase(ipc,ip,el)))
|
select case (phase_vacancy(material_phase(ipc,ip,el)))
|
||||||
case (LOCAL_VACANCY_constant_ID)
|
|
||||||
constitutive_getVacancyConcentration = &
|
|
||||||
lattice_equilibriumVacancyConcentration(material_phase(ipc,ip,el))
|
|
||||||
|
|
||||||
case (LOCAL_VACANCY_generation_ID)
|
case (LOCAL_VACANCY_generation_ID)
|
||||||
constitutive_getVacancyConcentration = vacancy_generation_getConcentration(ipc, ip, el)
|
constitutive_getVacancyConcentration = vacancy_generation_getConcentration(ipc, ip, el)
|
||||||
|
|
||||||
|
case default
|
||||||
|
constitutive_getVacancyConcentration = &
|
||||||
|
lattice_equilibriumVacancyConcentration(material_phase(ipc,ip,el))
|
||||||
|
|
||||||
end select
|
end select
|
||||||
|
|
||||||
end function constitutive_getVacancyConcentration
|
end function constitutive_getVacancyConcentration
|
||||||
|
@ -1597,11 +1558,9 @@ end function constitutive_getVacancyConcentration
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns vacancy diffusion tensor
|
!> @brief returns vacancy diffusion tensor
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function constitutive_getVacancyDiffusion33(ipc, ip, el)
|
pure function constitutive_getVacancyDiffusion33(ipc, ip, el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pReal
|
pReal
|
||||||
use lattice, only: &
|
|
||||||
lattice_VacancyDiffusion33
|
|
||||||
use material, only: &
|
use material, only: &
|
||||||
material_phase, &
|
material_phase, &
|
||||||
LOCAL_VACANCY_generation_ID, &
|
LOCAL_VACANCY_generation_ID, &
|
||||||
|
@ -1629,7 +1588,7 @@ end function constitutive_getVacancyDiffusion33
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns vacancy diffusion tensor
|
!> @brief returns vacancy diffusion tensor
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function constitutive_getVacancyMobility33(ipc, ip, el)
|
pure function constitutive_getVacancyMobility33(ipc, ip, el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pReal
|
pReal
|
||||||
use material, only: &
|
use material, only: &
|
||||||
|
@ -1660,7 +1619,7 @@ end function constitutive_getVacancyMobility33
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns vacancy chemical potential driving force
|
!> @brief returns vacancy chemical potential driving force
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
real(pReal) function constitutive_getVacancyEnergy(ipc, ip, el)
|
pure real(pReal) function constitutive_getVacancyEnergy(ipc, ip, el)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
pReal
|
pReal
|
||||||
use material, only: &
|
use material, only: &
|
||||||
|
@ -1680,6 +1639,9 @@ real(pReal) function constitutive_getVacancyEnergy(ipc, ip, el)
|
||||||
case (LOCAL_VACANCY_generation_ID)
|
case (LOCAL_VACANCY_generation_ID)
|
||||||
constitutive_getVacancyEnergy = &
|
constitutive_getVacancyEnergy = &
|
||||||
vacancy_generation_getVacancyEnergy(ipc,ip,el)
|
vacancy_generation_getVacancyEnergy(ipc,ip,el)
|
||||||
|
|
||||||
|
case default
|
||||||
|
constitutive_getVacancyEnergy = 0.0_pReal
|
||||||
|
|
||||||
end select
|
end select
|
||||||
|
|
||||||
|
|
|
@ -343,7 +343,7 @@ end subroutine damage_phaseField_microstructure
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns damage
|
!> @brief returns damage
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function damage_phaseField_getDamage(ipc, ip, el)
|
pure function damage_phaseField_getDamage(ipc, ip, el)
|
||||||
use material, only: &
|
use material, only: &
|
||||||
material_homog, &
|
material_homog, &
|
||||||
mappingHomogenization, &
|
mappingHomogenization, &
|
||||||
|
@ -362,7 +362,7 @@ function damage_phaseField_getDamage(ipc, ip, el)
|
||||||
real(pReal) :: damage_phaseField_getDamage
|
real(pReal) :: damage_phaseField_getDamage
|
||||||
|
|
||||||
select case(field_damage_type(material_homog(ip,el)))
|
select case(field_damage_type(material_homog(ip,el)))
|
||||||
case (FIELD_DAMAGE_LOCAL_ID)
|
case default
|
||||||
damage_phaseField_getDamage = damageState(mappingConstitutive(2,ipc,ip,el))% &
|
damage_phaseField_getDamage = damageState(mappingConstitutive(2,ipc,ip,el))% &
|
||||||
state0(1,mappingConstitutive(1,ipc,ip,el))
|
state0(1,mappingConstitutive(1,ipc,ip,el))
|
||||||
|
|
||||||
|
@ -397,7 +397,7 @@ end subroutine damage_phaseField_putLocalDamage
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns local damage
|
!> @brief returns local damage
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function damage_phaseField_getLocalDamage(ipc, ip, el)
|
pure function damage_phaseField_getLocalDamage(ipc, ip, el)
|
||||||
use material, only: &
|
use material, only: &
|
||||||
mappingConstitutive, &
|
mappingConstitutive, &
|
||||||
damageState
|
damageState
|
||||||
|
@ -417,12 +417,11 @@ end function damage_phaseField_getLocalDamage
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns brittle damage diffusion tensor
|
!> @brief returns brittle damage diffusion tensor
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function damage_phaseField_getDamageDiffusion33(ipc, ip, el)
|
pure function damage_phaseField_getDamageDiffusion33(ipc, ip, el)
|
||||||
use lattice, only: &
|
use lattice, only: &
|
||||||
lattice_DamageDiffusion33
|
lattice_DamageDiffusion33
|
||||||
use material, only: &
|
use material, only: &
|
||||||
mappingConstitutive, &
|
mappingConstitutive
|
||||||
damageState
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: &
|
integer(pInt), intent(in) :: &
|
||||||
|
@ -444,7 +443,7 @@ end function damage_phaseField_getDamageDiffusion33
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns brittle damaged stiffness tensor
|
!> @brief returns brittle damaged stiffness tensor
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function damage_phaseField_getDamagedC66(C, ipc, ip, el)
|
pure function damage_phaseField_getDamagedC66(C, ipc, ip, el)
|
||||||
use material, only: &
|
use material, only: &
|
||||||
mappingConstitutive
|
mappingConstitutive
|
||||||
|
|
||||||
|
|
|
@ -1040,8 +1040,6 @@ subroutine homogenization_RGC_stressPenalty(rPen,nMis,avgF,fDef,ip,el,homID)
|
||||||
math_civita
|
math_civita
|
||||||
use material, only: &
|
use material, only: &
|
||||||
homogenization_maxNgrains,&
|
homogenization_maxNgrains,&
|
||||||
homogState, &
|
|
||||||
mappingHomogenization, &
|
|
||||||
homogenization_Ngrains
|
homogenization_Ngrains
|
||||||
use numerics, only: &
|
use numerics, only: &
|
||||||
xSmoo_RGC
|
xSmoo_RGC
|
||||||
|
@ -1339,11 +1337,8 @@ end function homogenization_RGC_relaxationVector
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function homogenization_RGC_interfaceNormal(intFace,ip,el)
|
function homogenization_RGC_interfaceNormal(intFace,ip,el)
|
||||||
use debug, only: &
|
use debug, only: &
|
||||||
debug_level, &
|
|
||||||
debug_homogenization,&
|
debug_homogenization,&
|
||||||
debug_levelExtensive, &
|
debug_levelExtensive
|
||||||
debug_e, &
|
|
||||||
debug_i
|
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul33x3
|
math_mul33x3
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,8 @@ module thermal_adiabatic
|
||||||
thermal_adiabatic_microstructure, &
|
thermal_adiabatic_microstructure, &
|
||||||
thermal_adiabatic_LTAndItsTangent, &
|
thermal_adiabatic_LTAndItsTangent, &
|
||||||
thermal_adiabatic_getTemperature, &
|
thermal_adiabatic_getTemperature, &
|
||||||
thermal_adiabatic_putTemperature, &
|
thermal_adiabatic_getLocalTemperature, &
|
||||||
|
thermal_adiabatic_putLocalTemperature, &
|
||||||
thermal_adiabatic_getHeatGeneration, &
|
thermal_adiabatic_getHeatGeneration, &
|
||||||
thermal_adiabatic_postResults
|
thermal_adiabatic_postResults
|
||||||
|
|
||||||
|
@ -59,9 +60,6 @@ subroutine thermal_adiabatic_init(fileUnit,temperature_init)
|
||||||
debug_level,&
|
debug_level,&
|
||||||
debug_constitutive,&
|
debug_constitutive,&
|
||||||
debug_levelBasic
|
debug_levelBasic
|
||||||
use mesh, only: &
|
|
||||||
mesh_maxNips, &
|
|
||||||
mesh_NcpElems
|
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_read, &
|
IO_read, &
|
||||||
IO_lc, &
|
IO_lc, &
|
||||||
|
@ -76,7 +74,6 @@ subroutine thermal_adiabatic_init(fileUnit,temperature_init)
|
||||||
IO_timeStamp, &
|
IO_timeStamp, &
|
||||||
IO_EOF
|
IO_EOF
|
||||||
use material, only: &
|
use material, only: &
|
||||||
homogenization_maxNgrains, &
|
|
||||||
phase_thermal, &
|
phase_thermal, &
|
||||||
phase_thermalInstance, &
|
phase_thermalInstance, &
|
||||||
phase_Noutput, &
|
phase_Noutput, &
|
||||||
|
@ -254,11 +251,9 @@ end subroutine thermal_adiabatic_aTolState
|
||||||
subroutine thermal_adiabatic_microstructure(Tstar_v, Lp, subdt, ipc, ip, el)
|
subroutine thermal_adiabatic_microstructure(Tstar_v, Lp, subdt, ipc, ip, el)
|
||||||
use lattice, only: &
|
use lattice, only: &
|
||||||
lattice_massDensity, &
|
lattice_massDensity, &
|
||||||
lattice_specificHeat, &
|
lattice_specificHeat
|
||||||
lattice_thermalExpansion33
|
|
||||||
use material, only: &
|
use material, only: &
|
||||||
mappingConstitutive, &
|
mappingConstitutive, &
|
||||||
phase_thermalInstance, &
|
|
||||||
thermalState
|
thermalState
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_Mandel6to33
|
math_Mandel6to33
|
||||||
|
@ -298,9 +293,7 @@ subroutine thermal_adiabatic_LTAndItsTangent(LT, dLT_dTstar3333, Tstar_v, Lp, ip
|
||||||
lattice_specificHeat, &
|
lattice_specificHeat, &
|
||||||
lattice_thermalExpansion33
|
lattice_thermalExpansion33
|
||||||
use material, only: &
|
use material, only: &
|
||||||
mappingConstitutive, &
|
mappingConstitutive
|
||||||
phase_thermalInstance, &
|
|
||||||
thermalState
|
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_Plain3333to99, &
|
math_Plain3333to99, &
|
||||||
math_Mandel6to33
|
math_Mandel6to33
|
||||||
|
@ -344,7 +337,40 @@ end subroutine thermal_adiabatic_LTAndItsTangent
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns temperature based on local damage model state layout
|
!> @brief returns temperature based on local damage model state layout
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function thermal_adiabatic_getTemperature(ipc, ip, el)
|
pure function thermal_adiabatic_getTemperature(ipc, ip, el)
|
||||||
|
use material, only: &
|
||||||
|
mappingHomogenization, &
|
||||||
|
fieldThermal, &
|
||||||
|
field_thermal_type, &
|
||||||
|
FIELD_THERMAL_nonlocal_ID, &
|
||||||
|
material_homog, &
|
||||||
|
mappingConstitutive, &
|
||||||
|
thermalState
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
integer(pInt), intent(in) :: &
|
||||||
|
ipc, & !< grain number
|
||||||
|
ip, & !< integration point number
|
||||||
|
el !< element number
|
||||||
|
real(pReal) :: thermal_adiabatic_getTemperature
|
||||||
|
|
||||||
|
select case(field_thermal_type(material_homog(ip,el)))
|
||||||
|
case (FIELD_THERMAL_nonlocal_ID)
|
||||||
|
thermal_adiabatic_getTemperature = fieldThermal(material_homog(ip,el))% &
|
||||||
|
field(1,mappingHomogenization(1,ip,el)) ! Taylor type
|
||||||
|
|
||||||
|
case default
|
||||||
|
thermal_adiabatic_getTemperature = thermalState(mappingConstitutive(2,ipc,ip,el))% &
|
||||||
|
state(1,mappingConstitutive(1,ipc,ip,el))
|
||||||
|
|
||||||
|
end select
|
||||||
|
|
||||||
|
end function thermal_adiabatic_getTemperature
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @brief returns temperature based on local damage model state layout
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
pure function thermal_adiabatic_getLocalTemperature(ipc, ip, el)
|
||||||
use material, only: &
|
use material, only: &
|
||||||
mappingConstitutive, &
|
mappingConstitutive, &
|
||||||
ThermalState
|
ThermalState
|
||||||
|
@ -354,17 +380,18 @@ function thermal_adiabatic_getTemperature(ipc, ip, el)
|
||||||
ipc, & !< grain number
|
ipc, & !< grain number
|
||||||
ip, & !< integration point number
|
ip, & !< integration point number
|
||||||
el !< element number
|
el !< element number
|
||||||
real(pReal) :: thermal_adiabatic_getTemperature
|
real(pReal) :: &
|
||||||
|
thermal_adiabatic_getLocalTemperature
|
||||||
|
|
||||||
thermal_adiabatic_getTemperature = &
|
thermal_adiabatic_getLocalTemperature = &
|
||||||
thermalState(mappingConstitutive(2,ipc,ip,el))%state(1,mappingConstitutive(1,ipc,ip,el))
|
thermalState(mappingConstitutive(2,ipc,ip,el))%state(1,mappingConstitutive(1,ipc,ip,el))
|
||||||
|
|
||||||
end function thermal_adiabatic_getTemperature
|
end function thermal_adiabatic_getLocalTemperature
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns temperature based on local damage model state layout
|
!> @brief returns temperature based on local damage model state layout
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine thermal_adiabatic_putTemperature(ipc, ip, el, localTemperature)
|
subroutine thermal_adiabatic_putLocalTemperature(ipc, ip, el, localTemperature)
|
||||||
use material, only: &
|
use material, only: &
|
||||||
mappingConstitutive, &
|
mappingConstitutive, &
|
||||||
ThermalState
|
ThermalState
|
||||||
|
@ -380,12 +407,12 @@ subroutine thermal_adiabatic_putTemperature(ipc, ip, el, localTemperature)
|
||||||
thermalState(mappingConstitutive(2,ipc,ip,el))%state(1,mappingConstitutive(1,ipc,ip,el))= &
|
thermalState(mappingConstitutive(2,ipc,ip,el))%state(1,mappingConstitutive(1,ipc,ip,el))= &
|
||||||
localTemperature
|
localTemperature
|
||||||
|
|
||||||
end subroutine thermal_adiabatic_putTemperature
|
end subroutine thermal_adiabatic_putLocalTemperature
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns heat generation rate
|
!> @brief returns heat generation rate
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function thermal_adiabatic_getHeatGeneration(Tstar_v, Lp)
|
pure function thermal_adiabatic_getHeatGeneration(Tstar_v, Lp)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_Mandel6to33
|
math_Mandel6to33
|
||||||
|
|
||||||
|
|
|
@ -349,7 +349,7 @@ end subroutine vacancy_generation_microstructure
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns vacancy concentration based on state layout
|
!> @brief returns vacancy concentration based on state layout
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function vacancy_generation_getLocalConcentration(ipc, ip, el)
|
pure function vacancy_generation_getLocalConcentration(ipc, ip, el)
|
||||||
use material, only: &
|
use material, only: &
|
||||||
mappingConstitutive, &
|
mappingConstitutive, &
|
||||||
vacancyState
|
vacancyState
|
||||||
|
@ -390,7 +390,7 @@ end subroutine vacancy_generation_putLocalConcentration
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns vacancy concentration based on state layout
|
!> @brief returns vacancy concentration based on state layout
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function vacancy_generation_getConcentration(ipc, ip, el)
|
pure function vacancy_generation_getConcentration(ipc, ip, el)
|
||||||
use material, only: &
|
use material, only: &
|
||||||
mappingHomogenization, &
|
mappingHomogenization, &
|
||||||
material_phase, &
|
material_phase, &
|
||||||
|
@ -421,7 +421,7 @@ end function vacancy_generation_getConcentration
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns generation vacancy diffusion tensor
|
!> @brief returns generation vacancy diffusion tensor
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function vacancy_generation_getVacancyDiffusion33(ipc,ip,el)
|
pure function vacancy_generation_getVacancyDiffusion33(ipc,ip,el)
|
||||||
use lattice, only: &
|
use lattice, only: &
|
||||||
lattice_VacancyDiffusion33
|
lattice_VacancyDiffusion33
|
||||||
use material, only: &
|
use material, only: &
|
||||||
|
@ -443,7 +443,7 @@ end function vacancy_generation_getVacancyDiffusion33
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns generation vacancy mobility tensor
|
!> @brief returns generation vacancy mobility tensor
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function vacancy_generation_getVacancyMobility33(temperature,ipc,ip,el)
|
pure function vacancy_generation_getVacancyMobility33(temperature,ipc,ip,el)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_I3
|
math_I3
|
||||||
use material, only: &
|
use material, only: &
|
||||||
|
@ -458,7 +458,7 @@ function vacancy_generation_getVacancyMobility33(temperature,ipc,ip,el)
|
||||||
el !< element number
|
el !< element number
|
||||||
real(pReal), dimension(3,3) :: &
|
real(pReal), dimension(3,3) :: &
|
||||||
vacancy_generation_getVacancyMobility33
|
vacancy_generation_getVacancyMobility33
|
||||||
real(pReal) :: &
|
real(pReal), intent(in) :: &
|
||||||
temperature
|
temperature
|
||||||
integer(pInt) :: &
|
integer(pInt) :: &
|
||||||
phase, constituent, instance
|
phase, constituent, instance
|
||||||
|
@ -475,7 +475,7 @@ end function vacancy_generation_getVacancyMobility33
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief returns generation vacancy mobility tensor
|
!> @brief returns generation vacancy mobility tensor
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
real(pReal) function vacancy_generation_getVacancyEnergy(ipc,ip,el)
|
pure real(pReal) function vacancy_generation_getVacancyEnergy(ipc,ip,el)
|
||||||
use material, only: &
|
use material, only: &
|
||||||
mappingConstitutive, &
|
mappingConstitutive, &
|
||||||
phase_vacancyInstance
|
phase_vacancyInstance
|
||||||
|
|
Loading…
Reference in New Issue