FastIterativeMethod.jl

FastIterativeMethod.jl is a small, focused implementation of the Fast Iterative Method (FIM) for eikonal-type problems on tetrahedral meshes.

This quickstart shows how to construct the caches provided by the package and run the solver. The package is backend-agnostic for conductivity evaluation so you can plug in a custom evaluator (or use the provided constant-conductivity helper).

Basic usage

  1. Create a conductivity evaluator cache (the package defines ConductivityEvaluatorCache{Nothing} for a constant conductivity).
  2. Build a FIMCache with mesh vertices, cell connectivity and initial solution Φ.
  3. Call solve!(fim_cache) to update fim_cache.Φ in-place.

The public API exported by the package (important constructors and helper functions):

  • ConductivityEvaluatorCache - cache wrapper that stores conductivity and evaluation points. Designed to be extended by backend-specific implementations.
  • FIMCache - main cache holding vertices, cells, vertex-to-cell map, active-list, Φ-field and conductivity evaluator.
  • solve!(fim_cache, vertex_set=...) - run the FIM solver; updates fim_cache.Φ in-place.
  • create_custom_quadrature_points(indices) - helper to generate custom evaluation points used internally when reinitializing a cell.

There are also simple active-list implementations exported for convenience:

  • init_active_list(::Type{BitVector}, length) and init_active_list(::Type{UniqueVector{T}}, length)
  • reset_active_list!, make_vertex_active!, make_vertex_inactive!, isactive_condition, get_active_vertex.

Minimal example

TODO: Add an example here

Extending conductivity backends

The ConductivityEvaluatorCache type and the evaluate, reinit! and change_conductivity! functions are designed to be extended for use with other packages such as Ferrite, Thunderbolt or a user-defined evaluator. The default ConductivityEvaluatorCache{Nothing} treats conductivity as constant and returns the stored value from evaluate.

API Reference

See the API Reference page for a complete listing of all exported types and functions, organized by category.

Development

The repository includes tests under test/ and docs build scripts in docs/. Run tests with ] activate . and ] test from the package root.