no need for enums
they just complicate the code, any performance gain should be negligible
This commit is contained in:
parent
486385978c
commit
8d6c82e704
|
@ -10,17 +10,6 @@ submodule(constitutive) plastic_disloUCLA
|
||||||
real(pReal), parameter :: &
|
real(pReal), parameter :: &
|
||||||
kB = 1.38e-23_pReal !< Boltzmann constant in J/Kelvin
|
kB = 1.38e-23_pReal !< Boltzmann constant in J/Kelvin
|
||||||
|
|
||||||
enum, bind(c)
|
|
||||||
enumerator :: &
|
|
||||||
undefined_ID, &
|
|
||||||
rho_mob_ID, &
|
|
||||||
rho_dip_ID, &
|
|
||||||
dot_gamma_sl_ID, &
|
|
||||||
gamma_sl_ID, &
|
|
||||||
Lambda_sl_ID, &
|
|
||||||
tau_pass_ID
|
|
||||||
end enum
|
|
||||||
|
|
||||||
type :: tParameters
|
type :: tParameters
|
||||||
real(pReal) :: &
|
real(pReal) :: &
|
||||||
aTol_rho, &
|
aTol_rho, &
|
||||||
|
@ -28,7 +17,7 @@ submodule(constitutive) plastic_disloUCLA
|
||||||
mu, &
|
mu, &
|
||||||
D_0, & !< prefactor for self-diffusion coefficient
|
D_0, & !< prefactor for self-diffusion coefficient
|
||||||
Q_cl !< activation energy for dislocation climb
|
Q_cl !< activation energy for dislocation climb
|
||||||
real(pReal), dimension(:), allocatable :: &
|
real(pReal), allocatable, dimension(:) :: &
|
||||||
rho_mob_0, & !< initial dislocation density
|
rho_mob_0, & !< initial dislocation density
|
||||||
rho_dip_0, & !< initial dipole density
|
rho_dip_0, & !< initial dipole density
|
||||||
b_sl, & !< magnitude of burgers vector [m]
|
b_sl, & !< magnitude of burgers vector [m]
|
||||||
|
@ -46,19 +35,19 @@ submodule(constitutive) plastic_disloUCLA
|
||||||
kink_height, & !< height of the kink pair
|
kink_height, & !< height of the kink pair
|
||||||
w, & !< width of the kink pair
|
w, & !< width of the kink pair
|
||||||
omega !< attempt frequency for kink pair nucleation
|
omega !< attempt frequency for kink pair nucleation
|
||||||
real(pReal), dimension(:,:), allocatable :: &
|
real(pReal), allocatable, dimension(:,:) :: &
|
||||||
h_sl_sl, & !< slip resistance from slip activity
|
h_sl_sl, & !< slip resistance from slip activity
|
||||||
forestProjectionEdge
|
forestProjectionEdge
|
||||||
real(pReal), dimension(:,:,:), allocatable :: &
|
real(pReal), allocatable, dimension(:,:,:) :: &
|
||||||
Schmid, &
|
Schmid, &
|
||||||
nonSchmid_pos, &
|
nonSchmid_pos, &
|
||||||
nonSchmid_neg
|
nonSchmid_neg
|
||||||
integer :: &
|
integer :: &
|
||||||
sum_N_sl !< total number of active slip system
|
sum_N_sl !< total number of active slip system
|
||||||
integer, dimension(:), allocatable :: &
|
integer, allocatable, dimension(:) :: &
|
||||||
N_sl !< number of active slip systems for each family
|
N_sl !< number of active slip systems for each family
|
||||||
integer(kind(undefined_ID)), dimension(:),allocatable :: &
|
character(len=pStringLen), allocatable, dimension(:) :: &
|
||||||
outputID !< ID of each post result output
|
output
|
||||||
logical :: &
|
logical :: &
|
||||||
dipoleFormation !< flag indicating consideration of dipole formation
|
dipoleFormation !< flag indicating consideration of dipole formation
|
||||||
end type !< container type for internal constitutive parameters
|
end type !< container type for internal constitutive parameters
|
||||||
|
@ -88,7 +77,7 @@ contains
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief module initialization
|
!> @brief Perform module initialization.
|
||||||
!> @details reads in material parameters, allocates arrays, and does sanity checks
|
!> @details reads in material parameters, allocates arrays, and does sanity checks
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module subroutine plastic_disloUCLA_init
|
module subroutine plastic_disloUCLA_init
|
||||||
|
@ -100,15 +89,10 @@ module subroutine plastic_disloUCLA_init
|
||||||
sizeState, sizeDotState, &
|
sizeState, sizeDotState, &
|
||||||
startIndex, endIndex
|
startIndex, endIndex
|
||||||
|
|
||||||
integer(kind(undefined_ID)) :: &
|
|
||||||
outputID
|
|
||||||
|
|
||||||
character(len=pStringLen) :: &
|
character(len=pStringLen) :: &
|
||||||
extmsg = ''
|
extmsg = ''
|
||||||
character(len=pStringLen), dimension(:), allocatable :: &
|
|
||||||
outputs
|
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- plastic_'//PLASTICITY_DISLOUCLA_label//' init -+>>>'
|
write(6,'(/,a)') ' <<<+- plastic_'//PLASTICITY_DISLOUCLA_label//' init -+>>>'; flush(6)
|
||||||
|
|
||||||
write(6,'(/,a)') ' Cereceda et al., International Journal of Plasticity 78:242–256, 2016'
|
write(6,'(/,a)') ' Cereceda et al., International Journal of Plasticity 78:242–256, 2016'
|
||||||
write(6,'(a)') ' https://dx.doi.org/10.1016/j.ijplas.2015.09.002'
|
write(6,'(a)') ' https://dx.doi.org/10.1016/j.ijplas.2015.09.002'
|
||||||
|
@ -232,32 +216,7 @@ module subroutine plastic_disloUCLA_init
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! output pararameters
|
! output pararameters
|
||||||
outputs = config%getStrings('(output)',defaultVal=emptyStringArray)
|
prm%output = config%getStrings('(output)',defaultVal=emptyStringArray)
|
||||||
allocate(prm%outputID(0))
|
|
||||||
do i=1, size(outputs)
|
|
||||||
outputID = undefined_ID
|
|
||||||
select case(trim(outputs(i)))
|
|
||||||
|
|
||||||
case ('edge_density')
|
|
||||||
outputID = merge(rho_mob_ID,undefined_ID,prm%sum_N_sl>0)
|
|
||||||
case ('dipole_density')
|
|
||||||
outputID = merge(rho_dip_ID,undefined_ID,prm%sum_N_sl>0)
|
|
||||||
case ('shear_rate','shearrate','shear_rate_slip','shearrate_slip')
|
|
||||||
outputID = merge(dot_gamma_sl_ID,undefined_ID,prm%sum_N_sl>0)
|
|
||||||
case ('accumulated_shear','accumulatedshear','accumulated_shear_slip')
|
|
||||||
outputID = merge(gamma_sl_ID,undefined_ID,prm%sum_N_sl>0)
|
|
||||||
case ('mfp','mfp_slip')
|
|
||||||
outputID = merge(Lambda_sl_ID,undefined_ID,prm%sum_N_sl>0)
|
|
||||||
case ('threshold_stress','threshold_stress_slip')
|
|
||||||
outputID = merge(tau_pass_ID,undefined_ID,prm%sum_N_sl>0)
|
|
||||||
|
|
||||||
end select
|
|
||||||
|
|
||||||
if (outputID /= undefined_ID) then
|
|
||||||
prm%outputID = [prm%outputID, outputID]
|
|
||||||
endif
|
|
||||||
|
|
||||||
enddo
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! allocate state arrays
|
! allocate state arrays
|
||||||
|
@ -304,7 +263,7 @@ end subroutine plastic_disloUCLA_init
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates plastic velocity gradient and its tangent
|
!> @brief Calculate plastic velocity gradient and its tangent.
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
pure module subroutine plastic_disloUCLA_LpAndItsTangent(Lp,dLp_dMp, &
|
pure module subroutine plastic_disloUCLA_LpAndItsTangent(Lp,dLp_dMp, &
|
||||||
Mp,T,instance,of)
|
Mp,T,instance,of)
|
||||||
|
@ -347,7 +306,7 @@ end subroutine plastic_disloUCLA_LpAndItsTangent
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates the rate of change of microstructure
|
!> @brief Calculate the rate of change of microstructure.
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module subroutine plastic_disloUCLA_dotState(Mp,T,instance,of)
|
module subroutine plastic_disloUCLA_dotState(Mp,T,instance,of)
|
||||||
|
|
||||||
|
@ -407,7 +366,7 @@ end subroutine plastic_disloUCLA_dotState
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates derived quantities from state
|
!> @brief Calculate derived quantities from state.
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module subroutine plastic_disloUCLA_dependentState(instance,of)
|
module subroutine plastic_disloUCLA_dependentState(instance,of)
|
||||||
|
|
||||||
|
@ -433,7 +392,7 @@ end subroutine plastic_disloUCLA_dependentState
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief writes results to HDF5 output file
|
!> @brief Write results to HDF5 output file.
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module subroutine plastic_disloUCLA_results(instance,group)
|
module subroutine plastic_disloUCLA_results(instance,group)
|
||||||
|
|
||||||
|
@ -443,22 +402,22 @@ module subroutine plastic_disloUCLA_results(instance,group)
|
||||||
integer :: o
|
integer :: o
|
||||||
|
|
||||||
associate(prm => param(instance), stt => state(instance), dst => dependentState(instance))
|
associate(prm => param(instance), stt => state(instance), dst => dependentState(instance))
|
||||||
outputsLoop: do o = 1,size(prm%outputID)
|
outputsLoop: do o = 1,size(prm%output)
|
||||||
select case(prm%outputID(o))
|
select case(trim(prm%output(o)))
|
||||||
case (rho_mob_ID)
|
case('edge_density') ! ToDo: should be rho_mob
|
||||||
call results_writeDataset(group,stt%rho_mob,'rho_mob',&
|
if(prm%sum_N_sl>0) call results_writeDataset(group,stt%rho_mob,'rho_mob',&
|
||||||
'mobile dislocation density','1/m²')
|
'mobile dislocation density','1/m²')
|
||||||
case (rho_dip_ID)
|
case('dipole_density') ! ToDo: should be rho_dip
|
||||||
call results_writeDataset(group,stt%rho_dip,'rho_dip',&
|
if(prm%sum_N_sl>0) call results_writeDataset(group,stt%rho_dip,'rho_dip',&
|
||||||
'dislocation dipole density''1/m²')
|
'dislocation dipole density''1/m²')
|
||||||
case (dot_gamma_sl_ID)
|
case('shear_rate_slip') ! should be gamma
|
||||||
call results_writeDataset(group,stt%gamma_sl,'dot_gamma_sl',& ! this is not dot!!
|
if(prm%sum_N_sl>0) call results_writeDataset(group,stt%gamma_sl,'dot_gamma_sl',& ! this is not dot!!
|
||||||
'plastic shear','1')
|
'plastic shear','1')
|
||||||
case (Lambda_sl_ID)
|
case('mfp_slip') !ToDo: should be Lambda
|
||||||
call results_writeDataset(group,dst%Lambda_sl,'Lambda_sl',&
|
if(prm%sum_N_sl>0) call results_writeDataset(group,dst%Lambda_sl,'Lambda_sl',&
|
||||||
'mean free path for slip','m')
|
'mean free path for slip','m')
|
||||||
case (tau_pass_ID)
|
case('threshold_stress_slip') !ToDo: should be tau_pass
|
||||||
call results_writeDataset(group,dst%threshold_stress,'tau_pass',&
|
if(prm%sum_N_sl>0) call results_writeDataset(group,dst%threshold_stress,'tau_pass',&
|
||||||
'threshold stress for slip','Pa')
|
'threshold stress for slip','Pa')
|
||||||
end select
|
end select
|
||||||
enddo outputsLoop
|
enddo outputsLoop
|
||||||
|
@ -468,8 +427,8 @@ end subroutine plastic_disloUCLA_results
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Shear rates on slip systems, their derivatives with respect to resolved stress and the
|
!> @brief Calculate shear rates on slip systems, their derivatives with respect to resolved
|
||||||
! resolved stresss
|
! stress, and the resolved stress.
|
||||||
!> @details Derivatives and resolved stress are calculated only optionally.
|
!> @details Derivatives and resolved stress are calculated only optionally.
|
||||||
! NOTE: Against the common convention, the result (i.e. intent(out)) variables are the last to
|
! NOTE: Against the common convention, the result (i.e. intent(out)) variables are the last to
|
||||||
! have the optional arguments at the end
|
! have the optional arguments at the end
|
||||||
|
|
|
@ -19,7 +19,7 @@ module subroutine plastic_none_init
|
||||||
p, &
|
p, &
|
||||||
NipcMyPhase
|
NipcMyPhase
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- plastic_'//PLASTICITY_NONE_label//' init -+>>>'
|
write(6,'(/,a)') ' <<<+- plastic_'//PLASTICITY_NONE_label//' init -+>>>'; flush(6)
|
||||||
|
|
||||||
Ninstance = count(phase_plasticity == PLASTICITY_NONE_ID)
|
Ninstance = count(phase_plasticity == PLASTICITY_NONE_ID)
|
||||||
if (iand(debug_level(debug_constitutive),debug_levelBasic) /= 0) &
|
if (iand(debug_level(debug_constitutive),debug_levelBasic) /= 0) &
|
||||||
|
|
|
@ -416,7 +416,7 @@ end subroutine plastic_phenopowerlaw_results
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Calculate shear rates on slip systems and their derivatives with respect to resolved.
|
!> @brief Calculate shear rates on slip systems and their derivatives with respect to resolved
|
||||||
! stress.
|
! stress.
|
||||||
!> @details Derivatives are calculated only optionally.
|
!> @details Derivatives are calculated only optionally.
|
||||||
! NOTE: Against the common convention, the result (i.e. intent(out)) variables are the last to
|
! NOTE: Against the common convention, the result (i.e. intent(out)) variables are the last to
|
||||||
|
|
Loading…
Reference in New Issue