set tolerances to useful values and renamed them.
allowed "keyword = value" in numerics.config (simply removing "=" from line)
This commit is contained in:
parent
e8c63976b5
commit
2dc985f558
|
@ -450,8 +450,9 @@ subroutine AL_formResidual(in,x_scal,f_scal,dummy,ierr)
|
||||||
polarBeta, &
|
polarBeta, &
|
||||||
err_stress_tolrel, &
|
err_stress_tolrel, &
|
||||||
err_stress_tolabs, &
|
err_stress_tolabs, &
|
||||||
err_f_tol, &
|
err_f_tolabs, &
|
||||||
err_p_tol, &
|
err_p_tolabs, &
|
||||||
|
err_f_p_tolrel, &
|
||||||
err_stress_tolabs
|
err_stress_tolabs
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_intOut
|
IO_intOut
|
||||||
|
@ -610,8 +611,9 @@ subroutine AL_converged(snes_local,PETScIter,xnorm,snorm,fnorm,reason,dummy,ierr
|
||||||
use numerics, only: &
|
use numerics, only: &
|
||||||
itmax, &
|
itmax, &
|
||||||
itmin, &
|
itmin, &
|
||||||
err_f_tol, &
|
err_f_tolabs, &
|
||||||
err_p_tol, &
|
err_p_tolabs, &
|
||||||
|
err_f_p_tolrel, &
|
||||||
err_stress_tolabs, &
|
err_stress_tolabs, &
|
||||||
err_stress_tolrel
|
err_stress_tolrel
|
||||||
use FEsolving, only: &
|
use FEsolving, only: &
|
||||||
|
@ -632,8 +634,8 @@ use numerics, only: &
|
||||||
mismatch_p_tol, &
|
mismatch_p_tol, &
|
||||||
stressBC_tol
|
stressBC_tol
|
||||||
|
|
||||||
mismatch_f_tol = max(maxval(abs(F_aim-math_I3))*err_stress_tolrel,err_f_tol)
|
mismatch_f_tol = max(maxval(abs(F_aim-math_I3))*err_f_p_tolrel,err_f_tolabs)
|
||||||
mismatch_p_tol = max(maxval(abs(P_av)) *err_stress_tolrel,err_p_tol)
|
mismatch_p_tol = max(maxval(abs(P_av)) *err_f_p_tolrel,err_p_tolabs)
|
||||||
stressBC_tol = max(maxval(abs(P_av)) *err_stress_tolrel,err_stress_tolabs)
|
stressBC_tol = max(maxval(abs(P_av)) *err_stress_tolrel,err_stress_tolabs)
|
||||||
|
|
||||||
write(6,'(1/,a)') ' ... reporting .............................................................'
|
write(6,'(1/,a)') ' ... reporting .............................................................'
|
||||||
|
|
|
@ -450,8 +450,9 @@ subroutine Polarisation_formResidual(in,x_scal,f_scal,dummy,ierr)
|
||||||
polarBeta, &
|
polarBeta, &
|
||||||
err_stress_tolrel, &
|
err_stress_tolrel, &
|
||||||
err_stress_tolabs, &
|
err_stress_tolabs, &
|
||||||
err_f_tol, &
|
err_f_tolabs, &
|
||||||
err_p_tol, &
|
err_p_tolabs, &
|
||||||
|
err_f_p_tolrel, &
|
||||||
err_stress_tolabs
|
err_stress_tolabs
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
IO_intOut
|
IO_intOut
|
||||||
|
@ -617,8 +618,9 @@ subroutine Polarisation_converged(snes_local,PETScIter,xnorm,snorm,fnorm,reason,
|
||||||
use numerics, only: &
|
use numerics, only: &
|
||||||
itmax, &
|
itmax, &
|
||||||
itmin, &
|
itmin, &
|
||||||
err_f_tol, &
|
err_f_tolabs, &
|
||||||
err_p_tol, &
|
err_p_tolabs, &
|
||||||
|
err_f_p_tolrel, &
|
||||||
err_stress_tolabs, &
|
err_stress_tolabs, &
|
||||||
err_stress_tolrel
|
err_stress_tolrel
|
||||||
use FEsolving, only: &
|
use FEsolving, only: &
|
||||||
|
@ -639,8 +641,8 @@ subroutine Polarisation_converged(snes_local,PETScIter,xnorm,snorm,fnorm,reason,
|
||||||
mismatch_p_tol, &
|
mismatch_p_tol, &
|
||||||
stressBC_tol
|
stressBC_tol
|
||||||
|
|
||||||
mismatch_f_tol = max(maxval(abs(F_aim-math_I3))*err_stress_tolrel,err_f_tol)
|
mismatch_f_tol = max(maxval(abs(F_aim-math_I3))*err_f_p_tolrel,err_f_tolabs)
|
||||||
mismatch_p_tol = max(maxval(abs(P_av)) *err_stress_tolrel,err_p_tol)
|
mismatch_p_tol = max(maxval(abs(P_av)) *err_f_p_tolrel,err_p_tolabs)
|
||||||
stressBC_tol = max(maxval(abs(P_av)) *err_stress_tolrel,err_stress_tolabs)
|
stressBC_tol = max(maxval(abs(P_av)) *err_stress_tolrel,err_stress_tolabs)
|
||||||
|
|
||||||
write(6,'(1/,a)') ' ... reporting .............................................................'
|
write(6,'(1/,a)') ' ... reporting .............................................................'
|
||||||
|
|
|
@ -57,8 +57,9 @@ fixed_seed 0 # put any number larger than zero, intege
|
||||||
err_div_tol 5.0e-4 # Div(P)/avg(P)*meter
|
err_div_tol 5.0e-4 # Div(P)/avg(P)*meter
|
||||||
err_stress_tolrel 0.01 # relative tolerance for fulfillment of stress BC
|
err_stress_tolrel 0.01 # relative tolerance for fulfillment of stress BC
|
||||||
err_stress_tolabs 1.0e3 # absolute tolerance for fulfillment of stress BC
|
err_stress_tolabs 1.0e3 # absolute tolerance for fulfillment of stress BC
|
||||||
err_f_tol 1e-7 # tolerance for compatible and incompatible deformation gradient fields in AL solver
|
err_f_tolabs 1.0e-8_pReal # absolute tolerance mismatch F
|
||||||
err_p_tol 1e-7 # tolerance for compatible and incompatible stress fields in AL solver
|
err_p_tolabs 1.0e2_pReal # absolute tolerance mismatch P
|
||||||
|
err_f_p_tolrel 1.0e-5_pReal # relative tolerance for mismatch F and P
|
||||||
fftw_timelimit -1.0 # timelimit of plan creation for FFTW, see manual on www.fftw.org, Default -1.0: disable timelimit
|
fftw_timelimit -1.0 # timelimit of plan creation for FFTW, see manual on www.fftw.org, Default -1.0: disable timelimit
|
||||||
rotation_tol 1.0e-12 # tolerance of rotation specified in loadcase, Default 1.0e-12: first guess
|
rotation_tol 1.0e-12 # tolerance of rotation specified in loadcase, Default 1.0e-12: first guess
|
||||||
fftw_plan_mode FFTW_PATIENT # reads the planing-rigor flag, see manual on www.fftw.org, Default FFTW_PATIENT: use patient planner flag
|
fftw_plan_mode FFTW_PATIENT # reads the planing-rigor flag, see manual on www.fftw.org, Default FFTW_PATIENT: use patient planner flag
|
||||||
|
|
|
@ -86,10 +86,11 @@ module numerics
|
||||||
#ifdef Spectral
|
#ifdef Spectral
|
||||||
real(pReal), protected, public :: &
|
real(pReal), protected, public :: &
|
||||||
err_div_tol = 5.0e-4_pReal, & !< Div(P)/avg(P)*meter
|
err_div_tol = 5.0e-4_pReal, & !< Div(P)/avg(P)*meter
|
||||||
err_stress_tolrel = 0.01_pReal, & !< relative tolerance for fullfillment of stress BC and of mismatch F and P in percent
|
err_stress_tolrel = 0.01_pReal, & !< relative tolerance for fullfillment of stress BC
|
||||||
err_stress_tolabs = 1.0e3_pReal, & !< absolute tolerance for fullfillment of stress BC
|
err_stress_tolabs = 1.0e3_pReal, & !< absolute tolerance for fullfillment of stress BC
|
||||||
err_f_tol = 1.0e-7_pReal, & !< absolute tolerance mismatch F
|
err_f_tolabs = 1.0e-8_pReal, & !< absolute tolerance mismatch F
|
||||||
err_p_tol = 1.0e3_pReal, & !< absolute tolerance mismatch P
|
err_p_tolabs = 1.0e2_pReal, & !< absolute tolerance mismatch P
|
||||||
|
err_f_p_tolrel = 1.0e-5_pReal, & !< relative tolerance for mismatch F and P
|
||||||
fftw_timelimit = -1.0_pReal, & !< sets the timelimit of plan creation for FFTW, see manual on www.fftw.org, Default -1.0: disable timelimit
|
fftw_timelimit = -1.0_pReal, & !< sets the timelimit of plan creation for FFTW, see manual on www.fftw.org, Default -1.0: disable timelimit
|
||||||
rotation_tol = 1.0e-12_pReal, & !< tolerance of rotation specified in loadcase, Default 1.0e-12: first guess
|
rotation_tol = 1.0e-12_pReal, & !< tolerance of rotation specified in loadcase, Default 1.0e-12: first guess
|
||||||
polarAlpha = 1.0_pReal, & !< polarization scheme parameter 0.0 < alpha < 2.0. alpha = 1.0 ==> AL scheme, alpha = 2.0 ==> accelerated scheme
|
polarAlpha = 1.0_pReal, & !< polarization scheme parameter 0.0 < alpha < 2.0. alpha = 1.0 ==> AL scheme, alpha = 2.0 ==> accelerated scheme
|
||||||
|
@ -148,9 +149,11 @@ subroutine numerics_init
|
||||||
integer(pInt), parameter :: FILEUNIT = 300_pInt ,&
|
integer(pInt), parameter :: FILEUNIT = 300_pInt ,&
|
||||||
maxNchunks = 2_pInt
|
maxNchunks = 2_pInt
|
||||||
!$ integer :: gotDAMASK_NUM_THREADS = 1
|
!$ integer :: gotDAMASK_NUM_THREADS = 1
|
||||||
|
integer :: i ! no pInt
|
||||||
integer(pInt), dimension(1+2*maxNchunks) :: positions
|
integer(pInt), dimension(1+2*maxNchunks) :: positions
|
||||||
character(len=65536) :: tag
|
character(len=65536) :: &
|
||||||
character(len=65536) :: line
|
tag ,&
|
||||||
|
line
|
||||||
!$ character(len=6) DAMASK_NumThreadsString ! environment variable DAMASK_NUM_THREADS
|
!$ character(len=6) DAMASK_NumThreadsString ! environment variable DAMASK_NUM_THREADS
|
||||||
|
|
||||||
write(6,'(/,a)') ' <<<+- numerics init -+>>>'
|
write(6,'(/,a)') ' <<<+- numerics init -+>>>'
|
||||||
|
@ -175,6 +178,9 @@ subroutine numerics_init
|
||||||
line = ''
|
line = ''
|
||||||
do while (trim(line) /= '#EOF#') ! read thru sections of phase part
|
do while (trim(line) /= '#EOF#') ! read thru sections of phase part
|
||||||
line = IO_read(fileunit)
|
line = IO_read(fileunit)
|
||||||
|
do i=1,len(line)
|
||||||
|
if(line(i:i) == '=') line(i:i) = ' ' ! also allow keyword = value version
|
||||||
|
enddo
|
||||||
if (IO_isBlank(line)) cycle ! skip empty lines
|
if (IO_isBlank(line)) cycle ! skip empty lines
|
||||||
positions = IO_stringPos(line,maxNchunks)
|
positions = IO_stringPos(line,maxNchunks)
|
||||||
tag = IO_lc(IO_stringValue(line,positions,1_pInt)) ! extract key
|
tag = IO_lc(IO_stringValue(line,positions,1_pInt)) ! extract key
|
||||||
|
@ -304,18 +310,20 @@ subroutine numerics_init
|
||||||
petsc_options = trim(line(positions(4):))
|
petsc_options = trim(line(positions(4):))
|
||||||
case ('myspectralsolver')
|
case ('myspectralsolver')
|
||||||
myspectralsolver = IO_lc(IO_stringValue(line,positions,2_pInt))
|
myspectralsolver = IO_lc(IO_stringValue(line,positions,2_pInt))
|
||||||
case ('err_f_tol')
|
case ('err_f_tolabs')
|
||||||
err_f_tol = IO_floatValue(line,positions,2_pInt)
|
err_f_tolabs = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('err_p_tol')
|
case ('err_p_tolabs')
|
||||||
err_p_tol = IO_floatValue(line,positions,2_pInt)
|
err_p_tolabs = IO_floatValue(line,positions,2_pInt)
|
||||||
|
case ('err_f_p_tolrel')
|
||||||
|
err_f_p_tolrel = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('polaralpha')
|
case ('polaralpha')
|
||||||
polarAlpha = IO_floatValue(line,positions,2_pInt)
|
polarAlpha = IO_floatValue(line,positions,2_pInt)
|
||||||
case ('polarbeta')
|
case ('polarbeta')
|
||||||
polarBeta = IO_floatValue(line,positions,2_pInt)
|
polarBeta = IO_floatValue(line,positions,2_pInt)
|
||||||
#endif
|
#endif
|
||||||
#ifndef PETSc
|
#ifndef PETSc
|
||||||
case ('myspectralsolver', 'petsc_options','err_f_tol', 'err_p_tol', &
|
case ('myspectralsolver', 'petsc_options','err_f_tolabs', 'err_p_tolabs', &
|
||||||
'polaralpha','polarBeta') ! found PETSc parameter, but compiled without PETSc
|
'err_f_p_tolrel','polaralpha','polarBeta') ! found PETSc parameter, but compiled without PETSc
|
||||||
call IO_warning(41_pInt,ext_msg=tag)
|
call IO_warning(41_pInt,ext_msg=tag)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
@ -323,7 +331,7 @@ subroutine numerics_init
|
||||||
case ('err_div_tol','err_stress_tolrel','err_stress_tolabs',& ! found spectral parameter for FEM build
|
case ('err_div_tol','err_stress_tolrel','err_stress_tolabs',& ! found spectral parameter for FEM build
|
||||||
'itmax', 'itmin','memory_efficient','fftw_timelimit','fftw_plan_mode','myspectralsolver', &
|
'itmax', 'itmin','memory_efficient','fftw_timelimit','fftw_plan_mode','myspectralsolver', &
|
||||||
'rotation_tol','divergence_correction','update_gamma','petsc_options','myfilter', &
|
'rotation_tol','divergence_correction','update_gamma','petsc_options','myfilter', &
|
||||||
'err_f_tol', 'err_p_tol', 'maxcutback','polaralpha','polarbeta')
|
'err_f_tolabs', 'err_p_tolabs', 'err_f_p_tolrel', 'maxcutback','polaralpha','polarbeta')
|
||||||
call IO_warning(40_pInt,ext_msg=tag)
|
call IO_warning(40_pInt,ext_msg=tag)
|
||||||
#endif
|
#endif
|
||||||
case default ! found unknown keyword
|
case default ! found unknown keyword
|
||||||
|
@ -433,8 +441,9 @@ subroutine numerics_init
|
||||||
write(6,'(a24,1x,i8)') ' divergence_correction: ',divergence_correction
|
write(6,'(a24,1x,i8)') ' divergence_correction: ',divergence_correction
|
||||||
write(6,'(a24,1x,L8,/)') ' update_gamma: ',update_gamma
|
write(6,'(a24,1x,L8,/)') ' update_gamma: ',update_gamma
|
||||||
#ifdef PETSc
|
#ifdef PETSc
|
||||||
write(6,'(a24,1x,es8.1)') ' err_f_tol: ',err_f_tol
|
write(6,'(a24,1x,es8.1)') ' err_f_tolabs: ',err_f_tolabs
|
||||||
write(6,'(a24,1x,es8.1)') ' err_p_tol: ',err_p_tol
|
write(6,'(a24,1x,es8.1)') ' err_p_tolabs: ',err_p_tolabs
|
||||||
|
write(6,'(a24,1x,es8.1)') ' err_f_p_tolrel: ',err_f_p_tolrel
|
||||||
write(6,'(a24,1x,es8.1)') ' polarAlpha: ',polarAlpha
|
write(6,'(a24,1x,es8.1)') ' polarAlpha: ',polarAlpha
|
||||||
write(6,'(a24,1x,es8.1)') ' polarBeta: ',polarBeta
|
write(6,'(a24,1x,es8.1)') ' polarBeta: ',polarBeta
|
||||||
write(6,'(a24,1x,a)') ' myspectralsolver: ',trim(myspectralsolver)
|
write(6,'(a24,1x,a)') ' myspectralsolver: ',trim(myspectralsolver)
|
||||||
|
@ -494,13 +503,13 @@ subroutine numerics_init
|
||||||
if (update_gamma .and. &
|
if (update_gamma .and. &
|
||||||
.not. memory_efficient) call IO_error(error_ID = 847_pInt)
|
.not. memory_efficient) call IO_error(error_ID = 847_pInt)
|
||||||
#ifdef PETSc
|
#ifdef PETSc
|
||||||
if (err_f_tol <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_f_tol')
|
if (err_f_tolabs <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_f_tolabs')
|
||||||
if (err_p_tol <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_p_tol')
|
if (err_p_tolabs <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_p_tolabs')
|
||||||
|
if (err_f_p_tolrel <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_f_p_tolrel')
|
||||||
if (polarAlpha <= 0.0_pReal .or. &
|
if (polarAlpha <= 0.0_pReal .or. &
|
||||||
polarAlpha > 2.0_pReal) call IO_error(301_pInt,ext_msg='polarAlpha')
|
polarAlpha > 2.0_pReal) call IO_error(301_pInt,ext_msg='polarAlpha')
|
||||||
if (polarBeta <= 0.0_pReal .or. &
|
if (polarBeta <= 0.0_pReal .or. &
|
||||||
polarBeta > 2.0_pReal) call IO_error(301_pInt,ext_msg='polarBeta')
|
polarBeta > 2.0_pReal) call IO_error(301_pInt,ext_msg='polarBeta')
|
||||||
if (err_p_tol <= 0.0_pReal) call IO_error(301_pInt,ext_msg='err_p_tol')
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue