From 44d867297423cf33736340b111dc28f6f114a5dc Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 17 Apr 2023 16:24:07 +0200 Subject: [PATCH] OMP Critial around format_w_error --- src/utils/format_w_error.irp.f | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/utils/format_w_error.irp.f b/src/utils/format_w_error.irp.f index 1378d367..ce2665a7 100644 --- a/src/utils/format_w_error.irp.f +++ b/src/utils/format_w_error.irp.f @@ -1,7 +1,7 @@ subroutine format_w_error(value,error,size_nb,max_nb_digits,format_value,str_error) implicit none - + BEGIN_DOC ! Format for double precision, value(error) END_DOC @@ -14,7 +14,7 @@ subroutine format_w_error(value,error,size_nb,max_nb_digits,format_value,str_err ! out ! | format_value | character | string FX.Y for the format | - ! | str_error | character | string of the error | + ! | str_error | character | string of the error | ! internal ! | str_size | character | size in string format | @@ -33,6 +33,7 @@ subroutine format_w_error(value,error,size_nb,max_nb_digits,format_value,str_err character(len=20) :: str_size, str_nb_digits, str_exp integer :: nb_digits + !$OMP CRITICAL ! max_nb_digit: Y max ! size_nb = Size of the double: X (FX.Y) write(str_size,'(I3)') size_nb @@ -40,17 +41,17 @@ subroutine format_w_error(value,error,size_nb,max_nb_digits,format_value,str_err ! Error write(str_exp,'(1pE20.0)') error str_error = trim(adjustl(str_exp)) - + ! Number of digit: Y (FX.Y) from the exponent str_nb_digits = str_exp(19:20) read(str_nb_digits,*) nb_digits - + ! If the error is 0d0 - if (error <= 1d-16) then + if (error <= 1d-16) then write(str_nb_digits,*) max_nb_digits endif - ! If the error is too small + ! If the error is too small if (nb_digits > max_nb_digits) then write(str_nb_digits,*) max_nb_digits str_error(1:1) = '0' @@ -65,7 +66,8 @@ subroutine format_w_error(value,error,size_nb,max_nb_digits,format_value,str_err ! FX.Y,A1,A1,A1 for value(str_error) !string = 'F'//trim(adjustl(str_size))//'.'//trim(adjustl(str_nb_digits))//',A1,A1,A1' - ! FX.Y just for the value + ! FX.Y just for the value format_value = 'F'//trim(adjustl(str_size))//'.'//trim(adjustl(str_nb_digits)) + !$OMP END CRITICAL end