diff --git a/src/Makefile b/src/Makefile index 674d7a808b..1070bd5025 100755 --- a/src/Makefile +++ b/src/Makefile @@ -18,7 +18,7 @@ PACKAGE = asphere class2 colloid dipole dsmc gpu granular \ shock srd xtc PACKUSER = user-ackland user-atc user-awpmd user-cd-eam user-cg-cmm \ - user-eff user-ewaldn user-imd user-reaxc user-smd + user-eff user-ewaldn user-imd user-reaxc user-smd # user-cuda user-eff user-ewaldn user-imd user-reaxc user-smd PACKALL = $(PACKAGE) $(PACKUSER) @@ -52,6 +52,7 @@ help: @echo '' @echo 'make package-update replace src files with package files' @echo 'make package-overwrite replace package files with src files' + @echo 'make package-diff diff src files against package files' @echo '' @echo 'make machine build LAMMPS where machine is one of:' @echo '' @@ -126,6 +127,7 @@ package: @echo '' @echo 'make package-update replace src files with package files' @echo 'make package-overwrite replace package files with src files' + @echo 'make package-diff diff src files against package file' yes-all: @for p in $(PACKALL); do $(MAKE) yes-$$p; done @@ -161,10 +163,11 @@ no-%: cd $(NODIR); $(SHELL) Install.sh 0; cd ..; $(SHELL) Depend.sh 0; \ fi; -# status = list differences between src and package files +# status = list src files that differ from package files # update = replace src files with newer package files # overwrite = overwrite package files with newer src files # regenerate = regenerate Makefile.package from Makefile.package.empty +# diff = show differences between src and package files package-status: @for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p status; done @@ -185,3 +188,9 @@ package-regenerate: @cp Makefile.package.empty Makefile.package @for p in $(PACKAGEUC); do $(SHELL) Package.sh $$p regenerate; done @for p in $(PACKUSERUC); do $(SHELL) Package.sh $$p regenerate; done + +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/Package.sh b/src/Package.sh index f1f7025d2f..b42494503d 100644 --- a/src/Package.sh +++ b/src/Package.sh @@ -1,5 +1,5 @@ # Package.sh = package management, called from Makefile -# Syntax: sh Package.sh DIR status/update/overwrite/regenerate +# Syntax: sh Package.sh DIR status/update/overwrite/regenerate/diff # style used to translate dir name to package name @@ -79,7 +79,7 @@ elif (test $2 = "overwrite") then echo " $1 package is not installed, no action" fi -# regenernate Makefile.package from Makefile.package.empty +# regenenate Makefile.package from Makefile.package.empty # if installed: # re-install so Install.sh will edit Makefile.pacakge @@ -87,4 +87,28 @@ elif (test $2 = "regenerate") then if (test $installed = 1) then /bin/sh Install.sh 1 fi + +# diff +# if installed: +# show any differences between src files and package files + +elif (test $2 = "diff") then + if (test $installed = 1) then + echo "Installed YES: package $1" + for file in *.cpp *.h; do + if (test ! -e ../$file) then + echo "************************************************************************" + echo " src/$file does not exist" + echo "************************************************************************" + elif (test "`diff --brief $file ../$file`" != "") then + echo "************************************************************************" + echo "diff $1/$file src/$file " + echo "************************************************************************" + diff $file ../$file + fi + done + fi fi + + + diff --git a/src/lammps.cpp b/src/lammps.cpp index 9033a7d59d..548a69e36e 100644 --- a/src/lammps.cpp +++ b/src/lammps.cpp @@ -55,6 +55,8 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) int inflag = 0; int screenflag = 0; int logflag = 0; + int partscreenflag = 0; + int partlogflag = 0; int cudaflag = -1; suffix = NULL; suffix_enable = 0; @@ -94,6 +96,18 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) strcmp(arg[iarg],"-e") == 0) { if (iarg+2 > narg) error->universe_all("Invalid command-line argument"); iarg += 2; + } else if (strcmp(arg[iarg],"-pscreen") == 0 || + strcmp(arg[iarg],"-ps") == 0) { + if (iarg+2 > narg) + error->universe_all("Invalid command-line argument"); + partscreenflag = iarg + 1; + iarg += 2; + } else if (strcmp(arg[iarg],"-plog") == 0 || + strcmp(arg[iarg],"-pl") == 0) { + if (iarg+2 > narg) + error->universe_all("Invalid command-line argument"); + partlogflag = iarg + 1; + iarg += 2; } else if (strcmp(arg[iarg],"-cuda") == 0 || strcmp(arg[iarg],"-c") == 0) { if (iarg+2 > narg) error->universe_all("Invalid command-line argument"); @@ -127,6 +141,16 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) if (universe->existflag && inflag == 0) error->universe_all("Must use -in switch with multiple partitions"); + // if no partition command-line switch, cannot use -pscreen option + + if (universe->existflag == 0 && partscreenflag) + error->universe_all("Can only use -pscreen with multiple partitions"); + + // if no partition command-line switch, cannot use -plog option + + if (universe->existflag == 0 && partlogflag) + error->universe_all("Can only use -plog with multiple partitions"); + // set universe screen and logfile if (universe->me == 0) { @@ -194,37 +218,53 @@ LAMMPS::LAMMPS(int narg, char **arg, MPI_Comm communicator) MPI_Comm_split(universe->uworld,universe->iworld,0,&world); MPI_Comm_rank(world,&me); - if (me == 0) { - if (screenflag == 0) { - char str[32]; - sprintf(str,"screen.%d",universe->iworld); - screen = fopen(str,"w"); - if (screen == NULL) error->one("Cannot open screen file"); - } else if (strcmp(arg[screenflag],"none") == 0) + if (me == 0) + if (partscreenflag == 0) + if (screenflag == 0) { + char str[32]; + sprintf(str,"screen.%d",universe->iworld); + screen = fopen(str,"w"); + if (screen == NULL) error->one("Cannot open screen file"); + } else if (strcmp(arg[screenflag],"none") == 0) + screen = NULL; + else { + char str[128]; + sprintf(str,"%s.%d",arg[screenflag],universe->iworld); + screen = fopen(str,"w"); + if (screen == NULL) error->one("Cannot open screen file"); + } + else if (strcmp(arg[partscreenflag],"none") == 0) screen = NULL; else { char str[128]; - sprintf(str,"%s.%d",arg[screenflag],universe->iworld); + sprintf(str,"%s.%d",arg[partscreenflag],universe->iworld); screen = fopen(str,"w"); if (screen == NULL) error->one("Cannot open screen file"); - } - } else screen = NULL; + } else screen = NULL; - if (me == 0) { - if (logflag == 0) { - char str[32]; - sprintf(str,"log.lammps.%d",universe->iworld); - logfile = fopen(str,"w"); - if (logfile == NULL) error->one("Cannot open logfile"); - } else if (strcmp(arg[logflag],"none") == 0) + if (me == 0) + if (partlogflag == 0) + if (logflag == 0) { + char str[32]; + sprintf(str,"log.lammps.%d",universe->iworld); + logfile = fopen(str,"w"); + if (logfile == NULL) error->one("Cannot open logfile"); + } else if (strcmp(arg[logflag],"none") == 0) + logfile = NULL; + else { + char str[128]; + sprintf(str,"%s.%d",arg[logflag],universe->iworld); + logfile = fopen(str,"w"); + if (logfile == NULL) error->one("Cannot open logfile"); + } + else if (strcmp(arg[partlogflag],"none") == 0) logfile = NULL; else { char str[128]; - sprintf(str,"%s.%d",arg[logflag],universe->iworld); + sprintf(str,"%s.%d",arg[partlogflag],universe->iworld); logfile = fopen(str,"w"); if (logfile == NULL) error->one("Cannot open logfile"); - } - } else logfile = NULL; + } else logfile = NULL; if (me == 0) { infile = fopen(arg[inflag],"r");