MODFLOW 6  version 6.7.0.dev2
USGS Modular Hydrologic Model
utvdschememodule::utvdschemetype Interface Reference

Total Variation Diminishing (TVD) interpolation scheme. More...

Inheritance diagram for utvdschememodule::utvdschemetype:
Inheritance graph
Collaboration diagram for utvdschememodule::utvdschemetype:
Collaboration graph

Private Member Functions

procedure compute
 
procedure, private find_local_extrema
 
procedure, private limiter
 
type(utvdschemetype) function constructor (dis, fmi, gradient)
 

Private Attributes

class(disbasetype), pointer dis
 
type(tspfmitype), pointer fmi
 
class(igradienttype), pointer gradient
 
integer(i4b) limiter_id = 2
 

Detailed Description

This class implements a high-resolution, TVD interpolation scheme for use in transport modeling. It extends a generic interpolation scheme interface and supports multiple TVD limiters (van Leer, Koren, Superbee, van Albada, etc.) for controlling numerical diffusion and oscillations. The default limiter is van Leer, but others can be selected by changing the limiter_id member.

The scheme uses a combination of low-order upwind and high-order limited terms to compute face concentrations. The high-order term is constructed using a gradient-based virtual node value, following the approach described by Darwish et al. An additional TVD clamp is applied to the virtual node value to enforce TVD compliance, especially on grids where the original method may not guarantee monotonicity.

  • Supports both structured and unstructured grids via polymorphic discretization and gradient objects.
  • The limiter can be selected via the limiter_id member (default is van Leer).
  • The method find_local_extrema finds the minimum and maximum values among the current cell and its neighbors, which is used to enforce the TVD condition.
  • The compute method calculates the face coefficients for the transport equation.

Definition at line 35 of file UTVDScheme.f90.

Member Function/Subroutine Documentation

◆ compute()

procedure utvdschememodule::utvdschemetype::compute
private

Definition at line 42 of file UTVDScheme.f90.

◆ constructor()

type(utvdschemetype) function utvdschememodule::utvdschemetype::constructor ( class(disbasetype), intent(in), pointer  dis,
type(tspfmitype), intent(in), pointer  fmi,
class(igradienttype), intent(in), allocatable, target  gradient 
)
private

Definition at line 53 of file UTVDScheme.f90.

55  ! -- return
56  type(UTVDSchemeType) :: interpolation_scheme
57  ! --dummy
58  class(DisBaseType), pointer, intent(in) :: dis
59  type(TspFmiType), pointer, intent(in) :: fmi
60  class(IGradientType), allocatable, target, intent(in) :: gradient
61 
62  interpolation_scheme%dis => dis
63  interpolation_scheme%fmi => fmi
64  interpolation_scheme%gradient => gradient
65 

◆ find_local_extrema()

procedure, private utvdschememodule::utvdschemetype::find_local_extrema
private

Definition at line 44 of file UTVDScheme.f90.

◆ limiter()

procedure, private utvdschememodule::utvdschemetype::limiter
private

Definition at line 45 of file UTVDScheme.f90.

Here is the call graph for this function:

Member Data Documentation

◆ dis

class(disbasetype), pointer utvdschememodule::utvdschemetype::dis
private

Definition at line 37 of file UTVDScheme.f90.

37  class(DisBaseType), pointer :: dis

◆ fmi

type(tspfmitype), pointer utvdschememodule::utvdschemetype::fmi
private

Definition at line 38 of file UTVDScheme.f90.

38  type(TspFmiType), pointer :: fmi

◆ gradient

class(igradienttype), pointer utvdschememodule::utvdschemetype::gradient
private

Definition at line 39 of file UTVDScheme.f90.

39  class(IGradientType), pointer :: gradient

◆ limiter_id

integer(i4b) utvdschememodule::utvdschemetype::limiter_id = 2
private

Definition at line 40 of file UTVDScheme.f90.

40  integer(I4B) :: limiter_id = 2 ! default to van Leer limiter

The documentation for this interface was generated from the following file: