1 2! KGEN-generated Fortran source file 3! 4! Filename : kernel_driver.f90 5! Generated at: 2015-07-14 19:56:41 6! KGEN version: 0.4.13 7 8 9PROGRAM kernel_driver 10 USE mo_imp_sol, ONLY : imp_sol 11 USE kgen_utils_mod, ONLY : kgen_dp, check_t, kgen_init_check, kgen_print_check 12 13 IMPLICIT NONE 14 15 INTEGER :: kgen_mpi_rank 16 CHARACTER(LEN=16) ::kgen_mpi_rank_conv 17 INTEGER, DIMENSION(3), PARAMETER :: kgen_mpi_rank_at = (/ 0, 100, 300 /) 18 INTEGER :: kgen_ierr, kgen_unit 19 INTEGER :: kgen_repeat_counter 20 INTEGER :: kgen_counter 21 CHARACTER(LEN=16) :: kgen_counter_conv 22 INTEGER, DIMENSION(2), PARAMETER :: kgen_counter_at = (/ 10, 5 /) 23 CHARACTER(LEN=1024) :: kgen_filepath 24 25 DO kgen_repeat_counter = 0, 5 26 kgen_counter = kgen_counter_at(mod(kgen_repeat_counter, 2)+1) 27 WRITE( kgen_counter_conv, * ) kgen_counter 28 kgen_mpi_rank = kgen_mpi_rank_at(mod(kgen_repeat_counter, 3)+1) 29 WRITE( kgen_mpi_rank_conv, * ) kgen_mpi_rank 30 kgen_filepath = "../data/lu_slv." // trim(adjustl(kgen_counter_conv)) // "." // trim(adjustl(kgen_mpi_rank_conv)) 31 kgen_unit = kgen_get_newunit() 32 OPEN (UNIT=kgen_unit, FILE=kgen_filepath, STATUS="OLD", ACCESS="STREAM", FORM="UNFORMATTED", ACTION="READ", IOSTAT=kgen_ierr, CONVERT="BIG_ENDIAN") 33 WRITE (*,*) 34 IF ( kgen_ierr /= 0 ) THEN 35 CALL kgen_error_stop( "FILE OPEN ERROR: " // trim(adjustl(kgen_filepath)) ) 36 END IF 37 WRITE (*,*) 38 WRITE (*,*) "** Verification against '" // trim(adjustl(kgen_filepath)) // "' **" 39 40 41 ! driver variables 42 ! Not kernel driver input 43 44 call imp_sol(kgen_unit) 45 46 CLOSE (UNIT=kgen_unit) 47 END DO 48 CONTAINS 49 50 ! write subroutines 51 ! No subroutines 52 FUNCTION kgen_get_newunit() RESULT(new_unit) 53 INTEGER, PARAMETER :: UNIT_MIN=100, UNIT_MAX=1000000 54 LOGICAL :: is_opened 55 INTEGER :: nunit, new_unit, counter 56 57 new_unit = -1 58 DO counter=UNIT_MIN, UNIT_MAX 59 inquire(UNIT=counter, OPENED=is_opened) 60 IF (.NOT. is_opened) THEN 61 new_unit = counter 62 EXIT 63 END IF 64 END DO 65 END FUNCTION 66 67 SUBROUTINE kgen_error_stop( msg ) 68 IMPLICIT NONE 69 CHARACTER(LEN=*), INTENT(IN) :: msg 70 71 WRITE (*,*) msg 72 STOP 1 73 END SUBROUTINE 74 75 76 END PROGRAM kernel_driver 77