!WRF:MEDIATION_LAYER:
!
SUBROUTINE med_initialdata_input_ptr ( grid , config_flags ) 1,5
USE module_domain
USE module_configure
IMPLICIT NONE
TYPE (domain) , POINTER :: grid
TYPE (grid_config_rec_type) , INTENT(IN) :: config_flags
INTERFACE
SUBROUTINE med_initialdata_input ( grid , config_flags )
USE module_domain
USE module_configure
TYPE (domain) :: grid
TYPE (grid_config_rec_type) , INTENT(IN) :: config_flags
END SUBROUTINE med_initialdata_input
END INTERFACE
CALL med_initialdata_input
( grid , config_flags )
END SUBROUTINE med_initialdata_input_ptr
SUBROUTINE med_initialdata_input ( grid , config_flags ) 2,25
! Driver layer
USE module_domain
USE module_io_domain
USE module_timing
use module_io
! Model layer
USE module_configure
USE module_bc_time_utilities
USE module_utility
IMPLICIT NONE
! Interface
INTERFACE
SUBROUTINE start_domain ( grid , allowed_to_read ) ! comes from module_start in appropriate dyn_ directory
USE module_domain
TYPE (domain) grid
LOGICAL, INTENT(IN) :: allowed_to_read
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
LOGICAL, EXTERNAL :: wrf_dm_on_monitor
CALL nl_get_restart( 1, restart )
IF ( .NOT. restart ) THEN
! Initialize the mother domain.
grid%input_from_file = .true.
IF ( grid%input_from_file ) THEN
CALL wrf_debug ( 1 , 'wrf main: calling open_r_dataset for wrfinput' )
IF ( wrf_dm_on_monitor() ) CALL start_timing
! typically <date> will not be part of input_inname but allow for it
CALL domain_clock_get
( grid, current_timestr=timestr )
CALL construct_filename2a
( inpname , config_flags%input_inname , grid%id , 2 , timestr )
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
! registry-generated code that reads the variable set defined on a given stream
#include "fine_stream_input.inc"
CALL close_dataset
( fid , config_flags , "DATASET=INPUT" )
IF ( wrf_dm_on_monitor() ) THEN
WRITE ( message , FMT = '("processing wrfinput file (stream 0) for domain ",I8)' ) grid%id
CALL end_timing
( TRIM(message) )
ENDIF
#ifdef MOVE_NESTS
#if ( EM_CORE == 1 )
grid%nest_pos = grid%ht
where ( grid%nest_pos .gt. 0 ) grid%nest_pos = grid%nest_pos + 500. ! make a cliff
#endif
#endif
ENDIF
grid%imask_nostag = 1
grid%imask_xstag = 1
grid%imask_ystag = 1
grid%imask_xystag = 1
#if (EM_CORE == 1)
grid%press_adj = .FALSE.
#endif
CALL start_domain
( grid , .TRUE. )
ELSE
IF ( wrf_dm_on_monitor() ) CALL start_timing
CALL domain_clock_get
( grid, current_timestr=timestr )
CALL construct_filename2a
( rstname , config_flags%rst_inname , grid%id , 2 , timestr )
WRITE(message,*)'RESTART run: opening ',TRIM(rstname),' for reading'
CALL wrf_message
( 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" )
IF ( wrf_dm_on_monitor() ) THEN
WRITE ( message , FMT = '("processing restart file for domain ",I8)' ) grid%id
CALL end_timing
( TRIM(message) )
ENDIF
grid%imask_nostag = 1
grid%imask_xstag = 1
grid%imask_ystag = 1
grid%imask_xystag = 1
#if (EM_CORE == 1)
grid%press_adj = .FALSE.
#endif
CALL start_domain
( grid , .TRUE. )
ENDIF
RETURN
END SUBROUTINE med_initialdata_input
SUBROUTINE med_shutdown_io ( grid , config_flags ) 4,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" )
IF ( grid%lbc_fid > 0 ) CALL close_dataset
( grid%lbc_fid , config_flags , "DATASET=BOUNDARY" )
! registry generated closes for auxhist streams
#include "shutdown_closes.inc"
CALL wrf_ioexit
( ierr ) ! shut down the quilt I/O
RETURN
END SUBROUTINE med_shutdown_io
SUBROUTINE med_add_config_info_to_grid ( grid ) 1,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