README.md 3.93 KB
Newer Older
Praetorius, Simon's avatar
Praetorius, Simon committed
1
AMDiS (Adaptive MultiDimensional Simulations) is a C++ library to solve a broad class of partial differential equations (PDEs) using adaptive finite elements. Here you can find some information and tutorials about AMDiS usage/installation/extension...
2

Praetorius, Simon's avatar
Praetorius, Simon committed
3 4 5 6
## Building

The AMDiS library uses [CMake](https://cmake.org) to build. To configure with CMake we suggest to create a build directory, and run:

7
```
Praetorius, Simon's avatar
Praetorius, Simon committed
8
mkdir build && cd build
Praetorius, Simon's avatar
Praetorius, Simon committed
9 10 11 12 13 14 15
cmake ../AMDiS
```

## Installing

To install the library you may provide an installation directory, by calling CMake with the additional argument:

16
```
Praetorius, Simon's avatar
Praetorius, Simon committed
17 18 19 20
cmake -DCMAKE_INSTALL_PREFIX:PATH=[install_dir] .
```

and just run the `install` target:
Praetorius, Simon's avatar
Praetorius, Simon committed
21

Praetorius, Simon's avatar
Praetorius, Simon committed
22 23 24 25 26 27 28 29 30 31
```
cmake --build . --target install
```

## Demos

Some demo programs using the AMDiS library are implemented in the subdirectory `demo`. To configure and build run CMake again, with the AMDiS installation directory specified:

```
mkdir demo/build && cd demo/build
32
cmake -DAMDIS_DIR:PATH=[install_dir]/share/amdis [-DCOMPONENT=(SEQUENTIAL|PARALLEL)] ..
Praetorius, Simon's avatar
Praetorius, Simon committed
33 34 35
cmake --build . --target all
```

36 37 38 39 40 41 42 43 44 45 46
The optional `COMPONENT` parameter set the variant of AMDiS to be used, i.e. sequential or parallel AMDiS. All AMDiS-dependent programs can be
configured using a `CMakeLists.txt` file similar to the following:

```
project("myproject")
cmake_minimum_required(VERSION 3.1)

find_package(AMDIS REQUIRED [SEQUENTIAL|PARALLEL] [VERSION>=1.1])

add_executable(mytarget src/mysource.cc)
target_include_directories(mytarget PRIVATE ${AMDIS_INCLUDE_DIRS})
Praetorius, Simon's avatar
Praetorius, Simon committed
47
target_compile_options(mytarget PRIVATE ${AMDIS_COMPILEFLAGS})
48 49 50
target_link_libraries(mytarget ${AMDIS_LIBRARIES})
```

Praetorius, Simon's avatar
Praetorius, Simon committed
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
## Tests

The tests are implemented in the subdirectory `test` and can be built and run by using the CMake:

```
mkdir test/build && cd test/build
cmake -DAMDIS_DIR:PATH=[install_dir]/share/amdis ..
cmake --build . --target all
```

## Documentation

The documentation is built using [Doxygen](http://www.doxygen.org). Simply run the command in the `doc` subdirectory:

```
66
cd AMDiS/doc
Praetorius, Simon's avatar
Praetorius, Simon committed
67 68 69 70 71 72 73 74 75
doxygen
```

Then html documentation is then generated in the `doc/html` folder.

## System requirements

AMDiS can be build with various c++ compilers, e.g.
- gcc, version >= 4.6
Praetorius, Simon's avatar
Praetorius, Simon committed
76 77
- clang, version >= 3.1
- intel, version >= 2013
Praetorius, Simon's avatar
Praetorius, Simon committed
78 79
- MSVC, version >= 11.0

Praetorius, Simon's avatar
Praetorius, Simon committed
80
A detailed overview about compiler compatibility is listed in the wiki-page [Compatibility](https://gitlab.math.tu-dresden.de/iwr/amdis/wikis/compatibility).
Praetorius, Simon's avatar
Praetorius, Simon committed
81 82 83 84 85 86 87 88 89 90 91

We assume the following libraries to be found in standard location:
- [boost](http://boost.org) (modules: system, iostreams, filesystem, program_options, and date_time), version >= 1.48
- [CMake](https://cmake.org), version >= 3.1

For the parallel AMDiS we require additionally
- [ParMETIS](http://glaros.dtc.umn.edu/gkhome/metis/parmetis/overview), version >= 4.0
- [PETSc](https://www.mcs.anl.gov/petsc), version >= 3.3

When PETSc is configured with ParMETIS, the version from PETSc can be used directly.

Praetorius, Simon's avatar
Praetorius, Simon committed
92
## CMake options
Praetorius, Simon's avatar
Praetorius, Simon committed
93 94 95 96 97
When configuring AMDiS several options can be modified. For an interactive gui, use either `ccmake`, or `cmake-gui`.

| Option         | Type | Description |
| -------------- | ---- | ----------- |
| ENABLE_UMFPACK | BOOL | Compile with support for suitesparse UMFPack library |
98
| ENABLE_COMPRESSION | BOOL | Allow compressed output of .vtk and .arh files. Need development files of zlib and libbz2 to be installed on the system. |
Praetorius, Simon's avatar
Praetorius, Simon committed
99 100 101
| ENABLE_PARALLEL_DOMAIN | BOOL | Switch to parallel AMDiS. Needs PETSc and ParMETIS to be installed. |
| PETSC_DIR | PATH | Path to the PETSc root directory, containing the lib/ and include/ subdirectories. |
| PARMETIS_DIR | PATH | Path to the ParMETIS root directory, containing the lib/ and include/ subdirectories. |
102 103
| ENABLE_ZOLTAN | BOOL | Compile support for graph paritioning library Zoltan. |
| ZOLTAN_DIR | PATH | PAth to the Zoltan root directory, containing lib/ and include/ subdirectories. |
Praetorius, Simon's avatar
Praetorius, Simon committed
104
| ENABLE_EXTENSIONS | BOOL | Add additional features, not yet part of the standard AMDiS. Experimental! Should be used with care. |