README.md 3.19 KB
Newer Older
Kirill Terekhov's avatar
Kirill Terekhov committed
1 2 3 4
INMOST
======

A toolkit for distributed mathematical modeling
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

## Install Guide

First define the folder where you want to install INMOST and other optional libraries.
```
export INMOST_LIBS="/home/user/inmost-libs"
```
If it doesn't already exist, create this directory:
```
mkdir -p "$INMOST_LIBS"
```

### PETSc

PETSc can install a lot of other dependencies as well.

The following instructions assume that MPI is already installed and functional. You can use option --download-openmpi to install MPI with PETSc.

These steps can take some time
```
cd "$INMOST_LIBS"
wget http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.4.5.tar.gz
tar zxf petsc-3.4.5.tar.gz
rm -f petsc-3.4.5.tar.gz
cd petsc-3.4.5
export PETSC_DIR="`pwd`"
export PETSC_ARCH=linux-gnu-opt
32
./configure --download-f-blas-lapack --download-metis --download-parmetis  --useThreads=0 --with-debugging=0 --with-mpi-dir=/usr --with-x=0 --with-shared-libraries=0
33 34 35 36 37 38 39 40 41
make all
```

### INMOST

Download and unpack INMOST source archive.
```
cd "$INMOST_LIBS"
wget https://github.com/INM-RAS/INMOST/archive/master.tar.gz
42
tar zxf master.tar.gz
43 44 45 46 47 48 49
rm -f INMOST-master.tar.gz
```

We will create separate directory for INMOST compilation.
```
mkdir -p INMOST-build
cd INMOST-build
50
cmake -DUSE_AUTODIFF=OFF -DUSE_SOLVER_PETSC=ON -DUSE_PARTITIONER=OFF -DCOMPILE_EXAMPLES=ON ../INMOST-master
51 52 53
make
```

54
## Examples
55 56 57 58 59 60 61

Several representative examples are provided in source archive.
Here we will try three parallel steps: grid generation, FVM discretization and linear matrix solution.
Each example may be executed in serial or parallel ways.

### Parallel Grid Generation

62
This example creates simple cubic or prismatic mesh. You can use ParaView to view the meshes.
63 64 65
```
cd "$INMOST_LIBS/INMOST-build"
cd examples/GridGen
66
mpirun -np 4 ./GridGen 4 32 32 32
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
```
Generator parameters are: `ng nx ny nz`
where `ng=3` stands for Prismatic generator and
`ng=4` for Cubic one,
while `nx ny nz` are the mesh dimensions.

File grid.pvtk (as well as grid_X.vtk with X=0,1,2,3) will appear in the current directory.
Run
`paraview --data=grid.pvtk`
and try the following tags in objects to display:
- `P_OWNER_PROCESSOR` – partitioning to processors
- `GLOBAL_ID` – global cell ID number

### Parallel Finite Volume Discretization

This example uses simple two-point FVM scheme to solve Laplace's equation in unit cube domain.
```
cd ../FVDiscr
85
mpirun -np 4 ./FVDiscr ../GridGen/grid.pvtk A.mtx b.rhs
86 87 88
```
Files result.pvtk (as well as result_X.vtk with X=0,1,2,3) and A.mtx b.rhs will appear in the current directory.
Run
89
`paraview --data=result.pvtk`
90 91 92 93 94 95 96 97
and try the following tags in objects to display:
- `Solution` – the solution to the problem
- `K` – tensor K (constant equal to 1 in this example)

### Solve the Matrix stored in mtx format

This example solves the linear system using different solvers.
```
98 99
cd ../MatSolve
mpirun -np 4 ./MatSolve 0 ../FVDiscr/A.mtx ../FVDiscr/b.rhs
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
```
Solution time and the true residual will output to the screen.
The first parameter selects the solver:
- `0` – INMOST ILU2
- `1` – INMOST MLILUC
- `2` – ANI3D
- `3` – PETSc

### Other Examples

There are other examples:
```
DrawGrid
DrawMatrix
OctreeCutcell
OldDrawGrid
Solver
```
which can be used without warranty.