more flexible reporting

This commit is contained in:
Martin Diehl 2022-05-27 07:28:34 +02:00
parent 5f0ae4fe7a
commit f90523eb07
4 changed files with 24 additions and 14 deletions

View File

@ -95,7 +95,7 @@ function IO_readlines(fileName) result(fileContent)
if (endPos - startPos > pStringLen-1) then if (endPos - startPos > pStringLen-1) then
line = rawData(startPos:startPos+pStringLen-1) line = rawData(startPos:startPos+pStringLen-1)
if (.not. warned) then if (.not. warned) then
call IO_warning(207,ext_msg=trim(fileName),el=l) call IO_warning(207,trim(fileName),label1='line',ID1=l)
warned = .true. warned = .true.
endif endif
else else
@ -574,16 +574,19 @@ end subroutine IO_error
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
!> @brief Write warning statement to standard out. !> @brief Write warning statement to standard out.
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
subroutine IO_warning(warning_ID,el,ip,ext_msg) subroutine IO_warning(warning_ID,ext_msg,label1,ID1,label2,ID2)
integer, intent(in) :: warning_ID integer, intent(in) :: warning_ID
integer, optional, intent(in) :: el,ip character(len=*), optional, intent(in) :: ext_msg,label1,label2
character(len=*), optional, intent(in) :: ext_msg integer, optional, intent(in) :: ID1,ID2
character(len=:), allocatable :: msg character(len=:), allocatable :: msg
character(len=pStringLen) :: formatString character(len=pStringLen) :: formatString
if (present(ID1) .and. .not. present(label1)) error stop 'warning value without label (1)'
if (present(ID2) .and. .not. present(label2)) error stop 'warning value without label (2)'
select case (warning_ID) select case (warning_ID)
case (47) case (47)
msg = 'invalid parameter for FFTW, using FFTW_PATIENT' msg = 'invalid parameter for FFTW, using FFTW_PATIENT'
@ -612,10 +615,16 @@ subroutine IO_warning(warning_ID,el,ip,ext_msg)
max(1,72-len_trim(ext_msg)-4),'x,a)' max(1,72-len_trim(ext_msg)-4),'x,a)'
write(IO_STDERR,formatString) '│ ',trim(ext_msg), '│' write(IO_STDERR,formatString) '│ ',trim(ext_msg), '│'
endif endif
if (present(el)) & if (present(label1)) then
write(IO_STDERR,'(a19,1x,i9,44x,a3)') ' │ at element ',el, '│' write(formatString,'(a,i6.6,a,i6.6,a)') '(1x,a7,a',max(1,len_trim(label1)),',i9,',&
if (present(ip)) & max(1,72-len_trim(label1)-9-7),'x,a)'
write(IO_STDERR,'(a19,1x,i9,44x,a3)') ' │ at IP ',ip, '│' write(IO_STDERR,formatString) '│ at ',trim(label1),ID1, '│'
endif
if (present(label2)) then
write(formatString,'(a,i6.6,a,i6.6,a)') '(1x,a7,a',max(1,len_trim(label2)),',i9,',&
max(1,72-len_trim(label2)-9-7),'x,a)'
write(IO_STDERR,formatString) '│ at ',trim(label2),ID2, '│'
endif
write(IO_STDERR,'(a,69x,a)') ' │', '│' write(IO_STDERR,'(a,69x,a)') ' │', '│'
write(IO_STDERR,'(a)') ' └'//IO_DIVIDER//'┘' write(IO_STDERR,'(a)') ' └'//IO_DIVIDER//'┘'
flush(IO_STDERR) flush(IO_STDERR)

View File

@ -240,7 +240,8 @@ subroutine materialpoint_general(mode, ffn, ffn1, temperature_inp, dt, elFE, ip,
endif endif
if (all(abs(materialpoint_dcsdE(1:6,1:6,ip,elCP)) < 1e-10_pReal)) call IO_warning(601,elCP,ip) if (all(abs(materialpoint_dcsdE(1:6,1:6,ip,elCP)) < 1e-10_pReal)) &
call IO_warning(601,label1='element (CP)',ID1=elCP,label2='IP',ID2=ip)
cauchyStress = materialpoint_cs (1:6, ip,elCP) cauchyStress = materialpoint_cs (1:6, ip,elCP)
jacobian = materialpoint_dcsdE(1:6,1:6,ip,elCP) jacobian = materialpoint_dcsdE(1:6,1:6,ip,elCP)

View File

@ -249,7 +249,7 @@ subroutine spectral_utilities_init()
case('fftw_exhaustive') case('fftw_exhaustive')
FFTW_planner_flag = FFTW_EXHAUSTIVE FFTW_planner_flag = FFTW_EXHAUSTIVE
case default case default
call IO_warning(warning_ID=47,ext_msg=trim(IO_lc(num_grid%get_asString('fftw_plan_mode')))) call IO_warning(47,trim(num_grid%get_asString('fftw_plan_mode')))
FFTW_planner_flag = FFTW_MEASURE FFTW_planner_flag = FFTW_MEASURE
end select end select

View File

@ -1167,8 +1167,8 @@ module function phase_mechanical_dPdF(Delta_t,co,ce) result(dPdF)
enddo; enddo enddo; enddo
call math_invert(temp_99,error,math_3333to99(lhs_3333)) call math_invert(temp_99,error,math_3333to99(lhs_3333))
if (error) then if (error) then
call IO_warning(warning_ID=600, & call IO_warning(600,'inversion error in analytic tangent calculation', &
ext_msg='inversion error in analytic tangent calculation') label1='phase',ID1=ph,label2='entry',ID2=en)
dFidS = 0.0_pReal dFidS = 0.0_pReal
else else
dFidS = math_mul3333xx3333(math_99to3333(temp_99),rhs_3333) dFidS = math_mul3333xx3333(math_99to3333(temp_99),rhs_3333)
@ -1201,8 +1201,8 @@ module function phase_mechanical_dPdF(Delta_t,co,ce) result(dPdF)
call math_invert(temp_99,error,math_eye(9)+math_3333to99(lhs_3333)) call math_invert(temp_99,error,math_eye(9)+math_3333to99(lhs_3333))
if (error) then if (error) then
call IO_warning(warning_ID=600, & call IO_warning(600,'inversion error in analytic tangent calculation', &
ext_msg='inversion error in analytic tangent calculation') label1='phase',ID1=ph,label2='entry',ID2=en)
dSdF = rhs_3333 dSdF = rhs_3333
else else
dSdF = math_mul3333xx3333(math_99to3333(temp_99),rhs_3333) dSdF = math_mul3333xx3333(math_99to3333(temp_99),rhs_3333)