From f90523eb07dac2855823397fcd9729818a8fc93f Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Fri, 27 May 2022 07:28:34 +0200 Subject: [PATCH] more flexible reporting --- src/IO.f90 | 25 +++++++++++++++++-------- src/Marc/materialpoint_Marc.f90 | 3 ++- src/grid/spectral_utilities.f90 | 2 +- src/phase_mechanical.f90 | 8 ++++---- 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/IO.f90 b/src/IO.f90 index 244d34845..f0d8c9df4 100644 --- a/src/IO.f90 +++ b/src/IO.f90 @@ -95,7 +95,7 @@ function IO_readlines(fileName) result(fileContent) if (endPos - startPos > pStringLen-1) then line = rawData(startPos:startPos+pStringLen-1) 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. endif else @@ -574,16 +574,19 @@ end subroutine IO_error !-------------------------------------------------------------------------------------------------- !> @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, optional, intent(in) :: el,ip - character(len=*), optional, intent(in) :: ext_msg + character(len=*), optional, intent(in) :: ext_msg,label1,label2 + integer, optional, intent(in) :: ID1,ID2 character(len=:), allocatable :: msg 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) case (47) 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)' write(IO_STDERR,formatString) '│ ',trim(ext_msg), '│' endif - if (present(el)) & - write(IO_STDERR,'(a19,1x,i9,44x,a3)') ' │ at element ',el, '│' - if (present(ip)) & - write(IO_STDERR,'(a19,1x,i9,44x,a3)') ' │ at IP ',ip, '│' + if (present(label1)) then + write(formatString,'(a,i6.6,a,i6.6,a)') '(1x,a7,a',max(1,len_trim(label1)),',i9,',& + max(1,72-len_trim(label1)-9-7),'x,a)' + 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)') ' └'//IO_DIVIDER//'┘' flush(IO_STDERR) diff --git a/src/Marc/materialpoint_Marc.f90 b/src/Marc/materialpoint_Marc.f90 index 79b06b80d..2ad98109d 100644 --- a/src/Marc/materialpoint_Marc.f90 +++ b/src/Marc/materialpoint_Marc.f90 @@ -240,7 +240,8 @@ subroutine materialpoint_general(mode, ffn, ffn1, temperature_inp, dt, elFE, ip, 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) jacobian = materialpoint_dcsdE(1:6,1:6,ip,elCP) diff --git a/src/grid/spectral_utilities.f90 b/src/grid/spectral_utilities.f90 index c8321f83f..0c114f8cb 100644 --- a/src/grid/spectral_utilities.f90 +++ b/src/grid/spectral_utilities.f90 @@ -249,7 +249,7 @@ subroutine spectral_utilities_init() case('fftw_exhaustive') FFTW_planner_flag = FFTW_EXHAUSTIVE 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 end select diff --git a/src/phase_mechanical.f90 b/src/phase_mechanical.f90 index 88b86a8d9..afde549fc 100644 --- a/src/phase_mechanical.f90 +++ b/src/phase_mechanical.f90 @@ -1167,8 +1167,8 @@ module function phase_mechanical_dPdF(Delta_t,co,ce) result(dPdF) enddo; enddo call math_invert(temp_99,error,math_3333to99(lhs_3333)) if (error) then - call IO_warning(warning_ID=600, & - ext_msg='inversion error in analytic tangent calculation') + call IO_warning(600,'inversion error in analytic tangent calculation', & + label1='phase',ID1=ph,label2='entry',ID2=en) dFidS = 0.0_pReal else 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)) if (error) then - call IO_warning(warning_ID=600, & - ext_msg='inversion error in analytic tangent calculation') + call IO_warning(600,'inversion error in analytic tangent calculation', & + label1='phase',ID1=ph,label2='entry',ID2=en) dSdF = rhs_3333 else dSdF = math_mul3333xx3333(math_99to3333(temp_99),rhs_3333)