README 3.21 KB
Newer Older
1 2 3 4 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 32 33
INMOST
======

A toolkit for distributed mathematical modeling

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
34
./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
35 36 37 38 39 40 41 42 43 44
make all


INMOST
------

Download and unpack INMOST source archive.

cd "$INMOST_LIBS"
wget https://github.com/INM-RAS/INMOST/archive/master.tar.gz
45
tar zxf master.tar.gz
46 47 48 49 50 51 52
rm -f INMOST-master.tar.gz


We will create separate directory for INMOST compilation.

mkdir -p INMOST-build
cd INMOST-build
53
cmake -DUSE_AUTODIFF=OFF -DUSE_SOLVER_PETSC=ON -DUSE_PARTITIONER=OFF -DCOMPILE_EXAMPLES=ON ../INMOST-master
54 55 56 57 58 59 60 61 62 63 64 65 66
make


Examples
========

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
------------------------

67
This example creates simple cubic or prismatic mesh. You can use ParaView to view the meshes.
68 69 70

cd "$INMOST_LIBS/INMOST-build"
cd examples/GridGen
71
mpirun -np 4 ./GridGen 4 32 32 32
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90

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
91
mpirun -np 4 ./FVDiscr ../GridGen/grid.pvtk A.mtx b.rhs
92 93 94

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
95
paraview --data=result.pvtk
96 97 98 99 100 101 102 103 104
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.

105 106
cd ../MatSolve
mpirun -np 4 ./MatSolve 0 ../FVDiscr/A.mtx ../FVDiscr/b.rhs
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127

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.