MODFLOW 6  version 6.8.0.dev0
USGS Modular Hydrologic Model
methodsubcellmodule Module Reference

Data Types

type  methodsubcelltype
 Abstract base type for subcell tracking methods. More...
 

Functions/Subroutines

subroutine assess (this, particle, cell_defn, tmax)
 Assess conditions before tracking. More...
 
subroutine subcellexit (this, particle)
 Particle exits a subcell. More...
 
integer(i4b) function get_level (this)
 Get the subcell method's level. More...
 

Function/Subroutine Documentation

◆ assess()

subroutine methodsubcellmodule::assess ( class(methodsubcelltype), intent(inout)  this,
type(particletype), intent(inout), pointer  particle,
type(celldefntype), intent(inout), pointer  cell_defn,
real(dp), intent(in)  tmax 
)
private

Definition at line 25 of file MethodSubcell.f90.

26  ! dummy
27  class(MethodSubcellType), intent(inout) :: this
28  type(ParticleType), pointer, intent(inout) :: particle
29  type(CellDefnType), pointer, intent(inout) :: cell_defn
30  real(DP), intent(in) :: tmax
31  ! noop

◆ get_level()

integer(i4b) function methodsubcellmodule::get_level ( class(methodsubcelltype), intent(in)  this)
private

Definition at line 72 of file MethodSubcell.f90.

73  class(MethodSubcellType), intent(in) :: this
74  integer(I4B) :: level
75  level = level_subfeature

◆ subcellexit()

subroutine methodsubcellmodule::subcellexit ( class(methodsubcelltype), intent(inout)  this,
type(particletype), intent(inout), pointer  particle 
)
private

Definition at line 35 of file MethodSubcell.f90.

36  class(MethodSubcellType), intent(inout) :: this
37  type(ParticleType), pointer, intent(inout) :: particle
38  class(ParticleEventType), pointer :: event
39  ! local
40  integer(I4B) :: i, nhist
41  class(*), pointer :: prev
42 
43  allocate (subcellexiteventtype :: event)
44  select type (event)
45  type is (subcellexiteventtype)
46  event%isc = particle%itrdomain(level_subfeature)
47  event%exit_face = particle%iboundary(level_subfeature)
48  end select
49  call this%events%broadcast(particle, event)
50  if (particle%icycwin == 0) then
51  deallocate (event)
52  return
53  end if
54  if (this%forms_cycle(particle, event)) then
55  print *, "Cyclic subcell pathline detected"
56  nhist = particle%history%Count()
57  do i = 1, nhist
58  prev => particle%history%GetItem(i)
59  select type (prev)
60  class is (particleeventtype)
61  print *, "Back ", nhist - i + 1, ": ", prev%get_text()
62  end select
63  end do
64  print *, "Current :", event%get_text()
65  call pstop(1, 'Cyclic subcell pathline detected, aborting')
66  else
67  call this%store_event(particle, event)
68  end if
Here is the call graph for this function: