residualStiffness is not just an FEM parameter
This commit is contained in:
parent
2fc264d90a
commit
b796e46f98
|
@ -63,7 +63,8 @@ module numerics
|
||||||
maxVolDiscr_RGC = 1.0e-5_pReal, & !< threshold of maximum volume discrepancy allowed
|
maxVolDiscr_RGC = 1.0e-5_pReal, & !< threshold of maximum volume discrepancy allowed
|
||||||
volDiscrMod_RGC = 1.0e+12_pReal, & !< stiffness of RGC volume discrepancy (zero = without volume discrepancy constraint)
|
volDiscrMod_RGC = 1.0e+12_pReal, & !< stiffness of RGC volume discrepancy (zero = without volume discrepancy constraint)
|
||||||
volDiscrPow_RGC = 5.0_pReal, & !< powerlaw penalty for volume discrepancy
|
volDiscrPow_RGC = 5.0_pReal, & !< powerlaw penalty for volume discrepancy
|
||||||
charLength = 1.0_pReal !< characteristic length scale for gradient problems
|
charLength = 1.0_pReal, & !< characteristic length scale for gradient problems
|
||||||
|
residualStiffness = 1.0e-6_pReal !< non-zero residual damage
|
||||||
logical, protected, public :: &
|
logical, protected, public :: &
|
||||||
#if defined(Spectral) || defined(FEM)
|
#if defined(Spectral) || defined(FEM)
|
||||||
analyticJaco = .true., & !< use analytic Jacobian or perturbation, Default for Spectral solver .true.:
|
analyticJaco = .true., & !< use analytic Jacobian or perturbation, Default for Spectral solver .true.:
|
||||||
|
@ -113,9 +114,8 @@ module numerics
|
||||||
real(pReal), protected, public :: &
|
real(pReal), protected, public :: &
|
||||||
err_struct_tolAbs = 1.0e-10_pReal, & !< absolute tolerance for equilibrium
|
err_struct_tolAbs = 1.0e-10_pReal, & !< absolute tolerance for equilibrium
|
||||||
err_struct_tolRel = 1.0e-4_pReal, & !< relative tolerance for equilibrium
|
err_struct_tolRel = 1.0e-4_pReal, & !< relative tolerance for equilibrium
|
||||||
err_thermal_tol = 1.0_pReal, &
|
err_thermal_tol = 1.0e-1_pReal, &
|
||||||
err_damage_tol = 1.0e-4_pReal, &
|
err_damage_tol = 1.0e-3_pReal, &
|
||||||
residualStiffness = 1.0e-6_pReal !< non-zero residual damage
|
|
||||||
character(len=4096), protected, public :: &
|
character(len=4096), protected, public :: &
|
||||||
petsc_optionsFEM = '-mech_snes_type newtonls &
|
petsc_optionsFEM = '-mech_snes_type newtonls &
|
||||||
&-mech_snes_linesearch_type cp &
|
&-mech_snes_linesearch_type cp &
|
||||||
|
@ -123,7 +123,7 @@ module numerics
|
||||||
&-mech_snes_ksp_ew_rtol0 0.01 &
|
&-mech_snes_ksp_ew_rtol0 0.01 &
|
||||||
&-mech_snes_ksp_ew_rtolmax 0.01 &
|
&-mech_snes_ksp_ew_rtolmax 0.01 &
|
||||||
&-mech_ksp_type fgmres &
|
&-mech_ksp_type fgmres &
|
||||||
&-mech_ksp_max_it 50 &
|
&-mech_ksp_max_it 25 &
|
||||||
&-mech_pc_type ml &
|
&-mech_pc_type ml &
|
||||||
&-mech_pc_ml_maxNlevels 2 &
|
&-mech_pc_ml_maxNlevels 2 &
|
||||||
&-mech_mg_coarse_ksp_type preonly &
|
&-mech_mg_coarse_ksp_type preonly &
|
||||||
|
@ -160,6 +160,7 @@ module numerics
|
||||||
integer(pInt), protected, public :: &
|
integer(pInt), protected, public :: &
|
||||||
itmaxFEM = 25_pInt, & !< maximum number of iterations
|
itmaxFEM = 25_pInt, & !< maximum number of iterations
|
||||||
itminFEM = 1_pInt, & !< minimum number of iterations
|
itminFEM = 1_pInt, & !< minimum number of iterations
|
||||||
|
stagItMax = 10_pInt, & !< max number of field level staggered iterations
|
||||||
maxCutBackFEM = 3_pInt, & !< max number of cut backs
|
maxCutBackFEM = 3_pInt, & !< max number of cut backs
|
||||||
integrationOrder = 2_pInt, &
|
integrationOrder = 2_pInt, &
|
||||||
structOrder = 2_pInt, &
|
structOrder = 2_pInt, &
|
||||||
|
@ -342,6 +343,8 @@ subroutine numerics_init
|
||||||
! gradient parameter
|
! gradient parameter
|
||||||
case ('charlength')
|
case ('charlength')
|
||||||
charLength = IO_floatValue(line,positions,2_pInt)
|
charLength = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('residualstiffness')
|
||||||
|
residualStiffness = IO_floatValue(line,positions,2_pInt)
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! spectral parameters
|
! spectral parameters
|
||||||
|
@ -406,14 +409,14 @@ subroutine numerics_init
|
||||||
err_thermal_tol = IO_floatValue(line,positions,2_pInt)
|
err_thermal_tol = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('err_damage_tol')
|
case ('err_damage_tol')
|
||||||
err_damage_tol = IO_floatValue(line,positions,2_pInt)
|
err_damage_tol = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('residualstiffness')
|
|
||||||
residualStiffness = IO_floatValue(line,positions,2_pInt)
|
|
||||||
case ('itmaxfem')
|
case ('itmaxfem')
|
||||||
itmaxFEM = IO_intValue(line,positions,2_pInt)
|
itmaxFEM = IO_intValue(line,positions,2_pInt)
|
||||||
case ('itminfem')
|
case ('itminfem')
|
||||||
itminFEM = IO_intValue(line,positions,2_pInt)
|
itminFEM = IO_intValue(line,positions,2_pInt)
|
||||||
case ('maxcutbackfem')
|
case ('maxcutbackfem')
|
||||||
maxCutBackFEM = IO_intValue(line,positions,2_pInt)
|
maxCutBackFEM = IO_intValue(line,positions,2_pInt)
|
||||||
|
case ('maxstaggerediter')
|
||||||
|
stagItMax = IO_intValue(line,positions,2_pInt)
|
||||||
case ('integrationorder')
|
case ('integrationorder')
|
||||||
integrationorder = IO_intValue(line,positions,2_pInt)
|
integrationorder = IO_intValue(line,positions,2_pInt)
|
||||||
case ('structorder')
|
case ('structorder')
|
||||||
|
@ -427,8 +430,8 @@ subroutine numerics_init
|
||||||
case ('petsc_optionsfem')
|
case ('petsc_optionsfem')
|
||||||
petsc_optionsFEM = trim(line(positions(4):))
|
petsc_optionsFEM = trim(line(positions(4):))
|
||||||
#else
|
#else
|
||||||
case ('err_struct_tolabs','err_struct_tolrel','err_thermal_tol','err_damage_tol',& ! found FEM parameter for spectral/Abaqus/Marc build
|
case ('err_struct_tolabs','err_struct_tolrel','err_thermal_tol','err_damage_tol', & ! found FEM parameter for spectral/Abaqus/Marc build
|
||||||
'residualstiffness', 'itmaxfem', 'itminfem','maxcutbackfem','integrationorder',&
|
'itmaxfem', 'itminfem','maxcutbackfem','maxstaggerediter','integrationorder',&
|
||||||
'structorder','thermalorder', 'damageorder','petsc_optionsfem')
|
'structorder','thermalorder', 'damageorder','petsc_optionsfem')
|
||||||
call IO_warning(40_pInt,ext_msg=tag)
|
call IO_warning(40_pInt,ext_msg=tag)
|
||||||
#endif
|
#endif
|
||||||
|
@ -521,6 +524,7 @@ subroutine numerics_init
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! gradient parameter
|
! gradient parameter
|
||||||
write(6,'(a24,1x,es8.1)') ' charLength: ',charLength
|
write(6,'(a24,1x,es8.1)') ' charLength: ',charLength
|
||||||
|
write(6,'(a24,1x,es8.1)') ' residualStiffness: ',residualStiffness
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! openMP parameter
|
! openMP parameter
|
||||||
|
@ -562,6 +566,7 @@ subroutine numerics_init
|
||||||
write(6,'(a24,1x,i8)') ' itmaxFEM: ',itmaxFEM
|
write(6,'(a24,1x,i8)') ' itmaxFEM: ',itmaxFEM
|
||||||
write(6,'(a24,1x,i8)') ' itminFEM: ',itminFEM
|
write(6,'(a24,1x,i8)') ' itminFEM: ',itminFEM
|
||||||
write(6,'(a24,1x,i8)') ' maxCutBackFEM: ',maxCutBackFEM
|
write(6,'(a24,1x,i8)') ' maxCutBackFEM: ',maxCutBackFEM
|
||||||
|
write(6,'(a24,1x,i8)') ' maxStaggeredIter: ',stagItMax
|
||||||
write(6,'(a24,1x,i8)') ' integrationOrder: ',integrationOrder
|
write(6,'(a24,1x,i8)') ' integrationOrder: ',integrationOrder
|
||||||
write(6,'(a24,1x,i8)') ' structOrder: ',structOrder
|
write(6,'(a24,1x,i8)') ' structOrder: ',structOrder
|
||||||
write(6,'(a24,1x,i8)') ' thermalOrder: ',thermalOrder
|
write(6,'(a24,1x,i8)') ' thermalOrder: ',thermalOrder
|
||||||
|
@ -571,7 +576,6 @@ subroutine numerics_init
|
||||||
write(6,'(a24,1x,es8.1)') ' err_struct_tolRel: ',err_struct_tolRel
|
write(6,'(a24,1x,es8.1)') ' err_struct_tolRel: ',err_struct_tolRel
|
||||||
write(6,'(a24,1x,es8.1)') ' err_thermal_tol: ',err_thermal_tol
|
write(6,'(a24,1x,es8.1)') ' err_thermal_tol: ',err_thermal_tol
|
||||||
write(6,'(a24,1x,es8.1)') ' err_damage_tol: ',err_damage_tol
|
write(6,'(a24,1x,es8.1)') ' err_damage_tol: ',err_damage_tol
|
||||||
write(6,'(a24,1x,es8.1)') ' residualStiffness: ',residualStiffness
|
|
||||||
write(6,'(a24,1x,a)') ' PETSc_optionsFEM: ',trim(petsc_optionsFEM)
|
write(6,'(a24,1x,a)') ' PETSc_optionsFEM: ',trim(petsc_optionsFEM)
|
||||||
#endif
|
#endif
|
||||||
endif mainProcess3
|
endif mainProcess3
|
||||||
|
@ -616,6 +620,7 @@ subroutine numerics_init
|
||||||
if (maxVolDiscr_RGC <= 0.0_pReal) call IO_error(301_pInt,ext_msg='maxVolDiscr_RGC')
|
if (maxVolDiscr_RGC <= 0.0_pReal) call IO_error(301_pInt,ext_msg='maxVolDiscr_RGC')
|
||||||
if (volDiscrMod_RGC < 0.0_pReal) call IO_error(301_pInt,ext_msg='volDiscrMod_RGC')
|
if (volDiscrMod_RGC < 0.0_pReal) call IO_error(301_pInt,ext_msg='volDiscrMod_RGC')
|
||||||
if (volDiscrPow_RGC <= 0.0_pReal) call IO_error(301_pInt,ext_msg='volDiscrPw_RGC')
|
if (volDiscrPow_RGC <= 0.0_pReal) call IO_error(301_pInt,ext_msg='volDiscrPw_RGC')
|
||||||
|
if (residualStiffness <= 0.0_pReal) call IO_error(301_pInt,ext_msg='residualStiffness')
|
||||||
#ifdef Spectral
|
#ifdef Spectral
|
||||||
if (itmax <= 1_pInt) call IO_error(301_pInt,ext_msg='itmax')
|
if (itmax <= 1_pInt) call IO_error(301_pInt,ext_msg='itmax')
|
||||||
if (itmin > itmax .or. itmin < 1_pInt) call IO_error(301_pInt,ext_msg='itmin')
|
if (itmin > itmax .or. itmin < 1_pInt) call IO_error(301_pInt,ext_msg='itmin')
|
||||||
|
@ -642,11 +647,11 @@ subroutine numerics_init
|
||||||
if (itminFEM > itmaxFEM .or. &
|
if (itminFEM > itmaxFEM .or. &
|
||||||
itminFEM < 0_pInt) call IO_error(301_pInt,ext_msg='itminFEM')
|
itminFEM < 0_pInt) call IO_error(301_pInt,ext_msg='itminFEM')
|
||||||
if (maxCutBackFEM < 0_pInt) call IO_error(301_pInt,ext_msg='maxCutBackFEM')
|
if (maxCutBackFEM < 0_pInt) call IO_error(301_pInt,ext_msg='maxCutBackFEM')
|
||||||
|
if (stagItMax < 0_pInt) call IO_error(301_pInt,ext_msg='maxStaggeredIter')
|
||||||
if (err_struct_tolRel <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_struct_tolRel')
|
if (err_struct_tolRel <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_struct_tolRel')
|
||||||
if (err_struct_tolAbs <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_struct_tolAbs')
|
if (err_struct_tolAbs <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_struct_tolAbs')
|
||||||
if (err_thermal_tol <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_thermal_tol')
|
if (err_thermal_tol <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_thermal_tol')
|
||||||
if (err_damage_tol <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_damage_tol')
|
if (err_damage_tol <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_damage_tol')
|
||||||
if (residualStiffness <= 0.0_pReal) call IO_error(301_pInt,ext_msg='residualStiffness')
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
end subroutine numerics_init
|
end subroutine numerics_init
|
||||||
|
|
Loading…
Reference in New Issue