Implicit SPH code using LAMMPS and Trilinos
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
IMPLICIT-SPH
USER-REAXC-T
.gitignore
Authors
Copyright
README
run-conf-implicit-sph.sh

README

Introduction
============


Trilinos Configuration
======================

1. Clone the Trilinos repository from github.

```
git clone https://github.com/trilinos/Trilinos.git your-implicit-sph-directory
```

2. Cutomize the build script ``run-conf-implicit-sph.sh``. 
   
   We use Epetra (mpi only) solver stack in the Trilinos packages. 
   Major packages are
   - Epetra : distributed linear algebra data structure
   - Teuchos : utilities providing blas lapck wrappers and reference count pointers
   - Ifpack : incomplete factorization preconditioners 
   - Belos : Krylov solvers e.g., GMRES, CG and their algorithm variants
   - ML : multi grid preconditioner
   - NOX : nonlinear solver
   - Stratimikos : XML based solver harnessing tool
   - Thyra and Teko : block matrix interface
   - Zoltan : a collection of graph partitioners 

```
cmake \
    -D Trilinos_WARNINGS_AS_ERRORS_FLAGS:STRING="" \
    -D Trilinos_VERBOSE_CONFIGURE:BOOL=OFF \
    -D Trilinos_ENABLE_Fortran:BOOL=OFF \
    -D Trilinos_ENABLE_ALL_PACKAGES:BOOL=OFF \
    -D Trilinos_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=OFF \
    -D Trilinos_ENABLE_TESTS:BOOL=ON \
    -D Trilinos_ENABLE_EXAMPLES:BOOL=ON \
    -D Trilinos_ENABLE_Teuchos:BOOL=ON \
    -D Trilinos_ENABLE_Epetra:BOOL=ON \
    -D Epetra_ENABLE_TESTS:BOOL=ON \
    -D Trilinos_ENABLE_EpetraExt:BOOL=ON \
    -D Trilinos_ENABLE_Ifpack:BOOL=ON \
    -D Trilinos_ENABLE_Belos:BOOL=ON \
    -D Trilinos_ENABLE_ML:BOOL=ON \
    -D Trilinos_ENABLE_NOX:BOOL=ON \
    -D NOX_ENABLE_TESTS:BOOL=ON \
    -D Trilinos_ENABLE_Stratimikos:BOOL=ON \
    -D Stratimikos_ENABLE_TEUCHOS_TIME_MONITOR:BOOL=ON \
    -D Trilinos_ENABLE_Thyra:BOOL=ON \
    -D Trilinos_ENABLE_Teko:BOOL=ON \
    -D Trilinos_ENABLE_Zoltan:BOOL=ON \
    -D TPL_ENABLE_MPI:BOOL=ON \
    -D TPL_ENABLE_BLAS:STRING=ON \
    -D TPL_BLAS_LIBRARIES="-L/usr/lib64 -lblas -llapack -lgfortran" \
    \
    -D Trilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON \
    \
    -D CMAKE_INSTALL_PREFIX:PATH=/your/trilinos/install/directory \
    -D CMAKE_BUILD_TYPE:STRING=RELEASE \
    -D CMAKE_VERBOSE_MAKEFILE:BOOL=OFF \
    -D CMAKE_CXX_FLAGS:STRING="-g -O3" \
    -D BUILD_SHARED_LIBS:BOOL=OFF \
    \
    /your/trilinos/source/directory
```

3. Create a build directory (must be separated from the source directory) and 
   build library
   
```
cd your-build-directory
. /your/implicit-sph/directory/run-conf-implicit-sph.sh
make -j8 install
```

4. Testing 
```
cd your-build-directory
ctest -j8
```

If ctest reports no failure, we just finished the most difficult part of this code.


LAMMPS and ISPH Configuration
=============================

1. Users can clone LAMMPS or download a tar ball

```
git clone git://git.lammps.org/lammps-ro.git your-lammps-directory
```
HELP NEEDED. I do not how to work two git repository together. At this moment, let's 
use a tar ball version from (http://lammps.sandia.gov/download.html) and install isph 
code in the ``src`` directory.

2. Copy Makefile.machine to MAKE/Machines directory. For example, my Makefile.bread has
   the following modifications:
```
# Include the Trilinos export makefiles from needed packages
TRILINOS_INSTALL_DIR = $(HOME)/Work/lib/trilinos/implicit-sph/sems

include $(TRILINOS_INSTALL_DIR)/include/Makefile.export.Amesos
include $(TRILINOS_INSTALL_DIR)/include/Makefile.export.AztecOO
include $(TRILINOS_INSTALL_DIR)/include/Makefile.export.Belos
include $(TRILINOS_INSTALL_DIR)/include/Makefile.export.Epetra
include $(TRILINOS_INSTALL_DIR)/include/Makefile.export.Ifpack
include $(TRILINOS_INSTALL_DIR)/include/Makefile.export.Kokkos
include $(TRILINOS_INSTALL_DIR)/include/Makefile.export.ML
include $(TRILINOS_INSTALL_DIR)/include/Makefile.export.NOX
include $(TRILINOS_INSTALL_DIR)/include/Makefile.export.Teuchos

# Add the Trilinos installation directory to the search paths
# for libraries and headers
  LIB_PATH = $(TRILINOS_INSTALL_DIR)/lib

INCLUDES = -I. -I$(TRILINOS_INSTALL_DIR)/include \
         $(Teuchos_TPL_INCLUDE_DIRS) \
         $(Ifpack_TPL_INCLUDE_DIRS)

# Add the Trilinos libraries, search path, and rpath to the
# linker command line arguments
LIBS =  $(Epetra_SHARED_LIB_RPATH_COMMAND) \
        $(Amesos_LIBRARIES) \
        $(AztecOO_LIBRARIES) \
        $(Belos_LIBRARIES) \
        $(Epetra_LIBRARIES) \
        $(Ifpack_LIBRARIES) \
        $(Kokkos_LIBRARIES) \
        $(ML_LIBRARIES) \
        $(NOX_LIBRARIES) \
        $(Teuchos_LIBRARIES) \
        $(Pamgen_LIBRARIES) \
        $(Ifpack_TPL_LIBRARIES) \
        $(ML_TPL_LIBRARIES) \
        $(Epetra_TPL_LIBRARIES) \
        $(Epetra_EXTRA_LD_FLAGS)
```

You can also see there are some other packages that we do not explicitly turn on. 
They are dependent packages and it requires to include all.

3. make yes-implicit-sph; make machine -j8

Compile and Test
================