diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt index 5c33a0a4d44f97545e8d94819161e2bce9fad78e..2fc0785227aa3a2cf7b03bbade565eed8581efe3 100644 --- a/doc/src/Build_extras.txt +++ b/doc/src/Build_extras.txt @@ -47,6 +47,7 @@ This is the list of packages that may require additional steps. "USER-OMP"_#user-omp, "USER-QMMM"_#user-qmmm, "USER-QUIP"_#user-quip, +"USER-SCAFACOS"_#user-scafacos, "USER-SMD"_#user-smd, "USER-VTK"_#user-vtk :tb(c=6,ea=c,a=l) @@ -894,6 +895,45 @@ successfully build on your system. :line +USER-SCAFACOS package :h4,link(user-scafacos) + +To build with this package, you must download and build the "ScaFaCoS +Coulomb solver library"_scafacos_home + +:link(scafacos_home,http://www.scafacos.de) + +[CMake build]: + +-D DOWNLOAD_SCAFACOS=value # download ScaFaCoS for build, value = no (default) or yes +-D SCAFACOS_LIBRARY=path # ScaFaCos library file (only needed if at custom location) +-D SCAFACOS_INCLUDE_DIR=path # ScaFaCoS include directory (only needed if at custom location) :pre + +If DOWNLOAD_SCAFACOS is set, the ScaFaCoS library will be downloaded +and built inside the CMake build directory. If the ScaFaCoS library +is already on your system (in a location CMake cannot find it), +SCAFACOS_LIBRARY is the filename (plus path) of the ScaFaCoS library +file, not the directory the library file is in. SCAFACOS_INCLUDE_DIR +is the directory the ScaFaCoS include file is in. + +[Traditional make]: + +You can download and build the ScaFaCoS library manually if you +prefer; follow the instructions in lib/scafacos/README. You can also +do it in one step from the lammps/src dir, using a command like these, +which simply invoke the lib/scafacos/Install.py script with the +specified args: + +make lib-scafacos # print help message +make lib-scafacos args="-b" # download and build in lib/scafacos/scafacos-<version> +make lib-scafacos args="-p $HOME/scafacos # use existing ScaFaCoS installation in $HOME/scafacos + +Note that 2 symbolic (soft) links, "includelink" and "liblink", are +created in lib/scafacos to point to the ScaFaCoS src dir. When LAMMPS +builds in src it will use these links. You should not need to edit +the lib/scafacos/Makefile.lammps file. + +:line + USER-SMD package :h4,link(user-smd) To build with this package, you must download the Eigen3 library. diff --git a/doc/src/Build_package.txt b/doc/src/Build_package.txt index 4f71e9eb18067d4ef3210aada08a8722e38e8687..fab987ea0d0c743d0c924f2e011c358e42e4ac0b 100644 --- a/doc/src/Build_package.txt +++ b/doc/src/Build_package.txt @@ -58,6 +58,7 @@ packages: "USER-OMP"_Build_extras.html#user-omp, "USER-QMMM"_Build_extras.html#user-qmmm, "USER-QUIP"_Build_extras.html#user-quip, +"USER-SCAFACOS"_#Build_extras.html#user-scafacos, "USER-SMD"_Build_extras.html#user-smd, "USER-VTK"_Build_extras.html#user-vtk :tb(c=6,ea=c,a=l) diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt index 892774be383f379ade01ca6265e69ea6b6f4bcfc..c4c9043908a86b4dbc90ea042264d9ceb2fdf7c4 100644 --- a/doc/src/Packages_details.txt +++ b/doc/src/Packages_details.txt @@ -92,6 +92,7 @@ as contained in the file name. "USER-QTB"_#PKG-USER-QTB, "USER-QUIP"_#PKG-USER-QUIP, "USER-REAXC"_#PKG-USER-REAXC, +"USER-SCAFACOS"_#USER-SCAFACOS, "USER-SMD"_#PKG-USER-SMD, "USER-SMTBQ"_#PKG-USER-SMTBQ, "USER-SPH"_#PKG-USER-SPH, @@ -1839,6 +1840,41 @@ examples/reax :ul :line +USER-SCAFACOS package :link(USER-SCAFACOS),h4 + +[Contents:] + +A KSpace style which wraps the "ScaFaCoS Coulomb solver +library"_http://www.scafacos.de to compute long-range Coulombic +interactions. + +To use this package you must have the ScaFaCoS library available on +your system. + +[Author:] Rene Halver (JSC) wrote the scafacos LAMMPS command. + +ScaFaCoS itself was developed by a consortium of German research +facilities with a BMBF (German Ministry of Science and Education) +funded project in 2009-2012. Participants of the consortium were the +Universities of Bonn, Chemnitz, Stuttgart, and Wuppertal as well as +the Forschungszentrum Juelich. + +[Install:] + +This package has "specific installation +instructions"_Build_extras.html#user-scafacos on the "Build +extras"_Build_extras.html doc page. + +[Supporting info:] + +src/USER-SCAFACOS: filenames -> commands +src/USER-SCAFACOS/README +"kspace_style scafacos"_kspace_style.html +"kspace_modify"_kspace_modify.html +examples/USER/scafacos :ul + +:line + USER-SMD package :link(PKG-USER-SMD),h4 [Contents:] diff --git a/doc/src/Packages_user.txt b/doc/src/Packages_user.txt index c1a52fd0d0d864493d49f849aa5c531fcb1cd40f..5ed5c6f6d3e2529d0593813496f6422c32bcfd0b 100644 --- a/doc/src/Packages_user.txt +++ b/doc/src/Packages_user.txt @@ -66,6 +66,7 @@ Package, Description, Doc page, Example, Library "USER-QTB"_Packages_details.html#PKG-USER-QTB, quantum nuclear effects,"fix qtb"_fix_qtb.html "fix qbmsst"_fix_qbmsst.html, qtb, no "USER-QUIP"_Packages_details.html#PKG-USER-QUIP, QUIP/libatoms interface,"pair_style quip"_pair_quip.html, USER/quip, ext "USER-REAXC"_Packages_details.html#PKG-USER-REAXC, ReaxFF potential (C/C++) ,"pair_style reaxc"_pair_reaxc.html, reax, no +"USER-SCAFACOS"_Packages_details.html#PKG-USER-SCAFACOS, wrapper on ScaFaCoS solver,"kspace_style scafacos"_kspace_style.html, USER/scafacos, ext "USER-SMD"_Packages_details.html#PKG-USER-SMD, smoothed Mach dynamics,"SMD User Guide"_PDF/SMD_LAMMPS_userguide.pdf, USER/smd, ext "USER-SMTBQ"_Packages_details.html#PKG-USER-SMTBQ, second moment tight binding QEq potential,"pair_style smtbq"_pair_smtbq.html, USER/smtbq, no "USER-SPH"_Packages_details.html#PKG-USER-SPH, smoothed particle hydrodynamics,"SPH User Guide"_PDF/SPH_LAMMPS_userguide.pdf, USER/sph, no diff --git a/doc/src/kspace_style.txt b/doc/src/kspace_style.txt index deb8d8ab5178d0fbd7466b55b075a42344f7b893..ddf4e15703a126f32d84fa6d626ed15dd36aa5ec 100644 --- a/doc/src/kspace_style.txt +++ b/doc/src/kspace_style.txt @@ -252,7 +252,7 @@ These are the ScaFaCoS methods currently available from LAMMPS: {p2nfft} = FFT-based Coulomb solver {ewald} = Ewald summation {direct} = direct O(N^2) summation -{p3m} = PPPM +{p3m} = PPPM :ul We plan to support additional ScaFaCoS solvers from LAMMPS in the future. For an overview of the included solvers, refer to @@ -268,7 +268,7 @@ energy or the total Columic energy. To select from these options, see the "kspace_modify scafacos accuracy"_kspace_modify.html doc page. The "kspace_modify scafacos"_kspace_modify.html command also explains -all the ScaFaCoS options currently exposed to LAMMPS. +other ScaFaCoS options currently exposed to LAMMPS. :line diff --git a/src/USER-SCAFACOS/scafacos.cpp b/src/USER-SCAFACOS/scafacos.cpp index f3e8ce64f7ee2762ab546ab36fffafb50093a770..d047853b553f5fc38ff50d25e6254a0993535b0a 100644 --- a/src/USER-SCAFACOS/scafacos.cpp +++ b/src/USER-SCAFACOS/scafacos.cpp @@ -199,7 +199,6 @@ void Scafacos::compute(int eflag, int vflag) eflag_atom = 0; vflag_global = 0; } - // grow xpbc, epot, efield if necessary @@ -223,6 +222,8 @@ void Scafacos::compute(int eflag, int vflag) // pack coords into xpbc and apply PBC memcpy(xpbc,&x[0][0],3*nlocal*sizeof(double)); + // RENE: remove this section (see RENE below) + //int j = 0; for (int i = 0; i < nlocal; i++) { if (domain->xperiodic) domain->remap(&xpbc[3*i]); @@ -231,6 +232,15 @@ void Scafacos::compute(int eflag, int vflag) //j += 3; } + // RENE: I think the call to domain->remap needs to be this way + // b/c the remap() method checks for PBC and does all 3 dims at once + + int j = 0; + for (int i = 0; i < nlocal; i++) { + domain->remap(&xpbc[j]); + j += 3; + } + // if simulation box has changed, call fcs_tune() if (box_has_changed()) {