module abstract_get_wrf_nmm_ensperts_mod type, abstract :: abstract_get_wrf_nmm_ensperts_class contains procedure(get_wrf_nmm_ensperts), deferred, pass(this) :: get_wrf_nmm_ensperts procedure(convert_binary_nmm_ens), deferred, pass(this) :: convert_binary_nmm_ens end type abstract_get_wrf_nmm_ensperts_class abstract interface subroutine get_wrf_nmm_ensperts(this,en_perts,nelen,region_lat_ens,region_lon_ens,ps_bar) use gsi_bundlemod, only: gsi_bundle use kinds, only: r_kind,i_kind,r_single import abstract_get_wrf_nmm_ensperts_class implicit none class(abstract_get_wrf_nmm_ensperts_class),intent(inout) :: this type(gsi_bundle),allocatable, intent(inout) :: en_perts(:,:) integer(i_kind), intent(in ):: nelen real(r_kind),allocatable, intent(inout):: region_lat_ens(:,:),region_lon_ens(:,:) real(r_single),dimension(:,:,:),allocatable, intent(inout):: ps_bar end subroutine get_wrf_nmm_ensperts end interface abstract interface subroutine convert_binary_nmm_ens(this) import abstract_get_wrf_nmm_ensperts_class implicit none class(abstract_get_wrf_nmm_ensperts_class),intent(inout) :: this end subroutine convert_binary_nmm_ens end interface end module abstract_get_wrf_nmm_ensperts_mod