MODFLOW 6  version 6.5.0.dev2
MODFLOW 6 Code Documentation
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  !< (allowing more efficient routing of virtual data)
10  contains
11  procedure(initialize_if), deferred :: initialize
12  procedure(route_all_if), deferred :: route_all
13  procedure(route_sln_if), deferred :: route_sln
14  procedure(destroy_if), deferred :: destroy
15  end type routerbasetype
16 
17  abstract interface
18  subroutine initialize_if(this)
19  import routerbasetype
20  class(routerbasetype) :: this
21  end subroutine initialize_if
22  subroutine route_all_if(this, stage)
23  import routerbasetype, i4b
24  class(routerbasetype) :: this
25  integer(I4B) :: stage
26  end subroutine route_all_if
27  subroutine route_sln_if(this, virtual_sol, stage)
29  class(routerbasetype) :: this
30  type(virtualsolutiontype) :: virtual_sol
31  integer(I4B) :: stage
32  end subroutine route_sln_if
33  subroutine destroy_if(this)
34  import routerbasetype
35  class(routerbasetype) :: this
36  end subroutine destroy_if
37  end interface
38 
39 end module routerbasemodule
This module defines variable data types.
Definition: kind.f90:8
This bundles all virtual data for a particular solution.