ModularEIT.jl

Modular building blocks for Electrical Impedance Tomography in Julia.

Work in progress

The package is being rebuilt; interfaces may still change.

ModularEIT — Module
ModularEIT

Modular 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).

source

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

ComponentTypes / functions
DiscretizationFerriteDiscretization, FEMatrices, ConductivityTensor
Electrode modelsContinuumModel, PointElectrodeModel, GapModel, CompleteElectrodeModel
Forward problemForwardModel, forward_neumann, forward_dirichlet
ObjectivesAdjointStateObjective, KohnVogeliusObjective
Linear solversDirectSolver, 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.

Open the ModularEIT theory wiki →