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

Igor Konshin's avatar
Igor Konshin committed
4 5 6 7 8 9 10 11 12
INMOST is a software platform for development of parallel numerical models on general meshes

The presented toolkit may be usefull in creation of parallel software
MPI-platforms for developing parallel numerical models on general meshes.
Technology complex INMOST (Integrated Numerical Modelling and Object-oriented
Supercomputing Technologies) is a tool for supercomputer simulations
characterized by a maximum generality of supported computational meshes,
distributed data structure flexibility and cost-effectiveness, as well as cross
platform portability.
13

Alexander Danilov's avatar
Alexander Danilov committed
14 15
## New address
INMOST was moved to the new address: https://github.com/INMOST-DEV/INMOST
16

Alexander Danilov's avatar
Alexander Danilov committed
17
Please update your bookmarks, if you used `git clone` before then refer to https://github.com/INMOST-DEV/INMOST/issues/7#issuecomment-70378751
18

Alexander Danilov's avatar
Alexander Danilov committed
19 20
## Install Guide
Refer to https://github.com/INMOST-DEV/INMOST/wiki/0100-Compilation
21

22
## Examples
23 24 25 26 27 28 29

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

30
This example creates simple cubic or prismatic mesh. You can use ParaView to view the meshes.
31 32
```
cd examples/GridGen
33
mpirun -np 4 ./GridGen 4 32 32 32
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
```
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
52
mpirun -np 4 ./FVDiscr ../GridGen/grid.pvtk A.mtx b.rhs
53 54 55
```
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
56
`paraview --data=result.pvtk`
57 58 59 60 61 62 63 64
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.
```
65 66
cd ../MatSolve
mpirun -np 4 ./MatSolve 0 ../FVDiscr/A.mtx ../FVDiscr/b.rhs
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
```
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.