Creates Training Data for Calderon/EIT Problem using FEM-solver.
-
Contains Methods for generating conductivity, and boundary conditions: Based on white noise with gaussian filtering. Alternatively uses Gaussian Random fields.
-
Creates Rectangular/Square or circular Mesh with varying granularity.
-
Calculates FEM Solution of both Dirichlet-to-Neumann and Neumann-to-Dirichlet Map
-
Generates Full data set of Conductivity, Voltage, Neumann boundary (Current), dirichlet boundary(voltage). If specified will also calculate full gradient flow.
-
Gives Matrix valued approximation of Forward operators on Boundary
Data created is meant as training Data for Solving the inverse problem of electrical impedance tomography.
This repository is just a prerequisite for the actual training of Neural Operators, PINN's or similar architectures to both approximate the Forward solution and calculate the inverse solution from the boundary operators. For actual solvers look for PyEIT or similar. (Stay tuned for another package.)
Excludes Solution using Ferrite since Gridap and Ferrite do not run in the same environment.
Since the Electircal Impedance Problem is an Inverse Problem we have two choices given conductivity values
Given the strong formulation:
with neumann boundary condiction
such that:
The weak problem thus becomes:
Here the strong formulation is:
The Weak form then becomes:
Generates random Conductivity values of a medium:
and given dirichlet boundary condition:
calculates the Voltage U over the medium:
with the option to also calculate the neumann boundary:
Or even the full gradient:
Other Methods to produce random conductivity:
a version with just two different values.
or a combination thereof:
- Have a systemwide install of gmsh, for example via:
sudo pacman -Syu gmsh
- Open a virtual env for Python
install requirements.txt ()
- Start a virtual env for Julia:
install all dependencies in the Venv
add module via
using Pkg Pkg.activate("/Path/to/Julia/Venv) Pkg.instantiate() ENV["PYTHON"] = "/home/.../path/to/python/venv" Pkg.build("PyCall") #Then do: include("CalderonEITFEM/src/CalderonEITFEM.jl") using .CalderonEITFEM
Do not install gmsh_jll or FerriteGmsh, as this will break GridapGmsh ( as of 02nd May 2024)