parent
811883df28
commit
bc4b79a3a2
|
@ -1110,34 +1110,41 @@ subroutine constitutive_results()
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
integer :: p
|
integer :: p
|
||||||
call HDF5_closeGroup(results_addGroup('current/phase'))
|
character(len=256) :: group
|
||||||
do p=1,size(config_name_phase)
|
character(len=16) :: i
|
||||||
call HDF5_closeGroup(results_addGroup('current/phase/'//trim(config_name_phase(p))))
|
|
||||||
|
|
||||||
|
call HDF5_closeGroup(results_addGroup('current/constitutive'))
|
||||||
|
|
||||||
|
do p=1,size(config_name_phase)
|
||||||
|
write(i,('(i2.2)')) p ! allow 99 groups
|
||||||
|
group = trim('current/constitutive')//'/'//trim(i)//'_'//trim(config_name_phase(p))
|
||||||
|
call HDF5_closeGroup(results_addGroup(group))
|
||||||
|
|
||||||
|
group = trim(group)//'/'//'plastic'
|
||||||
|
|
||||||
|
call HDF5_closeGroup(results_addGroup(group))
|
||||||
select case(material_phase_plasticity_type(p))
|
select case(material_phase_plasticity_type(p))
|
||||||
|
|
||||||
case(PLASTICITY_ISOTROPIC_ID)
|
case(PLASTICITY_ISOTROPIC_ID)
|
||||||
call plastic_isotropic_results(phase_plasticityInstance(p),'current/phase/'//trim(config_name_phase(p)))
|
call plastic_isotropic_results(phase_plasticityInstance(p),group)
|
||||||
|
|
||||||
case(PLASTICITY_PHENOPOWERLAW_ID)
|
case(PLASTICITY_PHENOPOWERLAW_ID)
|
||||||
call plastic_phenopowerlaw_results(phase_plasticityInstance(p),'current/phase/'//trim(config_name_phase(p)))
|
call plastic_phenopowerlaw_results(phase_plasticityInstance(p),group)
|
||||||
|
|
||||||
case(PLASTICITY_KINEHARDENING_ID)
|
case(PLASTICITY_KINEHARDENING_ID)
|
||||||
call plastic_kinehardening_results(phase_plasticityInstance(p),'current/phase/'//trim(config_name_phase(p)))
|
call plastic_kinehardening_results(phase_plasticityInstance(p),group)
|
||||||
|
|
||||||
case(PLASTICITY_DISLOTWIN_ID)
|
case(PLASTICITY_DISLOTWIN_ID)
|
||||||
call plastic_dislotwin_results(phase_plasticityInstance(p),'current/phase/'//trim(config_name_phase(p)))
|
call plastic_dislotwin_results(phase_plasticityInstance(p),group)
|
||||||
|
|
||||||
case(PLASTICITY_DISLOUCLA_ID)
|
case(PLASTICITY_DISLOUCLA_ID)
|
||||||
call plastic_disloUCLA_results(phase_plasticityInstance(p),'current/phase/'//trim(config_name_phase(p)))
|
call plastic_disloUCLA_results(phase_plasticityInstance(p),group)
|
||||||
|
|
||||||
case(PLASTICITY_NONLOCAL_ID)
|
|
||||||
call plastic_nonlocal_results(phase_plasticityInstance(p),'current/phase/'//trim(config_name_phase(p)))
|
|
||||||
|
|
||||||
|
case(PLASTICITY_NONLOCAL_ID)
|
||||||
|
call plastic_nonlocal_results(phase_plasticityInstance(p),group)
|
||||||
end select
|
end select
|
||||||
|
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -574,10 +574,10 @@ subroutine plastic_disloUCLA_results(instance,group)
|
||||||
select case(prm%outputID(o))
|
select case(prm%outputID(o))
|
||||||
case (rho_mob_ID)
|
case (rho_mob_ID)
|
||||||
call results_writeDataset(group,stt%rho_mob,'rho_mob',&
|
call results_writeDataset(group,stt%rho_mob,'rho_mob',&
|
||||||
'mobile dislocation density','1/m^2')
|
'mobile dislocation density','1/m²')
|
||||||
case (rho_dip_ID)
|
case (rho_dip_ID)
|
||||||
call results_writeDataset(group,stt%rho_dip,'rho_dip',&
|
call results_writeDataset(group,stt%rho_dip,'rho_dip',&
|
||||||
'dislocation dipole density''1/m^2')
|
'dislocation dipole density''1/m²')
|
||||||
case (dot_gamma_sl_ID)
|
case (dot_gamma_sl_ID)
|
||||||
call results_writeDataset(group,stt%gamma_sl,'dot_gamma_sl',&
|
call results_writeDataset(group,stt%gamma_sl,'dot_gamma_sl',&
|
||||||
'plastic slip','1')
|
'plastic slip','1')
|
||||||
|
|
|
@ -148,7 +148,7 @@ module plastic_dislotwin
|
||||||
type(tDislotwinState), allocatable, dimension(:), private :: &
|
type(tDislotwinState), allocatable, dimension(:), private :: &
|
||||||
dotState, &
|
dotState, &
|
||||||
state
|
state
|
||||||
type(tDislotwinMicrostructure), allocatable, dimension(:), private :: microstructure
|
type(tDislotwinMicrostructure), allocatable, dimension(:), private :: dependentState
|
||||||
|
|
||||||
public :: &
|
public :: &
|
||||||
plastic_dislotwin_init, &
|
plastic_dislotwin_init, &
|
||||||
|
@ -241,14 +241,14 @@ subroutine plastic_dislotwin_init
|
||||||
allocate(param(Ninstance))
|
allocate(param(Ninstance))
|
||||||
allocate(state(Ninstance))
|
allocate(state(Ninstance))
|
||||||
allocate(dotState(Ninstance))
|
allocate(dotState(Ninstance))
|
||||||
allocate(microstructure(Ninstance))
|
allocate(dependentState(Ninstance))
|
||||||
|
|
||||||
do p = 1, size(phase_plasticity)
|
do p = 1, size(phase_plasticity)
|
||||||
if (phase_plasticity(p) /= PLASTICITY_DISLOTWIN_ID) cycle
|
if (phase_plasticity(p) /= PLASTICITY_DISLOTWIN_ID) cycle
|
||||||
associate(prm => param(phase_plasticityInstance(p)), &
|
associate(prm => param(phase_plasticityInstance(p)), &
|
||||||
dot => dotState(phase_plasticityInstance(p)), &
|
dot => dotState(phase_plasticityInstance(p)), &
|
||||||
stt => state(phase_plasticityInstance(p)), &
|
stt => state(phase_plasticityInstance(p)), &
|
||||||
dst => microstructure(phase_plasticityInstance(p)), &
|
dst => dependentState(phase_plasticityInstance(p)), &
|
||||||
config => config_phase(p))
|
config => config_phase(p))
|
||||||
|
|
||||||
prm%aTol_rho = config%getFloat('atol_rho', defaultVal=0.0_pReal)
|
prm%aTol_rho = config%getFloat('atol_rho', defaultVal=0.0_pReal)
|
||||||
|
@ -801,7 +801,7 @@ subroutine plastic_dislotwin_dotState(Mp,T,instance,of)
|
||||||
dot_gamma_tr
|
dot_gamma_tr
|
||||||
|
|
||||||
associate(prm => param(instance), stt => state(instance), &
|
associate(prm => param(instance), stt => state(instance), &
|
||||||
dot => dotstate(instance), dst => microstructure(instance))
|
dot => dotstate(instance), dst => dependentState(instance))
|
||||||
|
|
||||||
f_unrotated = 1.0_pReal &
|
f_unrotated = 1.0_pReal &
|
||||||
- sum(stt%f_tw(1:prm%sum_N_tw,of)) &
|
- sum(stt%f_tw(1:prm%sum_N_tw,of)) &
|
||||||
|
@ -897,7 +897,7 @@ subroutine plastic_dislotwin_dependentState(T,instance,of)
|
||||||
|
|
||||||
associate(prm => param(instance),&
|
associate(prm => param(instance),&
|
||||||
stt => state(instance),&
|
stt => state(instance),&
|
||||||
dst => microstructure(instance))
|
dst => dependentState(instance))
|
||||||
|
|
||||||
sumf_twin = sum(stt%f_tw(1:prm%sum_N_tw,of))
|
sumf_twin = sum(stt%f_tw(1:prm%sum_N_tw,of))
|
||||||
sumf_trans = sum(stt%f_tr(1:prm%sum_N_tr,of))
|
sumf_trans = sum(stt%f_tr(1:prm%sum_N_tr,of))
|
||||||
|
@ -1002,7 +1002,7 @@ function plastic_dislotwin_postResults(Mp,T,instance,of) result(postResults)
|
||||||
integer :: &
|
integer :: &
|
||||||
o,c,j
|
o,c,j
|
||||||
|
|
||||||
associate(prm => param(instance), stt => state(instance), dst => microstructure(instance))
|
associate(prm => param(instance), stt => state(instance), dst => dependentState(instance))
|
||||||
|
|
||||||
c = 0
|
c = 0
|
||||||
|
|
||||||
|
@ -1063,7 +1063,7 @@ end function plastic_dislotwin_postResults
|
||||||
!> @brief writes results to HDF5 output file
|
!> @brief writes results to HDF5 output file
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_dislotwin_results(instance,group)
|
subroutine plastic_dislotwin_results(instance,group)
|
||||||
#if defined(PETSc) || defined(DAMASKHDF5)
|
#if defined(PETSc) || defined(DAMASK_HDF5)
|
||||||
use results
|
use results
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -1071,12 +1071,44 @@ subroutine plastic_dislotwin_results(instance,group)
|
||||||
character(len=*) :: group
|
character(len=*) :: group
|
||||||
integer :: o
|
integer :: o
|
||||||
|
|
||||||
associate(prm => param(instance), stt => state(instance))
|
associate(prm => param(instance), stt => state(instance), dst => dependentState(instance))
|
||||||
outputsLoop: do o = 1,size(prm%outputID)
|
outputsLoop: do o = 1,size(prm%outputID)
|
||||||
select case(prm%outputID(o))
|
select case(prm%outputID(o))
|
||||||
|
|
||||||
|
case (rho_mob_ID)
|
||||||
|
call results_writeDataset(group,stt%rho_mob,'rho_mob',&
|
||||||
|
'mobile dislocation density','1/m²')
|
||||||
|
case (rho_dip_ID)
|
||||||
|
call results_writeDataset(group,stt%rho_dip,'rho_dip',&
|
||||||
|
'dislocation dipole density''1/m²')
|
||||||
|
case (dot_gamma_sl_ID)
|
||||||
|
call results_writeDataset(group,stt%gamma_sl,'dot_gamma_sl',&
|
||||||
|
'plastic slip','1')
|
||||||
|
case (Lambda_sl_ID)
|
||||||
|
call results_writeDataset(group,dst%Lambda_sl,'Lambda_sl',&
|
||||||
|
'mean free path for slip','m')
|
||||||
|
case (threshold_stress_slip_ID)
|
||||||
|
call results_writeDataset(group,dst%tau_pass,'tau_pass',&
|
||||||
|
'passing stress for slip','Pa')
|
||||||
|
|
||||||
|
case (f_tw_ID)
|
||||||
|
call results_writeDataset(group,stt%f_tw,'f_tw',&
|
||||||
|
'twinned volume fraction','m³/m³')
|
||||||
|
case (Lambda_tw_ID)
|
||||||
|
call results_writeDataset(group,dst%Lambda_tw,'Lambda_tw',&
|
||||||
|
'mean free path for twinning','m')
|
||||||
|
case (tau_hat_tw_ID)
|
||||||
|
call results_writeDataset(group,dst%tau_hat_tw,'tau_hat_tw',&
|
||||||
|
'threshold stress for twinnin','Pa')
|
||||||
|
|
||||||
|
case (f_tr_ID)
|
||||||
|
call results_writeDataset(group,stt%f_tr,'f_tr',&
|
||||||
|
'martensite volume fraction','m³/m³')
|
||||||
|
|
||||||
end select
|
end select
|
||||||
enddo outputsLoop
|
enddo outputsLoop
|
||||||
end associate
|
end associate
|
||||||
|
|
||||||
#else
|
#else
|
||||||
integer, intent(in) :: instance
|
integer, intent(in) :: instance
|
||||||
character(len=*) :: group
|
character(len=*) :: group
|
||||||
|
@ -1130,7 +1162,7 @@ pure subroutine kinetics_slip(Mp,T,instance,of, &
|
||||||
tau_eff !< effective resolved stress
|
tau_eff !< effective resolved stress
|
||||||
integer :: i
|
integer :: i
|
||||||
|
|
||||||
associate(prm => param(instance), stt => state(instance), dst => microstructure(instance))
|
associate(prm => param(instance), stt => state(instance), dst => dependentState(instance))
|
||||||
|
|
||||||
do i = 1, prm%sum_N_sl
|
do i = 1, prm%sum_N_sl
|
||||||
tau(i) = math_mul33xx33(Mp,prm%P_sl(1:3,1:3,i))
|
tau(i) = math_mul33xx33(Mp,prm%P_sl(1:3,1:3,i))
|
||||||
|
@ -1203,7 +1235,7 @@ pure subroutine kinetics_twin(Mp,T,dot_gamma_sl,instance,of,&
|
||||||
|
|
||||||
integer :: i,s1,s2
|
integer :: i,s1,s2
|
||||||
|
|
||||||
associate(prm => param(instance), stt => state(instance), dst => microstructure(instance))
|
associate(prm => param(instance), stt => state(instance), dst => dependentState(instance))
|
||||||
|
|
||||||
do i = 1, prm%sum_N_tw
|
do i = 1, prm%sum_N_tw
|
||||||
tau(i) = math_mul33xx33(Mp,prm%P_tw(1:3,1:3,i))
|
tau(i) = math_mul33xx33(Mp,prm%P_tw(1:3,1:3,i))
|
||||||
|
@ -1275,7 +1307,7 @@ pure subroutine kinetics_trans(Mp,T,dot_gamma_sl,instance,of,&
|
||||||
|
|
||||||
integer :: i,s1,s2
|
integer :: i,s1,s2
|
||||||
|
|
||||||
associate(prm => param(instance), stt => state(instance), dst => microstructure(instance))
|
associate(prm => param(instance), stt => state(instance), dst => dependentState(instance))
|
||||||
|
|
||||||
do i = 1, prm%sum_N_tr
|
do i = 1, prm%sum_N_tr
|
||||||
tau(i) = math_mul33xx33(Mp,prm%P_tr(1:3,1:3,i))
|
tau(i) = math_mul33xx33(Mp,prm%P_tr(1:3,1:3,i))
|
||||||
|
|
|
@ -550,7 +550,7 @@ end function plastic_kinehardening_postResults
|
||||||
!> @brief writes results to HDF5 output file
|
!> @brief writes results to HDF5 output file
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_kinehardening_results(instance,group)
|
subroutine plastic_kinehardening_results(instance,group)
|
||||||
#if defined(PETSc) || defined(DAMASKHDF5)
|
#if defined(PETSc) || defined(DAMASK_HDF5)
|
||||||
use results
|
use results
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
|
|
@ -2402,7 +2402,7 @@ end function getRho
|
||||||
!> @brief writes results to HDF5 output file
|
!> @brief writes results to HDF5 output file
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_nonlocal_results(instance,group)
|
subroutine plastic_nonlocal_results(instance,group)
|
||||||
#if defined(PETSc) || defined(DAMASKHDF5)
|
#if defined(PETSc) || defined(DAMASK_HDF5)
|
||||||
use results
|
use results
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
|
|
@ -575,6 +575,7 @@ subroutine plastic_phenopowerlaw_results(instance,group)
|
||||||
associate(prm => param(instance), stt => state(instance))
|
associate(prm => param(instance), stt => state(instance))
|
||||||
outputsLoop: do o = 1,size(prm%outputID)
|
outputsLoop: do o = 1,size(prm%outputID)
|
||||||
select case(prm%outputID(o))
|
select case(prm%outputID(o))
|
||||||
|
|
||||||
case (resistance_slip_ID)
|
case (resistance_slip_ID)
|
||||||
call results_writeDataset(group,stt%xi_slip, 'xi_slip', &
|
call results_writeDataset(group,stt%xi_slip, 'xi_slip', &
|
||||||
'resistance against plastic slip','Pa')
|
'resistance against plastic slip','Pa')
|
||||||
|
|
Loading…
Reference in New Issue