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
- Create a conductivity evaluator cache (the package defines
ConductivityEvaluatorCache{Nothing}for a constant conductivity). - Build a
FIMCachewith mesh vertices, cell connectivity and initial solution Φ. - Call
solve!(fim_cache)to updatefim_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; updatesfim_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)andinit_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.