MODFLOW 6  version 6.7.0.dev1
USGS Modular Hydrologic Model
RouterBase.f90
Go to the documentation of this file.
2  use kindmodule, only: i4b, lgp
4  implicit none
5  private
6 
7  type, abstract, public :: routerbasetype
8  logical(LGP) :: halo_activated !< when true, the halo has been activated
9  integer(I4B) :: nr_virt_solutions !< number of virtual solution to be routed
10  !< (allowing more efficient routing of virtual data)
11  contains
12  procedure(initialize_if), deferred :: initialize
13  procedure(route_all_if), deferred :: route_all
14  procedure(route_sln_if), deferred :: route_sln
15  procedure(finalize_if), deferred :: finalize
16  procedure(destroy_if), deferred :: destroy
17  end type routerbasetype
18 
19  abstract interface
20  subroutine initialize_if(this)
21  import routerbasetype
22  class(routerbasetype) :: this
23  end subroutine initialize_if
24  subroutine route_all_if(this, stage)
25  import routerbasetype, i4b
26  class(routerbasetype) :: this
27  integer(I4B) :: stage
28  end subroutine route_all_if
29  subroutine route_sln_if(this, virtual_sol, stage)
31  class(routerbasetype) :: this
32  type(virtualsolutiontype) :: virtual_sol
33  integer(I4B) :: stage
34  end subroutine route_sln_if
35  subroutine finalize_if(this)
36  import routerbasetype
37  class(routerbasetype) :: this
38  end subroutine finalize_if
39  subroutine destroy_if(this)
40  import routerbasetype
41  class(routerbasetype) :: this
42  end subroutine destroy_if
43  end interface
44 
45 end module routerbasemodule
This module defines variable data types.
Definition: kind.f90:8
This bundles all virtual data for a particular solution.