adding switch in material.config for short range stress correction
This commit is contained in:
parent
7330031579
commit
5263366615
|
@ -266,6 +266,7 @@ attackFrequency 50e9 # attack frequency in Hz
|
||||||
surfaceTransmissivity 1.0 # transmissivity of free surfaces for dislocation flux
|
surfaceTransmissivity 1.0 # transmissivity of free surfaces for dislocation flux
|
||||||
atol_rho 1e3 # dislocation density considered relevant in m/m**3
|
atol_rho 1e3 # dislocation density considered relevant in m/m**3
|
||||||
interaction_SlipSlip 0.122 0.122 0.625 0.07 0.137 0.122 # Dislocation interaction coefficient
|
interaction_SlipSlip 0.122 0.122 0.625 0.07 0.137 0.122 # Dislocation interaction coefficient
|
||||||
|
shortRangeStressCorrection 1
|
||||||
|
|
||||||
|
|
||||||
[BCC_Ferrite]
|
[BCC_Ferrite]
|
||||||
|
|
|
@ -118,6 +118,7 @@ real(pReal), dimension(:,:,:), allocatable :: constitutive_nonlocal_
|
||||||
constitutive_nonlocal_interactionMatrixSlipSlip ! interaction matrix of the different slip systems for each instance
|
constitutive_nonlocal_interactionMatrixSlipSlip ! interaction matrix of the different slip systems for each instance
|
||||||
real(pReal), dimension(:,:,:,:), allocatable :: constitutive_nonlocal_lattice2slip, & ! orthogonal transformation matrix from lattice coordinate system to slip coordinate system (passive rotation !!!)
|
real(pReal), dimension(:,:,:,:), allocatable :: constitutive_nonlocal_lattice2slip, & ! orthogonal transformation matrix from lattice coordinate system to slip coordinate system (passive rotation !!!)
|
||||||
constitutive_nonlocal_accumulatedShear ! accumulated shear per slip system up to the start of the FE increment
|
constitutive_nonlocal_accumulatedShear ! accumulated shear per slip system up to the start of the FE increment
|
||||||
|
logical, dimension(:), allocatable :: constitutive_nonlocal_shortRangeStressCorrection ! flag indicating the use of the short range stress correction by a excess density gradient term
|
||||||
|
|
||||||
|
|
||||||
CONTAINS
|
CONTAINS
|
||||||
|
@ -276,6 +277,7 @@ allocate(constitutive_nonlocal_viscosity(maxNinstance))
|
||||||
allocate(constitutive_nonlocal_fattack(maxNinstance))
|
allocate(constitutive_nonlocal_fattack(maxNinstance))
|
||||||
allocate(constitutive_nonlocal_rhoSglScatter(maxNinstance))
|
allocate(constitutive_nonlocal_rhoSglScatter(maxNinstance))
|
||||||
allocate(constitutive_nonlocal_surfaceTransmissivity(maxNinstance))
|
allocate(constitutive_nonlocal_surfaceTransmissivity(maxNinstance))
|
||||||
|
allocate(constitutive_nonlocal_shortRangeStressCorrection(maxNinstance))
|
||||||
constitutive_nonlocal_CoverA = 0.0_pReal
|
constitutive_nonlocal_CoverA = 0.0_pReal
|
||||||
constitutive_nonlocal_C11 = 0.0_pReal
|
constitutive_nonlocal_C11 = 0.0_pReal
|
||||||
constitutive_nonlocal_C12 = 0.0_pReal
|
constitutive_nonlocal_C12 = 0.0_pReal
|
||||||
|
@ -301,6 +303,7 @@ constitutive_nonlocal_viscosity = 0.0_pReal
|
||||||
constitutive_nonlocal_fattack = 0.0_pReal
|
constitutive_nonlocal_fattack = 0.0_pReal
|
||||||
constitutive_nonlocal_rhoSglScatter = 0.0_pReal
|
constitutive_nonlocal_rhoSglScatter = 0.0_pReal
|
||||||
constitutive_nonlocal_surfaceTransmissivity = 1.0_pReal
|
constitutive_nonlocal_surfaceTransmissivity = 1.0_pReal
|
||||||
|
constitutive_nonlocal_shortRangeStressCorrection = .true.
|
||||||
|
|
||||||
allocate(constitutive_nonlocal_rhoSglEdgePos0(lattice_maxNslipFamily,maxNinstance))
|
allocate(constitutive_nonlocal_rhoSglEdgePos0(lattice_maxNslipFamily,maxNinstance))
|
||||||
allocate(constitutive_nonlocal_rhoSglEdgeNeg0(lattice_maxNslipFamily,maxNinstance))
|
allocate(constitutive_nonlocal_rhoSglEdgeNeg0(lattice_maxNslipFamily,maxNinstance))
|
||||||
|
@ -440,6 +443,8 @@ do
|
||||||
constitutive_nonlocal_rhoSglScatter(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_nonlocal_rhoSglScatter(i) = IO_floatValue(line,positions,2_pInt)
|
||||||
case('surfacetransmissivity')
|
case('surfacetransmissivity')
|
||||||
constitutive_nonlocal_surfaceTransmissivity(i) = IO_floatValue(line,positions,2_pInt)
|
constitutive_nonlocal_surfaceTransmissivity(i) = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case('shortrangestresscorrection')
|
||||||
|
constitutive_nonlocal_shortRangeStressCorrection(i) = IO_floatValue(line,positions,2_pInt) > 0.0_pReal
|
||||||
case default
|
case default
|
||||||
call IO_error(250_pInt,ext_msg=tag)
|
call IO_error(250_pInt,ext_msg=tag)
|
||||||
end select
|
end select
|
||||||
|
@ -958,7 +963,8 @@ real(pReal) nu, & ! poisson's ratio
|
||||||
b, &
|
b, &
|
||||||
detFe, &
|
detFe, &
|
||||||
detFp, &
|
detFp, &
|
||||||
FVsize
|
FVsize, &
|
||||||
|
temp
|
||||||
real(pReal), dimension(2) :: rhoExcessGradient, &
|
real(pReal), dimension(2) :: rhoExcessGradient, &
|
||||||
rhoExcessGradient_over_rho, &
|
rhoExcessGradient_over_rho, &
|
||||||
rhoTotal
|
rhoTotal
|
||||||
|
@ -971,7 +977,8 @@ real(pReal), dimension(constitutive_nonlocal_totalNslip(phase_plasticityInstance
|
||||||
tauThreshold ! threshold shear stress
|
tauThreshold ! threshold shear stress
|
||||||
real(pReal), dimension(3,3) :: invFe, & ! inverse of elastic deformation gradient
|
real(pReal), dimension(3,3) :: invFe, & ! inverse of elastic deformation gradient
|
||||||
invFp, & ! inverse of plastic deformation gradient
|
invFp, & ! inverse of plastic deformation gradient
|
||||||
connections
|
connections, &
|
||||||
|
invConnections
|
||||||
real(pReal), dimension(3,FE_maxNipNeighbors) :: &
|
real(pReal), dimension(3,FE_maxNipNeighbors) :: &
|
||||||
connection_latticeConf
|
connection_latticeConf
|
||||||
real(pReal), dimension(2,constitutive_nonlocal_totalNslip(phase_plasticityInstance(material_phase(g,ip,el)))) :: &
|
real(pReal), dimension(2,constitutive_nonlocal_totalNslip(phase_plasticityInstance(material_phase(g,ip,el)))) :: &
|
||||||
|
@ -1030,7 +1037,7 @@ forall (s = 1_pInt:ns) &
|
||||||
|
|
||||||
tauBack = 0.0_pReal
|
tauBack = 0.0_pReal
|
||||||
|
|
||||||
if (.not. phase_localPlasticity(phase)) then
|
if (.not. phase_localPlasticity(phase) .and. constitutive_nonlocal_shortRangeStressCorrection(instance)) then
|
||||||
call math_invert33(Fe, invFe, detFe, inversionError)
|
call math_invert33(Fe, invFe, detFe, inversionError)
|
||||||
call math_invert33(Fp, invFp, detFp, inversionError)
|
call math_invert33(Fp, invFp, detFp, inversionError)
|
||||||
ipCoords = mesh_ipCenterOfGravity(1:3,ip,el)
|
ipCoords = mesh_ipCenterOfGravity(1:3,ip,el)
|
||||||
|
@ -1100,7 +1107,11 @@ if (.not. phase_localPlasticity(phase)) then
|
||||||
connections(dir,1:3) = connection_latticeConf(1:3,neighbor(1)) - connection_latticeConf(1:3,neighbor(2))
|
connections(dir,1:3) = connection_latticeConf(1:3,neighbor(1)) - connection_latticeConf(1:3,neighbor(2))
|
||||||
rhoExcessDifferences(dir) = neighboring_rhoExcess(c,s,neighbor(1)) - neighboring_rhoExcess(c,s,neighbor(2))
|
rhoExcessDifferences(dir) = neighboring_rhoExcess(c,s,neighbor(1)) - neighboring_rhoExcess(c,s,neighbor(2))
|
||||||
enddo
|
enddo
|
||||||
rhoExcessGradient(c) = math_mul3x3(math_mul33x3(math_inv33(connections), rhoExcessDifferences), m(1:3,s,c))
|
call math_invert33(connections,invConnections,temp,inversionError)
|
||||||
|
if (inversionError) then
|
||||||
|
call IO_error(-1_pInt,ext_msg='back stress calculation: inversion error')
|
||||||
|
endif
|
||||||
|
rhoExcessGradient(c) = math_mul3x3(math_mul33x3(invConnections, rhoExcessDifferences), m(1:3,s,c))
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
!* plus gradient from deads
|
!* plus gradient from deads
|
||||||
|
|
Loading…
Reference in New Issue