corrected debug output of evolution rates; added possibility to change the safety factor for the CFL flux condition via the material.config file; updated the example material.config due to recent changes in nonlocal constitutive

This commit is contained in:
Christoph Kords 2012-08-16 09:13:38 +00:00
parent 133b6547ea
commit bd754dbefd
2 changed files with 32 additions and 22 deletions

View File

@ -282,9 +282,11 @@ p 1 # exponent for thermal barrier
q 1 # exponent for thermal barrier profile q 1 # exponent for thermal barrier profile
attackFrequency 50e9 # attack frequency in Hz 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
grainboundaryTransmissivity 0.0 # transmissivity of grain boundaries for dislocation flux (grain bundaries are identified as interfaces with different textures on both sides); if not set or set to negative number, the subroutine automatically determines the transmissivity at the grain boundary
shortRangeStressCorrection 0 # switch for use of short range correction stress
interaction_SlipSlip 0 0 0.625 0.07 0.137 0.122 # Dislocation interaction coefficient
CFLfactor 2.0 # safety factor for CFL flux check (numerical parameter)
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
shortRangeStressCorrection 1
[BCC_Ferrite] [BCC_Ferrite]

View File

@ -126,7 +126,8 @@ constitutive_nonlocal_viscosity, & ! viscosity
constitutive_nonlocal_fattack, & ! attack frequency in Hz constitutive_nonlocal_fattack, & ! attack frequency in Hz
constitutive_nonlocal_rhoSglScatter, & ! standard deviation of scatter in initial dislocation density constitutive_nonlocal_rhoSglScatter, & ! standard deviation of scatter in initial dislocation density
constitutive_nonlocal_surfaceTransmissivity, & ! transmissivity at free surface constitutive_nonlocal_surfaceTransmissivity, & ! transmissivity at free surface
constitutive_nonlocal_grainboundaryTransmissivity ! transmissivity at grain boundary (identified by different texture) constitutive_nonlocal_grainboundaryTransmissivity, & ! transmissivity at grain boundary (identified by different texture)
constitutive_nonlocal_CFLfactor ! safety factor for CFL flux condition
real(pReal), dimension(:,:,:), allocatable, private :: & real(pReal), dimension(:,:,:), allocatable, private :: &
constitutive_nonlocal_Cslip_66 ! elasticity matrix in Mandel notation for each instance constitutive_nonlocal_Cslip_66 ! elasticity matrix in Mandel notation for each instance
@ -332,6 +333,7 @@ allocate(constitutive_nonlocal_rhoSglScatter(maxNinstance))
allocate(constitutive_nonlocal_surfaceTransmissivity(maxNinstance)) allocate(constitutive_nonlocal_surfaceTransmissivity(maxNinstance))
allocate(constitutive_nonlocal_grainboundaryTransmissivity(maxNinstance)) allocate(constitutive_nonlocal_grainboundaryTransmissivity(maxNinstance))
allocate(constitutive_nonlocal_shortRangeStressCorrection(maxNinstance)) allocate(constitutive_nonlocal_shortRangeStressCorrection(maxNinstance))
allocate(constitutive_nonlocal_CFLfactor(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
@ -358,6 +360,7 @@ 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_grainboundaryTransmissivity = -1.0_pReal constitutive_nonlocal_grainboundaryTransmissivity = -1.0_pReal
constitutive_nonlocal_CFLfactor = 2.0_pReal
constitutive_nonlocal_shortRangeStressCorrection = .true. constitutive_nonlocal_shortRangeStressCorrection = .true.
allocate(constitutive_nonlocal_rhoSglEdgePos0(lattice_maxNslipFamily,maxNinstance)) allocate(constitutive_nonlocal_rhoSglEdgePos0(lattice_maxNslipFamily,maxNinstance))
@ -500,6 +503,8 @@ do
constitutive_nonlocal_surfaceTransmissivity(i) = IO_floatValue(line,positions,2_pInt) constitutive_nonlocal_surfaceTransmissivity(i) = IO_floatValue(line,positions,2_pInt)
case('grainboundarytransmissivity') case('grainboundarytransmissivity')
constitutive_nonlocal_grainboundaryTransmissivity(i) = IO_floatValue(line,positions,2_pInt) constitutive_nonlocal_grainboundaryTransmissivity(i) = IO_floatValue(line,positions,2_pInt)
case('cflfactor')
constitutive_nonlocal_CFLfactor(i) = IO_floatValue(line,positions,2_pInt)
case('shortrangestresscorrection') case('shortrangestresscorrection')
constitutive_nonlocal_shortRangeStressCorrection(i) = IO_floatValue(line,positions,2_pInt) > 0.0_pReal constitutive_nonlocal_shortRangeStressCorrection(i) = IO_floatValue(line,positions,2_pInt) > 0.0_pReal
case default case default
@ -593,6 +598,8 @@ enddo
//constitutive_nonlocal_label//')') //constitutive_nonlocal_label//')')
if (constitutive_nonlocal_grainboundaryTransmissivity(i) > 1.0_pReal) call IO_error(211_pInt,& if (constitutive_nonlocal_grainboundaryTransmissivity(i) > 1.0_pReal) call IO_error(211_pInt,&
ext_msg='grainboundaryTransmissivity ('//constitutive_nonlocal_label//')') ext_msg='grainboundaryTransmissivity ('//constitutive_nonlocal_label//')')
if (constitutive_nonlocal_CFLfactor(i) < 0.0_pReal) call IO_error(211_pInt,ext_msg='CFLfactor (' &
//constitutive_nonlocal_label//')')
!*** determine total number of active slip systems !*** determine total number of active slip systems
@ -1939,23 +1946,6 @@ forall (t = 1_pInt:4_pInt) &
!****************************************************************************
!*** check CFL (Courant-Friedrichs-Lewy) condition for flux
if (any(abs(gdot) > 0.0_pReal .and. 2.0_pReal * abs(v) * timestep > mesh_ipVolume(ip,el) / maxval(mesh_ipArea(:,ip,el)))) then ! safety factor 2.0 (we use the reference volume and are for simplicity here)
#ifndef _OPENMP
if (iand(debug_level(debug_constitutive),debug_levelBasic) /= 0_pInt) then
write(6,'(a,i5,a,i2)') '<< CONST >> CFL condition not fullfilled at el ',el,' ip ',ip
write(6,'(a,e10.3,a,e10.3)') '<< CONST >> velocity is at ',maxval(abs(v)),' at a timestep of ',timestep
write(6,'(a)') '<< CONST >> enforcing cutback !!!'
endif
#endif
constitutive_nonlocal_dotState = DAMASK_NaN
return
endif
!**************************************************************************** !****************************************************************************
!*** calculate limits for stable dipole height !*** calculate limits for stable dipole height
@ -1995,7 +1985,25 @@ rhoDotFlux = 0.0_pReal
if (.not. phase_localPlasticity(material_phase(g,ip,el))) then ! only for nonlocal plasticity if (.not. phase_localPlasticity(material_phase(g,ip,el))) then ! only for nonlocal plasticity
!*** take care of the definition of lattice_st = lattice_sd x lattice_sn !!!
!*** check CFL (Courant-Friedrichs-Lewy) condition for flux
if (any( abs(gdot) > 0.0_pReal & ! any active slip system ...
.and. constitutive_nonlocal_CFLfactor(myInstance) * abs(v) * timestep &
> mesh_ipVolume(ip,el) / maxval(mesh_ipArea(:,ip,el)))) then ! ...with velocity above critical value (we use the reference volume and area for simplicity here)
#ifndef _OPENMP
if (iand(debug_level(debug_constitutive),debug_levelBasic) /= 0_pInt) then
write(6,'(a,i5,a,i2)') '<< CONST >> CFL condition not fullfilled at el ',el,' ip ',ip
write(6,'(a,e10.3,a,e10.3)') '<< CONST >> velocity is at ',maxval(abs(v)),' at a timestep of ',timestep
write(6,'(a)') '<< CONST >> enforcing cutback !!!'
endif
#endif
constitutive_nonlocal_dotState = DAMASK_NaN ! -> return NaN and, hence, enforce cutback
return
endif
!*** be aware of the definition of lattice_st = lattice_sd x lattice_sn !!!
!*** opposite sign to our p vector in the (s,p,n) triplet !!! !*** opposite sign to our p vector in the (s,p,n) triplet !!!
m(1:3,1:ns,1) = lattice_sd(1:3, constitutive_nonlocal_slipSystemLattice(1:ns,myInstance), myStructure) m(1:3,1:ns,1) = lattice_sd(1:3, constitutive_nonlocal_slipSystemLattice(1:ns,myInstance), myStructure)
@ -2228,7 +2236,7 @@ endif
write(6,'(a,/,8(12x,12(e12.5,1x),/))') '<< CONST >> dislocation flux', rhoDotFlux(1:ns,1:8) * timestep write(6,'(a,/,8(12x,12(e12.5,1x),/))') '<< CONST >> dislocation flux', rhoDotFlux(1:ns,1:8) * timestep
write(6,'(a,/,10(12x,12(e12.5,1x),/))') '<< CONST >> dipole formation by glide', rhoDotSingle2DipoleGlide * timestep write(6,'(a,/,10(12x,12(e12.5,1x),/))') '<< CONST >> dipole formation by glide', rhoDotSingle2DipoleGlide * timestep
write(6,'(a,/,2(12x,12(e12.5,1x),/))') '<< CONST >> athermal dipole annihilation', & write(6,'(a,/,2(12x,12(e12.5,1x),/))') '<< CONST >> athermal dipole annihilation', &
rhoDotAthermalAnnihilation(1:ns,1:2) * timestep rhoDotAthermalAnnihilation(1:ns,9:10) * timestep
write(6,'(a,/,10(12x,12(e12.5,1x),/))') '<< CONST >> thermally activated dipole annihilation', & write(6,'(a,/,10(12x,12(e12.5,1x),/))') '<< CONST >> thermally activated dipole annihilation', &
rhoDotThermalAnnihilation * timestep rhoDotThermalAnnihilation * timestep
write(6,'(a,/,10(12x,12(e12.5,1x),/))') '<< CONST >> total density change', rhoDot * timestep write(6,'(a,/,10(12x,12(e12.5,1x),/))') '<< CONST >> total density change', rhoDot * timestep