merged current development branch
This commit is contained in:
commit
6d0ec28984
|
@ -79,7 +79,7 @@ ls $PETSC_DIR/lib
|
||||||
|
|
||||||
firstLevel "Python"
|
firstLevel "Python"
|
||||||
DEFAULT_PYTHON=python3
|
DEFAULT_PYTHON=python3
|
||||||
for executable in python python2 python3 python2.7; do
|
for executable in python python3; do
|
||||||
getDetails $executable '--version'
|
getDetails $executable '--version'
|
||||||
done
|
done
|
||||||
secondLevel "Details on $DEFAULT_PYTHON:"
|
secondLevel "Details on $DEFAULT_PYTHON:"
|
||||||
|
@ -119,6 +119,9 @@ for executable in mpirun mpiexec; do
|
||||||
getDetails $executable '--version'
|
getDetails $executable '--version'
|
||||||
done
|
done
|
||||||
|
|
||||||
|
firstLevel "CMake"
|
||||||
|
getDetails cmake --version
|
||||||
|
|
||||||
firstLevel "Abaqus"
|
firstLevel "Abaqus"
|
||||||
cd installation/mods_Abaqus # to have the right environment file
|
cd installation/mods_Abaqus # to have the right environment file
|
||||||
for executable in abaqus abq2017 abq2018; do
|
for executable in abaqus abq2017 abq2018; do
|
||||||
|
|
2
PRIVATE
2
PRIVATE
|
@ -1 +1 @@
|
||||||
Subproject commit e3dac27b709d7fb3630bbd75271b220827221492
|
Subproject commit 58137906b84b6cf0e273dfdde623a2986d03f98e
|
|
@ -6,7 +6,6 @@ plasticity phenopowerlaw
|
||||||
(output) shearrate_slip
|
(output) shearrate_slip
|
||||||
(output) resolvedstress_slip
|
(output) resolvedstress_slip
|
||||||
(output) accumulated_shear_slip
|
(output) accumulated_shear_slip
|
||||||
(output) totalshear
|
|
||||||
|
|
||||||
lattice_structure fcc
|
lattice_structure fcc
|
||||||
Nslip 12 # per family
|
Nslip 12 # per family
|
||||||
|
|
|
@ -19,4 +19,3 @@ tausat_slip 222.e6 412.7e6 # per family, optimization long
|
||||||
h0_slipslip 1000.0e6
|
h0_slipslip 1000.0e6
|
||||||
interaction_slipslip 1 1 1.4 1.4 1.4 1.4
|
interaction_slipslip 1 1 1.4 1.4 1.4 1.4
|
||||||
w0_slip 2.0
|
w0_slip 2.0
|
||||||
(output) totalshear
|
|
||||||
|
|
|
@ -19,4 +19,3 @@ tausat_slip 872.9e6 971.2e6 # per family
|
||||||
h0_slipslip 563.0e9
|
h0_slipslip 563.0e9
|
||||||
interaction_slipslip 1 1 1.4 1.4 1.4 1.4
|
interaction_slipslip 1 1 1.4 1.4 1.4 1.4
|
||||||
a_slip 2.0
|
a_slip 2.0
|
||||||
(output) totalshear
|
|
||||||
|
|
|
@ -14,11 +14,9 @@ plasticity phenopowerlaw
|
||||||
(output) resistance_slip
|
(output) resistance_slip
|
||||||
(output) shearrate_slip
|
(output) shearrate_slip
|
||||||
(output) resolvedstress_slip
|
(output) resolvedstress_slip
|
||||||
(output) totalshear
|
|
||||||
(output) resistance_twin
|
(output) resistance_twin
|
||||||
(output) shearrate_twin
|
(output) shearrate_twin
|
||||||
(output) resolvedstress_twin
|
(output) resolvedstress_twin
|
||||||
(output) totalvolfrac_twin
|
|
||||||
|
|
||||||
lattice_structure fcc
|
lattice_structure fcc
|
||||||
Nslip 12 # per family
|
Nslip 12 # per family
|
||||||
|
|
|
@ -9,11 +9,9 @@ elasticity hooke
|
||||||
(output) resistance_slip
|
(output) resistance_slip
|
||||||
(output) shearrate_slip
|
(output) shearrate_slip
|
||||||
(output) resolvedstress_slip
|
(output) resolvedstress_slip
|
||||||
(output) totalshear
|
|
||||||
(output) resistance_twin
|
(output) resistance_twin
|
||||||
(output) shearrate_twin
|
(output) shearrate_twin
|
||||||
(output) resolvedstress_twin
|
(output) resolvedstress_twin
|
||||||
(output) totalvolfrac_twin
|
|
||||||
|
|
||||||
lattice_structure hex
|
lattice_structure hex
|
||||||
covera_ratio 1.62350 # from Tromans 2011, Elastic Anisotropy of HCP Metal Crystals and Polycrystals
|
covera_ratio 1.62350 # from Tromans 2011, Elastic Anisotropy of HCP Metal Crystals and Polycrystals
|
||||||
|
|
|
@ -5,11 +5,9 @@ elasticity hooke
|
||||||
# (output) resistance_slip
|
# (output) resistance_slip
|
||||||
# (output) shearrate_slip
|
# (output) shearrate_slip
|
||||||
# (output) resolvedstress_slip
|
# (output) resolvedstress_slip
|
||||||
# (output) totalshear
|
|
||||||
# (output) resistance_twin
|
# (output) resistance_twin
|
||||||
# (output) shearrate_twin
|
# (output) shearrate_twin
|
||||||
# (output) resolvedstress_twin
|
# (output) resolvedstress_twin
|
||||||
# (output) totalvolfrac_twin
|
|
||||||
|
|
||||||
lattice_structure hex
|
lattice_structure hex
|
||||||
covera_ratio 1.587
|
covera_ratio 1.587
|
||||||
|
|
|
@ -6,12 +6,10 @@ plasticity phenopowerlaw
|
||||||
(output) shearrate_slip
|
(output) shearrate_slip
|
||||||
(output) resolvedstress_slip
|
(output) resolvedstress_slip
|
||||||
(output) accumulated_shear_slip
|
(output) accumulated_shear_slip
|
||||||
(output) totalshear
|
|
||||||
(output) resistance_twin
|
(output) resistance_twin
|
||||||
(output) shearrate_twin
|
(output) shearrate_twin
|
||||||
(output) resolvedstress_twin
|
(output) resolvedstress_twin
|
||||||
(output) accumulated_shear_twin
|
(output) accumulated_shear_twin
|
||||||
(output) totalvolfrac_twin
|
|
||||||
|
|
||||||
lattice_structure fcc
|
lattice_structure fcc
|
||||||
Nslip 12 # per family
|
Nslip 12 # per family
|
||||||
|
|
|
@ -24,12 +24,10 @@ module plastic_phenopowerlaw
|
||||||
accumulatedshear_slip_ID, &
|
accumulatedshear_slip_ID, &
|
||||||
shearrate_slip_ID, &
|
shearrate_slip_ID, &
|
||||||
resolvedstress_slip_ID, &
|
resolvedstress_slip_ID, &
|
||||||
totalshear_ID, &
|
|
||||||
resistance_twin_ID, &
|
resistance_twin_ID, &
|
||||||
accumulatedshear_twin_ID, &
|
accumulatedshear_twin_ID, &
|
||||||
shearrate_twin_ID, &
|
shearrate_twin_ID, &
|
||||||
resolvedstress_twin_ID, &
|
resolvedstress_twin_ID
|
||||||
totalvolfrac_twin_ID
|
|
||||||
end enum
|
end enum
|
||||||
|
|
||||||
type, private :: tParameters
|
type, private :: tParameters
|
||||||
|
@ -55,7 +53,7 @@ module plastic_phenopowerlaw
|
||||||
xi_twin_0, & !< initial critical shear stress for twin
|
xi_twin_0, & !< initial critical shear stress for twin
|
||||||
xi_slip_sat, & !< maximum critical shear stress for slip
|
xi_slip_sat, & !< maximum critical shear stress for slip
|
||||||
nonSchmidCoeff, &
|
nonSchmidCoeff, &
|
||||||
H_int, & !< per family hardening activity (optional) !ToDo: Better name!
|
H_int, & !< per family hardening activity (optional)
|
||||||
gamma_twin_char !< characteristic shear for twins
|
gamma_twin_char !< characteristic shear for twins
|
||||||
real(pReal), allocatable, dimension(:,:) :: &
|
real(pReal), allocatable, dimension(:,:) :: &
|
||||||
interaction_SlipSlip, & !< slip resistance from slip activity
|
interaction_SlipSlip, & !< slip resistance from slip activity
|
||||||
|
@ -80,9 +78,6 @@ module plastic_phenopowerlaw
|
||||||
type(tParameters), dimension(:), allocatable, private :: param !< containers of constitutive parameters (len Ninstance)
|
type(tParameters), dimension(:), allocatable, private :: param !< containers of constitutive parameters (len Ninstance)
|
||||||
|
|
||||||
type, private :: tPhenopowerlawState
|
type, private :: tPhenopowerlawState
|
||||||
real(pReal), pointer, dimension(:) :: &
|
|
||||||
sumGamma, & ! ToDo: why not make a dependent state?
|
|
||||||
sumF ! ToDo: why not make a dependent state?
|
|
||||||
real(pReal), pointer, dimension(:,:) :: &
|
real(pReal), pointer, dimension(:,:) :: &
|
||||||
xi_slip, &
|
xi_slip, &
|
||||||
xi_twin, &
|
xi_twin, &
|
||||||
|
@ -153,12 +148,6 @@ subroutine plastic_phenopowerlaw_init
|
||||||
real(pReal), dimension(0), parameter :: emptyRealArray = [real(pReal)::]
|
real(pReal), dimension(0), parameter :: emptyRealArray = [real(pReal)::]
|
||||||
character(len=65536), dimension(0), parameter :: emptyStringArray = [character(len=65536)::]
|
character(len=65536), dimension(0), parameter :: emptyStringArray = [character(len=65536)::]
|
||||||
|
|
||||||
type(tParameters) :: &
|
|
||||||
prm
|
|
||||||
type(tPhenopowerlawState) :: &
|
|
||||||
stt, &
|
|
||||||
dot
|
|
||||||
|
|
||||||
integer(kind(undefined_ID)) :: &
|
integer(kind(undefined_ID)) :: &
|
||||||
outputID !< ID of each post result output
|
outputID !< ID of each post result output
|
||||||
|
|
||||||
|
@ -283,6 +272,7 @@ subroutine plastic_phenopowerlaw_init
|
||||||
else twinActive
|
else twinActive
|
||||||
allocate(prm%interaction_TwinTwin(0,0))
|
allocate(prm%interaction_TwinTwin(0,0))
|
||||||
allocate(prm%xi_twin_0(0))
|
allocate(prm%xi_twin_0(0))
|
||||||
|
allocate(prm%gamma_twin_char(0))
|
||||||
endif twinActive
|
endif twinActive
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -338,12 +328,6 @@ subroutine plastic_phenopowerlaw_init
|
||||||
outputID = merge(resolvedstress_twin_ID,undefined_ID,prm%totalNtwin>0_pInt)
|
outputID = merge(resolvedstress_twin_ID,undefined_ID,prm%totalNtwin>0_pInt)
|
||||||
outputSize = prm%totalNtwin
|
outputSize = prm%totalNtwin
|
||||||
|
|
||||||
case ('totalshear')
|
|
||||||
outputID = merge(totalshear_ID,undefined_ID,prm%totalNslip>0_pInt)
|
|
||||||
outputSize = 1_pInt
|
|
||||||
case ('totalvolfrac_twin')
|
|
||||||
outputID = merge(totalvolfrac_twin_ID,undefined_ID,prm%totalNtwin>0_pInt)
|
|
||||||
outputSize = 1_pInt
|
|
||||||
end select
|
end select
|
||||||
|
|
||||||
if (outputID /= undefined_ID) then
|
if (outputID /= undefined_ID) then
|
||||||
|
@ -358,8 +342,7 @@ subroutine plastic_phenopowerlaw_init
|
||||||
! allocate state arrays
|
! allocate state arrays
|
||||||
NipcMyPhase = count(material_phase == p) ! number of IPCs containing my phase
|
NipcMyPhase = count(material_phase == p) ! number of IPCs containing my phase
|
||||||
sizeState = size(['tau_slip ','gamma_slip']) * prm%TotalNslip &
|
sizeState = size(['tau_slip ','gamma_slip']) * prm%TotalNslip &
|
||||||
+ size(['tau_twin ','gamma_twin']) * prm%TotalNtwin &
|
+ size(['tau_twin ','gamma_twin']) * prm%TotalNtwin
|
||||||
+ size(['sum(gamma)','sum(f) ']) ! ToDo: only needed if either twin or slip active!
|
|
||||||
sizeDotState = sizeState
|
sizeDotState = sizeState
|
||||||
|
|
||||||
call material_allocatePlasticState(p,NipcMyPhase,sizeState,sizeDotState,0_pInt, &
|
call material_allocatePlasticState(p,NipcMyPhase,sizeState,sizeDotState,0_pInt, &
|
||||||
|
@ -383,18 +366,6 @@ subroutine plastic_phenopowerlaw_init
|
||||||
dot%xi_twin => plasticState(p)%dotState(startIndex:endIndex,:)
|
dot%xi_twin => plasticState(p)%dotState(startIndex:endIndex,:)
|
||||||
plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolResistance
|
plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolResistance
|
||||||
|
|
||||||
startIndex = endIndex + 1_pInt
|
|
||||||
endIndex = endIndex + 1_pInt
|
|
||||||
stt%sumGamma => plasticState(p)%state (startIndex,:)
|
|
||||||
dot%sumGamma => plasticState(p)%dotState(startIndex,:)
|
|
||||||
plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolShear
|
|
||||||
|
|
||||||
startIndex = endIndex + 1_pInt
|
|
||||||
endIndex = endIndex + 1_pInt
|
|
||||||
stt%sumF=>plasticState(p)%state (startIndex,:)
|
|
||||||
dot%sumF=>plasticState(p)%dotState(startIndex,:)
|
|
||||||
plasticState(p)%aTolState(startIndex:endIndex) = prm%aTolTwinFrac
|
|
||||||
|
|
||||||
startIndex = endIndex + 1_pInt
|
startIndex = endIndex + 1_pInt
|
||||||
endIndex = endIndex + prm%totalNslip
|
endIndex = endIndex + prm%totalNslip
|
||||||
stt%gamma_slip => plasticState(p)%state (startIndex:endIndex,:)
|
stt%gamma_slip => plasticState(p)%state (startIndex:endIndex,:)
|
||||||
|
@ -421,6 +392,8 @@ end subroutine plastic_phenopowerlaw_init
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates plastic velocity gradient and its tangent
|
!> @brief calculates plastic velocity gradient and its tangent
|
||||||
|
!> @details asumme that deformation by dislocation glide affects twinned and untwinned volume
|
||||||
|
! equally (Taylor assumption). Twinning happens only in untwinned volume (
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
subroutine plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
||||||
|
|
||||||
|
@ -444,17 +417,14 @@ subroutine plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
||||||
real(pReal), dimension(param(instance)%totalNtwin) :: &
|
real(pReal), dimension(param(instance)%totalNtwin) :: &
|
||||||
gdot_twin,dgdot_dtautwin
|
gdot_twin,dgdot_dtautwin
|
||||||
|
|
||||||
type(tParameters) :: prm
|
|
||||||
type(tPhenopowerlawState) :: stt
|
|
||||||
|
|
||||||
associate(prm => param(instance), stt => state(instance))
|
|
||||||
|
|
||||||
Lp = 0.0_pReal
|
Lp = 0.0_pReal
|
||||||
dLp_dMp = 0.0_pReal
|
dLp_dMp = 0.0_pReal
|
||||||
|
|
||||||
|
associate(prm => param(instance), stt => state(instance))
|
||||||
|
|
||||||
call kinetics_slip(prm,stt,of,Mp,gdot_slip_pos,gdot_slip_neg,dgdot_dtauslip_pos,dgdot_dtauslip_neg)
|
call kinetics_slip(prm,stt,of,Mp,gdot_slip_pos,gdot_slip_neg,dgdot_dtauslip_pos,dgdot_dtauslip_neg)
|
||||||
slipSystems: do i = 1_pInt, prm%totalNslip
|
slipSystems: do i = 1_pInt, prm%totalNslip
|
||||||
Lp = Lp + (1.0_pReal-stt%sumF(of))*(gdot_slip_pos(i)+gdot_slip_neg(i))*prm%Schmid_slip(1:3,1:3,i)
|
Lp = Lp + (gdot_slip_pos(i)+gdot_slip_neg(i))*prm%Schmid_slip(1:3,1:3,i)
|
||||||
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt,m=1_pInt:3_pInt,n=1_pInt:3_pInt) &
|
forall (k=1_pInt:3_pInt,l=1_pInt:3_pInt,m=1_pInt:3_pInt,n=1_pInt:3_pInt) &
|
||||||
dLp_dMp(k,l,m,n) = dLp_dMp(k,l,m,n) &
|
dLp_dMp(k,l,m,n) = dLp_dMp(k,l,m,n) &
|
||||||
+ dgdot_dtauslip_pos(i) * prm%Schmid_slip(k,l,i) * prm%nonSchmid_pos(m,n,i) &
|
+ dgdot_dtauslip_pos(i) * prm%Schmid_slip(k,l,i) * prm%nonSchmid_pos(m,n,i) &
|
||||||
|
@ -468,8 +438,8 @@ subroutine plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
||||||
dLp_dMp(k,l,m,n) = dLp_dMp(k,l,m,n) &
|
dLp_dMp(k,l,m,n) = dLp_dMp(k,l,m,n) &
|
||||||
+ dgdot_dtautwin(i)*prm%Schmid_twin(k,l,i)*prm%Schmid_twin(m,n,i)
|
+ dgdot_dtautwin(i)*prm%Schmid_twin(k,l,i)*prm%Schmid_twin(m,n,i)
|
||||||
enddo twinSystems
|
enddo twinSystems
|
||||||
end associate
|
|
||||||
|
|
||||||
|
end associate
|
||||||
|
|
||||||
end subroutine plastic_phenopowerlaw_LpAndItsTangent
|
end subroutine plastic_phenopowerlaw_LpAndItsTangent
|
||||||
|
|
||||||
|
@ -490,29 +460,28 @@ subroutine plastic_phenopowerlaw_dotState(Mp,instance,of)
|
||||||
i
|
i
|
||||||
real(pReal) :: &
|
real(pReal) :: &
|
||||||
c_SlipSlip,c_TwinSlip,c_TwinTwin, &
|
c_SlipSlip,c_TwinSlip,c_TwinTwin, &
|
||||||
xi_slip_sat_offset
|
xi_slip_sat_offset,&
|
||||||
|
sumGamma,sumF
|
||||||
real(pReal), dimension(param(instance)%totalNslip) :: &
|
real(pReal), dimension(param(instance)%totalNslip) :: &
|
||||||
left_SlipSlip,right_SlipSlip, &
|
left_SlipSlip,right_SlipSlip, &
|
||||||
gdot_slip_pos,gdot_slip_neg
|
gdot_slip_pos,gdot_slip_neg
|
||||||
|
|
||||||
type(tParameters) :: prm
|
|
||||||
type(tPhenopowerlawState) :: dot,stt
|
|
||||||
|
|
||||||
associate(prm => param(instance), stt => state(instance), dot => dotState(instance))
|
associate(prm => param(instance), stt => state(instance), dot => dotState(instance))
|
||||||
|
|
||||||
dot%whole(:,of) = 0.0_pReal
|
dot%whole(:,of) = 0.0_pReal
|
||||||
|
sumGamma = sum(stt%gamma_slip(:,of))
|
||||||
|
sumF = sum(stt%gamma_twin(:,of)/prm%gamma_twin_char)
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! system-independent (nonlinear) prefactors to M_Xx (X influenced by x) matrices
|
! system-independent (nonlinear) prefactors to M_Xx (X influenced by x) matrices
|
||||||
c_SlipSlip = prm%h0_slipslip * (1.0_pReal + prm%twinC*stt%sumF(of)** prm%twinB)
|
c_SlipSlip = prm%h0_slipslip * (1.0_pReal + prm%twinC*sumF** prm%twinB)
|
||||||
c_TwinSlip = prm%h0_TwinSlip * stt%sumGamma(of)**prm%twinE
|
c_TwinSlip = prm%h0_TwinSlip * sumGamma**prm%twinE
|
||||||
c_TwinTwin = prm%h0_TwinTwin * stt%sumF(of)**prm%twinD
|
c_TwinTwin = prm%h0_TwinTwin * sumF**prm%twinD
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! calculate left and right vectors
|
! calculate left and right vectors
|
||||||
left_SlipSlip = 1.0_pReal + prm%H_int
|
left_SlipSlip = 1.0_pReal + prm%H_int
|
||||||
xi_slip_sat_offset = prm%spr*sqrt(stt%sumF(of))
|
xi_slip_sat_offset = prm%spr*sqrt(sumF)
|
||||||
right_SlipSlip = abs(1.0_pReal-stt%xi_slip(:,of) / (prm%xi_slip_sat+xi_slip_sat_offset)) **prm%a_slip &
|
right_SlipSlip = abs(1.0_pReal-stt%xi_slip(:,of) / (prm%xi_slip_sat+xi_slip_sat_offset)) **prm%a_slip &
|
||||||
* sign(1.0_pReal,1.0_pReal-stt%xi_slip(:,of) / (prm%xi_slip_sat+xi_slip_sat_offset))
|
* sign(1.0_pReal,1.0_pReal-stt%xi_slip(:,of) / (prm%xi_slip_sat+xi_slip_sat_offset))
|
||||||
|
|
||||||
|
@ -520,11 +489,7 @@ subroutine plastic_phenopowerlaw_dotState(Mp,instance,of)
|
||||||
! shear rates
|
! shear rates
|
||||||
call kinetics_slip(prm,stt,of,Mp,gdot_slip_pos,gdot_slip_neg)
|
call kinetics_slip(prm,stt,of,Mp,gdot_slip_pos,gdot_slip_neg)
|
||||||
dot%gamma_slip(:,of) = abs(gdot_slip_pos+gdot_slip_neg)
|
dot%gamma_slip(:,of) = abs(gdot_slip_pos+gdot_slip_neg)
|
||||||
dot%sumGamma(of) = sum(dot%gamma_slip(:,of))
|
|
||||||
call kinetics_twin(prm,stt,of,Mp,dot%gamma_twin(:,of))
|
call kinetics_twin(prm,stt,of,Mp,dot%gamma_twin(:,of))
|
||||||
if (prm%totalNtwin > 0_pInt) dot%sumF(of) = merge(sum(dot%gamma_twin(:,of)/prm%gamma_twin_char), &
|
|
||||||
0.0_pReal, &
|
|
||||||
stt%sumF(of) < 0.98_pReal)
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! hardening
|
! hardening
|
||||||
|
@ -546,8 +511,9 @@ end subroutine plastic_phenopowerlaw_dotState
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates shear rates on slip systems and derivatives with respect to resolved stress
|
!> @brief calculates shear rates on slip systems and derivatives with respect to resolved stress
|
||||||
!> @details: Shear rates are calculated only optionally. NOTE: Against the common convention, the
|
!> @details Shear rates are calculated only optionally.
|
||||||
!> result (i.e. intent(out)) variables are the last to have the optional arguments at the end
|
! NOTE: Against the common convention, the result (i.e. intent(out)) variables are the last to
|
||||||
|
! have the optional arguments at the end
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
pure subroutine kinetics_slip(prm,stt,of,Mp,gdot_slip_pos,gdot_slip_neg, &
|
pure subroutine kinetics_slip(prm,stt,of,Mp,gdot_slip_pos,gdot_slip_neg, &
|
||||||
dgdot_dtau_slip_pos,dgdot_dtau_slip_neg)
|
dgdot_dtau_slip_pos,dgdot_dtau_slip_neg)
|
||||||
|
@ -619,9 +585,11 @@ end subroutine kinetics_slip
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates shear rates on twin systems and derivatives with respect to resolved stress
|
!> @brief calculates shear rates on twin systems and derivatives with respect to resolved stress.
|
||||||
!> @details: Shear rates are calculated only optionally. NOTE: Against the common convention, the
|
! twinning is assumed to take place only in untwinned volume.
|
||||||
!> result (i.e. intent(out)) variables are the last to have the optional arguments at the end
|
!> @details Derivates are calculated only optionally.
|
||||||
|
! NOTE: Against the common convention, the result (i.e. intent(out)) variables are the last to
|
||||||
|
! have the optional arguments at the end.
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
pure subroutine kinetics_twin(prm,stt,of,Mp,gdot_twin,dgdot_dtau_twin)
|
pure subroutine kinetics_twin(prm,stt,of,Mp,gdot_twin,dgdot_dtau_twin)
|
||||||
use prec, only: &
|
use prec, only: &
|
||||||
|
@ -652,7 +620,8 @@ pure subroutine kinetics_twin(prm,stt,of,Mp,gdot_twin,dgdot_dtau_twin)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
where(tau_twin > 0.0_pReal)
|
where(tau_twin > 0.0_pReal)
|
||||||
gdot_twin = (1.0_pReal-stt%sumF(of))*prm%gdot0_twin*(abs(tau_twin)/stt%xi_twin(:,of))**prm%n_twin
|
gdot_twin = (1.0_pReal-sum(stt%gamma_twin(:,of)/prm%gamma_twin_char)) & ! only twin in untwinned volume fraction
|
||||||
|
* prm%gdot0_twin*(abs(tau_twin)/stt%xi_twin(:,of))**prm%n_twin
|
||||||
else where
|
else where
|
||||||
gdot_twin = 0.0_pReal
|
gdot_twin = 0.0_pReal
|
||||||
end where
|
end where
|
||||||
|
@ -690,14 +659,11 @@ function plastic_phenopowerlaw_postResults(Mp,instance,of) result(postResults)
|
||||||
real(pReal), dimension(param(instance)%totalNslip) :: &
|
real(pReal), dimension(param(instance)%totalNslip) :: &
|
||||||
gdot_slip_pos,gdot_slip_neg
|
gdot_slip_pos,gdot_slip_neg
|
||||||
|
|
||||||
type(tParameters) :: prm
|
|
||||||
type(tPhenopowerlawState) :: stt
|
|
||||||
|
|
||||||
associate( prm => param(instance), stt => state(instance))
|
|
||||||
|
|
||||||
postResults = 0.0_pReal
|
postResults = 0.0_pReal
|
||||||
c = 0_pInt
|
c = 0_pInt
|
||||||
|
|
||||||
|
associate( prm => param(instance), stt => state(instance))
|
||||||
|
|
||||||
outputsLoop: do o = 1_pInt,size(prm%outputID)
|
outputsLoop: do o = 1_pInt,size(prm%outputID)
|
||||||
select case(prm%outputID(o))
|
select case(prm%outputID(o))
|
||||||
|
|
||||||
|
@ -732,15 +698,9 @@ function plastic_phenopowerlaw_postResults(Mp,instance,of) result(postResults)
|
||||||
enddo
|
enddo
|
||||||
c = c + prm%totalNtwin
|
c = c + prm%totalNtwin
|
||||||
|
|
||||||
case (totalshear_ID)
|
|
||||||
postResults(c+1_pInt) = stt%sumGamma(of)
|
|
||||||
c = c + 1_pInt
|
|
||||||
case (totalvolfrac_twin_ID)
|
|
||||||
postResults(c+1_pInt) = stt%sumF(of)
|
|
||||||
c = c + 1_pInt
|
|
||||||
|
|
||||||
end select
|
end select
|
||||||
enddo outputsLoop
|
enddo outputsLoop
|
||||||
|
|
||||||
end associate
|
end associate
|
||||||
|
|
||||||
end function plastic_phenopowerlaw_postResults
|
end function plastic_phenopowerlaw_postResults
|
||||||
|
|
Loading…
Reference in New Issue