some modifications in line with Davids analytical model
input some additional variables via material.config
This commit is contained in:
parent
bb9899e7de
commit
f78b07448f
|
@ -58,6 +58,8 @@ real(pReal), dimension(:), allocatable :: constitutive_dislotwin
|
||||||
constitutive_dislotwin_CEdgeDipMinDistance, & !
|
constitutive_dislotwin_CEdgeDipMinDistance, & !
|
||||||
constitutive_dislotwin_Cmfptwin, & !
|
constitutive_dislotwin_Cmfptwin, & !
|
||||||
constitutive_dislotwin_Cthresholdtwin, & !
|
constitutive_dislotwin_Cthresholdtwin, & !
|
||||||
|
constitutive_dislotwin_SolidSolutionStrength, & ! Strength due to elements in solid solution
|
||||||
|
constitutive_dislotwin_L0, & ! Length of twin nuclei in Burgers vectors
|
||||||
constitutive_dislotwin_relevantRho ! dislocation density considered relevant
|
constitutive_dislotwin_relevantRho ! dislocation density considered relevant
|
||||||
real(pReal), dimension(:,:,:), allocatable :: constitutive_dislotwin_Cslip_66 ! elasticity matrix in Mandel notation for each instance
|
real(pReal), dimension(:,:,:), allocatable :: constitutive_dislotwin_Cslip_66 ! elasticity matrix in Mandel notation for each instance
|
||||||
real(pReal), dimension(:,:,:,:), allocatable :: constitutive_dislotwin_Ctwin_66 ! twin elasticity matrix in Mandel notation for each instance
|
real(pReal), dimension(:,:,:,:), allocatable :: constitutive_dislotwin_Ctwin_66 ! twin elasticity matrix in Mandel notation for each instance
|
||||||
|
@ -178,6 +180,8 @@ allocate(constitutive_dislotwin_r(maxNinstance))
|
||||||
allocate(constitutive_dislotwin_CEdgeDipMinDistance(maxNinstance))
|
allocate(constitutive_dislotwin_CEdgeDipMinDistance(maxNinstance))
|
||||||
allocate(constitutive_dislotwin_Cmfptwin(maxNinstance))
|
allocate(constitutive_dislotwin_Cmfptwin(maxNinstance))
|
||||||
allocate(constitutive_dislotwin_Cthresholdtwin(maxNinstance))
|
allocate(constitutive_dislotwin_Cthresholdtwin(maxNinstance))
|
||||||
|
allocate(constitutive_dislotwin_SolidSolutionStrength(maxNinstance))
|
||||||
|
allocate(constitutive_dislotwin_L0(maxNinstance))
|
||||||
allocate(constitutive_dislotwin_relevantRho(maxNinstance))
|
allocate(constitutive_dislotwin_relevantRho(maxNinstance))
|
||||||
allocate(constitutive_dislotwin_Cslip_66(6,6,maxNinstance))
|
allocate(constitutive_dislotwin_Cslip_66(6,6,maxNinstance))
|
||||||
allocate(constitutive_dislotwin_Cslip_3333(3,3,3,3,maxNinstance))
|
allocate(constitutive_dislotwin_Cslip_3333(3,3,3,3,maxNinstance))
|
||||||
|
@ -199,6 +203,8 @@ constitutive_dislotwin_r = 0.0_pReal
|
||||||
constitutive_dislotwin_CEdgeDipMinDistance = 0.0_pReal
|
constitutive_dislotwin_CEdgeDipMinDistance = 0.0_pReal
|
||||||
constitutive_dislotwin_Cmfptwin = 0.0_pReal
|
constitutive_dislotwin_Cmfptwin = 0.0_pReal
|
||||||
constitutive_dislotwin_Cthresholdtwin = 0.0_pReal
|
constitutive_dislotwin_Cthresholdtwin = 0.0_pReal
|
||||||
|
constitutive_dislotwin_SolidSolutionStrength= 0.0_pReal
|
||||||
|
constitutive_dislotwin_L0 = 0.0_pReal
|
||||||
constitutive_dislotwin_relevantRho = 0.0_pReal
|
constitutive_dislotwin_relevantRho = 0.0_pReal
|
||||||
constitutive_dislotwin_Cslip_66 = 0.0_pReal
|
constitutive_dislotwin_Cslip_66 = 0.0_pReal
|
||||||
constitutive_dislotwin_Cslip_3333 = 0.0_pReal
|
constitutive_dislotwin_Cslip_3333 = 0.0_pReal
|
||||||
|
@ -321,6 +327,10 @@ do ! read thru sections of
|
||||||
constitutive_dislotwin_Cmfptwin(i) = IO_floatValue(line,positions,2)
|
constitutive_dislotwin_Cmfptwin(i) = IO_floatValue(line,positions,2)
|
||||||
case ('cthresholdtwin')
|
case ('cthresholdtwin')
|
||||||
constitutive_dislotwin_Cthresholdtwin(i) = IO_floatValue(line,positions,2)
|
constitutive_dislotwin_Cthresholdtwin(i) = IO_floatValue(line,positions,2)
|
||||||
|
case ('SolidSolutionStrength')
|
||||||
|
constitutive_dislotwin_SolidSolutionStrength(i) = IO_floatValue(line,positions,2)
|
||||||
|
case ('L0')
|
||||||
|
constitutive_dislotwin_L0(i) = IO_floatValue(line,positions,2)
|
||||||
case ('cedgedipmindistance')
|
case ('cedgedipmindistance')
|
||||||
constitutive_dislotwin_CEdgeDipMinDistance(i) = IO_floatValue(line,positions,2)
|
constitutive_dislotwin_CEdgeDipMinDistance(i) = IO_floatValue(line,positions,2)
|
||||||
case ('catomicvolume')
|
case ('catomicvolume')
|
||||||
|
@ -631,7 +641,7 @@ constitutive_dislotwin_GrainSize(myInstance)/(1.0_pReal+invLambdaSlip0(s)*consti
|
||||||
constitutive_dislotwin_stateInit(4*ns+2*nt+1:5*ns+2*nt) = MeanFreePathSlip0
|
constitutive_dislotwin_stateInit(4*ns+2*nt+1:5*ns+2*nt) = MeanFreePathSlip0
|
||||||
|
|
||||||
forall (s = 1:ns) &
|
forall (s = 1:ns) &
|
||||||
tauSlipThreshold0(s) = &
|
tauSlipThreshold0(s) = constitutive_dislotwin_SolidSolutionStrength(myInstance)+ &
|
||||||
constitutive_dislotwin_Gmod(myInstance)*constitutive_dislotwin_burgersPerSlipSystem(s,myInstance)* &
|
constitutive_dislotwin_Gmod(myInstance)*constitutive_dislotwin_burgersPerSlipSystem(s,myInstance)* &
|
||||||
sqrt(dot_product((rhoEdge0+rhoEdgeDip0),constitutive_dislotwin_interactionMatrixSlipSlip(1:ns,s,myInstance)))
|
sqrt(dot_product((rhoEdge0+rhoEdgeDip0),constitutive_dislotwin_interactionMatrixSlipSlip(1:ns,s,myInstance)))
|
||||||
constitutive_dislotwin_stateInit(5*ns+3*nt+1:6*ns+3*nt) = tauSlipThreshold0
|
constitutive_dislotwin_stateInit(5*ns+3*nt+1:6*ns+3*nt) = tauSlipThreshold0
|
||||||
|
@ -739,7 +749,7 @@ integer(pInt), intent(in) :: g,ip,el
|
||||||
real(pReal), intent(in) :: Temperature
|
real(pReal), intent(in) :: Temperature
|
||||||
type(p_vec), dimension(homogenization_maxNgrains,mesh_maxNips,mesh_NcpElems), intent(inout) :: state
|
type(p_vec), dimension(homogenization_maxNgrains,mesh_maxNips,mesh_NcpElems), intent(inout) :: state
|
||||||
!* Local variables
|
!* Local variables
|
||||||
integer(pInt) myInstance,myStructure,ns,nt,s,t,i
|
integer(pInt) myInstance,myStructure,ns,nt,s,t
|
||||||
real(pReal) sumf,sfe
|
real(pReal) sumf,sfe
|
||||||
real(pReal), dimension(constitutive_dislotwin_totalNtwin(phase_constitutionInstance(material_phase(g,ip,el)))) :: fOverStacksize
|
real(pReal), dimension(constitutive_dislotwin_totalNtwin(phase_constitutionInstance(material_phase(g,ip,el)))) :: fOverStacksize
|
||||||
|
|
||||||
|
@ -814,7 +824,7 @@ forall (t = 1:nt) &
|
||||||
|
|
||||||
!* threshold stress for dislocation motion
|
!* threshold stress for dislocation motion
|
||||||
forall (s = 1:ns) &
|
forall (s = 1:ns) &
|
||||||
state(g,ip,el)%p(5*ns+3*nt+s) = &
|
state(g,ip,el)%p(5*ns+3*nt+s) = constitutive_dislotwin_SolidSolutionStrength(myInstance)+ &
|
||||||
constitutive_dislotwin_Gmod(myInstance)*constitutive_dislotwin_burgersPerSlipSystem(s,myInstance)*&
|
constitutive_dislotwin_Gmod(myInstance)*constitutive_dislotwin_burgersPerSlipSystem(s,myInstance)*&
|
||||||
sqrt(dot_product((state(g,ip,el)%p(1:ns)+state(g,ip,el)%p(ns+1:2*ns)),&
|
sqrt(dot_product((state(g,ip,el)%p(1:ns)+state(g,ip,el)%p(ns+1:2*ns)),&
|
||||||
constitutive_dislotwin_interactionMatrixSlipSlip(1:ns,s,myInstance)))
|
constitutive_dislotwin_interactionMatrixSlipSlip(1:ns,s,myInstance)))
|
||||||
|
@ -825,7 +835,7 @@ forall (t = 1:nt) &
|
||||||
constitutive_dislotwin_Cthresholdtwin(myInstance)*&
|
constitutive_dislotwin_Cthresholdtwin(myInstance)*&
|
||||||
(sfe/(3.0_pReal*constitutive_dislotwin_burgersPerTwinSystem(t,myInstance))+&
|
(sfe/(3.0_pReal*constitutive_dislotwin_burgersPerTwinSystem(t,myInstance))+&
|
||||||
3.0_pReal*constitutive_dislotwin_burgersPerTwinSystem(t,myInstance)*constitutive_dislotwin_Gmod(myInstance)/&
|
3.0_pReal*constitutive_dislotwin_burgersPerTwinSystem(t,myInstance)*constitutive_dislotwin_Gmod(myInstance)/&
|
||||||
state(g,ip,el)%p(5*ns+2*nt+t))
|
(constitutive_dislotwin_L0(myInstance)*constitutive_dislotwin_burgersPerSlipSystem(t,myInstance)))
|
||||||
|
|
||||||
!* final twin volume after growth
|
!* final twin volume after growth
|
||||||
forall (t = 1:nt) &
|
forall (t = 1:nt) &
|
||||||
|
@ -1026,7 +1036,7 @@ type(p_vec), dimension(homogenization_maxNgrains,mesh_maxNips,mesh_NcpElems), in
|
||||||
real(pReal), dimension(constitutive_dislotwin_sizeDotState(phase_constitutionInstance(material_phase(g,ip,el)))) :: &
|
real(pReal), dimension(constitutive_dislotwin_sizeDotState(phase_constitutionInstance(material_phase(g,ip,el)))) :: &
|
||||||
constitutive_dislotwin_dotState
|
constitutive_dislotwin_dotState
|
||||||
!* Local variables
|
!* Local variables
|
||||||
integer(pInt) MyInstance,MyStructure,ns,nt,f,i,j,k,index_myFamily
|
integer(pInt) MyInstance,MyStructure,ns,nt,f,i,j,index_myFamily
|
||||||
real(pReal) sumf,StressRatio_p,StressRatio_pminus1,BoltzmannRatio,DotGamma0,&
|
real(pReal) sumf,StressRatio_p,StressRatio_pminus1,BoltzmannRatio,DotGamma0,&
|
||||||
EdgeDipMinDistance,AtomicVolume,VacancyDiffusion,StressRatio_r
|
EdgeDipMinDistance,AtomicVolume,VacancyDiffusion,StressRatio_r
|
||||||
real(pReal), dimension(constitutive_dislotwin_totalNslip(phase_constitutionInstance(material_phase(g,ip,el)))) :: &
|
real(pReal), dimension(constitutive_dislotwin_totalNslip(phase_constitutionInstance(material_phase(g,ip,el)))) :: &
|
||||||
|
@ -1034,7 +1044,7 @@ gdot_slip,tau_slip,DotRhoMultiplication,EdgeDipDistance,DotRhoEdgeEdgeAnnihilati
|
||||||
|
|
||||||
ClimbVelocity,DotRhoEdgeDipClimb,DotRhoDipFormation
|
ClimbVelocity,DotRhoEdgeDipClimb,DotRhoDipFormation
|
||||||
real(pReal), dimension(constitutive_dislotwin_totalNtwin(phase_constitutionInstance(material_phase(g,ip,el)))) :: &
|
real(pReal), dimension(constitutive_dislotwin_totalNtwin(phase_constitutionInstance(material_phase(g,ip,el)))) :: &
|
||||||
gdot_twin,tau_twin
|
tau_twin
|
||||||
|
|
||||||
!* Shortened notation
|
!* Shortened notation
|
||||||
myInstance = phase_constitutionInstance(material_phase(g,ip,el))
|
myInstance = phase_constitutionInstance(material_phase(g,ip,el))
|
||||||
|
|
|
@ -327,6 +327,7 @@ C11 175.0e9 # From Music et al. Applied Physics Letters
|
||||||
C12 115.0e9
|
C12 115.0e9
|
||||||
C44 135.0e9
|
C44 135.0e9
|
||||||
grainsize 2.0e-5 # Average grain size [m]
|
grainsize 2.0e-5 # Average grain size [m]
|
||||||
|
SolidSolutionStrength 1.5e8 # Strength due to elements in solid solution
|
||||||
|
|
||||||
### Dislocation glide parameters ###
|
### Dislocation glide parameters ###
|
||||||
Nslip 12 0 0 0
|
Nslip 12 0 0 0
|
||||||
|
@ -349,6 +350,7 @@ interactionSlipSlip 0.122 0.122 0.625 0.07 0.137 0.122 # Interaction coefficient
|
||||||
Ntwin 12
|
Ntwin 12
|
||||||
twinburgers 1.47e-10 # Burgers vector of twin system [m]
|
twinburgers 1.47e-10 # Burgers vector of twin system [m]
|
||||||
twinsize 5.0e-8 # Twin stack mean thickness [m]
|
twinsize 5.0e-8 # Twin stack mean thickness [m]
|
||||||
|
L0 442.0 # Length of twin nuclei in Burgers vectors
|
||||||
maxtwinfraction 1.0 # Maximum admissible twin volume fraction
|
maxtwinfraction 1.0 # Maximum admissible twin volume fraction
|
||||||
Ndot0 0.0 # Number of potential sources per volume per time [1/m**3.s]
|
Ndot0 0.0 # Number of potential sources per volume per time [1/m**3.s]
|
||||||
rexponent 10.0 # r-exponent in twin formation probability
|
rexponent 10.0 # r-exponent in twin formation probability
|
||||||
|
|
Loading…
Reference in New Issue