diff --git a/MPI/lammps/2017/variants b/MPI/lammps/2017/variants new file mode 100644 index 0000000..03d1f38 --- /dev/null +++ b/MPI/lammps/2017/variants @@ -0,0 +1 @@ +lammps/2017.8 unstable gcc/5.4.0 openmpi/1.10.4 diff --git a/MPI/lammps/build b/MPI/lammps/build new file mode 100755 index 0000000..df7bb75 --- /dev/null +++ b/MPI/lammps/build @@ -0,0 +1,26 @@ +#!/usr/bin/env modbuild + +SOURCE_URL="lammps-2017.8.tar.gz" + +pbuild::compile_in_sourcetree + +pbuild::configure() { + cp -v "${BUILD_BLOCK_DIR}/files/Makefile.PSI" "${MODULE_BUILDDIR}/src/MAKE/MINE" +} + +pbuild::build() { + make -C src PSI +} + +pbuild::install() { + install -m 0755 -d "${PREFIX}/bin" + install -m 0755 "${MODULE_BUILDDIR}/src/lmp_PSI" "${PREFIX}/bin/lmp_omp" + strip "${PREFIX}/bin/lmp_omp" +} + +pbuild::add_to_group 'MPI' +pbuild::set_docfiles \ + LICENSE \ + README +pbuild::make_all + diff --git a/MPI/lammps/files/Makefile.PSI b/MPI/lammps/files/Makefile.PSI new file mode 100644 index 0000000..5c25c8e --- /dev/null +++ b/MPI/lammps/files/Makefile.PSI @@ -0,0 +1,120 @@ +# omp = USER-OMP package, MPI with its default compiler + +SHELL = /bin/sh + +# --------------------------------------------------------------------- +# compiler/linker settings +# specify flags and libraries needed for your compiler + +CC = mpicxx +CCFLAGS = -g -O3 -fopenmp +SHFLAGS = -fPIC +DEPFLAGS = -M + +LINK = mpicxx +LINKFLAGS = -g -O -fopenmp +LIB = +SIZE = size + +ARCHIVE = ar +ARFLAGS = -rc +SHLIBFLAGS = -shared + +# --------------------------------------------------------------------- +# LAMMPS-specific settings, all OPTIONAL +# specify settings for LAMMPS features you will use +# if you change any -D setting, do full re-compile after "make clean" + +# LAMMPS ifdef settings +# see possible settings in Section 2.2 (step 4) of manual + +LMP_INC = -DLAMMPS_GZIP + +# MPI library +# see discussion in Section 2.2 (step 5) of manual +# MPI wrapper compiler/linker can provide this info +# can point to dummy MPI library in src/STUBS as in Makefile.serial +# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts +# INC = path for mpi.h, MPI compiler settings +# PATH = path for MPI library +# LIB = name of MPI library + +MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 +MPI_PATH = +MPI_LIB = + +# FFT library +# see discussion in Section 2.2 (step 6) of manual +# can be left blank to use provided KISS FFT library +# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings +# PATH = path for FFT library +# LIB = name of FFT library + +FFT_INC = +FFT_PATH = +FFT_LIB = + +# JPEG and/or PNG library +# see discussion in Section 2.2 (step 7) of manual +# only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC +# INC = path(s) for jpeglib.h and/or png.h +# PATH = path(s) for JPEG library and/or PNG library +# LIB = name(s) of JPEG library and/or PNG library + +JPG_INC = +JPG_PATH = +JPG_LIB = + +# --------------------------------------------------------------------- +# build rules and dependencies +# do not edit this section + +include Makefile.package.settings +include Makefile.package + +EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) +EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) +EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) +EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS) +EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS) + +# Path to src files + +vpath %.cpp .. +vpath %.h .. + +# Link target + +$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) + $(SIZE) $(EXE) + +# Library targets + +lib: $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) + +shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + +# Compilation rules + +%.o:%.cpp $(EXTRA_CPP_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< + +%.d:%.cpp $(EXTRA_CPP_DEPENDS) + $(CC) $(CCFLAGS) $(EXTRA_INC) $(DEPFLAGS) $< > $@ + +%.o:%.cu $(EXTRA_CPP_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< + +# Individual dependencies + +depend : fastdep.exe $(SRC) + @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1 + +fastdep.exe: ../DEPEND/fastdep.c + cc -O -o $@ $< + +sinclude .depend diff --git a/MPI/lammps/modulefile b/MPI/lammps/modulefile new file mode 100644 index 0000000..3f4eb34 --- /dev/null +++ b/MPI/lammps/modulefile @@ -0,0 +1,23 @@ +#%Module1.0 + +module-whatis "an accelerator modeling code th" +module-url "http://www.aps.anl.gov/Accelerator_Systems_Division/Accelerator_Operations_Physics/elegant.html" +module-license "See: http://www.aps.anl.gov/epics/license/index.php" +module-maintainer "Achim Gsell " + +module-help " +elegant is an accelerator modeling code that performs many functions. Its +basic function is 6D tracking, which it performs using matrices (up to +second order), symplectic integration, numerical integration, or a user- +defined mixture. It computes Twiss parameters, transport matrices, radiation +integrals, correction matrices, amplification factors, and floor coordinates. +It also performs optimization, including optimization of radiation integrals, +floor coordinates, transport matrices, and beam properties from tracking. A +number of time-dependent elements are supported, such as rf cavities, kickers, +and ramping machines. The code provides simulation of various collective +effects, such as wakes and coherent synchrotron radiation. +" + +setenv RPN_DEFNS $PREFIX/RPN-DEFNS +setenv HOST_ARCH linux-x86_64 +setenv EPICS_HOST_ARCH linux-x86_64