ModularEIT.jl
Modular building blocks for Electrical Impedance Tomography in Julia.
ModularEIT — Module
ModularEITModular building blocks for Electrical Impedance Tomography (EIT): electrode models, forward solvers, adjoint-state and Kohn–Vogelius objectives, regularizers, optimizers and projected linear solvers that can be combined freely. The finite element discretization comes from a back end package: ModularEITFerrite (Ferrite.jl) or ModularEITGridap (Gridap.jl).
Installation
using Pkg
Pkg.add(url = "https://github.com/DanielBoigk/Ferrite.jl", rev = "adaptive-triangular")
Pkg.add(url = "https://github.com/DanielBoigk/Krylov.jl", rev = "block-cg")
Pkg.add(url = "https://github.com/DanielBoigk/ModularEIT.jl")
Pkg.add(url = "https://github.com/DanielBoigk/ModularEIT.jl", subdir = "lib/ModularEITFerrite")
# or, for the Gridap back end (no Ferrite fork needed):
Pkg.add(url = "https://github.com/DanielBoigk/ModularEIT.jl", subdir = "lib/ModularEITGridap")ModularEIT has no finite element code of its own; the discretization comes from a back end package in lib/ of this repository: ModularEITFerrite (Ferrite.jl) or ModularEITGridap (Gridap.jl). Load ModularEIT with one of them, e.g. using ModularEIT, ModularEITFerrite.
ModularEIT depends on a fork of Krylov.jl (block conjugate gradients with null-space projection), and the Ferrite back end on a fork of Ferrite.jl (newest vertex bisection with coarsening for triangle meshes). Add the forks first: Julia uses the [sources] entries of a package only when it is the active project, so Pkg.add alone would install the registered versions, and ModularEIT would fail to load.
Package overview
| Component | Types / functions |
|---|---|
| Discretization | FerriteDiscretization, FEMatrices, ConductivityTensor |
| Electrode models | ContinuumModel, PointElectrodeModel, GapModel, CompleteElectrodeModel |
| Forward problem | ForwardModel, forward_neumann, forward_dirichlet |
| Objectives | AdjointStateObjective, KohnVogeliusObjective |
| Linear solvers | DirectSolver, BlockCGSolver, pbcg, projected_cholesky |
Theory wiki
The mathematical background (the Complete Electrode Model, regularization theory, …) lives in an Obsidian vault that is published alongside this documentation.