Merge remote-tracking branch 'origin/release-v4.6.1'
[WRF.git] / hydro / OrchestratorLayer / io_manager.F90
blob2d99c9dde42ce243a9dc043dd3115c038d35b555
1 module io_manager_base
2   use netcdf_layer_base
3   implicit none
5   type :: IOManager_
6      logical :: parallel = .false.
7      class(NetCDF_layer_),allocatable :: netcdf_layer
8    contains
9   end type IOManager_
11   interface IOManager_
12      module procedure IOManager_init
13   end interface IOManager_
15 contains
17   type(IOManager_) function IOManager_init(parallel)
18     implicit none
20     logical, optional, intent(in) :: parallel
22     if(.not.present(parallel)) then
23        IOManager_init%parallel = .false.
24     else
25        IOManager_init%parallel = parallel
26     end if
28     if( IOManager_init%parallel .eqv. .false.) then
29        allocate(NetCDF_serial_ :: IOManager_init%netcdf_layer)
30        IOManager_init%netcdf_layer%open_file => nf90_open
31     else
32        allocate(NetCDF_parallel_ :: IOManager_init%netcdf_layer)
33        IOManager_init%netcdf_layer%open_file => nf90_open
34     end if
36   end function IOManager_init
38 end module io_manager_base