PYFETI is a standalone Python Library to solve and implemented parallel FETI-Like solvers using mpi4py.
- NumPy
- Scipy
- MPI4Py
- Dill
- Pandas
- Matplotlib
Before installing PyFETI we stronly recommend the use of ANACONDA and git. PyFETI is suppose to work in both Windows and Linux system, but is not fully supported, so please let us know with you are facing any problem.
mkdir PYFETI
cd PYFETI
git init
git clone https://username@bitbucket.org/teamsinspace/documentation-tests.git
The command above should copy the remote files to your local system. Now, we must activate the Anaconda virtual environment and install PyFETI.
source activate $you virtual env$
python setup.py install
If you install PyFETI, you should run all unittest to make sure everything is properly working.
cd pyfeti/src/tests
python test_feti_solver.py
Almost every source file also contains unittests, so feel free to run all of them. PyFETI uses mpi4pi and requires the installation of some mpi distriction, see MSMPI, IntelMPI, and OpenMPI. Because multiple MPI implementation are supported, the user must create a environment variable to set MPI path that must be used in PyFETI.
export MPIDIR=/program/mpi
Also, you can have multiple python virtual environments, then you must set a environment variable to specify which python.exe to use:
export 'PYTHON_ENV'=/condaenv/pyfeti
Now, it is time to run python and import pyfeti modules.
python
>>> import pyfeti
Have fun!
The PyFETI library is intend to provide easy function in order to solve, the dual assembly problem, namely:
\begin{bmatrix} f \ 0 \end{bmatrix} $$
Generally the block matrix
$$ \begin{bmatrix} K & B^TG^{T} & B^{T} \ GB & 0 & 0 \ B & 0 & 0 \ \end{bmatrix} \begin{bmatrix} u \ \alpha \ \lambda \end{bmatrix}
\begin{bmatrix} f \ 0 \ 0 \end{bmatrix} $$
Where
The Dual Assembly system of equation describe above can be broken in two equations.
\begin{equation} Ku + B^{T}\lambda = f \ Bu = 0 \end{equation}
Then, the solution u can be calculate by:
\begin{equation} u = K^*(B^{T}\lambda + f) + R\alpha \ \end{equation}
Where
\begin{equation} R(B^{T}\lambda + f) = 0 \ \end{equation}
Phisically, the equation above enforces the self-equilibrium for each sub-domain. Using the compatibility equation and the self-equilibrium equation, we can write the dual interface equilibrium equation as:
\begin{bmatrix} d \ e \end{bmatrix} $$
Where
- Unittest with more than 10 Domains
- Easy access to the Parallel F operator
- Parallel Coarse Grip Problem