1 2! KGEN-generated Fortran source file 3! 4! Filename : kernel_driver.f90 5! Generated at: 2015-07-31 20:35:44 6! KGEN version: 0.4.13 7 8 9PROGRAM kernel_driver 10 USE rrtmg_sw_rad, ONLY : rrtmg_sw 11 USE rrsw_tbl, ONLY : kgen_read_externs_rrsw_tbl 12 USE rrsw_kg19, ONLY : kgen_read_externs_rrsw_kg19 13 USE rrsw_kg18, ONLY : kgen_read_externs_rrsw_kg18 14 USE rrsw_kg17, ONLY : kgen_read_externs_rrsw_kg17 15 USE rrsw_kg16, ONLY : kgen_read_externs_rrsw_kg16 16 USE rrsw_wvn, ONLY : kgen_read_externs_rrsw_wvn 17 USE rrsw_vsn, ONLY : kgen_read_externs_rrsw_vsn 18 USE rrsw_kg24, ONLY : kgen_read_externs_rrsw_kg24 19 USE rrsw_kg25, ONLY : kgen_read_externs_rrsw_kg25 20 USE rrsw_kg26, ONLY : kgen_read_externs_rrsw_kg26 21 USE rrsw_kg27, ONLY : kgen_read_externs_rrsw_kg27 22 USE rrsw_kg20, ONLY : kgen_read_externs_rrsw_kg20 23 USE rrsw_kg21, ONLY : kgen_read_externs_rrsw_kg21 24 USE rrsw_kg22, ONLY : kgen_read_externs_rrsw_kg22 25 USE rrsw_kg23, ONLY : kgen_read_externs_rrsw_kg23 26 USE rrsw_kg28, ONLY : kgen_read_externs_rrsw_kg28 27 USE rrsw_kg29, ONLY : kgen_read_externs_rrsw_kg29 28 USE rrsw_con, ONLY : kgen_read_externs_rrsw_con 29 USE kgen_utils_mod, ONLY : kgen_dp, check_t, kgen_init_check, kgen_print_check 30 31 IMPLICIT NONE 32 33 INTEGER :: kgen_mpi_rank 34 CHARACTER(LEN=16) ::kgen_mpi_rank_conv 35 INTEGER, DIMENSION(3), PARAMETER :: kgen_mpi_rank_at = (/ 1, 4, 8 /) 36 INTEGER :: kgen_ierr, kgen_unit 37 INTEGER :: kgen_repeat_counter 38 INTEGER :: kgen_counter 39 CHARACTER(LEN=16) :: kgen_counter_conv 40 INTEGER, DIMENSION(3), PARAMETER :: kgen_counter_at = (/ 1, 10, 5 /) 41 CHARACTER(LEN=1024) :: kgen_filepath 42 INTEGER :: lchnk 43 INTEGER :: ncol 44 INTEGER :: nlay 45 46 DO kgen_repeat_counter = 0, 8 47 kgen_counter = kgen_counter_at(mod(kgen_repeat_counter, 3)+1) 48 WRITE( kgen_counter_conv, * ) kgen_counter 49 kgen_mpi_rank = kgen_mpi_rank_at(mod(kgen_repeat_counter, 3)+1) 50 WRITE( kgen_mpi_rank_conv, * ) kgen_mpi_rank 51 kgen_filepath = "../data/spcvmc_sw." // trim(adjustl(kgen_counter_conv)) // "." // trim(adjustl(kgen_mpi_rank_conv)) 52 kgen_unit = kgen_get_newunit() 53 OPEN (UNIT=kgen_unit, FILE=kgen_filepath, STATUS="OLD", ACCESS="STREAM", FORM="UNFORMATTED", ACTION="READ", IOSTAT=kgen_ierr, CONVERT="BIG_ENDIAN") 54 WRITE (*,*) 55 IF ( kgen_ierr /= 0 ) THEN 56 CALL kgen_error_stop( "FILE OPEN ERROR: " // trim(adjustl(kgen_filepath)) ) 57 END IF 58 WRITE (*,*) 59 WRITE (*,*) "** Verification against '" // trim(adjustl(kgen_filepath)) // "' **" 60 61 CALL kgen_read_externs_rrsw_tbl(kgen_unit) 62 CALL kgen_read_externs_rrsw_kg19(kgen_unit) 63 CALL kgen_read_externs_rrsw_kg18(kgen_unit) 64 CALL kgen_read_externs_rrsw_kg17(kgen_unit) 65 CALL kgen_read_externs_rrsw_kg16(kgen_unit) 66 CALL kgen_read_externs_rrsw_wvn(kgen_unit) 67 CALL kgen_read_externs_rrsw_vsn(kgen_unit) 68 CALL kgen_read_externs_rrsw_kg24(kgen_unit) 69 CALL kgen_read_externs_rrsw_kg25(kgen_unit) 70 CALL kgen_read_externs_rrsw_kg26(kgen_unit) 71 CALL kgen_read_externs_rrsw_kg27(kgen_unit) 72 CALL kgen_read_externs_rrsw_kg20(kgen_unit) 73 CALL kgen_read_externs_rrsw_kg21(kgen_unit) 74 CALL kgen_read_externs_rrsw_kg22(kgen_unit) 75 CALL kgen_read_externs_rrsw_kg23(kgen_unit) 76 CALL kgen_read_externs_rrsw_kg28(kgen_unit) 77 CALL kgen_read_externs_rrsw_kg29(kgen_unit) 78 CALL kgen_read_externs_rrsw_con(kgen_unit) 79 80 ! driver variables 81 READ(UNIT=kgen_unit) lchnk 82 READ(UNIT=kgen_unit) ncol 83 READ(UNIT=kgen_unit) nlay 84 85 call rrtmg_sw(lchnk, ncol, nlay, kgen_unit) 86 87 CLOSE (UNIT=kgen_unit) 88 END DO 89 CONTAINS 90 91 ! write subroutines 92 ! No subroutines 93 FUNCTION kgen_get_newunit() RESULT(new_unit) 94 INTEGER, PARAMETER :: UNIT_MIN=100, UNIT_MAX=1000000 95 LOGICAL :: is_opened 96 INTEGER :: nunit, new_unit, counter 97 98 new_unit = -1 99 DO counter=UNIT_MIN, UNIT_MAX 100 inquire(UNIT=counter, OPENED=is_opened) 101 IF (.NOT. is_opened) THEN 102 new_unit = counter 103 EXIT 104 END IF 105 END DO 106 END FUNCTION 107 108 SUBROUTINE kgen_error_stop( msg ) 109 IMPLICIT NONE 110 CHARACTER(LEN=*), INTENT(IN) :: msg 111 112 WRITE (*,*) msg 113 STOP 1 114 END SUBROUTINE 115 116 117 END PROGRAM kernel_driver 118