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:
parent
133b6547ea
commit
bd754dbefd
|
@ -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]
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue