1module kgen_utils_mod 2 3INTEGER, PARAMETER :: kgen_dp = selected_real_kind(15, 307) 4 5type check_t 6 logical :: Passed 7 integer :: numFatal 8 integer :: numTotal 9 integer :: numIdentical 10 integer :: numWarning 11 integer :: VerboseLevel 12 real(kind=kgen_dp) :: tolerance 13 real(kind=kgen_dp) :: minvalue 14end type check_t 15 16public kgen_dp, check_t, kgen_init_check, kgen_print_check 17 18contains 19 20subroutine kgen_init_check(check, tolerance, minvalue) 21 type(check_t), intent(inout) :: check 22 real(kind=kgen_dp), intent(in), optional :: tolerance 23 real(kind=kgen_dp), intent(in), optional :: minvalue 24 25 check%Passed = .TRUE. 26 check%numFatal = 0 27 check%numWarning = 0 28 check%numTotal = 0 29 check%numIdentical = 0 30 check%VerboseLevel = 1 31 if(present(tolerance)) then 32 check%tolerance = tolerance 33 else 34 check%tolerance = 1.0D-15 35 endif 36 if(present(minvalue)) then 37 check%minvalue = minvalue 38 else 39 check%minvalue = 1.0D-15 40 endif 41end subroutine kgen_init_check 42 43subroutine kgen_print_check(kname, check) 44 character(len=*) :: kname 45 type(check_t), intent(in) :: check 46 47 write (*,*) 48 write (*,*) TRIM(kname),' KGENPrtCheck: Tolerance for normalized RMS: ',check%tolerance 49 write (*,*) TRIM(kname),' KGENPrtCheck: Number of variables checked: ',check%numTotal 50 write (*,*) TRIM(kname),' KGENPrtCheck: Number of Identical results: ',check%numIdentical 51 write (*,*) TRIM(kname),' KGENPrtCheck: Number of warnings detected: ',check%numWarning 52 write (*,*) TRIM(kname),' KGENPrtCheck: Number of fatal errors detected: ', check%numFatal 53 54 if (check%numFatal> 0) then 55 write(*,*) TRIM(kname),' KGENPrtCheck: verification FAILED' 56 else 57 write(*,*) TRIM(kname),' KGENPrtCheck: verification PASSED' 58 endif 59end subroutine kgen_print_check 60 61end module 62