intsharp logo advection

logo produced via intsharplogo_1_rev.yaml — output folder: logo, YAML, and GIF

Components

All components are registered via decorators and can be extended by adding new implementations. Each component has its own page with governing equations and file location.

Solvers

The correct 1D/2D implementation is selected automatically based on your domain.

  • upwind — First-order upwind advection
  • compressible Euler — 1D FV (single-phase + 5-eq two-phase), 1D DG (single-phase P1/P2/P3), and 2D FV two-phase RTI with optional gravity source; stiffened-gas EOS, AUSM+UP/HLLC/HLLE flux options, analytical convergence mode

Time Integrators

  • euler — Forward Euler
  • rk4 — 4th-order Runge-Kutta
  • ssp_rk3 — Strong-stability-preserving RK3 (used internally by 1D DG Euler)

Interface Sharpening

The correct 1D/2D implementation is selected automatically based on your domain. Per-field method selection is supported via sharpening_method in the field config.

  • pm — Parameswaran-Mandal
  • pm_cal — PM with calibrated cubic coefficient (same page as pm)
  • cl — Chiu-Lin (isotropic diffusion)
  • olsson_kreiss — Olsson-Kreiss CLS (2007, anisotropic diffusion)
  • acls — Accurate CLS (Desjardins et al. 2008, algebraic phi_inv normal)
  • cls_2010 — CLS with mapped normal (2010)
  • lcls_2012 — Localized CLS (2012)
  • lcls_2014 — Localized CLS with variable pseudo-time (2014)
  • cls_2015 — CLS with mapping function (2015)
  • cls_2017 — CLS with inverse transform (2017)
  • scls — Self-Correcting Level Set (Chiodi-Desjardins 2018)
  • lpm — Localized PM (1st-order, derived from LCLS via PM approximations)
  • cfo — Conservative First-Order (1st-order, conservative, flux-potential derived)

Experimental methods vcac and glcls remain in the codebase; they are omitted from the current paper benchmark suite.

Boundary Conditions

The same boundary type applies to 1D (two ends) or 2D (four edges); the code applies it per edge based on domain dimension.

Output Monitors

Extending Components

New components are registered via decorators:

from intsharp.registry import register_solver

@register_solver("my_scheme")
def my_advect(field_values, velocity, dx, dt, bc):
    # Your implementation
    return updated_values

Available decorators:

  • @register_solver("name")
  • @register_timestepper("name")
  • @register_sharpening("name")
  • @register_monitor("name")
intsharp/registry.py