module startup_initialconds 3,2 !----------------------------------------------------------------------- ! ! Purpose: ! Module to set the initial conditions for model startup. ! !----------------------------------------------------------------------- ! $Id$ !----------------------------------------------------------------------- use shr_kind_mod, only: r8 => shr_kind_r8 use spmd_utils, only: masterproc use pio, only: file_desc_t implicit none private ! ! Public methods ! public setup_initial ! Initial setup to prepare to read in initial conditions public initial_conds ! Read in initial conditions public initial_file_get_id public topo_file_get_id public close_initial_file type(file_desc_t), pointer :: ncid_ini, ncid_topo !======================================================================= contains !======================================================================= function initial_file_get_id() type(file_desc_t), pointer :: initial_file_get_id initial_file_get_id => ncid_ini end function initial_file_get_id function topo_file_get_id() type(file_desc_t), pointer :: topo_file_get_id topo_file_get_id => ncid_topo end function topo_file_get_id ! !======================================================================= ! subroutine setup_initial( ) 1,10 !----------------------------------------------------------------------- ! ! Purpose: Do initial setup needed for startup initial conditions. Open ! files and start time-manager. ! !----------------------------------------------------------------------- use phys_grid, only: phys_grid_init use filenames, only: ncdata, bnd_topo use ioFileMod, only: getfil use cam_pio_utils, only: cam_pio_openfile use pio, only: pio_nowrite use readinitial, only: read_initial ! ! Input arguments ! !----------------------------------------------------------------------- include 'netcdf.inc' !----------------------------------------------------------------------- character(len=256) :: ncdata_loc ! filepath of initial file on local disk character(len=256) :: bnd_topo_loc ! filepath of topo file on local disk ! Open initial, topography, and landfrac datasets call getfil (ncdata, ncdata_loc) allocate(ncid_ini) call cam_pio_openfile(ncid_ini, ncdata_loc, PIO_NOWRITE, .TRUE.) ! Backward compatibility: look for topography data on initial file if topo file name not provided. if (trim(bnd_topo) /= 'bnd_topo' .and. len_trim(bnd_topo) > 0) then allocate(ncid_topo) call getfil(bnd_topo, bnd_topo_loc) call cam_pio_openfile(ncid_topo, bnd_topo_loc, PIO_NOWRITE) else ncid_topo => ncid_ini end if ! ! Check for consistent settings on initial dataset ! call read_initial (ncid_ini) end subroutine setup_initial ! !======================================================================= ! subroutine initial_conds( dyn_in ) 1,16 !----------------------------------------------------------------------- ! ! Purpose: ! Convert from inital to startup_initialconds module. Define initial ! conditions for first run of case ! ! Method: ! ! Author: ! Original version: CCM1 ! Standardized: L. Bath, June 1992 ! T. Acker, March 1996 ! Reviewed: B. Boville, April 1996 ! !----------------------------------------------------------------------- use inidat, only: read_inidat use buffer, only: initialize_buffer use comsrf, only: initialize_comsrf use radae, only: initialize_radbuffer use phys_buffer, only: pbuf_allocate use dyn_comp, only: dyn_import_t use cam_pio_utils, only: clean_iodesc_list #if (defined BFB_CAM_SCAM_IOP ) use history_defaults, only: initialize_iop_history #endif !----------------------------------------------------------------------- implicit none !------------------------------Parameters------------------------------- !---------------------------Arguments----------------------------------- type(dyn_import_t), intent(inout) :: dyn_in !---------------------------Local variables----------------------------- ! ! Initialize buffer, comsrf, and radbuffer variables ! (which must occur after the call to phys_grid_init) ! call pbuf_allocate('global') call initialize_buffer call initialize_comsrf call initialize_radbuffer #if (defined BFB_CAM_SCAM_IOP ) call initialize_iop_history #endif ! ! Read in initial data ! call read_inidat( ncid_ini, ncid_topo, dyn_in ) call clean_iodesc_list() call print_memusage ('post-inidat') end subroutine initial_conds subroutine close_initial_file 1 use pio, only: pio_closefile if(associated(ncid_ini)) then if(.not. associated(ncid_ini, target=ncid_topo)) then call pio_closefile(ncid_topo) deallocate(ncid_topo) end if call pio_closefile(ncid_ini) deallocate(ncid_ini) nullify(ncid_ini) nullify(ncid_topo) end if end subroutine close_initial_file ! !======================================================================= ! end module startup_initialconds