!WRF:MEDIATION_LAYER:
!
SUBROUTINE med_initialdata_input ( grid , config_flags ) 2,24
! Driver layer
USE module_domain
USE module_io_domain
USE module_timing
! Model layer
USE module_configure
USE module_bc_time_utilities
USE esmf_mod
IMPLICIT NONE
! Interface
INTERFACE
SUBROUTINE start_domain ( grid ) ! comes from module_start in appropriate dyn_ directory
USE module_domain
TYPE (domain) grid
END SUBROUTINE start_domain
END INTERFACE
! Arguments
TYPE(domain) :: grid
TYPE (grid_config_rec_type) , INTENT(IN) :: config_flags
! Local
INTEGER :: fid , ierr , myproc
CHARACTER (LEN=80) :: inpname , rstname, timestr
CHARACTER (LEN=80) :: message
LOGICAL :: restart
TYPE(ESMF_Time) :: CurrTime
#if ( GRAPS_CORE == 1 )
CALL update_graps_config_flags ( restart )
#endif
CALL get_restart
( restart )
IF ( .NOT. restart ) THEN
! Initialize the mother domain.
CALL start_timing
grid%input_from_file = .true.
IF ( grid%input_from_file ) THEN
CALL wrf_debug ( 100 , 'wrf main: calling open_r_dataset for wrfinput' )
CALL construct_filename1
( inpname , 'wrfinput' , grid%id , 2 )
CALL open_r_dataset
( fid, TRIM(inpname) , grid , config_flags , "DATASET=INPUT", ierr )
IF ( ierr .NE. 0 ) THEN
WRITE( wrf_err_message , * ) 'program wrf: error opening ',TRIM(inpname),' for reading ierr=',ierr
CALL WRF_ERROR_FATAL
( wrf_err_message )
ENDIF
CALL wrf_debug ( 100 , 'wrf: calling input_model_input' )
CALL input_model_input
( fid , grid , config_flags , ierr )
CALL wrf_debug
( 100 , 'wrf: back from input_model_input' )
CALL close_dataset
( fid , config_flags , "DATASET=INPUT" )
ENDIF
CALL start_domain
( grid )
ELSE
#if 0
CALL wrf_get_myproc
( myproc )
CALL construct_filename3
( rstname , 'wrfrst' , grid%id , 2 , time_step_begin_restart , 6 , myproc, 4 )
#else
CALL construct_filename1
( rstname , 'wrfrst' , grid%id , 2 )
CALL ESMF_ClockGetCurrTime( grid%domain_clock, CurrTime=CurrTime, rc=ierr )
CALL ESMF_TimeGetString( CurrTime, timestr, rc=ierr )
rstname = TRIM(rstname) // "_" // TRIM(timestr)
#endif
WRITE(message,*)'opening ',TRIM(rstname),' for reading'
CALL wrf_debug
( 0 , message )
CALL open_r_dataset
( fid , TRIM(rstname) , grid , config_flags , "DATASET=RESTART", ierr )
IF ( ierr .NE. 0 ) THEN
WRITE( message , '("program wrf: error opening ",A32," for reading")') TRIM(rstname)
CALL WRF_ERROR_FATAL
( message )
ENDIF
CALL input_restart
( fid, grid , config_flags , ierr )
CALL close_dataset
( fid , config_flags , "DATASET=RESTART" )
CALL start_domain
( grid )
ENDIF
RETURN
END SUBROUTINE med_initialdata_input
SUBROUTINE med_shutdown_io ( grid , config_flags ) 3,6
! Driver layer
USE module_domain
USE module_io_domain
! Model layer
USE module_configure
IMPLICIT NONE
! Arguments
TYPE(domain) :: grid
TYPE (grid_config_rec_type) , INTENT(IN) :: config_flags
! Local
CHARACTER (LEN=80) :: message
INTEGER :: ierr
IF ( grid%oid > 0 ) CALL close_dataset
( grid%oid , config_flags , "DATASET=HISTORY" )
#ifdef QUILT_NO
IF ( grid%auxhist1_oid > 0 ) CALL close_dataset
( grid%auxhist1_oid , config_flags , "DATASET=AUXHIST1" )
#endif
CALL wrf_ioexit
( ierr ) ! shut down the quilt I/O
RETURN
END SUBROUTINE med_shutdown_io
SUBROUTINE med_add_config_info_to_grid ( grid ) 2,2
USE module_domain
USE module_configure
IMPLICIT NONE
! Input data.
TYPE(domain) , TARGET :: grid
#define SOURCE_RECORD model_config_rec %
#define SOURCE_REC_DEX (grid%id)
#define DEST_RECORD grid %
#include <config_assigns.inc>
RETURN
END SUBROUTINE med_add_config_info_to_grid