some modifications in line with Davids analytical model

input some additional variables via material.config
This commit is contained in:
Franz Roters 2010-08-17 14:23:55 +00:00
parent bb9899e7de
commit f78b07448f
2 changed files with 158 additions and 146 deletions

View File

@ -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))

View File

@ -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