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