From 0cfaaee5d584b1cef7b9a6cf3f2d0786c14cca74 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Thu, 18 Aug 2011 15:03:14 +0000 Subject: [PATCH] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@6724 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/Depend.sh | 4 +- src/GPU/Install.sh | 11 ++- src/MEAM/Install.sh | 11 ++- src/Makefile | 4 +- src/Makefile.package.empty | 2 +- src/Makefile.package.settings | 4 + src/Makefile.package.settings.empty | 4 + src/POEMS/Install.sh | 11 ++- src/REAX/Install.sh | 11 ++- src/USER-ATC/Install.sh | 11 ++- src/USER-AWPMD/Install.sh | 11 ++- src/USER-CUDA/Install.sh | 40 +++++----- src/error.cpp | 17 +++++ src/error.h | 1 + src/lammps.cpp | 111 ++++++++++++++++++++++++++++ src/lammps.h | 2 + 16 files changed, 226 insertions(+), 29 deletions(-) create mode 100644 src/Makefile.package.settings create mode 100644 src/Makefile.package.settings.empty diff --git a/src/Depend.sh b/src/Depend.sh index f6f3d43d08..84d642cb33 100644 --- a/src/Depend.sh +++ b/src/Depend.sh @@ -1,7 +1,9 @@ -# Depend.sh = Install/unInstall files from dependent packages +# Depend.sh = Install/unInstall files for dependent packages # only Install/unInstall if dependent package is already installed +# all packages with dependencies should be listed here # install dependent child files when parent files installed # uninstall dependent child files when parent files uninstalled +# decisions on individual files are made by package Install.sh scripts if (test $1 = 1) then diff --git a/src/GPU/Install.sh b/src/GPU/Install.sh index e0a7272692..32ee689bed 100644 --- a/src/GPU/Install.sh +++ b/src/GPU/Install.sh @@ -1,5 +1,5 @@ # Install/unInstall package files in LAMMPS -# edit Makefile.package to include/exclude GPU info +# edit 2 Makefile.package files to include/exclude GPU info # do not install child files if parent does not exist if (test $1 = 1) then @@ -12,6 +12,11 @@ if (test $1 = 1) then sed -i -e 's|^PKG_SYSLIB =[ \t]*|&$(gpu_SYSLIB) |' ../Makefile.package sed -i -e 's|^PKG_SYSPATH =[ \t]*|&$(gpu_SYSPATH) |' ../Makefile.package fi + + if (test -e ../Makefile.package.settings) then + sed -i -e '/^include.*gpu.*$/d' ../Makefile.package.settings + sed -i '4 i include ..\/..\/lib\/gpu\/Makefile.lammps' ../Makefile.package.settings + fi if (test -e ../pair_gayberne.cpp) then cp pair_gayberne_gpu.cpp .. @@ -90,6 +95,10 @@ elif (test $1 = 0) then sed -i -e 's/[^ \t]*gpu[^ \t]* //' ../Makefile.package fi + if (test -e ../Makefile.package.settings) then + sed -i -e '/^include.*gpu.*$/d' ../Makefile.package.settings + fi + rm -f ../pppm_gpu.cpp rm -f ../pair_gayberne_gpu.cpp rm -f ../pair_resquared_gpu.cpp diff --git a/src/MEAM/Install.sh b/src/MEAM/Install.sh index 88d2955f0b..23d51a3e94 100644 --- a/src/MEAM/Install.sh +++ b/src/MEAM/Install.sh @@ -1,5 +1,5 @@ # Install/unInstall package files in LAMMPS -# edit Makefile.package to include/exclude MEAM info +# edit 2 Makefile.package files to include/exclude GPU info if (test $1 = 1) then @@ -13,6 +13,11 @@ if (test $1 = 1) then sed -i -e 's|^PKG_SYSPATH =[ \t]*|&$(meam_SYSPATH) |' ../Makefile.package fi + if (test -e ../Makefile.package.settings) then + sed -i -e '/^include.*meam.*$/d' ../Makefile.package.settings + sed -i '4 i include ..\/..\/lib\/meam\/Makefile.lammps' ../Makefile.package.settings + fi + cp pair_meam.cpp .. cp pair_meam.h .. @@ -23,6 +28,10 @@ elif (test $1 = 0) then sed -i -e 's/[^ \t]*meam[^ \t]* //' ../Makefile.package fi + if (test -e ../Makefile.package.settings) then + sed -i -e '/^include.*meam.*$/d' ../Makefile.package.settings + fi + rm -f ../pair_meam.cpp rm -f ../pair_meam.h diff --git a/src/Makefile b/src/Makefile index 29e0afcd45..9348d688cd 100755 --- a/src/Makefile +++ b/src/Makefile @@ -68,7 +68,7 @@ help: @cp -p *.cpp *.h Obj_$@ @cp MAKE/Makefile.$@ Obj_$@/Makefile @if [ ! -e Makefile.package ]; then make package-regenerate; fi - @cp Makefile.package Obj_$@ + @cp Makefile.package Makefile.package.settings Obj_$@ @cd Obj_$@; \ $(MAKE) $(MFLAGS) "OBJ = $(OBJ)" "INC = $(INC)" "EXE = ../$(EXE)" ../$(EXE) @if [ -d Obj_$@ ]; then cd Obj_$@; rm -f $(SRC) $(INC) Makefile*; fi @@ -190,6 +190,7 @@ package-overwrite: package-regenerate: @cp Makefile.package.empty Makefile.package + @cp Makefile.package.settings.empty Makefile.package.settings @for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p regenerate; done @for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p regenerate; done @@ -197,4 +198,3 @@ package-diff: @for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p diff; done @echo '' @for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p diff; done - diff --git a/src/Makefile.package.empty b/src/Makefile.package.empty index ef54f586dc..0d8e6c175f 100644 --- a/src/Makefile.package.empty +++ b/src/Makefile.package.empty @@ -5,6 +5,6 @@ PKG_INC = PKG_PATH = PKG_LIB = -PKG_SYSINC = +PKG_SYSINC = PKG_SYSLIB = PKG_SYSPATH = diff --git a/src/Makefile.package.settings b/src/Makefile.package.settings new file mode 100644 index 0000000000..d67adbc0f5 --- /dev/null +++ b/src/Makefile.package.settings @@ -0,0 +1,4 @@ +# Makefile settings generated by libraries used by specific LAMMPS packages +# this file is auto-edited when those packages are included/excluded + + diff --git a/src/Makefile.package.settings.empty b/src/Makefile.package.settings.empty new file mode 100644 index 0000000000..d67adbc0f5 --- /dev/null +++ b/src/Makefile.package.settings.empty @@ -0,0 +1,4 @@ +# Makefile settings generated by libraries used by specific LAMMPS packages +# this file is auto-edited when those packages are included/excluded + + diff --git a/src/POEMS/Install.sh b/src/POEMS/Install.sh index 87635f7bbe..993c66868d 100644 --- a/src/POEMS/Install.sh +++ b/src/POEMS/Install.sh @@ -1,5 +1,5 @@ # Install/unInstall package files in LAMMPS -# edit Makefile.package to include/exclude POEMS info +# edit 2 Makefile.package files to include/exclude POEMS info if (test $1 = 1) then @@ -10,6 +10,11 @@ if (test $1 = 1) then sed -i -e 's|^PKG_LIB =[ \t]*|&-lpoems |' ../Makefile.package fi + if (test -e ../Makefile.package.settings) then + sed -i -e '/^include.*poems.*$/d' ../Makefile.package.settings + sed -i '4 i include ..\/..\/lib\/poems\/Makefile.lammps' ../Makefile.package.settings + fi + cp fix_poems.cpp .. cp fix_poems.h .. @@ -20,6 +25,10 @@ elif (test $1 = 0) then sed -i -e 's/[^ \t]*poems[^ \t]* //' ../Makefile.package fi + if (test -e ../Makefile.package.settings) then + sed -i -e '/^include.*poems.*$/d' ../Makefile.package.settings + fi + rm -f ../fix_poems.cpp rm -f ../fix_poems.h diff --git a/src/REAX/Install.sh b/src/REAX/Install.sh index 849ed83b48..5209100da4 100644 --- a/src/REAX/Install.sh +++ b/src/REAX/Install.sh @@ -1,5 +1,5 @@ # Install/unInstall package files in LAMMPS -# edit Makefile.package to include/exclude REAX info +# edit 2 Makefile.package files to include/exclude REAX info if (test $1 = 1) then @@ -13,6 +13,11 @@ if (test $1 = 1) then sed -i -e 's|^PKG_SYSPATH =[ \t]*|&$(reax_SYSPATH) |' ../Makefile.package fi + if (test -e ../Makefile.package.settings) then + sed -i -e '/^include.*reax.*$/d' ../Makefile.package.settings + sed -i '4 i include ..\/..\/lib\/reax\/Makefile.lammps' ../Makefile.package.settings + fi + cp pair_reax.cpp .. cp pair_reax.h .. cp pair_reax_fortran.h .. @@ -26,6 +31,10 @@ elif (test $1 = 0) then sed -i -e 's/[^ \t]*reax[^ \t]* //' ../Makefile.package fi + if (test -e ../Makefile.package.settings) then + sed -i -e '/^include.*reax.*$/d' ../Makefile.package.settings + fi + rm -f ../pair_reax.cpp rm -f ../pair_reax.h rm -f ../pair_reax_fortran.h diff --git a/src/USER-ATC/Install.sh b/src/USER-ATC/Install.sh index 7fc1cd28d5..244435effe 100755 --- a/src/USER-ATC/Install.sh +++ b/src/USER-ATC/Install.sh @@ -1,5 +1,5 @@ # Install/unInstall package files in LAMMPS -# edit Makefile.package to include/exclude ATC info +# edit 2 Makefile.package files to include/exclude ATC info if (test $1 = 1) then @@ -13,6 +13,11 @@ if (test $1 = 1) then sed -i -e 's|^PKG_SYSPATH =[ \t]*|&$(user-atc_SYSPATH) |' ../Makefile.package fi + if (test -e ../Makefile.package.settings) then + sed -i -e '/^include.*atc.*$/d' ../Makefile.package.settings + sed -i '4 i include ..\/..\/lib\/atc\/Makefile.lammps' ../Makefile.package.settings + fi + cp fix_atc.h .. cp fix_atc.cpp .. @@ -22,6 +27,10 @@ elif (test $1 = 0) then sed -i -e 's/[^ \t]*atc[^ \t]* //' ../Makefile.package fi + if (test -e ../Makefile.package.settings) then + sed -i -e '/^include.*atc.*$/d' ../Makefile.package.settings + fi + rm -f ../fix_atc.h rm -f ../fix_atc.cpp diff --git a/src/USER-AWPMD/Install.sh b/src/USER-AWPMD/Install.sh index a6e1d7a999..1780508a08 100644 --- a/src/USER-AWPMD/Install.sh +++ b/src/USER-AWPMD/Install.sh @@ -1,5 +1,5 @@ # Install/unInstall package files in LAMMPS -# edit Makefile.package to include/exclude ATC library +# edit 2 Makefile.package files to include/exclude AWPMD info if (test $1 = 1) then @@ -12,6 +12,11 @@ if (test $1 = 1) then sed -i -e 's|^PKG_SYSLIB =[ \t]*|&$(user-awpmd_SYSLIB) |' ../Makefile.package fi + if (test -e ../Makefile.package.settings) then + sed -i -e '/^include.*awpmd.*$/d' ../Makefile.package.settings + sed -i '4 i include ..\/..\/lib\/awpmd\/Makefile.lammps' ../Makefile.package.settings + fi + cp atom_vec_wavepacket.cpp .. cp fix_nve_awpmd.cpp .. cp pair_awpmd_cut.cpp .. @@ -26,6 +31,10 @@ elif (test $1 = 0) then sed -i -e 's/[^ \t]*awpmd[^ \t]* //g' ../Makefile.package fi + if (test -e ../Makefile.package.settings) then + sed -i -e '/^include.*awpmd.*$/d' ../Makefile.package.settings + fi + rm -f ../atom_vec_wavepacket.cpp rm -f ../fix_nve_awpmd.cpp rm -f ../pair_awpmd_cut.cpp diff --git a/src/USER-CUDA/Install.sh b/src/USER-CUDA/Install.sh index 63206322e2..68ab36226a 100755 --- a/src/USER-CUDA/Install.sh +++ b/src/USER-CUDA/Install.sh @@ -1,26 +1,26 @@ # Install/unInstall package files in LAMMPS # edit Makefile.package to include/exclude CUDA library -# do not copy child files if parent does not exist +# do not install child files if parent does not exist if (test $1 = 1) then - if (test ! -e ../Makefile.package) then - cp ../Makefile.package.empty ../Makefile.package + if (test -e ../Makefile.package) then + sed -i -e 's/[^ \t]*cuda[^ \t]* //g' ../Makefile.package + sed -i -e 's/[^ \t]*CUDA[^ \t]* //g' ../Makefile.package + sed -i -e 's|^PKG_INC =[ \t]*|&-I..\/..\/lib\/cuda -DLMP_USER_CUDA |' ../Makefile.package + sed -i -e 's|^PKG_PATH =[ \t]*|&-L..\/..\/lib\/cuda |' ../Makefile.package + sed -i -e 's|^PKG_LIB =[ \t]*|&-llammpscuda |' ../Makefile.package + sed -i -e 's|^PKG_SYSINC =[ \t]*|&$(user-cuda_SYSINC) |' ../Makefile.package + sed -i -e 's|^PKG_SYSLIB =[ \t]*|&$(user-cuda_SYSLIB) |' ../Makefile.package + sed -i -e 's|^PKG_SYSPATH =[ \t]*|&$(user-cuda_SYSPATH) |' ../Makefile.package fi - sed -i -e '/^include.*cuda.*$/d' ../Makefile.package - sed -i -e 's/[^ \t]*cuda[^ \t]* //g' ../Makefile.package - sed -i -e 's/[^ \t]*CUDA[^ \t]* //g' ../Makefile.package - sed -i -e 's/[^ \t]*lrt[^ \t]* //g' ../Makefile.package - sed -i '4 i include ..\/..\/lib\/cuda\/Makefile.common' ../Makefile.package - sed -i -e 's|^PKG_INC =[ \t]*|&-I..\/..\/lib\/cuda -DLMP_USER_CUDA |' ../Makefile.package - sed -i -e 's|^PKG_PATH =[ \t]*|&-L..\/..\/lib\/cuda |' ../Makefile.package - sed -i -e 's|^PKG_LIB =[ \t]*|&-llammpscuda |' ../Makefile.package - sed -i -e 's|^PKG_SYSINC =[ \t]*|&-I$(CUDA_INSTALL_PATH)\/include |' ../Makefile.package - sed -i -e 's|^PKG_SYSPATH =[ \t]*|&-L$(CUDA_INSTALL_PATH)\/lib64 -L$(CUDA_INSTALL_PATH)\/lib $(CUDA_USRLIB_CONDITIONAL) |' ../Makefile.package - sed -i -e 's|^PKG_SYSLIB =[ \t]*|&-lcuda -lcudart -lrt |' ../Makefile.package - - # force rebuild of dependencies since adding -DLMP_USER_CUDA switch + if (test -e ../Makefile.package.include) then + sed -i -e '/^include.*cuda.*$/d' ../Makefile.package.settings + sed -i '4 i include ..\/..\/lib\/cuda\/Makefile.lammps' ../Makefile.package.settings + fi + + # force rebuild of files with LMP_USER_CUDA switch touch ../accelerator_cuda.h @@ -204,13 +204,15 @@ if (test $1 = 1) then elif (test $1 = 0) then if (test -e ../Makefile.package) then - sed -i -e '/^include.*cuda.*$/d' ../Makefile.package sed -i -e 's/[^ \t]*cuda[^ \t]* //g' ../Makefile.package sed -i -e 's/[^ \t]*CUDA[^ \t]* //g' ../Makefile.package - sed -i -e 's/[^ \t]*lrt[^ \t]* //g' ../Makefile.package fi - # force rebuild of dependencies since removing -DLMP_USER_CUDA switch + if (test -e ../Makefile.package.settings) then + sed -i -e '/^include.*cuda.*$/d' ../Makefile.package.settings + fi + + # force rebuild of files with LMP_USER_CUDA switch touch ../accelerator_cuda.h diff --git a/src/error.cpp b/src/error.cpp index 9823b29338..81f40a5498 100644 --- a/src/error.cpp +++ b/src/error.cpp @@ -122,3 +122,20 @@ void Error::message(char *str, int logflag) if (screen) fprintf(screen,"%s\n",str); if (logflag && logfile) fprintf(logfile,"%s\n",str); } + +/* ---------------------------------------------------------------------- + called by all procs in one world + close all output, screen, and log files in world +------------------------------------------------------------------------- */ + +void Error::done() +{ + MPI_Barrier(world); + + if (output) delete output; + if (screen && screen != stdout) fclose(screen); + if (logfile) fclose(logfile); + + MPI_Finalize(); + exit(1); +} diff --git a/src/error.h b/src/error.h index e1fbd19367..8c55a046c9 100644 --- a/src/error.h +++ b/src/error.h @@ -29,6 +29,7 @@ class Error : protected Pointers { void one(const char *); void warning(const char *, int = 1); void message(char *, int = 1); + void done(); }; } diff --git a/src/lammps.cpp b/src/lammps.cpp index 548a69e36e..87179e3290 100644 --- a/src/lammps.cpp +++ b/src/lammps.cpp @@ -58,6 +58,7 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) int partscreenflag = 0; int partlogflag = 0; int cudaflag = -1; + int helpflag = 0; suffix = NULL; suffix_enable = 0; @@ -124,6 +125,11 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) strcpy(suffix,arg[iarg+1]); suffix_enable = 1; iarg += 2; + } else if (strcmp(arg[iarg],"-help") == 0 || + strcmp(arg[iarg],"-h") == 0) { + if (iarg+1 > narg) error->universe_all("Invalid command-line argument"); + helpflag = 1; + iarg += 1; } else error->universe_all("Invalid command-line argument"); } @@ -347,6 +353,13 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) // allocate top-level classes create(); + + // if helpflag set, print help and exit + + if (helpflag) { + if (me == 0) print_styles(); + error->done(); + } } /* ---------------------------------------------------------------------- @@ -455,3 +468,101 @@ void LAMMPS::destroy() // since fixes delete callbacks in atom delete timer; } + +/* ---------------------------------------------------------------------- + for each style, print name of all child classes build into executable +------------------------------------------------------------------------- */ + +void LAMMPS::print_styles() +{ + printf("Pair styles:\n"); + +#define PAIR_CLASS +#define PairStyle(key,Class) printf(" %s",#key); +#include "style_pair.h" +#undef PAIR_CLASS + + printf("\n"); + + printf("Bond styles:\n"); + +#define BOND_CLASS +#define BondStyle(key,Class) printf(" %s",#key); +#include "style_bond.h" +#undef BOND_CLASS + + printf("\n"); + + printf("Angle styles:\n"); + +#define ANGLE_CLASS +#define AngleStyle(key,Class) printf(" %s",#key); +#include "style_angle.h" +#undef ANGLE_CLASS + + printf("\n"); + + printf("Dihedral styles:\n"); + +#define DIHEDRAL_CLASS +#define DihedralStyle(key,Class) printf(" %s",#key); +#include "style_dihedral.h" +#undef DIHEDRAL_CLASS + + printf("\n"); + + printf("Improper styles:\n"); + +#define IMPROPER_CLASS +#define ImproperStyle(key,Class) printf(" %s",#key); +#include "style_improper.h" +#undef IMPROPER_CLASS + + printf("\n"); + + printf("Fix styles:\n"); + +#define FIX_CLASS +#define FixStyle(key,Class) printf(" %s",#key); +#include "style_fix.h" +#undef FIX_CLASS + + printf("\n"); + + printf("Fix styles:\n"); + +#define COMPUTE_CLASS +#define ComputeStyle(key,Class) printf(" %s",#key); +#include "style_compute.h" +#undef COMPUTE_CLASS + + printf("\n"); + + printf("Commands:\n"); + +#define COMMAND_CLASS +#define CommandStyle(key,Class) printf(" %s",#key); +#include "style_command.h" +#undef COMMAND_CLASS + + printf("\n"); + + printf("Region styles:\n"); + +#define REGION_CLASS +#define RegionStyle(key,Class) printf(" %s",#key); +#include "style_region.h" +#undef REGION_CLASS + + printf("\n"); + + printf("Dump styles:\n"); + +#define DUMP_CLASS +#define DumpStyle(key,Class) printf(" %s",#key); +#include "style_dump.h" +#undef DUMP_CLASS + + printf("\n"); +} + diff --git a/src/lammps.h b/src/lammps.h index 71408cc1ef..af25717ee2 100644 --- a/src/lammps.h +++ b/src/lammps.h @@ -51,6 +51,8 @@ class LAMMPS { void create(); void init(); void destroy(); + + void print_styles(); }; }