diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 4c94a5037a..263b5a566d 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -124,7 +124,7 @@ set(STANDARD_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE USER-LB USER-MANIFOLD USER-MEAMC USER-MESONT USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-PHONON USER-PLUMED USER-PTM USER-QTB USER-REACTION USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH - USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM USER-YAFF) + USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM USER-YAFF USER-PACE) set(SUFFIX_PACKAGES CORESHELL GPU KOKKOS OPT USER-INTEL USER-OMP) @@ -269,6 +269,7 @@ endif() set(ENABLE_IWYU OFF CACHE BOOL "Add 'iwyu' build target to call the include-what-you-use tool") mark_as_advanced(ENABLE_IWYU) if(ENABLE_IWYU) + set(CMAKE_EXPORT_COMPILE_COMMANDS ON) find_program(IWYU_EXE NAMES include-what-you-use iwyu) find_program(IWYU_TOOL NAMES iwyu_tool iwyu-tool iwyu_tool.py) if (IWYU_EXE AND IWYU_TOOL) @@ -387,9 +388,9 @@ else() endif() foreach(PKG_WITH_INCL KSPACE PYTHON MLIAP VORONOI USER-COLVARS USER-MOLFILE USER-NETCDF USER-PLUMED USER-QMMM - USER-QUIP USER-SCAFACOS USER-SMD USER-VTK KIM LATTE MESSAGE MSCG COMPRESS) + USER-QUIP USER-SCAFACOS USER-SMD USER-VTK KIM LATTE MESSAGE MSCG COMPRESS USER-PACE) if(PKG_${PKG_WITH_INCL}) - include(Packages/${PKG_WITH_INCL}) + include(Packages/${PKG_WITH_INCL}) endif() endforeach() @@ -730,7 +731,7 @@ get_target_property(DEFINES lammps COMPILE_DEFINITIONS) include(FeatureSummary) feature_summary(DESCRIPTION "The following tools and libraries have been found and configured:" WHAT PACKAGES_FOUND) message(STATUS "<<< Build configuration >>> - Operating System: ${CMAKE_SYSTEM_NAME} + Operating System: ${CMAKE_SYSTEM_NAME} ${CMAKE_LINUX_DISTRO} ${CMAKE_DISTRO_VERSION} Build type: ${CMAKE_BUILD_TYPE} Install path: ${CMAKE_INSTALL_PREFIX} Generator: ${CMAKE_GENERATOR} using ${CMAKE_MAKE_PROGRAM}") diff --git a/cmake/Modules/LAMMPSUtils.cmake b/cmake/Modules/LAMMPSUtils.cmake index acaef19498..41dcfc5b2f 100644 --- a/cmake/Modules/LAMMPSUtils.cmake +++ b/cmake/Modules/LAMMPSUtils.cmake @@ -104,3 +104,13 @@ function(FetchPotentials pkgfolder potfolder) endforeach() endif() endfunction(FetchPotentials) + +# set CMAKE_LINUX_DISTRO and CMAKE_DISTRO_VERSION on Linux +if((CMAKE_SYSTEM_NAME STREQUAL Linux) AND (EXISTS /etc/os-release)) + file(STRINGS /etc/os-release distro REGEX "^NAME=") + string(REGEX REPLACE "NAME=\"?([^\"]*)\"?" "\\1" distro "${distro}") + file(STRINGS /etc/os-release disversion REGEX "^VERSION_ID=") + string(REGEX REPLACE "VERSION_ID=\"?([^\"]*)\"?" "\\1" disversion "${disversion}") + set(CMAKE_LINUX_DISTRO ${distro}) + set(CMAKE_DISTRO_VERSION ${disversion}) +endif() diff --git a/cmake/Modules/Packages/USER-PACE.cmake b/cmake/Modules/Packages/USER-PACE.cmake new file mode 100644 index 0000000000..66f228017c --- /dev/null +++ b/cmake/Modules/Packages/USER-PACE.cmake @@ -0,0 +1,26 @@ + +set(PACELIB_URL "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/v.2021.4.9.tar.gz" CACHE STRING "URL for PACE evaluator library sources") +set(PACELIB_MD5 "4db54962fbd6adcf8c18d46e1798ceb5" CACHE STRING "MD5 checksum of PACE evaluator library tarball") +mark_as_advanced(PACELIB_URL) +mark_as_advanced(PACELIB_MD5) + +# download library sources to build folder +file(DOWNLOAD ${PACELIB_URL} ${CMAKE_BINARY_DIR}/libpace.tar.gz SHOW_PROGRESS EXPECTED_HASH MD5=${PACELIB_MD5}) + +# uncompress downloaded sources +execute_process( + COMMAND ${CMAKE_COMMAND} -E remove_directory lammps-user-pace* + COMMAND ${CMAKE_COMMAND} -E tar xzf libpace.tar.gz + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} +) + + +file(GLOB PACE_EVALUATOR_INCLUDE_DIR ${CMAKE_BINARY_DIR}/lammps-user-pace-*/USER-PACE) +file(GLOB PACE_EVALUATOR_SOURCES ${CMAKE_BINARY_DIR}/lammps-user-pace-*/USER-PACE/*.cpp) +list(FILTER PACE_EVALUATOR_SOURCES EXCLUDE REGEX pair_pace.cpp) + +add_library(pace STATIC ${PACE_EVALUATOR_SOURCES}) +set_target_properties(pace PROPERTIES OUTPUT_NAME pace${LAMMPS_MACHINE}) +target_include_directories(pace PUBLIC ${PACE_EVALUATOR_INCLUDE_DIR}) +target_link_libraries(lammps PRIVATE pace) + diff --git a/cmake/Modules/Packages/USER-PLUMED.cmake b/cmake/Modules/Packages/USER-PLUMED.cmake index 8719e8179d..e71542cfc5 100644 --- a/cmake/Modules/Packages/USER-PLUMED.cmake +++ b/cmake/Modules/Packages/USER-PLUMED.cmake @@ -54,8 +54,9 @@ if(DOWNLOAD_PLUMED) set(PLUMED_BUILD_BYPRODUCTS "/lib/libplumedWrapper.a") endif() - set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.7.0/plumed-src-2.7.0.tgz" CACHE STRING "URL for PLUMED tarball") - set(PLUMED_MD5 "95f29dd0c067577f11972ff90dfc7d12" CACHE STRING "MD5 checksum of PLUMED tarball") + set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.7.1/plumed-src-2.7.1.tgz" CACHE STRING "URL for PLUMED tarball") + set(PLUMED_MD5 "4eac6a462ec84dfe0cec96c82421b8e8" CACHE STRING "MD5 checksum of PLUMED tarball") + mark_as_advanced(PLUMED_URL) mark_as_advanced(PLUMED_MD5) diff --git a/cmake/Modules/Testing.cmake b/cmake/Modules/Testing.cmake index 6d2f39b0f3..7fbd8212de 100644 --- a/cmake/Modules/Testing.cmake +++ b/cmake/Modules/Testing.cmake @@ -16,11 +16,14 @@ if(ENABLE_TESTING) set(MEMORYCHECK_COMMAND "${VALGRIND_BINARY}" CACHE FILEPATH "Memory Check Command") set(MEMORYCHECK_COMMAND_OPTIONS "${VALGRIND_DEFAULT_OPTIONS}" CACHE STRING "Memory Check Command Options") - # check if a faster linker is available. - # only verified with GNU and Clang compilers and new CMake - if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.13) - if((${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") - OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")) + # we need to build and link a LOT of tester executables, so it is worth checking if + # a faster linker is available. requires GNU or Clang compiler, newer CMake. + # also only verified with Fedora Linux > 30 and Ubuntu <= 18.04 (Ubuntu 20.04 fails) + if((CMAKE_SYSTEM_NAME STREQUAL Linux) AND (CMAKE_VERSION VERSION_GREATER_EQUAL 3.13) + AND ((${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") + OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang"))) + if (((CMAKE_LINUX_DISTRO STREQUAL Ubuntu) AND (CMAKE_DISTRO_VERSION VERSION_LESS_EQUAL 18.04)) + OR ((CMAKE_LINUX_DISTRO STREQUAL Fedora) AND (CMAKE_DISTRO_VERSION VERSION_GREATER 30))) include(CheckCXXCompilerFlag) set(CMAKE_CUSTOM_LINKER_DEFAULT default) check_cxx_compiler_flag(-fuse-ld=lld HAVE_LLD_LINKER_FLAG) diff --git a/doc/graphviz/lammps-classes.dot b/doc/graphviz/lammps-classes.dot index 3c2d2f418d..390dd2cc4b 100644 --- a/doc/graphviz/lammps-classes.dot +++ b/doc/graphviz/lammps-classes.dot @@ -18,8 +18,8 @@ digraph lammps { Up [shape=box label="Update" color=blue] Un [shape=box label="Universe" color=blue] Ti [shape=box label="Timer" color=blue] - Lt [label="Lattice"] Rg [label="Region" color=red] + Lt [label="Lattice"] Rb [shape=box label="RegionBlock"] Rs [shape=box label="RegionSphere"] Av [label="AtomVec" color=red] @@ -34,6 +34,7 @@ digraph lammps { Du [label="Dump" color=red] Fi [label="Fix" color=red] Cp [label="Compute" color=red] + Cm [label="Command" color=red] Th [label="Thermo"] Va [label="Variable"] Ew [shape=box label="Ewald"] @@ -71,16 +72,19 @@ digraph lammps { Dg [shape=box label="DumpCFG"] Ve [shape=box label="Verlet"] Rr [shape=box label="Respa"] + Ru [shape=box label="Run"] + Se [shape=box label="Set"] Pt [shape=box label="PPPMTIP4P"] Vs [shape=box label="VerletSplit"] Ro [shape=box label="RespaOMP"] Mc [shape=box label="MinCG"] Mf [shape=box label="MinFire"] La -> {At Ci Co Do Er Fo Gr In Me Mo Ne Ou Ti Up Un} [penwidth=2] - Do -> {Lt Rg} [penwidth=2] + Do -> {Rg Lt} [penwidth=2] Rg -> {Rb Rs} [style=dashed penwidth=2] Co -> {Cb Ct} [style=dashed penwidth=2] - In -> Va [penwidth=2] + In -> {Va Cm} [penwidth=2] + Cm -> {Ru Se} [style=dashed penwidth=2] Mo -> {Fi Cp} [penwidth=2] Fo -> {Pa Bo An Di Im Ks} [penwidth=2] Ks -> {Ew Pp} [style=dashed penwidth=2] diff --git a/doc/src/Build_extras.rst b/doc/src/Build_extras.rst index 3af018c656..d375d33e56 100644 --- a/doc/src/Build_extras.rst +++ b/doc/src/Build_extras.rst @@ -52,6 +52,7 @@ This is the list of packages that may require additional steps. * :ref:`USER-MESONT ` * :ref:`USER-MOLFILE ` * :ref:`USER-NETCDF ` + * :ref:`USER-PACE ` * :ref:`USER-PLUMED ` * :ref:`USER-OMP ` * :ref:`USER-QMMM ` @@ -1247,6 +1248,46 @@ be built for the most part with all major versions of the C++ language. ---------- +.. _user-pace: + +USER-PACE package +----------------------------- + +This package requires a library that can be downloaded and built +in lib/pace or somewhere else, which must be done before building +LAMMPS with this package. The code for the library can be found +at: `https://github.com/ICAMS/lammps-user-pace/ `_ + +.. tabs:: + + .. tab:: CMake build + + By default the library will be downloaded from the git repository + and built automatically when the USER-PACE package is enabled with + ``-D PKG_USER-PACE=yes``. The location for the sources may be + customized by setting the variable ``PACELIB_URL`` when + configuring with CMake (e.g. to use a local archive on machines + without internet access). Since CMake checks the validity of the + archive with ``md5sum`` you may also need to set ``PACELIB_MD5`` + if you provide a different library version than what is downloaded + automatically. + + + .. tab:: Traditional make + + You can download and build the USER-PACE library + in one step from the ``lammps/src`` dir, using these commands, + which invoke the ``lib/pace/Install.py`` script. + + .. code-block:: bash + + $ make lib-pace # print help message + $ make lib-pace args="-b" # download and build the default version in lib/pace + + You should not need to edit the ``lib/pace/Makefile.lammps`` file. + +---------- + .. _user-plumed: USER-PLUMED package diff --git a/doc/src/Build_package.rst b/doc/src/Build_package.rst index f9fc52f8db..91531f51ec 100644 --- a/doc/src/Build_package.rst +++ b/doc/src/Build_package.rst @@ -30,17 +30,17 @@ steps, as explained on the :doc:`Build extras ` page. These links take you to the extra instructions for those select packages: -+----------------------------------+----------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ -| :ref:`COMPRESS ` | :ref:`GPU ` | :ref:`KIM ` | :ref:`KOKKOS ` | :ref:`LATTE ` | :ref:`MESSAGE ` | -+----------------------------------+----------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ -| :ref:`MSCG ` | :ref:`OPT ` | :ref:`POEMS ` | :ref:`PYTHON ` | :ref:`VORONOI ` | :ref:`USER-ADIOS ` | -+----------------------------------+----------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ -| :ref:`USER-ATC ` | :ref:`USER-AWPMD ` | :ref:`USER-COLVARS ` | :ref:`USER-H5MD ` | :ref:`USER-INTEL ` | :ref:`USER-MOLFILE ` | -+----------------------------------+----------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ -| :ref:`USER-NETCDF ` | :ref:`USER-PLUMED ` | :ref:`USER-OMP ` | :ref:`USER-QMMM ` | :ref:`USER-QUIP ` | :ref:`USER-SCAFACOS ` | -+----------------------------------+----------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ -| :ref:`USER-SMD ` | :ref:`USER-VTK ` | | | | | -+----------------------------------+----------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ ++--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ +| :ref:`COMPRESS ` | :ref:`GPU ` | :ref:`KIM ` | :ref:`KOKKOS ` | :ref:`LATTE ` | :ref:`MESSAGE ` | ++--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ +| :ref:`MSCG ` | :ref:`OPT ` | :ref:`POEMS ` | :ref:`PYTHON ` | :ref:`VORONOI ` | :ref:`USER-ADIOS ` | ++--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ +| :ref:`USER-ATC ` | :ref:`USER-AWPMD ` | :ref:`USER-COLVARS ` | :ref:`USER-H5MD ` | :ref:`USER-INTEL ` | :ref:`USER-MOLFILE ` | ++--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ +| :ref:`USER-NETCDF ` | :ref:`USER-PACE ` | :ref:`USER-PLUMED ` | :ref:`USER-OMP ` | :ref:`USER-QMMM ` | :ref:`USER-QUIP ` | ++--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ +| :ref:`USER-SCAFACOS ` | :ref:`USER-SMD ` | :ref:`USER-VTK ` | | | | ++--------------------------------------+--------------------------------+------------------------------------+------------------------------+--------------------------------+--------------------------------------+ The mechanism for including packages is simple but different for CMake versus make. diff --git a/doc/src/Commands_fix.rst b/doc/src/Commands_fix.rst index 4793568288..671716e89d 100644 --- a/doc/src/Commands_fix.rst +++ b/doc/src/Commands_fix.rst @@ -46,6 +46,7 @@ OPT. * :doc:`bond/react ` * :doc:`bond/swap ` * :doc:`box/relax ` + * :doc:`charge/regulation ` * :doc:`client/md ` * :doc:`cmap ` * :doc:`colvars ` diff --git a/doc/src/Commands_pair.rst b/doc/src/Commands_pair.rst index 60996b9c65..b91a749364 100644 --- a/doc/src/Commands_pair.rst +++ b/doc/src/Commands_pair.rst @@ -216,6 +216,7 @@ OPT. * :doc:`oxrna2/stk ` * :doc:`oxrna2/xstk ` * :doc:`oxrna2/coaxstk ` + * :doc:`pace ` * :doc:`peri/eps ` * :doc:`peri/lps (o) ` * :doc:`peri/pmb (o) ` diff --git a/doc/src/Developer_org.rst b/doc/src/Developer_org.rst index 6ecccf084d..133d567cb3 100644 --- a/doc/src/Developer_org.rst +++ b/doc/src/Developer_org.rst @@ -49,8 +49,8 @@ underscore character '_' to separate words. Outside of bundled libraries which may have different conventions, all C and C++ header files have a ``.h`` extension, all C++ files have a ``.cpp`` extension, and C files a ``.c`` extension. A small number of C++ classes and utility functions -are implemented with only a ``.h`` file. Examples are the Pointer class -or the MathVec functions. +are implemented with only a ``.h`` file. Examples are the Pointers and +Commands classes or the MathVec functions. Class topology -------------- @@ -144,7 +144,7 @@ implement specific commands that can be invoked before, after, or in between runs. For these an instance of the class is created, its command() method called and then, after completion, the class instance deleted. Examples for this are the create_box, create_atoms, minimize, -run, or velocity command styles. +run, set, or velocity command styles. For all those ``styles`` certain naming conventions are employed: for the fix nve command the class is called FixNVE and the source files are @@ -175,11 +175,11 @@ follows: - The Input class reads and processes input input strings and files, stores variables, and invokes :doc:`commands `. -- As discussed above, command style classes are directly derived from - the Pointers class. They provide input script commands that perform - one-time operations before/after/between simulations or which invoke a - simulation. They are instantiated from within the Input class, - invoked, then immediately destructed. +- Command style classes are derived from the Command class. They provide + input script commands that perform one-time operations + before/after/between simulations or which invoke a simulation. They + are usually instantiated from within the Input class, its ``command`` + method invoked, and then immediately destructed. - The Finish class is instantiated to print statistics to the screen after a simulation is performed, by commands like run and minimize. diff --git a/doc/src/Developer_plugins.rst b/doc/src/Developer_plugins.rst index 68f1f1387c..1beedcf213 100644 --- a/doc/src/Developer_plugins.rst +++ b/doc/src/Developer_plugins.rst @@ -59,31 +59,25 @@ Members of ``lammpsplugin_t`` * - author - String with the name and email of the author * - creator.v1 - - Pointer to factory function for pair, bond, angle, dihedral, or improper styles + - Pointer to factory function for pair, bond, angle, dihedral, improper or command styles * - creator.v2 - Pointer to factory function for compute, fix, or region styles - * - creator.v3 - - Pointer to factory function for command styles * - handle - Pointer to the open DSO file handle Only one of the three alternate creator entries can be used at a time -and which of those is determined by the style of plugin. The "creator.v1" -element is for factory functions of supported styles computing forces (i.e. -pair, bond, angle, dihedral, or improper styles) and the function takes -as single argument the pointer to the LAMMPS instance. The factory function -is cast to the ``lammpsplugin_factory1`` type before assignment. The -"creator.v2" element is for factory functions creating an instance of -a fix, compute, or region style and takes three arguments: a pointer to -the LAMMPS instance, an integer with the length of the argument list and -a ``char **`` pointer to the list of arguments. The factory function pointer -needs to be cast to the ``lammpsplugin_factory2`` type before assignment. -The "creator.v3" element takes the same arguments as "creator.v3" but is -specific to creating command styles: the factory function has to instantiate -the command style locally passing the LAMMPS pointer as argument and then -call its "command" member function with the number and list of arguments. -The factory function pointer needs to be cast to the -``lammpsplugin_factory3`` type before assignment. +and which of those is determined by the style of plugin. The +"creator.v1" element is for factory functions of supported styles +computing forces (i.e. command, pair, bond, angle, dihedral, or +improper styles) and the function takes as single argument the pointer +to the LAMMPS instance. The factory function is cast to the +``lammpsplugin_factory1`` type before assignment. The "creator.v2" +element is for factory functions creating an instance of a fix, compute, +or region style and takes three arguments: a pointer to the LAMMPS +instance, an integer with the length of the argument list and a ``char +**`` pointer to the list of arguments. The factory function pointer +needs to be cast to the ``lammpsplugin_factory2`` type before +assignment. Pair style example ^^^^^^^^^^^^^^^^^^ @@ -123,12 +117,12 @@ function would look like this: The factory function in this example is called ``morse2creator()``. It receives a pointer to the LAMMPS class as only argument and thus has to -be assigned to the *creator.v1* member of the plugin struct and cast to the -``lammpsplugin_factory1`` pointer type. It returns a +be assigned to the *creator.v1* member of the plugin struct and cast to +the ``lammpsplugin_factory1`` function pointer type. It returns a pointer to the allocated class instance derived from the ``Pair`` class. -This function may be declared static to avoid clashes with other plugins. -The name of the derived class, ``PairMorse2``, must be unique inside -the entire LAMMPS executable. +This function may be declared static to avoid clashes with other +plugins. The name of the derived class, ``PairMorse2``, however must be +unique inside the entire LAMMPS executable. Fix style example ^^^^^^^^^^^^^^^^^ @@ -169,9 +163,9 @@ Below is an example for that: Command style example ^^^^^^^^^^^^^^^^^^^^^ -For command styles there is a third variant of factory function as +Command styles also use the first variant of factory function as demonstrated in the following example, which also shows that the -implementation of the plugin class may also be within the same +implementation of the plugin class may be within the same source file as the plugin interface code: .. code-block:: C++ @@ -180,15 +174,15 @@ file as the plugin interface code: #include "comm.h" #include "error.h" - #include "pointers.h" + #include "command.h" #include "version.h" #include namespace LAMMPS_NS { - class Hello : protected Pointers { + class Hello : public Command { public: - Hello(class LAMMPS *lmp) : Pointers(lmp) {}; + Hello(class LAMMPS *lmp) : Command(lmp) {}; void command(int, char **); }; } @@ -202,10 +196,9 @@ file as the plugin interface code: utils::logmesg(lmp,fmt::format("Hello, {}!\n",argv[0])); } - static void hellocreator(LAMMPS *lmp, int argc, char **argv) + static void hellocreator(LAMMPS *lmp) { - Hello hello(lmp); - hello.command(argc,argv); + return new Hello(lmp); } extern "C" void lammpsplugin_init(void *lmp, void *handle, void *regfunc) @@ -216,9 +209,9 @@ file as the plugin interface code: plugin.version = LAMMPS_VERSION; plugin.style = "command"; plugin.name = "hello"; - plugin.info = "Hello world command v1.0"; + plugin.info = "Hello world command v1.1"; plugin.author = "Axel Kohlmeyer (akohlmey@gmail.com)"; - plugin.creator.v3 = (lammpsplugin_factory3 *) &hellocreator; + plugin.creator.v1 = (lammpsplugin_factory1 *) &hellocreator; plugin.handle = handle; (*register_plugin)(&plugin,lmp); } diff --git a/doc/src/Howto_spins.rst b/doc/src/Howto_spins.rst index 0afcc12c91..87e30a5f6f 100644 --- a/doc/src/Howto_spins.rst +++ b/doc/src/Howto_spins.rst @@ -21,8 +21,8 @@ orientations and their associated inter-atomic distances. The command :doc:`fix precession/spin ` allows to apply a constant magnetic torque on all the spins in the system. This -torque can be an external magnetic field (Zeeman interaction), or an -uniaxial magnetic anisotropy. +torque can be an external magnetic field (Zeeman interaction), and an +uniaxial or cubic magnetic anisotropy. A Langevin thermostat can be applied to those magnetic spins using :doc:`fix langevin/spin `. Typically, this thermostat diff --git a/doc/src/JPG/lammps-classes.png b/doc/src/JPG/lammps-classes.png index e401328783..71b5af9ccc 100644 Binary files a/doc/src/JPG/lammps-classes.png and b/doc/src/JPG/lammps-classes.png differ diff --git a/doc/src/Modify_command.rst b/doc/src/Modify_command.rst index 2d0a1d99d9..e0e3ecbb8d 100644 --- a/doc/src/Modify_command.rst +++ b/doc/src/Modify_command.rst @@ -1,14 +1,15 @@ Input script command style ========================== -New commands can be added to LAMMPS input scripts by adding new -classes that have a "command" method. For example, the create_atoms, -read_data, velocity, and run commands are all implemented in this -fashion. When such a command is encountered in the LAMMPS input -script, LAMMPS simply creates a class with the corresponding name, -invokes the "command" method of the class, and passes it the arguments -from the input script. The command method can perform whatever -operations it wishes on LAMMPS data structures. +New commands can be added to LAMMPS input scripts by adding new classes +that are derived from the Command class and thus must have a "command" +method. For example, the create_atoms, read_data, velocity, and run +commands are all implemented in this fashion. When such a command is +encountered in the LAMMPS input script, LAMMPS simply creates a class +instance with the corresponding name, invokes the "command" method of +the class, and passes it the arguments from the input script. The +command method can perform whatever operations it wishes on LAMMPS data +structures. The single method your new class must define is as follows: diff --git a/doc/src/Packages_details.rst b/doc/src/Packages_details.rst index b662ae73c7..f1c590d850 100644 --- a/doc/src/Packages_details.rst +++ b/doc/src/Packages_details.rst @@ -90,6 +90,7 @@ page gives those details. * :ref:`USER-MOLFILE ` * :ref:`USER-NETCDF ` * :ref:`USER-OMP ` + * :ref:`USER-PACE ` * :ref:`USER-PHONON ` * :ref:`USER-PLUMED ` * :ref:`USER-PTM ` @@ -585,7 +586,7 @@ MC package Several fixes and a pair style that have Monte Carlo (MC) or MC-like attributes. These include fixes for creating, breaking, and swapping bonds, for performing atomic swaps, and performing grand-canonical MC -(GCMC) in conjunction with dynamics. +(GCMC) or similar processes in conjunction with dynamics. **Supporting info:** @@ -593,8 +594,12 @@ bonds, for performing atomic swaps, and performing grand-canonical MC * :doc:`fix atom/swap ` * :doc:`fix bond/break ` * :doc:`fix bond/create ` +* :doc:`fix bond/create/angle ` * :doc:`fix bond/swap ` +* :doc:`fix charge/regulation ` * :doc:`fix gcmc ` +* :doc:`fix tfmc ` +* :doc:`fix widom ` * :doc:`pair_style dsmc ` * https://lammps.sandia.gov/movies.html#gcmc @@ -1349,6 +1354,46 @@ This package has :ref:`specific installation instructions ` on the ---------- +.. _PKG-USER-PACE: + +USER-PACE package +------------------- + +**Contents:** + +A pair style for the Atomic Cluster Expansion potential (ACE). +ACE is a methodology for deriving a highly accurate classical potential +fit to a large archive of quantum mechanical (DFT) data. The USER-PACE +package provides an efficient implementation for running simulations +with ACE potentials. + +**Authors:** + +This package was written by Yury Lysogorskiy^1, +Cas van der Oord^2, Anton Bochkarev^1, +Sarath Menon^1, Matteo Rinaldi^1, Thomas Hammerschmidt^1, Matous Mrovec^1, +Aidan Thompson^3, Gabor Csanyi^2, Christoph Ortner^4, Ralf Drautz^1. + + ^1: Ruhr-University Bochum, Bochum, Germany + + ^2: University of Cambridge, Cambridge, United Kingdom + + ^3: Sandia National Laboratories, Albuquerque, New Mexico, USA + + ^4: University of British Columbia, Vancouver, BC, Canada + +**Install:** + +This package has :ref:`specific installation instructions ` on the :doc:`Build extras ` page. + +**Supporting info:** + +* src/USER-PACE: filenames -> commands +* :doc:`pair_style pace ` +* examples/USER/pace + +---------- + .. _PKG-USER-PLUMED: USER-PLUMED package diff --git a/doc/src/Packages_user.rst b/doc/src/Packages_user.rst index a3efaf15c8..00d1dfb67b 100644 --- a/doc/src/Packages_user.rst +++ b/doc/src/Packages_user.rst @@ -81,6 +81,8 @@ package: +------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ | :ref:`USER-OMP ` | OpenMP-enabled styles | :doc:`Speed omp ` | `Benchmarks `_ | no | +------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ +| :ref:`USER-PACE ` | Fast implementation of Atomic Cluster Expansion (ACE) potential | :doc:`pair pace ` | USER/pace | ext | ++------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ | :ref:`USER-PHONON ` | phonon dynamical matrix | :doc:`fix phonon ` | USER/phonon | no | +------------------------------------------------+-----------------------------------------------------------------+-------------------------------------------------------------------------------+------------------------------------------------------+---------+ | :ref:`USER-PLUMED ` | :ref:`PLUMED ` free energy library | :doc:`fix plumed ` | USER/plumed | ext | diff --git a/doc/src/atom_style.rst b/doc/src/atom_style.rst index a250f44b25..dff222b053 100644 --- a/doc/src/atom_style.rst +++ b/doc/src/atom_style.rst @@ -27,7 +27,7 @@ Syntax template-ID = ID of molecule template specified in a separate :doc:`molecule ` command *hybrid* args = list of one or more sub-styles, each with their args -* accelerated styles (with same args) = *angle/kk* or *atomic/kk* or *bond/kk* or *charge/kk* or *full/kk* or *molecular/kk* +* accelerated styles (with same args) = *angle/kk* or *atomic/kk* or *bond/kk* or *charge/kk* or *full/kk* or *molecular/kk* or *spin/kk* Examples """""""" diff --git a/doc/src/dump_modify.rst b/doc/src/dump_modify.rst index 753cce703c..07f00c4030 100644 --- a/doc/src/dump_modify.rst +++ b/doc/src/dump_modify.rst @@ -308,9 +308,9 @@ performed with dump style *xtc*\ . ---------- -The *format* keyword can be used to change the default numeric format -output by the text-based dump styles: *atom*\ , *custom*\ , *cfg*\ , and -*xyz* styles, and their MPIIO variants. Only the *line* or *none* +The *format* keyword can be used to change the default numeric format output +by the text-based dump styles: *atom*\ , *local*\ , *custom*\ , *cfg*\ , and +*xyz* styles, and their MPIIO variants. Only the *line* or *none* options can be used with the *atom* and *xyz* styles. All the specified format strings are C-style formats, e.g. as used by @@ -362,7 +362,7 @@ settings, reverting all values to their default format. compute 1 all property/local batom1 batom2 dump 1 all local 100 tmp.bonds index c_1[1] c_1[2] - dump_modify 1 format "%d %0.0f %0.0f" + dump_modify 1 format line "%d %0.0f %0.0f" will output the two atom IDs for atoms in each bond as integers. If the dump_modify command were omitted, they would appear as diff --git a/doc/src/fix.rst b/doc/src/fix.rst index 2e516faa4e..109bfb00be 100644 --- a/doc/src/fix.rst +++ b/doc/src/fix.rst @@ -189,6 +189,7 @@ accelerated styles exist. * :doc:`bond/react ` - apply topology changes to model reactions * :doc:`bond/swap ` - Monte Carlo bond swapping * :doc:`box/relax ` - relax box size during energy minimization +* :doc:`charge/regulation ` - Monte Carlo sampling of charge regulation * :doc:`client/md ` - MD client for client/server simulations * :doc:`cmap ` - enables CMAP cross-terms of the CHARMM force field * :doc:`colvars ` - interface to the collective variables "Colvars" library diff --git a/doc/src/fix_charge_regulation.rst b/doc/src/fix_charge_regulation.rst new file mode 100644 index 0000000000..ef91db1e59 --- /dev/null +++ b/doc/src/fix_charge_regulation.rst @@ -0,0 +1,276 @@ + +.. index:: fix charge/regulation + +fix charge/regulation command +============================= + +Syntax +"""""" + +.. parsed-literal:: + + fix ID group-ID charge/regulation cation_type anion_type keyword value(s) + +* ID, group-ID are documented in fix command +* charge/regulation = style name of this fix command +* cation_type = atom type of free cations +* anion_type = atom type of free anions + +* zero or more keyword/value pairs may be appended + + .. parsed-literal:: + + keyword = *pH*, *pKa*, *pKb*, *pIp*, *pIm*, *pKs*, *acid_type*, *base_type*, *lunit_nm*, *temp*, *tempfixid*, *nevery*, *nmc*, *xrd*, *seed*, *tag*, *group*, *onlysalt*, *pmcmoves* + *pH* value = pH of the solution + *pKa* value = acid dissociation constant + *pKb* value = base dissociation constant + *pIp* value = chemical potential of free cations + *pIm* value = chemical potential of free anions + *pKs* value = solution self-dissociation constant + *acid_type* = atom type of acid groups + *base_type* = atom type of base groups + *lunit_nm* value = unit length used by LAMMPS (# in the units of nanometers) + *temp* value = temperature + *tempfixid* value = fix ID of temperature thermostat + *nevery* value = invoke this fix every nevery steps + *nmc* value = number of charge regulation MC moves to attempt every nevery steps + *xrd* value = cutoff distance for acid/base reaction + *seed* value = random # seed (positive integer) + *tag* value = yes or no (yes: The code assign unique tags to inserted ions; no: The tag of all inserted ions is "0") + *group* value = group-ID, inserted ions are assigned to group group-ID. Can be used multiple times to assign inserted ions to multiple groups. + *onlysalt* values = flag charge_cation charge_anion. + flag = yes or no (yes: the fix performs only ion insertion/deletion, no: perform acid/base dissociation and ion insertion/deletion) + charge_cation, charge_anion = value of cation/anion charge, must be an integer (only specify if flag = yes) + *pmcmoves* values = pmcA pmcB pmcI - MC move fractions for acid ionization (pmcA), base ionization (pmcB) and free ion exchange (pmcI) + +Examples +"""""""" +.. code-block:: LAMMPS + + fix chareg all charge/regulation 1 2 acid_type 3 base_type 4 pKa 5 pKb 7 lb 1.0 nevery 200 nexchange 200 seed 123 tempfixid fT + + fix chareg all charge/regulation 1 2 pIp 3 pIm 3 onlysalt yes 2 -1 seed 123 tag yes temp 1.0 + +Description +""""""""""" + +This fix performs Monte Carlo (MC) sampling of charge regulation and +exchange of ions with a reservoir as discussed in :ref:`(Curk1) ` +and :ref:`(Curk2) `. The implemented method is largely analogous +to the grand-reaction ensemble method in :ref:`(Landsgesell) +`. The implementation is parallelized, compatible with +existing LAMMPS functionalities, and applicable to any system utilizing +discrete, ionizable groups or surface sites. + +Specifically, the fix implements the following three types of MC moves, +which discretely change the charge state of individual particles and +insert ions into the systems: :math:`\mathrm{A} \rightleftharpoons +\mathrm{A}^-+\mathrm{X}^+`, :math:`\mathrm{B} \rightleftharpoons +\mathrm{B}^++\mathrm{X}^-`, and :math:`\emptyset \rightleftharpoons +Z^-\mathrm{X}^{Z^+}+Z^+\mathrm{X}^{-Z^-}`. In the former two types of +reactions, Monte Carlo moves alter the charge value of specific atoms +(:math:`\mathrm{A}`, :math:`\mathrm{B}`) and simultaneously insert a +counterion to preserve the charge neutrality of the system, modeling the +dissociation/association process. The last type of reaction performs +grand canonical MC exchange of ion pairs with a (fictitious) reservoir. + +In our implementation "acid" refers to particles that can attain charge +:math:`q=\{0,-1\}` and "base" to particles with :math:`q=\{0,1\}`, +whereas the MC exchange of free ions allows any integer charge values of +:math:`{Z^+}` and :math:`{Z^-}`. + +Here we provide several practical examples for modeling charge +regulation effects in solvated systems. An acid ionization reaction +(:math:`\mathrm{A} \rightleftharpoons \mathrm{A}^-+\mathrm{H}^+`) can be +defined via a single line in the input file + +.. code-block:: LAMMPS + + fix acid_reaction all charge/regulation 2 3 acid_type 1 pH 7.0 pKa 5.0 pIp 7.0 pIm 7.0 + +where the fix attempts to charge :math:`\mathrm{A}` (discharge +:math:`\mathrm{A}^-`) to :math:`\mathrm{A}^-` (:math:`\mathrm{A}`) and +insert (delete) a proton (atom type 2). Besides, the fix implements +self-ionization reaction of water :math:`\emptyset \rightleftharpoons +\mathrm{H}^++\mathrm{OH}^-`. However, this approach is highly +inefficient at :math:`\mathrm{pH} \approx 7` when the concentration of +both protons and hydroxyl ions is low, resulting in a relatively low +acceptance rate of MC moves. + +A more efficient way is to allow salt ions to participate in ionization +reactions, which can be easily achieved via + +.. code-block:: LAMMPS + + fix acid_reaction all charge/regulation 4 5 acid_type 1 pH 7.0 pKa 5.0 pIp 2.0 pIm 2.0 + +where particles of atom type 4 and 5 are the salt cations and anions, +both at chemical potential pI=2.0, see :ref:`(Curk1) ` and +:ref:`(Landsgesell) ` for more details. + + + Similarly, we could have simultaneously added a base ionization reaction + (:math:`\mathrm{B} \rightleftharpoons \mathrm{B}^++\mathrm{OH}^-`) + +.. code-block:: LAMMPS + + fix base_reaction all charge/regulation 2 3 base_type 6 pH 7.0 pKb 6.0 pIp 7.0 pIm 7.0 + +where the fix will attempt to charge :math:`\mathrm{B}` (discharge +:math:`\mathrm{B}^+`) to :math:`\mathrm{B}^+` (:math:`\mathrm{B}`) and +insert (delete) a hydroxyl ion :math:`\mathrm{OH}^-` of atom type 3. If +neither the acid or the base type is specified, for example, + +.. code-block:: LAMMPS + + fix salt_reaction all charge/regulation 4 5 pIp 2.0 pIm 2.0 + +the fix simply inserts or deletes an ion pair of a free cation (atom +type 4) and a free anion (atom type 5) as done in a conventional +grand-canonical MC simulation. + + +The fix is compatible with LAMMPS sub-packages such as *molecule* or +*rigid*. That said, the acid and base particles can be part of larger +molecules or rigid bodies. Free ions that are inserted to or deleted +from the system must be defined as single particles (no bonded +interactions allowed) and cannot be part of larger molecules or rigid +bodies. If *molecule* package is used, all inserted ions have a molecule +ID equal to zero. + +Note that LAMMPS implicitly assumes a constant number of particles +(degrees of freedom). Since using this fix alters the total number of +particles during the simulation, any thermostat used by LAMMPS, such as +NVT or Langevin, must use a dynamic calculation of system +temperature. This can be achieved by specifying a dynamic temperature +compute (e.g. dtemp) and using it with the desired thermostat, e.g. a +Langevin thermostat: + +.. code-block:: LAMMPS + + compute dtemp all temp + compute_modify dtemp dynamic yes + fix fT all langevin 1.0 1.0 1.0 123 + fix_modify fT temp dtemp + +The chemical potential units (e.g. pH) are in the standard log10 +representation assuming reference concentration :math:`\rho_0 = +\mathrm{mol}/\mathrm{l}`. Therefore, to perform the internal unit +conversion, the length (in nanometers) of the LAMMPS unit length must be +specified via *lunit_nm* (default is set to the Bjerrum length in water +at room temperature *lunit_nm* = 0.71nm). For example, in the dilute +ideal solution limit, the concentration of free ions will be +:math:`c_\mathrm{I} = 10^{-\mathrm{pIp}}\mathrm{mol}/\mathrm{l}`. + +The temperature used in MC acceptance probability is set by *temp*. This +temperature should be the same as the temperature set by the molecular +dynamics thermostat. For most purposes, it is probably best to use +*tempfixid* keyword which dynamically sets the temperature equal to the +chosen MD thermostat temperature, in the example above we assumed the +thermostat fix-ID is *fT*. The inserted particles attain a random +velocity corresponding to the specified temperature. Using *tempfixid* +overrides any fixed temperature set by *temp*. + +The *xrd* keyword can be used to restrict the inserted/deleted +counterions to a specific radial distance from an acid or base particle +that is currently participating in a reaction. This can be used to +simulate more realist reaction dynamics. If *xrd* = 0 or *xrd* > *L* / +2, where *L* is the smallest box dimension, the radial restriction is +automatically turned off and free ion can be inserted or deleted +anywhere in the simulation box. + +If the *tag yes* is used, every inserted atom gets a unique tag ID, +otherwise, the tag of every inserted atom is set to 0. *tag yes* might +cause an integer overflow in very long simulations since the tags are +unique to every particle and thus increase with every successful +particle insertion. + +The *pmcmoves* keyword sets the relative probability of attempting the +three types of MC moves (reactions): acid charging, base charging, and +ion pair exchange. The fix only attempts to perform particle charging +MC moves if *acid_type* or *base_type* is defined. Otherwise fix only +performs free ion insertion/deletion. For example, if *acid_type* is not +defined, *pmcA* is automatically set to 0. The vector *pmcmoves* is +automatically normalized, for example, if set to *pmcmoves* 0 0.33 0.33, +the vector would be normalized to [0,0.5,0.5]. + +The *only_salt* option can be used to perform multivalent +grand-canonical ion-exchange moves. If *only_salt yes* is used, no +charge exchange is performed, only ion insertion/deletion (*pmcmoves* is +set to [0,0,1]), but ions can be multivalent. In the example above, an +MC move would consist of three ion insertion/deletion to preserve the +charge neutrality of the system. + +The *group* keyword can be used to add inserted particles to a specific +group-ID. All inserted particles are automatically added to group *all*. + + +Output +"""""" + +This fix computes a global vector of length 8, which can be accessed by +various output commands. The vector values are the following global +quantities: + +* 1 = cumulative MC attempts +* 2 = cumulative MC successes +* 3 = current # of neutral acid atoms +* 4 = current # of -1 charged acid atoms +* 5 = current # of neutral base atoms +* 6 = current # of +1 charged base atoms +* 7 = current # of free cations +* 8 = current # of free anions + + +Restrictions +"""""""""""" + +This fix is part of the MC package. It is only enabled if LAMMPS +was built with that package. See the :doc:`Build package +` doc page for more info. + +The :doc:`atom_style `, used must contain the charge +property, for example, the style could be *charge* or *full*. Only +usable for 3D simulations. Atoms specified as free ions cannot be part +of rigid bodies or molecules and cannot have bonding interactions. The +scheme is limited to integer charges, any atoms with non-integer charges +will not be considered by the fix. + +All interaction potentials used must be continuous, otherwise the MD +integration and the particle exchange MC moves do not correspond to the +same equilibrium ensemble. For example, if an lj/cut pair style is used, +the LJ potential must be shifted so that it vanishes at the cutoff. This +can be easily achieved using the :doc:`pair_modify ` +command, i.e., by using: *pair_modify shift yes*. + +.. note:: + + Region restrictions are not yet implemented. + +Related commands +"""""""""""""""" + +:doc:`fix gcmc `, +:doc:`fix atom/swap ` + +Default +""""""" + +pH = 7.0; pKa = 100.0; pKb = 100.0; pIp = 5.0; pIm = 5.0; pKs = 14.0; +acid_type = -1; base_type = -1; lunit_nm = 0.71; temp = 1.0; nevery = +100; nmc = 100; xrd = 0; seed = 0; tag = no; onlysalt = no, pmcmoves = +[1/3, 1/3, 1/3], group-ID = all + +---------- + +.. _Curk1: + +**(Curk1)** T. Curk, J. Yuan, and E. Luijten, "Coarse-grained simulation of charge regulation using LAMMPS", preprint (2021). + +.. _Curk2: + +**(Curk2)** T. Curk and E. Luijten, "Charge-regulation effects in nanoparticle self-assembly", PRL (2021) + +.. _Landsgesell: + +**(Landsgesell)** J. Landsgesell, P. Hebbeker, O. Rud, R. Lunkad, P. Kosovan, and C. Holm, "Grand-reaction method for simulations of ionization equilibria coupled to ion partitioning", Macromolecules 53, 3007-3020 (2020). diff --git a/doc/src/fix_qeq.rst b/doc/src/fix_qeq.rst index 56fde059e8..c655076ce8 100644 --- a/doc/src/fix_qeq.rst +++ b/doc/src/fix_qeq.rst @@ -56,27 +56,28 @@ Examples Description """"""""""" -Perform the charge equilibration (QEq) method as described in :ref:`(Rappe and Goddard) ` and formulated in :ref:`(Nakano) ` (also known -as the matrix inversion method) and in :ref:`(Rick and Stuart) ` (also -known as the extended Lagrangian method) based on the -electronegativity equilization principle. +Perform the charge equilibration (QEq) method as described in +:ref:`(Rappe and Goddard) ` and formulated in :ref:`(Nakano) +` (also known as the matrix inversion method) and in +:ref:`(Rick and Stuart) ` (also known as the extended Lagrangian +method) based on the electronegativity equilization principle. These fixes can be used with any :doc:`pair style ` in LAMMPS, so long as per-atom charges are defined. The most typical use-case is in conjunction with a :doc:`pair style ` that performs charge equilibration periodically (e.g. every timestep), such -as the ReaxFF or Streitz-Mintmire potential. -But these fixes can also be used with -potentials that normally assume per-atom charges are fixed, e.g. a -:doc:`Buckingham ` or :doc:`LJ/Coulombic ` potential. +as the ReaxFF or Streitz-Mintmire potential. But these fixes can also +be used with potentials that normally assume per-atom charges are fixed, +e.g. a :doc:`Buckingham ` or :doc:`LJ/Coulombic ` +potential. -Because the charge equilibration calculation is effectively -independent of the pair style, these fixes can also be used to perform -a one-time assignment of charges to atoms. For example, you could -define the QEq fix, perform a zero-timestep run via the :doc:`run ` -command without any pair style defined which would set per-atom -charges (based on the current atom configuration), then remove the fix -via the :doc:`unfix ` command before performing further dynamics. +Because the charge equilibration calculation is effectively independent +of the pair style, these fixes can also be used to perform a one-time +assignment of charges to atoms. For example, you could define the QEq +fix, perform a zero-timestep run via the :doc:`run ` command +without any pair style defined which would set per-atom charges (based +on the current atom configuration), then remove the fix via the +:doc:`unfix ` command before performing further dynamics. .. note:: @@ -87,11 +88,14 @@ via the :doc:`unfix ` command before performing further dynamics. .. note:: - The :doc:`fix qeq/comb ` command must still be used - to perform charge equilibration with the :doc:`COMB potential `. The :doc:`fix qeq/reax ` - command can be used to perform charge equilibration with the :doc:`ReaxFF force field `, although fix qeq/shielded yields the - same results as fix qeq/reax if *Nevery*\ , *cutoff*\ , and *tolerance* - are the same. Eventually the fix qeq/reax command will be deprecated. + The :doc:`fix qeq/comb ` command must still be used to + perform charge equilibration with the :doc:`COMB potential + `. The :doc:`fix qeq/reax ` command can be + used to perform charge equilibration with the :doc:`ReaxFF force + field `, although fix qeq/shielded yields the same + results as fix qeq/reax if *Nevery*\ , *cutoff*\ , and *tolerance* + are the same. Eventually the fix qeq/reax command will be + deprecated. The QEq method minimizes the electrostatic energy of the system (or equalizes the derivative of energy with respect to charge of all the @@ -134,55 +138,57 @@ usually a good number. The *qeq/shielded* style describes partial charges on atoms also as point charges, but uses a shielded Coulomb potential to describe the interaction between a pair of charged particles. Interaction through -the shielded Coulomb is given by equation (13) of the :ref:`ReaxFF force field ` paper. The shielding accounts for charge overlap +the shielded Coulomb is given by equation (13) of the :ref:`ReaxFF force +field ` paper. The shielding accounts for charge overlap between charged particles at small separation. This style is the same -as :doc:`fix qeq/reax `, and can be used with :doc:`pair_style reax/c `. Only the *chi*\ , *eta*\ , and *gamma* -parameters from the *qfile* file are used. When using the string -*reax/c* as filename, these parameters are extracted directly from -an active *reax/c* pair style. This style solves partial -charges on atoms via the matrix inversion method. A tolerance of -1.0e-6 is usually a good number. +as :doc:`fix qeq/reax `, and can be used with +:doc:`pair_style reax/c `. Only the *chi*\ , *eta*\ , and +*gamma* parameters from the *qfile* file are used. When using the string +*reax/c* as filename, these parameters are extracted directly from an +active *reax/c* pair style. This style solves partial charges on atoms +via the matrix inversion method. A tolerance of 1.0e-6 is usually a +good number. The *qeq/slater* style describes partial charges on atoms as spherical charge densities centered around atoms via the Slater 1\ *s* orbital, so -that the interaction between a pair of charged particles is the -product of two Slater 1\ *s* orbitals. The expression for the Slater -1\ *s* orbital is given under equation (6) of the -:ref:`Streitz-Mintmire ` paper. Only the *chi*\ , *eta*\ , *zeta*\ , and -*qcore* parameters from the *qfile* file are used. When using the string +that the interaction between a pair of charged particles is the product +of two Slater 1\ *s* orbitals. The expression for the Slater 1\ *s* +orbital is given under equation (6) of the :ref:`Streitz-Mintmire +` paper. Only the *chi*\ , *eta*\ , *zeta*\ , and *qcore* +parameters from the *qfile* file are used. When using the string *coul/streitz* as filename, these parameters are extracted directly from -an active *coul/streitz* pair style. This style solves -partial charges on atoms via the matrix inversion method. A tolerance -of 1.0e-6 is usually a good number. Keyword *alpha* can be used to -change the Slater type orbital exponent. +an active *coul/streitz* pair style. This style solves partial charges +on atoms via the matrix inversion method. A tolerance of 1.0e-6 is +usually a good number. Keyword *alpha* can be used to change the Slater +type orbital exponent. The *qeq/dynamic* style describes partial charges on atoms as point -charges that interact through 1/r, but the extended Lagrangian method -is used to solve partial charges on atoms. Only the *chi* and *eta* +charges that interact through 1/r, but the extended Lagrangian method is +used to solve partial charges on atoms. Only the *chi* and *eta* parameters from the *qfile* file are used. Note that Coulomb -catastrophe can occur if repulsion between the pair of charged -particles is too weak. A tolerance of 1.0e-3 is usually a good -number. Keyword *qdamp* can be used to change the damping factor, while -keyword *qstep* can be used to change the time step size. +catastrophe can occur if repulsion between the pair of charged particles +is too weak. A tolerance of 1.0e-3 is usually a good number. Keyword +*qdamp* can be used to change the damping factor, while keyword *qstep* +can be used to change the time step size. -The :ref:`\ *qeq/fire*\ ` style describes the same charge model and charge -solver as the *qeq/dynamic* style, but employs a FIRE minimization -algorithm to solve for equilibrium charges. -Keyword *qdamp* can be used to change the damping factor, while -keyword *qstep* can be used to change the time step size. +The :ref:`\ *qeq/fire*\ ` style describes the same charge model +and charge solver as the *qeq/dynamic* style, but employs a FIRE +minimization algorithm to solve for equilibrium charges. Keyword +*qdamp* can be used to change the damping factor, while keyword *qstep* +can be used to change the time step size. Note that *qeq/point*\ , *qeq/shielded*\ , and *qeq/slater* describe different charge models, whereas the matrix inversion method and the extended Lagrangian method (\ *qeq/dynamic* and *qeq/fire*\ ) are different solvers. -Note that *qeq/point*\ , *qeq/dynamic* and *qeq/fire* styles all describe -charges as point charges that interact through 1/r relationship, but -solve partial charges on atoms using different solvers. These three -styles should yield comparable results if -the QEq parameters and *Nevery*\ , *cutoff*\ , and *tolerance* are the -same. Style *qeq/point* is typically faster, *qeq/dynamic* scales -better on larger sizes, and *qeq/fire* is faster than *qeq/dynamic*\ . +Note that *qeq/point*\ , *qeq/dynamic* and *qeq/fire* styles all +describe charges as point charges that interact through 1/r +relationship, but solve partial charges on atoms using different +solvers. These three styles should yield comparable results if the QEq +parameters and *Nevery*\ , *cutoff*\ , and *tolerance* are the same. +Style *qeq/point* is typically faster, *qeq/dynamic* scales better on +larger sizes, and *qeq/fire* is faster than *qeq/dynamic*\ . .. note:: @@ -200,9 +206,11 @@ better on larger sizes, and *qeq/fire* is faster than *qeq/dynamic*\ . Restart, fix_modify, output, run start/stop, minimize info """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" -No information about these fixes is written to :doc:`binary restart files `. No global scalar or vector or per-atom -quantities are stored by these fixes for access by various :doc:`output commands `. No parameter of these fixes can be used -with the *start/stop* keywords of the :doc:`run ` command. +No information about these fixes is written to :doc:`binary restart +files `. No global scalar or vector or per-atom quantities are +stored by these fixes for access by various :doc:`output commands +`. No parameter of these fixes can be used with the +*start/stop* keywords of the :doc:`run ` command. Thexe fixes are invoked during :doc:`energy minimization `. @@ -210,7 +218,8 @@ Restrictions """""""""""" These fixes are part of the QEQ package. They are only enabled if -LAMMPS was built with that package. See the :doc:`Build package ` doc page for more info. +LAMMPS was built with that package. See the :doc:`Build package +` doc page for more info. Related commands """""""""""""""" diff --git a/doc/src/pair_pace.rst b/doc/src/pair_pace.rst new file mode 100644 index 0000000000..56ae0f32dc --- /dev/null +++ b/doc/src/pair_pace.rst @@ -0,0 +1,114 @@ +.. index:: pair_style pace + +pair_style pace command +======================== + +Syntax +"""""" + +.. code-block:: LAMMPS + + pair_style pace ... keyword values ... + +* an optional keyword may be appended +* keyword = *product* or *recursive* + + .. parsed-literal:: + + *product* = use product algorithm for basis functions + *recursive* = use recursive algorithm for basis functions + +Examples +"""""""" + +.. code-block:: LAMMPS + + pair_style pace + pair_style pace product + pair_coeff * * Cu-PBE-core-rep.ace Cu + +Description +""""""""""" + +Pair style *pace* computes interactions using the Atomic Cluster +Expansion (ACE), which is a general expansion of the atomic energy in +multi-body basis functions. :ref:`(Drautz) `. +The *pace* pair style +provides an efficient implementation that +is described in this paper :ref:`(Lysogorskiy) `. + +In ACE, the total energy is decomposed into a sum over +atomic energies. The energy of atom *i* is expressed as a +linear or non-linear function of one or more density functions. +By projecting the +density onto a local atomic base, the lowest order contributions +to the energy can be expressed as a set of scalar polynomials in +basis function contributions summed over neighbor atoms. + +Only a single pair_coeff command is used with the *pace* style which +specifies an ACE coefficient file followed by N additional arguments +specifying the mapping of ACE elements to LAMMPS atom types, +where N is the number of LAMMPS atom types: + +* ACE coefficient file +* N element names = mapping of ACE elements to atom types + +Only a single pair_coeff command is used with the *pace* style which +specifies an ACE file that fully defines the potential. +Note that unlike for other potentials, cutoffs are +not set in the pair_style or pair_coeff command; they are specified in +the ACE file. + +The pair_style *pace* command may be followed by an optional keyword +*product* or *recursive*, which determines which of two algorithms +is used for the calculation of basis functions and derivatives. +The default is *recursive*. + +See the :doc:`pair_coeff ` doc page for alternate ways +to specify the path for the ACE coefficient file. + +Mixing, shift, table, tail correction, restart, rRESPA info +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +For atom type pairs I,J and I != J, where types I and J correspond to +two different element types, mixing is performed by LAMMPS with +user-specifiable parameters as described above. You never need to +specify a pair_coeff command with I != J arguments for this style. + +This pair style does not support the :doc:`pair_modify ` +shift, table, and tail options. + +This pair style does not write its information to :doc:`binary restart files `, since it is stored in potential files. Thus, you +need to re-specify the pair_style and pair_coeff commands in an input +script that reads a restart file. + +This pair style can only be used via the *pair* keyword of the +:doc:`run_style respa ` command. It does not support the +*inner*\ , *middle*\ , *outer* keywords. + +---------- + +Restrictions +"""""""""""" + +This pair style is part of the USER-PACE package. It is only enabled if LAMMPS +was built with that package. +See the :doc:`Build package ` doc page for more info. + +Related commands +"""""""""""""""" + +:doc:`pair_style snap ` + +Default +""""""" + +recursive + +.. _Drautz20191: + +**(Drautz)** Drautz, Phys Rev B, 99, 014104 (2019). + +.. _Lysogorskiy20211: + +**(Lysogorskiy)** Lysogorskiy, van der Oord, Bochkarev, Menon, Rinaldi, Hammerschmidt, Mrovec, Thompson, Csanyi, Ortner, Drautz, TBD (2021). diff --git a/doc/src/pair_style.rst b/doc/src/pair_style.rst index 49eac18aa8..4990674973 100644 --- a/doc/src/pair_style.rst +++ b/doc/src/pair_style.rst @@ -99,7 +99,7 @@ accelerated styles exist. * :doc:`zero ` - neighbor list but no interactions * :doc:`adp ` - angular dependent potential (ADP) of Mishin -* :doc:`agni ` - machine learned potential mapping atomic environment to forces +* :doc:`agni ` - AGNI machine-learning potential * :doc:`airebo ` - AIREBO potential of Stuart * :doc:`airebo/morse ` - AIREBO with Morse instead of LJ * :doc:`atm ` - Axilrod-Teller-Muto potential @@ -280,6 +280,7 @@ accelerated styles exist. * :doc:`oxrna2/hbond ` - * :doc:`oxrna2/stk ` - * :doc:`oxrna2/xstk ` - +* :doc:`pace ` - Atomic Cluster Expansion (ACE) machine-learning potential * :doc:`peri/eps ` - peridynamic EPS potential * :doc:`peri/lps ` - peridynamic LPS potential * :doc:`peri/pmb ` - peridynamic PMB potential @@ -297,7 +298,7 @@ accelerated styles exist. * :doc:`smd/ulsph ` - * :doc:`smtbq ` - * :doc:`mliap ` - Multiple styles of machine-learning potential -* :doc:`snap ` - SNAP quantum-accurate potential +* :doc:`snap ` - SNAP machine-learning potential * :doc:`soft ` - Soft (cosine) potential * :doc:`sph/heatconduction ` - * :doc:`sph/idealgas ` - diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index c10e978428..54cb6d2f3c 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -261,6 +261,7 @@ bitmask bitrate bitrates Bitzek +Bjerrum Blaise blanchedalmond blocksize @@ -268,6 +269,7 @@ blueviolet bn bni bo +Bochkarev Bochum bocs bodyflag @@ -343,6 +345,7 @@ Cao Capolungo Caro cartesian +Cas CasP Caswell Cates @@ -502,6 +505,8 @@ coulgauss coulombic Coulombic Coulombics +counterion +counterions Courant covalent covalently @@ -730,6 +735,7 @@ DRUDE dsf dsmc dt +dtemp dtgrow dtheta dtshrink @@ -878,6 +884,7 @@ equilibrates equilibrating equilibration Equilibria +equilibria equilization equipartitioning Ercolessi @@ -1069,6 +1076,7 @@ fuer fx fy fz +Gabor Gahler gainsboro Galindo @@ -1193,6 +1201,7 @@ Halperin Halver Hamaker Hamel +Hammerschmidt haptic Hara Harpertown @@ -1212,6 +1221,7 @@ hbnewflag hbond hcp heatconduction +Hebbeker Hebenstreit Hecht Heenen @@ -1279,6 +1289,7 @@ hy hydrophobicity hydrostatic hydrostatically +hydroxyl Hynninen Hyoungki hyperdynamics @@ -1369,6 +1380,7 @@ ints inv invariants inversed +ionizable ionocovalent iostreams iparam @@ -1548,6 +1560,7 @@ Koning Kooser Korn Koskinen +Kosovan Koster Kosztin Kp @@ -1594,6 +1607,7 @@ Lamoureux Lanczos Lande Landron +Landsgesell langevin Langevin Langston @@ -1731,10 +1745,13 @@ lpsapi lrt lsfftw ltbbmalloc +Lua lubricateU lucy -Lua Luding +Luijten +lunit +Lunkad Lussetti Lustig lval @@ -1743,6 +1760,7 @@ lx ly Lybrand lyon +Lysogorskiy Lyulin lz Maaravi @@ -1801,8 +1819,10 @@ Materias mathbf mathjax matlab +Matous matplotlib Matsubara +Matteo Mattice Mattox Mattson @@ -1863,6 +1883,7 @@ MEMALIGN membered memcheck Mendelev +Menon mer Meremianin Mersenne @@ -1986,6 +2007,7 @@ mpiio mpirun mplayer mps +Mrovec Mryglod mscg MSCG @@ -2020,6 +2042,7 @@ multiscale multisectioning multithreading Multithreading +multivalent Mundy Murdick Murtola @@ -2065,6 +2088,7 @@ Nanoletters nanomechanics nanometer nanometers +nanoparticle nanoparticles Nanotube nanotube @@ -2174,6 +2198,7 @@ nm Nm Nmax nmax +nmc Nmin nmin Nmols @@ -2308,9 +2333,11 @@ OMP oneAPI onelevel oneway +onlysalt onn ons OO +Oord opencl openKIM openmp @@ -2331,6 +2358,7 @@ Orsi ortho orthonormal orthorhombic +Ortner oso Otype Ouldridge @@ -2390,6 +2418,8 @@ pbc pc pchain Pchain +pcmoves +pmcmoves Pdamp pdb pdf @@ -2434,6 +2464,7 @@ phosphide Phs Physica physik +pI Piaggi picocoulomb picocoulombs @@ -2445,7 +2476,9 @@ pid piecewise Pieniazek Pieter +pIm pimd +pIp Piola Pisarev Pishevar @@ -2460,6 +2493,9 @@ ploop PloS plt plumedfile +pKa +pKb +pKs pmb Pmolrotate Pmoltrans @@ -2620,6 +2656,7 @@ radians Rafferty rahman Rahman +Ralf Raman ramped ramping @@ -2727,6 +2764,7 @@ Rij RIj Rik Rin +Rinaldi Rino RiRj Risi @@ -2786,6 +2824,7 @@ rst rstyle Rubensson Rubia +Rud Rudd Rudra Rudranarayan @@ -2815,6 +2854,7 @@ Sandia sandybrown sanitizer Sanyal +Sarath sc scafacos SCAFACOS diff --git a/examples/SPIN/test_problems/validation_damped_exchange/run-test-exchange.sh b/examples/SPIN/test_problems/validation_damped_exchange/run-test-exchange.sh index bd878a52de..9d00318473 100755 --- a/examples/SPIN/test_problems/validation_damped_exchange/run-test-exchange.sh +++ b/examples/SPIN/test_problems/validation_damped_exchange/run-test-exchange.sh @@ -3,9 +3,15 @@ # clean old res rm res_*.dat -# compute Lammps +# test standard Lammps ./../../../../src/lmp_serial \ -in test-spin-precession.in + +# test spin/kk with Kokkos Lammps +# mpirun -np 1 ../../../../src/lmp_kokkos_mpi_only \ +# -k on -sf kk -in test-spin-precession.in + +# extract data from Lammps run in="$(grep -n Step log.lammps | awk -F ':' '{print $1}')" en="$(grep -n Loop log.lammps | awk -F ':' '{print $1}')" in="$(echo "$in+1" | bc -l)" diff --git a/examples/SPIN/test_problems/validation_damped_exchange/test-spin-precession.in b/examples/SPIN/test_problems/validation_damped_exchange/test-spin-precession.in index 9dfb4a98d6..c195c046ec 100644 --- a/examples/SPIN/test_problems/validation_damped_exchange/test-spin-precession.in +++ b/examples/SPIN/test_problems/validation_damped_exchange/test-spin-precession.in @@ -2,8 +2,10 @@ units metal atom_style spin +# atom_style spin/kk atom_modify map array boundary f f f +shell echo "test1" atom_modify map array lattice sc 3.0 diff --git a/examples/SPIN/test_problems/validation_damped_precession/run-test-prec.sh b/examples/SPIN/test_problems/validation_damped_precession/run-test-prec.sh index 8609179376..e7a943beef 100755 --- a/examples/SPIN/test_problems/validation_damped_precession/run-test-prec.sh +++ b/examples/SPIN/test_problems/validation_damped_precession/run-test-prec.sh @@ -3,9 +3,15 @@ # clean old res rm res_*.dat -# compute Lammps +# test standard Lammps ./../../../../src/lmp_serial \ -in test-spin-precession.in + +# test spin/kk with Kokkos Lammps +# mpirun -np 1 ../../../../src/lmp_kokkos_mpi_only \ +# -k on -sf kk -in test-spin-precession.in + +# extract data from Lammps run in="$(grep -n Step log.lammps | awk -F ':' '{print $1}')" en="$(grep -n Loop log.lammps | awk -F ':' '{print $1}')" in="$(echo "$in+1" | bc -l)" diff --git a/examples/SPIN/test_problems/validation_damped_precession/test-spin-precession.in b/examples/SPIN/test_problems/validation_damped_precession/test-spin-precession.in index b8e943e579..56abdded15 100644 --- a/examples/SPIN/test_problems/validation_damped_precession/test-spin-precession.in +++ b/examples/SPIN/test_problems/validation_damped_precession/test-spin-precession.in @@ -2,6 +2,7 @@ units metal atom_style spin +# atom_style spin/kk atom_modify map array boundary f f f diff --git a/examples/SPIN/test_problems/validation_langevin_precession/run-test-prec.sh b/examples/SPIN/test_problems/validation_langevin_precession/run-test-prec.sh index bcdd337903..ecdbb2c156 100755 --- a/examples/SPIN/test_problems/validation_langevin_precession/run-test-prec.sh +++ b/examples/SPIN/test_problems/validation_langevin_precession/run-test-prec.sh @@ -12,7 +12,14 @@ do temp="$(echo "$tempi+$i*($tempf-$tempi)/$N" | bc -l)" sed s/temperature/${temp}/g test-prec-spin.template > \ test-prec-spin.in + + # test standard Lammps ./../../../../src/lmp_serial -in test-prec-spin.in + + # test spin/kk with Kokkos Lammps + # mpirun -np 1 ../../../../src/lmp_kokkos_mpi_only \ + # -k on -sf kk -in test-prec-spin.in + Hz="$(tail -n 1 average_spin | awk -F " " '{print $3}')" sz="$(tail -n 1 average_spin | awk -F " " '{print $5}')" en="$(tail -n 1 average_spin | awk -F " " '{print $6}')" diff --git a/examples/SPIN/test_problems/validation_langevin_precession/test-prec-spin.template b/examples/SPIN/test_problems/validation_langevin_precession/test-prec-spin.template index 52f6a105ea..bec7126e69 100644 --- a/examples/SPIN/test_problems/validation_langevin_precession/test-prec-spin.template +++ b/examples/SPIN/test_problems/validation_langevin_precession/test-prec-spin.template @@ -2,6 +2,7 @@ units metal atom_style spin +# atom_style spin/kk atom_modify map array boundary p p p diff --git a/examples/SPIN/test_problems/validation_nve/in.spin.iron-nve b/examples/SPIN/test_problems/validation_nve/in.spin.iron-nve index f00fb1ec12..38c669e166 100644 --- a/examples/SPIN/test_problems/validation_nve/in.spin.iron-nve +++ b/examples/SPIN/test_problems/validation_nve/in.spin.iron-nve @@ -3,6 +3,7 @@ clear units metal atom_style spin +# atom_style spin/kk dimension 3 boundary p p p @@ -46,4 +47,8 @@ variable tmag equal c_out_mag[6] thermo_style custom step time v_tmag temp v_emag ke pe etotal thermo 200 +compute outsp all property/atom spx spy spz sp fmx fmy fmz +dump 1 all custom 10 dump_iron.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] + run 100000 +# run 1 diff --git a/examples/SPIN/test_problems/validation_nve/run-test-nve.sh b/examples/SPIN/test_problems/validation_nve/run-test-nve.sh index 18cedd9503..04d3d60847 100755 --- a/examples/SPIN/test_problems/validation_nve/run-test-nve.sh +++ b/examples/SPIN/test_problems/validation_nve/run-test-nve.sh @@ -3,9 +3,14 @@ # clean old res rm res_*.dat -# compute Lammps -./../../../../src/lmp_serial \ - -in in.spin.iron-nve +# test standard Lammps +../../../../src/lmp_serial -in in.spin.iron-nve + +# test spin/kk with Kokkos Lammps +# mpirun -np 1 ../../../../src/lmp_kokkos_mpi_only \ +# -k on -sf kk -in in.spin.iron-nve + +# extract data from Lammps run in="$(grep -n Step log.lammps | awk -F ':' '{print $1}')" en="$(grep -n Loop log.lammps | awk -F ':' '{print $1}')" in="$(echo "$in+1" | bc -l)" diff --git a/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_lattice b/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_lattice index 6f995fa071..a1f739fe54 100644 --- a/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_lattice +++ b/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_lattice @@ -3,6 +3,7 @@ clear units metal atom_style spin +# atom_style spin/kk dimension 3 boundary p p p diff --git a/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_spin b/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_spin index b33789cec6..102f76a2a6 100644 --- a/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_spin +++ b/examples/SPIN/test_problems/validation_nvt/in.spin.nvt_spin @@ -3,6 +3,7 @@ clear units metal atom_style spin +# atom_style spin/kk dimension 3 boundary p p p diff --git a/examples/SPIN/test_problems/validation_nvt/run-test-nvt.sh b/examples/SPIN/test_problems/validation_nvt/run-test-nvt.sh index d3abbbe1a5..1372e1bd2c 100755 --- a/examples/SPIN/test_problems/validation_nvt/run-test-nvt.sh +++ b/examples/SPIN/test_problems/validation_nvt/run-test-nvt.sh @@ -3,16 +3,32 @@ # clean old res rm res_*.dat -# compute NVT Spin -> Lattice +### compute NVT Spin -> Lattice + +# test standard Lammps ./../../../../src/lmp_serial -in in.spin.nvt_spin + +# test spin/kk with Kokkos Lammps +# mpirun -np 1 ../../../../src/lmp_kokkos_mpi_only \ +# -k on -sf kk -in in.spin.nvt_spin + +# extract data from Lammps run in="$(grep -n Step log.lammps | awk -F ':' '{print $1}')" en="$(grep -n Loop log.lammps | awk -F ':' '{print $1}')" in="$(echo "$in+1" | bc -l)" en="$(echo "$en-$in" | bc -l)" tail -n +$in log.lammps | head -n $en > res_nvt_spin.dat -# compute NVT Lattice -> Spin +### compute NVT Lattice -> Spin + +# test standard Lammps ./../../../../src/lmp_serial -in in.spin.nvt_lattice + +# test spin/kk with Kokkos Lammps +# mpirun -np 1 ../../../../src/lmp_kokkos_mpi_only \ +# -k on -sf kk -in in.spin.nvt_lattice + +# extract data from Lammps run in="$(grep -n Step log.lammps | awk -F ':' '{print $1}')" en="$(grep -n Loop log.lammps | awk -F ':' '{print $1}')" in="$(echo "$in+1" | bc -l)" diff --git a/examples/USER/misc/charge_regulation/README b/examples/USER/misc/charge_regulation/README new file mode 100644 index 0000000000..c704b67dea --- /dev/null +++ b/examples/USER/misc/charge_regulation/README @@ -0,0 +1,36 @@ +This directory has two input scripts that illustrates how to use fix +charge_regulation in LAMMPS to perform coarse-grained molecular dynamics +(MD) simulations with incorporation of charge regulation effects. The +charge regulation is implemented via Monte Carlo (MC) sampling following +the reaction ensemble MC approach, producing a MC/MD hybrid tool for +modeling charge regulation in solvated systems. + +The script `in.chreg-acid` sets up a simple weak acid electrolyte +(pH=7,pKa=6,pI=3). Four different types of MC moves are implemented: +acid protonation & de-protonation, and monovalent ion pair insertion and +deletion. Note here we have grouped all free monovalent ions into a +single type, a physically natural choice on the level of coarse-grained +primitive electrolyte models, which increases the calculation +performance but has no effects on thermodynamic observables. The +variables such as pH, pKa, pI, and lb at the top of the input script can +be adjusted to play with various simulation parameters. The cumulative +MC attempted moves and cumulative number of accepted moves, as well as, +current number of neutral and charged acid particles, neutral and +charged base particles (in this example always 0), and the current +number of free cations and anions in the system are printed in the +output. + +The script `in.chreg-polymer` sets up a weak poly-electrolyte chain of +N=80 beads. Each bead is a weak acid with pKa=5 and solution has pH=7 +and monovalent salt chemical potential pI=3. In this example, we choose +to treat salt ions, protons, and hydroxyl ions separately, which results +in 5 types of MC moves: acid [type 1] protonation & de-protonation (with +protons [type 4] insertion & deletion), acid [type 1] protonation & +de-protonation (with salt cation [type 2] insertion & deletion), water +self-ionization (insertion and deletion of proton [type4] and hydroxyl +ion [type 5] pair), insertion and deletion of monovalent salt pair [type +2 and type 3] , insertion and deletion of a proton [type4] and salt +anion [type 3]. The current number of neutral and charged acid +particles, the current number of free salt cations and anions, and the +current number of protons and hydroxyl ions are printed in the output. + diff --git a/examples/USER/misc/charge_regulation/data.chreg-acid b/examples/USER/misc/charge_regulation/data.chreg-acid new file mode 100644 index 0000000000..edc7082ad0 --- /dev/null +++ b/examples/USER/misc/charge_regulation/data.chreg-acid @@ -0,0 +1,235 @@ +LAMMPS data file generated by get_input.py + +219 atoms +3 atom types +-2.5000000000000000e+01 2.5000000000000000e+01 xlo xhi +-2.5000000000000000e+01 2.5000000000000000e+01 ylo yhi +-2.5000000000000000e+01 2.5000000000000000e+01 zlo zhi + +Masses + +1 1 +2 1 +3 1 + +Atoms + +1 1 0 2.5983275747497636 -8.368052973860795 20.001288664343484 +2 1 -1 -18.182868728594865 -8.079792367885453 8.253737231981816 +3 1 -1 -17.437350808966414 8.120411567445771 10.747650340639332 +4 1 -1 6.502476583291578 -23.497326620756837 19.948223080086798 +5 1 -1 -22.528179279677296 -18.783433570718127 -17.964657736688018 +6 1 -1 -9.713496019164342 18.97235576760402 -19.495620818582825 +7 1 -1 -12.831976006720659 0.12265736526942561 -21.679396938423718 +8 1 -1 20.909063679212295 -2.16535062758771 0.46197866620165584 +9 1 -1 23.86211981166997 24.024928465132284 10.534067202515907 +10 1 -1 -0.5289298325031275 23.820222457999776 -2.657199543669442 +11 1 -1 9.57021229491361 11.973871502198485 3.4206509716759186 +12 1 -1 -10.201559985782705 7.557482594092384 12.07004973873643 +13 1 -1 4.898458045226889 2.0169997859717945 -20.765285372762087 +14 1 -1 -24.086606883730077 4.424991619615298 -4.204294764756856 +15 1 -1 3.6837161829600795 -4.763233144818308 -12.75873457519811 +16 1 -1 -12.217842496816345 -17.720229208905618 -13.556354139556914 +17 1 -1 -21.456229140133704 -7.423996317612119 -6.94398044071275 +18 1 -1 13.697298849253912 8.503639732052164 8.085487457359058 +19 1 -1 -5.764222710061347 11.49890485049034 -5.1113880296575935 +20 1 -1 3.9944161041544426 16.928204188257893 -14.875635895409372 +21 1 -1 4.509525276444776 16.63590711792657 -22.21846494992397 +22 1 -1 22.115374932704306 -18.97293932558108 -23.982486000144267 +23 1 -1 14.169061011408473 -16.69837647199978 13.779039228068108 +24 1 -1 17.186846147657228 8.827459489898189 23.055435051390333 +25 1 -1 2.9822901981431045 -16.83687718528342 -21.278623587083484 +26 1 -1 16.657554689423897 -1.6217275605348647 -11.315859420404218 +27 1 -1 19.215533149393543 -15.512634977936068 7.2701088767584565 +28 1 -1 -8.886744157248422 -24.09644410100167 4.013016013803799 +29 1 -1 20.99918340066754 4.4716257356730225 0.3847245765737597 +30 1 -1 1.3442294253060716 5.601341425720583 -14.918594492786674 +31 1 -1 -6.962977050326831 20.470183675946515 -16.37885865567279 +32 1 -1 -9.98531733187143 9.52233798117566 -24.979630708193724 +33 1 -1 -17.327989778292306 5.761352103841766 5.720220488689204 +34 1 -1 5.168359673466362 -23.698812306679418 2.6199762372169744 +35 1 -1 18.978042448492154 6.41188742965139 6.31975357155018 +36 1 -1 -16.38534911663758 -14.8262205163943 4.125239045887575 +37 1 -1 7.974455406459249 -18.88332583451115 11.00721254217055 +38 1 -1 13.779816416416402 1.8581999350851426 9.104219696003227 +39 1 -1 -23.90949397031401 -3.346877828308571 -10.228782973473443 +40 1 -1 21.61647622174447 8.443955423089903 -19.12066464239769 +41 1 -1 -8.823979405515548 14.461154001848172 16.061704411241706 +42 1 -1 -2.4406878944912513 12.5535360118296 20.606764200087852 +43 1 -1 -18.459404356124697 15.260951448001258 21.187332685021346 +44 1 -1 2.2354003384439878 -23.350013178190736 11.369307324043625 +45 1 -1 15.595889705552018 -6.6075680254604805 5.434256329408505 +46 1 -1 -17.528243443870238 4.109747707896265 -1.4167331089310942 +47 1 -1 2.161977144405782 -16.511059804921263 -12.186191310598671 +48 1 -1 -8.685671837367341 -7.0743613044263185 -1.1561844713769105 +49 1 -1 15.62258718398045 -6.559293763708908 20.556775995508488 +50 1 -1 -6.965207014475155 -14.348784897390543 -14.421447863144754 +51 1 -1 -12.099361509567913 -24.62785640990423 -15.839126670614329 +52 1 -1 6.673854222058246 7.83575773885061 -9.714128155619994 +53 1 -1 -17.413453800948826 12.386754276446203 -16.882300786608994 +54 1 -1 21.8966589175091 12.485943283688762 -14.553421680298634 +55 1 -1 -8.37629917390651 -24.783875012947064 7.454467809536389 +56 1 -1 14.081149297694104 -21.719204113108943 -17.447225564400064 +57 1 -1 4.681992702049627 1.9719544892622558 -7.823736613205725 +58 1 -1 4.353171917533494 15.86928389762705 24.669680272563014 +59 1 -1 23.31502072066573 -4.685724298328946 2.459643890128799 +60 1 -1 7.0470920520598455 23.016693234922386 -13.139471333592677 +61 1 -1 11.725555941181668 -15.809323171320772 -1.6292879532275037 +62 1 -1 -20.36388898925061 -12.084932320023162 -22.816700826388757 +63 1 -1 -2.492146614764735 -0.7314052253623018 -15.89959178250266 +64 1 -1 -22.45303825831233 -11.27996814407809 -9.553770912146142 +65 1 -1 24.76771926037101 20.128947543233757 10.528974830883733 +66 1 -1 11.326213670190818 -11.624187194192492 -9.687726413467862 +67 1 -1 -5.712764220166093 15.778887306376163 -0.9263244618113831 +68 1 -1 -15.073201136996362 -12.372916148178115 -5.461704510273556 +69 1 -1 -5.82976670348781 -4.57812040989473 9.0443548565365 +70 1 -1 -5.429195387856279 1.4542054472230177 -7.397291151203568 +71 1 -1 -23.385555726942343 -11.924588975396505 3.8215294321466153 +72 1 -1 -1.0694104826815725 2.999945633116507 3.67092922106918 +73 1 -1 12.134312161994352 1.9747455475585376 -14.895893366599623 +74 1 -1 21.30950120583112 18.97294626436546 -17.520867878211376 +75 1 -1 -24.356703356157063 3.594879254976714 17.172993705171677 +76 1 -1 12.634233603338409 24.373499564220822 4.561976273909789 +77 1 -1 -10.740243207970495 19.345205140729554 -3.3368424800818097 +78 1 -1 -3.027848793907552 10.604939843027267 7.493012332728249 +79 1 -1 5.000539296336658 11.770088203844622 17.227492055930185 +80 1 -1 1.1585200269400353 -24.45822157176123 -12.515688997756257 +81 1 -1 1.9163088584430596 -14.064330279670672 11.302445490552905 +82 1 -1 -20.857041355570576 21.292791787236673 17.397470691573346 +83 1 -1 -24.50473305235651 -12.741459355708756 -1.9325218065560357 +84 1 -1 2.658628688373309 -1.1131226252194608 7.491603553398086 +85 1 -1 -18.515435126408363 24.20642384141299 14.466889392835121 +86 1 -1 19.63928177206153 9.942655640416291 8.691463646789934 +87 1 -1 -7.69626451160762 11.762517043363786 -7.457263991495665 +88 1 -1 1.051431093064835 -11.460307039827766 16.90304637479744 +89 1 -1 0.9157815447227939 23.656751182559688 -6.538587603918376 +90 1 -1 23.330169435555234 -7.293893221439802 -10.739388379883973 +91 1 -1 1.3454906653067376 0.3584300740797559 8.837879234629618 +92 1 -1 -21.93056639286312 -10.890279576013356 -10.412914392053596 +93 1 -1 21.9136101677979 -10.780221720642636 11.543925933359859 +94 1 -1 1.213289938136601 -7.171863230861625 20.734527885288102 +95 1 -1 23.102370131877777 21.949933206350458 0.29281565885028016 +96 1 -1 -18.917780884063298 -0.03244735062602544 23.633906995676227 +97 1 -1 7.583004866601307 10.74178675512821 -4.857297835527785 +98 1 -1 -7.4910066746799835 -14.168364618485734 -6.426540836249767 +99 1 -1 -20.672200987670426 -8.746789722660697 11.011389790610103 +100 1 -1 -18.662115132221917 -21.356740361991612 -8.735991534410413 +101 2 1 11.900973676882046 6.591531431964558 19.018193594877637 +102 2 1 -23.433591822114983 -18.956429005519567 4.8373984358422994 +103 2 1 -11.825475204099472 -3.8206287568445134 3.1167558949026173 +104 2 1 -17.49780467176259 -23.115560141825554 9.614132296727426 +105 2 1 10.88916113281772 4.512200980010334 18.685489050240854 +106 2 1 -22.04662313800728 23.973268925992897 -23.417792740205652 +107 2 1 -13.57041123540546 17.3687874050987 21.186270978357783 +108 2 1 6.586851196789095 16.27860887432974 -3.638909639278946 +109 2 1 8.191448685630277 6.828880619305412 -6.347576950950089 +110 2 1 -15.723292856220288 -20.484673256634117 -15.14713811293425 +111 2 1 18.58081219522701 19.060706710849452 -10.295676869062909 +112 2 1 -21.09194001526127 -7.739334786748358 5.417635948058724 +113 2 1 -14.10404878784055 -15.769737592448523 -18.881834262561505 +114 2 1 -14.644589058195612 8.84169065013063 8.611654925486256 +115 2 1 -11.719050253933538 -4.9700119000832 -0.9846728956163453 +116 2 1 19.498247505274143 -10.418045613133986 -22.12098182226518 +117 2 1 21.857683401772697 20.157098661061575 -13.652393197742995 +118 2 1 -17.623414455798407 21.873813778550875 -6.533965802006303 +119 2 1 7.231785003326529 -13.925962842972222 5.360080190636602 +120 2 1 -7.509430039873415 19.13541714591672 -16.23545960168472 +121 2 1 -4.048249209544995 13.126195473202351 -7.156541250053138 +122 2 1 -20.26837137264583 21.46366988603839 15.603080527043964 +123 2 1 -4.478253524569759 -3.1812369811955783 -18.52918159641348 +124 2 1 21.541019047040052 13.514999235394065 -1.8086547561089752 +125 2 1 -15.223319907923727 -5.958117989814905 -7.194967640819577 +126 2 1 -20.87181173003304 -7.66780336209651 20.518235718821714 +127 2 1 -3.7444846073700297 21.014628245718292 7.197818215477007 +128 2 1 -5.904222844268787 7.656315546673127 -1.3911802017487425 +129 2 1 -21.49072414090769 -23.123923448235523 10.49453669763092 +130 2 1 24.90628307456096 7.081046671281136 -14.422530828641655 +131 2 1 -12.173002002514222 -23.250366655717176 -5.145802772598103 +132 2 1 -19.68809858318764 4.476541650697328 6.249229323733747 +133 2 1 16.85550827580734 -0.8462194407221624 18.011901711631936 +134 2 1 17.289399533444858 -11.99379336569853 11.875868193611936 +135 2 1 19.532020913911126 -23.053375288330326 -4.9162076250112605 +136 2 1 -12.432304028989998 5.029488375070969 7.535325299264009 +137 2 1 14.934807008644 8.086694342170496 19.68691014849572 +138 2 1 -7.088283921093918 -23.094109864922018 16.57088328184242 +139 2 1 14.77413976080318 21.343550134324772 13.996489344579572 +140 2 1 -14.606423208703657 -6.928316926567433 -22.717483260149475 +141 2 1 -17.139771555632173 14.533410346451518 -21.83064865887975 +142 2 1 4.261830086466784 15.518968841247663 -17.791505649414617 +143 2 1 -9.814793042774223 -5.120956154726329 14.054454130549104 +144 2 1 8.313311590434793 3.9666876022475606 -20.677101093823236 +145 2 1 10.603190079756637 -2.62347089527481 1.6661989541795634 +146 2 1 -17.763718339721695 1.2541370478041287 -21.55649971308305 +147 2 1 -8.538066365356812 14.81814356892842 -4.478673557614034 +148 2 1 -5.809558827384787 14.611789154829552 13.287687188309562 +149 2 1 8.986830839040898 -17.43898584267833 -18.08640526127862 +150 2 1 -13.315275244526854 8.890431200255954 -8.708179477452443 +151 2 1 -0.5407152591412618 -23.67970550599055 -24.1586910560046 +152 2 1 -19.79961109336906 -16.10906604558887 -5.879899717095562 +153 2 1 -23.626316306846658 9.337407355717588 -9.640842288307239 +154 2 1 -18.847256196659333 -16.303517291166603 -10.786416046984721 +155 2 1 13.567770091716845 -24.4927974402177 8.896906985984664 +156 2 1 13.652894892068794 -24.87567116574863 21.89026113439551 +157 2 1 -8.575912713332162 9.92386172372207 5.029537530028822 +158 2 1 20.69339436974964 1.129252448454178 0.3584458063532807 +159 2 1 -0.9971941518705947 18.317397852358788 6.795424830570379 +160 2 1 23.155704681402298 15.458725773368961 17.01599672991628 +161 2 1 22.278634187244123 14.642946508468171 20.543957651530896 +162 2 1 9.771629496835963 -21.696904301438853 -5.259678202922196 +163 2 1 5.253009955872763 17.911287158418148 15.769047957152992 +164 2 1 -20.759038961257414 5.59089552770853 -12.383953925685166 +165 2 1 3.2163819108147145 -4.948608591009169 -17.85036103684716 +166 2 1 20.637631925250837 9.109955226257064 6.177181979863878 +167 2 1 5.306344093540837 12.647347581939556 23.229957406774105 +168 2 1 -24.15187998806597 17.263903348029615 -17.141028077545826 +169 2 1 -15.705280442832997 -15.655358704303895 -10.488762557871972 +170 2 1 -6.601131108664461 -22.50322976595015 -5.672942609306119 +171 2 1 22.869179482568555 13.369592422303498 -9.378437532422556 +172 2 1 -23.151055417980903 -3.928919101213168 -11.117061489640207 +173 2 1 1.3592343286386246 -18.552063924235036 -15.346172149331993 +174 2 1 10.23567488314778 -18.14207926130103 -1.6884247085891886 +175 2 1 12.595888032974493 -1.7416169207452157 -21.786811832485718 +176 2 1 -0.14792438162408672 17.11748549051584 1.2788726677139053 +177 2 1 24.349235298880274 -8.664350854740949 12.4309854455257 +178 2 1 -18.827147816604253 -18.80258748867273 -1.6980553939283212 +179 2 1 -9.048793002383698 -1.788614428205263 -11.841289777017172 +180 2 1 -22.49667217853208 -22.112076711777533 10.01393503943838 +181 2 1 -16.183333848138453 1.3098533508906556 0.8096413611556166 +182 2 1 -4.007575369376703 -24.447854073342157 -19.683971619997376 +183 2 1 8.79123015290173 -15.890906503248287 -23.45721570121758 +184 2 1 -8.557898021171628 -21.985380426316674 22.626382729361595 +185 2 1 7.143974673263372 16.57516065778192 0.5907315164854055 +186 2 1 7.05280226857041 6.658154377550723 17.993436860997946 +187 2 1 20.98391844656716 -3.7711929542825544 -22.37222924252256 +188 2 1 -8.856382807041598 -16.421301042649826 -7.682473719905396 +189 2 1 -14.381919492441797 -7.667674808763277 -10.178028203828621 +190 2 1 -22.93472549116592 10.072854607637751 3.756868463885592 +191 2 1 9.458987867260412 17.23200182595278 -0.03503381482496337 +192 2 1 11.013603635791974 19.842184408029837 -5.83598462187852 +193 2 1 23.28897987479008 2.835578651649044 -20.512845011389647 +194 2 1 -18.86161127148128 8.956542530565656 14.193388541103026 +195 2 1 13.688477473034126 -15.973205475346514 10.952445409682397 +196 2 1 2.1058159557459497 2.740725960214597 -23.72037436968614 +197 2 1 20.982351847235442 7.072739454450108 -24.07322254392252 +198 2 1 5.962360707177609 -19.424513569281604 22.469955103109243 +199 2 1 -17.13607356062674 20.038457022813326 12.94227215395123 +200 2 1 11.592617137491743 22.283887092702138 2.339699650677858 +201 2 1 -1.3864952037065237 19.199632510575505 -7.684210221911414 +202 2 1 -22.44476570586083 -19.66385674506424 -8.981660607669522 +203 2 1 0.36547911522815824 -7.628556098996082 16.326944822668068 +204 2 1 -9.766164330974753 24.38435844399602 -14.352553497163 +205 2 1 -0.6310792726759544 -5.625399375968325 13.665993163571486 +206 2 1 2.6795300975636103 -0.37097710463575595 15.575183407667495 +207 2 1 10.68508361399715 24.638181487800373 -17.538711281692827 +208 2 1 18.30809729940504 18.39121662193474 18.285926328751984 +209 2 1 -11.52561870836783 -11.871004571782223 12.890674390475048 +210 3 -1 16.038097437687007 -0.8308290507120688 9.140710202344948 +211 3 -1 -12.071581865552927 23.77532123232212 -6.250109721970887 +212 3 -1 24.179073767023887 19.6390206210449 22.20321951706368 +213 3 -1 22.899159789805424 8.918385700451317 -1.1269016129923664 +214 3 -1 -10.48576153865241 5.691510884812594 21.955276995406933 +215 3 -1 6.272776670877239 10.035821052072265 22.22030412319301 +216 3 -1 14.689947575936934 -7.785907120217196 0.5033983092114553 +217 3 -1 23.173937996535116 -21.041572031861037 -21.057283440516468 +218 3 -1 -6.015120142466472 6.3962924962024985 21.58241945230285 +219 3 -1 -0.77667042466472 0.3962848125024985 1.582473830285 \ No newline at end of file diff --git a/examples/USER/misc/charge_regulation/data.chreg-acid-real b/examples/USER/misc/charge_regulation/data.chreg-acid-real new file mode 100644 index 0000000000..1f005a155b --- /dev/null +++ b/examples/USER/misc/charge_regulation/data.chreg-acid-real @@ -0,0 +1,235 @@ +LAMMPS data file generated by get_input.py + +219 atoms +3 atom types +-180 180 xlo xhi +-180 180 ylo yhi +-180 180 zlo zhi + +Masses + +1 20 +2 20 +3 20 + +Atoms + +1 1 0 18.70795854 -60.24998141 144.0092784 +2 1 -1 -130.9166548 -58.17450505 59.42690807 +3 1 -1 -125.5489258 58.46696329 77.38308245 +4 1 -1 46.8178314 -169.1807517 143.6272062 +5 1 -1 -162.2028908 -135.2407217 -129.3455357 +6 1 -1 -69.93717134 136.6009615 -140.3684699 +7 1 -1 -92.39022725 0.88313303 -156.091658 +8 1 -1 150.5452585 -15.59052452 3.326246397 +9 1 -1 171.8072626 172.9794849 75.84528386 +10 1 -1 -3.808294794 171.5056017 -19.13183671 +11 1 -1 68.90552852 86.21187482 24.628687 +12 1 -1 -73.4512319 54.41387468 86.90435812 +13 1 -1 35.26889793 14.52239846 -149.5100547 +14 1 -1 -173.4235696 31.85993966 -30.27092231 +15 1 -1 26.52275652 -34.29527864 -91.86288894 +16 1 -1 -87.96846598 -127.5856503 -97.6057498 +17 1 -1 -154.4848498 -53.45277349 -49.99665917 +18 1 -1 98.62055171 61.22620607 58.21550969 +19 1 -1 -41.50240351 82.79211492 -36.80199381 +20 1 -1 28.75979595 121.8830702 -107.1045784 +21 1 -1 32.46858199 119.7785312 -159.9729476 +22 1 -1 159.2306995 -136.6051631 -172.6738992 +23 1 -1 102.0172393 -120.2283106 99.20908244 +24 1 -1 123.7452923 63.55770833 165.9991324 +25 1 -1 21.47248943 -121.2255157 -153.2060898 +26 1 -1 119.9343938 -11.67643844 -81.47418783 +27 1 -1 138.3518387 -111.6909718 52.34478391 +28 1 -1 -63.98455793 -173.4943975 28.8937153 +29 1 -1 151.1941205 32.1957053 2.770016951 +30 1 -1 9.678451862 40.32965827 -107.4138803 +31 1 -1 -50.13343476 147.3853225 -117.9277823 +32 1 -1 -71.89428479 68.56083346 -179.8533411 +33 1 -1 -124.7615264 41.48173515 41.18558752 +34 1 -1 37.21218965 -170.6314486 18.86382891 +35 1 -1 136.6419056 46.16558949 45.50222572 +36 1 -1 -117.9745136 -106.7487877 29.70172113 +37 1 -1 57.41607893 -135.959946 79.2519303 +38 1 -1 99.2146782 13.37903953 65.55038181 +39 1 -1 -172.1483566 -24.09752036 -73.64723741 +40 1 -1 155.6386288 60.79647905 -137.6687854 +41 1 -1 -63.53265172 104.1203088 115.6442718 +42 1 -1 -17.57295284 90.38545929 148.3687022 +43 1 -1 -132.9077114 109.8788504 152.5487953 +44 1 -1 16.09488244 -168.1200949 81.85901273 +45 1 -1 112.2904059 -47.57448978 39.12664557 +46 1 -1 -126.2033528 29.5901835 -10.20047838 +47 1 -1 15.56623544 -118.8796306 -87.74057744 +48 1 -1 -62.53683723 -50.93540139 -8.324528194 +49 1 -1 112.4826277 -47.2269151 148.0087872 +50 1 -1 -50.1494905 -103.3112513 -103.8344246 +51 1 -1 -87.11540287 -177.3205662 -114.041712 +52 1 -1 48.0517504 56.41745572 -69.94172272 +53 1 -1 -125.3768674 89.18463079 -121.5525657 +54 1 -1 157.6559442 89.89879164 -104.7846361 +55 1 -1 -60.30935405 -178.4439001 53.67216823 +56 1 -1 101.3842749 -156.3782696 -125.6200241 +57 1 -1 33.71034745 14.19807232 -56.33090362 +58 1 -1 31.34283781 114.2588441 177.621698 +59 1 -1 167.8681492 -33.73721495 17.70943601 +60 1 -1 50.73906277 165.7201913 -94.6041936 +61 1 -1 84.42400278 -113.8271268 -11.73087326 +62 1 -1 -146.6200007 -87.0115127 -164.2802459 +63 1 -1 -17.94345563 -5.266117623 -114.4770608 +64 1 -1 -161.6618755 -81.21577064 -68.78715057 +65 1 -1 178.3275787 144.9284223 75.80861878 +66 1 -1 81.54873843 -83.6941478 -69.75163018 +67 1 -1 -41.13190239 113.6079886 -6.669536125 +68 1 -1 -108.5270482 -89.08499627 -39.32427247 +69 1 -1 -41.97432027 -32.96246695 65.11935497 +70 1 -1 -39.09020679 10.47027922 -53.26049629 +71 1 -1 -168.3760012 -85.85704062 27.51501191 +72 1 -1 -7.699755475 21.59960856 26.43069039 +73 1 -1 87.36704757 14.21816794 -107.2504322 +74 1 -1 153.4284087 136.6052131 -126.1502487 +75 1 -1 -175.3682642 25.88313064 123.6455547 +76 1 -1 90.96648194 175.4891969 32.84622917 +77 1 -1 -77.3297511 139.285477 -24.02526586 +78 1 -1 -21.80051132 76.35556687 53.9496888 +79 1 -1 36.00388293 84.74463507 124.0379428 +80 1 -1 8.341344194 -176.0991953 -90.11296078 +81 1 -1 13.79742378 -101.263178 81.37760753 +82 1 -1 -150.1706978 153.3081009 125.261789 +83 1 -1 -176.434078 -91.73850736 -13.91415701 +84 1 -1 19.14212656 -8.014482902 53.93954558 +85 1 -1 -133.3111329 174.2862517 104.1616036 +86 1 -1 141.4028288 71.58712061 62.57853826 +87 1 -1 -55.41310448 84.69012271 -53.69230074 +88 1 -1 7.57030387 -82.51421069 121.7019339 +89 1 -1 6.593627122 170.3286085 -47.07783075 +90 1 -1 167.9772199 -52.51603119 -77.32359634 +91 1 -1 9.68753279 2.580696533 63.63273049 +92 1 -1 -157.900078 -78.41001295 -74.97298362 +93 1 -1 157.7779932 -77.61759639 83.11626672 +94 1 -1 8.735687555 -51.63741526 149.2886008 +95 1 -1 166.3370649 158.0395191 2.108272744 +96 1 -1 -136.2080224 -0.233620925 170.1641304 +97 1 -1 54.59763504 77.34086464 -34.97254442 +98 1 -1 -53.93524806 -102.0122253 -46.27109402 +99 1 -1 -148.8398471 -62.976886 79.28200649 +100 1 -1 -134.367229 -153.7685306 -62.89913905 +101 2 1 85.68701047 47.45902631 136.9309939 +102 2 1 -168.7218611 -136.4862888 34.82926874 +103 2 1 -85.14342147 -27.50852705 22.44064244 +104 2 1 -125.9841936 -166.432033 69.22175254 +105 2 1 78.40196016 32.48784706 134.5355212 +106 2 1 -158.7356866 172.6075363 -168.6081077 +107 2 1 -97.70696089 125.0552693 152.541151 +108 2 1 47.42532862 117.2059839 -26.2001494 +109 2 1 58.97843054 49.16794046 -45.70255405 +110 2 1 -113.2077086 -147.4896474 -109.0593944 +111 2 1 133.7818478 137.2370883 -74.12887346 +112 2 1 -151.8619681 -55.72321046 39.00697883 +113 2 1 -101.5491513 -113.5421107 -135.9492067 +114 2 1 -105.4410412 63.66017268 62.00391546 +115 2 1 -84.37716183 -35.78408568 -7.089644848 +116 2 1 140.387382 -75.00992841 -159.2710691 +117 2 1 157.3753205 145.1311104 -98.29723102 +118 2 1 -126.8885841 157.4914592 -47.04455377 +119 2 1 52.06885202 -100.2669325 38.59257737 +120 2 1 -54.06789629 137.7750035 -116.8953091 +121 2 1 -29.14739431 94.50860741 -51.527097 +122 2 1 -145.9322739 154.5384232 112.3421798 +123 2 1 -32.24342538 -22.90490626 -133.4101075 +124 2 1 155.0953371 97.30799449 -13.02231424 +125 2 1 -109.6079033 -42.89844953 -51.80376701 +126 2 1 -150.2770445 -55.20818421 147.7312972 +127 2 1 -26.96028917 151.3053234 51.82429115 +128 2 1 -42.51040448 55.12547194 -10.01649745 +129 2 1 -154.7332138 -166.4922488 75.56066422 +130 2 1 179.3252381 50.98353603 -103.842222 +131 2 1 -87.64561442 -167.4026399 -37.04977996 +132 2 1 -141.7543098 32.23109989 44.99445113 +133 2 1 121.3596596 -6.092779973 129.6856923 +134 2 1 124.4836766 -86.35531223 85.50625099 +135 2 1 140.6305506 -165.9843021 -35.3966949 +136 2 1 -89.51258901 36.2123163 54.25434215 +137 2 1 107.5306105 58.22419926 141.7457531 +138 2 1 -51.03564423 -166.277591 119.3103596 +139 2 1 106.3738063 153.673561 100.7747233 +140 2 1 -105.1662471 -49.88388187 -163.5658795 +141 2 1 -123.4063552 104.6405545 -157.1806703 +142 2 1 30.68517662 111.7365757 -128.0988407 +143 2 1 -70.66650991 -36.87088431 101.1920697 +144 2 1 59.85584345 28.56015074 -148.8751279 +145 2 1 76.34296857 -18.88899045 11.99663247 +146 2 1 -127.898772 9.029786744 -155.2067979 +147 2 1 -61.47407783 106.6906337 -32.24644961 +148 2 1 -41.82882356 105.2048819 95.67134776 +149 2 1 64.70518204 -125.5606981 -130.2221179 +150 2 1 -95.86998176 64.01110464 -62.69889224 +151 2 1 -3.893149866 -170.4938796 -173.9425756 +152 2 1 -142.5571999 -115.9852755 -42.33527796 +153 2 1 -170.1094774 67.22933296 -69.41406448 +154 2 1 -135.7002446 -117.3853245 -77.66219554 +155 2 1 97.68794466 -176.3481416 64.0577303 +156 2 1 98.30084322 -179.1048324 157.6098802 +157 2 1 -61.74657154 71.45180441 36.21267022 +158 2 1 148.9924395 8.130617629 2.580809806 +159 2 1 -7.179797893 131.8852645 48.92705878 +160 2 1 166.7210737 111.3028256 122.5151765 +161 2 1 160.4061661 105.4292149 147.9164951 +162 2 1 70.35573238 -156.217711 -37.86968306 +163 2 1 37.82167168 128.9612675 113.5371453 +164 2 1 -149.4650805 40.2544478 -89.16446826 +165 2 1 23.15794976 -35.62998186 -128.5225995 +166 2 1 148.5909499 65.59167763 44.47571026 +167 2 1 38.20567747 91.06090259 167.2556933 +168 2 1 -173.8935359 124.3001041 -123.4154022 +169 2 1 -113.0780192 -112.7185827 -75.51909042 +170 2 1 -47.52814398 -162.0232543 -40.84518679 +171 2 1 164.6580923 96.26106544 -67.52475023 +172 2 1 -166.687599 -28.28821753 -80.04284273 +173 2 1 9.786487166 -133.5748603 -110.4924395 +174 2 1 73.69685916 -130.6229707 -12.1566579 +175 2 1 90.69039384 -12.53964183 -156.8650452 +176 2 1 -1.065055548 123.2458955 9.207883208 +177 2 1 175.3144942 -62.38332615 89.50309521 +178 2 1 -135.5554643 -135.3786299 -12.22599884 +179 2 1 -65.15130962 -12.87802388 -85.25728639 +180 2 1 -161.9760397 -159.2069523 72.10033228 +181 2 1 -116.5200037 9.430944126 5.8294178 +182 2 1 -28.85454266 -176.0245493 -141.7245957 +183 2 1 63.2968571 -114.4145268 -168.891953 +184 2 1 -61.61686575 -158.2947391 162.9099557 +185 2 1 51.43661765 119.3411567 4.253266919 +186 2 1 50.78017633 47.93871152 129.5527454 +187 2 1 151.0842128 -27.15258927 -161.0800505 +188 2 1 -63.76595621 -118.2333675 -55.31381078 +189 2 1 -103.5498203 -55.20725862 -73.28180307 +190 2 1 -165.1300235 72.52455317 27.04945294 +191 2 1 68.10471264 124.0704131 -0.252243467 +192 2 1 79.29794618 142.8637277 -42.01908928 +193 2 1 167.6806551 20.41616629 -147.6924841 +194 2 1 -135.8036012 64.48710622 102.1923975 +195 2 1 98.55703781 -115.0070794 78.85760695 +196 2 1 15.16187488 19.73322691 -170.7866955 +197 2 1 151.0729333 50.92372407 -173.3272023 +198 2 1 42.92899709 -139.8564977 161.7836767 +199 2 1 -123.3797296 144.2768906 93.18435951 +200 2 1 83.46684339 160.4439871 16.84583748 +201 2 1 -9.982765467 138.2373541 -55.3263136 +202 2 1 -161.6023131 -141.5797686 -64.66795638 +203 2 1 2.63144963 -54.92560391 117.5540027 +204 2 1 -70.31638318 175.5673808 -103.3383852 +205 2 1 -4.543770763 -40.50287551 98.39515078 +206 2 1 19.2926167 -2.671035153 112.1413205 +207 2 1 76.93260202 177.3949067 -126.2787212 +208 2 1 131.8183006 132.4167597 131.6586696 +209 2 1 -82.9844547 -85.47123292 92.81285561 +210 3 -1 115.4743016 -5.981969165 65.81311346 +211 3 -1 -86.91538943 171.1823129 -45.00079 +212 3 -1 174.0893311 141.4009485 159.8631805 +213 3 -1 164.8739505 64.21237704 -8.113691614 +214 3 -1 -75.49748308 40.97887837 158.0779944 +215 3 -1 45.16399203 72.25791157 159.9861897 +216 3 -1 105.7676225 -56.05853127 3.624467826 +217 3 -1 166.8523536 -151.4993186 -151.6124408 +218 3 -1 -43.30886503 46.05330597 155.3934201 +219 3 -1 -5.592027058 2.85325065 11.39381158 \ No newline at end of file diff --git a/examples/USER/misc/charge_regulation/data.chreg-polymer b/examples/USER/misc/charge_regulation/data.chreg-polymer new file mode 100644 index 0000000000..2c5bd3e1ed --- /dev/null +++ b/examples/USER/misc/charge_regulation/data.chreg-polymer @@ -0,0 +1,264 @@ +##A Weak PE Chain of N=80 + +160 atoms +79 bonds + +5 atom types +1 bond types + +-50 50 xlo xhi +-50 50 ylo yhi +-50 50 zlo zhi + +Masses + +1 1.0 +2 1.0 +3 1.0 +4 1.0 +5 1.0 + +Atoms +# atom_id molecule_id atom_type charge x y z +1 1 1 -1 0 0 -48.37753795169063 +2 1 1 -1 0 0 -47.255075903381254 +3 1 1 -1 0 0 -46.13261385507188 +4 1 1 -1 0 0 -45.01015180676251 +5 1 1 -1 0 0 -43.887689758453135 +6 1 1 -1 0 0 -42.76522771014376 +7 1 1 -1 0 0 -41.64276566183439 +8 1 1 -1 0 0 -40.520303613525016 +9 1 1 -1 0 0 -39.39784156521564 +10 1 1 -1 0 0 -38.27537951690627 +11 1 1 -1 0 0 -37.1529174685969 +12 1 1 -1 0 0 -36.030455420287524 +13 1 1 -1 0 0 -34.90799337197815 +14 1 1 -1 0 0 -33.78553132366878 +15 1 1 -1 0 0 -32.663069275359405 +16 1 1 -1 0 0 -31.54060722705003 +17 1 1 -1 0 0 -30.41814517874066 +18 1 1 -1 0 0 -29.295683130431286 +19 1 1 -1 0 0 -28.173221082121913 +20 1 1 -1 0 0 -27.05075903381254 +21 1 1 -1 0 0 -25.928296985503167 +22 1 1 -1 0 0 -24.805834937193794 +23 1 1 -1 0 0 -23.68337288888442 +24 1 1 -1 0 0 -22.560910840575048 +25 1 1 -1 0 0 -21.438448792265675 +26 1 1 -1 0 0 -20.3159867439563 +27 1 1 -1 0 0 -19.19352469564693 +28 1 1 -1 0 0 -18.071062647337556 +29 1 1 -1 0 0 -16.948600599028183 +30 1 1 -1 0 0 -15.82613855071881 +31 1 1 -1 0 0 -14.703676502409436 +32 1 1 -1 0 0 -13.581214454100063 +33 1 1 -1 0 0 -12.45875240579069 +34 1 1 -1 0 0 -11.336290357481317 +35 1 1 -1 0 0 -10.213828309171944 +36 1 1 -1 0 0 -9.091366260862571 +37 1 1 -1 0 0 -7.968904212553198 +38 1 1 -1 0 0 -6.846442164243825 +39 1 1 -1 0 0 -5.723980115934452 +40 1 1 -1 0 0 -4.601518067625079 +41 1 1 -1 0 0 -3.4790560193157063 +42 1 1 -1 0 0 -2.3565939710063333 +43 1 1 -1 0 0 -1.2341319226969603 +44 1 1 -1 0 0 -0.11166987438758724 +45 1 1 -1 0 0 1.0107921739217858 +46 1 1 -1 0 0 2.133254222231159 +47 1 1 -1 0 0 3.255716270540532 +48 1 1 -1 0 0 4.378178318849905 +49 1 1 -1 0 0 5.500640367159278 +50 1 1 -1 0 0 6.623102415468651 +51 1 1 -1 0 0 7.745564463778024 +52 1 1 -1 0 0 8.868026512087397 +53 1 1 -1 0 0 9.99048856039677 +54 1 1 -1 0 0 11.112950608706143 +55 1 1 -1 0 0 12.235412657015516 +56 1 1 -1 0 0 13.357874705324889 +57 1 1 -1 0 0 14.480336753634262 +58 1 1 -1 0 0 15.602798801943635 +59 1 1 -1 0 0 16.725260850253008 +60 1 1 -1 0 0 17.84772289856238 +61 1 1 -1 0 0 18.970184946871754 +62 1 1 -1 0 0 20.092646995181127 +63 1 1 -1 0 0 21.2151090434905 +64 1 1 -1 0 0 22.337571091799873 +65 1 1 -1 0 0 23.460033140109246 +66 1 1 -1 0 0 24.58249518841862 +67 1 1 -1 0 0 25.704957236727992 +68 1 1 -1 0 0 26.827419285037365 +69 1 1 -1 0 0 27.949881333346738 +70 1 1 -1 0 0 29.07234338165611 +71 1 1 -1 0 0 30.194805429965484 +72 1 1 -1 0 0 31.317267478274857 +73 1 1 -1 0 0 32.43972952658423 +74 1 1 -1 0 0 33.5621915748936 +75 1 1 -1 0 0 34.684653623202976 +76 1 1 -1 0 0 35.80711567151235 +77 1 1 -1 0 0 36.92957771982172 +78 1 1 -1 0 0 38.052039768131095 +79 1 1 -1 0 0 39.17450181644047 +80 1 1 -1 0 0 40.29696386474984 +81 0 2 1 -27.886422274724097 27.72001798427955 38.68169635811057 +82 0 2 1 29.812255760623188 17.871838747003693 -29.094648426460257 +83 0 2 1 -13.23881351410531 13.28123966828678 -24.422176415560116 +84 0 2 1 4.9465650593939685 -37.7521903558826 -15.115417767729575 +85 0 2 1 34.82527943387106 29.457664434004897 -25.565595338061254 +86 0 2 1 46.35660570786446 -7.161776614070412 -20.2471250527001 +87 0 2 1 39.20854546781531 34.96815569014278 13.893531822586723 +88 0 2 1 -7.797240698180197 0.07861219105048889 48.686453603015224 +89 0 2 1 43.92391845355516 -39.42362941705827 22.448930565867585 +90 0 2 1 -40.371744364329984 -17.743039071967246 -15.08153047835009 +91 0 2 1 -21.573165497710058 -0.5844447399891948 -45.73596994149077 +92 0 2 1 -19.882394451769102 -7.392447895357577 30.733607063808876 +93 0 2 1 -17.393031309514107 26.882975097407467 -47.64059480000892 +94 0 2 1 25.652222561671735 1.0229206994719107 -14.959030208952043 +95 0 2 1 26.075045766879313 19.902341017250052 46.70284805469666 +96 0 2 1 39.91980369168496 0.753749460187592 -26.203575929573407 +97 0 2 1 13.777613371273958 7.112171629839359 -33.5270487721399 +98 0 2 1 18.944534687271826 20.090215089875286 -34.381335468790574 +99 0 2 1 -23.801856387842435 -42.275962146864586 -8.322936238250279 +100 0 2 1 -31.386991395893826 29.83894468611787 8.937114269513422 +101 0 2 1 -41.07090001085809 49.59339931450579 6.666864232174753 +102 0 2 1 -46.58911504232167 -32.46068937927039 19.40424197066872 +103 0 2 1 -39.94659416571965 -36.28203465180086 5.841020764632312 +104 0 2 1 -26.027467090120137 -41.05522015175137 -1.1145958296128313 +105 0 2 1 37.09602855959457 23.76087951027276 45.09142423198867 +106 0 2 1 -27.78138413517528 -48.97344929918942 45.91491289356401 +107 0 2 1 4.468912883622387 -5.217782298407556 6.381420595433383 +108 0 2 1 36.758686966564525 48.425582881586166 -25.909273336802997 +109 0 2 1 -27.045102667146036 -19.713951008254117 4.339232870380627 +110 0 2 1 -5.984280016624311 -49.45311479123866 36.35727783065221 +111 0 2 1 27.833389147163018 -47.80144978082761 -47.71458334276804 +112 0 2 1 -23.628507668044364 -30.353876765128685 36.174277933133254 +113 0 2 1 -40.93360714431151 40.1336490864843 -27.035347797435495 +114 0 2 1 6.3523980881104976 -28.636485436097082 -10.671354350535445 +115 0 2 1 42.765716958607086 -32.85779663523676 -1.9682360265562124 +116 0 2 1 -33.68069757415453 16.800769050458484 -6.273374390373085 +117 0 2 1 13.909148568042937 4.921040289518388 12.111069913598996 +118 0 2 1 6.728324076730296 -48.44092815223126 -35.92436883370601 +119 0 2 1 -18.121173967321912 -15.76903395165283 2.2495451015454933 +120 0 2 1 -11.75253233489407 -45.82569982175387 -12.477142440015896 +121 0 2 1 1.9713864197144133 17.961034900064007 32.97992150691711 +122 0 2 1 -3.993384770632943 -47.63120435620297 27.75490859098018 +123 0 2 1 -0.32208279553454844 -47.30616152402566 -22.751109302380367 +124 0 2 1 -0.135777029397957 23.88599790464609 -31.87440560354473 +125 0 2 1 -6.123924906817393 -2.038519565120424 45.4809181974626 +126 0 2 1 -29.622588299895046 42.40404115712096 6.640479709229595 +127 0 2 1 -11.694512971272673 19.983258641775762 -38.152427411711145 +128 0 2 1 -20.93721440637313 39.46397829322392 -45.52708262202337 +129 0 2 1 34.13340147809369 36.14268504987945 -23.978137043267044 +130 0 2 1 -37.422309952611485 29.181841318883087 27.55677757161692 +131 0 2 1 30.11314373799594 18.721794400471353 1.5553303682670574 +132 0 2 1 -7.3563467211571805 46.84253369205935 -39.84708490437832 +133 0 2 1 -3.695927445484358 2.494403998274727 -7.634369981832755 +134 0 2 1 44.09701173592077 17.717328437831043 31.54108326477207 +135 0 2 1 48.070189931616795 10.601166369398662 -28.28574863896286 +136 0 2 1 -7.044858382811761 -42.080663380241766 -1.4369925734636553 +137 0 2 1 -12.485032488076918 23.87106169116919 6.178803347562642 +138 0 2 1 -15.613232443702309 10.103630885941392 -20.447182948810916 +139 0 2 1 28.610332347774147 37.08335835592116 -19.90280831362493 +140 0 2 1 25.853920233242505 -27.768648181803655 24.971357611943475 +141 0 2 1 9.256159541363296 -23.562096053197934 -4.722701100419371 +142 0 2 1 39.96929397877305 -11.88228547846326 -28.70638149104603 +143 0 2 1 -37.98545134633291 -23.50528193202669 -10.939982626098441 +144 0 2 1 25.40017763114089 -47.49220127581256 15.1783064865064 +145 0 2 1 28.073596076651768 3.6631266774864386 31.54355751177208 +146 0 2 1 -19.596457173068703 46.79824882013442 -12.302655772327597 +147 0 2 1 -36.46192411958321 -2.785830672302666 -25.1901381125736 +148 0 2 1 -27.377389198969894 11.295792272951147 39.32842550184691 +149 0 2 1 32.24967019136358 -20.517755791016402 31.20590722085157 +150 0 2 1 47.70698618147787 9.75462874031868 -28.267447889542563 +151 0 2 1 17.157803106328345 -27.48141290657965 7.7670687016760525 +152 0 2 1 15.089833959419678 5.342811012118396 27.35336620165029 +153 0 2 1 9.836963929211372 -11.047378229392443 -20.960811370690678 +154 0 2 1 44.66600586278604 14.949733274456321 -29.328965994323575 +155 0 2 1 -21.006260382140685 8.492712712433658 -46.31580169190271 +156 0 2 1 -29.970979487850748 -36.46250489415931 26.914372830947457 +157 0 2 1 -1.0821372755756329 -8.453379951300242 -19.95665062432509 +158 0 2 1 -24.033653425909772 -39.51330620205049 20.067656167683793 +159 0 2 1 27.747287624384626 -21.904990435351312 -10.819345241055956 +160 0 2 1 -40.86737066410612 -25.609300376714796 -21.128139356809783 + +Bonds + # bond_id bond_type atom1_id atom2_id +1 1 1 2 +2 1 2 3 +3 1 3 4 +4 1 4 5 +5 1 5 6 +6 1 6 7 +7 1 7 8 +8 1 8 9 +9 1 9 10 +10 1 10 11 +11 1 11 12 +12 1 12 13 +13 1 13 14 +14 1 14 15 +15 1 15 16 +16 1 16 17 +17 1 17 18 +18 1 18 19 +19 1 19 20 +20 1 20 21 +21 1 21 22 +22 1 22 23 +23 1 23 24 +24 1 24 25 +25 1 25 26 +26 1 26 27 +27 1 27 28 +28 1 28 29 +29 1 29 30 +30 1 30 31 +31 1 31 32 +32 1 32 33 +33 1 33 34 +34 1 34 35 +35 1 35 36 +36 1 36 37 +37 1 37 38 +38 1 38 39 +39 1 39 40 +40 1 40 41 +41 1 41 42 +42 1 42 43 +43 1 43 44 +44 1 44 45 +45 1 45 46 +46 1 46 47 +47 1 47 48 +48 1 48 49 +49 1 49 50 +50 1 50 51 +51 1 51 52 +52 1 52 53 +53 1 53 54 +54 1 54 55 +55 1 55 56 +56 1 56 57 +57 1 57 58 +58 1 58 59 +59 1 59 60 +60 1 60 61 +61 1 61 62 +62 1 62 63 +63 1 63 64 +64 1 64 65 +65 1 65 66 +66 1 66 67 +67 1 67 68 +68 1 68 69 +69 1 69 70 +70 1 70 71 +71 1 71 72 +72 1 72 73 +73 1 73 74 +74 1 74 75 +75 1 75 76 +76 1 76 77 +77 1 77 78 +78 1 78 79 +79 1 79 80 diff --git a/examples/USER/misc/charge_regulation/in.chreg-acid b/examples/USER/misc/charge_regulation/in.chreg-acid new file mode 100644 index 0000000000..68ef5e1b7c --- /dev/null +++ b/examples/USER/misc/charge_regulation/in.chreg-acid @@ -0,0 +1,36 @@ +# Charge regulation lammps for simple weak electrolyte + +units lj +atom_style charge +neighbor 3.0 bin +read_data data.chreg-acid + +variable cut_long equal 12.5 +variable nevery equal 100 +variable nmc equal 100 +variable pH equal 7.0 +variable pKa equal 6.0 +variable pIm equal 3.0 +variable pIp equal 3.0 + +variable cut_lj equal 2^(1.0/6.0) +variable lunit_nm equal 0.72 # in the units of nm +velocity all create 1.0 8008 loop geom + +pair_style lj/cut/coul/long ${cut_lj} ${cut_long} +pair_coeff * * 1.0 1.0 +kspace_style ewald 1.0e-3 +pair_modify shift yes + +######### VERLET INTEGRATION WITH LANGEVIN THERMOSTAT ########### +fix fnve all nve +compute dtemp all temp +compute_modify dtemp dynamic yes +fix fT all langevin 1.0 1.0 1.0 123 +fix_modify fT temp dtemp + +fix chareg all charge/regulation 2 3 acid_type 1 pH ${pH} pKa ${pKa} pIp ${pIp} pIm ${pIm} lunit_nm ${lunit_nm} nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +thermo 100 +thermo_style custom step pe c_dtemp f_chareg[1] f_chareg[2] f_chareg[3] f_chareg[4] f_chareg[5] f_chareg[6] f_chareg[7] f_chareg[8] +timestep 0.005 +run 2000 diff --git a/examples/USER/misc/charge_regulation/in.chreg-acid-real b/examples/USER/misc/charge_regulation/in.chreg-acid-real new file mode 100644 index 0000000000..d7225f33ea --- /dev/null +++ b/examples/USER/misc/charge_regulation/in.chreg-acid-real @@ -0,0 +1,44 @@ +# Charge regulation lammps for simple weak electrolyte + +units real +atom_style charge +neighbor 10.0 bin +read_data data.chreg-acid-real + +#real units +variable sigma equal 7.2 # particle diameter 0.72 nm +variable temperature equal 298 # temperature 298 K +variable kb index 0.0019872067 # kB in Kcal/mol/K +variable epsilon equal ${kb}*${temperature} +variable tunit equal 2000 # time unit is 2000 fs +variable timestep equal 0.005*${tunit} + +variable cut_long equal 12.5*${sigma} +variable nevery equal 100 +variable nmc equal 100 +variable pH equal 7.0 +variable pKa equal 6.0 +variable pIm equal 3.0 +variable pIp equal 3.0 + +variable cut_lj equal 2^(1.0/6.0)*${sigma} +velocity all create ${temperature} 8008 loop geom + +pair_style lj/cut/coul/long ${cut_lj} ${cut_long} +pair_coeff * * ${epsilon} ${sigma} +kspace_style pppm 1.0e-3 +dielectric 78 +pair_modify shift yes + +######### VERLET INTEGRATION WITH LANGEVIN THERMOSTAT ########### +fix fnve all nve +compute dtemp all temp +compute_modify dtemp dynamic yes +fix fT all langevin $(v_temperature) $(v_temperature) $(v_tunit) 123 +fix_modify fT temp dtemp + +fix chareg all charge/regulation 2 3 acid_type 1 pH ${pH} pKa ${pKa} pIp ${pIp} pIm ${pIm} lunit_nm 0.1 nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +thermo 100 +thermo_style custom step pe c_dtemp f_chareg[1] f_chareg[2] f_chareg[3] f_chareg[4] f_chareg[5] f_chareg[6] f_chareg[7] f_chareg[8] +timestep ${timestep} +run 2000 diff --git a/examples/USER/misc/charge_regulation/in.chreg-polymer b/examples/USER/misc/charge_regulation/in.chreg-polymer new file mode 100644 index 0000000000..0adab9b5e7 --- /dev/null +++ b/examples/USER/misc/charge_regulation/in.chreg-polymer @@ -0,0 +1,33 @@ +# Charge regulation lammps for a polymer chain +units lj +atom_style full +neighbor 3.0 bin +read_data data.chreg-polymer + +bond_style harmonic +bond_coeff 1 100 1.122462 # K R0 +velocity all create 1.0 8008 loop geom + +pair_style lj/cut/coul/long 1.122462 20 +pair_coeff * * 1.0 1.0 1.122462 # charges +kspace_style pppm 1.0e-3 +pair_modify shift yes +dielectric 1.0 + +######### VERLET INTEGRATION WITH LANGEVIN THERMOSTAT ########### +fix fnve all nve +compute dtemp all temp +compute_modify dtemp dynamic yes +fix fT all langevin 1.0 1.0 1.0 123 +fix_modify fT temp dtemp + +fix chareg1 all charge/regulation 2 3 acid_type 1 pH 7.0 pKa 6.5 pIp 3.0 pIm 3.0 temp 1.0 nmc 40 seed 2345 +fix chareg2 all charge/regulation 4 5 acid_type 1 pH 7.0 pKa 6.5 pIp 7.0 pIm 7.0 temp 1.0 nmc 40 seed 2345 +fix chareg3 all charge/regulation 4 3 pIp 7.0 pIm 3.0 temp 1.0 nmc 20 seed 2345 + +thermo 100 +# print: step, potential energy, temperature, neutral acids, charged acids, salt cations, salt anions, H+ ions, OH- ions +thermo_style custom step pe c_dtemp f_chareg1[3] f_chareg1[4] f_chareg1[7] f_chareg1[8] f_chareg2[7] f_chareg2[8] + +timestep 0.005 +run 2000 diff --git a/examples/USER/misc/charge_regulation/log.10Feb21.chreg-acid.g++.1 b/examples/USER/misc/charge_regulation/log.10Feb21.chreg-acid.g++.1 new file mode 100644 index 0000000000..627281217b --- /dev/null +++ b/examples/USER/misc/charge_regulation/log.10Feb21.chreg-acid.g++.1 @@ -0,0 +1,125 @@ +LAMMPS (10 Feb 2021) + using 1 OpenMP thread(s) per MPI task +# Charge regulation lammps for simple weak electrolyte + +units lj +atom_style charge +neighbor 3.0 bin +read_data data.chreg-acid +Reading data file ... + orthogonal box = (-25.000000 -25.000000 -25.000000) to (25.000000 25.000000 25.000000) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 219 atoms + read_data CPU = 0.003 seconds + +variable cut_long equal 12.5 +variable nevery equal 100 +variable nmc equal 100 +variable pH equal 7.0 +variable pKa equal 6.0 +variable pIm equal 3.0 +variable pIp equal 3.0 + +variable cut_lj equal 2^(1.0/6.0) +variable lunit_nm equal 0.72 # in the units of nm +velocity all create 1.0 8008 loop geom + +pair_style lj/cut/coul/long ${cut_lj} ${cut_long} +pair_style lj/cut/coul/long 1.12246204830937 ${cut_long} +pair_style lj/cut/coul/long 1.12246204830937 12.5 +pair_coeff * * 1.0 1.0 +kspace_style ewald 1.0e-3 +pair_modify shift yes + +######### VERLET INTEGRATION WITH LANGEVIN THERMOSTAT ########### +fix fnve all nve +compute dtemp all temp +compute_modify dtemp dynamic yes +fix fT all langevin 1.0 1.0 1.0 123 +fix_modify fT temp dtemp + +fix chareg all charge/regulation 2 3 acid_type 1 pH ${pH} pKa ${pKa} pIp ${pIp} pIm ${pIm} lunit_nm ${lunit_nm} nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa ${pKa} pIp ${pIp} pIm ${pIm} lunit_nm ${lunit_nm} nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp ${pIp} pIm ${pIm} lunit_nm ${lunit_nm} nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm ${pIm} lunit_nm ${lunit_nm} nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm 3 lunit_nm ${lunit_nm} nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm 3 lunit_nm 0.72 nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm 3 lunit_nm 0.72 nevery 100 nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm 3 lunit_nm 0.72 nevery 100 nmc 100 seed 2345 tempfixid fT +thermo 100 +thermo_style custom step pe c_dtemp f_chareg[1] f_chareg[2] f_chareg[3] f_chareg[4] f_chareg[5] f_chareg[6] f_chareg[7] f_chareg[8] +timestep 0.005 +run 2000 +Ewald initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:339) + G vector (1/distance) = 0.14221027 + estimated absolute RMS force accuracy = 0.0010128126 + estimated relative force accuracy = 0.0010128126 + KSpace vectors: actual max1d max3d = 257 5 665 + kxmax kymax kzmax = 5 5 5 +0 atoms in group FixChargeRegulation:exclusion_group:chareg +WARNING: Neighbor exclusions used with KSpace solver may give inconsistent Coulombic energies (src/neighbor.cpp:486) +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 15.5 + ghost atom cutoff = 15.5 + binsize = 7.75, bins = 7 7 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 11.91 | 11.91 | 11.91 Mbytes +Step PotEng c_dtemp f_chareg[1] f_chareg[2] f_chareg[3] f_chareg[4] f_chareg[5] f_chareg[6] f_chareg[7] f_chareg[8] + 0 -0.049662059 1 0 0 1 99 0 0 109 10 + 100 -0.053672881 0.99159291 100 71 16 84 0 0 92 8 + 200 -0.053383027 0.90935145 200 156 26 74 0 0 85 11 + 300 -0.040471335 0.97937429 300 240 21 79 0 0 87 8 + 400 -0.036188123 1.0837424 400 319 14 86 0 0 92 6 + 500 -0.057294925 1.0507526 500 407 10 90 0 0 98 8 + 600 -0.056009748 1.0669354 600 487 15 85 0 0 92 7 + 700 -0.069686562 0.99202496 700 567 14 86 0 0 96 10 + 800 -0.054695624 1.0592933 800 647 25 75 0 0 82 7 + 900 -0.058693653 0.97870458 900 728 27 73 0 0 83 10 + 1000 -0.062352957 1.0008923 1000 805 24 76 0 0 84 8 + 1100 -0.065011926 0.91691048 1100 886 22 78 0 0 87 9 + 1200 -0.080463686 0.98879304 1200 963 23 77 0 0 88 11 + 1300 -0.062146141 1.0566033 1300 1047 21 79 0 0 88 9 + 1400 -0.046980246 1.0847512 1400 1129 17 83 0 0 94 11 + 1500 -0.042935292 1.0075805 1500 1203 24 76 0 0 86 10 + 1600 -0.056075891 0.94173489 1600 1277 23 77 0 0 90 13 + 1700 -0.042279161 1.1126317 1700 1355 28 72 0 0 82 10 + 1800 -0.036842528 1.0255327 1800 1436 24 76 0 0 83 7 + 1900 -0.038816022 0.93883373 1900 1511 23 77 0 0 86 9 + 2000 -0.047008287 0.98904085 2000 1592 26 74 0 0 81 7 +Loop time of 11.6365 on 1 procs for 2000 steps with 188 atoms + +Performance: 74249.079 tau/day, 171.873 timesteps/s +99.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.24337 | 0.24337 | 0.24337 | 0.0 | 2.09 +Kspace | 4.6009 | 4.6009 | 4.6009 | 0.0 | 39.54 +Neigh | 0.023451 | 0.023451 | 0.023451 | 0.0 | 0.20 +Comm | 0.027729 | 0.027729 | 0.027729 | 0.0 | 0.24 +Output | 0.0007813 | 0.0007813 | 0.0007813 | 0.0 | 0.01 +Modify | 6.7345 | 6.7345 | 6.7345 | 0.0 | 57.87 +Other | | 0.005713 | | | 0.05 + +Nlocal: 188.000 ave 188 max 188 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 597.000 ave 597 max 597 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 2196.00 ave 2196 max 2196 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 2196 +Ave neighs/atom = 11.680851 +Neighbor list builds = 2059 +Dangerous builds = 0 +Total wall time: 0:00:11 diff --git a/examples/USER/misc/charge_regulation/log.10Feb21.chreg-acid.g++.4 b/examples/USER/misc/charge_regulation/log.10Feb21.chreg-acid.g++.4 new file mode 100644 index 0000000000..465dcbdb4e --- /dev/null +++ b/examples/USER/misc/charge_regulation/log.10Feb21.chreg-acid.g++.4 @@ -0,0 +1,125 @@ +LAMMPS (10 Feb 2021) + using 1 OpenMP thread(s) per MPI task +# Charge regulation lammps for simple weak electrolyte + +units lj +atom_style charge +neighbor 3.0 bin +read_data data.chreg-acid +Reading data file ... + orthogonal box = (-25.000000 -25.000000 -25.000000) to (25.000000 25.000000 25.000000) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 219 atoms + read_data CPU = 0.003 seconds + +variable cut_long equal 12.5 +variable nevery equal 100 +variable nmc equal 100 +variable pH equal 7.0 +variable pKa equal 6.0 +variable pIm equal 3.0 +variable pIp equal 3.0 + +variable cut_lj equal 2^(1.0/6.0) +variable lunit_nm equal 0.72 # in the units of nm +velocity all create 1.0 8008 loop geom + +pair_style lj/cut/coul/long ${cut_lj} ${cut_long} +pair_style lj/cut/coul/long 1.12246204830937 ${cut_long} +pair_style lj/cut/coul/long 1.12246204830937 12.5 +pair_coeff * * 1.0 1.0 +kspace_style ewald 1.0e-3 +pair_modify shift yes + +######### VERLET INTEGRATION WITH LANGEVIN THERMOSTAT ########### +fix fnve all nve +compute dtemp all temp +compute_modify dtemp dynamic yes +fix fT all langevin 1.0 1.0 1.0 123 +fix_modify fT temp dtemp + +fix chareg all charge/regulation 2 3 acid_type 1 pH ${pH} pKa ${pKa} pIp ${pIp} pIm ${pIm} lunit_nm ${lunit_nm} nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa ${pKa} pIp ${pIp} pIm ${pIm} lunit_nm ${lunit_nm} nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp ${pIp} pIm ${pIm} lunit_nm ${lunit_nm} nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm ${pIm} lunit_nm ${lunit_nm} nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm 3 lunit_nm ${lunit_nm} nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm 3 lunit_nm 0.72 nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm 3 lunit_nm 0.72 nevery 100 nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm 3 lunit_nm 0.72 nevery 100 nmc 100 seed 2345 tempfixid fT +thermo 100 +thermo_style custom step pe c_dtemp f_chareg[1] f_chareg[2] f_chareg[3] f_chareg[4] f_chareg[5] f_chareg[6] f_chareg[7] f_chareg[8] +timestep 0.005 +run 2000 +Ewald initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:339) + G vector (1/distance) = 0.14221027 + estimated absolute RMS force accuracy = 0.0010128126 + estimated relative force accuracy = 0.0010128126 + KSpace vectors: actual max1d max3d = 257 5 665 + kxmax kymax kzmax = 5 5 5 +0 atoms in group FixChargeRegulation:exclusion_group:chareg +WARNING: Neighbor exclusions used with KSpace solver may give inconsistent Coulombic energies (src/neighbor.cpp:486) +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 15.5 + ghost atom cutoff = 15.5 + binsize = 7.75, bins = 7 7 7 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 11.89 | 11.89 | 11.89 Mbytes +Step PotEng c_dtemp f_chareg[1] f_chareg[2] f_chareg[3] f_chareg[4] f_chareg[5] f_chareg[6] f_chareg[7] f_chareg[8] + 0 -0.049662059 1 0 0 1 99 0 0 109 10 + 100 -0.06196414 1.0156327 100 72 15 85 0 0 93 8 + 200 -0.053901683 0.95128403 200 160 24 76 0 0 87 11 + 300 -0.043852423 0.98035058 300 246 22 78 0 0 85 7 + 400 -0.048370798 1.0909844 400 324 16 84 0 0 91 7 + 500 -0.042546472 1.026849 500 410 13 87 0 0 95 8 + 600 -0.06133022 0.97805065 600 494 14 86 0 0 93 7 + 700 -0.053815853 1.0641005 700 572 17 83 0 0 91 8 + 800 -0.059974814 1.0192348 800 650 23 77 0 0 83 6 + 900 -0.051808132 1.0773288 900 728 25 75 0 0 85 10 + 1000 -0.050390995 1.0236954 1000 804 28 72 0 0 81 9 + 1100 -0.069766444 1.030965 1100 890 25 75 0 0 85 10 + 1200 -0.074580231 1.0490058 1200 963 21 79 0 0 88 9 + 1300 -0.060169443 0.93456607 1300 1043 22 78 0 0 86 8 + 1400 -0.05120764 1.0374062 1400 1127 19 81 0 0 92 11 + 1500 -0.027644416 0.99804782 1500 1204 24 76 0 0 85 9 + 1600 -0.038599195 0.99015524 1600 1283 22 78 0 0 90 12 + 1700 -0.050222686 1.1444379 1700 1365 27 73 0 0 84 11 + 1800 -0.049338003 1.1188048 1800 1449 22 78 0 0 84 6 + 1900 -0.04533154 0.99894341 1900 1527 22 78 0 0 86 8 + 2000 -0.058837311 0.95302017 2000 1608 26 74 0 0 81 7 +Loop time of 3.98119 on 4 procs for 2000 steps with 188 atoms + +Performance: 217020.495 tau/day, 502.362 timesteps/s +96.2% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.050626 | 0.061127 | 0.071318 | 3.4 | 1.54 +Kspace | 1.1987 | 1.2504 | 1.288 | 3.1 | 31.41 +Neigh | 0.0056982 | 0.0063858 | 0.0069821 | 0.7 | 0.16 +Comm | 0.068302 | 0.11638 | 0.17922 | 12.8 | 2.92 +Output | 0.00055408 | 0.00092399 | 0.0020106 | 0.0 | 0.02 +Modify | 2.5399 | 2.5406 | 2.5417 | 0.0 | 63.81 +Other | | 0.005394 | | | 0.14 + +Nlocal: 47.0000 ave 55 max 42 min +Histogram: 1 0 1 1 0 0 0 0 0 1 +Nghost: 328.250 ave 335 max 317 min +Histogram: 1 0 0 0 0 1 0 0 0 2 +Neighs: 547.000 ave 659 max 466 min +Histogram: 2 0 0 0 0 0 1 0 0 1 + +Total # of neighbors = 2188 +Ave neighs/atom = 11.638298 +Neighbor list builds = 2057 +Dangerous builds = 0 +Total wall time: 0:00:04 diff --git a/examples/USER/misc/charge_regulation/log.10Feb21.chreg-polymer.g++.1 b/examples/USER/misc/charge_regulation/log.10Feb21.chreg-polymer.g++.1 new file mode 100644 index 0000000000..c386b2bed9 --- /dev/null +++ b/examples/USER/misc/charge_regulation/log.10Feb21.chreg-polymer.g++.1 @@ -0,0 +1,131 @@ +LAMMPS (10 Feb 2021) + using 1 OpenMP thread(s) per MPI task +# Charge regulation lammps for a polymer chain +units lj +atom_style full +neighbor 3.0 bin +read_data data.chreg-polymer +Reading data file ... + orthogonal box = (-50.000000 -50.000000 -50.000000) to (50.000000 50.000000 50.000000) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 160 atoms + scanning bonds ... + 1 = max bonds/atom + reading bonds ... + 79 bonds +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 2 = max # of 1-3 neighbors + 4 = max # of 1-4 neighbors + 6 = max # of special neighbors + special bonds CPU = 0.001 seconds + read_data CPU = 0.009 seconds + +bond_style harmonic +bond_coeff 1 100 1.122462 # K R0 +velocity all create 1.0 8008 loop geom + +pair_style lj/cut/coul/long 1.122462 20 +pair_coeff * * 1.0 1.0 1.122462 # charges +kspace_style pppm 1.0e-3 +pair_modify shift yes +dielectric 1.0 + +######### VERLET INTEGRATION WITH LANGEVIN THERMOSTAT ########### +fix fnve all nve +compute dtemp all temp +compute_modify dtemp dynamic yes +fix fT all langevin 1.0 1.0 1.0 123 +fix_modify fT temp dtemp + +fix chareg1 all charge/regulation 2 3 acid_type 1 pH 7.0 pKa 6.5 pIp 3.0 pIm 3.0 temp 1.0 nmc 40 seed 2345 +fix chareg2 all charge/regulation 4 5 acid_type 1 pH 7.0 pKa 6.5 pIp 7.0 pIm 7.0 temp 1.0 nmc 40 seed 2345 +fix chareg3 all charge/regulation 4 3 pIp 7.0 pIm 3.0 temp 1.0 nmc 20 seed 2345 + +thermo 100 +# print: step, potential energy, temperature, neutral acids, charged acids, salt cations, salt anions, H+ ions, OH- ions +thermo_style custom step pe c_dtemp f_chareg1[3] f_chareg1[4] f_chareg1[7] f_chareg1[8] f_chareg2[7] f_chareg2[8] + +timestep 0.005 +run 2000 +PPPM initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:339) + G vector (1/distance) = 0.077106934 + grid = 8 8 8 + stencil order = 5 + estimated absolute RMS force accuracy = 0.00074388331 + estimated relative force accuracy = 0.00074388331 + using double precision FFTW3 + 3d grid and FFT values/proc = 2197 512 +0 atoms in group FixChargeRegulation:exclusion_group:chareg1 +0 atoms in group FixChargeRegulation:exclusion_group:chareg2 +0 atoms in group FixChargeRegulation:exclusion_group:chareg3 +WARNING: Neighbor exclusions used with KSpace solver may give inconsistent Coulombic energies (src/neighbor.cpp:486) +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 23 + ghost atom cutoff = 23 + binsize = 11.5, bins = 9 9 9 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 6.962 | 6.962 | 6.962 Mbytes +Step PotEng c_dtemp f_chareg1[3] f_chareg1[4] f_chareg1[7] f_chareg1[8] f_chareg2[7] f_chareg2[8] + 0 0.50528297 1 0 80 80 0 0 0 + 100 0.61185377 0.95892928 13 67 74 7 0 0 + 200 0.54355177 1.1282424 19 61 76 15 0 0 + 300 0.4519957 1.0764688 20 60 85 26 1 0 + 400 0.41479389 0.99212685 24 56 92 36 0 0 + 500 0.37382446 0.99776674 28 52 98 46 0 0 + 600 0.34785337 1.1115081 28 52 109 57 0 0 + 700 0.34637618 1.0332262 28 52 120 68 0 0 + 800 0.21020932 1.1264036 29 51 125 74 0 0 + 900 0.21246108 1.1168609 30 50 131 81 0 0 + 1000 0.20997475 1.1201478 32 48 132 84 0 0 + 1100 0.1984165 1.0209092 31 49 144 95 0 0 + 1200 0.2061932 0.95880059 35 45 151 106 0 0 + 1300 0.17220376 0.980077 36 44 156 112 0 0 + 1400 0.15671143 0.93535342 37 43 161 118 0 0 + 1500 0.16174665 0.9495928 36 44 168 124 0 0 + 1600 0.11062965 0.94072924 40 40 164 124 0 0 + 1700 0.13002563 0.95010828 38 42 167 125 0 0 + 1800 0.14527814 0.93555342 37 43 172 129 0 0 + 1900 0.17627465 0.96682495 32 48 176 128 0 0 + 2000 0.16497265 0.95226954 33 47 180 133 0 0 +Loop time of 7.45499 on 1 procs for 2000 steps with 393 atoms + +Performance: 115895.577 tau/day, 268.277 timesteps/s +99.6% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.45607 | 0.45607 | 0.45607 | 0.0 | 6.12 +Bond | 0.0062385 | 0.0062385 | 0.0062385 | 0.0 | 0.08 +Kspace | 2.3257 | 2.3257 | 2.3257 | 0.0 | 31.20 +Neigh | 0.067103 | 0.067103 | 0.067103 | 0.0 | 0.90 +Comm | 0.02577 | 0.02577 | 0.02577 | 0.0 | 0.35 +Output | 0.00087047 | 0.00087047 | 0.00087047 | 0.0 | 0.01 +Modify | 4.5664 | 4.5664 | 4.5664 | 0.0 | 61.25 +Other | | 0.006848 | | | 0.09 + +Nlocal: 393.000 ave 393 max 393 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 749.000 ave 749 max 749 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 5359.00 ave 5359 max 5359 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 5359 +Ave neighs/atom = 13.636132 +Ave special neighs/atom = 1.1908397 +Neighbor list builds = 1489 +Dangerous builds = 0 +Total wall time: 0:00:07 diff --git a/examples/USER/misc/charge_regulation/log.10Feb21.chreg-polymer.g++.4 b/examples/USER/misc/charge_regulation/log.10Feb21.chreg-polymer.g++.4 new file mode 100644 index 0000000000..c623d3048b --- /dev/null +++ b/examples/USER/misc/charge_regulation/log.10Feb21.chreg-polymer.g++.4 @@ -0,0 +1,131 @@ +LAMMPS (10 Feb 2021) + using 1 OpenMP thread(s) per MPI task +# Charge regulation lammps for a polymer chain +units lj +atom_style full +neighbor 3.0 bin +read_data data.chreg-polymer +Reading data file ... + orthogonal box = (-50.000000 -50.000000 -50.000000) to (50.000000 50.000000 50.000000) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 160 atoms + scanning bonds ... + 1 = max bonds/atom + reading bonds ... + 79 bonds +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 2 = max # of 1-3 neighbors + 4 = max # of 1-4 neighbors + 6 = max # of special neighbors + special bonds CPU = 0.001 seconds + read_data CPU = 0.016 seconds + +bond_style harmonic +bond_coeff 1 100 1.122462 # K R0 +velocity all create 1.0 8008 loop geom + +pair_style lj/cut/coul/long 1.122462 20 +pair_coeff * * 1.0 1.0 1.122462 # charges +kspace_style pppm 1.0e-3 +pair_modify shift yes +dielectric 1.0 + +######### VERLET INTEGRATION WITH LANGEVIN THERMOSTAT ########### +fix fnve all nve +compute dtemp all temp +compute_modify dtemp dynamic yes +fix fT all langevin 1.0 1.0 1.0 123 +fix_modify fT temp dtemp + +fix chareg1 all charge/regulation 2 3 acid_type 1 pH 7.0 pKa 6.5 pIp 3.0 pIm 3.0 temp 1.0 nmc 40 seed 2345 +fix chareg2 all charge/regulation 4 5 acid_type 1 pH 7.0 pKa 6.5 pIp 7.0 pIm 7.0 temp 1.0 nmc 40 seed 2345 +fix chareg3 all charge/regulation 4 3 pIp 7.0 pIm 3.0 temp 1.0 nmc 20 seed 2345 + +thermo 100 +# print: step, potential energy, temperature, neutral acids, charged acids, salt cations, salt anions, H+ ions, OH- ions +thermo_style custom step pe c_dtemp f_chareg1[3] f_chareg1[4] f_chareg1[7] f_chareg1[8] f_chareg2[7] f_chareg2[8] + +timestep 0.005 +run 2000 +PPPM initialization ... + using 12-bit tables for long-range coulomb (src/kspace.cpp:339) + G vector (1/distance) = 0.077106934 + grid = 8 8 8 + stencil order = 5 + estimated absolute RMS force accuracy = 0.00074388331 + estimated relative force accuracy = 0.00074388331 + using double precision FFTW3 + 3d grid and FFT values/proc = 1053 128 +0 atoms in group FixChargeRegulation:exclusion_group:chareg1 +0 atoms in group FixChargeRegulation:exclusion_group:chareg2 +0 atoms in group FixChargeRegulation:exclusion_group:chareg3 +WARNING: Neighbor exclusions used with KSpace solver may give inconsistent Coulombic energies (src/neighbor.cpp:486) +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 23 + ghost atom cutoff = 23 + binsize = 11.5, bins = 9 9 9 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 6.878 | 6.935 | 6.992 Mbytes +Step PotEng c_dtemp f_chareg1[3] f_chareg1[4] f_chareg1[7] f_chareg1[8] f_chareg2[7] f_chareg2[8] + 0 0.50528297 1 0 80 80 0 0 0 + 100 0.60223729 0.89547569 13 67 75 8 0 0 + 200 0.65253636 0.87662399 18 62 78 16 0 0 + 300 0.51550501 1.0542131 22 58 84 27 1 0 + 400 0.43566766 0.94557633 26 54 90 36 0 0 + 500 0.36269507 1.0386276 31 49 94 45 0 0 + 600 0.32430641 0.99903033 27 53 111 58 0 0 + 700 0.30255299 0.91225991 28 52 121 69 0 0 + 800 0.27189951 0.9747089 28 52 127 75 0 0 + 900 0.25495247 1.0747821 28 52 135 83 0 0 + 1000 0.25950416 0.95256449 32 48 134 86 0 0 + 1100 0.22561248 1.0102255 32 48 147 99 0 0 + 1200 0.1734754 0.99475154 33 47 157 110 0 0 + 1300 0.20081084 0.99873599 36 44 160 116 0 0 + 1400 0.14240417 0.99442152 36 44 164 121 1 0 + 1500 0.15314186 0.94559876 39 41 167 126 0 0 + 1600 0.13574107 1.0484195 43 37 164 127 0 0 + 1700 0.14477789 1.0105172 42 38 166 128 0 0 + 1800 0.13493107 1.0349667 41 39 171 132 0 0 + 1900 0.14849779 0.9994329 33 47 178 131 0 0 + 2000 0.14485171 0.99739608 34 46 183 137 0 0 +Loop time of 3.18871 on 4 procs for 2000 steps with 400 atoms + +Performance: 270955.695 tau/day, 627.212 timesteps/s +94.5% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.086456 | 0.11738 | 0.18562 | 11.8 | 3.68 +Bond | 0.00099182 | 0.0018544 | 0.0030079 | 1.8 | 0.06 +Kspace | 0.77406 | 0.79354 | 0.80895 | 1.5 | 24.89 +Neigh | 0.017894 | 0.017948 | 0.018002 | 0.0 | 0.56 +Comm | 0.029044 | 0.07885 | 0.11432 | 11.3 | 2.47 +Output | 0.00054932 | 0.0009656 | 0.0021319 | 0.0 | 0.03 +Modify | 2.1676 | 2.1706 | 2.1733 | 0.2 | 68.07 +Other | | 0.007591 | | | 0.24 + +Nlocal: 100.000 ave 110 max 89 min +Histogram: 1 1 0 0 0 0 0 0 0 2 +Nghost: 415.000 ave 418 max 411 min +Histogram: 1 0 1 0 0 0 0 0 0 2 +Neighs: 1360.75 ave 1872 max 1018 min +Histogram: 1 1 0 0 1 0 0 0 0 1 + +Total # of neighbors = 5443 +Ave neighs/atom = 13.607500 +Ave special neighs/atom = 1.1700000 +Neighbor list builds = 1492 +Dangerous builds = 0 +Total wall time: 0:00:03 diff --git a/examples/USER/misc/charge_regulation/log.11Apr21.chreg-acid-real.g++.1 b/examples/USER/misc/charge_regulation/log.11Apr21.chreg-acid-real.g++.1 new file mode 100644 index 0000000000..6e50ea5ef3 --- /dev/null +++ b/examples/USER/misc/charge_regulation/log.11Apr21.chreg-acid-real.g++.1 @@ -0,0 +1,145 @@ +LAMMPS (10 Feb 2021) +# Charge regulation lammps for simple weak electrolyte + +units real +atom_style charge +neighbor 10.0 bin +read_data data.chreg-acid-real +Reading data file ... + orthogonal box = (-180.00000 -180.00000 -180.00000) to (180.00000 180.00000 180.00000) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 219 atoms + read_data CPU = 0.002 seconds + +#real units +variable sigma equal 7.2 # particle diameter 0.72 nm +variable temperature equal 298 # temperature 298 K +variable kb index 0.0019872067 # kB in Kcal/mol/K +variable epsilon equal ${kb}*${temperature} +variable epsilon equal 0.0019872067*${temperature} +variable epsilon equal 0.0019872067*298 +variable tunit equal 2000 # time unit is 2000 fs +variable timestep equal 0.005*${tunit} +variable timestep equal 0.005*2000 + +variable cut_long equal 12.5*${sigma} +variable cut_long equal 12.5*7.2 +variable nevery equal 100 +variable nmc equal 100 +variable pH equal 7.0 +variable pKa equal 6.0 +variable pIm equal 3.0 +variable pIp equal 3.0 + +variable cut_lj equal 2^(1.0/6.0)*${sigma} +variable cut_lj equal 2^(1.0/6.0)*7.2 +velocity all create ${temperature} 8008 loop geom +velocity all create 298 8008 loop geom + +pair_style lj/cut/coul/long ${cut_lj} ${cut_long} +pair_style lj/cut/coul/long 8.08172674782749 ${cut_long} +pair_style lj/cut/coul/long 8.08172674782749 90 +pair_coeff * * ${epsilon} ${sigma} +pair_coeff * * 0.5921875966 ${sigma} +pair_coeff * * 0.5921875966 7.2 +kspace_style pppm 1.0e-3 +dielectric 78 +pair_modify shift yes + +######### VERLET INTEGRATION WITH LANGEVIN THERMOSTAT ########### +fix fnve all nve +compute dtemp all temp +compute_modify dtemp dynamic yes +fix fT all langevin $(v_temperature) $(v_temperature) $(v_tunit) 123 +fix fT all langevin 298 $(v_temperature) $(v_tunit) 123 +fix fT all langevin 298 298 $(v_tunit) 123 +fix fT all langevin 298 298 2000 123 +fix_modify fT temp dtemp + +fix chareg all charge/regulation 2 3 acid_type 1 pH ${pH} pKa ${pKa} pIp ${pIp} pIm ${pIm} lunit_nm 0.1 nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa ${pKa} pIp ${pIp} pIm ${pIm} lunit_nm 0.1 nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp ${pIp} pIm ${pIm} lunit_nm 0.1 nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm ${pIm} lunit_nm 0.1 nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm 3 lunit_nm 0.1 nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm 3 lunit_nm 0.1 nevery 100 nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm 3 lunit_nm 0.1 nevery 100 nmc 100 seed 2345 tempfixid fT +thermo 100 +thermo_style custom step pe c_dtemp f_chareg[1] f_chareg[2] f_chareg[3] f_chareg[4] f_chareg[5] f_chareg[6] f_chareg[7] f_chareg[8] +timestep ${timestep} +timestep 10 +run 2000 +PPPM initialization ... + using 12-bit tables for long-range coulomb (../kspace.cpp:339) + G vector (1/distance) = 0.019408615 + grid = 8 8 8 + stencil order = 5 + estimated absolute RMS force accuracy = 0.00012527706 + estimated relative force accuracy = 3.7726815e-07 + using double precision KISS FFT + 3d grid and FFT values/proc = 2197 512 +0 atoms in group FixChargeRegulation:exclusion_group:chareg +WARNING: Neighbor exclusions used with KSpace solver may give inconsistent Coulombic energies (../neighbor.cpp:486) +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 100 + ghost atom cutoff = 100 + binsize = 50, bins = 8 8 8 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.708 | 3.708 | 3.708 Mbytes +Step PotEng c_dtemp f_chareg[1] f_chareg[2] f_chareg[3] f_chareg[4] f_chareg[5] f_chareg[6] f_chareg[7] f_chareg[8] + 0 -6.4798431 298 0 0 1 99 0 0 109 10 + 100 -6.9219668 306.44177 100 77 15 85 0 0 94 9 + 200 -6.8175255 306.64254 200 164 23 77 0 0 87 10 + 300 -5.2482381 331.67831 300 248 21 79 0 0 85 6 + 400 -7.4531538 285.3495 400 326 17 83 0 0 89 6 + 500 -6.9662528 286.2123 500 408 14 86 0 0 95 9 + 600 -6.528214 291.41762 600 492 14 86 0 0 95 9 + 700 -6.290871 271.50948 700 567 14 86 0 0 96 10 + 800 -6.4944741 300.66261 800 650 23 77 0 0 83 6 + 900 -8.0414672 305.6179 900 731 25 75 0 0 84 9 + 1000 -8.5694583 298.73349 1000 810 25 75 0 0 83 8 + 1100 -8.6677368 269.67435 1100 894 22 78 0 0 87 9 + 1200 -8.2246183 284.14886 1200 969 22 78 0 0 88 10 + 1300 -7.7674621 320.04838 1300 1040 23 77 0 0 85 8 + 1400 -9.5186335 303.48091 1400 1124 18 82 0 0 93 11 + 1500 -5.8437493 271.40712 1500 1204 25 75 0 0 83 8 + 1600 -5.9149181 268.24708 1600 1285 23 77 0 0 90 13 + 1700 -6.5047738 303.79732 1700 1369 27 73 0 0 84 11 + 1800 -7.3010139 308.98213 1800 1450 22 78 0 0 83 5 + 1900 -6.3505397 306.94357 1900 1527 22 78 0 0 86 8 + 2000 -5.7144173 287.06184 2000 1605 27 73 0 0 80 7 +Loop time of 1.17189 on 1 procs for 2000 steps with 187 atoms + +Performance: 1474.535 ns/day, 0.016 hours/ns, 1706.638 timesteps/s +99.6% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.035807 | 0.035807 | 0.035807 | 0.0 | 3.06 +Kspace | 0.37689 | 0.37689 | 0.37689 | 0.0 | 32.16 +Neigh | 0.008694 | 0.008694 | 0.008694 | 0.0 | 0.74 +Comm | 0.004793 | 0.004793 | 0.004793 | 0.0 | 0.41 +Output | 0.000746 | 0.000746 | 0.000746 | 0.0 | 0.06 +Modify | 0.74292 | 0.74292 | 0.74292 | 0.0 | 63.39 +Other | | 0.00205 | | | 0.17 + +Nlocal: 187.000 ave 187 max 187 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 437.000 ave 437 max 437 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 1500.00 ave 1500 max 1500 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 1500 +Ave neighs/atom = 8.0213904 +Neighbor list builds = 2080 +Dangerous builds = 0 +Total wall time: 0:00:01 diff --git a/examples/USER/misc/charge_regulation/log.11Apr21.chreg-acid-real.g++.4 b/examples/USER/misc/charge_regulation/log.11Apr21.chreg-acid-real.g++.4 new file mode 100644 index 0000000000..927e29c1f3 --- /dev/null +++ b/examples/USER/misc/charge_regulation/log.11Apr21.chreg-acid-real.g++.4 @@ -0,0 +1,145 @@ +LAMMPS (10 Feb 2021) +# Charge regulation lammps for simple weak electrolyte + +units real +atom_style charge +neighbor 10.0 bin +read_data data.chreg-acid-real +Reading data file ... + orthogonal box = (-180.00000 -180.00000 -180.00000) to (180.00000 180.00000 180.00000) + 1 by 2 by 2 MPI processor grid + reading atoms ... + 219 atoms + read_data CPU = 0.002 seconds + +#real units +variable sigma equal 7.2 # particle diameter 0.72 nm +variable temperature equal 298 # temperature 298 K +variable kb index 0.0019872067 # kB in Kcal/mol/K +variable epsilon equal ${kb}*${temperature} +variable epsilon equal 0.0019872067*${temperature} +variable epsilon equal 0.0019872067*298 +variable tunit equal 2000 # time unit is 2000 fs +variable timestep equal 0.005*${tunit} +variable timestep equal 0.005*2000 + +variable cut_long equal 12.5*${sigma} +variable cut_long equal 12.5*7.2 +variable nevery equal 100 +variable nmc equal 100 +variable pH equal 7.0 +variable pKa equal 6.0 +variable pIm equal 3.0 +variable pIp equal 3.0 + +variable cut_lj equal 2^(1.0/6.0)*${sigma} +variable cut_lj equal 2^(1.0/6.0)*7.2 +velocity all create ${temperature} 8008 loop geom +velocity all create 298 8008 loop geom + +pair_style lj/cut/coul/long ${cut_lj} ${cut_long} +pair_style lj/cut/coul/long 8.08172674782749 ${cut_long} +pair_style lj/cut/coul/long 8.08172674782749 90 +pair_coeff * * ${epsilon} ${sigma} +pair_coeff * * 0.5921875966 ${sigma} +pair_coeff * * 0.5921875966 7.2 +kspace_style pppm 1.0e-3 +dielectric 78 +pair_modify shift yes + +######### VERLET INTEGRATION WITH LANGEVIN THERMOSTAT ########### +fix fnve all nve +compute dtemp all temp +compute_modify dtemp dynamic yes +fix fT all langevin $(v_temperature) $(v_temperature) $(v_tunit) 123 +fix fT all langevin 298 $(v_temperature) $(v_tunit) 123 +fix fT all langevin 298 298 $(v_tunit) 123 +fix fT all langevin 298 298 2000 123 +fix_modify fT temp dtemp + +fix chareg all charge/regulation 2 3 acid_type 1 pH ${pH} pKa ${pKa} pIp ${pIp} pIm ${pIm} lunit_nm 0.1 nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa ${pKa} pIp ${pIp} pIm ${pIm} lunit_nm 0.1 nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp ${pIp} pIm ${pIm} lunit_nm 0.1 nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm ${pIm} lunit_nm 0.1 nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm 3 lunit_nm 0.1 nevery ${nevery} nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm 3 lunit_nm 0.1 nevery 100 nmc ${nmc} seed 2345 tempfixid fT +fix chareg all charge/regulation 2 3 acid_type 1 pH 7 pKa 6 pIp 3 pIm 3 lunit_nm 0.1 nevery 100 nmc 100 seed 2345 tempfixid fT +thermo 100 +thermo_style custom step pe c_dtemp f_chareg[1] f_chareg[2] f_chareg[3] f_chareg[4] f_chareg[5] f_chareg[6] f_chareg[7] f_chareg[8] +timestep ${timestep} +timestep 10 +run 2000 +PPPM initialization ... + using 12-bit tables for long-range coulomb (../kspace.cpp:339) + G vector (1/distance) = 0.019408615 + grid = 8 8 8 + stencil order = 5 + estimated absolute RMS force accuracy = 0.00012527706 + estimated relative force accuracy = 3.7726815e-07 + using double precision KISS FFT + 3d grid and FFT values/proc = 1053 128 +0 atoms in group FixChargeRegulation:exclusion_group:chareg +WARNING: Neighbor exclusions used with KSpace solver may give inconsistent Coulombic energies (../neighbor.cpp:486) +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 100 + ghost atom cutoff = 100 + binsize = 50, bins = 8 8 8 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.624 | 3.624 | 3.624 Mbytes +Step PotEng c_dtemp f_chareg[1] f_chareg[2] f_chareg[3] f_chareg[4] f_chareg[5] f_chareg[6] f_chareg[7] f_chareg[8] + 0 -6.4798431 298 0 0 1 99 0 0 109 10 + 100 -7.6327126 304.68909 100 73 15 85 0 0 94 9 + 200 -6.1699041 272.19597 200 156 24 76 0 0 87 11 + 300 -7.7876571 288.90801 300 240 20 80 0 0 87 7 + 400 -6.3239918 274.65708 400 315 16 84 0 0 90 6 + 500 -5.3978659 257.49208 500 398 15 85 0 0 93 8 + 600 -5.6433949 322.52048 600 477 18 82 0 0 90 8 + 700 -6.5351367 269.20244 700 558 18 82 0 0 91 9 + 800 -6.2093085 315.21326 800 638 24 76 0 0 83 7 + 900 -7.0795998 311.93228 900 719 28 72 0 0 82 10 + 1000 -6.4668438 281.72674 1000 796 27 73 0 0 81 8 + 1100 -6.2377994 318.48594 1100 875 25 75 0 0 84 9 + 1200 -6.6305072 304.9091 1200 950 23 77 0 0 87 10 + 1300 -5.9624552 286.05027 1300 1029 22 78 0 0 86 8 + 1400 -4.4695814 261.81053 1400 1111 20 80 0 0 90 10 + 1500 -5.6928652 293.72403 1500 1191 24 76 0 0 86 10 + 1600 -6.8715413 290.47065 1600 1275 22 78 0 0 90 12 + 1700 -6.5067505 292.74735 1700 1356 25 75 0 0 85 10 + 1800 -5.3902702 307.79012 1800 1434 22 78 0 0 83 5 + 1900 -5.1407153 318.48918 1900 1510 21 79 0 0 87 8 + 2000 -4.9514719 281.87771 2000 1589 25 75 0 0 82 7 +Loop time of 0.562889 on 4 procs for 2000 steps with 189 atoms + +Performance: 3069.876 ns/day, 0.008 hours/ns, 3553.097 timesteps/s +99.6% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.008399 | 0.010383 | 0.011765 | 1.2 | 1.84 +Kspace | 0.17501 | 0.17543 | 0.1757 | 0.1 | 31.17 +Neigh | 0.001833 | 0.0021325 | 0.002293 | 0.4 | 0.38 +Comm | 0.023099 | 0.024255 | 0.026645 | 0.9 | 4.31 +Output | 0.000465 | 0.000546 | 0.000783 | 0.0 | 0.10 +Modify | 0.3464 | 0.34669 | 0.34698 | 0.0 | 61.59 +Other | | 0.003452 | | | 0.61 + +Nlocal: 47.2500 ave 57 max 41 min +Histogram: 1 1 0 1 0 0 0 0 0 1 +Nghost: 285.750 ave 303 max 263 min +Histogram: 1 0 0 0 1 0 0 0 1 1 +Neighs: 403.500 ave 548 max 324 min +Histogram: 2 0 0 1 0 0 0 0 0 1 + +Total # of neighbors = 1614 +Ave neighs/atom = 8.5396825 +Neighbor list builds = 2081 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/USER/pace/Cu-PBE-core-rep.ace b/examples/USER/pace/Cu-PBE-core-rep.ace new file mode 120000 index 0000000000..4414592f78 --- /dev/null +++ b/examples/USER/pace/Cu-PBE-core-rep.ace @@ -0,0 +1 @@ +../../../potentials/Cu-PBE-core-rep.ace \ No newline at end of file diff --git a/examples/USER/pace/in.pace.product b/examples/USER/pace/in.pace.product new file mode 100644 index 0000000000..d70bb0f67c --- /dev/null +++ b/examples/USER/pace/in.pace.product @@ -0,0 +1,38 @@ +# simple test of fcc Cu with ACE product + +units metal +atom_style atomic + +neighbor 0.3 bin +neigh_modify every 2 delay 10 check yes + +variable a equal 3.597 +lattice fcc $a +region box block 0 4 0 4 0 4 +create_box 1 box +create_atoms 1 box + +mass 1 26.98 + +group Al type 1 + +pair_style pace product +pair_coeff * * Cu-PBE-core-rep.ace Cu + +velocity all create 300 8728 loop geom +timestep 0.0005 +fix 1 all nve + +compute eatom all pe/atom +compute energy all reduce sum c_eatom +variable delenergy equal c_energy-pe + +compute satom all stress/atom NULL +compute str all reduce sum c_satom[1] c_satom[2] c_satom[3] +variable delpress equal -(c_str[1]+c_str[2]+c_str[3])/(3*vol)-press + +thermo 10 +thermo_style custom step temp epair etotal press v_delenergy v_delpress + +run 100 + diff --git a/examples/USER/pace/in.pace.recursive b/examples/USER/pace/in.pace.recursive new file mode 100644 index 0000000000..dd655eb18d --- /dev/null +++ b/examples/USER/pace/in.pace.recursive @@ -0,0 +1,38 @@ +# simple test of fcc Cu with ACE recursive + +units metal +atom_style atomic + +neighbor 0.3 bin +neigh_modify every 2 delay 10 check yes + +variable a equal 3.597 +lattice fcc $a +region box block 0 4 0 4 0 4 +create_box 1 box +create_atoms 1 box + +mass 1 26.98 + +group Al type 1 + +pair_style pace recursive +pair_coeff * * Cu-PBE-core-rep.ace Cu + +velocity all create 300 8728 loop geom +timestep 0.0005 +fix 1 all nve + +compute eatom all pe/atom +compute energy all reduce sum c_eatom +variable delenergy equal c_energy-pe + +compute satom all stress/atom NULL +compute str all reduce sum c_satom[1] c_satom[2] c_satom[3] +variable delpress equal -(c_str[1]+c_str[2]+c_str[3])/(3*vol)-press + +thermo 10 +thermo_style custom step temp epair etotal press v_delenergy v_delpress + +run 100 + diff --git a/examples/USER/pace/log.03Feb2021.pace.product.g++.1 b/examples/USER/pace/log.03Feb2021.pace.product.g++.1 new file mode 100644 index 0000000000..01ba9c25a4 --- /dev/null +++ b/examples/USER/pace/log.03Feb2021.pace.product.g++.1 @@ -0,0 +1,108 @@ +LAMMPS (24 Dec 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +# simple test of fcc Cu with ACE product + +units metal +atom_style atomic + +neighbor 0.3 bin +neigh_modify every 2 delay 10 check yes + +variable a equal 3.597 +lattice fcc $a +lattice fcc 3.597 +Lattice spacing in x,y,z = 3.5970000 3.5970000 3.5970000 +region box block 0 4 0 4 0 4 +create_box 1 box +Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (14.388000 14.388000 14.388000) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 256 atoms + create_atoms CPU = 0.000 seconds + +mass 1 26.98 + +group Al type 1 +256 atoms in group Al + +pair_style pace product +ACE version: 2021.2.3 +Product evaluator is used +pair_coeff * * Cu-PBE-core-rep.ace Cu +Loading Cu-PBE-core-rep.ace +Total number of basis functions + Cu: 16 (r=1) 726 (r>1) +Mapping LAMMPS atom type #1(Cu) -> ACE species type #0 + +velocity all create 300 8728 loop geom +timestep 0.0005 +fix 1 all nve + +compute eatom all pe/atom +compute energy all reduce sum c_eatom +variable delenergy equal c_energy-pe + +compute satom all stress/atom NULL +compute str all reduce sum c_satom[1] c_satom[2] c_satom[3] +variable delpress equal -(c_str[1]+c_str[2]+c_str[3])/(3*vol)-press + +thermo 10 +thermo_style custom step temp epair etotal press v_delenergy v_delpress + +run 100 +Neighbor list info ... + update every 2 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 7.7 + ghost atom cutoff = 7.7 + binsize = 3.85, bins = 4 4 4 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair pace, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.036 | 4.036 | 4.036 Mbytes +Step Temp E_pair TotEng Press v_delenergy v_delpress + 0 300 -945.9873 -936.0989 45359.818 0 2.1827873e-11 + 10 280.68558 -945.35055 -936.09878 46326.919 0 2.910383e-11 + 20 228.73618 -943.63789 -936.09844 48903.598 0 -2.910383e-11 + 30 160.53661 -941.38948 -936.09798 52222.083 0 -2.910383e-11 + 40 97.732944 -939.31899 -936.09758 55176.875 0 2.1827873e-11 + 50 59.165961 -938.04759 -936.0974 56850.103 0 2.910383e-11 + 60 53.124678 -937.84857 -936.09751 56878.948 0 0 + 70 74.623347 -938.5575 -936.09782 55565.237 0 4.3655746e-11 + 80 109.4762 -939.70663 -936.09815 53665.652 0 2.910383e-11 + 90 142.02657 -940.77975 -936.09837 52001.1 0 0 + 100 161.73598 -941.42945 -936.09842 51114.997 0 1.4551915e-11 +Loop time of 11.4718 on 1 procs for 100 steps with 256 atoms + +Performance: 0.377 ns/day, 63.732 hours/ns, 8.717 timesteps/s +99.3% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 11.468 | 11.468 | 11.468 | 0.0 | 99.96 +Neigh | 0.001181 | 0.001181 | 0.001181 | 0.0 | 0.01 +Comm | 0.001207 | 0.001207 | 0.001207 | 0.0 | 0.01 +Output | 0.000876 | 0.000876 | 0.000876 | 0.0 | 0.01 +Modify | 0.000455 | 0.000455 | 0.000455 | 0.0 | 0.00 +Other | | 0.000397 | | | 0.00 + +Nlocal: 256.000 ave 256 max 256 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 2201.00 ave 2201 max 2201 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 0.00000 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 43118.0 ave 43118 max 43118 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 43118 +Ave neighs/atom = 168.42969 +Neighbor list builds = 1 +Dangerous builds = 0 + +Total wall time: 0:00:11 diff --git a/examples/USER/pace/log.03Feb2021.pace.product.g++.4 b/examples/USER/pace/log.03Feb2021.pace.product.g++.4 new file mode 100644 index 0000000000..052becb7d6 --- /dev/null +++ b/examples/USER/pace/log.03Feb2021.pace.product.g++.4 @@ -0,0 +1,108 @@ +LAMMPS (24 Dec 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +# simple test of fcc Cu with ACE product + +units metal +atom_style atomic + +neighbor 0.3 bin +neigh_modify every 2 delay 10 check yes + +variable a equal 3.597 +lattice fcc $a +lattice fcc 3.597 +Lattice spacing in x,y,z = 3.5970000 3.5970000 3.5970000 +region box block 0 4 0 4 0 4 +create_box 1 box +Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (14.388000 14.388000 14.388000) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 256 atoms + create_atoms CPU = 0.000 seconds + +mass 1 26.98 + +group Al type 1 +256 atoms in group Al + +pair_style pace product +ACE version: 2021.2.3 +Product evaluator is used +pair_coeff * * Cu-PBE-core-rep.ace Cu +Loading Cu-PBE-core-rep.ace +Total number of basis functions + Cu: 16 (r=1) 726 (r>1) +Mapping LAMMPS atom type #1(Cu) -> ACE species type #0 + +velocity all create 300 8728 loop geom +timestep 0.0005 +fix 1 all nve + +compute eatom all pe/atom +compute energy all reduce sum c_eatom +variable delenergy equal c_energy-pe + +compute satom all stress/atom NULL +compute str all reduce sum c_satom[1] c_satom[2] c_satom[3] +variable delpress equal -(c_str[1]+c_str[2]+c_str[3])/(3*vol)-press + +thermo 10 +thermo_style custom step temp epair etotal press v_delenergy v_delpress + +run 100 +Neighbor list info ... + update every 2 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 7.7 + ghost atom cutoff = 7.7 + binsize = 3.85, bins = 4 4 4 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair pace, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.005 | 4.005 | 4.005 Mbytes +Step Temp E_pair TotEng Press v_delenergy v_delpress + 0 300 -945.9873 -936.0989 45359.818 0 -1.4551915e-11 + 10 280.68558 -945.35055 -936.09878 46326.919 0 2.910383e-11 + 20 228.73618 -943.63789 -936.09844 48903.598 0 0 + 30 160.53661 -941.38948 -936.09798 52222.083 0 -2.910383e-11 + 40 97.732944 -939.31899 -936.09758 55176.875 0 2.1827873e-11 + 50 59.165961 -938.04759 -936.0974 56850.103 0 -1.4551915e-11 + 60 53.124678 -937.84857 -936.09751 56878.948 0 7.2759576e-12 + 70 74.623347 -938.5575 -936.09782 55565.237 0 0 + 80 109.4762 -939.70663 -936.09815 53665.652 0 2.1827873e-11 + 90 142.02657 -940.77975 -936.09837 52001.1 0 -1.4551915e-11 + 100 161.73598 -941.42945 -936.09842 51114.997 0 1.4551915e-11 +Loop time of 3.54317 on 4 procs for 100 steps with 256 atoms + +Performance: 1.219 ns/day, 19.684 hours/ns, 28.223 timesteps/s +98.7% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 3.1375 | 3.3058 | 3.469 | 6.5 | 93.30 +Neigh | 0.000284 | 0.00031975 | 0.000352 | 0.0 | 0.01 +Comm | 0.071607 | 0.23492 | 0.40336 | 24.6 | 6.63 +Output | 0.001189 | 0.0012315 | 0.001347 | 0.2 | 0.03 +Modify | 0.000311 | 0.00032725 | 0.000351 | 0.0 | 0.01 +Other | | 0.0005298 | | | 0.01 + +Nlocal: 64.0000 ave 71 max 57 min +Histogram: 1 0 0 0 1 1 0 0 0 1 +Nghost: 1373.00 ave 1380 max 1366 min +Histogram: 1 0 0 0 1 1 0 0 0 1 +Neighs: 0.00000 ave 0 max 0 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +FullNghs: 10779.5 ave 11978 max 9604 min +Histogram: 1 0 0 0 1 1 0 0 0 1 + +Total # of neighbors = 43118 +Ave neighs/atom = 168.42969 +Neighbor list builds = 1 +Dangerous builds = 0 + +Total wall time: 0:00:03 diff --git a/examples/USER/pace/log.03Feb2021.pace.recursive.g++.1 b/examples/USER/pace/log.03Feb2021.pace.recursive.g++.1 new file mode 100644 index 0000000000..e6de3bd5c6 --- /dev/null +++ b/examples/USER/pace/log.03Feb2021.pace.recursive.g++.1 @@ -0,0 +1,108 @@ +LAMMPS (24 Dec 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +# simple test of fcc Cu with ACE recursive + +units metal +atom_style atomic + +neighbor 0.3 bin +neigh_modify every 2 delay 10 check yes + +variable a equal 3.597 +lattice fcc $a +lattice fcc 3.597 +Lattice spacing in x,y,z = 3.5970000 3.5970000 3.5970000 +region box block 0 4 0 4 0 4 +create_box 1 box +Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (14.388000 14.388000 14.388000) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 256 atoms + create_atoms CPU = 0.000 seconds + +mass 1 26.98 + +group Al type 1 +256 atoms in group Al + +pair_style pace recursive +ACE version: 2021.2.3 +Recursive evaluator is used +pair_coeff * * Cu-PBE-core-rep.ace Cu +Loading Cu-PBE-core-rep.ace +Total number of basis functions + Cu: 16 (r=1) 726 (r>1) +Mapping LAMMPS atom type #1(Cu) -> ACE species type #0 + +velocity all create 300 8728 loop geom +timestep 0.0005 +fix 1 all nve + +compute eatom all pe/atom +compute energy all reduce sum c_eatom +variable delenergy equal c_energy-pe + +compute satom all stress/atom NULL +compute str all reduce sum c_satom[1] c_satom[2] c_satom[3] +variable delpress equal -(c_str[1]+c_str[2]+c_str[3])/(3*vol)-press + +thermo 10 +thermo_style custom step temp epair etotal press v_delenergy v_delpress + +run 100 +Neighbor list info ... + update every 2 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 7.7 + ghost atom cutoff = 7.7 + binsize = 3.85, bins = 4 4 4 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair pace, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.036 | 4.036 | 4.036 Mbytes +Step Temp E_pair TotEng Press v_delenergy v_delpress + 0 300 -945.9873 -936.0989 45359.818 0 0 + 10 280.68558 -945.35055 -936.09878 46326.919 0 5.8207661e-11 + 20 228.73618 -943.63789 -936.09844 48903.598 0 1.4551915e-11 + 30 160.53661 -941.38948 -936.09798 52222.083 0 7.2759576e-11 + 40 97.732944 -939.31899 -936.09758 55176.875 0 -5.8207661e-11 + 50 59.165961 -938.04759 -936.0974 56850.103 0 0 + 60 53.124678 -937.84857 -936.09751 56878.948 0 8.7311491e-11 + 70 74.623347 -938.5575 -936.09782 55565.237 0 -1.4551915e-11 + 80 109.4762 -939.70663 -936.09815 53665.652 0 2.1827873e-11 + 90 142.02657 -940.77975 -936.09837 52001.1 0 2.910383e-11 + 100 161.73598 -941.42945 -936.09842 51114.997 0 0 +Loop time of 9.31437 on 1 procs for 100 steps with 256 atoms + +Performance: 0.464 ns/day, 51.746 hours/ns, 10.736 timesteps/s +99.4% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 9.3103 | 9.3103 | 9.3103 | 0.0 | 99.96 +Neigh | 0.001214 | 0.001214 | 0.001214 | 0.0 | 0.01 +Comm | 0.001176 | 0.001176 | 0.001176 | 0.0 | 0.01 +Output | 0.000827 | 0.000827 | 0.000827 | 0.0 | 0.01 +Modify | 0.000479 | 0.000479 | 0.000479 | 0.0 | 0.01 +Other | | 0.000363 | | | 0.00 + +Nlocal: 256.000 ave 256 max 256 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 2201.00 ave 2201 max 2201 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 0.00000 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 43118.0 ave 43118 max 43118 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 43118 +Ave neighs/atom = 168.42969 +Neighbor list builds = 1 +Dangerous builds = 0 + +Total wall time: 0:00:09 diff --git a/examples/USER/pace/log.03Feb2021.pace.recursive.g++.4 b/examples/USER/pace/log.03Feb2021.pace.recursive.g++.4 new file mode 100644 index 0000000000..b816f8e570 --- /dev/null +++ b/examples/USER/pace/log.03Feb2021.pace.recursive.g++.4 @@ -0,0 +1,108 @@ +LAMMPS (24 Dec 2020) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:94) + using 1 OpenMP thread(s) per MPI task +# simple test of fcc Cu with ACE recursive + +units metal +atom_style atomic + +neighbor 0.3 bin +neigh_modify every 2 delay 10 check yes + +variable a equal 3.597 +lattice fcc $a +lattice fcc 3.597 +Lattice spacing in x,y,z = 3.5970000 3.5970000 3.5970000 +region box block 0 4 0 4 0 4 +create_box 1 box +Created orthogonal box = (0.0000000 0.0000000 0.0000000) to (14.388000 14.388000 14.388000) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 256 atoms + create_atoms CPU = 0.000 seconds + +mass 1 26.98 + +group Al type 1 +256 atoms in group Al + +pair_style pace recursive +ACE version: 2021.2.3 +Recursive evaluator is used +pair_coeff * * Cu-PBE-core-rep.ace Cu +Loading Cu-PBE-core-rep.ace +Total number of basis functions + Cu: 16 (r=1) 726 (r>1) +Mapping LAMMPS atom type #1(Cu) -> ACE species type #0 + +velocity all create 300 8728 loop geom +timestep 0.0005 +fix 1 all nve + +compute eatom all pe/atom +compute energy all reduce sum c_eatom +variable delenergy equal c_energy-pe + +compute satom all stress/atom NULL +compute str all reduce sum c_satom[1] c_satom[2] c_satom[3] +variable delpress equal -(c_str[1]+c_str[2]+c_str[3])/(3*vol)-press + +thermo 10 +thermo_style custom step temp epair etotal press v_delenergy v_delpress + +run 100 +Neighbor list info ... + update every 2 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 7.7 + ghost atom cutoff = 7.7 + binsize = 3.85, bins = 4 4 4 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair pace, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.005 | 4.005 | 4.005 Mbytes +Step Temp E_pair TotEng Press v_delenergy v_delpress + 0 300 -945.9873 -936.0989 45359.818 0 -5.0931703e-11 + 10 280.68558 -945.35055 -936.09878 46326.919 0 1.4551915e-11 + 20 228.73618 -943.63789 -936.09844 48903.598 0 0 + 30 160.53661 -941.38948 -936.09798 52222.083 0 -2.910383e-11 + 40 97.732944 -939.31899 -936.09758 55176.875 0 0 + 50 59.165961 -938.04759 -936.0974 56850.103 0 -2.910383e-11 + 60 53.124678 -937.84857 -936.09751 56878.948 0 1.4551915e-11 + 70 74.623347 -938.5575 -936.09782 55565.237 0 3.6379788e-11 + 80 109.4762 -939.70663 -936.09815 53665.652 0 -7.2759576e-12 + 90 142.02657 -940.77975 -936.09837 52001.1 0 -2.910383e-11 + 100 161.73598 -941.42945 -936.09842 51114.997 0 7.2759576e-12 +Loop time of 2.91339 on 4 procs for 100 steps with 256 atoms + +Performance: 1.483 ns/day, 16.185 hours/ns, 34.324 timesteps/s +98.9% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.5753 | 2.723 | 2.8656 | 6.3 | 93.46 +Neigh | 0.000308 | 0.000365 | 0.00046 | 0.0 | 0.01 +Comm | 0.045106 | 0.18792 | 0.33552 | 24.1 | 6.45 +Output | 0.001213 | 0.001259 | 0.001388 | 0.2 | 0.04 +Modify | 0.000304 | 0.00033 | 0.00037 | 0.0 | 0.01 +Other | | 0.0005595 | | | 0.02 + +Nlocal: 64.0000 ave 71 max 57 min +Histogram: 1 0 0 0 1 1 0 0 0 1 +Nghost: 1373.00 ave 1380 max 1366 min +Histogram: 1 0 0 0 1 1 0 0 0 1 +Neighs: 0.00000 ave 0 max 0 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +FullNghs: 10779.5 ave 11978 max 9604 min +Histogram: 1 0 0 0 1 1 0 0 0 1 + +Total # of neighbors = 43118 +Ave neighs/atom = 168.42969 +Neighbor list builds = 1 +Dangerous builds = 0 + +Total wall time: 0:00:03 diff --git a/examples/plugins/helloplugin.cpp b/examples/plugins/helloplugin.cpp index 11f2cfb891..f4a49c1a5a 100644 --- a/examples/plugins/helloplugin.cpp +++ b/examples/plugins/helloplugin.cpp @@ -2,16 +2,16 @@ #include "lammpsplugin.h" #include "comm.h" +#include "command.h" #include "error.h" -#include "pointers.h" #include "version.h" #include namespace LAMMPS_NS { - class Hello : protected Pointers { + class Hello : public Command { public: - Hello(class LAMMPS *lmp) : Pointers(lmp) {}; + Hello(class LAMMPS *lmp) : Command(lmp) {}; void command(int, char **); }; } @@ -25,10 +25,9 @@ void Hello::command(int argc, char **argv) utils::logmesg(lmp,fmt::format("Hello, {}!\n",argv[0])); } -static void hellocreator(LAMMPS *lmp, int argc, char **argv) +static Command *hellocreator(LAMMPS *lmp) { - Hello hello(lmp); - hello.command(argc,argv); + return new Hello(lmp); } extern "C" void lammpsplugin_init(void *lmp, void *handle, void *regfunc) @@ -39,9 +38,9 @@ extern "C" void lammpsplugin_init(void *lmp, void *handle, void *regfunc) plugin.version = LAMMPS_VERSION; plugin.style = "command"; plugin.name = "hello"; - plugin.info = "Hello world command v1.0"; + plugin.info = "Hello world command v1.1"; plugin.author = "Axel Kohlmeyer (akohlmey@gmail.com)"; - plugin.creator.v3 = (lammpsplugin_factory3 *) &hellocreator; + plugin.creator.v1 = (lammpsplugin_factory1 *) &hellocreator; plugin.handle = handle; (*register_plugin)(&plugin,lmp); } diff --git a/lib/pace/.gitignore b/lib/pace/.gitignore new file mode 100644 index 0000000000..0598083baa --- /dev/null +++ b/lib/pace/.gitignore @@ -0,0 +1,2 @@ +/src +/libpace.a diff --git a/lib/pace/Install.py b/lib/pace/Install.py new file mode 100644 index 0000000000..08bbb331bb --- /dev/null +++ b/lib/pace/Install.py @@ -0,0 +1,105 @@ +# TODO#!/usr/bin/env python + +""" +Install.py tool to download, compile, and setup the pace library +used to automate the steps described in the README file in this dir +""" + +from __future__ import print_function +import sys, os, subprocess, shutil +from argparse import ArgumentParser + +sys.path.append('..') +from install_helpers import fullpath, geturl, checkmd5sum + +# settings + +thisdir = fullpath('.') +version = 'v.2021.4.9' + +# known checksums for different PACE versions. used to validate the download. +checksums = { \ + 'v.2021.2.3.upd2' : '8fd1162724d349b930e474927197f20d', + 'v.2021.4.9' : '4db54962fbd6adcf8c18d46e1798ceb5', + } + + +parser = ArgumentParser(prog='Install.py', + description="LAMMPS library build wrapper script") + + +# help message + +HELP = """ +Syntax from src dir: make lib-pace args="-b" + or: make lib-pace args="-b -v version" +Syntax from lib dir: python Install.py -b + or: python Install.py -b -v version + +Examples: + +make lib-pace args="-b" # install default version of PACE lib +make lib-pace args="-b -v version" # install specified version of PACE lib + + +""" + +pgroup = parser.add_mutually_exclusive_group() +pgroup.add_argument("-b", "--build", action="store_true", + help="download and build base PACE library") +parser.add_argument("-v", "--version", default=version, choices=checksums.keys(), + help="set version of PACE library to download and build (default: %s)" % version) +parser.add_argument("-vv", "--verbose", action="store_true", + help="be more verbose about is happening while this script runs") + +args = parser.parse_args() + +# print help message and exit, if neither build nor path options are given +if not args.build: + parser.print_help() + sys.exit(HELP) + +buildflag = args.build + +verboseflag = args.verbose +version = args.version + + +archive_extension = "tar.gz" +url = "https://github.com/ICAMS/lammps-user-pace/archive/refs/tags/%s.%s" % (version, archive_extension) +unarchived_folder_name = "lammps-user-pace-%s"%(version) + +# download PACE tarball, unpack, build PACE +if buildflag: + + # download entire tarball + + print("Downloading pace tarball ...") + archive_filename = "%s.%s" % (version, archive_extension) + download_filename = "%s/%s" % (thisdir, archive_filename) + print("Downloading from ",url," to ",download_filename, end=" ") + geturl(url, download_filename) + print(" done") + + # verify downloaded archive integrity via md5 checksum, if known. + if version in checksums: + if not checkmd5sum(checksums[version], archive_filename): + sys.exit("Checksum for pace library does not match") + + print("Unpacking pace tarball ...") + src_folder = thisdir+"/src" + cmd = 'cd "%s"; rm -rf "%s"; tar -xvf %s; mv %s %s' % (thisdir, src_folder, archive_filename, unarchived_folder_name, src_folder) + subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True) + + # build + print("Building libpace ...") + cmd = 'make lib -j2' + txt = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True) + if verboseflag: + print(txt.decode("UTF-8")) + +# remove source files + + print("Removing pace build files and archive ...") + cmd = 'rm %s; make clean-build' % (download_filename) + subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True) \ No newline at end of file diff --git a/lib/pace/Makefile b/lib/pace/Makefile new file mode 100644 index 0000000000..c2e1892ddd --- /dev/null +++ b/lib/pace/Makefile @@ -0,0 +1,37 @@ +SHELL = /bin/sh + +# ------ FILES ------ + +SRC_FILES = $(wildcard src/USER-PACE/*.cpp) +SRC = $(filter-out src/USER-PACE/pair_pace.cpp, $(SRC_FILES)) + +# ------ DEFINITIONS ------ + +LIB = libpace.a +OBJ = $(SRC:.cpp=.o) + + +# ------ SETTINGS ------ +CXXFLAGS = -O3 -fPIC -Isrc/USER-PACE + +ARCHIVE = ar +ARCHFLAG = -rc +USRLIB = +SYSLIB = + +# ------ MAKE PROCEDURE ------ + +lib: $(OBJ) + $(ARCHIVE) $(ARFLAGS) $(LIB) $(OBJ) + +# ------ COMPILE RULES ------ + +%.o: %.cpp + $(CXX) $(CXXFLAGS) -c $< -o $@ + +# ------ CLEAN ------ +clean-all: + -rm -f *~ $(OBJ) $(LIB) + +clean-build: + -rm -f *~ $(OBJ) diff --git a/lib/pace/Makefile.lammps b/lib/pace/Makefile.lammps new file mode 100644 index 0000000000..17820716df --- /dev/null +++ b/lib/pace/Makefile.lammps @@ -0,0 +1,3 @@ +pace_SYSINC =-I../../lib/pace/src/USER-PACE +pace_SYSLIB = -L../../lib/pace/ -lpace +pace_SYSPATH = diff --git a/lib/pace/README b/lib/pace/README new file mode 100644 index 0000000000..ddc6f7f7a7 --- /dev/null +++ b/lib/pace/README @@ -0,0 +1,18 @@ +This directory contains files required to use the USER-PACE package, +which provides the pace pair style, an efficient implementation of +the Atomic Cluster Expansion potential (ACE). +ACE is a methodology for deriving a highly accurate classical potential +fit to a large archive of quantum mechanical (DFT) data. +This package was written by Yury Lysogorskiy and others +at ICAMS, the Interdisciplinary Centre for Advanced Materials Simulation, +Ruhr University Bochum, Germany, http://www.icams.de + +You can type "make lib-pace" from the src directory to see help on +how to download and build this library via make commands, or you can +do the same thing by typing "python Install.py" from within this +directory. + +More information about the USER-PACE implementation of ACE +is available here: + +https://github.com/ICAMS/lammps-user-pace diff --git a/lib/plumed/Install.py b/lib/plumed/Install.py index c11d5bfee9..e3858b39d3 100644 --- a/lib/plumed/Install.py +++ b/lib/plumed/Install.py @@ -17,7 +17,7 @@ parser = ArgumentParser(prog='Install.py', # settings -version = "2.7.0" +version = "2.7.1" mode = "static" # help message @@ -47,9 +47,12 @@ checksums = { \ '2.5.2' : 'bd2f18346c788eb54e1e52f4f6acf41a', \ '2.5.3' : 'de30d6e7c2dcc0973298e24a6da24286', \ '2.5.4' : 'f31b7d16a4be2e30aa7d5c19c3d37853', \ + '2.5.7' : '1ca36226fdb8110b1009aa61d615d4e5', \ '2.6.0' : '204d2edae58d9b10ba3ad460cad64191', \ '2.6.1' : '89a9a450fc6025299fe16af235957163', \ + '2.6.3' : 'a9f8028fd74528c2024781ea1fdefeee', \ '2.7.0' : '95f29dd0c067577f11972ff90dfc7d12', \ + '2.7.1' : '4eac6a462ec84dfe0cec96c82421b8e8', \ } # parse and process arguments diff --git a/potentials/Cu-PBE-core-rep.ace b/potentials/Cu-PBE-core-rep.ace new file mode 100644 index 0000000000..511bb9af7f --- /dev/null +++ b/potentials/Cu-PBE-core-rep.ace @@ -0,0 +1,8982 @@ +# DATE: 2021-04-08 UNITS: metal CONTRIBUTOR: Yury Lysogorskiy CITATION: npj Comp. Mat., submitted (2021) + +nelements=1 +elements: Cu + +lmax=6 + +embedding-function: FinnisSinclairShiftedScaled +4 FS parameters: 1.000000 1.000000 1.000000 0.500000 +core energy-cutoff parameters: 100000.000000000000000000 250.000000000000000000 +E0: 0.000000000000000000 + +radbasename=ChebPow +nradbase=16 +nradmax=5 +cutoffmax=7.400000 +deltaSplineBins=0.001000 +core repulsion parameters: 400.000000000000000000 7.000000000000000000 +radparameter= 2.000000000000000000 +cutoff= 7.400000000000000355 +dcut= 0.010000000000000000 +crad= 1.620882954168367363 1.226870698977090335 0.999546737553742348 1.448717152469839231 0.789126334259324436 0.990815368777163696 1.019809595831713933 + -0.010015984641177847 0.177152406295798537 -0.099297777289971231 0.173787043169736394 -0.226947223064932313 -0.058969556614429458 0.008323578427593646 + 0.037392073193535026 0.101922365253167557 0.446201407295113706 -0.369069422111282963 -0.101863282196291566 -0.029626931322193999 0.097875222496131745 + 0.002819311425100959 0.000151479194773449 -0.214871024239485592 -0.069350620490777212 0.231426164941363366 -0.026191321598537990 -0.242936254601765322 + 0.186424171366563085 -0.103524085445276359 0.830521273247123437 0.062832162628560284 -0.106558674195482483 -0.060269761337715569 0.046046279743879009 + 1.089304926077264701 0.177165429291873872 0.040767337435711030 0.207716881111047691 -0.085636392006336770 0.046112979588318073 0.078517835329897867 + 1.129288955740465283 1.283253876185540099 1.270328483265826813 1.302687308336752281 0.783473148483047943 1.064176625568968637 1.118800783955553158 + 0.034683824293293135 0.166087484219912207 0.546218802681498805 -0.211429048936371933 -0.108993988729734884 -0.212659494092938856 -0.036191223132020688 + 0.234655107931153573 0.156894718007277223 0.048936621328313876 -0.162183357659622718 0.307926217468614039 -0.083635563001107333 -0.190353036639087092 + 0.329164314982446249 -0.116372429560617760 1.123321061290994516 0.035933724713058841 -0.121370009888348923 -0.109059319819502371 -0.046270850004972844 + 0.108676366969885460 -0.180439291176837630 0.383342539875913824 -0.621209999725314210 0.385861319212343623 0.152252507630111139 0.149457142460434372 + 0.330958073121243090 -0.158282686680629170 0.518958273372971735 0.067226874856217825 0.206572443953436963 0.339537052357791691 0.158596210584529440 + 1.111506419459131090 0.957689150469036465 0.902367027195451810 1.304322975666854845 1.089903020096729014 0.640922035675120738 0.852402336400111094 + 0.311659366422990858 0.407722114498847987 0.545357078699712172 -0.047688798410163040 -0.202317109106842585 -0.073290520019455838 0.228458278553162836 + 0.016478777869119634 0.119519275288016646 -0.105703783821920971 -0.168081439248992437 -0.084202740091545075 -0.057979361619927096 -0.178261149665524310 + -0.614150422523331962 -0.113461629368103653 0.467772160304797735 0.043087231016849081 0.026751930571205659 0.095990676140457337 0.108807286772020978 + 0.194153732515313149 -0.438554540631357515 -0.157353675556007294 -0.196717245341016089 0.051481657072597040 0.246337180836969150 0.081532474873181965 + 0.152006625631538272 -0.052929673773957256 -0.281471510782792256 -0.383762521867106021 0.009965087491552352 -0.211125042490682313 0.219840794494771730 + 0.704490118902931228 1.210078321428047499 0.908865477162489666 0.964021705530207051 0.450293727333551608 1.056627264682903355 1.036709129269184348 + -0.266388684620139204 0.119181785240976085 -0.508517138281119108 -0.105337098339662927 -0.414055390436296855 -0.006568085386914734 -0.008489695366700342 + 0.009311394124494344 -0.099540617340626705 -0.220138090092576039 0.394717776767940565 -0.399661065152255024 -0.054875482424368613 0.087928207583678072 + -0.200476767128879518 0.054334966747964966 -0.215670764334545295 -0.202435906588276288 -0.374669531151026636 0.080145301631041707 0.139272393452873761 + -0.228221777484558963 0.172333233925270862 -0.224387778758770889 -0.564483491180480801 -0.298745938717995319 -0.259629429961615532 0.108686444970415394 + -0.483517031721824420 -0.282846852149469419 -0.625693461166449194 -0.387653192284443615 -0.369381863863073201 0.099516220004199393 -0.162958290590200922 + 0.843113306239999361 0.970201274626998567 0.497935134368538423 1.238080061977394619 0.548287703792778025 1.005350365417147840 0.978841498999161952 + 0.161892884869938802 -0.057335972877138500 -0.287116420859928667 -0.431089456562013029 0.091551903183807848 0.009439015631080828 0.268379617567215512 + -0.313867847114206122 0.243338557259537763 0.109264771609771119 -0.009666213846503660 -0.133516151120714938 0.183542158157167595 0.006005890571908578 + -0.275733732828145839 -0.128502017574031319 -0.073686803430467171 0.308342699434350775 -0.206556802250618482 -0.701080266495170523 -0.286168309771043461 + 0.119676675371723718 -0.265827473160971328 -0.138936457944444508 -0.260613135771113114 -0.122074823420990297 -0.103261598427067697 0.101997949329349455 + -0.157897581669569576 0.350345541041593489 -0.933992118802804527 0.147922763127684820 0.356569853133460291 -0.081578094144895641 -0.338456352936399141 + -0.203760900854131732 0.189503004819520010 0.235745748801731325 0.004064475912380798 0.215067145132773530 0.117105245708646361 0.111489983723870631 + 0.101650818608736676 -0.167934753188295732 -0.139505609630948518 0.100135735837952627 0.207615321477888276 -0.078360547689259985 -0.116477991952193133 + 0.178361429240386588 -0.246847445837075324 0.143897039260075771 0.044934626106912463 0.118578224500244023 -0.719942102233247505 0.073637722061881336 + 0.024025247854341104 0.001534080809538862 0.094065987917264698 0.240346270826002351 0.098969119363074953 -0.244637392429236766 0.096073383164608006 + -0.304219743047226709 0.539609038640176175 -0.132850069068995102 -0.299368028571179834 0.746390925347525602 -0.232536767925996535 -0.108103436794605989 + 0.195979815142720420 -0.040816048069926517 -0.044677154389707881 0.433473455733551616 -0.201417732045534481 -0.109853989934706436 -0.195696892388067839 + 0.252310364976787271 -0.021898887380862420 0.067719939949285227 -0.017567269073639431 0.022537126215898290 -0.529276494508221229 0.272475503821669407 + -0.016626743795124868 0.284841765436517957 -0.079759939497546326 -0.328099876823462200 0.055122957831866798 -0.189781205812279585 0.365248408266040103 + -0.329763357459598394 0.010673557058247799 -0.017801755801789724 -0.039803492471327410 0.249452633918018529 -0.048044948752604191 0.159824465245292396 + -0.131392669230931763 -0.361557435802961957 0.742274013004291744 -0.252379926701268686 -0.110472709032232691 -0.111902522072616598 0.417101605249653729 + 0.067609831656761807 -0.091801646917712573 -0.091634912786787426 -0.434385245328863356 0.024595602536191159 -0.289945821375914847 0.288303924123883670 + -0.222102655505146879 0.197355553496445846 0.119137466964190517 -0.042193758741101241 -0.122199312294347676 -0.128163957018649854 0.282954745760183590 + -0.204869687909700199 0.000000621334072530 0.032919899102939618 0.322373316219983164 -0.077448878302233126 0.132826673866245498 0.151351269017551887 + 0.154359198134425391 0.079067208002472550 0.058020078782584084 -0.232041484505397327 -0.026740685821034973 0.148256901236103134 0.424170596945284806 + 0.076066132728142583 -0.832551883078829325 -0.098299542749259339 0.077287366905066629 -0.744292521475131585 0.211880016794529641 0.170541270652513594 + -0.301235289725240885 0.124854406668055681 0.181148870342708240 0.020790964162366463 0.092737682517404635 0.037519961016909541 0.327465533485634563 + -0.057351161899013424 -0.172723703275453028 -0.191045047691164482 0.064598438230230093 0.038530117310918668 0.367171594126136536 -0.035108818230914815 + 0.222822360258921021 -0.277052912363094761 0.128622927261680037 0.042894401860175763 0.089121765389491847 0.326364329820108379 0.030774994290021802 + 0.111545057922890795 -0.034316594853320039 0.022312383003994508 0.289389743851779624 -0.246524961296611334 0.028561066177931277 -0.070048339030033088 + 0.045575326010860895 0.109780971670271690 -0.338626089720981571 0.024597569064119484 -0.142385603670319966 0.090150826060666198 -0.372899644372851724 + 0.291392634005350593 -0.121181025017044364 -0.167594681733613610 0.418058936918965562 -0.161438428637826009 0.250892543119877354 -0.553531220726090512 + 0.280439932760923050 -0.045161340984994365 0.145378000975044303 -0.032786294274536824 0.054876462308243001 -0.092595253604733418 0.096974220050406124 + -0.037062175032763989 0.281880298116827188 -0.283327757130565294 -0.328329927335834160 0.016267612428127076 0.466711025996532913 -0.136943959907595614 + -0.202699957735178654 -0.155744585760218823 -0.064691184011394204 -0.010011506674438368 0.123909262044762644 -0.157356236508212094 -0.581020771631760469 + -0.013864148398799264 0.589523162717231486 0.210130906014073165 -0.041132265159346544 0.427080437934189927 -0.370839207978565399 -0.228221803399244971 + -0.117316390211942637 0.105828808341833114 0.064732613180985069 -0.570746814954502524 0.173615222749272019 -0.039156497506634864 0.047129546703413218 + -0.296820240442319583 0.215985098466458941 -0.101180811783609007 -0.050727672473374119 -0.062868935459046468 -0.149766104907457120 -0.187737339165467587 + -0.135395947527593125 -0.178526515064528601 0.254279030910830595 0.324458118192411549 -0.131019927336322617 -0.090644759580875284 -0.048175899295618413 + 0.201186098632202576 0.214678921747854301 -0.046817091358603936 -0.311321078952362162 0.141123812750895999 -0.224280305518061496 0.061785358391432607 + -0.039718453214003191 -0.100313138160843709 -0.163755261758446430 0.078958079832196743 0.091597172971250335 -0.246955473616377569 0.210137425898705849 + -0.020928587901441802 -0.073463934758673452 0.040369959448086516 0.438404350385290353 -0.102882684652787021 -0.033081564618892306 0.536459552888738367 + 0.192269484941590685 -0.199849387314510074 0.110717599113859783 0.096893820038588277 0.042154418198533598 0.344356250511964890 0.033227584485695669 + 0.189281310257760876 0.115753002295463162 -0.094886206077761825 -0.184153223554636647 0.144584955795100834 -0.428848345913688311 0.041529544188303000 + -0.145976206197570624 -0.109411578701642934 0.157497794094985794 0.398664417382644687 -0.263204907220635942 -0.039370507864295204 0.666124702411733827 + 0.045657200117720939 -0.388985180138902376 0.209263790100419456 0.009217586427354594 -0.222024958874212308 0.293022315296286473 0.238898724595455747 + 0.062538013377883533 0.043324296533199559 -0.072995962506026496 -0.218020871314228537 0.016363481173287529 -0.008814551087371419 -0.445713189829081147 + -0.073147111207916560 0.097837425665409233 -0.101164665007458840 -0.070972762713574389 -0.023635867292054968 -0.287102674234959554 0.144903701346548480 + -0.138848347980535664 -0.074476951705818389 -0.014043298678579744 0.063802121083298080 -0.044508765572264831 0.346111987264413556 0.209412636105885702 + 0.065988699465650127 0.002844488967674905 -0.158349167897939014 -0.273829200679602536 0.233300763084839324 0.524562168896331227 -0.276941619014999640 + -0.040552715767521105 0.358034042258507434 -0.159809355884827337 -0.055779306211808273 -0.058012898049283036 0.123150329617385132 0.010088304079376876 + -0.038896344296986941 -0.021291676374172713 0.034045094204886668 0.065680845722403555 0.016175406450344553 -0.229426985066826100 0.071928878705798727 + 0.014301163554659121 -0.019742156450417429 0.041229485842464615 0.035107543236686287 0.006577466522553385 -0.028686735753756000 -0.339081583859915991 + 0.063078713153799190 0.047182339952238382 0.019205029655248076 -0.004228530388563512 -0.028004312224389732 0.069422621338731616 -0.331160190510054020 + -0.012659008117644029 0.041636123832886486 0.075120638944337390 0.115783439976586952 -0.123485973005787786 -0.095468155539712010 -0.053812815477012638 + 0.024864000159051606 -0.091130995649244775 0.098067123627009894 0.012070150960164505 0.172024706838292490 0.101558372742640429 -0.100147846163164009 + 0.008829229120333874 0.006405635890914630 -0.000254252635758890 -0.009011737939159836 -0.004752296253587464 0.079792557189286267 0.118552883972912901 + -0.003635605667191180 -0.001002425952287890 -0.000649194473260929 -0.011404466728970108 0.006901342169003619 0.034016193177316904 0.278783128764508614 + -0.017744804165672218 -0.016847357300988471 0.000912070777251806 -0.003869343607930638 0.023830639783322036 -0.127167731719168647 0.285890261660589728 + -0.002679566245452475 -0.022073307923849178 -0.008876564594146853 -0.022914399060255677 0.035103058565932314 0.055453820008897800 0.241028402897824484 + -0.008521518382250752 -0.021652682943862276 -0.028772707427434475 0.007188333511621093 -0.103543186820726829 0.006757566326101306 0.136511555349044217 + +rankmax=6 +ndensitymax=2 + +num_c_tilde_max=742 +num_ms_combinations_max=43 +total_basis_size_rank1: 16 +ctilde_basis_func: rank=1 ndens=2 mu0=0 mu=( 0 ) +n=( 1 ) +l=( 0 ) +num_ms=1 +< 0 >: 21.470762535743872945 -13.793209621753947047 +ctilde_basis_func: rank=1 ndens=2 mu0=0 mu=( 0 ) +n=( 2 ) +l=( 0 ) +num_ms=1 +< 0 >: 2.104801676125194643 -8.820703455800842363 +ctilde_basis_func: rank=1 ndens=2 mu0=0 mu=( 0 ) +n=( 3 ) +l=( 0 ) +num_ms=1 +< 0 >: -19.863946793243037803 14.722042315042330074 +ctilde_basis_func: rank=1 ndens=2 mu0=0 mu=( 0 ) +n=( 4 ) +l=( 0 ) +num_ms=1 +< 0 >: 18.431266327113892345 -3.178188891777359526 +ctilde_basis_func: rank=1 ndens=2 mu0=0 mu=( 0 ) +n=( 5 ) +l=( 0 ) +num_ms=1 +< 0 >: -2.555646585840716689 -11.500658249153314472 +ctilde_basis_func: rank=1 ndens=2 mu0=0 mu=( 0 ) +n=( 6 ) +l=( 0 ) +num_ms=1 +< 0 >: -12.337994092080041497 13.955310823988369862 +ctilde_basis_func: rank=1 ndens=2 mu0=0 mu=( 0 ) +n=( 7 ) +l=( 0 ) +num_ms=1 +< 0 >: 16.321023276924805145 -1.316684071539170109 +ctilde_basis_func: rank=1 ndens=2 mu0=0 mu=( 0 ) +n=( 8 ) +l=( 0 ) +num_ms=1 +< 0 >: -10.622911593436542788 -12.815946383819756704 +ctilde_basis_func: rank=1 ndens=2 mu0=0 mu=( 0 ) +n=( 9 ) +l=( 0 ) +num_ms=1 +< 0 >: 2.405909881352659596 14.563815776076941333 +ctilde_basis_func: rank=1 ndens=2 mu0=0 mu=( 0 ) +n=( 10 ) +l=( 0 ) +num_ms=1 +< 0 >: 2.848724496673481266 -3.833614026162156740 +ctilde_basis_func: rank=1 ndens=2 mu0=0 mu=( 0 ) +n=( 11 ) +l=( 0 ) +num_ms=1 +< 0 >: -4.037154587884821844 -9.045251135935824749 +ctilde_basis_func: rank=1 ndens=2 mu0=0 mu=( 0 ) +n=( 12 ) +l=( 0 ) +num_ms=1 +< 0 >: 2.906894963960199529 14.840216345844389423 +ctilde_basis_func: rank=1 ndens=2 mu0=0 mu=( 0 ) +n=( 13 ) +l=( 0 ) +num_ms=1 +< 0 >: -1.442545132794496698 -12.437798929121386848 +ctilde_basis_func: rank=1 ndens=2 mu0=0 mu=( 0 ) +n=( 14 ) +l=( 0 ) +num_ms=1 +< 0 >: 0.526838604830681234 6.670020535134621120 +ctilde_basis_func: rank=1 ndens=2 mu0=0 mu=( 0 ) +n=( 15 ) +l=( 0 ) +num_ms=1 +< 0 >: -0.138466706086830982 -2.209524140381979862 +ctilde_basis_func: rank=1 ndens=2 mu0=0 mu=( 0 ) +n=( 16 ) +l=( 0 ) +num_ms=1 +< 0 >: 0.021753609992975927 0.347647438597837033 +total_basis_size: 726 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 1 1 ) +l=( 0 0 ) +num_ms=1 +< 0 0 >: 0.276073421846033618 0.943638110319304224 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 1 1 ) +l=( 1 1 ) +num_ms=2 +< 0 0 >: -0.114991763852642592 -0.163038264609165984 +< 1 -1 >: 0.229983527705285129 0.326076529218331912 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 1 1 ) +l=( 2 2 ) +num_ms=3 +< 0 0 >: 0.150603037137131079 0.200814698064905317 +< 1 -1 >: -0.301206074274262214 -0.401629396129810690 +< 2 -2 >: 0.301206074274262270 0.401629396129810801 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 1 1 ) +l=( 3 3 ) +num_ms=4 +< 0 0 >: -0.040544295625458825 0.273558633659413464 +< 1 -1 >: 0.081088591250917649 -0.547117267318826928 +< 2 -2 >: -0.081088591250917635 0.547117267318826817 +< 3 -3 >: 0.081088591250917635 -0.547117267318826817 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 1 1 ) +l=( 4 4 ) +num_ms=5 +< 0 0 >: 0.007486283689304846 -0.103146896489077697 +< 1 -1 >: -0.014972567378609686 0.206293792978155338 +< 2 -2 >: 0.014972567378609686 -0.206293792978155338 +< 3 -3 >: -0.014972567378609686 0.206293792978155338 +< 4 -4 >: 0.014972567378609688 -0.206293792978155366 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 1 1 ) +l=( 5 5 ) +num_ms=6 +< 0 0 >: 0.004496650457917946 -0.071564261184607722 +< 1 -1 >: -0.008993300915835892 0.143128522369215444 +< 2 -2 >: 0.008993300915835894 -0.143128522369215472 +< 3 -3 >: -0.008993300915835896 0.143128522369215500 +< 4 -4 >: 0.008993300915835894 -0.143128522369215472 +< 5 -5 >: -0.008993300915835884 0.143128522369215305 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 1 1 ) +l=( 6 6 ) +num_ms=7 +< 0 0 >: -0.018933070506297011 0.044295980593250135 +< 1 -1 >: 0.037866141012594036 -0.088591961186500284 +< 2 -2 >: -0.037866141012594015 0.088591961186500257 +< 3 -3 >: 0.037866141012594036 -0.088591961186500284 +< 4 -4 >: -0.037866141012594008 0.088591961186500243 +< 5 -5 >: 0.037866141012594015 -0.088591961186500257 +< 6 -6 >: -0.037866141012593994 0.088591961186500201 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 1 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: -0.009469793779863284 -0.308610971550766999 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 1 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.056736899711583730 0.409170451739158947 +< 1 -1 0 >: -0.113473799423167446 -0.818340903478317783 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 1 ) +l=( 1 1 2 ) +num_ms=4 +< -1 -1 2 >: 0.167410082246193581 -0.177991034261680253 +< -1 0 1 >: -0.236753608790562287 0.251717334633682455 +< -1 1 0 >: 0.068344879883423221 -0.072664535455225832 +< 0 0 0 >: 0.068344879883423235 -0.072664535455225832 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 1 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.032161204572764113 0.105304782790813747 +< 1 -1 0 >: 0.064322409145528225 -0.210609565581627523 +< 2 -2 0 >: -0.064322409145528239 0.210609565581627578 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 1 ) +l=( 2 2 2 ) +num_ms=5 +< -2 0 2 >: 0.135349476741624480 -0.243550057913533124 +< -2 1 1 >: -0.110512384989893159 0.198857789571149440 +< -1 -1 2 >: -0.055256192494946579 0.099428894785574720 +< -1 0 1 >: 0.067674738370812226 -0.121775028956766521 +< 0 0 0 >: -0.022558246123604072 0.040591676318922174 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 1 ) +l=( 2 2 4 ) +num_ms=9 +< -2 -2 4 >: 0.175670129498521982 -0.157245599186258633 +< -2 -1 3 >: -0.248435079640647760 0.222378858992690720 +< -2 0 2 >: 0.162638936819378604 -0.145581136327416566 +< -2 1 1 >: -0.093899633953382800 0.084051308247565570 +< -2 2 0 >: 0.020996596458211125 -0.018794443883934534 +< -1 -1 2 >: 0.132794135838743138 -0.118866500058908836 +< -1 0 1 >: -0.230006190219906204 0.205882817419919012 +< -1 1 0 >: 0.083986385832844512 -0.075177775535738151 +< 0 0 0 >: 0.062989789374633370 -0.056383331651803599 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 1 ) +l=( 2 3 3 ) +num_ms=12 +< -2 -1 3 >: 0.054516667380390550 0.043115393457091603 +< -2 0 2 >: -0.154196420769462494 -0.121948748348142344 +< -2 1 1 >: 0.084456857941992702 0.066794080329798416 +< -1 -2 3 >: -0.086198419681919602 -0.068171422769365331 +< -1 -1 2 >: 0.066769008779494474 0.052805357014603420 +< -1 0 1 >: -0.048761189667719473 -0.038563580258682603 +< 0 -3 3 >: 0.086198419681919589 0.068171422769365317 +< 0 -1 1 >: -0.051719051809151741 -0.040902853661619186 +< 0 0 0 >: 0.034479367872767841 0.027268569107746131 +< 1 -3 2 >: -0.086198419681919602 -0.068171422769365331 +< 1 -2 1 >: 0.066769008779494474 0.052805357014603420 +< 2 -3 1 >: 0.054516667380390550 0.043115393457091603 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 1 ) +l=( 2 4 4 ) +num_ms=18 +< -2 -2 4 >: -0.015736892091809770 -0.086212663677825471 +< -2 -1 3 >: 0.023605338137714659 0.129318995516738228 +< -2 0 2 >: -0.056427550950417620 -0.309131526343983332 +< -2 1 1 >: 0.029739930631419775 0.162926619968555231 +< -1 -3 4 >: 0.029441029270092230 0.161289124941796591 +< -1 -2 3 >: -0.027819157782299098 -0.152403897776863834 +< -1 -1 2 >: 0.018926375959344998 0.103685866034012072 +< -1 0 1 >: -0.013300101307596568 -0.072862999518792812 +< 0 -4 4 >: -0.033995572348614785 -0.186240639405010788 +< 0 -3 3 >: 0.008498893087153693 0.046560159851252683 +< 0 -2 2 >: 0.009713020671032798 0.053211611258574529 +< 0 -1 1 >: -0.020640168925944686 -0.113074673924470834 +< 0 0 0 >: 0.012141275838790995 0.066514514073218151 +< 1 -4 3 >: 0.029441029270092230 0.161289124941796591 +< 1 -3 2 >: -0.027819157782299098 -0.152403897776863834 +< 1 -2 1 >: 0.018926375959344998 0.103685866034012072 +< 2 -4 2 >: -0.015736892091809770 -0.086212663677825471 +< 2 -3 1 >: 0.023605338137714659 0.129318995516738228 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 1 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.044004529005274344 -0.043258843809945630 +< 0 1 -1 >: 0.050812053333515649 -0.049951010237008146 +< 1 -2 1 >: -0.029336352670182884 0.028839229206630408 +< 1 -1 0 >: -0.082975735633465622 0.081569658144806031 +< 1 0 -1 >: -0.071859094956282871 0.070641396131414236 +< 2 -2 0 >: 0.065598078782436411 -0.064486476924722938 +< 2 -1 -1 >: 0.092769692679740334 -0.091197650256602814 +< 3 -2 -1 >: -0.113619205330085807 0.111693854434738116 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 1 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.016229403465369892 -0.004224252258146830 +< 1 -1 0 >: 0.032458806930739784 0.008448504516293660 +< 2 -2 0 >: -0.032458806930739784 -0.008448504516293658 +< 3 -3 0 >: 0.032458806930739784 0.008448504516293658 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 1 ) +l=( 3 3 4 ) +num_ms=14 +< -3 -1 4 >: -0.025466777895254464 -0.021246082021809758 +< -3 0 3 >: 0.031190305618081587 0.026021029993376542 +< -3 1 2 >: -0.028876611859268674 -0.024090792584652430 +< -3 2 1 >: 0.021523355692400440 0.017956216617043556 +< -3 3 0 >: -0.005894413712967474 -0.004917512444301930 +< -2 -2 4 >: 0.016438734444980615 0.013714286973770995 +< -2 -1 3 >: -0.014703251073217575 -0.012266431174516730 +< -2 0 2 >: -0.006806282687793583 -0.005678254266922107 +< -2 1 1 >: 0.022229226173644138 0.018545100778320688 +< -2 2 0 >: -0.013753631996924105 -0.011474195703371170 +< -1 -1 2 >: 0.012426515202871462 0.010367026497477330 +< -1 0 1 >: -0.015219310763986433 -0.012696962534366068 +< -1 1 0 >: -0.001964804570989159 -0.001639170814767311 +< 0 0 0 >: 0.005894413712967474 0.004917512444301930 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 1 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.006148466217365900 -0.087978083276143981 +< 0 1 -1 >: -0.007530302466643330 -0.107750706287319475 +< 1 -2 1 >: 0.005324727938549284 0.076191255093403562 +< 1 -1 0 >: 0.011906453632288523 0.170368825679877489 +< 1 0 -1 >: 0.009721578681738081 0.139105563664291693 +< 2 -3 1 >: -0.003074233108682951 -0.043989041638071998 +< 2 -2 0 >: -0.010649455877098571 -0.152382510186807180 +< 2 -1 -1 >: -0.011906453632288524 -0.170368825679877489 +< 3 -3 0 >: 0.008133656277816087 0.116384064586403838 +< 3 -2 -1 >: 0.014087905924479028 0.201583113055029212 +< 4 -3 -1 >: -0.016267312555632178 -0.232768129172807758 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 1 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.004198863556308038 0.004005914088795745 +< 1 -1 0 >: -0.008397727112616072 -0.008011828177591487 +< 2 -2 0 >: 0.008397727112616072 0.008011828177591487 +< 3 -3 0 >: -0.008397727112616072 -0.008011828177591487 +< 4 -4 0 >: 0.008397727112616073 0.008011828177591489 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 1 ) +l=( 4 4 4 ) +num_ms=13 +< -4 0 4 >: 0.028164648121169828 -0.080250909154112107 +< -4 1 3 >: -0.059376291706719105 0.169183771484167189 +< -4 2 2 >: 0.033663193206258352 -0.095918182546090164 +< -3 -1 4 >: -0.029688145853359542 0.084591885742083567 +< -3 0 3 >: 0.042246972181754744 -0.120376363731168168 +< -3 1 2 >: -0.022442128804172231 0.063945455030726767 +< -2 -2 4 >: 0.016831596603129172 -0.047959091273045075 +< -2 -1 3 >: -0.011221064402086115 0.031972727515363383 +< -2 0 2 >: -0.022129366380919148 0.063054285763945214 +< -2 1 1 >: 0.025446982160022474 -0.072507330636071662 +< -1 -1 2 >: 0.012723491080011237 -0.036253665318035831 +< -1 0 1 >: -0.018105845220752034 0.051589870170500644 +< 0 0 0 >: 0.006035281740250679 -0.017196623390166886 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 1 1 ) +l=( 0 0 0 0 ) +num_ms=1 +< 0 0 0 0 >: 0.000138481844165009 0.013689058093833308 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 1 1 ) +l=( 0 1 1 2 ) +num_ms=4 +< 0 -1 -1 2 >: -0.002584242887631366 -0.243495540854912540 +< 0 -1 0 1 >: 0.003654671340154488 0.344354696254389359 +< 0 -1 1 0 >: -0.001055012741018902 -0.099406638289591731 +< 0 0 0 0 >: -0.001055012741018902 -0.099406638289591745 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 1 1 ) +l=( 0 2 2 2 ) +num_ms=5 +< 0 -2 0 2 >: 0.002987041467627661 -0.272724527006854289 +< 0 -2 1 1 >: -0.002438909145407322 0.222678643836227763 +< 0 -1 -1 2 >: -0.001219454572703661 0.111339321918113882 +< 0 -1 0 1 >: 0.001493520733813830 -0.136362263503427089 +< 0 0 0 0 >: -0.000497840244604610 0.045454087834475694 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 1 1 ) +l=( 1 1 0 0 ) +num_ms=2 +< 0 0 0 0 >: -0.001037016851645970 -0.059980506805764756 +< 1 -1 0 0 >: 0.002074033703291940 0.119961013611529499 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 1 1 ) +l=( 1 1 1 1 ) +num_ms=3 +< -1 -1 1 1 >: 0.008589960551968066 0.137705095105858571 +< -1 0 0 1 >: -0.008589960551968067 -0.137705095105858599 +< 0 0 0 0 >: 0.002147490137992017 0.034426273776464664 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 1 1 ) +l=( 1 1 2 2 ) +num_ms=11 +< -1 -1 0 2 >: -0.005958717238765831 0.150281030317797659 +< -1 -1 1 1 >: 0.003648954189125550 -0.092027960574583262 +< -1 0 -1 2 >: 0.005160400502739472 -0.130147189962112136 +< -1 0 0 1 >: -0.004213449366704498 0.106264735621415807 +< -1 1 -2 2 >: -0.002023210051568463 -0.170081554018195052 +< -1 1 -1 1 >: -0.001625744137557086 0.262109514592778259 +< -1 1 0 0 >: 0.001421031100299468 -0.146392750725486326 +< 0 0 -2 2 >: -0.002637349163341318 0.177068737583680802 +< 0 0 -1 1 >: -0.001011605025784232 -0.085040777009097540 +< 0 0 0 0 >: 0.001113961544413041 0.027182395075451553 +< 0 1 -2 1 >: 0.005160400502739472 -0.130147189962112136 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 1 1 ) +l=( 2 2 0 0 ) +num_ms=3 +< 0 0 0 0 >: -0.000252427805362054 -0.010361628612788434 +< 1 -1 0 0 >: 0.000504855610724107 0.020723257225576868 +< 2 -2 0 0 >: -0.000504855610724107 -0.020723257225576875 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 1 1 ) +l=( 2 2 2 2 ) +num_ms=6 +< -2 -2 2 2 >: 0.001241037853319114 0.015089372462838339 +< -2 -1 1 2 >: -0.002482075706638228 -0.030178744925676668 +< -2 0 0 2 >: 0.001241037853319114 0.015089372462838332 +< -1 -1 1 1 >: 0.001241037853319114 0.015089372462838330 +< -1 0 0 1 >: -0.001241037853319113 -0.015089372462838327 +< 0 0 0 0 >: 0.000310259463329778 0.003772343115709581 +ctilde_basis_func: rank=5 ndens=2 mu0=0 mu=( 0 0 0 0 0 ) +n=( 1 1 1 1 1 ) +l=( 0 0 0 0 0 ) +num_ms=1 +< 0 0 0 0 0 >: -0.000000935020536080 -0.000007019453681854 +ctilde_basis_func: rank=5 ndens=2 mu0=0 mu=( 0 0 0 0 0 ) +n=( 1 1 1 1 1 ) +l=( 0 1 1 1 1 ) +num_ms=3 +< 0 -1 -1 1 1 >: 0.000022811031369710 -0.032258483849424084 +< 0 -1 0 0 1 >: -0.000022811031369710 0.032258483849424091 +< 0 0 0 0 0 >: 0.000005702757842428 -0.008064620962356025 +ctilde_basis_func: rank=5 ndens=2 mu0=0 mu=( 0 0 0 0 0 ) +n=( 1 1 1 1 1 ) +l=( 1 1 0 0 0 ) +num_ms=2 +< 0 0 0 0 0 >: 0.000024850300450537 0.001653066345334017 +< 1 -1 0 0 0 >: -0.000049700600901074 -0.003306132690668033 +ctilde_basis_func: rank=6 ndens=2 mu0=0 mu=( 0 0 0 0 0 0 ) +n=( 1 1 1 1 1 1 ) +l=( 0 0 0 0 0 0 ) +num_ms=1 +< 0 0 0 0 0 0 >: 0.000000003348866130 -0.000000862948625992 +ctilde_basis_func: rank=6 ndens=2 mu0=0 mu=( 0 0 0 0 0 0 ) +n=( 1 1 1 1 1 1 ) +l=( 0 0 1 1 1 1 ) +num_ms=3 +< 0 0 -1 -1 1 1 >: -0.000002459754467278 0.000454149082932992 +< 0 0 -1 0 0 1 >: 0.000002459754467278 -0.000454149082932992 +< 0 0 0 0 0 0 >: -0.000000614938616820 0.000113537270733248 +ctilde_basis_func: rank=6 ndens=2 mu0=0 mu=( 0 0 0 0 0 0 ) +n=( 1 1 1 1 1 1 ) +l=( 1 1 0 0 0 0 ) +num_ms=2 +< 0 0 0 0 0 0 >: -0.000000129541495748 -0.000009835136249784 +< 1 -1 0 0 0 0 >: 0.000000259082991496 0.000019670272499569 +ctilde_basis_func: rank=6 ndens=2 mu0=0 mu=( 0 0 0 0 0 0 ) +n=( 1 1 1 1 1 1 ) +l=( 1 1 1 1 1 1 ) +num_ms=4 +< -1 -1 -1 1 1 1 >: -0.000016778677138455 0.001507157658533400 +< -1 -1 0 0 1 1 >: 0.000025168015707683 -0.002260736487800101 +< -1 0 0 0 0 1 >: -0.000012584007853841 0.001130368243900051 +< 0 0 0 0 0 0 >: 0.000002097334642307 -0.000188394707316675 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 1 2 ) +l=( 0 1 1 2 ) +num_ms=4 +< 0 -1 -1 2 >: 0.002606633917492742 0.166454618525816056 +< 0 -1 0 1 >: -0.003686337038259946 -0.235402379038848891 +< 0 -1 1 0 >: 0.001064153840681534 0.067954813452978852 +< 0 0 0 0 >: 0.001064153840681534 0.067954813452978852 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 1 2 ) +l=( 0 2 2 2 ) +num_ms=7 +< 0 -2 0 2 >: -0.004460727294756203 0.344570699240051515 +< 0 -2 1 1 >: 0.005463252876929137 -0.422011196726066795 +< 0 -2 2 0 >: -0.002230363647378102 0.172285349620025813 +< 0 -1 -1 2 >: 0.002731626438464568 -0.211005598363033398 +< 0 -1 0 1 >: -0.002230363647378101 0.172285349620025702 +< 0 -1 1 0 >: -0.001115181823689050 0.086142674810012851 +< 0 0 0 0 >: 0.001115181823689050 -0.086142674810012851 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 1 2 ) +l=( 1 1 1 1 ) +num_ms=4 +< -1 -1 1 1 >: -0.001800118773298505 0.041745806620423383 +< -1 0 0 1 >: 0.000900059386649252 -0.020872903310211695 +< -1 0 1 0 >: 0.000900059386649252 -0.020872903310211695 +< 0 0 0 0 >: -0.000450029693324626 0.010436451655105851 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 1 2 ) +l=( 1 1 2 0 ) +num_ms=4 +< -1 -1 2 0 >: 0.000708205678384126 0.033448205200141384 +< -1 0 1 0 >: -0.001001554075320470 -0.047302905431078221 +< -1 1 0 0 >: 0.000289123757497120 0.013655172592042209 +< 0 0 0 0 >: 0.000289123757497120 0.013655172592042211 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 1 2 ) +l=( 1 1 2 2 ) +num_ms=13 +< -1 -1 0 2 >: 0.004998045503574758 -0.131890838605257354 +< -1 -1 1 1 >: -0.006121330597484975 0.161532628165324682 +< -1 -1 2 0 >: 0.004998045503574758 -0.131890838605257354 +< -1 0 -1 2 >: -0.008656868750732653 0.228441633517172366 +< -1 0 0 1 >: 0.003534151868256642 -0.093260906354157916 +< -1 0 1 0 >: 0.003534151868256642 -0.093260906354157916 +< -1 1 -2 2 >: 0.004214437589129390 0.213954236196574943 +< -1 1 -1 1 >: 0.001906893008355585 -0.375486864361899542 +< -1 1 0 0 >: -0.001973668270425288 0.214665536875170537 +< 0 0 -2 2 >: 0.004014111802920279 -0.268509746263612126 +< 0 0 -1 1 >: 0.002107218794564695 0.106977118098287485 +< 0 0 0 0 >: -0.002073831163529843 -0.026566454354922955 +< 0 1 -2 1 >: -0.008656868750732653 0.228441633517172366 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 1 2 ) +l=( 1 2 2 1 ) +num_ms=16 +< -1 -2 2 1 >: 0.000043196748971934 0.004624812988269349 +< -1 -1 1 1 >: 0.000021598374479169 0.002312406494125256 +< -1 -1 2 0 >: -0.000091634142360189 -0.009810709877161313 +< -1 0 0 1 >: -0.000043196748965136 -0.004624812988259930 +< -1 0 1 0 >: 0.000074818963929414 0.008010411071170644 +< -1 0 2 -1 >: 0.000211619987023362 0.022656863954066245 +< -1 1 1 -1 >: -0.000129590246895409 -0.013874438964779794 +< 0 -2 1 1 >: -0.000091634142360189 -0.009810709877161313 +< 0 -2 2 0 >: 0.000086393497930272 0.009249625976519859 +< 0 -1 1 0 >: 0.000043196748965136 0.004624812988259929 +< 0 -1 2 -1 >: -0.000091634142350575 -0.009810709877147994 +< 0 0 0 0 >: -0.000043196748965136 -0.004624812988259929 +< 0 0 1 -1 >: 0.000074818963929414 0.008010411071170644 +< 1 -2 1 0 >: -0.000091634142350575 -0.009810709877147994 +< 1 -2 2 -1 >: 0.000043196748958338 0.004624812988250512 +< 1 -1 1 -1 >: 0.000021598374485967 0.002312406494134675 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 1 2 ) +l=( 2 2 2 0 ) +num_ms=5 +< -2 0 2 0 >: -0.002711275102736040 0.118067964076814316 +< -2 1 1 0 >: 0.002213746851338445 -0.096402088985816467 +< -1 -1 2 0 >: 0.001106873425669223 -0.048201044492908234 +< -1 0 1 0 >: -0.001355637551368019 0.059033982038407144 +< 0 0 0 0 >: 0.000451879183789340 -0.019677994012802378 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 1 2 ) +l=( 2 2 2 2 ) +num_ms=9 +< -2 -2 2 2 >: -0.004288317671950520 -0.028719268605867147 +< -2 -1 1 2 >: 0.004288317671950519 0.028719268605867140 +< -2 -1 2 1 >: 0.004288317671950519 0.028719268605867140 +< -2 0 0 2 >: -0.002144158835975259 -0.014359634302933568 +< -2 0 2 0 >: -0.002144158835975259 -0.014359634302933568 +< -1 -1 1 1 >: -0.004288317671950518 -0.028719268605867133 +< -1 0 0 1 >: 0.002144158835975259 0.014359634302933563 +< -1 0 1 0 >: 0.002144158835975259 0.014359634302933563 +< 0 0 0 0 >: -0.001072079417987629 -0.007179817151466781 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 2 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.054583050684663452 0.037778832951642007 +< 1 -1 0 >: -0.109166101369326876 -0.075557665903283999 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 2 ) +l=( 1 1 2 ) +num_ms=4 +< -1 -1 2 >: -0.184430989327066336 -0.154125006937149200 +< -1 0 1 >: 0.260824806428224809 0.217965675111363805 +< -1 1 0 >: -0.075293636101333786 -0.062921270599822179 +< 0 0 0 >: -0.075293636101333800 -0.062921270599822193 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 2 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.038448246681710971 0.140449177313778123 +< 1 -1 0 >: -0.076896493363421956 -0.280898354627556246 +< 2 -2 0 >: 0.076896493363421969 0.280898354627556357 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 2 ) +l=( 2 2 2 ) +num_ms=7 +< -2 0 2 >: -0.108690908618374091 -0.016097050258906159 +< -2 1 1 >: 0.133118632897245542 0.019714779749127966 +< -2 2 0 >: -0.054345454309187059 -0.008048525129453081 +< -1 -1 2 >: 0.066559316448622771 0.009857389874563983 +< -1 0 1 >: -0.054345454309187032 -0.008048525129453078 +< -1 1 0 >: -0.027172727154593516 -0.004024262564726539 +< 0 0 0 >: 0.027172727154593516 0.004024262564726539 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 2 ) +l=( 2 2 4 ) +num_ms=9 +< -2 -2 4 >: -0.176338912536312509 -0.091213992615658768 +< -2 -1 3 >: 0.249380881682976202 0.128996065435264012 +< -2 0 2 >: -0.163258109598152040 -0.084447747744081952 +< -2 1 1 >: 0.094257113523882524 0.048755929892503339 +< -2 2 0 >: -0.021076531320231608 -0.010902157354585147 +< -1 -1 2 >: -0.133299688295615143 -0.068951297300090031 +< -1 0 1 >: 0.230881832761099803 0.119427150171542665 +< -1 1 0 >: -0.084306125280926444 -0.043608629418340594 +< 0 0 0 >: -0.063229593960694802 -0.032706472063755439 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 2 ) +l=( 2 3 3 ) +num_ms=14 +< -2 -1 3 >: -0.024945478185600632 0.000607322378003120 +< -2 0 2 >: 0.035278233569958614 -0.000858883543704693 +< -2 1 1 >: -0.038645368630404672 0.000940859782314069 +< -2 2 0 >: 0.035278233569958614 -0.000858883543704693 +< -1 -2 3 >: 0.039442264194271250 -0.000960260994239802 +< -1 -1 2 >: -0.030551846472225141 0.000743814967740666 +< -1 0 1 >: 0.011155956990848228 -0.000271602824294360 +< -1 1 0 >: 0.011155956990848228 -0.000271602824294360 +< 0 -3 3 >: -0.039442264194271250 0.000960260994239802 +< 0 -1 1 >: 0.023665358516562741 -0.000576156596543881 +< 0 0 0 >: -0.015776905677708501 0.000384104397695921 +< 1 -3 2 >: 0.039442264194271250 -0.000960260994239802 +< 1 -2 1 >: -0.030551846472225141 0.000743814967740666 +< 2 -3 1 >: -0.024945478185600632 0.000607322378003120 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 2 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.045315983906195470 -0.042800229133881873 +< 0 1 -1 >: -0.052326391013669385 -0.049421447623648702 +< 1 -2 1 >: 0.030210655937463634 0.028533486089254569 +< 1 -1 0 >: 0.085448638709896718 0.080704886018415745 +< 1 0 -1 >: 0.074000691841568891 0.069892481501475562 +< 2 -2 0 >: -0.067553080321026346 -0.063802814530617868 +< 2 -1 -1 >: -0.095534482370074475 -0.090230805626774949 +< 3 -2 -1 >: 0.117005367323798889 0.110509716432923955 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 2 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.029791319964388840 -0.036280069387636865 +< 1 -1 0 >: -0.059582639928777680 0.072560138775273730 +< 2 -2 0 >: 0.059582639928777673 -0.072560138775273716 +< 3 -3 0 >: -0.059582639928777673 0.072560138775273716 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 2 ) +l=( 3 3 2 ) +num_ms=12 +< -3 1 2 >: -0.062403229056392263 0.114592988417411126 +< -3 2 1 >: 0.098668168583699756 -0.181187423642156509 +< -3 3 0 >: -0.098668168583699756 0.181187423642156481 +< -2 1 1 >: -0.076428034745091036 0.140347174861660068 +< -2 3 -1 >: 0.098668168583699756 -0.181187423642156509 +< -1 1 0 >: 0.059200901150219837 -0.108712454185293864 +< -1 2 -1 >: -0.076428034745091036 0.140347174861660068 +< -1 3 -2 >: -0.062403229056392263 0.114592988417411126 +< 0 0 0 >: -0.039467267433479905 0.072474969456862590 +< 0 1 -1 >: 0.055815144874233280 -0.102495084738470951 +< 0 2 -2 >: 0.176502985734849543 -0.324117916745531753 +< 1 1 -2 >: -0.096674666753989627 0.177526694293109133 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 2 ) +l=( 3 3 4 ) +num_ms=14 +< -3 -1 4 >: 0.012326585138872454 -0.178995877105088769 +< -3 0 3 >: -0.015096921930605817 0.219224282484696609 +< -3 1 2 >: 0.013977033768051901 -0.202962247082547842 +< -3 2 1 >: -0.010417865876391355 0.151279127114228390 +< -3 3 0 >: 0.002853050070781436 -0.041429495200077153 +< -2 -2 4 >: -0.007956776493076807 0.115541341844633008 +< -2 -1 3 >: 0.007116757248116852 -0.103343317830456152 +< -2 0 2 >: 0.003294418452754285 -0.047838660412309698 +< -2 1 1 >: -0.010759525611276336 0.156240410651253742 +< -2 2 0 >: 0.006657116831823352 -0.096668822133513355 +< -1 -1 2 >: -0.006014757668115967 0.087341044762171402 +< -1 0 1 >: 0.007366543606688264 -0.106970496634452614 +< -1 1 0 >: 0.000951016690260480 -0.013809831733359063 +< 0 0 0 >: -0.002853050070781436 0.041429495200077153 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 2 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.017947273004863901 -0.042559306577471916 +< 0 1 -1 >: 0.021980830568171777 -0.052124292460741052 +< 1 -2 1 >: -0.015542794350866815 0.036857440663540832 +< 1 -1 0 >: -0.034754744728837925 0.082415742800342265 +< 1 0 -1 >: -0.028377130242112060 0.067292172211098289 +< 2 -3 1 >: 0.008973636502431952 -0.021279653288735965 +< 2 -2 0 >: 0.031085588701733641 -0.073714881327081691 +< 2 -1 -1 >: 0.034754744728837925 -0.082415742800342279 +< 3 -3 0 >: -0.023742010541326398 0.056300670587673088 +< 3 -2 -1 >: -0.041122368531413198 0.097515621958048540 +< 4 -3 -1 >: 0.047484021082652816 -0.112601341175346217 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 2 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.007714119228406039 0.044611919281672956 +< 1 -1 0 >: 0.015428238456812073 -0.089223838563345884 +< 2 -2 0 >: -0.015428238456812073 0.089223838563345884 +< 3 -3 0 >: 0.015428238456812073 -0.089223838563345884 +< 4 -4 0 >: -0.015428238456812075 0.089223838563345897 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 2 ) +l=( 4 4 2 ) +num_ms=18 +< -4 2 2 >: 0.010597679068320204 0.043734705711118302 +< -4 3 1 >: -0.019826442084319936 -0.081820142341195140 +< -4 4 0 >: 0.022893603348909268 0.094477762411644975 +< -3 1 2 >: -0.015896518602480307 -0.065602058566677460 +< -3 2 1 >: 0.018734226835119869 0.077312767453824427 +< -3 3 0 >: -0.005723400837227315 -0.023619440602911237 +< -3 4 -1 >: -0.019826442084319936 -0.081820142341195140 +< -2 1 1 >: -0.012745569911348526 -0.052598662933625431 +< -2 2 0 >: -0.006541029528259793 -0.026993646403327146 +< -2 3 -1 >: 0.018734226835119869 0.077312767453824427 +< -2 4 -2 >: 0.010597679068320204 0.043734705711118302 +< -1 1 0 >: 0.013899687747552054 0.057361498607070162 +< -1 2 -1 >: -0.012745569911348526 -0.052598662933625431 +< -1 3 -2 >: -0.015896518602480307 -0.065602058566677460 +< 0 0 0 >: -0.008176286910324739 -0.033742058004158922 +< 0 1 -1 >: 0.008956673554838158 0.036962572611051174 +< 0 2 -2 >: 0.037999947645001697 0.156818914460246650 +< 1 1 -2 >: -0.020027730920892814 -0.082650824981582327 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 2 ) +l=( 4 4 4 ) +num_ms=19 +< -4 0 4 >: -0.045458003399570290 0.049647232216497236 +< -4 1 3 >: 0.071875414313159663 -0.078499166663710512 +< -4 2 2 >: -0.081499059279579789 0.089009688479138524 +< -4 3 1 >: 0.071875414313159663 -0.078499166663710526 +< -4 4 0 >: -0.022729001699785145 0.024823616108248618 +< -3 -1 4 >: 0.071875414313159650 -0.078499166663710498 +< -3 0 3 >: -0.068187005099355422 0.074470848324745847 +< -3 1 2 >: 0.027166353093193256 -0.029669896159712838 +< -3 2 1 >: 0.027166353093193259 -0.029669896159712841 +< -3 3 0 >: -0.034093502549677704 0.037235424162372917 +< -2 -2 4 >: -0.040749529639789887 0.044504844239569255 +< -2 -1 3 >: 0.027166353093193256 -0.029669896159712838 +< -2 0 2 >: 0.035717002671090937 -0.039008539598676402 +< -2 1 1 >: -0.061607497982708294 0.067284999997466163 +< -2 2 0 >: 0.017858501335545462 -0.019504269799338191 +< -1 -1 2 >: -0.030803748991354147 0.033642499998733082 +< -1 0 1 >: 0.029223002185438045 -0.031916077853462510 +< -1 1 0 >: 0.014611501092719019 -0.015958038926731252 +< 0 0 0 >: -0.014611501092719026 0.015958038926731258 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 2 1 ) +l=( 1 1 0 0 ) +num_ms=2 +< 0 0 0 0 >: -0.000865763010737041 0.017336339429338609 +< 1 -1 0 0 >: 0.001731526021474082 -0.034672678858677211 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 2 1 ) +l=( 2 2 0 0 ) +num_ms=3 +< 0 0 0 0 >: 0.000399163511050922 0.014268554496454817 +< 1 -1 0 0 >: -0.000798327022101844 -0.028537108992909638 +< 2 -2 0 0 >: 0.000798327022101844 0.028537108992909649 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 2 1 ) +l=( 2 2 1 1 ) +num_ms=8 +< 0 0 0 0 >: 0.000076214838495211 -0.025166557601403610 +< 0 0 1 -1 >: -0.000152429676990421 0.050333115202807206 +< 1 -1 -1 1 >: 0.000152429676990421 -0.050333115202807220 +< 1 -1 0 0 >: -0.000152429676990421 0.050333115202807227 +< 1 -1 1 -1 >: 0.000152429676990421 -0.050333115202807220 +< 2 -2 -1 1 >: -0.000152429676990421 0.050333115202807227 +< 2 -2 0 0 >: 0.000152429676990421 -0.050333115202807241 +< 2 -2 1 -1 >: -0.000152429676990421 0.050333115202807227 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 2 2 ) +l=( 0 2 1 1 ) +num_ms=4 +< 0 0 -1 1 >: -0.000115575459848796 0.008854089271594225 +< 0 0 0 0 >: -0.000115575459848796 0.008854089271594225 +< 0 1 -1 0 >: 0.000400365137132502 -0.030671464946303427 +< 0 2 -1 -1 >: -0.000283100903417075 0.021688000852456642 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 2 2 ) +l=( 0 2 2 2 ) +num_ms=8 +< 0 -2 0 2 >: 0.003219841324988002 -0.222372484414000454 +< 0 -2 1 1 >: -0.001971742074736877 0.136174779912326516 +< 0 -1 -1 2 >: -0.001971742074736877 0.136174779912326516 +< 0 -1 0 1 >: 0.001609920662494000 -0.111186242207000158 +< 0 0 -2 2 >: 0.001609920662494000 -0.111186242207000158 +< 0 0 -1 1 >: 0.000804960331247000 -0.055593121103500079 +< 0 0 0 0 >: -0.000804960331247000 0.055593121103500079 +< 0 1 -2 1 >: -0.001971742074736877 0.136174779912326516 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 2 2 ) +l=( 1 1 0 0 ) +num_ms=2 +< 0 0 0 0 >: 0.000361033295246299 -0.003372423802545437 +< 1 -1 0 0 >: -0.000722066590492599 0.006744847605090873 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 2 2 ) +l=( 1 1 0 2 ) +num_ms=4 +< -1 -1 0 2 >: -0.000852279449019880 0.003079773563530716 +< -1 0 0 1 >: 0.001205305155735783 -0.004355457542583255 +< -1 1 0 0 >: -0.000347941628059849 0.001257312292327214 +< 0 0 0 0 >: -0.000347941628059849 0.001257312292327214 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 2 2 ) +l=( 1 1 1 1 ) +num_ms=6 +< -1 -1 1 1 >: 0.000146116709268971 -0.009867113533806938 +< -1 0 0 1 >: -0.000292233418537943 0.019734227067613876 +< -1 1 -1 1 >: -0.000053920014922944 0.013645083117420780 +< -1 1 0 0 >: 0.000100018362095957 -0.011756098325613858 +< 0 0 -1 1 >: 0.000100018362095957 -0.011756098325613858 +< 0 0 0 0 >: 0.000023049173586507 0.000944492395903464 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 2 2 ) +l=( 1 1 2 2 ) +num_ms=11 +< -1 -1 0 2 >: -0.004364184410262559 0.116902449375929834 +< -1 -1 1 1 >: 0.002672506237138097 -0.071587837663142445 +< -1 0 -1 2 >: 0.003779494566087384 -0.101240490924179499 +< -1 0 0 1 >: -0.003085944390845268 0.082662514691037026 +< -1 1 -2 2 >: -0.001922680468440096 -0.070387973408986615 +< -1 1 -1 1 >: -0.000749825768698001 0.141975811072129032 +< -1 1 0 0 >: 0.000820330590538683 -0.082919211813254901 +< 0 0 -2 2 >: -0.001711166002918049 0.106781824367635753 +< 0 0 -1 1 >: -0.000961340234220048 -0.035193986704493307 +< 0 0 0 0 >: 0.000926087823299707 0.005665687075056245 +< 0 1 -2 1 >: 0.003779494566087384 -0.101240490924179499 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 2 2 ) +l=( 2 2 0 0 ) +num_ms=3 +< 0 0 0 0 >: -0.000138889360550470 0.000147685181843324 +< 1 -1 0 0 >: 0.000277778721100941 -0.000295370363686649 +< 2 -2 0 0 >: -0.000277778721100941 0.000295370363686649 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 2 2 ) +l=( 2 2 0 2 ) +num_ms=7 +< -2 0 0 2 >: 0.003679465688564987 -0.157830328449144713 +< -2 1 0 1 >: -0.004506406731531289 0.193301885318140021 +< -2 2 0 0 >: 0.001839732844282494 -0.078915164224572384 +< -1 -1 0 2 >: -0.002253203365765644 0.096650942659070010 +< -1 0 0 1 >: 0.001839732844282493 -0.078915164224572343 +< -1 1 0 0 >: 0.000919866422141246 -0.039457582112286171 +< 0 0 0 0 >: -0.000919866422141246 0.039457582112286171 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 2 2 ) +l=( 2 2 1 1 ) +num_ms=11 +< -2 1 0 1 >: 0.000183464638503149 -0.007191830649866146 +< -2 2 -1 1 >: 0.000172733037519855 -0.004317936006064334 +< -2 2 0 0 >: -0.000216095608753443 0.007244360224697774 +< -1 1 -1 1 >: -0.000302462127513371 0.009403328227729940 +< -1 1 0 0 >: 0.000086366518759928 -0.002158968003032168 +< -1 2 -1 0 >: 0.000183464638503149 -0.007191830649866146 +< 0 0 -1 1 >: 0.000172852578755604 -0.005549229484142570 +< 0 0 0 0 >: -0.000021561744381045 0.000231918631238483 +< 0 1 -1 0 >: -0.000149798250058962 0.005872105136226933 +< 0 2 -1 -1 >: -0.000211846716853141 0.008304410723332845 +< 1 1 -1 -1 >: 0.000129729089993515 -0.005085392221665607 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 1 2 2 ) +l=( 2 2 2 2 ) +num_ms=21 +< -2 -2 2 2 >: 0.001642650748657122 0.011687034584406454 +< -2 -1 1 2 >: -0.003285301497314243 -0.023374069168812905 +< -2 0 0 2 >: 0.003752712720853359 0.010171505506617327 +< -2 0 1 1 >: -0.000286229749430199 0.008084886067247495 +< -2 1 -1 2 >: -0.001993209166311457 -0.001785111837759770 +< -2 1 0 1 >: 0.000286229749430198 -0.008084886067247495 +< -2 2 -2 2 >: 0.003704563252236249 0.009294746160439746 +< -2 2 -1 1 >: -0.001711354085924791 -0.007509634322679977 +< -2 2 0 0 >: 0.000797250640020006 0.005405137619114435 +< -1 -1 0 2 >: -0.000286229749430199 0.008084886067247493 +< -1 -1 1 1 >: 0.001817929957484289 0.006736073211083109 +< -1 0 -1 2 >: 0.000143114874715099 -0.004042443033623748 +< -1 0 0 1 >: -0.003402154303199022 -0.020073428253264015 +< -1 1 -2 2 >: -0.001711354085924791 -0.007509634322679977 +< -1 1 -1 1 >: 0.003529284043409080 0.014245707533763086 +< -1 1 0 0 >: -0.000972529848847173 -0.000454176245791089 +< -1 2 -2 1 >: -0.001993209166311457 -0.001785111837759770 +< 0 0 -2 2 >: 0.000797250640020006 0.005405137619114435 +< 0 0 -1 1 >: -0.000972529848847173 -0.000454176245791089 +< 0 0 0 0 >: 0.001336803500223342 0.005245445186211549 +< 0 1 -2 1 >: 0.000143114874715099 -0.004042443033623748 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 3 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.077831243654351678 0.087134761468995028 +< 1 -1 0 >: 0.155662487308703329 -0.174269522937990001 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 3 ) +l=( 1 1 2 ) +num_ms=4 +< -1 -1 2 >: 0.093879741204974443 -0.354998956968941126 +< -1 0 1 >: -0.132766003244151165 0.502044339573779363 +< -1 1 0 >: 0.038326243856120691 -0.144927717299024678 +< 0 0 0 >: 0.038326243856120698 -0.144927717299024705 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 3 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.042645803866773122 0.041017325383404461 +< 1 -1 0 >: 0.085291607733546243 -0.082034650766808936 +< 2 -2 0 >: -0.085291607733546271 0.082034650766808950 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 3 ) +l=( 2 2 2 ) +num_ms=7 +< -2 0 2 >: 0.013535447720539140 -0.138163269103870084 +< -2 1 1 >: -0.016577470177719288 0.169214755249660870 +< -2 2 0 >: 0.006767723860269572 -0.069081634551935070 +< -1 -1 2 >: -0.008288735088859644 0.084607377624830435 +< -1 0 1 >: 0.006767723860269569 -0.069081634551935028 +< -1 1 0 >: 0.003383861930134784 -0.034540817275967514 +< 0 0 0 >: -0.003383861930134784 0.034540817275967514 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 3 ) +l=( 2 2 4 ) +num_ms=9 +< -2 -2 4 >: 0.004053776574595621 0.024663695904383425 +< -2 -1 3 >: -0.005732905810623477 -0.034879733246224807 +< -2 0 2 >: 0.003753067832747749 0.022834145402956127 +< -2 1 1 >: -0.002166834723523838 -0.013183299995111777 +< -2 2 0 >: 0.000484518973780627 0.002947875495684258 +< -1 -1 2 >: 0.003064367053428369 0.018644001649920236 +< -1 0 1 >: -0.005307639429578066 -0.032292358114059817 +< -1 1 0 >: 0.001938075895122507 0.011791501982737033 +< 0 0 0 >: 0.001453556921341879 0.008843626487052772 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 3 ) +l=( 2 3 3 ) +num_ms=14 +< -2 -1 3 >: -0.072008818150769691 -0.077610763262163152 +< -2 0 2 >: 0.101835847239276439 0.109758193991478722 +< -2 1 1 >: -0.111555581391203792 -0.120234077440321746 +< -2 2 0 >: 0.101835847239276439 0.109758193991478722 +< -1 -2 3 >: 0.113855938486653138 0.122713391426277629 +< -1 -1 2 >: -0.088192430725124768 -0.095053384270121083 +< -1 0 1 >: 0.032203322472908358 0.034708588487968033 +< -1 1 0 >: 0.032203322472908358 0.034708588487968033 +< 0 -3 3 >: -0.113855938486653124 -0.122713391426277615 +< 0 -1 1 >: 0.068313563091991866 0.073628034855766550 +< 0 0 0 >: -0.045542375394661251 -0.049085356570511045 +< 1 -3 2 >: 0.113855938486653138 0.122713391426277629 +< 1 -2 1 >: -0.088192430725124768 -0.095053384270121083 +< 2 -3 1 >: -0.072008818150769691 -0.077610763262163152 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 3 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.041628574037905194 -0.115819866613139630 +< 0 1 -1 >: 0.048068536853529645 -0.133737262333205376 +< 1 -2 1 >: -0.027752382691936788 0.077213244408759735 +< 1 -1 0 >: -0.078495591982210719 0.218392034875393187 +< 1 0 -1 >: -0.067979176741692557 0.189133050186267526 +< 2 -2 0 >: 0.062056214236759277 -0.172654063261292345 +< 2 -1 -1 >: 0.087760739803155310 -0.244169717862941948 +< 3 -2 -1 >: -0.107484515983446147 0.299045609701769410 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 3 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.019647915926264872 0.006553058011735113 +< 1 -1 0 >: 0.039295831852529745 -0.013106116023470227 +< 2 -2 0 >: -0.039295831852529745 0.013106116023470225 +< 3 -3 0 >: 0.039295831852529745 -0.013106116023470225 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 3 ) +l=( 3 3 2 ) +num_ms=12 +< -3 1 2 >: 0.057340467918147182 -0.045385362560376334 +< -3 2 1 >: -0.090663240360579225 0.071760559061660206 +< -3 3 0 >: 0.090663240360579225 -0.071760559061660206 +< -2 1 1 >: 0.070227444005944717 -0.055585490032068766 +< -2 3 -1 >: -0.090663240360579225 0.071760559061660206 +< -1 1 0 >: -0.054397944216347520 0.043056335436996107 +< -1 2 -1 >: 0.070227444005944717 -0.055585490032068766 +< -1 3 -2 >: 0.057340467918147182 -0.045385362560376334 +< 0 0 0 >: 0.036265296144231692 -0.028704223624664082 +< 0 1 -1 >: -0.051286873650649191 0.040593902347390166 +< 0 2 -2 >: -0.162183334805326235 0.128369190532208660 +< 1 1 -2 >: 0.088831470924289904 -0.070310701343169274 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 3 ) +l=( 3 3 4 ) +num_ms=14 +< -3 -1 4 >: 0.003922008927877927 0.243957419704823208 +< -3 0 3 >: -0.004803460319970515 -0.298785598621407578 +< -3 1 2 >: 0.004447140112688595 0.276621712726273117 +< -3 2 1 >: -0.003314702532479257 -0.206181651236121727 +< -3 3 0 >: 0.000907768674229195 0.056465170662843400 +< -2 -2 4 >: -0.002531645876891335 -0.157473837283418849 +< -2 -1 3 >: 0.002264372910274436 0.140848881937386178 +< -2 0 2 >: 0.001048200976856270 0.065200362964061578 +< -2 1 1 >: -0.003423410054912990 -0.212943493741612117 +< -2 2 0 >: 0.002118126906534788 0.131752064879967934 +< -1 -1 2 >: -0.001913744399410434 -0.119039031843136439 +< -1 0 1 >: 0.002343848638332305 0.145792443745301398 +< -1 1 0 >: 0.000302589558076398 0.018821723554281147 +< 0 0 0 >: -0.000907768674229195 -0.056465170662843400 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 3 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.016568155728426164 -0.040824130388153267 +< 0 1 -1 >: -0.020291763756807121 -0.049999144321912242 +< 1 -2 1 >: 0.014348443754673729 0.035354734003549007 +< 1 -1 0 >: 0.032084095606782777 0.079055588558358883 +< 1 0 -1 >: 0.026196554365096405 0.064548617761129065 +< 2 -3 1 >: -0.008284077864213084 -0.020412065194076640 +< 2 -2 0 >: -0.028696887509347471 -0.070709468007098042 +< 2 -1 -1 >: -0.032084095606782784 -0.079055588558358897 +< 3 -3 0 >: 0.021917609870202914 0.054005248248764154 +< 3 -2 -1 >: 0.037962413875664569 0.093539833842229678 +< 4 -3 -1 >: -0.043835219740405842 -0.108010496497528335 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 3 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.009257965839577923 0.060925918811764297 +< 1 -1 0 >: -0.018515931679155839 -0.121851837623528553 +< 2 -2 0 >: 0.018515931679155839 0.121851837623528553 +< 3 -3 0 >: -0.018515931679155839 -0.121851837623528553 +< 4 -4 0 >: 0.018515931679155842 0.121851837623528581 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 3 ) +l=( 4 4 2 ) +num_ms=18 +< -4 2 2 >: -0.005929546252978678 -0.014690098804514934 +< -4 3 1 >: 0.011093165268837708 0.027482658352176177 +< -4 4 0 >: -0.012809283908256910 -0.031734240395350853 +< -3 1 2 >: 0.008894319379468017 0.022035148206772402 +< -3 2 1 >: -0.010482055912101265 -0.025968671202432257 +< -3 3 0 >: 0.003202320977064227 0.007933560098837710 +< -3 4 -1 >: 0.011093165268837708 0.027482658352176177 +< -2 1 1 >: 0.007131320529967096 0.017667423226398967 +< -2 2 0 >: 0.003659795402359118 0.009066925827243102 +< -2 3 -1 >: -0.010482055912101265 -0.025968671202432257 +< -2 4 -2 >: -0.005929546252978678 -0.014690098804514934 +< -1 1 0 >: -0.007777065230013124 -0.019267217382891586 +< -1 2 -1 >: 0.007131320529967096 0.017667423226398967 +< -1 3 -2 >: 0.008894319379468017 0.022035148206772402 +< 0 0 0 >: 0.004574744252948897 0.011333657284053876 +< 0 1 -1 >: -0.005011381244314461 -0.012415399507018088 +< 0 2 -2 >: -0.021261489965795004 -0.052674079095315664 +< 1 1 -2 >: 0.011205789123454617 0.027761677265509824 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 3 ) +l=( 4 4 4 ) +num_ms=19 +< -4 0 4 >: 0.011896638246535272 0.030366334707953697 +< -4 1 3 >: -0.018810236679061600 -0.048013390934078817 +< -4 2 2 >: 0.021328803580741063 0.054442068005355330 +< -4 3 1 >: -0.018810236679061603 -0.048013390934078824 +< -4 4 0 >: 0.005948319123267636 0.015183167353976849 +< -3 -1 4 >: -0.018810236679061596 -0.048013390934078810 +< -3 0 3 >: 0.017844957369802905 0.045549502061930543 +< -3 1 2 >: -0.007109601193580354 -0.018147356001785107 +< -3 2 1 >: -0.007109601193580355 -0.018147356001785110 +< -3 3 0 >: 0.008922478684901453 0.022774751030965268 +< -2 -2 4 >: 0.010664401790370530 0.027221034002677662 +< -2 -1 3 >: -0.007109601193580354 -0.018147356001785107 +< -2 0 2 >: -0.009347358622277714 -0.023859262984820762 +< -2 1 1 >: 0.016123060010624232 0.041154335086353279 +< -2 2 0 >: -0.004673679311138854 -0.011929631492410376 +< -1 -1 2 >: 0.008061530005312116 0.020577167543176639 +< -1 0 1 >: -0.007647838872772676 -0.019521215169398809 +< -1 1 0 >: -0.003823919436386337 -0.009760607584699401 +< 0 0 0 >: 0.003823919436386339 0.009760607584699406 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 4 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.003525841278372580 -0.076227387034227184 +< 1 -1 0 >: -0.007051682556745160 0.152454774068454341 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 4 ) +l=( 1 1 2 ) +num_ms=4 +< -1 -1 2 >: -0.072040489156466325 0.465077453888616987 +< -1 0 1 >: 0.101880636805066579 -0.657718842843229901 +< -1 1 0 >: -0.029410406542307834 0.189867075483313941 +< 0 0 0 >: -0.029410406542307841 0.189867075483313968 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 4 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.030857467694981530 -0.079339768964250545 +< 1 -1 0 >: -0.061714935389963067 0.158679537928501119 +< 2 -2 0 >: 0.061714935389963081 -0.158679537928501146 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 4 ) +l=( 2 2 2 ) +num_ms=7 +< -2 0 2 >: -0.103034978895394994 0.051697655988502171 +< -2 1 1 >: 0.126191561976075645 -0.063316439034884708 +< -2 2 0 >: -0.051517489447697511 0.025848827994251092 +< -1 -1 2 >: 0.063095780988037822 -0.031658219517442354 +< -1 0 1 >: -0.051517489447697483 0.025848827994251079 +< -1 1 0 >: -0.025758744723848741 0.012924413997125539 +< 0 0 0 >: 0.025758744723848741 -0.012924413997125539 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 4 ) +l=( 2 2 4 ) +num_ms=9 +< -2 -2 4 >: 0.007561865329007393 -0.122486068160255923 +< -2 -1 3 >: -0.010694092505121145 0.173221458793989286 +< -2 0 2 >: 0.007000926913368222 -0.113400063844875651 +< -2 1 1 >: -0.004041987038010039 0.065471557386959714 +< -2 2 0 >: 0.000903815778116347 -0.014639885291002042 +< -1 -1 2 >: 0.005716232888090053 -0.092590764406326825 +< -1 0 1 >: -0.009900805790068150 0.160371908263398033 +< -1 1 0 >: 0.003615263112465390 -0.058559541164008175 +< 0 0 0 >: 0.002711447334349042 -0.043919655873006121 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 4 ) +l=( 2 3 3 ) +num_ms=14 +< -2 -1 3 >: 0.057490550234226612 0.046711134765060294 +< -2 0 2 >: -0.081303915849535016 -0.066059520298585667 +< -2 1 1 >: 0.089063977448584256 0.072364578811011548 +< -2 2 0 >: -0.081303915849535016 -0.066059520298585667 +< -1 -2 3 >: -0.090900541338241381 -0.073856788974332344 +< -1 -1 2 >: 0.070411256552849577 0.057209222740388962 +< -1 0 1 >: -0.025710555677519436 -0.020889854528165702 +< -1 1 0 >: -0.025710555677519436 -0.020889854528165702 +< 0 -3 3 >: 0.090900541338241367 0.073856788974332330 +< 0 -1 1 >: -0.054540324802944809 -0.044314073384599389 +< 0 0 0 >: 0.036360216535296551 0.029542715589732933 +< 1 -3 2 >: -0.090900541338241381 -0.073856788974332344 +< 1 -2 1 >: 0.070411256552849577 0.057209222740388962 +< 2 -3 1 >: 0.057490550234226612 0.046711134765060294 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 4 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.033474215179731516 0.073809035014022292 +< 0 1 -1 >: -0.038652694289858874 0.085227332467944533 +< 1 -2 1 >: 0.022316143453154337 -0.049206023342681510 +< 1 -1 0 >: 0.063119585462628858 -0.139175651123334632 +< 1 0 -1 >: 0.054663164486979512 -0.120529649461047994 +< 2 -2 0 >: -0.049900413756890000 0.110028013096677313 +< 2 -1 -1 >: -0.070569841903022804 0.155603108362285580 +< 3 -2 -1 >: 0.086430051945642419 -0.190574108939298936 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 4 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.000004075443895903 0.116698363421342946 +< 1 -1 0 >: 0.000008150887791805 -0.233396726842685892 +< 2 -2 0 >: -0.000008150887791805 0.233396726842685864 +< 3 -3 0 >: 0.000008150887791805 -0.233396726842685864 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 4 ) +l=( 3 3 2 ) +num_ms=12 +< -3 1 2 >: -0.036048849696384208 0.009668486778914418 +< -3 2 1 >: 0.056998236034821709 -0.015287219874297195 +< -3 3 0 >: -0.056998236034821702 0.015287219874297193 +< -2 1 1 >: -0.044150643785212808 0.011841429596592819 +< -2 3 -1 >: 0.056998236034821709 -0.015287219874297195 +< -1 1 0 >: 0.034198941620893014 -0.009172331924578314 +< -1 2 -1 >: -0.044150643785212808 0.011841429596592819 +< -1 3 -2 >: -0.036048849696384208 0.009668486778914418 +< 0 0 0 >: -0.022799294413928681 0.006114887949718878 +< 0 1 -1 >: 0.032243071372715100 -0.008647757470884249 +< 0 2 -2 >: 0.101961544297151582 -0.027346610260731471 +< 1 1 -2 >: -0.055846637809612146 0.014978355311104856 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 4 ) +l=( 3 3 4 ) +num_ms=14 +< -3 -1 4 >: -0.013488971010532948 0.206467696043667576 +< -3 0 3 >: 0.016520548065500046 -0.252870251837519322 +< -3 1 2 >: -0.015295055458298488 0.234112361785722423 +< -3 2 1 >: 0.011400261241461535 -0.174497051775299727 +< -3 3 0 >: -0.003122090121700167 0.047787985737739284 +< -2 -2 4 >: 0.008707093346878121 -0.133274324717823217 +< -2 -1 3 >: -0.007787861044022256 0.119204179889773304 +< -2 0 2 >: -0.003605079144395725 0.055180812859427532 +< -2 1 1 >: 0.011774139181491847 -0.180219780130141144 +< -2 2 0 >: -0.007284876950633722 0.111505300054724990 +< -1 -1 2 >: 0.006581943896589877 -0.100745919815265386 +< -1 0 1 >: -0.008061202031135622 0.123388048607374540 +< -1 1 0 >: -0.001040696707233390 0.015929328579246439 +< 0 0 0 >: 0.003122090121700167 -0.047787985737739284 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 4 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.008380141684403685 -0.023364893579381544 +< 0 1 -1 >: 0.010263535549508285 -0.028616033581957814 +< 1 -2 1 >: -0.007257415586006507 0.020234591396464340 +< 1 -1 0 >: -0.016228074591277022 0.045245921859426670 +< 1 0 -1 >: -0.013250167418817790 0.036943140499144919 +< 2 -3 1 >: 0.004190070842201844 -0.011682446789690774 +< 2 -2 0 >: 0.014514831172013019 -0.040469182792928694 +< 2 -1 -1 >: 0.016228074591277026 -0.045245921859426677 +< 3 -3 0 >: -0.011085885424209038 0.030908848910266677 +< 3 -2 -1 >: -0.019201316801617317 0.053535696716051830 +< 4 -3 -1 >: 0.022171770848418083 -0.061817697820533375 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 4 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.003663090143367874 -0.072164658886293587 +< 1 -1 0 >: 0.007326180286735746 0.144329317772587118 +< 2 -2 0 >: -0.007326180286735746 -0.144329317772587118 +< 3 -3 0 >: 0.007326180286735746 0.144329317772587118 +< 4 -4 0 >: -0.007326180286735748 -0.144329317772587146 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 4 ) +l=( 4 4 2 ) +num_ms=18 +< -4 2 2 >: 0.008588732417776062 0.018271910908865912 +< -4 3 1 >: -0.016068047046998310 -0.034183615211316749 +< -4 4 0 >: 0.018553782575872080 0.039471838888256609 +< -3 1 2 >: -0.012883098626664095 -0.027407866363298870 +< -3 2 1 >: 0.015182877336015459 0.032300480272238842 +< -3 3 0 >: -0.004638445643968018 -0.009867959722064149 +< -3 4 -1 >: -0.016068047046998310 -0.034183615211316749 +< -2 1 1 >: -0.010329458815927482 -0.021975181207275048 +< -2 2 0 >: -0.005301080735963453 -0.011277668253787605 +< -2 3 -1 >: 0.015182877336015459 0.032300480272238842 +< -2 4 -2 >: 0.008588732417776062 0.018271910908865912 +< -1 1 0 >: 0.011264796563922333 0.023965045039298652 +< -1 2 -1 >: -0.010329458815927482 -0.021975181207275048 +< -1 3 -2 >: -0.012883098626664095 -0.027407866363298870 +< 0 0 0 >: -0.006626350919954315 -0.014097085317234503 +< 0 1 -1 >: 0.007258803745608175 0.015442583246648416 +< 0 2 -2 >: 0.030796496110931115 0.065517331996457207 +< 1 1 -2 >: -0.016231178610509975 -0.034530665887705266 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 1 4 ) +l=( 4 4 4 ) +num_ms=19 +< -4 0 4 >: -0.000865745293242400 0.004697279271587992 +< -4 1 3 >: 0.001368863500108181 -0.007427050652057349 +< -4 2 2 >: -0.001552145314319865 0.008421483857153082 +< -4 3 1 >: 0.001368863500108181 -0.007427050652057350 +< -4 4 0 >: -0.000432872646621200 0.002348639635793996 +< -3 -1 4 >: 0.001368863500108181 -0.007427050652057348 +< -3 0 3 >: -0.001298617939863599 0.007045918907381987 +< -3 1 2 >: 0.000517381771439955 -0.002807161285717693 +< -3 2 1 >: 0.000517381771439955 -0.002807161285717694 +< -3 3 0 >: -0.000649308969931800 0.003522959453690993 +< -2 -2 4 >: -0.000776072657159932 0.004210741928576540 +< -2 -1 3 >: 0.000517381771439955 -0.002807161285717693 +< -2 0 2 >: 0.000680228444690457 -0.003690719427676279 +< -2 1 1 >: -0.001173311571521298 0.006366043416049158 +< -2 2 0 >: 0.000340114222345228 -0.001845359713838139 +< -1 -1 2 >: -0.000586655785760649 0.003183021708024579 +< -1 0 1 >: 0.000556550545655828 -0.003019679531735138 +< -1 1 0 >: 0.000278275272827914 -0.001509839765867569 +< 0 0 0 >: -0.000278275272827914 0.001509839765867569 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 1 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: -0.006032080931175211 0.151129350255267830 +< 0 1 -1 >: -0.006032080931175210 0.151129350255267803 +< 1 -1 0 >: 0.010447870648162851 -0.261763713156996369 +< 1 0 -1 >: 0.010447870648162851 -0.261763713156996369 +< 2 -1 -1 >: -0.014775520368551681 0.370189793283764779 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 1 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.046178334643545510 0.143247010414325082 +< 0 1 -1 >: -0.053322147874359217 0.165407400046639341 +< 1 -2 1 >: 0.030785556429030327 -0.095498006942883351 +< 1 -1 0 >: 0.087074702854273864 -0.270109153196451346 +< 1 0 -1 >: 0.075408904698782503 -0.233921388462829477 +< 2 -2 0 >: -0.068838596900467508 0.213540035240034093 +< 2 -1 -1 >: -0.097352477351375644 0.301991213946084858 +< 3 -2 -1 >: 0.119231947353363149 -0.369862190485787501 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 1 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: -0.060874691017562065 -0.029595270771200832 +< 0 1 -1 >: -0.081166254690082776 -0.039460361028267790 +< 0 2 -2 >: -0.020291563672520690 -0.009865090257066946 +< 1 -2 1 >: 0.045373315741521550 0.022059012418972568 +< 1 -1 0 >: 0.111141471504919542 0.054033324656200046 +< 1 0 -1 >: 0.111141471504919556 0.054033324656200053 +< 1 1 -2 >: 0.045373315741521550 0.022059012418972568 +< 2 -2 0 >: -0.078588888172180016 -0.038207330274453312 +< 2 -1 -1 >: -0.128335116982992853 -0.062392309070935084 +< 2 0 -2 >: -0.078588888172180058 -0.038207330274453326 +< 3 -2 -1 >: 0.120046509610478316 0.058362661028286779 +< 3 -1 -2 >: 0.120046509610478302 0.058362661028286772 +< 4 -2 -2 >: -0.169771402006690469 -0.082537266762386818 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 1 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.004809322860405252 -0.017106067831302731 +< 0 1 -1 >: -0.005890193508147660 -0.020950568846064662 +< 1 -2 1 >: 0.004164995772112190 0.014814289300767945 +< 1 -1 0 >: 0.009313213672442080 0.033125757914864960 +< 1 0 -1 >: 0.007604207120998307 0.027047068078126787 +< 2 -3 1 >: -0.002404661430202626 -0.008553033915651367 +< 2 -2 0 >: -0.008329991544224383 -0.029628578601535900 +< 2 -1 -1 >: -0.009313213672442082 -0.033125757914864960 +< 3 -3 0 >: 0.006362136131625050 0.022629200695914509 +< 3 -2 -1 >: 0.011019543024644305 0.039194925339996939 +< 4 -3 -1 >: -0.012724272263250106 -0.045258401391829031 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 1 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: 0.001820359505609305 -0.038114414676048626 +< 0 1 -1 >: -0.000606786501869769 0.012704804892016220 +< 0 2 -2 >: -0.004247505513088378 0.088933634244113463 +< 0 3 -3 >: -0.001820359505609305 0.038114414676048626 +< 1 -3 2 >: 0.003323506546637227 -0.069587082280592627 +< 1 -2 1 >: 0.003432502801636616 -0.071869229542373486 +< 1 -1 0 >: -0.002350074016445069 0.049205497763593307 +< 1 0 -1 >: -0.002350074016445068 0.049205497763593294 +< 1 1 -2 >: 0.003432502801636615 -0.071869229542373472 +< 1 2 -3 >: 0.003323506546637228 -0.069587082280592641 +< 2 -3 1 >: -0.004458951937167850 0.093360867801165759 +< 2 -2 0 >: -0.001050985050585426 0.022005367573221690 +< 2 -1 -1 >: 0.003837654798708974 -0.080352241373641595 +< 2 0 -2 >: -0.001050985050585426 0.022005367573221694 +< 2 1 -3 >: -0.004458951937167850 0.093360867801165745 +< 3 -3 0 >: 0.004816218548574709 -0.100841262599615136 +< 3 -2 -1 >: -0.002270387196915739 0.047537027071734163 +< 3 -1 -2 >: -0.002270387196915739 0.047537027071734156 +< 3 0 -3 >: 0.004816218548574710 -0.100841262599615150 +< 4 -3 -1 >: -0.003932425977911945 0.082336546129020735 +< 4 -2 -2 >: 0.005076740107548792 -0.106296023980645332 +< 4 -1 -3 >: -0.003932425977911945 0.082336546129020735 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 2 1 1 ) +l=( 2 1 1 0 ) +num_ms=5 +< 0 0 0 0 >: -0.000065408670341292 -0.004809311015566168 +< 0 1 -1 0 >: -0.000065408670341292 -0.004809311015566167 +< 1 -1 0 0 >: 0.000113291140286642 0.008329971028361279 +< 1 0 -1 0 >: 0.000113291140286642 0.008329971028361279 +< 2 -1 -1 0 >: -0.000160217867090082 -0.011780358002483480 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 2 1 2 ) +l=( 2 1 1 0 ) +num_ms=5 +< 0 0 0 0 >: -0.000023351324155048 -0.011751894790749902 +< 0 1 -1 0 >: -0.000023351324155048 -0.011751894790749900 +< 1 -1 0 0 >: 0.000040445679860554 0.020354878862782852 +< 1 0 -1 0 >: 0.000040445679860554 0.020354878862782852 +< 2 -1 -1 0 >: -0.000057198828998196 -0.028786145748208952 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 2 ) +l=( 2 1 1 ) +num_ms=4 +< 0 -1 1 >: 0.017629754203650469 -0.090933532602500491 +< 0 0 0 >: 0.017629754203650472 -0.090933532602500505 +< 1 -1 0 >: -0.061071260011347224 0.315002997158503717 +< 2 -1 -1 >: 0.043183902089630445 -0.222740755384864708 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 2 ) +l=( 2 2 2 ) +num_ms=8 +< -2 0 2 >: 0.120496386283590121 0.154444853460479925 +< -2 1 1 >: -0.073788665561023384 -0.094577771094274135 +< -1 -1 2 >: -0.073788665561023384 -0.094577771094274135 +< -1 0 1 >: 0.060248193141795026 0.077222426730239921 +< 0 -2 2 >: 0.060248193141795026 0.077222426730239921 +< 0 -1 1 >: 0.030124096570897513 0.038611213365119960 +< 0 0 0 >: -0.030124096570897513 -0.038611213365119960 +< 1 -2 1 >: -0.073788665561023384 -0.094577771094274135 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 2 ) +l=( 2 3 3 ) +num_ms=12 +< -2 -1 3 >: 0.002020661438639850 -0.038631160094535065 +< -2 0 2 >: -0.005715293622977614 0.109265421071795613 +< -2 1 1 >: 0.003130395240070265 -0.059847135876322753 +< -1 -2 3 >: -0.003194946263087248 0.061081227276668197 +< -1 -1 2 >: 0.002474794733792907 -0.047313315201689243 +< -1 0 1 >: -0.001807334534524490 0.034552760008423049 +< 0 -3 3 >: 0.003194946263087247 -0.061081227276668190 +< 0 -1 1 >: -0.001916967757852348 0.036648736366000904 +< 0 0 0 >: 0.001277978505234899 -0.024432490910667279 +< 1 -3 2 >: -0.003194946263087248 0.061081227276668197 +< 1 -2 1 >: 0.002474794733792907 -0.047313315201689243 +< 2 -3 1 >: 0.002020661438639850 -0.038631160094535065 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 2 ) +l=( 2 4 4 ) +num_ms=18 +< -2 -2 4 >: -0.021795450007540320 0.034414313308814622 +< -2 -1 3 >: 0.032693175011310478 -0.051621469963221929 +< -2 0 2 >: -0.078151636206989131 0.123398915511877802 +< -2 1 1 >: 0.041189528880494666 -0.065036938968702745 +< -1 -3 4 >: 0.040775553259387698 -0.064383284801339494 +< -1 -2 3 >: -0.038529276248360361 0.060836485776353151 +< -1 -1 2 >: 0.026212855666749229 -0.041389254515146807 +< -1 0 1 >: -0.018420517307595374 0.029085403316504877 +< 0 -4 4 >: -0.047083553301326797 0.074343413622731364 +< 0 -3 3 >: 0.011770888325331696 -0.018585853405682834 +< 0 -2 2 >: 0.013452443800379089 -0.021240975320780394 +< 0 -1 1 >: -0.028586443075805552 0.045137072556658317 +< 0 0 0 >: 0.016815554750473857 -0.026551219150975486 +< 1 -4 3 >: 0.040775553259387698 -0.064383284801339494 +< 1 -3 2 >: -0.038529276248360361 0.060836485776353151 +< 1 -2 1 >: 0.026212855666749229 -0.041389254515146807 +< 2 -4 2 >: -0.021795450007540320 0.034414313308814622 +< 2 -3 1 >: 0.032693175011310478 -0.051621469963221929 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 2 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.039354261819319843 -0.073096770197199665 +< 0 1 -1 >: 0.045442387310286624 -0.084404879900490851 +< 1 -2 1 >: -0.026236174546213218 0.048731180131466427 +< 1 -1 0 >: -0.074207107736085048 0.137832591704732305 +< 1 0 -1 >: -0.064265240440818369 0.119366525885746422 +< 2 -2 0 >: 0.058665869754882465 -0.108966231397746097 +< 2 -1 -1 >: 0.082966068655768332 -0.154101522283377507 +< 3 -2 -1 >: -0.101612267085674737 0.188735049090203250 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 2 ) +l=( 3 2 3 ) +num_ms=14 +< -3 0 3 >: 0.035522450263794123 -0.065388831263795730 +< -3 1 2 >: -0.035522450263794123 0.065388831263795730 +< -3 2 1 >: 0.022466370180727707 -0.041355528066004198 +< -2 -1 3 >: -0.035522450263794123 0.065388831263795730 +< -2 1 1 >: 0.027515571657631192 -0.050649970902529567 +< -1 -2 3 >: 0.022466370180727707 -0.041355528066004198 +< -1 -1 2 >: 0.027515571657631192 -0.050649970902529567 +< -1 0 1 >: -0.021313470158276469 0.039233298758277427 +< 0 -2 2 >: -0.031772245406879618 0.058485548670044331 +< 0 -1 1 >: -0.010047266186356280 0.018494754400197162 +< 0 0 0 >: 0.014208980105517650 -0.026155532505518293 +< 1 -2 1 >: 0.034804751023875737 -0.064067708589299083 +< 1 -1 0 >: -0.010047266186356280 0.018494754400197162 +< 2 -2 0 >: -0.031772245406879618 0.058485548670044331 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 2 ) +l=( 4 2 2 ) +num_ms=9 +< 0 -2 2 >: 0.001098074194541128 0.019308485265777532 +< 0 -1 1 >: 0.004392296778164512 0.077233941063110143 +< 0 0 0 >: 0.003294222583623383 0.057925455797332583 +< 1 -2 1 >: -0.004910737086664580 -0.086350171193663311 +< 1 -1 0 >: -0.012028800123289836 -0.211513858626449752 +< 2 -2 0 >: 0.008505646136715820 0.149562883749695313 +< 2 -1 -1 >: 0.006944830989209591 0.122117583215317224 +< 3 -2 -1 >: -0.012992589085336324 -0.228461078646286619 +< 4 -2 -2 >: 0.009187147847411635 0.161546377947982378 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 2 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.003364811381474099 -0.039670949390755453 +< 0 1 -1 >: -0.004121035482660451 -0.048586791809563025 +< 1 -2 1 >: 0.002914012135299582 0.034356049964641026 +< 1 -1 0 >: 0.006515929221789180 0.076822463159316581 +< 1 0 -1 >: 0.005320233931157922 0.062725278508028157 +< 2 -3 1 >: -0.001682405690737050 -0.019835474695377730 +< 2 -2 0 >: -0.005828024270599166 -0.068712099929282067 +< 2 -1 -1 >: -0.006515929221789181 -0.076822463159316595 +< 3 -3 0 >: 0.004451227062010077 0.052479733180884128 +< 3 -2 -1 >: 0.007709751427426998 0.090897564236949599 +< 4 -3 -1 >: -0.008902454124020158 -0.104959466361768297 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 2 ) +l=( 4 3 3 ) +num_ms=14 +< 0 -3 3 >: 0.000225437443465702 0.004175983593506603 +< 0 -2 2 >: 0.000526020701419971 0.009743961718182073 +< 0 -1 1 >: 0.000075145814488567 0.001391994531168869 +< 0 0 0 >: -0.000225437443465702 -0.004175983593506603 +< 1 -3 2 >: -0.000823181153949737 -0.015248536092900333 +< 1 -2 1 >: -0.000850177840042436 -0.015748620357825524 +< 1 -1 0 >: 0.000582076976102827 0.010782343274457651 +< 2 -3 1 >: 0.001104413410816999 0.020458057956650524 +< 2 -2 0 >: 0.000260312737340688 0.004822010503684995 +< 2 -1 -1 >: -0.000475263860824708 -0.008803746417983734 +< 3 -3 0 >: -0.001192902823224861 -0.022097228135008629 +< 3 -2 -1 >: 0.000562339783732584 0.010416733239793845 +< 4 -3 -1 >: 0.000974001076542131 0.018042311220214498 +< 4 -2 -2 >: -0.000628714991439295 -0.011646261813830326 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 2 ) +l=( 4 4 4 ) +num_ms=25 +< -4 0 4 >: 0.037780855057295837 -0.000045677834222940 +< -4 1 3 >: -0.059736776964873076 0.000072222997364039 +< -4 2 2 >: 0.033867569137196990 -0.000040946590706769 +< -3 -1 4 >: -0.029868388482436531 0.000036111498682019 +< -3 0 3 >: 0.056671282585943734 -0.000068516751334410 +< -3 1 2 >: -0.022578379424797991 0.000027297727137846 +< -2 -2 4 >: 0.033867569137196983 -0.000040946590706769 +< -2 -1 3 >: -0.011289189712398996 0.000013648863568923 +< -2 0 2 >: -0.029684957545018140 0.000035889726889453 +< -2 1 1 >: 0.025601475842088453 -0.000030952713156017 +< -1 -3 4 >: -0.029868388482436517 0.000036111498682019 +< -1 -2 3 >: -0.011289189712398992 0.000013648863568923 +< -1 -1 2 >: 0.025601475842088457 -0.000030952713156017 +< -1 0 1 >: -0.024287692536833033 0.000029364322000461 +< 0 -4 4 >: 0.018890427528647915 -0.000022838917111470 +< 0 -3 3 >: 0.028335641292971878 -0.000034258375667205 +< 0 -2 2 >: -0.014842478772509082 0.000017944863444726 +< 0 -1 1 >: -0.012143846268416520 0.000014682161000231 +< 0 0 0 >: 0.012143846268416521 -0.000014682161000231 +< 1 -4 3 >: -0.029868388482436517 0.000036111498682019 +< 1 -3 2 >: -0.011289189712398992 0.000013648863568923 +< 1 -2 1 >: 0.025601475842088457 -0.000030952713156017 +< 2 -4 2 >: 0.033867569137196983 -0.000040946590706769 +< 2 -3 1 >: -0.011289189712398996 0.000013648863568923 +< 3 -4 1 >: -0.029868388482436531 0.000036111498682019 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 2 2 2 ) +l=( 0 1 1 2 ) +num_ms=4 +< 0 -1 -1 2 >: 0.000320036471237378 -0.009099011397214153 +< 0 -1 0 1 >: -0.000452599918077926 0.012867945322127617 +< 0 -1 1 0 >: 0.000130654342268747 -0.003714655847823882 +< 0 0 0 0 >: 0.000130654342268747 -0.003714655847823883 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 2 2 2 ) +l=( 0 2 2 2 ) +num_ms=5 +< 0 -2 0 2 >: -0.001100000042281807 0.073412066188337413 +< 0 -2 1 1 >: 0.000898146273543449 -0.059940701041617410 +< 0 -1 -1 2 >: 0.000449073136771725 -0.029970350520808705 +< 0 -1 0 1 >: -0.000550000021140903 0.036706033094168693 +< 0 0 0 0 >: 0.000183333340380301 -0.012235344364722898 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 2 2 2 ) +l=( 1 1 1 1 ) +num_ms=2 +< -1 -1 1 1 >: -0.000000000000114814 0.000000000000002808 +< 1 -1 -1 1 >: 0.000000000000114814 -0.000000000000002808 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 2 2 2 ) +l=( 1 1 2 2 ) +num_ms=16 +< -1 -1 0 2 >: 0.000357500900835941 0.004881002808116767 +< -1 -1 1 1 >: -0.000218923697408346 -0.002988991578244476 +< -1 0 -1 2 >: -0.000154802431010495 -0.002113536211060421 +< -1 0 0 1 >: 0.000126395655630697 0.001725695092304972 +< -1 1 -2 2 >: 0.000072974565817804 0.000996330522085308 +< -1 1 -1 1 >: 0.000036487282893880 0.000498165265038838 +< -1 1 0 0 >: -0.000072974565802782 -0.000996330526081492 +< 0 -1 -1 2 >: -0.000154802430989251 -0.002113536216711879 +< 0 -1 0 1 >: 0.000126395655630697 0.001725695092304972 +< 0 0 -2 2 >: 0.000145949131605564 0.001992661052162984 +< 0 0 -1 1 >: 0.000072974565802782 0.000996330526081492 +< 0 0 0 0 >: -0.000072974565802782 -0.000996330526081492 +< 0 1 -2 1 >: -0.000154802431010495 -0.002113536211060421 +< 1 -1 -2 2 >: 0.000072974565787760 0.000996330530077676 +< 1 -1 -1 1 >: 0.000036487282908902 0.000498165261042654 +< 1 0 -2 1 >: -0.000154802430989251 -0.002113536216711879 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 2 2 2 ) +l=( 2 0 1 1 ) +num_ms=4 +< 0 0 -1 1 >: 0.000068593145415220 -0.004344525164863466 +< 0 0 0 0 >: 0.000068593145415220 -0.004344525164863467 +< 1 0 -1 0 >: -0.000237613625820242 0.015049876640610154 +< 2 0 -1 -1 >: 0.000168018206119816 -0.010641869828596459 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 2 2 2 ) +l=( 2 0 2 2 ) +num_ms=8 +< -2 0 0 2 >: -0.002486022037894315 0.105169540284253848 +< -2 0 1 1 >: 0.001522371370538764 -0.064402927544875491 +< -1 0 -1 2 >: 0.001522371370538764 -0.064402927544875491 +< -1 0 0 1 >: -0.001243011018947157 0.052584770142126890 +< 0 0 -2 2 >: -0.001243011018947157 0.052584770142126890 +< 0 0 -1 1 >: -0.000621505509473579 0.026292385071063445 +< 0 0 0 0 >: 0.000621505509473579 -0.026292385071063445 +< 1 0 -2 1 >: 0.001522371370538764 -0.064402927544875491 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 2 2 2 ) +l=( 2 1 1 2 ) +num_ms=13 +< -2 -1 1 2 >: -0.000143002816486277 0.006718120187445183 +< -2 0 0 2 >: 0.000279983781678076 -0.012447391776107240 +< -2 0 1 1 >: -0.000294838600027421 0.012852841924573460 +< -1 -1 0 2 >: -0.000294838600027421 0.012852841924573460 +< -1 -1 1 1 >: 0.000351485189921215 -0.015806451869829829 +< -1 0 0 1 >: -0.000071501408243138 0.003359060093722592 +< 0 -1 -1 2 >: 0.000170225145093324 -0.007420591745004197 +< 0 -1 0 1 >: 0.000120367354423953 -0.005247150743309381 +< 0 -1 1 0 >: -0.000210489657199764 0.009417947881979020 +< 0 0 0 0 >: 0.000001003641882413 -0.000164808099797187 +< 1 -1 -1 1 >: -0.000208482373434938 0.009088331682384650 +< 1 -1 0 0 >: 0.000120367354423953 -0.005247150743309381 +< 2 -1 -1 0 >: 0.000170225145093324 -0.007420591745004197 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 1 2 2 2 ) +l=( 2 2 2 2 ) +num_ms=12 +< -2 -2 2 2 >: 0.000000000000004360 0.000000000000028454 +< -2 -1 1 2 >: -0.000000000000004360 -0.000000000000028454 +< -1 -2 1 2 >: -0.000000000000004360 -0.000000000000028454 +< -1 -1 0 2 >: 0.000000000000001506 -0.000000000000040996 +< -1 -1 1 1 >: 0.000000000000002516 0.000000000000078663 +< 0 -2 1 1 >: 0.000000000000001506 -0.000000000000040996 +< 0 -1 -1 2 >: -0.000000000000001506 0.000000000000040996 +< 1 -2 -1 2 >: 0.000000000000004360 0.000000000000028454 +< 1 -2 0 1 >: -0.000000000000001506 0.000000000000040996 +< 1 -1 -1 1 >: -0.000000000000002516 -0.000000000000078663 +< 2 -2 -2 2 >: -0.000000000000004360 -0.000000000000028454 +< 2 -2 -1 1 >: 0.000000000000004360 0.000000000000028454 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 3 ) +l=( 2 3 3 ) +num_ms=14 +< -2 -1 3 >: 0.022445003465771395 -0.028678602089656006 +< -2 0 2 >: -0.031742028308805043 0.040557668025092926 +< -2 1 1 >: 0.034771649851400160 -0.044428699314298783 +< -2 2 0 >: -0.031742028308805043 0.040557668025092926 +< -1 -2 3 >: -0.035488666521105362 0.045344851356488684 +< -1 -1 2 >: 0.027489402883069964 -0.035123970827986309 +< -1 0 1 >: -0.010037710700936646 0.012825460754427673 +< -1 1 0 >: -0.010037710700936646 0.012825460754427673 +< 0 -3 3 >: 0.035488666521105355 -0.045344851356488684 +< 0 -1 1 >: -0.021293199912663211 0.027206910813893204 +< 0 0 0 >: 0.014195466608442144 -0.018137940542595474 +< 1 -3 2 >: -0.035488666521105362 0.045344851356488684 +< 1 -2 1 >: 0.027489402883069964 -0.035123970827986309 +< 2 -3 1 >: 0.022445003465771395 -0.028678602089656006 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 3 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.003909118032464789 -0.065474700467181915 +< 0 1 -1 >: -0.004513860696675130 -0.075603671879675149 +< 1 -2 1 >: 0.002606078688309858 0.043649800311454594 +< 1 -1 0 >: 0.007371103651238577 0.123460279190672900 +< 1 0 -1 >: 0.006383563015900836 0.106919738137441989 +< 2 -2 0 >: -0.005827369101774331 -0.097603920700703978 +< 2 -1 -1 >: -0.008241144416683178 -0.138032788395723638 +< 3 -2 -1 >: 0.010093299358730152 0.169054949671542970 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 3 ) +l=( 3 2 3 ) +num_ms=14 +< -3 0 3 >: 0.114994567612826615 0.116868257509743459 +< -3 1 2 >: -0.114994567612826615 -0.116868257509743459 +< -3 2 1 >: 0.072728950440552789 0.073913975981173455 +< -2 -1 3 >: -0.114994567612826615 -0.116868257509743459 +< -2 1 1 >: 0.089074409053760087 0.090525763007103299 +< -1 -2 3 >: 0.072728950440552789 0.073913975981173455 +< -1 -1 2 >: 0.089074409053760087 0.090525763007103299 +< -1 0 1 >: -0.068996740567695947 -0.070120954505846059 +< 0 -2 2 >: -0.102854268090190465 -0.104530147281494720 +< 0 -1 1 >: -0.032525375423457868 -0.033055334956238115 +< 0 0 0 >: 0.045997827045130647 0.046747303003897386 +< 1 -2 1 >: 0.112671205537362235 0.114507039210823947 +< 1 -1 0 >: -0.032525375423457868 -0.033055334956238115 +< 2 -2 0 >: -0.102854268090190465 -0.104530147281494720 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 3 ) +l=( 3 3 2 ) +num_ms=14 +< -3 1 2 >: -0.018663326793617287 -0.075821938916878287 +< -3 2 1 >: 0.029509310691938944 0.119885011793747803 +< -3 3 0 >: -0.029509310691938941 -0.119885011793747789 +< -2 1 1 >: -0.022857813773588007 -0.092862530827413026 +< -2 3 -1 >: 0.029509310691938944 0.119885011793747803 +< -1 1 0 >: 0.017705586415163361 0.071931007076248651 +< -1 2 -1 >: -0.022857813773588007 -0.092862530827413026 +< -1 3 -2 >: -0.018663326793617287 -0.075821938916878287 +< 0 0 0 >: -0.011803724276775576 -0.047954004717499117 +< 0 1 -1 >: 0.008346493479364291 0.033908601920795332 +< 0 2 -2 >: 0.026393929870534748 0.107228414341673683 +< 1 0 -1 >: 0.008346493479364291 0.033908601920795332 +< 1 1 -2 >: -0.028913101542602578 -0.117462842680890273 +< 2 0 -2 >: 0.026393929870534748 0.107228414341673683 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 3 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.015960834663241177 -0.027940446653430408 +< 0 1 -1 >: 0.019547950396933734 -0.034219918743179180 +< 1 -2 1 >: -0.013822488283970105 0.024197136594954639 +< 1 -1 0 >: -0.030908023421151579 0.054106442287166372 +< 1 0 -1 >: -0.025236295446604332 0.044177725133634660 +< 2 -3 1 >: 0.007980417331620590 -0.013970223326715207 +< 2 -2 0 >: 0.027644976567940221 -0.048394273189909291 +< 2 -1 -1 >: 0.030908023421151582 -0.054106442287166379 +< 3 -3 0 >: -0.021114199617977752 0.036961736682521874 +< 3 -2 -1 >: -0.036570866499488860 0.064019605870110227 +< 4 -3 -1 >: 0.042228399235955519 -0.073923473365043776 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 4 ) +l=( 2 3 3 ) +num_ms=14 +< -2 -1 3 >: -0.019034907164356060 -0.004788559928114240 +< -2 0 2 >: 0.026919423870345141 0.006772046394575493 +< -2 1 1 >: -0.029488751377662114 -0.007418405141561056 +< -2 2 0 >: 0.026919423870345141 0.006772046394575493 +< -1 -2 3 >: 0.030096830844611094 0.007571378042526579 +< -1 -1 2 >: -0.023312904926960101 -0.005864764213309192 +< -1 0 1 >: 0.008512669272979584 0.002141509102718990 +< -1 1 0 >: 0.008512669272979584 0.002141509102718990 +< 0 -3 3 >: -0.030096830844611091 -0.007571378042526578 +< 0 -1 1 >: 0.018058098506766651 0.004542826825515945 +< 0 0 0 >: -0.012038732337844436 -0.003028551217010631 +< 1 -3 2 >: 0.030096830844611094 0.007571378042526579 +< 1 -2 1 >: -0.023312904926960101 -0.005864764213309192 +< 2 -3 1 >: -0.019034907164356060 -0.004788559928114240 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 4 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.004494209735994228 0.105381182914565316 +< 0 1 -1 >: 0.005189466401741807 0.121683708646490904 +< 1 -2 1 >: -0.002996139823996151 -0.070254121943043521 +< 1 -1 0 >: -0.008474363147722992 -0.198708664128930873 +< 1 0 -1 >: -0.007339013766822769 -0.172086751087723699 +< 2 -2 0 >: 0.006699572316549651 0.157092992364204959 +< 2 -1 -1 >: 0.009474626032163850 0.222163040355231683 +< 3 -2 -1 >: -0.011603999641245916 -0.272093044287832653 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 4 ) +l=( 3 2 3 ) +num_ms=14 +< -3 0 3 >: -0.108583709135183393 0.020736957145319656 +< -3 1 2 >: 0.108583709135183407 -0.020736957145319659 +< -3 2 1 >: -0.068674367531282338 0.013115203264102683 +< -2 -1 3 >: 0.108583709135183407 -0.020736957145319659 +< -2 1 1 >: -0.084108579429999122 0.016062777934967992 +< -1 -2 3 >: -0.068674367531282338 0.013115203264102683 +< -1 -1 2 >: -0.084108579429999122 0.016062777934967992 +< -1 0 1 >: 0.065150225481110019 -0.012442174287191791 +< 0 -2 2 >: 0.097120221950134047 -0.018547698329373908 +< 0 -1 1 >: 0.030712110822350355 -0.005865297207452147 +< 0 0 0 >: -0.043433483654073360 0.008294782858127863 +< 1 -2 1 >: -0.106389872703993582 0.020317985529597946 +< 1 -1 0 >: 0.030712110822350355 -0.005865297207452147 +< 2 -2 0 >: 0.097120221950134047 -0.018547698329373908 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 4 ) +l=( 3 3 2 ) +num_ms=14 +< -3 1 2 >: 0.016480307505388939 0.058759687309151966 +< -3 2 1 >: -0.026057654128498350 -0.092907223248105325 +< -3 3 0 >: 0.026057654128498347 0.092907223248105311 +< -2 1 1 >: 0.020184172096181417 0.071965625676457326 +< -2 3 -1 >: -0.026057654128498350 -0.092907223248105325 +< -1 1 0 >: -0.015634592477099005 -0.055744333948863176 +< -1 2 -1 >: 0.020184172096181417 0.071965625676457326 +< -1 3 -2 >: 0.016480307505388939 0.058759687309151966 +< 0 0 0 >: 0.010423061651399340 0.037162889299242129 +< 0 1 -1 >: -0.007370217574429931 -0.026278131031979103 +< 0 2 -2 >: -0.023306674386200155 -0.083098746713404975 +< 1 0 -1 >: -0.007370217574429931 -0.026278131031979103 +< 1 1 -2 >: 0.025531182603499389 0.091030116150680365 +< 2 0 -2 >: -0.023306674386200155 -0.083098746713404975 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 2 4 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.011735387748534349 0.046335658991316926 +< 0 1 -1 >: -0.014372855958809133 0.056749360712164972 +< 1 -2 1 >: 0.010163143913491416 -0.040127857787573294 +< 1 -1 0 >: 0.022725480655680048 -0.089728617804458219 +< 1 0 -1 >: 0.018555277255301931 -0.073263109648710786 +< 2 -3 1 >: -0.005867693874267176 0.023167829495658467 +< 2 -2 0 >: -0.020326287826982838 0.080255715575146616 +< 2 -1 -1 >: -0.022725480655680051 0.089728617804458233 +< 3 -3 0 >: 0.015524458760768045 -0.061296315262659266 +< 3 -2 -1 >: 0.026889151333658032 -0.106168332351685518 +< 4 -3 -1 >: -0.031048917521536101 0.122592630525318574 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 1 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: 0.016074341813435620 -0.076988436962834667 +< 0 1 -1 >: 0.016074341813435616 -0.076988436962834653 +< 1 -1 0 >: -0.027841576719099339 0.133347884414943385 +< 1 0 -1 >: -0.027841576719099339 0.133347884414943385 +< 2 -1 -1 >: 0.039373935394001296 -0.188582386653372791 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 1 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.021681852163816049 0.144948481443401556 +< 0 1 -1 >: 0.025036046366617718 0.167372089559950643 +< 1 -2 1 >: -0.014454568109210694 -0.096632320962267662 +< 1 -1 0 >: -0.040883692516582790 -0.273317477736857828 +< 1 0 -1 >: -0.035406316319872427 -0.236699879018406500 +< 2 -2 0 >: 0.032321396877595721 0.216076438495208439 +< 2 -1 -1 >: 0.045709357819139269 0.305578229829199632 +< 3 -2 -1 >: -0.055982301563593850 -0.374255369792232562 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 1 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: 0.003824450171526099 -0.001296334662190527 +< 0 1 -1 >: 0.005099266895368134 -0.001728446216254036 +< 0 2 -2 >: 0.001274816723842033 -0.000432111554063509 +< 1 -2 1 >: -0.002850576853364363 0.000966230808749082 +< 1 -1 0 >: -0.006982458763331155 0.002366772455191970 +< 1 0 -1 >: -0.006982458763331156 0.002366772455191971 +< 1 1 -2 >: -0.002850576853364363 0.000966230808749082 +< 2 -2 0 >: 0.004937343940906893 -0.001673560852591776 +< 2 -1 -1 >: 0.008062648893229409 -0.002732913428231351 +< 2 0 -2 >: 0.004937343940906894 -0.001673560852591776 +< 3 -2 -1 >: -0.007541917447079142 0.002556406429038884 +< 3 -1 -2 >: -0.007541917447079141 0.002556406429038883 +< 4 -2 -2 >: 0.010665881939957590 -0.003615304642884561 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 1 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.000693579002525661 0.141853933592052839 +< 0 1 -1 >: 0.000849457326248198 0.173734877653589748 +< 1 -2 1 >: -0.000600657035718694 -0.122849110117468505 +< 1 -1 0 >: -0.001343109963030520 -0.274698961198016789 +< 1 0 -1 >: -0.001096644692624383 -0.224290762602578686 +< 2 -3 1 >: 0.000346789501262831 0.070926966796026433 +< 2 -2 0 >: 0.001201314071437389 0.245698220234937093 +< 2 -1 -1 >: 0.001343109963030520 0.274698961198016789 +< 3 -3 0 >: -0.000917518777629570 -0.187655115390421567 +< 3 -2 -1 >: -0.001589189139752906 -0.325028194156410655 +< 4 -3 -1 >: 0.001835037555259140 0.375310230780843246 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 1 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: -0.002611489685934477 -0.008214556580714625 +< 0 1 -1 >: 0.000870496561978160 0.002738185526904878 +< 0 2 -2 >: 0.006093475933847112 0.019167298688334129 +< 0 3 -3 >: 0.002611489685934477 0.008214556580714625 +< 1 -3 2 >: -0.004767906032261314 -0.014997659797199688 +< 1 -2 1 >: -0.004924272175794656 -0.015489516433770379 +< 1 -1 0 >: 0.003371418687472223 0.010604946944528766 +< 1 0 -1 >: 0.003371418687472221 0.010604946944528761 +< 1 1 -2 >: -0.004924272175794655 -0.015489516433770376 +< 1 2 -3 >: -0.004767906032261315 -0.014997659797199692 +< 2 -3 1 >: 0.006396817199080564 0.020121472085972536 +< 2 -2 0 >: 0.001507744273160201 0.004742676453149000 +< 2 -1 -1 >: -0.005505503662393822 -0.017317805842255340 +< 2 0 -2 >: 0.001507744273160201 0.004742676453149000 +< 2 1 -3 >: 0.006396817199080564 0.020121472085972536 +< 3 -3 0 >: -0.006909352260392797 -0.021733673843239983 +< 3 -2 -1 >: 0.003257099891286899 0.010245352103101126 +< 3 -1 -2 >: 0.003257099891286898 0.010245352103101124 +< 3 0 -3 >: -0.006909352260392798 -0.021733673843239987 +< 4 -3 -1 >: 0.005641462497035975 0.017745470384003797 +< 4 -2 -2 >: -0.007283096766424677 -0.022909303755954541 +< 4 -1 -3 >: 0.005641462497035975 0.017745470384003797 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 2 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: -0.003912935032967597 0.008270316149055911 +< 0 1 -1 >: -0.003912935032967597 0.008270316149055910 +< 1 -1 0 >: 0.006777402283816078 -0.014324607764822219 +< 1 0 -1 >: 0.006777402283816078 -0.014324607764822219 +< 2 -1 -1 >: -0.009584694227431086 0.020258054576686526 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 2 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.023188891044067617 0.009202290289687139 +< 0 1 -1 >: -0.026776224973002669 0.010625889551823893 +< 1 -2 1 >: 0.015459260696045071 -0.006134860193124757 +< 1 -1 0 >: 0.043725392281216559 -0.017352004976759719 +< 1 0 -1 >: 0.037867300505973533 -0.015027277116467919 +< 2 -2 0 >: -0.034567957798247499 0.013717964424284447 +< 2 -1 -1 >: -0.048886474741822408 0.019400131336974692 +< 3 -2 -1 >: 0.059873459220461445 -0.023760211359283002 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 2 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: 0.034192908607169961 -0.017877247109522633 +< 0 1 -1 >: 0.045590544809559964 -0.023836329479363517 +< 0 2 -2 >: 0.011397636202389989 -0.005959082369840879 +< 1 -2 1 >: -0.025485889331356565 0.013324913262484746 +< 1 -1 0 >: -0.062427424502865134 0.032639238359931919 +< 1 0 -1 >: -0.062427424502865148 0.032639238359931926 +< 1 1 -2 >: -0.025485889331356565 0.013324913262484746 +< 2 -2 0 >: 0.044142855197987156 -0.023079426777071942 +< 2 -1 -1 >: 0.072084980683088468 -0.037688546106502109 +< 2 0 -2 >: 0.044142855197987177 -0.023079426777071949 +< 3 -2 -1 >: -0.067429325112083729 0.035254406734040983 +< 3 -1 -2 >: -0.067429325112083716 0.035254406734040983 +< 4 -2 -2 >: 0.095359466075173496 -0.049857260136698119 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 2 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.004687493334737923 0.008742309607119626 +< 0 1 -1 >: 0.005740983421402529 0.010707098855437179 +< 1 -2 1 >: -0.004059488307953275 -0.007571062207514351 +< 1 -1 0 >: -0.009077291810449124 -0.016929409757881712 +< 1 0 -1 >: -0.007411577727314956 -0.013822805184434893 +< 2 -3 1 >: 0.002343746667368962 0.004371154803559814 +< 2 -2 0 >: 0.008118976615906553 0.015142124415028707 +< 2 -1 -1 >: 0.009077291810449126 0.016929409757881712 +< 3 -3 0 >: -0.006200970817994696 -0.011564988552384657 +< 3 -2 -1 >: -0.010740396513018757 -0.020031147761682674 +< 4 -3 -1 >: 0.012401941635989394 0.023129977104769321 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 2 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: 0.002177512226194075 0.007340828969379939 +< 0 1 -1 >: -0.000725837408731359 -0.002446942989793315 +< 0 2 -2 >: -0.005080861861119508 -0.017128600928553190 +< 0 3 -3 >: -0.002177512226194075 -0.007340828969379939 +< 1 -3 2 >: 0.003975575218432621 0.013402458724389308 +< 1 -2 1 >: 0.004105956430022523 0.013841999850077896 +< 1 -1 0 >: -0.002811156196070897 -0.009476969448588489 +< 1 0 -1 >: -0.002811156196070896 -0.009476969448588486 +< 1 1 -2 >: 0.004105956430022522 0.013841999850077892 +< 1 2 -3 >: 0.003975575218432622 0.013402458724389310 +< 2 -3 1 >: -0.005333793862847352 -0.017981285264021773 +< 2 -2 0 >: -0.001257187269956850 -0.004238229581546509 +< 2 -1 -1 >: 0.004590598845091359 0.015475826304658035 +< 2 0 -2 >: -0.001257187269956850 -0.004238229581546510 +< 2 1 -3 >: -0.005333793862847351 -0.017981285264021773 +< 3 -3 0 >: 0.005761155827312150 0.019422007870037901 +< 3 -2 -1 >: -0.002715834901976544 -0.009155622312774864 +< 3 -1 -2 >: -0.002715834901976544 -0.009155622312774864 +< 3 0 -3 >: 0.005761155827312151 0.019422007870037904 +< 4 -3 -1 >: -0.004703964035192215 -0.015858003020637335 +< 4 -2 -2 >: 0.006072791456486028 0.020472593867678430 +< 4 -1 -3 >: -0.004703964035192215 -0.015858003020637335 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 3 ) +l=( 2 1 1 ) +num_ms=4 +< 0 -1 1 >: -0.047029213218911819 -0.050627883867582490 +< 0 0 0 >: -0.047029213218911826 -0.050627883867582504 +< 1 -1 0 >: 0.162913973470290296 0.175380134276699212 +< 2 -1 -1 >: -0.115197575390887555 -0.124012482232461266 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 3 ) +l=( 2 2 2 ) +num_ms=8 +< -2 0 2 >: -0.025237475186649448 0.183673013227056120 +< -2 1 1 >: 0.015454734150860693 -0.112476290481438201 +< -1 -1 2 >: 0.015454734150860693 -0.112476290481438201 +< -1 0 1 >: -0.012618737593324717 0.091836506613528004 +< 0 -2 2 >: -0.012618737593324717 0.091836506613528004 +< 0 -1 1 >: -0.006309368796662359 0.045918253306764002 +< 0 0 0 >: 0.006309368796662359 -0.045918253306764002 +< 1 -2 1 >: 0.015454734150860693 -0.112476290481438201 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 3 ) +l=( 2 3 3 ) +num_ms=12 +< -2 -1 3 >: -0.020074498512695594 0.107062520909747841 +< -2 0 2 >: 0.056779256108985293 -0.302818538184837061 +< -2 1 1 >: -0.031099279369254246 0.165860544194574744 +< -1 -2 3 >: 0.031740569092890310 -0.169280709057102768 +< -1 -1 2 >: -0.024586139099182017 0.131124273402468461 +< -1 0 1 >: 0.017955177315442314 -0.095759629838675545 +< 0 -3 3 >: -0.031740569092890310 0.169280709057102741 +< 0 -1 1 >: 0.019044341455734182 -0.101568425434261631 +< 0 0 0 >: -0.012696227637156124 0.067712283622841096 +< 1 -3 2 >: 0.031740569092890310 -0.169280709057102768 +< 1 -2 1 >: -0.024586139099182017 0.131124273402468461 +< 2 -3 1 >: -0.020074498512695594 0.107062520909747841 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 3 ) +l=( 2 4 4 ) +num_ms=18 +< -2 -2 4 >: -0.000841419805470141 -0.009360728564836463 +< -2 -1 3 >: 0.001262129708205211 0.014041092847254693 +< -2 0 2 >: -0.003017067071875477 -0.033564631754718646 +< -2 1 1 >: 0.001590133966770241 0.017690114194954164 +< -1 -3 4 >: 0.001574152315257623 0.017512319590103093 +< -1 -2 3 >: -0.001487434125681505 -0.016547586612606198 +< -1 -1 2 >: 0.001011955059808471 0.011257919736494842 +< -1 0 1 >: -0.000711129528605930 -0.007911259573930293 +< 0 -4 4 >: -0.001817674525918921 -0.020221484858961546 +< 0 -3 3 >: 0.000454418631479730 0.005055371214740385 +< 0 -2 2 >: 0.000519335578833978 0.005777567102560443 +< 0 -1 1 >: -0.001103588105022202 -0.012277330092940936 +< 0 0 0 >: 0.000649169473542472 0.007221958878200552 +< 1 -4 3 >: 0.001574152315257623 0.017512319590103093 +< 1 -3 2 >: -0.001487434125681505 -0.016547586612606198 +< 1 -2 1 >: 0.001011955059808471 0.011257919736494842 +< 2 -4 2 >: -0.000841419805470141 -0.009360728564836463 +< 2 -3 1 >: 0.001262129708205211 0.014041092847254693 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 3 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.005205621898156869 -0.051588496234578299 +< 0 1 -1 >: -0.006010934408400555 -0.059569264376243526 +< 1 -2 1 >: 0.003470414598771245 0.034392330823052188 +< 1 -1 0 >: 0.009815814785279757 0.097276201383165298 +< 1 0 -1 >: 0.008500744962895162 0.084243661581472062 +< 2 -2 0 >: -0.007760082952960163 -0.076903589625006000 +< 2 -1 -1 >: -0.010974414557216518 -0.108758099442858316 +< 3 -2 -1 >: 0.013440857945476127 0.133200924514937147 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 3 ) +l=( 3 2 3 ) +num_ms=14 +< -3 0 3 >: -0.082462230780954784 0.139406072728251590 +< -3 1 2 >: 0.082462230780954798 -0.139406072728251590 +< -3 2 1 >: -0.052153694041252537 0.088168141896071694 +< -2 -1 3 >: 0.082462230780954798 -0.139406072728251590 +< -2 1 1 >: -0.063874969301150136 0.107983479607339714 +< -1 -2 3 >: -0.052153694041252537 0.088168141896071694 +< -1 -1 2 >: -0.063874969301150136 0.107983479607339714 +< -1 0 1 >: 0.049477338468572864 -0.083643643636950926 +< 0 -2 2 >: 0.073756461440996235 -0.124688582038660123 +< 0 -1 1 >: 0.023323841030793283 -0.039429991745892706 +< 0 0 0 >: -0.032984892312381914 0.055762429091300636 +< 1 -2 1 >: -0.080796155385987251 0.136589498091815281 +< 1 -1 0 >: 0.023323841030793283 -0.039429991745892706 +< 2 -2 0 >: 0.073756461440996235 -0.124688582038660123 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 3 ) +l=( 4 2 2 ) +num_ms=9 +< 0 -2 2 >: -0.008898299215685870 -0.009776235584328294 +< 0 -1 1 >: -0.035593196862743488 -0.039104942337313174 +< 0 0 0 >: -0.026694897647057608 -0.029328706752984872 +< 1 -2 1 >: 0.039794403860813336 0.043720654661220881 +< 1 -1 0 >: 0.097475984077233582 0.107093295140426092 +< 2 -2 0 >: -0.068925929343843784 -0.075726395213407613 +< 2 -1 -1 >: -0.056277785646514485 -0.061830342777729051 +< 3 -2 -1 >: 0.105286096187780731 0.115673979390527384 +< 4 -2 -2 >: -0.074448512579038853 -0.081793855233874835 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 3 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.015007866695251853 -0.057139486949664538 +< 0 1 -1 >: -0.018380807765538344 -0.069981293595548277 +< 1 -2 1 >: 0.012997193814698516 0.049484247257618894 +< 1 -1 0 >: 0.029062608886405689 0.110650140683443421 +< 1 0 -1 >: 0.023729520788589985 0.090345461547203396 +< 2 -3 1 >: -0.007503933347625928 -0.028569743474832276 +< 2 -2 0 >: -0.025994387629397042 -0.098968494515237829 +< 2 -1 -1 >: -0.029062608886405692 -0.110650140683443421 +< 3 -3 0 >: 0.019853541492622598 0.075588436255316513 +< 3 -2 -1 >: 0.034387342575399195 0.130923012058889593 +< 4 -3 -1 >: -0.039707082985245210 -0.151176872510633054 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 3 ) +l=( 4 3 3 ) +num_ms=14 +< 0 -3 3 >: 0.002520546632108451 -0.005915906059051884 +< 0 -2 2 >: 0.005881275474919720 -0.013803780804454395 +< 0 -1 1 >: 0.000840182210702818 -0.001971968686350630 +< 0 0 0 >: -0.002520546632108451 0.005915906059051884 +< 1 -3 2 >: -0.009203734984329824 0.021601834644161370 +< 1 -2 1 >: -0.009505576617924266 0.022310278886496913 +< 1 -1 0 >: 0.006508023419663483 -0.015274803762956998 +< 2 -3 1 >: 0.012348106243112675 -0.028981902421832895 +< 2 -2 0 >: 0.002910476553105637 -0.006831099911388285 +< 2 -1 -1 >: -0.005313778870752801 0.012471825046796354 +< 3 -3 0 >: -0.013337479113000747 0.031304032423742960 +< 3 -2 -1 >: 0.006287347949824511 -0.014756862403541467 +< 4 -3 -1 >: 0.010890006093960071 -0.025559635443236802 +< 4 -2 -2 >: -0.007029468707000771 0.016498673734464821 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 3 ) +l=( 4 4 4 ) +num_ms=25 +< -4 0 4 >: 0.003679990763049324 -0.009296407074617208 +< -4 1 3 >: -0.005818576289808433 0.014698910205946636 +< -4 2 2 >: 0.003298822681562143 -0.008333498774700855 +< -3 -1 4 >: -0.002909288144904216 0.007349455102973316 +< -3 0 3 >: 0.005519986144573985 -0.013944610611925807 +< -3 1 2 >: -0.002199215121041429 0.005555665849800571 +< -2 -2 4 >: 0.003298822681562143 -0.008333498774700854 +< -2 -1 3 >: -0.001099607560520714 0.002777832924900285 +< -2 0 2 >: -0.002891421313824468 0.007304319844342088 +< -2 1 1 >: 0.002493675552775042 -0.006299532945405699 +< -1 -3 4 >: -0.002909288144904214 0.007349455102973313 +< -1 -2 3 >: -0.001099607560520714 0.002777832924900284 +< -1 -1 2 >: 0.002493675552775043 -0.006299532945405700 +< -1 0 1 >: -0.002365708347674566 0.005976261690825347 +< 0 -4 4 >: 0.001839995381524662 -0.004648203537308603 +< 0 -3 3 >: 0.002759993072286993 -0.006972305305962906 +< 0 -2 2 >: -0.001445710656912235 0.003652159922171047 +< 0 -1 1 >: -0.001182854173837283 0.002988130845412674 +< 0 0 0 >: 0.001182854173837283 -0.002988130845412675 +< 1 -4 3 >: -0.002909288144904214 0.007349455102973313 +< 1 -3 2 >: -0.001099607560520714 0.002777832924900284 +< 1 -2 1 >: 0.002493675552775043 -0.006299532945405700 +< 2 -4 2 >: 0.003298822681562143 -0.008333498774700854 +< 2 -3 1 >: -0.001099607560520714 0.002777832924900285 +< 3 -4 1 >: -0.002909288144904216 0.007349455102973316 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 4 ) +l=( 2 3 3 ) +num_ms=14 +< -2 -1 3 >: -0.003451767512611046 0.009424699117887672 +< -2 0 2 >: 0.004881536430493386 -0.013328537313802496 +< -2 1 1 >: -0.005347455236528954 0.014600681090637878 +< -2 2 0 >: 0.004881536430493386 -0.013328537313802496 +< -1 -2 3 >: 0.005457723646612442 -0.014901757737152405 +< -1 -1 2 >: -0.004227534558306482 0.011542851909041760 +< -1 0 1 >: 0.001543677360144733 -0.004214853579015829 +< -1 1 0 >: 0.001543677360144733 -0.004214853579015829 +< 0 -3 3 >: -0.005457723646612441 0.014901757737152403 +< 0 -1 1 >: 0.003274634187967464 -0.008941054642291439 +< 0 0 0 >: -0.002183089458644977 0.005960703094860961 +< 1 -3 2 >: 0.005457723646612442 -0.014901757737152405 +< 1 -2 1 >: -0.004227534558306482 0.011542851909041760 +< 2 -3 1 >: -0.003451767512611046 0.009424699117887672 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 4 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.002196774961861487 0.032475662370909410 +< 0 1 -1 >: 0.002536617231159517 0.037499664823911878 +< 1 -2 1 >: -0.001464516641240990 -0.021650441580606264 +< 1 -1 0 >: -0.004142278592728203 -0.061236696229319557 +< 1 0 -1 >: -0.003587318490855077 -0.053032534578421463 +< 2 -2 0 >: 0.003274758763994527 0.048411859117123611 +< 2 -1 -1 >: 0.004631208257541214 0.068464707743131778 +< 3 -2 -1 >: -0.005672048561769978 -0.083851799679724656 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 4 ) +l=( 3 2 3 ) +num_ms=14 +< -3 0 3 >: 0.092871730118677082 0.122981467016222271 +< -3 1 2 >: -0.092871730118677095 -0.122981467016222284 +< -3 2 1 >: 0.058737239483095893 0.077780309152026841 +< -2 -1 3 >: -0.092871730118677095 -0.122981467016222284 +< -2 1 1 >: 0.071938132816621259 0.095261034729197155 +< -1 -2 3 >: 0.058737239483095893 0.077780309152026841 +< -1 -1 2 >: 0.071938132816621259 0.095261034729197155 +< -1 0 1 >: -0.055723038071206238 -0.073788880209733343 +< 0 -2 2 >: -0.083067000693350684 -0.109997968088368550 +< 0 -1 1 >: -0.026268092058977410 -0.034784411714976211 +< 0 0 0 >: 0.037148692047470837 0.049192586806488907 +< 1 -2 1 >: 0.090995340128090879 0.120496736803465732 +< 1 -1 0 >: -0.026268092058977410 -0.034784411714976211 +< 2 -2 0 >: -0.083067000693350684 -0.109997968088368550 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 4 ) +l=( 3 3 2 ) +num_ms=14 +< -3 1 2 >: 0.034114368889974593 -0.122455747258013378 +< -3 2 1 >: -0.053939553315754896 0.193619536956620458 +< -3 3 0 >: 0.053939553315754889 -0.193619536956620458 +< -2 1 1 >: 0.041781398338757166 -0.149977048426676557 +< -2 3 -1 >: -0.053939553315754896 0.193619536956620458 +< -1 1 0 >: -0.032363731989452922 0.116171722173972244 +< -1 2 -1 >: 0.041781398338757166 -0.149977048426676557 +< -1 3 -2 >: 0.034114368889974593 -0.122455747258013378 +< 0 0 0 >: 0.021575821326301956 -0.077447814782648186 +< 0 1 -1 >: -0.015256409569497449 0.054763875020890293 +< 0 2 -2 >: -0.048245003156000874 0.173178578562814545 +< 1 0 -1 >: -0.015256409569497449 0.054763875020890293 +< 1 1 -2 >: 0.052849753030899213 -0.189707627911068211 +< 2 0 -2 >: -0.048245003156000874 0.173178578562814545 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 3 4 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.010502990198937533 0.045507240709490512 +< 0 1 -1 >: 0.012863483380424871 0.055734759670131043 +< 1 -2 1 >: -0.009095856327978880 -0.039410426510552161 +< 1 -1 0 >: -0.020338953062932399 -0.088124392699854490 +< 1 0 -1 >: -0.016606685635533799 -0.071953265335763419 +< 2 -3 1 >: 0.005251495099468768 0.022753620354745260 +< 2 -2 0 >: 0.018191712655957766 0.078820853021104365 +< 2 -1 -1 >: 0.020338953062932402 0.088124392699854490 +< 3 -3 0 >: -0.013894150044468763 -0.060200420885033211 +< 3 -2 -1 >: -0.024065373805005279 -0.104270187609908124 +< 4 -3 -1 >: 0.027788300088937533 0.120400841770066463 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 1 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: 0.008476853230064019 0.014522391911916168 +< 0 1 -1 >: 0.008476853230064018 0.014522391911916167 +< 1 -1 0 >: -0.014682340482775232 -0.025153520638866132 +< 1 0 -1 >: -0.014682340482775232 -0.025153520638866132 +< 2 -1 -1 >: 0.020763965038120266 0.035572450028916042 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 1 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.008809116627443402 -0.051393694703885100 +< 0 1 -1 >: -0.010171891712354508 -0.059344326943874981 +< 1 -2 1 >: 0.005872744418295599 0.034262463135923384 +< 1 -1 0 >: 0.016610629609409063 0.096908880094262143 +< 1 0 -1 >: 0.014385227214602229 0.083925552013931093 +< 2 -2 0 >: -0.013131855733791421 -0.076613196648505327 +< 2 -1 -1 >: -0.018571248477854716 -0.108347421757073167 +< 3 -2 -1 >: 0.022745041328591419 0.132697949125476833 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 1 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: -0.056947247360977574 0.067292612316523850 +< 0 1 -1 >: -0.075929663147970117 0.089723483088698500 +< 0 2 -2 >: -0.018982415786992526 0.022430870772174621 +< 1 -2 1 >: 0.042445972076880459 -0.050156951841095650 +< 1 -1 0 >: 0.103970973224779883 -0.122858939064033640 +< 1 0 -1 >: 0.103970973224779883 -0.122858939064033654 +< 1 1 -2 >: 0.042445972076880459 -0.050156951841095650 +< 2 -2 0 >: -0.073518580213806792 0.086874388941562977 +< 2 -1 -1 >: -0.120055338758468078 0.141865283081943322 +< 2 0 -2 >: -0.073518580213806820 0.086874388941563005 +< 3 -2 -1 >: 0.112301486271817519 -0.132702821092582413 +< 3 -1 -2 >: 0.112301486271817519 -0.132702821092582385 +< 4 -2 -2 >: -0.158818284960260236 0.187670129354300413 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 1 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.009125624293360770 0.061675009519915142 +< 0 1 -1 >: -0.011176561551540098 0.075536151602543511 +< 1 -2 1 >: 0.007903022463442844 -0.053412125022893608 +< 1 -1 0 >: 0.017671695455966051 -0.119433142373907647 +< 1 0 -1 >: 0.014428878918992307 -0.097516752397749873 +< 2 -3 1 >: -0.004562812146680387 0.030837504759957578 +< 2 -2 0 >: -0.015806044926885695 0.106824250045787258 +< 2 -1 -1 >: -0.017671695455966051 0.119433142373907661 +< 3 -3 0 >: 0.012072066219221069 -0.081588368648618292 +< 3 -2 -1 >: 0.020909432044026822 -0.141315199806066633 +< 4 -3 -1 >: -0.024144132438442146 0.163176737297236640 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 1 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: 0.008245976518538201 0.001192751997317891 +< 0 1 -1 >: -0.002748658839512736 -0.000397583999105964 +< 0 2 -2 >: -0.019240611876589136 -0.002783087993741745 +< 0 3 -3 >: -0.008245976518538201 -0.001192751997317891 +< 1 -3 2 >: 0.015055024492870961 0.002177657248134500 +< 1 -2 1 >: 0.015548762436702404 0.002249074734872745 +< 1 -1 0 >: -0.010645509909838625 -0.001539836207255942 +< 1 0 -1 >: -0.010645509909838620 -0.001539836207255942 +< 1 1 -2 >: 0.015548762436702402 0.002249074734872745 +< 1 2 -3 >: 0.015055024492870965 0.002177657248134501 +< 2 -3 1 >: -0.020198434901390269 -0.002921633783114323 +< 2 -2 0 >: -0.004760816762709361 -0.000688635686727948 +< 2 -1 -1 >: 0.017384044887230922 0.002514541996826387 +< 2 0 -2 >: -0.004760816762709362 -0.000688635686727948 +< 2 1 -3 >: -0.020198434901390266 -0.002921633783114323 +< 3 -3 0 >: 0.021816803184930275 0.003155725160678719 +< 3 -2 -1 >: -0.010284539650584311 -0.001487623107117953 +< 3 -1 -2 >: -0.010284539650584309 -0.001487623107117953 +< 3 0 -3 >: 0.021816803184930279 0.003155725160678719 +< 4 -3 -1 >: -0.017813345207268693 -0.002576638804041773 +< 4 -2 -2 >: 0.022996929775998445 0.003326426392415193 +< 4 -1 -3 >: -0.017813345207268693 -0.002576638804041773 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 2 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: -0.003321486338984252 -0.000643706857129781 +< 0 1 -1 >: -0.003321486338984252 -0.000643706857129781 +< 1 -1 0 >: 0.005752983095766669 0.001114932981729262 +< 1 0 -1 >: 0.005752983095766669 0.001114932981729262 +< 2 -1 -1 >: -0.008135946718136377 -0.001576753343898596 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 2 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.018889021454609311 0.062064370363208311 +< 0 1 -1 >: 0.021811163243094595 0.071665761872565861 +< 1 -2 1 >: -0.012592680969739535 -0.041376246908805522 +< 1 -1 0 >: -0.035617480428086469 -0.117029699077061275 +< 1 0 -1 >: -0.030845642869517916 -0.101350692397983305 +< 2 -2 0 >: 0.028158090667305579 0.092520100741904712 +< 2 -1 -1 >: 0.039821553712234822 0.130843181261326685 +< 3 -2 -1 >: -0.048771243679904291 -0.160249515206369930 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 2 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: 0.027289245792213691 -0.004604817381872335 +< 0 1 -1 >: 0.036385661056284935 -0.006139756509163115 +< 0 2 -2 >: 0.009096415264071232 -0.001534939127290779 +< 1 -2 1 >: -0.020340202882029975 0.003432228229946383 +< 1 -1 0 >: -0.049823118325661261 0.008407207844144528 +< 1 0 -1 >: -0.049823118325661268 0.008407207844144530 +< 1 1 -2 >: -0.020340202882029975 0.003432228229946383 +< 2 -2 0 >: 0.035230264827934808 -0.005944793677439330 +< 2 -1 -1 >: 0.057530781554374216 -0.009707807423899956 +< 2 0 -2 >: 0.035230264827934822 -0.005944793677439331 +< 3 -2 -1 >: -0.053815118442450592 0.009080822339253546 +< 3 -1 -2 >: -0.053815118442450585 0.009080822339253546 +< 4 -2 -2 >: 0.076106070362028072 -0.012842222109672936 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 2 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.005376732345743923 -0.048444838179329965 +< 0 1 -1 >: 0.006585125365295138 -0.059332567105529817 +< 1 -2 1 >: -0.004656386800763732 0.041954460545526019 +< 1 -1 0 >: -0.010411997416040477 0.093813025739129113 +< 1 0 -1 >: -0.008501360290825365 0.076598014762483652 +< 2 -3 1 >: 0.002688366172871962 -0.024222419089664986 +< 2 -2 0 >: 0.009312773601527468 -0.083908921091052080 +< 2 -1 -1 >: 0.010411997416040477 -0.093813025739129113 +< 3 -3 0 >: -0.007112748326497687 0.064086497063637088 +< 3 -2 -1 >: -0.012319641482944503 0.111001068993333146 +< 4 -3 -1 >: 0.014225496652995379 -0.128172994127274231 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 2 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: -0.000939000085659110 -0.036515326430728329 +< 0 1 -1 >: 0.000313000028553037 0.012171775476909452 +< 0 2 -2 >: 0.002191000199871256 0.085202428338366096 +< 0 3 -3 >: 0.000939000085659110 0.036515326430728329 +< 1 -3 2 >: -0.001714371761382592 -0.066667559935915013 +< 1 -2 1 >: -0.001770595541611482 -0.068853959830422334 +< 1 -1 0 >: 0.001212243897948357 0.047141083715846119 +< 1 0 -1 >: 0.001212243897948357 0.047141083715846105 +< 1 1 -2 >: -0.001770595541611481 -0.068853959830422320 +< 1 2 -3 >: -0.001714371761382592 -0.066667559935915027 +< 2 -3 1 >: 0.002300071078294516 0.089443917546448537 +< 2 -2 0 >: 0.000542131952224369 0.021082133544328047 +< 2 -1 -1 >: -0.001979585995850665 -0.076981067350432114 +< 2 0 -2 >: 0.000542131952224369 0.021082133544328051 +< 2 1 -3 >: 0.002300071078294515 0.089443917546448523 +< 3 -3 0 >: -0.002484360707722353 -0.096610472778050974 +< 3 -2 -1 >: 0.001171138868895924 0.045542613623332139 +< 3 -1 -2 >: 0.001171138868895924 0.045542613623332132 +< 3 0 -3 >: -0.002484360707722353 -0.096610472778050988 +< 4 -3 -1 >: 0.002028472023646487 0.078882120705089778 +< 4 -2 -2 >: -0.002618746121943499 -0.101836379934778620 +< 4 -1 -3 >: 0.002028472023646487 0.078882120705089778 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 3 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: 0.040668858788855060 0.075358621345957930 +< 0 1 -1 >: 0.040668858788855053 0.075358621345957916 +< 1 -1 0 >: -0.070440529708141048 -0.130524960959543662 +< 1 0 -1 >: -0.070440529708141048 -0.130524960959543662 +< 2 -1 -1 >: 0.099617952453997960 0.184590170017205402 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 3 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.025838414533841458 -0.044005534434981834 +< 0 1 -1 >: -0.029835631173092996 -0.050813214303740195 +< 1 -2 1 >: 0.017225609689227633 0.029337022956654545 +< 1 -1 0 >: 0.048721381685302240 0.082977631489903420 +< 1 0 -1 >: 0.042193954246949612 0.071860736816119930 +< 2 -2 0 >: -0.038517634218992021 -0.065599577588551450 +< 2 -1 -1 >: -0.054472160703024533 -0.092771812311675583 +< 3 -2 -1 >: 0.066714499454647747 0.113621801338427739 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 3 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: -0.001622342585559750 -0.010551035010337882 +< 0 1 -1 >: -0.002163123447413001 -0.014068046680450514 +< 0 2 -2 >: -0.000540780861853250 -0.003517011670112628 +< 1 -2 1 >: 0.001209222768034790 0.007864277172031902 +< 1 -1 0 >: 0.002961978767041101 0.019263466267296043 +< 1 0 -1 >: 0.002961978767041101 0.019263466267296043 +< 1 1 -2 >: 0.001209222768034790 0.007864277172031902 +< 2 -2 0 >: -0.002094435271905331 -0.013621327626763336 +< 2 -1 -1 >: -0.003420198476970272 -0.022243534869897292 +< 2 0 -2 >: -0.002094435271905332 -0.013621327626763342 +< 3 -2 -1 >: 0.003199302723897201 0.020806921638478741 +< 3 -1 -2 >: 0.003199302723897201 0.020806921638478741 +< 4 -2 -2 >: -0.004524497302272606 -0.029425430772370850 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 3 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.006285520405620221 -0.027977794219560634 +< 0 1 -1 >: 0.007698158880810546 -0.034265659983256133 +< 1 -2 1 >: -0.005443420347272581 0.024229480535992932 +< 1 -1 0 >: -0.012171857926607004 0.054178765537988241 +< 1 0 -1 >: -0.009938280380612655 0.044236776820652295 +< 2 -3 1 >: 0.003142760202810111 -0.013988897109780319 +< 2 -2 0 >: 0.010886840694545164 -0.048458961071985877 +< 2 -1 -1 >: 0.012171857926607004 -0.054178765537988248 +< 3 -3 0 >: -0.008314961926946468 0.037011142868548931 +< 3 -2 -1 >: -0.014401936520472104 0.064105179894517292 +< 4 -3 -1 >: 0.016629923853892940 -0.074022285737097890 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 3 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: 0.000796659387258248 0.034365208947845130 +< 0 1 -1 >: -0.000265553129086083 -0.011455069649281719 +< 0 2 -2 >: -0.001858871903602579 -0.080185487544971970 +< 0 3 -3 >: -0.000796659387258248 -0.034365208947845130 +< 1 -3 2 >: 0.001454494390165287 0.062742000447043825 +< 1 -2 1 >: 0.001502195346736606 0.064799659423770445 +< 1 -1 0 >: -0.001028482846483667 -0.044365293981314106 +< 1 0 -1 >: -0.001028482846483667 -0.044365293981314093 +< 1 1 -2 >: 0.001502195346736606 0.064799659423770431 +< 1 2 -3 >: 0.001454494390165287 0.062742000447043839 +< 2 -3 1 >: -0.001951408997581011 -0.084177226826347359 +< 2 -2 0 >: -0.000459951511685992 -0.019840762636796114 +< 2 -1 -1 >: 0.001679505455393459 0.072448221695192772 +< 2 0 -2 >: -0.000459951511685992 -0.019840762636796117 +< 2 1 -3 >: -0.001951408997581011 -0.084177226826347346 +< 3 -3 0 >: 0.002107762618310424 0.090921796628769855 +< 3 -2 -1 >: -0.000993608827025876 -0.042860945969244897 +< 3 -1 -2 >: -0.000993608827025876 -0.042860945969244890 +< 3 0 -3 >: 0.002107762618310424 0.090921796628769869 +< 4 -3 -1 >: -0.001720980971257732 -0.074237336079196636 +< 4 -2 -2 >: 0.002221776880273687 0.095839988767177170 +< 4 -1 -3 >: -0.001720980971257732 -0.074237336079196636 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 4 ) +l=( 2 1 1 ) +num_ms=4 +< 0 -1 1 >: -0.002966209606809296 -0.027493054947750905 +< 0 0 0 >: -0.002966209606809296 -0.027493054947750908 +< 1 -1 0 >: 0.010275251489785208 0.095238736049574960 +< 2 -1 -1 >: -0.007265700006824295 -0.067343956092290144 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 4 ) +l=( 2 2 2 ) +num_ms=8 +< -2 0 2 >: 0.039814573406919143 0.265704835114836169 +< -2 1 1 >: -0.024381347293384075 -0.162710317055421660 +< -1 -1 2 >: -0.024381347293384075 -0.162710317055421660 +< -1 0 1 >: 0.019907286703459561 0.132852417557418001 +< 0 -2 2 >: 0.019907286703459561 0.132852417557418001 +< 0 -1 1 >: 0.009953643351729781 0.066426208778709001 +< 0 0 0 >: -0.009953643351729781 -0.066426208778709001 +< 1 -2 1 >: -0.024381347293384075 -0.162710317055421660 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 4 ) +l=( 2 3 3 ) +num_ms=12 +< -2 -1 3 >: 0.007653567234261328 -0.027845071048683039 +< -2 0 2 >: -0.021647557166453429 0.078757754244579967 +< -2 1 1 >: 0.011856855374949156 -0.043137398578204693 +< -1 -2 3 >: -0.012101352342750641 0.044026923061525829 +< -1 -1 2 >: 0.009373667218012272 -0.034103107960408975 +< -1 0 1 >: -0.006845558642469357 0.024905388681266658 +< 0 -3 3 >: 0.012101352342750641 -0.044026923061525829 +< 0 -1 1 >: -0.007260811405650383 0.026416153836915490 +< 0 0 0 >: 0.004840540937100257 -0.017610769224610332 +< 1 -3 2 >: -0.012101352342750641 0.044026923061525829 +< 1 -2 1 >: 0.009373667218012272 -0.034103107960408975 +< 2 -3 1 >: 0.007653567234261328 -0.027845071048683039 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 4 ) +l=( 2 4 4 ) +num_ms=18 +< -2 -2 4 >: -0.000574441238777359 -0.003347613159679569 +< -2 -1 3 >: 0.000861661858166039 0.005021419739519354 +< -2 0 2 >: -0.002059765808904567 -0.012003489064299978 +< -2 1 1 >: 0.001085591900446261 0.006326394218685211 +< -1 -3 4 >: 0.001074681152169440 0.006262810753488357 +< -1 -2 3 >: -0.001015478238331678 -0.005917799914996869 +< -1 -1 2 >: 0.000690866454966068 0.004026092627242514 +< -1 0 1 >: -0.000485491457044205 -0.002829249505088360 +< 0 -4 4 >: -0.001240934904996086 -0.007231670948820369 +< 0 -3 3 >: 0.000310233726249021 0.001807917737205091 +< 0 -2 2 >: 0.000354552829998882 0.002066191699662963 +< 0 -1 1 >: -0.000753424763747623 -0.004390657361783795 +< 0 0 0 >: 0.000443191037498602 0.002582739624578703 +< 1 -4 3 >: 0.001074681152169440 0.006262810753488357 +< 1 -3 2 >: -0.001015478238331678 -0.005917799914996869 +< 1 -2 1 >: 0.000690866454966068 0.004026092627242514 +< 2 -4 2 >: -0.000574441238777359 -0.003347613159679569 +< 2 -3 1 >: 0.000861661858166039 0.005021419739519354 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 4 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.021322143097413839 0.003526676922539522 +< 0 1 -1 >: 0.024620690113983192 0.004072255741146066 +< 1 -2 1 >: -0.014214762064942554 -0.002351117948359681 +< 1 -1 0 >: -0.040205418596296699 -0.006649965778618134 +< 1 0 -1 >: -0.034818913874180214 -0.005759039298580466 +< 2 -2 0 >: 0.031785174261196841 0.005257259555652087 +< 2 -1 -1 >: 0.044951024522576787 0.007434887764518732 +< 3 -2 -1 >: -0.055053536747823470 -0.009105840658966392 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 4 ) +l=( 3 2 3 ) +num_ms=14 +< -3 0 3 >: -0.050687647140572147 0.017378841408344180 +< -3 1 2 >: 0.050687647140572153 -0.017378841408344184 +< -3 2 1 >: -0.032057682839825796 0.010991344389043199 +< -2 -1 3 >: 0.050687647140572153 -0.017378841408344184 +< -2 1 1 >: -0.039262482646774802 0.013461592670179379 +< -1 -2 3 >: -0.032057682839825796 0.010991344389043199 +< -1 -1 2 >: -0.039262482646774802 0.013461592670179379 +< -1 0 1 >: 0.030412588284343279 -0.010427304845006506 +< 0 -2 2 >: 0.045336409850336892 -0.015544108303698317 +< 0 -1 1 >: 0.014336631606195799 -0.004915478643602298 +< 0 0 0 >: -0.020275058856228861 0.006951536563337673 +< 1 -2 1 >: -0.049663548702657850 0.017027717508477862 +< 1 -1 0 >: 0.014336631606195799 -0.004915478643602298 +< 2 -2 0 >: 0.045336409850336892 -0.015544108303698317 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 4 ) +l=( 4 2 2 ) +num_ms=9 +< 0 -2 2 >: 0.004371228091308439 -0.001015669812656635 +< 0 -1 1 >: 0.017484912365233758 -0.004062679250626541 +< 0 0 0 >: 0.013113684273925315 -0.003047009437969904 +< 1 -2 1 >: -0.019548726314644653 0.004542213487589424 +< 1 -1 0 >: -0.047884404592197678 0.011126105347381701 +< 2 -2 0 >: 0.033859387200223232 -0.007867344539329506 +< 2 -1 -1 >: 0.027646073881290287 -0.006423659917342960 +< 3 -2 -1 >: -0.051721068276613970 0.012017567289924988 +< 4 -2 -2 >: 0.036572318108606151 -0.008497703324071598 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 4 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.006143592400603938 0.009637657780642005 +< 0 1 -1 >: -0.007524333284560014 0.011803671939068540 +< 1 -2 1 >: 0.005320507089420034 -0.008346456471016729 +< 1 -1 0 >: 0.011897015526712750 -0.018663244040436414 +< 1 0 -1 >: 0.009713872500805026 -0.015238474948036084 +< 2 -3 1 >: -0.003071796200301969 0.004818828890321003 +< 2 -2 0 >: -0.010641014178840072 0.016692912942033466 +< 2 -1 -1 >: -0.011897015526712752 0.018663244040436414 +< 3 -3 0 >: 0.008127208824272161 -0.012749422854362718 +< 3 -2 -1 >: 0.014076738607361508 -0.022082648150936052 +< 4 -3 -1 >: -0.016254417648544330 0.025498845708725446 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 4 ) +l=( 4 3 3 ) +num_ms=14 +< 0 -3 3 >: -0.001947804649495662 0.010050146296873052 +< 0 -2 2 >: -0.004544877515489877 0.023450341359370453 +< 0 -1 1 >: -0.000649268216498554 0.003350048765624353 +< 0 0 0 >: 0.001947804649495662 -0.010050146296873052 +< 1 -3 2 >: 0.007112376960948116 -0.036697945553495877 +< 1 -2 1 >: 0.007345631339120367 -0.037901475191657617 +< 1 -1 0 >: -0.005029209979441382 0.025949366156491644 +< 2 -3 1 >: -0.009542255019770017 0.049235460535321768 +< 2 -2 0 >: -0.002249131077430249 0.011604909339789551 +< 2 -1 -1 >: 0.004106332752981489 -0.021187568744017077 +< 3 -3 0 >: 0.010306813410201706 -0.053180375482685636 +< 3 -2 -1 >: -0.004858678436518714 0.025069469419902551 +< 4 -3 -1 >: -0.008415477909689729 0.043421594754065491 +< 4 -2 -2 >: 0.005432167632434120 -0.028028518891377155 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 1 4 4 ) +l=( 4 4 4 ) +num_ms=25 +< -4 0 4 >: 0.001008757196501169 0.003242376852545740 +< -4 1 3 >: -0.001594985173514865 -0.005126647943326229 +< -4 2 2 >: 0.000904271595847615 0.002906536182304704 +< -3 -1 4 >: -0.000797492586757432 -0.002563323971663114 +< -3 0 3 >: 0.001513135794751752 0.004863565278818609 +< -3 1 2 >: -0.000602847730565077 -0.001937690788203136 +< -2 -2 4 >: 0.000904271595847615 0.002906536182304704 +< -2 -1 3 >: -0.000301423865282538 -0.000968845394101568 +< -2 0 2 >: -0.000792594940108061 -0.002547581812714509 +< -2 1 1 >: 0.000683565074363513 0.002197134832854097 +< -1 -3 4 >: -0.000797492586757432 -0.002563323971663113 +< -1 -2 3 >: -0.000301423865282538 -0.000968845394101568 +< -1 -1 2 >: 0.000683565074363513 0.002197134832854098 +< -1 0 1 >: -0.000648486769179323 -0.002084385119493690 +< 0 -4 4 >: 0.000504378598250584 0.001621188426272870 +< 0 -3 3 >: 0.000756567897375876 0.002431782639409305 +< 0 -2 2 >: -0.000396297470054031 -0.001273790906357255 +< 0 -1 1 >: -0.000324243384589661 -0.001042192559746845 +< 0 0 0 >: 0.000324243384589661 0.001042192559746845 +< 1 -4 3 >: -0.000797492586757432 -0.002563323971663113 +< 1 -3 2 >: -0.000301423865282538 -0.000968845394101568 +< 1 -2 1 >: 0.000683565074363513 0.002197134832854098 +< 2 -4 2 >: 0.000904271595847615 0.002906536182304704 +< 2 -3 1 >: -0.000301423865282538 -0.000968845394101568 +< 3 -4 1 >: -0.000797492586757432 -0.002563323971663114 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 2 1 ) +l=( 0 0 ) +num_ms=1 +< 0 0 >: -0.443685031756588133 -0.766788492334507632 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 2 1 ) +l=( 1 1 ) +num_ms=2 +< 0 0 >: 0.021258964632145865 -0.099770728173720583 +< 1 -1 >: -0.042517929264291723 0.199541456347441110 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 2 1 ) +l=( 2 2 ) +num_ms=3 +< 0 0 >: -0.080484268478046864 0.056545394865651424 +< 1 -1 >: 0.160968536956093755 -0.113090789731302863 +< 2 -2 >: -0.160968536956093783 0.113090789731302890 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 2 1 ) +l=( 3 3 ) +num_ms=4 +< 0 0 >: -0.068612942196417448 0.331839144705912803 +< 1 -1 >: 0.137225884392834896 -0.663678289411825606 +< 2 -2 >: -0.137225884392834868 0.663678289411825495 +< 3 -3 >: 0.137225884392834868 -0.663678289411825495 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 2 1 ) +l=( 4 4 ) +num_ms=5 +< 0 0 >: 0.010563846674115336 -0.074491987845651350 +< 1 -1 >: -0.021127693348230666 0.148983975691302645 +< 2 -2 >: 0.021127693348230666 -0.148983975691302645 +< 3 -3 >: -0.021127693348230666 0.148983975691302645 +< 4 -4 >: 0.021127693348230669 -0.148983975691302672 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 2 1 ) +l=( 5 5 ) +num_ms=6 +< 0 0 >: -0.005330008844206259 0.085596074475354916 +< 1 -1 >: 0.010660017688412517 -0.171192148950709833 +< 2 -2 >: -0.010660017688412519 0.171192148950709860 +< 3 -3 >: 0.010660017688412520 -0.171192148950709888 +< 4 -4 >: -0.010660017688412519 0.171192148950709860 +< 5 -5 >: 0.010660017688412507 -0.171192148950709666 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 2 1 ) +l=( 6 6 ) +num_ms=7 +< 0 0 >: 0.043595376456603344 -0.061977341956862740 +< 1 -1 >: -0.087190752913206701 0.123954683913725508 +< 2 -2 >: 0.087190752913206673 -0.123954683913725452 +< 3 -3 >: -0.087190752913206701 0.123954683913725508 +< 4 -4 >: 0.087190752913206646 -0.123954683913725439 +< 5 -5 >: -0.087190752913206673 0.123954683913725452 +< 6 -6 >: 0.087190752913206618 -0.123954683913725383 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 1 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: 0.025673494362345103 0.354532665314856887 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 1 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.008471527858069306 -0.403448183560426166 +< 1 -1 0 >: 0.016943055716138609 0.806896367120852220 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 1 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.050528239746022864 -0.080541291480621405 +< 1 -1 0 >: -0.101056479492045728 0.161082582961242810 +< 2 -2 0 >: 0.101056479492045756 -0.161082582961242865 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 1 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.005081450586248567 -0.056434814324392242 +< 0 1 -1 >: 0.005867553727688781 -0.065165310483708785 +< 1 -2 1 >: -0.003387633724165710 0.037623209549594812 +< 1 -1 0 >: -0.009581675114135251 0.106414506410083903 +< 1 0 -1 >: -0.008297974059650284 0.092157665882314610 +< 2 -2 0 >: 0.007574979290105302 -0.084128054084613269 +< 2 -1 -1 >: 0.010712638446762237 -0.118975035062517331 +< 3 -2 -1 >: -0.013120248996744407 0.145714064016452594 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 1 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.013488697530298670 0.087985761931948028 +< 1 -1 0 >: -0.026977395060597341 -0.175971523863896057 +< 2 -2 0 >: 0.026977395060597337 0.175971523863896029 +< 3 -3 0 >: -0.026977395060597337 -0.175971523863896029 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 1 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.023166996813129861 -0.004034707910871768 +< 0 1 -1 >: 0.028373660532426084 -0.004941487821403271 +< 1 -2 1 >: -0.020063207769563590 0.003494159547664992 +< 1 -1 0 >: -0.044862696419446131 0.007813178272808840 +< 1 0 -1 >: -0.036630238237676291 0.006379433345927211 +< 2 -3 1 >: 0.011583498406564932 -0.002017353955435884 +< 2 -2 0 >: 0.040126415539127193 -0.006988319095329987 +< 2 -1 -1 >: 0.044862696419446138 -0.007813178272808840 +< 3 -3 0 >: -0.030647056095883758 0.005337416872475828 +< 3 -2 -1 >: -0.053082258260484162 0.009244677204303511 +< 4 -3 -1 >: 0.061294112191767537 -0.010674833744951659 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 1 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.009599109215753620 -0.030650039218870596 +< 1 -1 0 >: 0.019198218431507232 0.061300078437741171 +< 2 -2 0 >: -0.019198218431507232 -0.061300078437741171 +< 3 -3 0 >: 0.019198218431507232 0.061300078437741171 +< 4 -4 0 >: -0.019198218431507236 -0.061300078437741184 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 1 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: -0.030345923816554193 -0.019658602753619338 +< 0 1 -1 >: 0.016621147002659993 0.010767460177190486 +< 0 2 -2 >: 0.070517554540076050 0.045682464644684985 +< 1 -3 2 >: -0.058999219052618165 -0.038220692081764117 +< 1 -2 1 >: -0.047304613667597688 -0.030644728897573924 +< 1 -1 0 >: 0.051588070488142117 0.033419624681152872 +< 1 0 -1 >: 0.016621147002659993 0.010767460177190486 +< 1 1 -2 >: -0.074332029123929264 -0.048153545802439718 +< 2 -4 2 >: 0.039332812701745441 0.025480461387842747 +< 2 -3 1 >: 0.069531246461361412 0.045043517587763968 +< 2 -2 0 >: -0.024276739053243360 -0.015726882202895476 +< 2 -1 -1 >: -0.047304613667597688 -0.030644728897573924 +< 2 0 -2 >: 0.070517554540076050 0.045682464644684985 +< 3 -4 1 >: -0.073584954594040866 -0.047669578285115005 +< 3 -3 0 >: -0.021242146671587924 -0.013761021927533533 +< 3 -2 -1 >: 0.069531246461361412 0.045043517587763968 +< 3 -1 -2 >: -0.058999219052618165 -0.038220692081764117 +< 4 -4 0 >: 0.084968586686351738 0.055044087710134144 +< 4 -3 -1 >: -0.073584954594040866 -0.047669578285115005 +< 4 -2 -2 >: 0.039332812701745441 0.025480461387842747 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 1 1 1 ) +l=( 0 0 0 0 ) +num_ms=1 +< 0 0 0 0 >: -0.000131149336668165 -0.026671105528810853 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 1 1 1 ) +l=( 1 1 0 0 ) +num_ms=2 +< 0 0 0 0 >: -0.000549702479850836 0.031159740241633885 +< 1 -1 0 0 >: 0.001099404959701671 -0.062319480483267763 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 1 1 1 ) +l=( 2 2 0 0 ) +num_ms=3 +< 0 0 0 0 >: 0.000534231632539918 0.016152804358911307 +< 1 -1 0 0 >: -0.001068463265079836 -0.032305608717822620 +< 2 -2 0 0 >: 0.001068463265079836 0.032305608717822627 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 2 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.044836097751452433 0.123019968306161701 +< 1 -1 0 >: 0.089672195502904839 -0.246039936612323346 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 2 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.065253113373031621 -0.109526680389507899 +< 1 -1 0 >: 0.130506226746063242 0.219053360779015799 +< 2 -2 0 >: -0.130506226746063270 -0.219053360779015854 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 2 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.006691075378480910 0.061635128918971091 +< 0 1 -1 >: 0.007726188341868057 0.071170116545810458 +< 1 -2 1 >: -0.004460716918987272 -0.041090085945980709 +< 1 -1 0 >: -0.012616812729477856 -0.116220313647764084 +< 1 0 -1 >: -0.010926480338518703 -0.100649744054758961 +< 2 -2 0 >: 0.009974466259238965 0.091880225376521643 +< 2 -1 -1 >: 0.014106025461248574 0.129938260841373499 +< 3 -2 -1 >: -0.017276282339383366 -0.159141218563014747 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 2 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.020750470233620349 -0.091150031876353815 +< 1 -1 0 >: 0.041500940467240698 0.182300063752707631 +< 2 -2 0 >: -0.041500940467240698 -0.182300063752707603 +< 3 -3 0 >: 0.041500940467240698 0.182300063752707603 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 2 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.016080450169900506 0.089746028513755141 +< 0 1 -1 >: -0.019694448875253651 0.109915988149984933 +< 1 -2 1 >: 0.013926078351423631 -0.077722340581674543 +< 1 -1 0 >: 0.031139657853771447 -0.173792436911014841 +< 1 0 -1 >: 0.025425424168863588 -0.141900930528941122 +< 2 -3 1 >: -0.008040225084950255 0.044873014256877584 +< 2 -2 0 >: -0.027852156702847273 0.155444681163349141 +< 2 -1 -1 >: -0.031139657853771451 0.173792436911014869 +< 3 -3 0 >: 0.021272436059761542 -0.118722836301553905 +< 3 -2 -1 >: 0.036844940056267296 -0.205633984492974126 +< 4 -3 -1 >: -0.042544872119523097 0.237445672603107893 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 2 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.024580789850859350 -0.118255530012825641 +< 1 -1 0 >: -0.049161579701718680 0.236511060025651199 +< 2 -2 0 >: 0.049161579701718680 -0.236511060025651199 +< 3 -3 0 >: -0.049161579701718680 0.236511060025651199 +< 4 -4 0 >: 0.049161579701718694 -0.236511060025651254 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 2 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: 0.019821407204615442 -0.034286484773894357 +< 0 1 -1 >: -0.010856631847463296 0.018779481128219356 +< 0 2 -2 >: -0.046060788001122802 0.079674590717572227 +< 1 -3 2 >: 0.038537220111199838 -0.066660545183855613 +< 1 -2 1 >: 0.030898515920315173 -0.053447340277189580 +< 1 -1 0 >: -0.033696392247846249 0.058287024115620402 +< 1 0 -1 >: -0.010856631847463296 0.018779481128219356 +< 1 1 -2 >: 0.048552333635234125 -0.083984392769745869 +< 2 -4 2 >: -0.025691480074133227 0.044440363455903735 +< 2 -3 1 >: -0.045416549447846656 0.078560205895160898 +< 2 -2 0 >: 0.015857125763692359 -0.027429187819115495 +< 2 -1 -1 >: 0.030898515920315173 -0.053447340277189580 +< 2 0 -2 >: -0.046060788001122802 0.079674590717572227 +< 3 -4 1 >: 0.048064358098268055 -0.083140307097850474 +< 3 -3 0 >: 0.013874985043230804 -0.024000539341726041 +< 3 -2 -1 >: -0.045416549447846656 0.078560205895160898 +< 3 -1 -2 >: 0.038537220111199838 -0.066660545183855613 +< 4 -4 0 >: -0.055499940172923236 0.096002157366904206 +< 4 -3 -1 >: 0.048064358098268055 -0.083140307097850474 +< 4 -2 -2 >: -0.025691480074133227 0.044440363455903735 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 1 2 1 ) +l=( 1 1 0 0 ) +num_ms=2 +< 0 0 0 0 >: 0.000879900694635743 -0.046214553741910469 +< 1 -1 0 0 >: -0.001759801389271486 0.092429107483820924 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 1 2 1 ) +l=( 2 2 0 0 ) +num_ms=3 +< 0 0 0 0 >: -0.000744986350624590 -0.021998531066858684 +< 1 -1 0 0 >: 0.001489972701249181 0.043997062133717374 +< 2 -2 0 0 >: -0.001489972701249181 -0.043997062133717388 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 1 2 1 ) +l=( 2 2 1 1 ) +num_ms=19 +< 0 0 0 0 >: 0.000074721474110087 0.045311132790134441 +< 0 0 1 -1 >: 0.000198560903657768 -0.077407572244935746 +< 0 1 -1 0 >: -0.000080600861057782 -0.006242390936835944 +< 0 1 0 -1 >: -0.000120319256502976 -0.001387115817576990 +< 0 2 -1 -1 >: -0.000284143955208020 -0.010789751926307911 +< 1 -2 0 1 >: 0.000262290850582401 0.007362041501545532 +< 1 -2 1 0 >: 0.000229860916501465 0.011326357035883928 +< 1 -1 -1 1 >: -0.000129094548527080 0.078208423935611018 +< 1 -1 0 0 >: -0.000033441664260861 -0.086217367801824513 +< 1 -1 1 -1 >: -0.000152025974829142 0.081011618332704857 +< 1 0 -1 0 >: -0.000120319256502976 -0.001387115817576990 +< 1 0 0 -1 >: -0.000080600861057782 -0.006242390936835944 +< 1 1 -1 -1 >: 0.000348003851877943 0.013214693335333129 +< 2 -2 -1 1 >: -0.000056373090562923 -0.083414173404730660 +< 2 -2 0 0 >: -0.000314562187617083 0.073002674466491405 +< 2 -2 1 -1 >: -0.000010510237958798 -0.089020562198918365 +< 2 -1 -1 0 >: 0.000262290850582401 0.007362041501545532 +< 2 -1 0 -1 >: 0.000229860916501465 0.011326357035883928 +< 2 0 -1 -1 >: -0.000284143955208020 -0.010789751926307911 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 1 2 2 ) +l=( 1 1 0 0 ) +num_ms=2 +< 0 0 0 0 >: -0.000390044560424510 0.010161400220348013 +< 1 -1 0 0 >: 0.000780089120849020 -0.020322800440696023 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 1 2 2 ) +l=( 2 2 0 0 ) +num_ms=3 +< 0 0 0 0 >: 0.000236958433008212 0.000726730860463758 +< 1 -1 0 0 >: -0.000473916866016423 -0.001453461720927516 +< 2 -2 0 0 >: 0.000473916866016423 0.001453461720927516 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 3 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.099936425840165849 0.172960728852067092 +< 1 -1 0 >: -0.199872851680331642 -0.345921457704134128 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 3 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.067333069873716456 -0.178547061608677754 +< 1 -1 0 >: -0.134666139747432939 0.357094123217355564 +< 2 -2 0 >: 0.134666139747432967 -0.357094123217355619 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 3 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.026384848432851424 -0.090557865129244200 +< 0 1 -1 >: -0.030466598690468475 -0.104567215619213866 +< 1 -2 1 >: 0.017589898955234277 0.060371910086162772 +< 1 -1 0 >: 0.049751747326529309 0.170757548060440939 +< 1 0 -1 >: 0.043086277067438894 0.147880374508284007 +< 2 -2 0 >: -0.039332209781256379 -0.134995694884165185 +< 2 -1 -1 >: -0.055624144510756472 -0.190912742567166616 +< 3 -2 -1 >: 0.068125385715093592 0.233819402342440030 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 3 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.016318843547732997 0.075691400143286583 +< 1 -1 0 >: -0.032637687095465995 -0.151382800286573166 +< 2 -2 0 >: 0.032637687095465995 0.151382800286573166 +< 3 -3 0 >: -0.032637687095465995 -0.151382800286573166 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 3 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.005080880668698730 -0.050804786190446816 +< 0 1 -1 >: -0.006222782541141438 -0.062222901328895970 +< 1 -2 1 >: 0.004400171732690367 0.043998235474763780 +< 1 -1 0 >: 0.009839083106968696 0.098383045411614564 +< 1 0 -1 >: 0.008033577716303685 0.080329420199840462 +< 2 -3 1 >: -0.002540440334349366 -0.025402393095223415 +< 2 -2 0 >: -0.008800343465380738 -0.087996470949527589 +< 2 -1 -1 >: -0.009839083106968696 -0.098383045411614564 +< 3 -3 0 >: 0.006721373345286200 0.067208414835865440 +< 3 -2 -1 >: 0.011641760130674894 0.116408389191884884 +< 4 -3 -1 >: -0.013442746690572405 -0.134416829671730909 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 3 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.030940967307135768 0.061648342892035281 +< 1 -1 0 >: 0.061881934614271515 -0.123296685784070520 +< 2 -2 0 >: -0.061881934614271515 0.123296685784070520 +< 3 -3 0 >: 0.061881934614271515 -0.123296685784070520 +< 4 -4 0 >: -0.061881934614271529 0.123296685784070548 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 3 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: -0.009817053273569845 0.055584686124101140 +< 0 1 -1 >: 0.005377021526164138 -0.030444986442014595 +< 0 2 -2 >: 0.022812770302420210 -0.129167138197686160 +< 1 -3 2 >: -0.019086533006538668 0.108068981271806724 +< 1 -2 1 >: -0.015303271545390008 0.086647950440740765 +< 1 -1 0 >: 0.016688990565068732 -0.094493966410971922 +< 1 0 -1 >: 0.005377021526164138 -0.030444986442014595 +< 1 1 -2 >: -0.024046771297965359 0.136154118516808226 +< 2 -4 2 >: 0.012724355337692445 -0.072045987514537821 +< 2 -3 1 >: 0.022493694863773919 -0.127360515822027537 +< 2 -2 0 >: -0.007853642618855877 0.044467748899280922 +< 2 -1 -1 >: -0.015303271545390008 0.086647950440740765 +< 2 0 -2 >: 0.022812770302420210 -0.129167138197686160 +< 3 -4 1 >: -0.023805089070606685 0.134785700685596782 +< 3 -3 0 >: -0.006871937291498888 0.038909280286870782 +< 3 -2 -1 >: 0.022493694863773919 -0.127360515822027537 +< 3 -1 -2 >: -0.019086533006538668 0.108068981271806724 +< 4 -4 0 >: 0.027487749165995563 -0.155637121147483182 +< 4 -3 -1 >: -0.023805089070606685 0.134785700685596782 +< 4 -2 -2 >: 0.012724355337692445 -0.072045987514537821 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 4 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.049812769767711255 -0.011045396958808368 +< 1 -1 0 >: 0.099625539535422497 0.022090793917616734 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 4 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.044266647288743223 0.086360412014017507 +< 1 -1 0 >: 0.088533294577486460 -0.172720824028035042 +< 2 -2 0 >: -0.088533294577486474 0.172720824028035069 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 4 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.023973339060976952 0.088744963009341440 +< 0 1 -1 >: 0.027682027520458417 0.102473856565333268 +< 1 -2 1 >: -0.015982226040651297 -0.059163308672894266 +< 1 -1 0 >: -0.045204561647203045 -0.167339107040145707 +< 1 0 -1 >: -0.039148298753417556 -0.144919917743369542 +< 2 -2 0 >: 0.035737343858663624 0.132293179966394475 +< 2 -1 -1 >: 0.050540236368112931 0.187090809317939699 +< 3 -2 -1 >: -0.061898895290764977 -0.229138509196648354 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 4 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.004553843690772358 -0.016727430375017845 +< 1 -1 0 >: 0.009107687381544716 0.033454860750035689 +< 2 -2 0 >: -0.009107687381544716 -0.033454860750035689 +< 3 -3 0 >: 0.009107687381544716 0.033454860750035689 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 4 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.007910374230632561 0.026348395715979800 +< 0 1 -1 >: 0.009688190269755417 0.032270062522542373 +< 1 -2 1 >: -0.006850585037169583 -0.022818380039003577 +< 1 -1 0 >: -0.015318373828754114 -0.051023448903636311 +< 1 0 -1 >: -0.012507399856550489 -0.041660471576959568 +< 2 -3 1 >: 0.003955187115316282 0.013174197857989902 +< 2 -2 0 >: 0.013701170074339171 0.045636760078007176 +< 2 -1 -1 >: 0.015318373828754115 0.051023448903636318 +< 3 -3 0 >: -0.010464441495853826 -0.034855651255001098 +< 3 -2 -1 >: -0.018124944343650896 -0.060371758904563817 +< 4 -3 -1 >: 0.020928882991707660 0.069711302510002210 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 4 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.012080441009612876 0.000022520940721450 +< 1 -1 0 >: -0.024160882019225744 -0.000045041881442901 +< 2 -2 0 >: 0.024160882019225744 0.000045041881442901 +< 3 -3 0 >: -0.024160882019225744 -0.000045041881442901 +< 4 -4 0 >: 0.024160882019225748 0.000045041881442901 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 1 4 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: 0.015160180132536510 -0.016821694253254679 +< 0 1 -1 >: -0.008303572634431905 0.009213621397962607 +< 0 2 -2 >: -0.035229075107291077 0.039090085018709031 +< 1 -3 2 >: 0.029474758914037103 -0.032705111568972378 +< 1 -2 1 >: 0.023632382017304564 -0.026222426204423863 +< 1 -1 0 >: -0.025772306225312062 0.028596880230532949 +< 1 0 -1 >: -0.008303572634431905 0.009213621397962607 +< 1 1 -2 >: 0.037134705733393510 -0.041204567529582077 +< 2 -4 2 >: -0.019649839276024733 0.021803407712648253 +< 2 -3 1 >: -0.034736336503257116 0.038543343616471611 +< 2 -2 0 >: 0.012128144106029212 -0.013457355402603746 +< 2 -1 -1 >: 0.023632382017304564 -0.026222426204423863 +< 2 0 -2 >: -0.035229075107291077 0.039090085018709031 +< 3 -4 1 >: 0.036761483138029336 -0.040790440762437132 +< 3 -3 0 >: 0.010612126092775552 -0.011775185977278271 +< 3 -2 -1 >: -0.034736336503257116 0.038543343616471611 +< 3 -1 -2 >: 0.029474758914037103 -0.032705111568972378 +< 4 -4 0 >: -0.042448504371102230 0.047100743909113098 +< 4 -3 -1 >: 0.036761483138029336 -0.040790440762437132 +< 4 -2 -2 >: -0.019649839276024733 0.021803407712648253 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 2 2 ) +l=( 0 0 ) +num_ms=1 +< 0 0 >: 0.237529292163412231 -0.506725013422213544 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 2 2 ) +l=( 1 1 ) +num_ms=2 +< 0 0 >: 0.011163256227855207 -0.272012801083348243 +< 1 -1 >: -0.022326512455710410 0.544025602166696376 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 2 2 ) +l=( 2 2 ) +num_ms=3 +< 0 0 >: -0.007641334930427780 0.036306741501869841 +< 1 -1 >: 0.015282669860855563 -0.072613483003739682 +< 2 -2 >: -0.015282669860855566 0.072613483003739709 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 2 2 ) +l=( 3 3 ) +num_ms=4 +< 0 0 >: 0.029464058726948968 -0.015652403783227988 +< 1 -1 >: -0.058928117453897935 0.031304807566455976 +< 2 -2 >: 0.058928117453897928 -0.031304807566455969 +< 3 -3 >: -0.058928117453897928 0.031304807566455969 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 2 2 ) +l=( 4 4 ) +num_ms=5 +< 0 0 >: -0.013586208381099698 0.030901612428767603 +< 1 -1 >: 0.027172416762199385 -0.061803224857535186 +< 2 -2 >: -0.027172416762199385 0.061803224857535186 +< 3 -3 >: 0.027172416762199385 -0.061803224857535186 +< 4 -4 >: -0.027172416762199392 0.061803224857535199 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 2 2 ) +l=( 5 5 ) +num_ms=6 +< 0 0 >: 0.001635058193904321 -0.026240219199856703 +< 1 -1 >: -0.003270116387808642 0.052480438399713406 +< 2 -2 >: 0.003270116387808642 -0.052480438399713412 +< 3 -3 >: -0.003270116387808643 0.052480438399713426 +< 4 -4 >: 0.003270116387808642 -0.052480438399713412 +< 5 -5 >: -0.003270116387808638 0.052480438399713357 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 2 2 ) +l=( 6 6 ) +num_ms=7 +< 0 0 >: -0.024120927536316672 -0.006947962831113538 +< 1 -1 >: 0.048241855072633351 0.013895925662227079 +< 2 -2 >: -0.048241855072633337 -0.013895925662227072 +< 3 -3 >: 0.048241855072633351 0.013895925662227079 +< 4 -4 >: -0.048241855072633323 -0.013895925662227070 +< 5 -5 >: 0.048241855072633337 0.013895925662227072 +< 6 -6 >: -0.048241855072633302 -0.013895925662227065 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 1 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: -0.042157890720039490 -0.080177729415818355 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 1 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.000441540392775611 0.171446291731526923 +< 1 -1 0 >: 0.000883080785551222 -0.342892583463053791 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 1 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: 0.015314948158571085 0.144142255874459224 +< 0 1 -1 >: 0.015314948158571083 0.144142255874459196 +< 1 -1 0 >: -0.026526268325928540 -0.249661710692156869 +< 1 0 -1 >: -0.026526268325928540 -0.249661710692156869 +< 2 -1 -1 >: 0.037513808425675990 0.353074977266116141 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 1 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.010715155854679278 -0.024320535097604255 +< 1 -1 0 >: 0.021430311709358555 0.048641070195208511 +< 2 -2 0 >: -0.021430311709358562 -0.048641070195208524 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 1 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.009379950621030062 0.142958858170693121 +< 0 1 -1 >: 0.010831034032074202 0.165074670495782339 +< 1 -2 1 >: -0.006253300414020039 -0.095305905447128719 +< 1 -1 0 >: -0.017687004510200867 -0.269565808115154626 +< 1 0 -1 >: -0.015317395222683886 -0.233450837819405205 +< 2 -2 0 >: 0.013982804809476390 0.213110483236947368 +< 2 -1 -1 >: 0.019774672201577252 0.301383735677575038 +< 3 -2 -1 >: -0.024218928362331558 -0.369118184591948284 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 1 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.001892496709451729 -0.008303587970500197 +< 1 -1 0 >: 0.003784993418903457 0.016607175941000394 +< 2 -2 0 >: -0.003784993418903457 -0.016607175941000391 +< 3 -3 0 >: 0.003784993418903457 0.016607175941000391 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 1 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: 0.064323537074706449 -0.050824047196869532 +< 0 1 -1 >: 0.085764716099608632 -0.067765396262492728 +< 0 2 -2 >: 0.021441179024902154 -0.016941349065623182 +< 1 -2 1 >: -0.047943933817423873 0.037882008141285978 +< 1 -1 0 >: -0.117438174114455327 0.092791590378108843 +< 1 0 -1 >: -0.117438174114455340 0.092791590378108857 +< 1 1 -2 >: -0.047943933817423873 0.037882008141285978 +< 2 -2 0 >: 0.083041329286497809 -0.065613562793445143 +< 2 -1 -1 >: 0.135605922876237850 -0.107146499366669271 +< 2 0 -2 >: 0.083041329286497836 -0.065613562793445157 +< 3 -2 -1 >: -0.126847725755043245 0.100226372705566905 +< 3 -1 -2 >: -0.126847725755043217 0.100226372705566905 +< 4 -2 -2 >: 0.179389774118965034 -0.141741495587673266 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 1 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.000988267132983525 0.050693726784944340 +< 0 1 -1 >: 0.001210375102686442 0.062086881891587016 +< 1 -2 1 >: -0.000855864442888947 -0.043902055208269439 +< 1 -1 0 >: -0.001913771073824672 -0.098167979797639165 +< 1 0 -1 >: -0.001562587538456227 -0.080153819861354433 +< 2 -3 1 >: 0.000494133566491763 0.025346863392472177 +< 2 -2 0 >: 0.001711728885777895 0.087804110416538905 +< 2 -1 -1 >: 0.001913771073824673 0.098167979797639179 +< 3 -3 0 >: -0.001307354531386603 -0.067061497052008326 +< 3 -2 -1 >: -0.002264404471866998 -0.116153920125708937 +< 4 -3 -1 >: 0.002614709062773207 0.134122994104016680 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 1 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: -0.002658802058065159 -0.012783282173783569 +< 0 1 -1 >: 0.000886267352688387 0.004261094057927860 +< 0 2 -2 >: 0.006203871468818703 0.029827658405494995 +< 0 3 -3 >: 0.002658802058065159 0.012783282173783569 +< 1 -3 2 >: -0.004854286210478159 -0.023338973351783115 +< 1 -2 1 >: -0.005013485240241661 -0.024104388029075930 +< 1 -1 0 >: 0.003432498697249456 0.016503146322977974 +< 1 0 -1 >: 0.003432498697249454 0.016503146322977967 +< 1 1 -2 >: -0.005013485240241660 -0.024104388029075927 +< 1 2 -3 >: -0.004854286210478159 -0.023338973351783119 +< 2 -3 1 >: 0.006512708369321411 0.031312518563785911 +< 2 -2 0 >: 0.001535060083945850 0.007380431404160885 +< 2 -1 -1 >: -0.005605246900686108 -0.026949525094522975 +< 2 0 -2 >: 0.001535060083945850 0.007380431404160887 +< 2 1 -3 >: 0.006512708369321410 0.031312518563785904 +< 3 -3 0 >: -0.007034529030987125 -0.033821385570996489 +< 3 -2 -1 >: 0.003316108786843087 0.015943554057584318 +< 3 -1 -2 >: 0.003316108786843086 0.015943554057584314 +< 3 0 -3 >: -0.007034529030987126 -0.033821385570996496 +< 4 -3 -1 >: 0.005743668902237818 0.027615045680956962 +< 4 -2 -2 >: -0.007415044668165499 -0.035650870675701114 +< 4 -1 -3 >: 0.005743668902237818 0.027615045680956962 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 1 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.004972044830004877 0.040109990151243995 +< 1 -1 0 >: -0.009944089660009750 -0.080219980302487962 +< 2 -2 0 >: 0.009944089660009750 0.080219980302487962 +< 3 -3 0 >: -0.009944089660009750 -0.080219980302487962 +< 4 -4 0 >: 0.009944089660009751 0.080219980302487975 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 1 1 ) +l=( 0 0 0 0 ) +num_ms=1 +< 0 0 0 0 >: 0.000169145388298771 0.021394144275254930 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 1 1 ) +l=( 1 1 0 0 ) +num_ms=2 +< 0 0 0 0 >: 0.000151629851811976 -0.010246816255707641 +< 1 -1 0 0 >: -0.000303259703623953 0.020493632511415279 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 1 1 ) +l=( 2 1 1 0 ) +num_ms=5 +< 0 0 0 0 >: -0.000186246234993290 -0.005624955595958680 +< 0 1 -1 0 >: -0.000186246234993290 -0.005624955595958679 +< 1 -1 0 0 >: 0.000322587941726792 0.009742708882519307 +< 1 0 -1 0 >: 0.000322587941726792 0.009742708882519307 +< 2 -1 -1 0 >: -0.000456208242248050 -0.013778271035911628 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 1 1 ) +l=( 2 2 0 0 ) +num_ms=3 +< 0 0 0 0 >: -0.000259357644193434 -0.004860497836025403 +< 1 -1 0 0 >: 0.000518715288386869 0.009720995672050805 +< 2 -2 0 0 >: -0.000518715288386869 -0.009720995672050809 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 1 2 ) +l=( 2 1 1 0 ) +num_ms=5 +< 0 0 0 0 >: 0.000121874643713454 0.003691822861407739 +< 0 1 -1 0 >: 0.000121874643713454 0.003691822861407738 +< 1 -1 0 0 >: -0.000211093075066057 -0.006394424768502517 +< 1 0 -1 0 >: -0.000211093075066057 -0.006394424768502517 +< 2 -1 -1 0 >: 0.000298530689681459 0.009043082231190699 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 2 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: 0.018986895339668273 0.010069321218616062 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 2 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.003813645922355822 0.032025295375989443 +< 1 -1 0 >: -0.007627291844711643 -0.064050590751978873 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 2 ) +l=( 1 1 2 ) +num_ms=4 +< -1 -1 2 >: -0.020494722777808224 -0.109750203166273874 +< -1 0 1 >: 0.028983914909453182 0.155210225790947121 +< -1 1 0 >: -0.008366935537571001 -0.044805332820692947 +< 0 0 0 >: -0.008366935537571001 -0.044805332820692954 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 2 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.012065695405917632 0.084713234829181264 +< 1 -1 0 >: 0.024131390811835268 -0.169426469658362555 +< 2 -2 0 >: -0.024131390811835275 0.169426469658362583 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 2 ) +l=( 2 2 2 ) +num_ms=5 +< -2 0 2 >: -0.120655043887796895 0.034518829883595066 +< -2 1 1 >: 0.098514430806070891 -0.028184506577581182 +< -1 -1 2 >: 0.049257215403035445 -0.014092253288790591 +< -1 0 1 >: -0.060327521943898434 0.017259414941797526 +< 0 0 0 >: 0.020109173981299477 -0.005753138313932508 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 2 ) +l=( 2 2 4 ) +num_ms=9 +< -2 -2 4 >: -0.007326806974795491 -0.028045977233177387 +< -2 -1 3 >: 0.010361669792645573 0.039663001373166522 +< -2 0 2 >: -0.006783305164419386 -0.025965529440238989 +< -2 1 1 >: 0.003916343062672911 0.014991205411973135 +< -2 2 0 >: -0.000875720931134635 -0.003352135436583467 +< -1 -1 2 >: -0.005538545474137816 -0.021200766009933352 +< -1 0 1 >: 0.009593042161237355 0.036720803888583863 +< -1 1 0 >: -0.003502883724538540 -0.013408541746333871 +< 0 0 0 >: -0.002627162793403904 -0.010056406309750399 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 2 ) +l=( 2 3 3 ) +num_ms=12 +< -2 -1 3 >: -0.001031271630432890 0.024875652818421367 +< -2 0 2 >: 0.002916876652497616 -0.070358971177392038 +< -2 1 1 >: -0.001597639140033101 0.038537195636713428 +< -1 -2 3 >: 0.001630583619241674 -0.039331860594899230 +< -1 -1 2 >: -0.001263044640384324 0.030466328211879303 +< -1 0 1 >: 0.000922397387565993 -0.022249460274669768 +< 0 -3 3 >: -0.001630583619241674 0.039331860594899223 +< 0 -1 1 >: 0.000978350171545004 -0.023599116356939530 +< 0 0 0 >: -0.000652233447696670 0.015732744237959690 +< 1 -3 2 >: 0.001630583619241674 -0.039331860594899230 +< 1 -2 1 >: -0.001263044640384324 0.030466328211879303 +< 2 -3 1 >: -0.001031271630432890 0.024875652818421367 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 2 ) +l=( 2 4 4 ) +num_ms=18 +< -2 -2 4 >: 0.013674779634781781 -0.035644073162967756 +< -2 -1 3 >: -0.020512169452172671 0.053466109744451637 +< -2 0 2 >: 0.049033463537503534 -0.127808447992761975 +< -2 1 1 >: -0.025842904390888037 0.067360966644717218 +< -1 -3 4 >: -0.025583170116493557 0.066683954822464558 +< -1 -2 3 >: 0.024173823527464736 -0.063010414606609819 +< -1 -1 2 >: -0.016446323646317283 0.042868256671584351 +< -1 0 1 >: 0.011557298190810687 -0.030124740089536722 +< 0 -4 4 >: 0.029540900306963075 -0.076999998534757474 +< 0 -3 3 >: -0.007385225076740766 0.019249999633689362 +< 0 -2 2 >: -0.008440257230560881 0.021999999581359286 +< 0 -1 1 >: 0.017935546614941865 -0.046749999110388463 +< 0 0 0 >: -0.010550321538201098 0.027499999476699101 +< 1 -4 3 >: -0.025583170116493557 0.066683954822464558 +< 1 -3 2 >: 0.024173823527464736 -0.063010414606609819 +< 1 -2 1 >: -0.016446323646317283 0.042868256671584351 +< 2 -4 2 >: 0.013674779634781781 -0.035644073162967756 +< 2 -3 1 >: -0.020512169452172671 0.053466109744451637 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 2 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.009321287240871334 -0.074857642926248552 +< 0 1 -1 >: -0.010763295395421773 -0.086438160588740931 +< 1 -2 1 >: 0.006214191493914220 0.049905095284165681 +< 1 -1 0 >: 0.017576387779754035 0.141152925164777426 +< 1 0 -1 >: 0.015221598324033355 0.122242019011180980 +< 2 -2 0 >: -0.013895354605593170 -0.111591185478998670 +< 2 -1 -1 >: -0.019650998937213310 -0.157813767945691491 +< 3 -2 -1 >: 0.024067460166073567 0.193281602926467982 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 2 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.002613170775531592 0.001424210166313564 +< 1 -1 0 >: -0.005226341551063184 -0.002848420332627128 +< 2 -2 0 >: 0.005226341551063184 0.002848420332627128 +< 3 -3 0 >: -0.005226341551063184 -0.002848420332627128 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 2 ) +l=( 3 3 4 ) +num_ms=14 +< -3 -1 4 >: -0.001638737005437354 -0.043698457336331438 +< -3 0 3 >: 0.002007034742969010 0.053519461510396084 +< -3 1 2 >: -0.001858153105982546 -0.049549393195328140 +< -3 2 1 >: 0.001384985552526448 0.036931937142873066 +< -3 3 0 >: -0.000379293914468746 -0.010114227532757238 +< -2 -2 4 >: 0.001057800188478781 0.028207232919761155 +< -2 -1 3 >: -0.000946125251220258 -0.025229316106302330 +< -2 0 2 >: -0.000437970887241034 -0.011678903977365028 +< -2 1 1 >: 0.001430406927912749 0.038143140666007075 +< -2 2 0 >: -0.000885019133760407 -0.023599864243100222 +< -1 -1 2 >: 0.000799621781574887 0.021322663851132108 +< -1 0 1 >: -0.000979332676036849 -0.026114823196080873 +< -1 1 0 >: -0.000126431304822915 -0.003371409177585748 +< 0 0 0 >: 0.000379293914468746 0.010114227532757238 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 2 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.002406610681941587 0.026892227459352502 +< 0 1 -1 >: 0.002947484090144173 0.032936117661138041 +< 1 -2 1 >: -0.002084185987580406 -0.023289352144148720 +< 1 -1 0 >: -0.004660381545982320 -0.052076574546247020 +< 1 0 -1 >: -0.003805185598113233 -0.042520345063438526 +< 2 -3 1 >: 0.001203305340970793 0.013446113729676253 +< 2 -2 0 >: 0.004168371975160813 0.046578704288297454 +< 2 -1 -1 >: 0.004660381545982321 0.052076574546247027 +< 3 -3 0 >: -0.003183646683484500 -0.035575073029014533 +< 3 -2 -1 >: -0.005514237809143309 -0.061617833969226425 +< 4 -3 -1 >: 0.006367293366969003 0.071150146058029079 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 2 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.014767957273141234 0.040172809034638220 +< 1 -1 0 >: 0.029535914546282457 -0.080345618069276412 +< 2 -2 0 >: -0.029535914546282457 0.080345618069276412 +< 3 -3 0 >: 0.029535914546282457 -0.080345618069276412 +< 4 -4 0 >: -0.029535914546282464 0.080345618069276425 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 2 ) +l=( 4 4 4 ) +num_ms=13 +< -4 0 4 >: -0.016466403054395954 0.014289760802882370 +< -4 1 3 >: 0.034714225681496458 -0.030125460904069784 +< -4 2 2 >: -0.019681116023445286 0.017079530932150221 +< -3 -1 4 >: 0.017357112840748225 -0.015062730452034887 +< -3 0 3 >: -0.024699604581593933 0.021434641204323555 +< -3 1 2 >: 0.013120744015630190 -0.011386353954766813 +< -2 -2 4 >: -0.009840558011722641 0.008539765466075109 +< -2 -1 3 >: 0.006560372007815095 -0.005693176977383406 +< -2 0 2 >: 0.012937888114168248 -0.011227669202264718 +< -2 1 1 >: -0.014877525292069912 0.012910911816029909 +< -1 -1 2 >: -0.007438762646034956 0.006455455908014955 +< -1 0 1 >: 0.010585544820683114 -0.009186274801852952 +< 0 0 0 >: -0.003528514940227706 0.003062091600617652 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 2 1 ) +l=( 0 0 0 0 ) +num_ms=1 +< 0 0 0 0 >: -0.000096232900583378 -0.007181811938265209 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 2 1 ) +l=( 1 1 0 0 ) +num_ms=2 +< 0 0 0 0 >: -0.000202105566068617 0.017235014306926640 +< 1 -1 0 0 >: 0.000404211132137234 -0.034470028613853274 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 2 1 ) +l=( 1 1 1 1 ) +num_ms=5 +< 0 0 0 0 >: 0.000064703297946057 -0.003457522621016441 +< 0 0 1 -1 >: -0.000129406595892114 0.006915045242032880 +< 1 -1 -1 1 >: 0.000129406595892114 -0.006915045242032879 +< 1 -1 0 0 >: -0.000129406595892114 0.006915045242032880 +< 1 -1 1 -1 >: 0.000129406595892114 -0.006915045242032879 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 2 1 ) +l=( 2 2 0 0 ) +num_ms=3 +< 0 0 0 0 >: 0.000346797029018903 0.007220241099190649 +< 1 -1 0 0 >: -0.000693594058037806 -0.014440482198381300 +< 2 -2 0 0 >: 0.000693594058037806 0.014440482198381304 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 2 1 ) +l=( 2 2 1 1 ) +num_ms=8 +< 0 0 0 0 >: 0.000018213204980344 -0.017773446029033343 +< 0 0 1 -1 >: -0.000036426409960688 0.035546892058066680 +< 1 -1 -1 1 >: 0.000036426409960688 -0.035546892058066687 +< 1 -1 0 0 >: -0.000036426409960688 0.035546892058066694 +< 1 -1 1 -1 >: 0.000036426409960688 -0.035546892058066687 +< 2 -2 -1 1 >: -0.000036426409960688 0.035546892058066694 +< 2 -2 0 0 >: 0.000036426409960688 -0.035546892058066701 +< 2 -2 1 -1 >: -0.000036426409960688 0.035546892058066694 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 2 1 ) +l=( 2 2 2 2 ) +num_ms=13 +< 0 0 0 0 >: -0.000727799869848321 -0.001653804898473280 +< 0 0 1 -1 >: 0.001455599739696642 0.003307609796946560 +< 0 0 2 -2 >: -0.001455599739696642 -0.003307609796946562 +< 1 -1 -2 2 >: 0.001455599739696643 0.003307609796946562 +< 1 -1 -1 1 >: -0.001455599739696642 -0.003307609796946561 +< 1 -1 0 0 >: 0.001455599739696642 0.003307609796946560 +< 1 -1 1 -1 >: -0.001455599739696642 -0.003307609796946561 +< 1 -1 2 -2 >: 0.001455599739696643 0.003307609796946562 +< 2 -2 -2 2 >: -0.001455599739696643 -0.003307609796946563 +< 2 -2 -1 1 >: 0.001455599739696643 0.003307609796946562 +< 2 -2 0 0 >: -0.001455599739696642 -0.003307609796946562 +< 2 -2 1 -1 >: 0.001455599739696643 0.003307609796946562 +< 2 -2 2 -2 >: -0.001455599739696643 -0.003307609796946563 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 2 2 ) +l=( 0 0 0 0 ) +num_ms=1 +< 0 0 0 0 >: 0.000020935512243829 0.000901079341750005 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 2 2 ) +l=( 0 1 1 2 ) +num_ms=4 +< 0 -1 -1 2 >: -0.000168814917448911 0.008250168730277932 +< 0 -1 0 1 >: 0.000238740345787144 -0.011667500510225469 +< 0 -1 1 0 >: -0.000068918401453316 0.003368117280174384 +< 0 0 0 0 >: -0.000068918401453316 0.003368117280174385 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 2 2 ) +l=( 0 2 2 2 ) +num_ms=5 +< 0 -2 0 2 >: 0.000814856742190073 -0.034047282432673624 +< 0 -2 1 1 >: -0.000665327743944100 0.027799489696158645 +< 0 -1 -1 2 >: -0.000332663871972050 0.013899744848079322 +< 0 -1 0 1 >: 0.000407428371095036 -0.017023641216336809 +< 0 0 0 0 >: -0.000135809457031679 0.005674547072112269 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 2 2 ) +l=( 1 1 0 0 ) +num_ms=2 +< 0 0 0 0 >: 0.000082623206527214 -0.005265773447052712 +< 1 -1 0 0 >: -0.000165246413054427 0.010531546894105423 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 2 2 ) +l=( 1 1 1 1 ) +num_ms=3 +< -1 -1 1 1 >: -0.000011504996837292 0.001339849741944992 +< -1 0 0 1 >: 0.000011504996837292 -0.001339849741944992 +< 0 0 0 0 >: -0.000002876249209323 0.000334962435486248 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 2 2 ) +l=( 1 1 2 2 ) +num_ms=11 +< -1 -1 0 2 >: -0.000144780468302614 0.006236442820208421 +< -1 -1 1 1 >: 0.000088659568015650 -0.003819025679888580 +< -1 0 -1 2 >: 0.000125383563521872 -0.005400917911549560 +< -1 0 0 1 >: -0.000102375250920142 0.004409831008651529 +< -1 1 -2 2 >: 0.000030428886117350 -0.004315425479804201 +< -1 1 -1 1 >: -0.000119088454133000 0.008134451159692781 +< -1 1 0 0 >: 0.000074320821735775 -0.004703729859827819 +< 0 0 -2 2 >: -0.000103874011074325 0.005976738419790680 +< 0 0 -1 1 >: 0.000015214443058675 -0.002157712739902101 +< 0 0 0 0 >: 0.000007169373139937 0.000442352089969620 +< 0 1 -2 1 >: 0.000125383563521872 -0.005400917911549560 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 2 2 ) +l=( 2 2 0 0 ) +num_ms=3 +< 0 0 0 0 >: -0.000107196788060430 -0.000335221069303797 +< 1 -1 0 0 >: 0.000214393576120860 0.000670442138607594 +< 2 -2 0 0 >: -0.000214393576120860 -0.000670442138607594 +ctilde_basis_func: rank=4 ndens=2 mu0=0 mu=( 0 0 0 0 ) +n=( 2 2 2 2 ) +l=( 2 2 2 2 ) +num_ms=6 +< -2 -2 2 2 >: 0.000592031129020375 0.000530260317488982 +< -2 -1 1 2 >: -0.001184062258040749 -0.001060520634977963 +< -2 0 0 2 >: 0.000592031129020374 0.000530260317488981 +< -1 -1 1 1 >: 0.000592031129020374 0.000530260317488981 +< -1 0 0 1 >: -0.000592031129020374 -0.000530260317488981 +< 0 0 0 0 >: 0.000148007782255094 0.000132565079372245 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 3 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.015496423957503546 -0.211402399527168994 +< 1 -1 0 >: 0.030992847915007088 0.422804799054337876 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 3 ) +l=( 1 1 2 ) +num_ms=4 +< -1 -1 2 >: 0.010335376702368096 0.186370131773652109 +< -1 0 1 >: -0.014616429904723878 -0.263567167975559735 +< -1 1 0 >: 0.004219399870041812 0.076085287690118339 +< 0 0 0 >: 0.004219399870041813 0.076085287690118353 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 3 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.030084347150259941 0.124342680618911530 +< 1 -1 0 >: -0.060168694300519888 -0.248685361237823088 +< 2 -2 0 >: 0.060168694300519902 0.248685361237823171 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 3 ) +l=( 2 2 2 ) +num_ms=7 +< -2 0 2 >: 0.129546917496429492 -0.024167972229472437 +< -2 1 1 >: -0.158661922808341349 0.029599600039980717 +< -2 2 0 >: 0.064773458748214774 -0.012083986114736222 +< -1 -1 2 >: -0.079330961404170675 0.014799800019990358 +< -1 0 1 >: 0.064773458748214732 -0.012083986114736215 +< -1 1 0 >: 0.032386729374107366 -0.006041993057368108 +< 0 0 0 >: -0.032386729374107366 0.006041993057368108 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 3 ) +l=( 2 2 4 ) +num_ms=9 +< -2 -2 4 >: -0.005437462674323070 0.002070360366137689 +< -2 -1 3 >: 0.007689733458925168 -0.002927931708791647 +< -2 0 2 >: -0.005034112235651309 0.001916781240742731 +< -2 1 1 >: 0.002906446054384072 -0.001106654165320441 +< -2 2 0 >: -0.000649901095053884 0.000247455394123980 +< -1 -1 2 >: -0.004110335428415725 0.001565045329452845 +< -1 0 1 >: 0.007119309798166423 -0.002710738026760699 +< -1 1 0 >: -0.002599604380215535 0.000989821576495919 +< 0 0 0 >: -0.001949703285161650 0.000742366182371939 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 3 ) +l=( 2 3 3 ) +num_ms=14 +< -2 -1 3 >: -0.019415948844952600 -0.041919380289178819 +< -2 0 2 >: 0.027458298182874204 0.059282956131232099 +< -2 1 1 >: -0.030079058610926628 -0.064941224697330019 +< -2 2 0 >: 0.027458298182874204 0.059282956131232099 +< -1 -2 3 >: 0.030699310641682822 0.066280359908286429 +< -1 -1 2 >: -0.023779583771057145 -0.051340546021085433 +< -1 0 1 >: 0.008683076292994509 0.018746916780253729 +< -1 1 0 >: 0.008683076292994509 0.018746916780253729 +< 0 -3 3 >: -0.030699310641682818 -0.066280359908286415 +< 0 -1 1 >: 0.018419586385009686 0.039768215944971839 +< 0 0 0 >: -0.012279724256673128 -0.026512143963314569 +< 1 -3 2 >: 0.030699310641682822 0.066280359908286429 +< 1 -2 1 >: -0.023779583771057145 -0.051340546021085433 +< 2 -3 1 >: -0.019415948844952600 -0.041919380289178819 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 3 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.010916976047477154 0.029562404251441590 +< 0 1 -1 >: 0.012605838119495259 0.034135724104924658 +< 1 -2 1 >: -0.007277984031651434 -0.019708269500961051 +< 1 -1 0 >: -0.020585247448592556 -0.055743404038326318 +< 1 0 -1 >: -0.017827347233669948 -0.048275203990610638 +< 2 -2 0 >: 0.016274067033930591 0.044069030323034782 +< 2 -1 -1 >: 0.023015006314353527 0.062323020363466958 +< 3 -2 -1 >: -0.028187510948549519 -0.076329799559789718 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 3 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.003019318068367032 0.035361910211253469 +< 1 -1 0 >: 0.006038636136734063 -0.070723820422506939 +< 2 -2 0 >: -0.006038636136734062 0.070723820422506925 +< 3 -3 0 >: 0.006038636136734062 -0.070723820422506925 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 3 ) +l=( 3 3 2 ) +num_ms=12 +< -3 1 2 >: 0.000780557466224931 0.022883587515913923 +< -3 2 1 >: -0.001234169718960367 -0.036182128793041307 +< -3 3 0 >: 0.001234169718960367 0.036182128793041300 +< -2 1 1 >: 0.000955983753585398 0.028026556449156175 +< -2 3 -1 >: -0.001234169718960367 -0.036182128793041307 +< -1 1 0 >: -0.000740501831376220 -0.021709277275824775 +< -1 2 -1 >: 0.000955983753585398 0.028026556449156175 +< -1 3 -2 >: 0.000780557466224931 0.022883587515913923 +< 0 0 0 >: 0.000493667887584147 0.014472851517216521 +< 0 1 -1 >: -0.000698151821929577 -0.020467702901859640 +< 0 2 -2 >: -0.002207749909893755 -0.064724559641514259 +< 1 1 -2 >: 0.001209234426978807 0.035451101340245844 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 3 ) +l=( 3 3 4 ) +num_ms=14 +< -3 -1 4 >: 0.001088468824505481 0.005627282905129761 +< -3 0 3 >: -0.001333096610482720 -0.006891985877927236 +< -3 1 2 >: 0.001234207636923562 0.006380739053133610 +< -3 2 1 >: -0.000919924058170154 -0.004755922089831464 +< -3 3 0 >: 0.000251931578925744 0.001302462905168902 +< -2 -2 4 >: -0.000702603605029282 -0.003632395495994208 +< -2 -1 3 >: 0.000628427768832755 0.003248913300082847 +< -2 0 2 >: 0.000290905529820292 0.001503954617817535 +< -2 1 1 >: -0.000950093481884947 -0.004911895213273929 +< -2 2 0 >: 0.000587840350826736 0.003039080112060771 +< -1 -1 2 >: -0.000531118402618552 -0.002745832898809083 +< -1 0 1 >: 0.000650484539708764 0.003362944760514725 +< -1 1 0 >: 0.000083977192975248 0.000434154301722968 +< 0 0 0 >: -0.000251931578925744 -0.001302462905168902 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 3 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.007778889614829623 -0.017226748254304803 +< 0 1 -1 >: -0.009527155160883875 -0.021098371575213819 +< 1 -2 1 >: 0.006736716019677401 0.014918801612827192 +< 1 -1 0 >: 0.015063754965110481 0.033359454549115104 +< 1 0 -1 >: 0.012299504424945760 0.027237880580966350 +< 2 -3 1 >: -0.003889444807414812 -0.008613374127152405 +< 2 -2 0 >: -0.013473432039354806 -0.029837603225654395 +< 2 -1 -1 >: -0.015063754965110483 -0.033359454549115111 +< 3 -3 0 >: 0.010290503698531100 0.022788845889603292 +< 3 -2 -1 >: 0.017823675241331317 0.039471438926650088 +< 4 -3 -1 >: -0.020581007397062208 -0.045577691779206599 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 3 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.018737015545710532 -0.052616975313013861 +< 1 -1 0 >: -0.037474031091421049 0.105233950626027695 +< 2 -2 0 >: 0.037474031091421049 -0.105233950626027695 +< 3 -3 0 >: -0.037474031091421049 0.105233950626027695 +< 4 -4 0 >: 0.037474031091421056 -0.105233950626027709 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 3 ) +l=( 4 4 2 ) +num_ms=18 +< -4 2 2 >: -0.006044870827777889 0.025085459056242251 +< -4 3 1 >: 0.011308917792424723 -0.046930596589202039 +< -4 4 0 >: -0.013058413463399518 0.054190785148011039 +< -3 1 2 >: 0.009067306241666833 -0.037628188584363377 +< -3 2 1 >: -0.010685922884296206 0.044345245519615953 +< -3 3 0 >: 0.003264603365849879 -0.013547696287002755 +< -3 4 -1 >: 0.011308917792424723 -0.046930596589202039 +< -2 1 1 >: 0.007270018580844463 -0.030169669235915589 +< -2 2 0 >: 0.003730975275257007 -0.015483081470860301 +< -2 3 -1 >: -0.010685922884296206 0.044345245519615953 +< -2 4 -2 >: -0.006044870827777889 0.025085459056242251 +< -1 1 0 >: -0.007928322459921136 0.032901548125578127 +< -1 2 -1 >: 0.007270018580844463 -0.030169669235915589 +< -1 3 -2 >: 0.009067306241666833 -0.037628188584363377 +< 0 0 0 >: 0.004663719094071257 -0.019353851838575371 +< 0 1 -1 >: -0.005108848299380770 0.021201082453201125 +< 0 2 -2 >: -0.021675007659273028 0.089948575026921870 +< 1 1 -2 >: 0.011423732084149601 -0.047407061561935734 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 3 ) +l=( 4 4 4 ) +num_ms=19 +< -4 0 4 >: 0.009407769941711568 -0.012810286243555288 +< -4 1 3 >: -0.014874990359339028 0.020254841004178591 +< -4 2 2 >: 0.016866653676554738 -0.022966830918090146 +< -4 3 1 >: -0.014874990359339032 0.020254841004178594 +< -4 4 0 >: 0.004703884970855784 -0.006405143121777644 +< -3 -1 4 >: -0.014874990359339027 0.020254841004178587 +< -3 0 3 >: 0.014111654912567351 -0.019215429365332930 +< -3 1 2 >: -0.005622217892184912 0.007655610306030048 +< -3 2 1 >: -0.005622217892184912 0.007655610306030048 +< -3 3 0 >: 0.007055827456283674 -0.009607714682666463 +< -2 -2 4 >: 0.008433326838277367 -0.011483415459045071 +< -2 -1 3 >: -0.005622217892184912 0.007655610306030048 +< -2 0 2 >: -0.007391819239916232 0.010065224905650583 +< -2 1 1 >: 0.012749991736576313 -0.017361292289295938 +< -2 2 0 >: -0.003695909619958114 0.005032612452825289 +< -1 -1 2 >: 0.006374995868288156 -0.008680646144647969 +< -1 0 1 >: -0.006047852105386008 0.008235184013714114 +< -1 1 0 >: -0.003023926052693004 0.004117592006857056 +< 0 0 0 >: 0.003023926052693005 -0.004117592006857058 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 4 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.012095863652752078 0.074670222274287504 +< 1 -1 0 >: -0.024191727305504153 -0.149340444548574980 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 4 ) +l=( 1 1 2 ) +num_ms=4 +< -1 -1 2 >: -0.027722962161594932 -0.182169209836380019 +< -1 0 1 >: 0.039206189078083695 0.257626167197398892 +< -1 1 0 >: -0.011317851909065490 -0.074370268490854874 +< 0 0 0 >: -0.011317851909065492 -0.074370268490854888 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 4 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.010303945864100435 -0.114024069317504431 +< 1 -1 0 >: 0.020607891728200874 0.228048138635008890 +< 2 -2 0 >: -0.020607891728200878 -0.228048138635008946 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 4 ) +l=( 2 2 2 ) +num_ms=7 +< -2 0 2 >: 0.042022451452387269 0.080597823448569278 +< -2 1 1 >: -0.051466781899613338 -0.098711770913959981 +< -2 2 0 >: 0.021011225726193641 0.040298911724284653 +< -1 -1 2 >: -0.025733390949806669 -0.049355885456979991 +< -1 0 1 >: 0.021011225726193627 0.040298911724284632 +< -1 1 0 >: 0.010505612863096814 0.020149455862142316 +< 0 0 0 >: -0.010505612863096814 -0.020149455862142316 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 4 ) +l=( 2 2 4 ) +num_ms=9 +< -2 -2 4 >: -0.056934482896859567 -0.047203325033994971 +< -2 -1 3 >: 0.080517517879437839 0.066755582452181134 +< -2 0 2 >: -0.052711088636069131 -0.043701787092569389 +< -2 1 1 >: 0.030432761213312742 0.025231238541962651 +< -2 2 0 >: -0.006804972281598627 -0.005641876453634117 +< -1 -1 2 >: -0.043038423648328772 -0.035682359741514340 +< -1 0 1 >: 0.074544736436579315 0.061803660006253106 +< -1 1 0 >: -0.027219889126394513 -0.022567505814536471 +< 0 0 0 >: -0.020414916844795877 -0.016925629360902347 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 4 ) +l=( 2 3 3 ) +num_ms=14 +< -2 -1 3 >: 0.018889007523489963 0.016319736810161682 +< -2 0 2 >: -0.026713090619486946 -0.023079593131290089 +< -2 1 1 >: 0.029262724625945299 0.025282427552097746 +< -2 2 0 >: -0.026713090619486946 -0.023079593131290089 +< -1 -2 3 >: -0.029866143257142375 -0.025803769567300922 +< -1 -1 2 >: 0.023134215090071478 0.019987513960706055 +< -1 0 1 >: -0.008447420970005705 -0.007298408176485422 +< -1 1 0 >: -0.008447420970005705 -0.007298408176485422 +< 0 -3 3 >: 0.029866143257142371 0.025803769567300919 +< 0 -1 1 >: -0.017919685954285419 -0.015482261740380547 +< 0 0 0 >: 0.011946457302856948 0.010321507826920368 +< 1 -3 2 >: -0.029866143257142375 -0.025803769567300922 +< 1 -2 1 >: 0.023134215090071478 0.019987513960706055 +< 2 -3 1 >: 0.018889007523489963 0.016319736810161682 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 4 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.010671986401207595 -0.045090125829449212 +< 0 1 -1 >: -0.012322948443050454 -0.052065592570853178 +< 1 -2 1 >: 0.007114657600805060 0.030060083886299466 +< 1 -1 0 >: 0.020123290541398692 0.085022756636155300 +< 1 0 -1 >: 0.017427280816586368 0.073631867146692426 +< 2 -2 0 >: -0.015908858032035681 -0.067216390979111681 +< 2 -1 -1 >: -0.022498522790773006 -0.095058331736432286 +< 3 -2 -1 >: 0.027554950401886016 0.116422204277235763 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 4 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.001864695096017076 -0.055191671252036840 +< 1 -1 0 >: -0.003729390192034152 0.110383342504073681 +< 2 -2 0 >: 0.003729390192034151 -0.110383342504073667 +< 3 -3 0 >: -0.003729390192034151 0.110383342504073667 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 4 ) +l=( 3 3 2 ) +num_ms=12 +< -3 1 2 >: -0.001824350276484969 -0.001765977023819884 +< -3 2 1 >: 0.002884551061825212 0.002792254845398130 +< -3 3 0 >: -0.002884551061825211 -0.002792254845398130 +< -2 1 1 >: -0.002234363644746794 -0.002162871302918785 +< -2 3 -1 >: 0.002884551061825212 0.002792254845398130 +< -1 1 0 >: 0.001730730637095126 0.001675352907238878 +< -1 2 -1 >: -0.002234363644746794 -0.002162871302918785 +< -1 3 -2 >: -0.001824350276484969 -0.001765977023819884 +< 0 0 0 >: -0.001153820424730084 -0.001116901938159252 +< 0 1 -1 >: 0.001631748493196371 0.001579537868785611 +< 0 2 -2 >: 0.005160041807048300 0.004994937315850710 +< 1 1 -2 >: -0.002826271295390074 -0.002735839841215740 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 4 ) +l=( 3 3 4 ) +num_ms=14 +< -3 -1 4 >: -0.000880613013969882 0.073925413803475143 +< -3 0 3 >: 0.001078526272540303 -0.090539771421307161 +< -3 1 2 >: -0.000998521301250582 0.083823540210658604 +< -3 2 1 >: 0.000744253835525948 -0.062478378008573206 +< -3 3 0 >: -0.000203822307113651 0.017110408495815126 +< -2 -2 4 >: 0.000568433256259812 -0.047718649420391841 +< -2 -1 3 >: -0.000508422160667399 0.042680857559390842 +< -2 0 2 >: -0.000235353727757834 0.019757397902006639 +< -2 1 1 >: 0.000768662056091465 -0.064527391340068213 +< -2 2 0 >: -0.000475585383265185 0.039924286490235293 +< -1 -1 2 >: 0.000429695152286318 -0.036071908361780945 +< -1 0 1 >: -0.000526266934024496 0.044178884767398584 +< -1 1 0 >: -0.000067940769037884 0.005703469498605046 +< 0 0 0 >: 0.000203822307113651 -0.017110408495815126 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 4 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.005754255337477731 0.002739786439421501 +< 0 1 -1 >: 0.007047494713253530 0.003355539390389707 +< 1 -2 1 >: -0.004983331302117914 -0.002372724657483135 +< 1 -1 0 >: -0.011143067545938199 -0.005305573626022196 +< 1 0 -1 >: -0.009098276552305242 -0.004331982725507440 +< 2 -3 1 >: 0.002877127668738867 0.001369893219710751 +< 2 -2 0 >: 0.009966662604235831 0.004745449314966272 +< 2 -1 -1 >: 0.011143067545938200 0.005305573626022197 +< 3 -3 0 >: -0.007612164301666063 -0.003624396782068212 +< 3 -2 -1 >: -0.013184655326047687 -0.006277639373331288 +< 4 -3 -1 >: 0.015224328603332131 0.007248793564136426 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 4 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.007116166719745826 0.026591214056357816 +< 1 -1 0 >: 0.014232333439491648 -0.053182428112715618 +< 2 -2 0 >: -0.014232333439491648 0.053182428112715618 +< 3 -3 0 >: 0.014232333439491648 -0.053182428112715618 +< 4 -4 0 >: -0.014232333439491651 0.053182428112715625 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 4 ) +l=( 4 4 2 ) +num_ms=18 +< -4 2 2 >: 0.010506451961026682 -0.021355907622853013 +< -4 3 1 >: -0.019655771794380526 0.039953244754154946 +< -4 4 0 >: 0.022696530273230889 -0.046134033227620705 +< -3 1 2 >: -0.015759677941540023 0.032033861434279519 +< -3 2 1 >: 0.018572958569631662 -0.037752267746282105 +< -3 3 0 >: -0.005674132568307720 0.011533508306905171 +< -3 4 -1 >: -0.019655771794380526 0.039953244754154946 +< -2 1 1 >: -0.012635853296387476 0.025684228770528172 +< -2 2 0 >: -0.006484722935208827 0.013181152350748775 +< -2 3 -1 >: 0.018572958569631662 -0.037752267746282105 +< -2 4 -2 >: 0.010506451961026682 -0.021355907622853013 +< -1 1 0 >: 0.013780036237318752 -0.028009948745341139 +< -1 2 -1 >: -0.012635853296387476 0.025684228770528172 +< -1 3 -2 >: -0.015759677941540023 0.032033861434279519 +< 0 0 0 >: -0.008105903669011032 0.016476440438435967 +< 0 1 -1 >: 0.008879572576962463 -0.018049036191043377 +< 0 2 -2 >: 0.037672835899249593 -0.076575575307409119 +< 1 1 -2 >: -0.019855327893231054 0.040358871851526874 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 2 4 ) +l=( 4 4 4 ) +num_ms=19 +< -4 0 4 >: -0.000815261153535848 0.006227177581522628 +< -4 1 3 >: 0.001289041066514758 -0.009846032275975178 +< -4 2 2 >: -0.001461635182177508 0.011164351201262402 +< -4 3 1 >: 0.001289041066514758 -0.009846032275975180 +< -4 4 0 >: -0.000407630576767924 0.003113588790761314 +< -3 -1 4 >: 0.001289041066514758 -0.009846032275975176 +< -3 0 3 >: -0.001222891730303773 0.009340766372283942 +< -3 1 2 >: 0.000487211727392503 -0.003721450400420801 +< -3 2 1 >: 0.000487211727392503 -0.003721450400420801 +< -3 3 0 >: -0.000611445865151886 0.004670383186141970 +< -2 -2 4 >: -0.000730817591088754 0.005582175600631200 +< -2 -1 3 >: 0.000487211727392503 -0.003721450400420801 +< -2 0 2 >: 0.000640562334921024 -0.004892782385482065 +< -2 1 1 >: -0.001104892342726936 0.008439456236550154 +< -2 2 0 >: 0.000320281167460512 -0.002446391192741031 +< -1 -1 2 >: -0.000552446171363468 0.004219728118275077 +< -1 0 1 >: 0.000524096455844474 -0.004003185588121690 +< -1 1 0 >: 0.000262048227922237 -0.002001592794060844 +< 0 0 0 >: -0.000262048227922237 0.002001592794060845 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 1 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: 0.044909625842496657 -0.074854674750367375 +< 0 1 -1 >: 0.044909625842496650 -0.074854674750367362 +< 1 -1 0 >: -0.077785753708112457 0.129652099851679470 +< 1 0 -1 >: -0.077785753708112457 0.129652099851679470 +< 2 -1 -1 >: 0.110005667853425901 -0.183355758000395830 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 1 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.011830002482392145 -0.182045459226579193 +< 0 1 -1 >: -0.013660110235446086 -0.210207989778429000 +< 1 -2 1 >: 0.007886668321594761 0.121363639484386096 +< 1 -1 0 >: 0.022306866604675138 0.343268209875555452 +< 1 0 -1 >: 0.019318313158479386 0.297278990063839232 +< 2 -2 0 >: -0.017635126483080060 -0.271377347883864861 +< 2 -1 -1 >: -0.024939835046536761 -0.383785525898203250 +< 3 -2 -1 >: 0.030544935066598111 0.470039354558148270 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 1 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: -0.009918496013901573 0.142717750537309895 +< 0 1 -1 >: -0.013224661351868769 0.190290334049746573 +< 0 2 -2 >: -0.003306165337967192 0.047572583512436636 +< 1 -2 1 >: 0.007392810440548207 -0.106375530599094034 +< 1 -1 0 >: 0.018108613344463221 -0.260565771085598918 +< 1 0 -1 >: 0.018108613344463224 -0.260565771085598974 +< 1 1 -2 >: 0.007392810440548207 -0.106375530599094034 +< 2 -2 0 >: -0.012804723293755146 0.184247823679728584 +< 2 -1 -1 >: -0.020910025578153385 0.300875436155745968 +< 2 0 -2 >: -0.012804723293755151 0.184247823679728640 +< 3 -2 -1 >: 0.019559537915532423 -0.281443199547744605 +< 3 -1 -2 >: 0.019559537915532419 -0.281443199547744605 +< 4 -2 -2 >: -0.027661363793896721 0.398020789838097688 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 1 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.002662617097155242 0.043569531234203263 +< 0 1 -1 >: -0.003261026634220442 0.053361559928026096 +< 1 -2 1 >: 0.002305894046687218 -0.037732320879799594 +< 1 -1 0 >: 0.005156135837304694 -0.084372034436066570 +< 1 0 -1 >: 0.004209967281958199 -0.068889477642964686 +< 2 -3 1 >: -0.001331308548577621 0.021784765617101635 +< 2 -2 0 >: -0.004611788093374438 0.075464641759599216 +< 2 -1 -1 >: -0.005156135837304694 0.084372034436066584 +< 3 -3 0 >: 0.003522311337830738 -0.057637072192681452 +< 3 -2 -1 >: 0.006100822197198743 -0.099830337437239625 +< 4 -3 -1 >: -0.007044622675661477 0.115274144385362945 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 1 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: 0.003440880470860412 0.013618720548827392 +< 0 1 -1 >: -0.001146960156953472 -0.004539573516275801 +< 0 2 -2 >: -0.008028721098674294 -0.031777014613930586 +< 0 3 -3 >: -0.003440880470860412 -0.013618720548827392 +< 1 -3 2 >: 0.006282159505230815 0.024864268163172991 +< 1 -2 1 >: 0.006488186437860689 0.025679705736427819 +< 1 -1 0 >: -0.004442157586644238 -0.017581692627420414 +< 1 0 -1 >: -0.004442157586644236 -0.017581692627420407 +< 1 1 -2 >: 0.006488186437860687 0.025679705736427812 +< 1 2 -3 >: 0.006282159505230816 0.024864268163172998 +< 2 -3 1 >: -0.008428401419515532 -0.033358916294183201 +< 2 -2 0 >: -0.001986593266100584 -0.007862771974883781 +< 2 -1 -1 >: 0.007254012962874356 0.028710783834421945 +< 2 0 -2 >: -0.001986593266100584 -0.007862771974883781 +< 2 1 -3 >: -0.008428401419515532 -0.033358916294183194 +< 3 -3 0 >: 0.009103714016995480 0.036031747747082357 +< 3 -2 -1 >: -0.004291531943600353 -0.016985528779976698 +< 3 -1 -2 >: -0.004291531943600353 -0.016985528779976694 +< 3 0 -3 >: 0.009103714016995482 0.036031747747082364 +< 4 -3 -1 >: -0.007433151368620624 -0.029419798840343042 +< 4 -2 -2 >: 0.009596157153502179 0.037980796985806947 +< 4 -1 -3 >: -0.007433151368620624 -0.029419798840343042 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 2 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: -0.031626196124089540 0.124238012018366747 +< 0 1 -1 >: -0.031626196124089533 0.124238012018366720 +< 1 -1 0 >: 0.054778178537060983 -0.215186549047164027 +< 1 0 -1 >: 0.054778178537060983 -0.215186549047164027 +< 2 -1 -1 >: -0.077468043009206428 0.304319736102762528 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 2 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.010343487681285667 0.081185770639017593 +< 0 1 -1 >: 0.011943630794299710 0.093745253065608006 +< 1 -2 1 >: -0.006895658454190442 -0.054123847092678382 +< 1 -1 0 >: -0.019503867414817636 -0.153085357212546791 +< 1 0 -1 >: -0.016890844653275592 -0.132575808293480812 +< 2 -2 0 >: 0.015419161053190952 0.121024601303033247 +< 2 -1 -1 >: 0.021805986681837659 0.171154632543546154 +< 3 -2 -1 >: -0.026706770354213965 -0.209620758422620096 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 2 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: -0.035281108280478521 0.016415843772724075 +< 0 1 -1 >: -0.047041477707304706 0.021887791696965440 +< 0 2 -2 >: -0.011760369426826175 0.005471947924241359 +< 1 -2 1 >: 0.026296985478893566 -0.012235647527942548 +< 1 -1 0 >: 0.064414196196667967 -0.029971093116005623 +< 1 0 -1 >: 0.064414196196667980 -0.029971093116005626 +< 1 1 -2 >: 0.026296985478893566 -0.012235647527942548 +< 2 -2 0 >: -0.045547714935344624 0.021192763181901022 +< 2 -1 -1 >: -0.074379107027559246 0.034607637356866373 +< 2 0 -2 >: -0.045547714935344645 0.021192763181901029 +< 3 -2 -1 >: 0.069575283807829180 -0.032372480488778228 +< 3 -1 -2 >: 0.069575283807829180 -0.032372480488778221 +< 4 -2 -2 >: -0.098394309966989196 0.045781600954888556 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 2 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.002213108333893375 -0.056403580921133775 +< 0 1 -1 >: -0.002710493081769895 -0.069079996461279075 +< 1 -2 1 >: 0.001916608038478716 0.048846933942113140 +< 1 -1 0 >: 0.004285665860260942 0.109225064787006762 +< 1 0 -1 >: 0.003499231521901740 0.089181891950200362 +< 2 -3 1 >: -0.001106554166946688 -0.028201790460566891 +< 2 -2 0 >: -0.003833216076957434 -0.097693867884226307 +< 2 -1 -1 >: -0.004285665860260943 -0.109225064787006776 +< 3 -3 0 >: 0.002927667137963184 0.074614924085413703 +< 3 -2 -1 >: 0.005070868230601998 0.129236839518831331 +< 4 -3 -1 >: -0.005855334275926370 -0.149229848170827462 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 2 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: -0.002552071211400202 0.000010578837385885 +< 0 1 -1 >: 0.000850690403800068 -0.000003526279128628 +< 0 2 -2 >: 0.005954832826600471 -0.000024683953900398 +< 0 3 -3 >: 0.002552071211400202 -0.000010578837385885 +< 1 -3 2 >: -0.004659423236144752 0.000019314226228094 +< 1 -2 1 >: -0.004812231625738799 0.000019947647073678 +< 1 -1 0 >: 0.003294709766696124 -0.000013657220339256 +< 1 0 -1 >: 0.003294709766696123 -0.000013657220339256 +< 1 1 -2 >: -0.004812231625738799 0.000019947647073678 +< 1 2 -3 >: -0.004659423236144753 0.000019314226228094 +< 2 -3 1 >: 0.006251272255177035 -0.000025912753667297 +< 2 -2 0 >: 0.001473439000893000 -0.000006107694612454 +< 2 -1 -1 >: -0.005380238519313141 0.000022302147423959 +< 2 0 -2 >: 0.001473439000893000 -0.000006107694612454 +< 2 1 -3 >: 0.006251272255177034 -0.000025912753667297 +< 3 -3 0 >: -0.006752145753492282 0.000027988972883245 +< 3 -2 -1 >: 0.003182992033236229 -0.000013194128349459 +< 3 -1 -2 >: 0.003182992033236228 -0.000013194128349459 +< 3 0 -3 >: -0.006752145753492283 0.000027988972883245 +< 4 -3 -1 >: 0.005513103921652112 -0.000022852900662848 +< 4 -2 -2 >: -0.007117386558156476 0.000029502967893248 +< 4 -1 -3 >: 0.005513103921652112 -0.000022852900662848 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 3 ) +l=( 2 1 1 ) +num_ms=4 +< 0 -1 1 >: 0.015761397451015922 -0.034885911749473052 +< 0 0 0 >: 0.015761397451015922 -0.034885911749473059 +< 1 -1 0 >: -0.054599082366892350 0.120848343236902800 +< 2 -1 -1 >: 0.038607381388192433 -0.085452682997973414 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 3 ) +l=( 2 2 2 ) +num_ms=8 +< -2 0 2 >: -0.024039661482545320 -0.096286931071182427 +< -2 1 1 >: 0.014721226055368649 0.058963462505733047 +< -1 -1 2 >: 0.014721226055368649 0.058963462505733047 +< -1 0 1 >: -0.012019830741272653 -0.048143465535591186 +< 0 -2 2 >: -0.012019830741272653 -0.048143465535591186 +< 0 -1 1 >: -0.006009915370636327 -0.024071732767795593 +< 0 0 0 >: 0.006009915370636327 0.024071732767795593 +< 1 -2 1 >: 0.014721226055368649 0.058963462505733047 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 3 ) +l=( 2 3 3 ) +num_ms=12 +< -2 -1 3 >: 0.011712964679141825 0.035618966481091710 +< -2 0 2 >: -0.033129267009678810 -0.100745650950545190 +< -2 1 1 >: 0.018145646854812802 0.055180665596155372 +< -1 -2 3 >: -0.018519823269595739 -0.056318530990721309 +< -1 -1 2 >: 0.014345393419569783 0.043624146521985999 +< -1 0 1 >: -0.010476394096246056 -0.031858572136003023 +< 0 -3 3 >: 0.018519823269595739 0.056318530990721302 +< 0 -1 1 >: -0.011111893961757440 -0.033791118594432776 +< 0 0 0 >: 0.007407929307838295 0.022527412396288523 +< 1 -3 2 >: -0.018519823269595739 -0.056318530990721309 +< 1 -2 1 >: 0.014345393419569783 0.043624146521985999 +< 2 -3 1 >: 0.011712964679141825 0.035618966481091710 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 3 ) +l=( 2 4 4 ) +num_ms=18 +< -2 -2 4 >: -0.000325432350205215 -0.000378105260875749 +< -2 -1 3 >: 0.000488148525307823 0.000567157891313623 +< -2 0 2 >: -0.001166898166104609 -0.001355766675415617 +< -2 1 1 >: 0.000615009333727343 0.000714551778344593 +< -1 -3 4 >: 0.000608828178520274 0.000707370171166916 +< -1 -2 3 >: -0.000575288554118958 -0.000668401984918876 +< -1 -1 2 >: 0.000391389543334462 0.000454737967178732 +< -1 0 1 >: -0.000275040535402238 -0.000319557269964375 +< 0 -4 4 >: -0.000703014225517819 -0.000816800717479861 +< 0 -3 3 >: 0.000175753556379455 0.000204200179369965 +< 0 -2 2 >: 0.000200861207290806 0.000233371633565675 +< 0 -1 1 >: -0.000426830065492962 -0.000495914721327059 +< 0 0 0 >: 0.000251076509113507 0.000291714541957093 +< 1 -4 3 >: 0.000608828178520274 0.000707370171166916 +< 1 -3 2 >: -0.000575288554118958 -0.000668401984918876 +< 1 -2 1 >: 0.000391389543334462 0.000454737967178732 +< 2 -4 2 >: -0.000325432350205215 -0.000378105260875749 +< 2 -3 1 >: 0.000488148525307823 0.000567157891313623 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 3 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.008099599554954246 -0.002354940413717618 +< 0 1 -1 >: -0.009352611966762011 -0.002719250963570790 +< 1 -2 1 >: 0.005399733036636162 0.001569960275811745 +< 1 -1 0 >: 0.015272751387209840 0.004440518228879951 +< 1 0 -1 >: 0.013226590687007742 0.003845601592177918 +< 2 -2 0 >: -0.012074170130269825 -0.003510537898689381 +< 2 -1 -1 >: -0.017075455152627705 -0.004964650307551269 +< 3 -2 -1 >: 0.020913076124857863 0.006080430002426092 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 3 ) +l=( 3 2 3 ) +num_ms=14 +< -3 0 3 >: 0.019631542699033788 -0.035711676901976415 +< -3 1 2 >: -0.019631542699033788 0.035711676901976415 +< -3 2 1 >: 0.012416077782359243 -0.022586047614854231 +< -2 -1 3 >: -0.019631542699033788 0.035711676901976415 +< -2 1 1 >: 0.015206527586743538 -0.027662145981298958 +< -1 -2 3 >: 0.012416077782359243 -0.022586047614854231 +< -1 -1 2 >: 0.015206527586743538 -0.027662145981298958 +< -1 0 1 >: -0.011778925619420269 0.021427006141185843 +< 0 -2 2 >: -0.017558985591291709 0.031941494857331360 +< 0 -1 1 >: -0.005552638787056022 0.010100787561972214 +< 0 0 0 >: 0.007852617079613515 -0.014284670760790565 +< 1 -2 1 >: 0.019234904990517311 -0.034990154507591284 +< 1 -1 0 >: -0.005552638787056022 0.010100787561972214 +< 2 -2 0 >: -0.017558985591291709 0.031941494857331360 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 3 ) +l=( 4 2 2 ) +num_ms=9 +< 0 -2 2 >: 0.009353804665421333 -0.010047640726051023 +< 0 -1 1 >: 0.037415218661685339 -0.040190562904204100 +< 0 0 0 >: 0.028061413996263992 -0.030142922178153061 +< 1 -2 1 >: -0.041831486160273552 0.044934415353890853 +< 1 -1 0 >: -0.102465796274966534 0.110066389507314608 +< 2 -2 0 >: 0.072454259385708111 -0.077828690401342007 +< 2 -1 -1 >: 0.059158655062081289 -0.063546859610778300 +< 3 -2 -1 >: -0.110675709352324056 0.118885288334477632 +< 4 -2 -2 >: 0.078259544595659730 -0.084064593564627074 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 3 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.010293696918808872 -0.032314368986093446 +< 0 1 -1 >: 0.012607152508970569 -0.039576857687973373 +< 1 -2 1 >: -0.008914603030546085 0.027985064449220918 +< 1 -1 0 >: -0.019933658368726685 0.062576506463170700 +< 1 0 -1 >: -0.016275763903446684 0.051093503573580605 +< 2 -3 1 >: 0.005146848459404437 -0.016157184493046726 +< 2 -2 0 >: 0.017829206061092177 -0.055970128898441857 +< 2 -1 -1 >: 0.019933658368726688 -0.062576506463170700 +< 3 -3 0 >: -0.013617281059320054 0.042747892055590840 +< 3 -2 -1 >: -0.023585822655687684 0.074041520956753329 +< 4 -3 -1 >: 0.027234562118640119 -0.085495784111181708 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 3 ) +l=( 4 3 3 ) +num_ms=14 +< 0 -3 3 >: -0.002607958750132885 0.016684473672022890 +< 0 -2 2 >: -0.006085237083643398 0.038930438568053415 +< 0 -1 1 >: -0.000869319583377629 0.005561491224007634 +< 0 0 0 >: 0.002607958750132885 -0.016684473672022890 +< 1 -3 2 >: 0.009522918909938399 -0.060923083935119908 +< 1 -2 1 >: 0.009835228358793364 -0.062921090528084284 +< 1 -1 0 >: -0.006733720537907048 0.043079125781320511 +< 2 -3 1 >: -0.012776336416104280 0.081736894246712127 +< 2 -2 0 >: -0.003011411372849321 0.019265570731659274 +< 2 -1 -1 >: 0.005498059796123914 -0.035173958909803654 +< 3 -3 0 >: 0.013800020564732902 -0.088285936184354416 +< 3 -2 -1 >: -0.006505392081224297 0.041618389439573196 +< 4 -3 -1 >: -0.011267669607836723 0.072085165038528798 +< 4 -2 -2 >: 0.007273249456953178 -0.046530773950472511 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 3 ) +l=( 4 4 4 ) +num_ms=25 +< -4 0 4 >: -0.003648104537075803 0.026454157441520663 +< -4 1 3 >: 0.005768159739776860 -0.041827695547948941 +< -4 2 2 >: -0.003270239184416702 0.023714074357456379 +< -3 -1 4 >: 0.002884079869888429 -0.020913847773974467 +< -3 0 3 >: -0.005472156805613703 0.039681236162280982 +< -3 1 2 >: 0.002180159456277802 -0.015809382904970918 +< -2 -2 4 >: -0.003270239184416702 0.023714074357456375 +< -2 -1 3 >: 0.001090079728138901 -0.007904691452485459 +< -2 0 2 >: 0.002866367850559558 -0.020785409418337654 +< -2 1 1 >: -0.002472068459904368 0.017926155234835255 +< -1 -3 4 >: 0.002884079869888428 -0.020913847773974457 +< -1 -2 3 >: 0.001090079728138900 -0.007904691452485456 +< -1 -1 2 >: -0.002472068459904368 0.017926155234835258 +< -1 0 1 >: 0.002345210059548730 -0.017006244069548995 +< 0 -4 4 >: -0.001824052268537901 0.013227078720760330 +< 0 -3 3 >: -0.002736078402806852 0.019840618081140498 +< 0 -2 2 >: 0.001433183925279780 -0.010392704709168836 +< 0 -1 1 >: 0.001172605029774365 -0.008503122034774499 +< 0 0 0 >: -0.001172605029774366 0.008503122034774501 +< 1 -4 3 >: 0.002884079869888428 -0.020913847773974457 +< 1 -3 2 >: 0.001090079728138900 -0.007904691452485456 +< 1 -2 1 >: -0.002472068459904368 0.017926155234835258 +< 2 -4 2 >: -0.003270239184416702 0.023714074357456375 +< 2 -3 1 >: 0.001090079728138901 -0.007904691452485459 +< 3 -4 1 >: 0.002884079869888429 -0.020913847773974467 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 4 ) +l=( 2 3 3 ) +num_ms=14 +< -2 -1 3 >: 0.009625484768779556 -0.059386974877105640 +< -2 0 2 >: -0.013612491104423707 0.083985865299513102 +< -2 1 1 >: 0.014911736883462550 -0.092001905872267378 +< -2 2 0 >: -0.013612491104423707 0.083985865299513102 +< -1 -2 3 >: -0.015219227726301290 0.093899051979425954 +< -1 -1 2 >: 0.011788763105220618 -0.072733892908196290 +< -1 0 1 >: -0.004304647651875987 0.026558662560656091 +< -1 1 0 >: -0.004304647651875987 0.026558662560656091 +< 0 -3 3 >: 0.015219227726301288 -0.093899051979425954 +< 0 -1 1 >: -0.009131536635780771 0.056339431187655553 +< 0 0 0 >: 0.006087691090520516 -0.037559620791770380 +< 1 -3 2 >: -0.015219227726301290 0.093899051979425954 +< 1 -2 1 >: 0.011788763105220618 -0.072733892908196290 +< 2 -3 1 >: 0.009625484768779556 -0.059386974877105640 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 4 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.006314448997840148 0.008714688795515652 +< 0 1 -1 >: 0.007291297657374341 0.010062855843989549 +< 1 -2 1 >: -0.004209632665226764 -0.005809792530343766 +< 1 -1 0 >: -0.011906639215544981 -0.016432574781972114 +< 1 0 -1 >: -0.010311452034357970 -0.014231027210775378 +< 2 -2 0 >: 0.009413024799750661 0.012991091033019172 +< 2 -1 -1 >: 0.013312027334761672 0.018372177128919212 +< 3 -2 -1 >: -0.016303837206074000 -0.022501229714941656 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 4 ) +l=( 3 2 3 ) +num_ms=14 +< -3 0 3 >: -0.022917611572427582 -0.095136539930398695 +< -3 1 2 >: 0.022917611572427585 0.095136539930398695 +< -3 2 1 >: -0.014494370219980818 -0.060169630977523370 +< -2 -1 3 >: 0.022917611572427585 0.095136539930398695 +< -2 1 1 >: -0.017751905590972488 -0.073692446953246241 +< -1 -2 3 >: -0.014494370219980818 -0.060169630977523370 +< -1 -1 2 >: -0.017751905590972488 -0.073692446953246241 +< -1 0 1 >: 0.013750566943456546 0.057081923958239203 +< 0 -2 2 >: 0.020498134943153581 0.085092708171397885 +< 0 -1 1 >: 0.006482079420585139 0.026908677009363880 +< 0 0 0 >: -0.009167044628971034 -0.038054615972159478 +< 1 -2 1 >: -0.022454581790300181 -0.093214391489357590 +< 1 -1 0 >: 0.006482079420585139 0.026908677009363880 +< 2 -2 0 >: 0.020498134943153581 0.085092708171397885 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 4 ) +l=( 3 3 2 ) +num_ms=14 +< -3 1 2 >: -0.009925536391645493 0.073082807694142202 +< -3 2 1 >: 0.015693650998244400 -0.115554065056783811 +< -3 3 0 >: -0.015693650998244400 0.115554065056783797 +< -2 1 1 >: -0.012156249791478398 0.089507793910298450 +< -2 3 -1 >: 0.015693650998244400 -0.115554065056783811 +< -1 1 0 >: 0.009416190598946637 -0.069332439034070256 +< -1 2 -1 >: -0.012156249791478398 0.089507793910298450 +< -1 3 -2 >: -0.009925536391645493 0.073082807694142202 +< 0 0 0 >: -0.006277460399297760 0.046221626022713520 +< 0 1 -1 >: 0.004438834816973460 -0.032683625198129333 +< 0 2 -2 >: 0.014036828178892772 -0.103354697817360730 +< 1 0 -1 >: 0.004438834816973460 -0.032683625198129333 +< 1 1 -2 >: -0.015376574858807463 0.113219398837396845 +< 2 0 -2 >: 0.014036828178892772 -0.103354697817360730 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 3 4 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.007795806063381553 0.037279924497378908 +< 0 1 -1 >: -0.009547873494490012 0.045658396334030481 +< 1 -2 1 >: 0.006751366093865186 -0.032285361665895955 +< 1 -1 0 >: 0.015096513526869783 -0.072192263363109216 +< 1 0 -1 >: 0.012326251678618338 -0.058944736205412601 +< 2 -3 1 >: -0.003897903031690777 0.018639962248689457 +< 2 -2 0 >: -0.013502732187730376 0.064570723331791938 +< 2 -1 -1 >: -0.015096513526869785 0.072192263363109230 +< 3 -3 0 >: 0.010312882056498515 -0.049316704557664598 +< 3 -2 -1 >: 0.017862435694320843 -0.085419037955738727 +< 4 -3 -1 >: -0.020625764112997037 0.098633409115329224 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 1 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: -0.053271702106590713 -0.004203523508645967 +< 0 1 -1 >: -0.053271702106590706 -0.004203523508645966 +< 1 -1 0 >: 0.092269294654289125 0.007280716287785008 +< 1 0 -1 >: 0.092269294654289125 0.007280716287785008 +< 2 -1 -1 >: -0.130488487890694976 -0.010296487717976251 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 1 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.005827360758839869 0.027378270584179781 +< 0 1 -1 >: -0.006728856605562517 0.031613703783445204 +< 1 -2 1 >: 0.003884907172559911 -0.018252180389453181 +< 1 -1 0 >: 0.010988176823989483 -0.051624962099289871 +< 1 0 -1 >: 0.009516040270850300 -0.044708528647393837 +< 2 -2 0 >: -0.008686916524120469 0.040813116088405904 +< 2 -1 -1 >: -0.012285155163614113 0.057718462294931189 +< 3 -2 -1 >: 0.015046180780886280 -0.070690390680325774 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 1 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: 0.059231345990026794 0.114295582697711742 +< 0 1 -1 >: 0.078975127986702420 0.152394110263615712 +< 0 2 -2 >: 0.019743781996675602 0.038098527565903921 +< 1 -2 1 >: -0.044148438677503170 -0.085190897480010755 +< 1 -1 0 >: -0.108141147700436147 -0.208674229555779661 +< 1 0 -1 >: -0.108141147700436160 -0.208674229555779689 +< 1 1 -2 >: -0.044148438677503170 -0.085190897480010755 +< 2 -2 0 >: 0.076467338864274398 0.147554962777770027 +< 2 -1 -1 >: 0.124870641470643792 0.240956245213934328 +< 2 0 -2 >: 0.076467338864274426 0.147554962777770082 +< 3 -2 -1 >: -0.116805789512458735 -0.225393928698507690 +< 3 -1 -2 >: -0.116805789512458721 -0.225393928698507662 +< 4 -2 -2 >: 0.165188331692216139 0.318755150841983859 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 1 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.014123746813070662 -0.207334968187052132 +< 0 1 -1 >: 0.017297986474141595 -0.253932438947230388 +< 1 -2 1 >: -0.012231523536738698 0.179557349542825567 +< 1 -1 0 >: -0.027350518096536380 0.401502439437448844 +< 1 0 -1 >: -0.022331604512423844 0.327825369034818237 +< 2 -3 1 >: 0.007061873406535332 -0.103667484093526094 +< 2 -2 0 >: 0.024463047073477406 -0.359114699085651301 +< 2 -1 -1 >: 0.027350518096536384 -0.401502439437448899 +< 3 -3 0 >: -0.018683960823913017 0.274278381955214201 +< 3 -2 -1 >: -0.032361569433643822 0.475064092964213869 +< 4 -3 -1 >: 0.037367921647826048 -0.548556763910428513 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 1 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: -0.005586530235519948 -0.031100937682684408 +< 0 1 -1 >: 0.001862176745173317 0.010366979227561477 +< 0 2 -2 >: 0.013035237216213212 0.072568854592930276 +< 0 3 -3 >: 0.005586530235519948 0.031100937682684408 +< 1 -3 2 >: -0.010199562093929745 -0.056782283761228985 +< 1 -2 1 >: -0.010534062434239565 -0.058644490497830340 +< 1 -1 0 >: 0.007212179521750988 0.040151137898823810 +< 1 0 -1 >: 0.007212179521750985 0.040151137898823797 +< 1 1 -2 >: -0.010534062434239563 -0.058644490497830326 +< 1 2 -3 >: -0.010199562093929746 -0.056782283761228992 +< 2 -3 1 >: 0.013684148509654210 0.076181427844674299 +< 2 -2 0 >: 0.003225384735313424 0.017956134743147611 +< 2 -1 -1 >: -0.011777439841093286 -0.065566533629494550 +< 2 0 -2 >: 0.003225384735313425 0.017956134743147615 +< 2 1 -3 >: 0.013684148509654206 0.076181427844674285 +< 3 -3 0 >: -0.014780569694928880 -0.082285346649300400 +< 3 -2 -1 >: 0.006967627374056395 0.038789684405337387 +< 3 -1 -2 >: 0.006967627374056394 0.038789684405337380 +< 3 0 -3 >: -0.014780569694928882 -0.082285346649300414 +< 4 -3 -1 >: 0.012068284620073394 0.067185704199606497 +< 4 -2 -2 >: -0.015580088450278449 -0.086736371156097877 +< 4 -1 -3 >: 0.012068284620073394 0.067185704199606497 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 2 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: 0.022868430750014889 -0.026881012703276877 +< 0 1 -1 >: 0.022868430750014886 -0.026881012703276874 +< 1 -1 0 >: -0.039609283948396239 0.046559279760979969 +< 1 0 -1 >: -0.039609283948396239 0.046559279760979969 +< 2 -1 -1 >: 0.056015986555708885 -0.065844764892301025 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 2 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.005105938206464469 -0.061307427965305666 +< 0 1 -1 >: -0.005895829595935710 -0.070791720078185599 +< 1 -2 1 >: 0.003403958804309645 0.040871618643537097 +< 1 -1 0 >: 0.009627849413628011 0.115602394803662453 +< 1 0 -1 >: 0.008337962176012965 0.100114610638289830 +< 2 -2 0 >: -0.007611483279045272 -0.091391717637396716 +< 2 -1 -1 >: -0.010764262883001859 -0.129247406571378814 +< 3 -2 -1 >: 0.013183475760267366 0.158295098338959772 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 2 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: -0.029728205437398288 -0.088854042070227318 +< 0 1 -1 >: -0.039637607249864398 -0.118472056093636466 +< 0 2 -2 >: -0.009909401812466098 -0.029618014023409113 +< 1 -2 1 >: 0.022158096069033819 0.066227892714884815 +< 1 -1 0 >: 0.054276029040702597 0.162224543891255152 +< 1 0 -1 >: 0.054276029040702604 0.162224543891255152 +< 1 1 -2 >: 0.022158096069033819 0.066227892714884815 +< 2 -2 0 >: -0.038378948190558780 -0.114710075060401179 +< 2 -1 -1 >: -0.062672559954387183 -0.187320768169560864 +< 2 0 -2 >: -0.038378948190558794 -0.114710075060401220 +< 3 -2 -1 >: 0.058624811725341404 0.175222533979451645 +< 3 -1 -2 >: 0.058624811725341397 0.175222533979451617 +< 4 -2 -2 >: -0.082908003833547031 -0.247802083987120919 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 2 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.006754557238419695 0.062138276414587426 +< 0 1 -1 >: -0.008272609336275457 0.076103535355878896 +< 1 -2 1 >: 0.005849618159787520 -0.053813325922412142 +< 1 -1 0 >: 0.013080143847702123 -0.120330254857865138 +< 1 0 -1 >: 0.010679892729691609 -0.098249241673608739 +< 2 -3 1 >: -0.003377278619209848 0.031069138207293720 +< 2 -2 0 >: -0.011699236319575044 0.107626651844824325 +< 2 -1 -1 >: -0.013080143847702124 0.120330254857865152 +< 3 -3 0 >: 0.008935439334604865 -0.082201213145594310 +< 3 -2 -1 >: 0.015476634915485073 -0.142376677611968067 +< 4 -3 -1 >: -0.017870878669209736 0.164402426291188675 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 2 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: 0.000684508559562604 0.017230875513980341 +< 0 1 -1 >: -0.000228169519854201 -0.005743625171326785 +< 0 2 -2 >: -0.001597186638979408 -0.040205376199287463 +< 0 3 -3 >: -0.000684508559562604 -0.017230875513980341 +< 1 -3 2 >: 0.001249735929592688 0.031459130681901516 +< 1 -2 1 >: 0.001290721717991874 0.032490850457911301 +< 1 -1 0 >: -0.000883696750507464 -0.022244964635406348 +< 1 0 -1 >: -0.000883696750507464 -0.022244964635406338 +< 1 1 -2 >: 0.001290721717991874 0.032490850457911294 +< 1 2 -3 >: 0.001249735929592688 0.031459130681901523 +< 2 -3 1 >: -0.001676696695495886 -0.042206852830668676 +< 2 -2 0 >: -0.000395201201126072 -0.009948250616369477 +< 2 -1 -1 >: 0.001443070750732572 0.036325875135334917 +< 2 0 -2 >: -0.000395201201126072 -0.009948250616369479 +< 2 1 -3 >: -0.001676696695495886 -0.042206852830668669 +< 3 -3 0 >: 0.001811039418897693 0.045588611481904240 +< 3 -2 -1 >: -0.000853732169399136 -0.021490677549155596 +< 3 -1 -2 >: -0.000853732169399135 -0.021490677549155592 +< 3 0 -3 >: 0.001811039418897693 0.045588611481904247 +< 4 -3 -1 >: -0.001478707493455302 -0.037222945404217285 +< 4 -2 -2 >: 0.001909003165354832 0.048054615882440477 +< 4 -1 -3 >: -0.001478707493455302 -0.037222945404217285 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 3 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: 0.017694899263075575 0.068953597370605371 +< 0 1 -1 >: 0.017694899263075575 0.068953597370605357 +< 1 -1 0 >: -0.030648464558459987 -0.119431134010536261 +< 1 0 -1 >: -0.030648464558459987 -0.119431134010536261 +< 2 -1 -1 >: 0.043343474244485238 0.168901129487298962 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 3 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.020118940903727806 0.129429915640769139 +< 0 1 -1 >: 0.023231351893154832 0.149452793272777162 +< 1 -2 1 >: -0.013412627269151867 -0.086286610427179403 +< 1 -1 0 >: -0.037936638782179573 -0.244055389434641723 +< 1 0 -1 >: -0.032854092919561442 -0.211358167180903944 +< 2 -2 0 >: 0.029991546330690948 0.192942726463215336 +< 2 -1 -1 >: 0.042414451577404172 0.272862220525521393 +< 3 -2 -1 >: -0.051946882042312646 -0.334186605185153085 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 3 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: 0.004133633258302778 0.035219393568613942 +< 0 1 -1 >: 0.005511511011070372 0.046959191424818608 +< 0 2 -2 >: 0.001377877752767593 0.011739797856204650 +< 1 -2 1 >: -0.003081028319872986 -0.026250986048579898 +< 1 -1 0 >: -0.007546947266753369 -0.064301521063940770 +< 1 0 -1 >: -0.007546947266753369 -0.064301521063940784 +< 1 1 -2 >: -0.003081028319872986 -0.026250986048579898 +< 2 -2 0 >: 0.005336497589578586 0.045468041584922132 +< 2 -1 -1 >: 0.008714464072039936 0.074249000991137210 +< 2 0 -2 >: 0.005336497589578587 0.045468041584922146 +< 3 -2 -1 >: -0.008151634716731091 -0.069453580754768568 +< 3 -1 -2 >: -0.008151634716731089 -0.069453580754768568 +< 4 -2 -2 >: 0.011528152371912468 0.098222195858768666 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 3 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.007727186668594346 0.126957116773081052 +< 0 1 -1 >: -0.009463832242646384 0.155490077654494102 +< 1 -2 1 >: 0.006691939954787150 -0.109948088316715653 +< 1 -1 0 >: 0.014963632640250938 -0.245851399472326648 +< 1 0 -1 >: 0.012217754889023408 -0.200736827085451180 +< 2 -3 1 >: -0.003863593334297174 0.063478558386540540 +< 2 -2 0 >: -0.013383879909574304 0.219896176633431389 +< 2 -1 -1 >: -0.014963632640250940 0.245851399472326676 +< 3 -3 0 >: 0.010222107129637158 -0.167948479075679752 +< 3 -2 -1 >: 0.017705208908943625 -0.290895298812995917 +< 4 -3 -1 >: -0.020444214259274323 0.335896958151359615 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 3 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: -0.000778843439898713 -0.004525756822878790 +< 0 1 -1 >: 0.000259614479966238 0.001508585607626265 +< 0 2 -2 >: 0.001817301359763664 0.010560099253383843 +< 0 3 -3 >: 0.000778843439898713 0.004525756822878790 +< 1 -3 2 >: -0.001421967069324814 -0.008262863672245420 +< 1 -2 1 >: -0.001468601274226767 -0.008533848905223674 +< 1 -1 0 >: 0.001005482557343538 0.005842726934664717 +< 1 0 -1 >: 0.001005482557343538 0.005842726934664714 +< 1 1 -2 >: -0.001468601274226766 -0.008533848905223672 +< 1 2 -3 >: -0.001421967069324815 -0.008262863672245421 +< 2 -3 1 >: 0.001907769017265865 0.011085794915972584 +< 2 -2 0 >: 0.000449665469682096 0.002612946919975854 +< 2 -1 -1 >: -0.001641946140506930 -0.009541133130896147 +< 2 0 -2 >: 0.000449665469682096 0.002612946919975854 +< 2 1 -3 >: 0.001907769017265865 0.011085794915972582 +< 3 -3 0 >: -0.002060626052226077 -0.011974027047691077 +< 3 -2 -1 >: 0.000971388436679149 0.005644610482355665 +< 3 -1 -2 >: 0.000971388436679149 0.005644610482355664 +< 3 0 -3 >: -0.002060626052226077 -0.011974027047691078 +< 4 -3 -1 >: 0.001682494126213189 0.009776752144375877 +< 4 -2 -2 >: -0.002172090576971827 -0.012621732745055137 +< 4 -1 -3 >: 0.001682494126213189 0.009776752144375877 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 4 ) +l=( 2 1 1 ) +num_ms=4 +< 0 -1 1 >: -0.022116145723924285 -0.041260785944438057 +< 0 0 0 >: -0.022116145723924289 -0.041260785944438064 +< 1 -1 0 >: 0.076612576122868078 0.142931555231981061 +< 2 -1 -1 >: -0.054173272100650587 -0.101067871950073357 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 4 ) +l=( 2 2 2 ) +num_ms=8 +< -2 0 2 >: 0.034677318353898291 -0.129990094600396566 +< -2 1 1 >: -0.021235433903775171 0.079602350846771558 +< -1 -1 2 >: -0.021235433903775171 0.079602350846771558 +< -1 0 1 >: 0.017338659176949135 -0.064995047300198242 +< 0 -2 2 >: 0.017338659176949135 -0.064995047300198242 +< 0 -1 1 >: 0.008669329588474568 -0.032497523650099121 +< 0 0 0 >: -0.008669329588474568 0.032497523650099121 +< 1 -2 1 >: -0.021235433903775171 0.079602350846771558 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 4 ) +l=( 2 3 3 ) +num_ms=12 +< -2 -1 3 >: -0.011358322653565719 0.056076513923086671 +< -2 0 2 >: 0.032126187884964415 -0.158608333041265787 +< -2 1 1 >: -0.017596237791244192 0.086873361814993236 +< -1 -2 3 >: 0.017959084992177646 -0.088664753619549022 +< -1 -1 2 >: -0.013911047417565521 0.068679422832819456 +< -1 0 1 >: 0.010159192625499499 -0.050156358829294097 +< 0 -3 3 >: -0.017959084992177646 0.088664753619549008 +< 0 -1 1 >: 0.010775450995306584 -0.053198852171729392 +< 0 0 0 >: -0.007183633996871059 0.035465901447819609 +< 1 -3 2 >: 0.017959084992177646 -0.088664753619549022 +< 1 -2 1 >: -0.013911047417565521 0.068679422832819456 +< 2 -3 1 >: -0.011358322653565719 0.056076513923086671 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 4 ) +l=( 2 4 4 ) +num_ms=18 +< -2 -2 4 >: 0.000403562276564152 -0.000162601660772411 +< -2 -1 3 >: -0.000605343414846227 0.000243902491158616 +< -2 0 2 >: 0.001447047535792778 -0.000583038470641414 +< -2 1 1 >: -0.000762661015939868 0.000307288255121347 +< -1 -3 4 >: -0.000754995886564783 0.000304199852565401 +< -1 -2 3 >: 0.000713404055973981 -0.000287441842410916 +< -1 -1 2 >: -0.000485354498505932 0.000195557048077758 +< -1 0 1 >: 0.000341072375086119 -0.000137423485427726 +< 0 -4 4 >: 0.000871794156690475 -0.000351259733532157 +< 0 -3 3 >: -0.000217948539172619 0.000087814933383039 +< 0 -2 2 >: -0.000249084044768707 0.000100359923866331 +< 0 -1 1 >: 0.000529303595133503 -0.000213264838215952 +< 0 0 0 >: -0.000311355055960884 0.000125449904832913 +< 1 -4 3 >: -0.000754995886564783 0.000304199852565401 +< 1 -3 2 >: 0.000713404055973981 -0.000287441842410916 +< 1 -2 1 >: -0.000485354498505932 0.000195557048077758 +< 2 -4 2 >: 0.000403562276564152 -0.000162601660772411 +< 2 -3 1 >: -0.000605343414846227 0.000243902491158616 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 4 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.016484663824014738 -0.098119484383888775 +< 0 1 -1 >: -0.019034850192590783 -0.113298621443570890 +< 1 -2 1 >: 0.010989775882676488 0.065412989589259160 +< 1 -1 0 >: 0.031083780201443693 0.185015874065000807 +< 1 0 -1 >: 0.026919343300102004 0.160228447043673117 +< 2 -2 0 >: -0.024573885931152388 -0.146267891333069555 +< 2 -1 -1 >: -0.034752722764045098 -0.206854035662941055 +< 3 -2 -1 >: 0.042563218972157958 0.253343419304839890 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 4 ) +l=( 3 2 3 ) +num_ms=14 +< -3 0 3 >: 0.015926487128803200 0.023379910035030406 +< -3 1 2 >: -0.015926487128803204 -0.023379910035030409 +< -3 2 1 >: 0.010072794890474721 0.014786753440104636 +< -2 -1 3 >: -0.015926487128803204 -0.023379910035030409 +< -2 1 1 >: 0.012336603882688320 0.018110000440300093 +< -1 -2 3 >: 0.010072794890474721 0.014786753440104636 +< -1 -1 2 >: 0.012336603882688320 0.018110000440300093 +< -1 0 1 >: -0.009555892277281918 -0.014027946021018240 +< 0 -2 2 >: -0.014245083145111772 -0.020911627258463003 +< 0 -1 1 >: -0.004504690819702806 -0.006612837171720568 +< 0 0 0 >: 0.006370594851521281 0.009351964014012164 +< 1 -2 1 >: 0.015604706744228708 0.022907539927200203 +< 1 -1 0 >: -0.004504690819702806 -0.006612837171720568 +< 2 -2 0 >: -0.014245083145111772 -0.020911627258463003 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 4 ) +l=( 4 2 2 ) +num_ms=9 +< 0 -2 2 >: -0.004628573120642897 -0.017765183713257846 +< 0 -1 1 >: -0.018514292482571592 -0.071060734853031396 +< 0 0 0 >: -0.013885719361928690 -0.053295551139773530 +< 1 -2 1 >: 0.020699608273171705 0.079448316831233351 +< 1 -1 0 >: 0.050703478144763912 0.194607837159494229 +< 2 -2 0 >: -0.035852773225906465 -0.137608521327525740 +< 2 -1 -1 >: -0.029273666755729753 -0.112356887170444855 +< 3 -2 -1 >: 0.054766015727267504 0.210200488418110676 +< 4 -2 -2 >: -0.038725421099319958 -0.148634190769170366 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 4 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.007784200142983607 -0.110856207564197728 +< 0 1 -1 >: 0.009533659203004847 -0.135770571676172652 +< 1 -2 1 >: -0.006741315071966263 0.096004291917795873 +< 1 -1 0 >: -0.015074038758660454 0.214672122859925263 +< 1 0 -1 >: -0.012307901107218279 0.175279054335625656 +< 2 -3 1 >: 0.003892100071491804 -0.055428103782098871 +< 2 -2 0 >: 0.013482630143932531 -0.192008583835591828 +< 2 -1 -1 >: 0.015074038758660455 -0.214672122859925291 +< 3 -3 0 >: -0.010297528866944025 0.146648978251312262 +< 3 -2 -1 >: -0.017835843189954230 0.254003481209336190 +< 4 -3 -1 >: 0.020595057733888058 -0.293297956502624579 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 4 ) +l=( 4 3 3 ) +num_ms=14 +< 0 -3 3 >: 0.001304955982363996 0.012281745338285435 +< 0 -2 2 >: 0.003044897292182658 0.028657405789332679 +< 0 -1 1 >: 0.000434985327454666 0.004093915112761815 +< 0 0 0 >: -0.001304955982363996 -0.012281745338285435 +< 1 -3 2 >: -0.004765025520613829 -0.044846593115418991 +< 1 -2 1 >: -0.004921297196157517 -0.046317362205375461 +< 1 -1 0 >: 0.003369381858152998 0.031711330105026712 +< 2 -3 1 >: 0.006392952587168311 0.060168018459210583 +< 2 -2 0 >: 0.001506833375396931 0.014181737954355050 +< 2 -1 -1 >: -0.002751088767021832 -0.025892192607424779 +< 3 -3 0 >: -0.006905178002442247 -0.064988887661860228 +< 3 -2 -1 >: 0.003255132127218061 0.030636055444981412 +< 4 -3 -1 >: 0.005638054229691440 0.053063204574204957 +< 4 -2 -2 >: -0.003639348356101538 -0.034252151268715496 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 2 4 4 ) +l=( 4 4 4 ) +num_ms=25 +< -4 0 4 >: -0.001190327260320904 0.013418324705094308 +< -4 1 3 >: 0.001882072651801112 -0.021216234225902596 +< -4 2 2 >: -0.001067034897004629 0.012028474182650404 +< -3 -1 4 >: 0.000941036325900556 -0.010608117112951296 +< -3 0 3 >: -0.001785490890481355 0.020127487057641457 +< -3 1 2 >: 0.000711356598003086 -0.008018982788433602 +< -2 -2 4 >: -0.001067034897004629 0.012028474182650403 +< -2 -1 3 >: 0.000355678299001543 -0.004009491394216801 +< -2 0 2 >: 0.000935257133109281 -0.010542969411145523 +< -2 1 1 >: -0.000806602565057619 0.009092671811101108 +< -1 -3 4 >: 0.000941036325900555 -0.010608117112951291 +< -1 -2 3 >: 0.000355678299001543 -0.004009491394216799 +< -1 -1 2 >: -0.000806602565057619 0.009092671811101112 +< -1 0 1 >: 0.000765210381634867 -0.008626065881846339 +< 0 -4 4 >: -0.000595163630160452 0.006709162352547153 +< 0 -3 3 >: -0.000892745445240678 0.010063743528820732 +< 0 -2 2 >: 0.000467628566554641 -0.005271484705572766 +< 0 -1 1 >: 0.000382605190817433 -0.004313032940923171 +< 0 0 0 >: -0.000382605190817433 0.004313032940923172 +< 1 -4 3 >: 0.000941036325900555 -0.010608117112951291 +< 1 -3 2 >: 0.000355678299001543 -0.004009491394216799 +< 1 -2 1 >: -0.000806602565057619 0.009092671811101112 +< 2 -4 2 >: -0.001067034897004629 0.012028474182650403 +< 2 -3 1 >: 0.000355678299001543 -0.004009491394216801 +< 3 -4 1 >: 0.000941036325900556 -0.010608117112951296 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 1 ) +l=( 0 0 ) +num_ms=1 +< 0 0 >: 0.360154989178294860 0.274262363425851641 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 1 ) +l=( 1 1 ) +num_ms=2 +< 0 0 >: -0.236503037611134448 -0.017793557778389042 +< 1 -1 >: 0.473006075222268785 0.035587115556778084 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 1 ) +l=( 2 2 ) +num_ms=3 +< 0 0 >: 0.109362673367572216 -0.176245148364653936 +< 1 -1 >: -0.218725346735144460 0.352490296729307928 +< 2 -2 >: 0.218725346735144516 -0.352490296729307984 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 1 ) +l=( 3 3 ) +num_ms=4 +< 0 0 >: 0.085923349847730035 -0.451038172672023951 +< 1 -1 >: -0.171846699695460070 0.902076345344047903 +< 2 -2 >: 0.171846699695460070 -0.902076345344047792 +< 3 -3 >: -0.171846699695460070 0.902076345344047792 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 1 ) +l=( 4 4 ) +num_ms=5 +< 0 0 >: 0.013560976305340870 0.027254481451177152 +< 1 -1 >: -0.027121952610681732 -0.054508962902354283 +< 2 -2 >: 0.027121952610681732 0.054508962902354283 +< 3 -3 >: -0.027121952610681732 -0.054508962902354283 +< 4 -4 >: 0.027121952610681736 0.054508962902354297 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 1 ) +l=( 5 5 ) +num_ms=6 +< 0 0 >: 0.000394826851028686 -0.011479639494511551 +< 1 -1 >: -0.000789653702057372 0.022959278989023103 +< 2 -2 >: 0.000789653702057372 -0.022959278989023106 +< 3 -3 >: -0.000789653702057372 0.022959278989023113 +< 4 -4 >: 0.000789653702057372 -0.022959278989023106 +< 5 -5 >: -0.000789653702057371 0.022959278989023082 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 1 ) +l=( 6 6 ) +num_ms=7 +< 0 0 >: -0.036031930408102500 0.073811722430843191 +< 1 -1 >: 0.072063860816205014 -0.147623444861686409 +< 2 -2 >: -0.072063860816204986 0.147623444861686354 +< 3 -3 >: 0.072063860816205014 -0.147623444861686409 +< 4 -4 >: -0.072063860816204972 0.147623444861686326 +< 5 -5 >: 0.072063860816204986 -0.147623444861686354 +< 6 -6 >: -0.072063860816204944 0.147623444861686270 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 1 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: -0.024919033854915000 0.118397927355655158 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 1 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.049498795663409048 0.250305546865169426 +< 1 -1 0 >: 0.098997591326818082 -0.500611093730338741 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 1 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.035633126325943947 -0.078566305460119765 +< 1 -1 0 >: 0.071266252651887893 0.157132610920239529 +< 2 -2 0 >: -0.071266252651887921 -0.157132610920239585 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 1 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.027429849235777872 -0.087513004003342554 +< 0 1 -1 >: -0.031673261680214400 -0.101051312837845200 +< 1 -2 1 >: 0.018286566157185241 0.058342002668895013 +< 1 -1 0 >: 0.051722219737448456 0.165016102860717329 +< 1 0 -1 >: 0.044792756232751245 0.142908137110887123 +< 2 -2 0 >: -0.040890005002513316 -0.130456683911123444 +< 2 -1 -1 >: -0.057827199640058030 -0.184493611689330705 +< 3 -2 -1 >: 0.070823566186098613 0.225957604721019084 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 1 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.012196224155131703 0.020287513804108058 +< 1 -1 0 >: 0.024392448310263406 -0.040575027608216116 +< 2 -2 0 >: -0.024392448310263402 0.040575027608216109 +< 3 -3 0 >: 0.024392448310263402 -0.040575027608216109 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 1 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.012421907309781263 -0.120080484980472135 +< 0 1 -1 >: -0.015213667270556293 -0.147067958134047994 +< 1 -2 1 >: 0.010757687293726188 0.103992750491844602 +< 1 -1 0 >: 0.024054920069457506 0.232534859266939259 +< 1 0 -1 >: 0.019640759991201785 0.189863917537965776 +< 2 -3 1 >: -0.006210953654890632 -0.060040242490236082 +< 2 -2 0 >: -0.021515374587452382 -0.207985500983689287 +< 2 -1 -1 >: -0.024054920069457510 -0.232534859266939287 +< 3 -3 0 >: 0.016432638775388298 0.158851550285178000 +< 3 -2 -1 >: 0.028462165261398956 0.275138955955010811 +< 4 -3 -1 >: -0.032865277550776603 -0.317703100570356112 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 1 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.003608364130291558 0.027578091051118719 +< 1 -1 0 >: -0.007216728260583114 -0.055156182102237418 +< 2 -2 0 >: 0.007216728260583114 0.055156182102237418 +< 3 -3 0 >: -0.007216728260583114 -0.055156182102237418 +< 4 -4 0 >: 0.007216728260583114 0.055156182102237425 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 1 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: -0.000869775901563319 -0.014410984674016806 +< 0 1 -1 >: 0.000476395881260622 0.007893221381820237 +< 0 2 -2 >: 0.002021176549012365 0.033488102186950454 +< 1 -3 2 >: -0.001691037625126737 -0.028018156464309805 +< 1 -2 1 >: -0.001355846447436025 -0.022464501878244173 +< 1 -1 0 >: 0.001478619032657641 0.024498673945828567 +< 1 0 -1 >: 0.000476395881260622 0.007893221381820237 +< 1 1 -2 >: -0.002130507149399340 -0.035299559142409752 +< 2 -4 2 >: 0.001127358416751158 0.018678770976206537 +< 2 -3 1 >: 0.001992906953281184 0.033019714053765262 +< 2 -2 0 >: -0.000695820721250655 -0.011528787739213448 +< 2 -1 -1 >: -0.001355846447436025 -0.022464501878244173 +< 2 0 -2 >: 0.002021176549012365 0.033488102186950454 +< 3 -4 1 >: -0.002109094473789373 -0.034944780699490946 +< 3 -3 0 >: -0.000608843131094323 -0.010087689271811759 +< 3 -2 -1 >: 0.001992906953281184 0.033019714053765262 +< 3 -1 -2 >: -0.001691037625126737 -0.028018156464309805 +< 4 -4 0 >: 0.002435372524377292 0.040350757087247051 +< 4 -3 -1 >: -0.002109094473789373 -0.034944780699490946 +< 4 -2 -2 >: 0.001127358416751158 0.018678770976206537 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 2 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.012133802258501273 -0.139076548810896566 +< 1 -1 0 >: -0.024267604517002543 0.278153097621793133 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 2 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.013791095149015265 -0.138174582053536055 +< 1 -1 0 >: -0.027582190298030534 0.276349164107072109 +< 2 -2 0 >: 0.027582190298030541 -0.276349164107072220 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 2 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.016459879601045745 0.003208294727954801 +< 0 1 -1 >: 0.019006231836985171 0.003704619649648721 +< 1 -2 1 >: -0.010973253067363825 -0.002138863151969866 +< 1 -1 0 >: -0.031037046622436185 -0.006049618555151704 +< 1 0 -1 >: -0.026878870833471735 -0.005239123351967085 +< 2 -2 0 >: 0.024536939792933598 0.004782643402374085 +< 2 -1 -1 >: 0.034700473034298775 0.006763679163631634 +< 3 -2 -1 >: -0.042499226383619554 -0.008283781367395996 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 2 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.026926954637611796 -0.042991289269624235 +< 1 -1 0 >: -0.053853909275223592 0.085982578539248469 +< 2 -2 0 >: 0.053853909275223585 -0.085982578539248455 +< 3 -3 0 >: -0.053853909275223585 0.085982578539248455 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 2 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.001214021670103439 0.014748397803456945 +< 0 1 -1 >: 0.001486866814217439 0.018063024571026872 +< 1 -2 1 >: -0.001051373607054390 -0.012772487162912328 +< 1 -1 0 >: -0.002350942855122768 -0.028560149538015403 +< 1 0 -1 >: -0.001919536803164206 -0.023319264448574142 +< 2 -3 1 >: 0.000607010835051720 0.007374198901728474 +< 2 -2 0 >: 0.002102747214108780 0.025544974325824667 +< 2 -1 -1 >: 0.002350942855122768 0.028560149538015406 +< 3 -3 0 >: -0.001605999712668499 -0.019510296412299170 +< 3 -2 -1 >: -0.002781673099282860 -0.033792824656830957 +< 4 -3 -1 >: 0.003211999425336999 0.039020592824598355 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 2 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.011908961484496062 -0.094323560600201542 +< 1 -1 0 >: 0.023817922968992117 0.188647121200403001 +< 2 -2 0 >: -0.023817922968992117 -0.188647121200403001 +< 3 -3 0 >: 0.023817922968992117 0.188647121200403001 +< 4 -4 0 >: -0.023817922968992121 -0.188647121200403056 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 2 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: 0.004558055184434740 0.020126689870304117 +< 0 1 -1 >: -0.002496549642868278 -0.011023842049876291 +< 0 2 -2 >: -0.010591963092246076 -0.046770200809181622 +< 1 -3 2 >: 0.008861872121806554 0.039130757450013952 +< 1 -2 1 >: 0.007105304846829330 0.031374404499193737 +< 1 -1 0 >: -0.007748693813539057 -0.034215372779516993 +< 1 0 -1 >: -0.002496549642868278 -0.011023842049876291 +< 1 1 -2 >: 0.011164909421312584 0.049300120393488037 +< 2 -4 2 >: -0.005907914747871035 -0.026087171633342631 +< 2 -3 1 >: -0.010443816452229051 -0.046116039909784780 +< 2 -2 0 >: 0.003646444147547793 0.016101351896243298 +< 2 -1 -1 >: 0.007105304846829330 0.031374404499193737 +< 2 0 -2 >: -0.010591963092246076 -0.046770200809181622 +< 3 -4 1 >: 0.011052696428401183 0.048804629220968045 +< 3 -3 0 >: 0.003190638629104317 0.014088682909212877 +< 3 -2 -1 >: -0.010443816452229051 -0.046116039909784780 +< 3 -1 -2 >: 0.008861872121806554 0.039130757450013952 +< 4 -4 0 >: -0.012762554516417272 -0.056354731636851521 +< 4 -3 -1 >: 0.011052696428401183 0.048804629220968045 +< 4 -2 -2 >: -0.005907914747871035 -0.026087171633342631 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 3 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.065034147298372993 -0.047196259697234337 +< 1 -1 0 >: 0.130068294596745959 0.094392519394468660 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 3 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.016796106620001042 -0.129855617544632068 +< 1 -1 0 >: -0.033592213240002090 0.259711235089264136 +< 2 -2 0 >: 0.033592213240002097 -0.259711235089264247 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 3 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.026919185071921752 -0.080257020639781712 +< 0 1 -1 >: 0.031083597495278743 -0.092672824941470597 +< 1 -2 1 >: -0.017946123381281161 0.053504680426521116 +< 1 -1 0 >: -0.050759302155657465 0.151334089419248946 +< 1 0 -1 >: -0.043958845145169567 0.131059165895655361 +< 2 -2 0 >: 0.040128751813143064 -0.119640102548103686 +< 2 -1 -1 >: 0.056750625055250838 -0.169196655627236126 +< 3 -2 -1 >: -0.069505036984685478 0.207222736236066268 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 3 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.029204147694068341 -0.014311818505648768 +< 1 -1 0 >: 0.058408295388136681 0.028623637011297536 +< 2 -2 0 >: -0.058408295388136675 -0.028623637011297533 +< 3 -3 0 >: 0.058408295388136675 0.028623637011297533 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 3 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.010812031281630137 0.052343958951060074 +< 0 1 -1 >: 0.013241979861501942 0.064107995273642693 +< 1 -2 1 >: -0.009363493756403721 -0.045331198186267886 +< 1 -1 0 >: -0.020937408546213582 -0.101363640646010181 +< 1 0 -1 >: -0.017095322491470333 -0.082763066017853965 +< 2 -3 1 >: 0.005406015640815070 0.026171979475530044 +< 2 -2 0 >: 0.018726987512807450 0.090662396372535800 +< 2 -1 -1 >: 0.020937408546213586 0.101363640646010195 +< 3 -3 0 >: -0.014302972969322151 -0.069244549010539155 +< 3 -2 -1 >: -0.024773475882150262 -0.119935077033447079 +< 4 -3 -1 >: 0.028605945938644312 0.138489098021078338 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 3 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.016069363750387557 0.061402412860779139 +< 1 -1 0 >: -0.032138727500775101 -0.122804825721558236 +< 2 -2 0 >: 0.032138727500775101 0.122804825721558236 +< 3 -3 0 >: -0.032138727500775101 -0.122804825721558236 +< 4 -4 0 >: 0.032138727500775108 0.122804825721558264 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 3 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: -0.004835693703825201 -0.018718794987673260 +< 0 1 -1 >: 0.002648618522770768 0.010252706264063282 +< 0 2 -2 >: 0.011237136709365039 0.043498548748997647 +< 1 -3 2 >: -0.009401663097424391 -0.036393496950530159 +< 1 -2 1 >: -0.007538100466379558 -0.029179713577604155 +< 1 -1 0 >: 0.008220679296502839 0.031821951479044534 +< 1 0 -1 >: 0.002648618522770768 0.010252706264063282 +< 1 1 -2 >: -0.011844982126761027 -0.045851496319566823 +< 2 -4 2 >: 0.006267775398282927 0.024262331300353438 +< 2 -3 1 >: 0.011079966217700176 0.042890147474686342 +< 2 -2 0 >: -0.003868554963060161 -0.014975035990138611 +< 2 -1 -1 >: -0.007538100466379558 -0.029179713577604155 +< 2 0 -2 >: 0.011237136709365039 0.043498548748997647 +< 3 -4 1 >: -0.011725934058812648 -0.045390665565162025 +< 3 -3 0 >: -0.003384985592677639 -0.013103156491371276 +< 3 -2 -1 >: 0.011079966217700176 0.042890147474686342 +< 3 -1 -2 >: -0.009401663097424391 -0.036393496950530159 +< 4 -4 0 >: 0.013539942370710560 0.052412625965485120 +< 4 -3 -1 >: -0.011725934058812648 -0.045390665565162025 +< 4 -2 -2 >: 0.006267775398282927 0.024262331300353438 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 4 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.099299222180234459 -0.028070314492789197 +< 1 -1 0 >: -0.198598444360468890 0.056140628985578388 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 4 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.004454427650309395 0.259452239157920983 +< 1 -1 0 >: 0.008908855300618792 -0.518904478315841966 +< 2 -2 0 >: -0.008908855300618794 0.518904478315842188 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 4 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.030742865736554072 0.030112738251934824 +< 0 1 -1 >: -0.035498803617320017 0.034771195071582606 +< 1 -2 1 >: 0.020495243824369375 -0.020075158834623210 +< 1 -1 0 >: 0.057969303561133195 -0.056781123781436418 +< 1 0 -1 >: 0.050202889523633054 -0.049173895650152642 +< 2 -2 0 >: -0.045828758406722694 0.044889419813322964 +< 2 -1 -1 >: -0.064811651685507218 0.063483226307060853 +< 3 -2 -1 >: 0.079377738008243007 -0.077750755838964389 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 4 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.011228970968402285 0.029184583395980727 +< 1 -1 0 >: -0.022457941936804570 -0.058369166791961455 +< 2 -2 0 >: 0.022457941936804567 0.058369166791961448 +< 3 -3 0 >: -0.022457941936804567 -0.058369166791961448 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 4 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.008548132744733879 -0.028232475920630648 +< 0 1 -1 >: -0.010469281739087326 -0.034577580090478920 +< 1 -2 1 >: 0.007402900111861140 0.024450041358998600 +< 1 -1 0 >: 0.016553387880762306 0.054671954531402216 +< 1 0 -1 >: 0.013515784607412875 0.044639463947525992 +< 2 -3 1 >: -0.004274066372366940 -0.014116237960315327 +< 2 -2 0 >: -0.014805800223722285 -0.048900082717997222 +< 2 -1 -1 >: -0.016553387880762310 -0.054671954531402223 +< 3 -3 0 >: 0.011308116708266909 0.037348055090804015 +< 3 -2 -1 >: 0.019586232676636818 0.064688728981154034 +< 4 -3 -1 >: -0.022616233416533824 -0.074696110181608044 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 4 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.007289306139640483 -0.007904629611406767 +< 1 -1 0 >: 0.014578612279280961 0.015809259222813527 +< 2 -2 0 >: -0.014578612279280961 -0.015809259222813527 +< 3 -3 0 >: 0.014578612279280961 0.015809259222813527 +< 4 -4 0 >: -0.014578612279280964 -0.015809259222813531 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 1 4 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: 0.000463362253131482 0.003461824263848675 +< 0 1 -1 >: -0.000253793958336532 -0.001896119239428635 +< 0 2 -2 >: -0.001076756573783626 -0.008044552632829601 +< 1 -3 2 >: 0.000900879183592549 0.006730555619237984 +< 1 -2 1 >: 0.000722310268259987 0.005396449960674569 +< 1 -1 0 >: -0.000787715830323520 -0.005885101248542747 +< 1 0 -1 >: -0.000253793958336532 -0.001896119239428635 +< 1 1 -2 >: 0.001135001086238469 0.008479703025615256 +< 2 -4 2 >: -0.000600586122395033 -0.004487037079491990 +< 2 -3 1 >: -0.001061696299580154 -0.007932035865860667 +< 2 -2 0 >: 0.000370689802505186 0.002769459411078941 +< 2 -1 -1 >: 0.000722310268259987 0.005396449960674569 +< 2 0 -2 >: -0.001076756573783626 -0.008044552632829601 +< 3 -4 1 >: 0.001123593750626647 0.008394477716604887 +< 3 -3 0 >: 0.000324353577192038 0.002423276984694071 +< 3 -2 -1 >: -0.001061696299580154 -0.007932035865860667 +< 3 -1 -2 >: 0.000900879183592549 0.006730555619237984 +< 4 -4 0 >: -0.001297414308768151 -0.009693107938776289 +< 4 -3 -1 >: 0.001123593750626647 0.008394477716604887 +< 4 -2 -2 >: -0.000600586122395033 -0.004487037079491990 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 2 ) +l=( 0 0 ) +num_ms=1 +< 0 0 >: -0.413647545681683826 0.238747196297639130 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 2 ) +l=( 1 1 ) +num_ms=2 +< 0 0 >: 0.063581753118858733 0.269039596844016404 +< 1 -1 >: -0.127163506237717439 -0.538079193688032698 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 2 ) +l=( 2 2 ) +num_ms=3 +< 0 0 >: -0.058396305129791819 0.024828448464959414 +< 1 -1 >: 0.116792610259583651 -0.049656896929918835 +< 2 -2 >: -0.116792610259583679 0.049656896929918849 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 2 ) +l=( 3 3 ) +num_ms=4 +< 0 0 >: -0.048098593790511880 -0.107268311593823662 +< 1 -1 >: 0.096197187581023760 0.214536623187647324 +< 2 -2 >: -0.096197187581023746 -0.214536623187647296 +< 3 -3 >: 0.096197187581023746 0.214536623187647296 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 2 ) +l=( 4 4 ) +num_ms=5 +< 0 0 >: -0.006438111813368136 0.088509794079511608 +< 1 -1 >: 0.012876223626736268 -0.177019588159023161 +< 2 -2 >: -0.012876223626736268 0.177019588159023161 +< 3 -3 >: 0.012876223626736268 -0.177019588159023161 +< 4 -4 >: -0.012876223626736270 0.177019588159023189 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 2 ) +l=( 5 5 ) +num_ms=6 +< 0 0 >: -0.000227447483396139 0.006403781684337695 +< 1 -1 >: 0.000454894966792277 -0.012807563368675390 +< 2 -2 >: -0.000454894966792277 0.012807563368675393 +< 3 -3 >: 0.000454894966792277 -0.012807563368675395 +< 4 -4 >: -0.000454894966792277 0.012807563368675393 +< 5 -5 >: 0.000454894966792277 -0.012807563368675379 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 2 ) +l=( 6 6 ) +num_ms=7 +< 0 0 >: 0.035159880175297135 0.014639776930199728 +< 1 -1 >: -0.070319760350594285 -0.029279553860399463 +< 2 -2 >: 0.070319760350594257 0.029279553860399449 +< 3 -3 >: -0.070319760350594285 -0.029279553860399463 +< 4 -4 >: 0.070319760350594243 0.029279553860399442 +< 5 -5 >: -0.070319760350594257 -0.029279553860399449 +< 6 -6 >: 0.070319760350594215 0.029279553860399432 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 1 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: 0.070138423728544286 -0.319737878788430130 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 1 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.000590765241106720 -0.085531965435636362 +< 1 -1 0 >: 0.001181530482213440 0.171063930871272668 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 1 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: -0.027886407609637495 -0.112140466967647984 +< 0 1 -1 >: -0.027886407609637488 -0.112140466967647956 +< 1 -1 0 >: 0.048300674820467508 0.194232986372465694 +< 1 0 -1 >: 0.048300674820467508 0.194232986372465694 +< 2 -1 -1 >: -0.068307469402877796 -0.274686923588169540 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 1 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.006880216419361051 0.051035192411418365 +< 1 -1 0 >: -0.013760432838722103 -0.102070384822836743 +< 2 -2 0 >: 0.013760432838722107 0.102070384822836771 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 1 ) +l=( 2 2 2 ) +num_ms=10 +< 0 0 0 >: 0.023760388603510450 0.028420660306426281 +< 0 1 -1 >: -0.023760388603510450 -0.028420660306426281 +< 0 2 -2 >: -0.047520777207020928 -0.056841320612852589 +< 1 -2 1 >: 0.058200828168841180 0.069616115903716205 +< 1 -1 0 >: -0.023760388603510450 -0.028420660306426281 +< 1 0 -1 >: -0.023760388603510450 -0.028420660306426281 +< 1 1 -2 >: 0.058200828168841180 0.069616115903716205 +< 2 -2 0 >: -0.047520777207020901 -0.056841320612852561 +< 2 -1 -1 >: 0.058200828168841180 0.069616115903716205 +< 2 0 -2 >: -0.047520777207020928 -0.056841320612852589 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 1 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.011684804748145752 0.160894754917286553 +< 0 1 -1 >: 0.013492450333540329 0.185785260125388429 +< 1 -2 1 >: -0.007789869832097165 -0.107263169944857670 +< 1 -1 0 >: -0.022033079131345678 -0.303386059358295823 +< 1 0 -1 >: -0.019081206251338124 -0.262740034558337721 +< 2 -2 0 >: 0.017418678480444139 0.239847739478814159 +< 2 -1 -1 >: 0.024633731345660471 0.339195926075467780 +< 3 -2 -1 >: -0.030170036128835891 -0.415428470857849730 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 1 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.002531396175927053 -0.075445379988288888 +< 1 -1 0 >: -0.005062792351854106 0.150890759976577776 +< 2 -2 0 >: 0.005062792351854106 -0.150890759976577749 +< 3 -3 0 >: -0.005062792351854106 0.150890759976577749 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 1 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: -0.002561394970747174 0.073816746797527227 +< 0 1 -1 >: -0.003415193294329566 0.098422329063369673 +< 0 2 -2 >: -0.000853798323582391 0.024605582265842415 +< 1 -2 1 >: 0.001909151090605589 -0.055019754572386934 +< 1 -1 0 >: 0.004676446013861709 -0.134770324475509656 +< 1 0 -1 >: 0.004676446013861709 -0.134770324475509684 +< 1 1 -2 >: 0.001909151090605589 -0.055019754572386934 +< 2 -2 0 >: -0.003306746688254412 0.095297010339344193 +< 2 -1 -1 >: -0.005399894729907620 0.155619366229417438 +< 2 0 -2 >: -0.003306746688254413 0.095297010339344221 +< 3 -2 -1 >: 0.005051139000990132 -0.145568587794344811 +< 3 -1 -2 >: 0.005051139000990132 -0.145568587794344784 +< 4 -2 -2 >: -0.007143389280631929 0.205865071114260945 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 1 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.003558911181816534 -0.020595979383847621 +< 0 1 -1 >: 0.004358758217667979 -0.025224820121654272 +< 1 -2 1 >: -0.003082107493265617 0.017836641362232609 +< 1 -1 0 >: -0.006891801868903397 0.039883942576236571 +< 1 0 -1 >: -0.005627132662390934 0.032565102747414906 +< 2 -3 1 >: 0.001779455590908267 -0.010297989691923812 +< 2 -2 0 >: 0.006164214986531237 -0.035673282724465231 +< 2 -1 -1 >: 0.006891801868903398 -0.039883942576236571 +< 3 -3 0 >: -0.004707996962626763 0.027245919728737057 +< 3 -2 -1 >: -0.008154489941149508 0.047191317269115844 +< 4 -3 -1 >: 0.009415993925253528 -0.054491839457474135 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 1 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: 0.001312545864702657 0.036535945291993888 +< 0 1 -1 >: -0.000437515288234219 -0.012178648430664638 +< 0 2 -2 >: -0.003062607017639533 -0.085250539014652391 +< 0 3 -3 >: -0.001312545864702657 -0.036535945291993888 +< 1 -3 2 >: 0.002396369926192563 0.066705204653999067 +< 1 -2 1 >: 0.002474960217465626 0.068892839128078920 +< 1 -1 0 >: -0.001694489425042269 -0.047167702551279209 +< 1 0 -1 >: -0.001694489425042268 -0.047167702551279188 +< 1 1 -2 >: 0.002474960217465626 0.068892839128078906 +< 1 2 -3 >: 0.002396369926192564 0.066705204653999081 +< 2 -3 1 >: -0.003215067632521636 -0.089494423235626383 +< 2 -2 0 >: -0.000757798708309809 -0.021094037849430102 +< 2 -1 -1 >: 0.002767089643930401 0.077024535726670895 +< 2 0 -2 >: -0.000757798708309809 -0.021094037849430106 +< 2 1 -3 >: -0.003215067632521636 -0.089494423235626369 +< 3 -3 0 >: 0.003472669942369462 0.096665025157276985 +< 3 -2 -1 >: -0.001637032310048096 -0.045568329861519180 +< 3 -1 -2 >: -0.001637032310048096 -0.045568329861519180 +< 3 0 -3 >: 0.003472669942369463 0.096665025157276999 +< 4 -3 -1 >: -0.002835423134635149 -0.078926662536209280 +< 4 -2 -2 >: 0.003660515526631053 0.101893883191490439 +< 4 -1 -3 >: -0.002835423134635149 -0.078926662536209280 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 1 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.003194710869684784 -0.037484623508700396 +< 1 -1 0 >: 0.006389421739369566 0.074969247017400764 +< 2 -2 0 >: -0.006389421739369566 -0.074969247017400764 +< 3 -3 0 >: 0.006389421739369566 0.074969247017400764 +< 4 -4 0 >: -0.006389421739369567 -0.074969247017400778 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 1 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: -0.002242735739163265 -0.002058808906315038 +< 0 1 -1 >: 0.001228396954862743 0.001127656079581287 +< 0 2 -2 >: 0.005211646900634105 0.004784239564308989 +< 1 -3 2 >: -0.004360376634170764 -0.004002782000820134 +< 1 -2 1 >: -0.003496079023363185 -0.003209365465931663 +< 1 -1 0 >: 0.003812650756577550 0.003499975140735564 +< 1 0 -1 >: 0.001228396954862743 0.001127656079581287 +< 1 1 -2 >: -0.005493558188853668 -0.005043031298369340 +< 2 -4 2 >: 0.002906917756113842 0.002668521333880089 +< 2 -3 1 >: 0.005138753144249200 0.004717323827318954 +< 2 -2 0 >: -0.001794188591330612 -0.001647047125052031 +< 2 -1 -1 >: -0.003496079023363185 -0.003209365465931663 +< 2 0 -2 >: 0.005211646900634105 0.004784239564308989 +< 3 -4 1 >: -0.005438345147453845 -0.004992346280338144 +< 3 -3 0 >: -0.001569915017414285 -0.001441166234420526 +< 3 -2 -1 >: 0.005138753144249200 0.004717323827318954 +< 3 -1 -2 >: -0.004360376634170764 -0.004002782000820134 +< 4 -4 0 >: 0.006279660069657141 0.005764664937682106 +< 4 -3 -1 >: -0.005438345147453845 -0.004992346280338144 +< 4 -2 -2 >: 0.002906917756113842 0.002668521333880089 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 1 ) +l=( 4 4 4 ) +num_ms=31 +< 0 0 0 >: -0.006574658982315992 -0.014087994203259398 +< 0 1 -1 >: 0.006574658982315990 0.014087994203259391 +< 0 2 -2 >: 0.008035694311719539 0.017218659581761473 +< 0 3 -3 >: -0.015340870958737306 -0.032871986474271912 +< 0 4 -4 >: -0.010227247305824874 -0.021914657649514613 +< 1 -4 3 >: 0.016170697840113619 0.034650116157649069 +< 1 -3 2 >: 0.006111949287329992 0.013096512893234338 +< 1 -2 1 >: -0.013860598148668817 -0.029700099563699203 +< 1 -1 0 >: 0.006574658982315990 0.014087994203259395 +< 1 0 -1 >: 0.006574658982315990 0.014087994203259391 +< 1 1 -2 >: -0.013860598148668813 -0.029700099563699196 +< 1 2 -3 >: 0.006111949287329992 0.013096512893234338 +< 1 3 -4 >: 0.016170697840113622 0.034650116157649069 +< 2 -4 2 >: -0.018335847861989975 -0.039289538679703008 +< 2 -3 1 >: 0.006111949287329991 0.013096512893234333 +< 2 -2 0 >: 0.008035694311719545 0.017218659581761487 +< 2 -1 -1 >: -0.013860598148668817 -0.029700099563699203 +< 2 0 -2 >: 0.008035694311719539 0.017218659581761473 +< 2 1 -3 >: 0.006111949287329992 0.013096512893234338 +< 2 2 -4 >: -0.018335847861989978 -0.039289538679703015 +< 3 -4 1 >: 0.016170697840113612 0.034650116157649048 +< 3 -3 0 >: -0.015340870958737311 -0.032871986474271919 +< 3 -2 -1 >: 0.006111949287329991 0.013096512893234333 +< 3 -1 -2 >: 0.006111949287329992 0.013096512893234338 +< 3 0 -3 >: -0.015340870958737306 -0.032871986474271912 +< 3 1 -4 >: 0.016170697840113622 0.034650116157649069 +< 4 -4 0 >: -0.010227247305824872 -0.021914657649514609 +< 4 -3 -1 >: 0.016170697840113612 0.034650116157649048 +< 4 -2 -2 >: -0.018335847861989975 -0.039289538679703008 +< 4 -1 -3 >: 0.016170697840113619 0.034650116157649069 +< 4 0 -4 >: -0.010227247305824874 -0.021914657649514613 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 2 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: -0.028562625396167999 -0.040893223768209308 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 2 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.033474606026999379 0.003531046844184128 +< 1 -1 0 >: -0.066949212053998744 -0.007062093688368256 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 2 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.080183448364590931 -0.010055377451931887 +< 1 -1 0 >: -0.160366896729181890 0.020110754903863777 +< 2 -2 0 >: 0.160366896729181918 -0.020110754903863780 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 2 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.006927029626842822 -0.039188203779566347 +< 0 1 -1 >: -0.007998644839484427 -0.045250640002381062 +< 1 -2 1 >: 0.004618019751228546 0.026125469186377554 +< 1 -1 0 >: 0.013061732326988476 0.073893985693471081 +< 1 0 -1 >: 0.011311792012604446 0.063994068797429804 +< 2 -2 0 >: -0.010326206085183700 -0.058418325044816345 +< 2 -1 -1 >: -0.014603460693526370 -0.082615987569499116 +< 3 -2 -1 >: 0.017885513588965077 0.101183507070695317 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 2 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.007081306006930199 0.020682885014649426 +< 1 -1 0 >: 0.014162612013860399 -0.041365770029298851 +< 2 -2 0 >: -0.014162612013860397 0.041365770029298844 +< 3 -3 0 >: 0.014162612013860397 -0.041365770029298844 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 2 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.000060535381768797 -0.005509987654540380 +< 0 1 -1 >: 0.000074140398359066 -0.006748329121329302 +< 1 -2 1 >: -0.000052425178439567 0.004771789283370605 +< 1 -1 0 >: -0.000117226262723429 0.010670045211921681 +< 1 0 -1 >: -0.000095714842708615 0.008712055433878303 +< 2 -3 1 >: 0.000030267690884398 -0.002754993827270191 +< 2 -2 0 >: 0.000104850356879135 -0.009543578566741213 +< 2 -1 -1 >: 0.000117226262723429 -0.010670045211921681 +< 3 -3 0 >: -0.000080080782840295 0.007289028530474959 +< 3 -2 -1 >: -0.000138703984589280 0.012624967752601744 +< 4 -3 -1 >: 0.000160161565680589 -0.014578057060949924 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 2 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.011913230655226979 0.067478759809899272 +< 1 -1 0 >: -0.023826461310453951 -0.134957519619798516 +< 2 -2 0 >: 0.023826461310453951 0.134957519619798516 +< 3 -3 0 >: -0.023826461310453951 -0.134957519619798516 +< 4 -4 0 >: 0.023826461310453954 0.134957519619798516 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 2 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: -0.002407912466291439 0.009462982242613851 +< 0 1 -1 >: 0.001318867974285719 -0.005183088835550431 +< 0 2 -2 >: 0.005595482928643184 -0.021989983578659979 +< 1 -3 2 >: -0.004681516895549575 0.018398140244405548 +< 1 -2 1 >: -0.003753564058615729 0.014751329431796342 +< 1 -1 0 >: 0.004093451192695446 -0.016087069812443545 +< 1 0 -1 >: 0.001318867974285719 -0.005183088835550431 +< 1 1 -2 >: -0.005898156887700626 0.023179477939421989 +< 2 -4 2 >: 0.003121011263699716 -0.012265426829603699 +< 2 -3 1 >: 0.005517220571804162 -0.021682416213400474 +< 2 -2 0 >: -0.001926329973033152 0.007570385794091083 +< 2 -1 -1 >: -0.003753564058615729 0.014751329431796342 +< 2 0 -2 >: 0.005595482928643184 -0.021989983578659979 +< 3 -4 1 >: -0.005838877424513359 0.022946512449460981 +< 3 -3 0 >: -0.001685538726404007 0.006624087569829693 +< 3 -2 -1 >: 0.005517220571804162 -0.021682416213400474 +< 3 -1 -2 >: -0.004681516895549575 0.018398140244405548 +< 4 -4 0 >: 0.006742154905616029 -0.026496350279318782 +< 4 -3 -1 >: -0.005838877424513359 0.022946512449460981 +< 4 -2 -2 >: 0.003121011263699716 -0.012265426829603699 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 3 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.039944153566567428 0.078664696909813467 +< 1 -1 0 >: 0.079888307133134842 -0.157329393819626906 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 3 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.148212179996103782 0.052461354094730982 +< 1 -1 0 >: 0.296424359992207564 -0.104922708189461977 +< 2 -2 0 >: -0.296424359992207676 0.104922708189462005 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 3 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.029635440469442446 0.144935335828732109 +< 0 1 -1 >: -0.034220059065171435 0.167356910311614537 +< 1 -2 1 >: 0.019756960312961622 -0.096623557219154707 +< 1 -1 0 >: 0.055881122451714650 -0.273292690128122850 +< 1 0 -1 >: 0.048394471635173825 -0.236678412319542952 +< 2 -2 0 >: -0.044177906288547723 0.216056842169870533 +< 2 -1 -1 >: -0.062476994230511826 0.305550516440134146 +< 3 -2 -1 >: 0.076518378263781259 -0.374221427961105635 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 3 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.009189405473043527 -0.041296367239119176 +< 1 -1 0 >: -0.018378810946087055 0.082592734478238353 +< 2 -2 0 >: 0.018378810946087051 -0.082592734478238339 +< 3 -3 0 >: -0.018378810946087051 0.082592734478238339 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 3 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.004193920271992357 0.059533526155363545 +< 0 1 -1 >: -0.005136482344147857 0.072913380834638525 +< 1 -2 1 >: 0.003632041496991924 -0.051557546027410153 +< 1 -1 0 >: 0.008121491684374040 -0.115286177670363352 +< 1 0 -1 >: 0.006631170192324360 -0.094130769896077993 +< 2 -3 1 >: -0.002096960135996179 0.029766763077681776 +< 2 -2 0 >: -0.007264082993983850 0.103115092054820348 +< 2 -1 -1 >: -0.008121491684374042 0.115286177670363366 +< 3 -3 0 >: 0.005548035029062071 -0.078755452438925594 +< 3 -2 -1 >: 0.009609478552507383 -0.136408444997293432 +< 4 -3 -1 >: -0.011096070058124146 0.157510904877851243 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 3 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.016119704515829444 -0.040604277544866535 +< 1 -1 0 >: 0.032239409031658874 0.081208555089733042 +< 2 -2 0 >: -0.032239409031658874 -0.081208555089733042 +< 3 -3 0 >: 0.032239409031658874 0.081208555089733042 +< 4 -4 0 >: -0.032239409031658881 -0.081208555089733056 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 3 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: 0.003883361704442617 -0.014763909030005193 +< 0 1 -1 >: -0.002127004804474931 0.008086526012688061 +< 0 2 -2 >: -0.009024117125163543 0.034308224278878849 +< 1 -3 2 >: 0.007550118073385938 -0.028704319835503804 +< 1 -2 1 >: 0.006053561798635698 -0.023014656502464544 +< 1 -1 0 >: -0.006601714897552447 0.025098645351008825 +< 1 0 -1 >: -0.002127004804474931 0.008086526012688061 +< 1 1 -2 >: 0.009512254662549190 -0.036164043732381669 +< 2 -4 2 >: -0.005033412048923958 0.019136213223669200 +< 2 -3 1 >: -0.008897899480750511 0.033828365341720429 +< 2 -2 0 >: 0.003106689363554094 -0.011811127224004157 +< 2 -1 -1 >: 0.006053561798635698 -0.023014656502464544 +< 2 0 -2 >: -0.009024117125163543 0.034308224278878849 +< 3 -4 1 >: 0.009416651686766643 -0.035800576781611526 +< 3 -3 0 >: 0.002718353193109830 -0.010334736321003631 +< 3 -2 -1 >: -0.008897899480750511 0.033828365341720429 +< 3 -1 -2 >: 0.007550118073385938 -0.028704319835503804 +< 4 -4 0 >: -0.010873412772439327 0.041338945284014536 +< 4 -3 -1 >: 0.009416651686766643 -0.035800576781611526 +< 4 -2 -2 >: -0.005033412048923958 0.019136213223669200 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 4 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.005072215053019308 -0.028852562164503000 +< 1 -1 0 >: -0.010144430106038615 0.057705124329005986 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 4 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.068168184874519477 -0.026661227943539156 +< 1 -1 0 >: -0.136336369749038955 0.053322455887078318 +< 2 -2 0 >: 0.136336369749039010 -0.053322455887078332 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 4 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.029434249958283192 -0.051268600876259576 +< 0 1 -1 >: 0.033987744273619051 -0.059199881033767873 +< 1 -2 1 >: -0.019622833305522121 0.034179067250839704 +< 1 -1 0 >: -0.055501753985711728 0.096673000910799251 +< 1 0 -1 >: -0.048065928906220558 0.083721274648828295 +< 2 -2 0 >: 0.043877989182294373 -0.076426717780414460 +< 2 -1 -1 >: 0.062052847391260650 -0.108083700812723088 +< 3 -2 -1 >: -0.075998906597691415 0.132374958251405522 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 4 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.004455294383807628 0.074176281212189638 +< 1 -1 0 >: 0.008910588767615257 -0.148352562424379275 +< 2 -2 0 >: -0.008910588767615255 0.148352562424379247 +< 3 -3 0 >: 0.008910588767615255 -0.148352562424379247 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 4 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.003065086686454744 -0.045447316415647733 +< 0 1 -1 >: 0.003753949199606088 -0.055661367698575340 +< 1 -2 1 >: -0.002654442935271277 0.039358530549780481 +< 1 -1 0 >: -0.005935514845660651 0.088008349803811337 +< 1 0 -1 >: -0.004846327577527679 0.071858516707903233 +< 2 -3 1 >: 0.001532543343227373 -0.022723658207823873 +< 2 -2 0 >: 0.005308885870542557 -0.078717061099560989 +< 2 -1 -1 >: 0.005935514845660652 -0.088008349803811337 +< 3 -3 0 >: -0.004054728559607131 0.060121148495533641 +< 3 -2 -1 >: -0.007022995876140124 0.104132883803657469 +< 4 -3 -1 >: 0.008109457119214264 -0.120242296991067324 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 4 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.006926660717943072 0.010593690588367720 +< 1 -1 0 >: -0.013853321435886141 -0.021187381176735434 +< 2 -2 0 >: 0.013853321435886141 0.021187381176735434 +< 3 -3 0 >: -0.013853321435886141 -0.021187381176735434 +< 4 -4 0 >: 0.013853321435886143 0.021187381176735437 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 2 4 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: 0.000781000306832227 0.010512068342587475 +< 0 1 -1 >: -0.000427771485470467 -0.005757696957271104 +< 0 2 -2 >: -0.001814880709046459 -0.024427839375021299 +< 1 -3 2 >: 0.001518438142186993 0.020437796739675461 +< 1 -2 1 >: 0.001217458990944270 0.016386692815798080 +< 1 -1 0 >: -0.001327700521614786 -0.017870516182398703 +< 1 0 -1 >: -0.000427771485470467 -0.005757696957271104 +< 1 1 -2 >: 0.001913052240696055 0.025749203580603789 +< 2 -4 2 >: -0.001012292094791329 -0.013625197826450308 +< 2 -3 1 >: -0.001789496511921209 -0.024086174445228044 +< 2 -2 0 >: 0.000624800245465782 0.008409654674069981 +< 2 -1 -1 >: 0.001217458990944270 0.016386692815798080 +< 2 0 -2 >: -0.001814880709046459 -0.024427839375021299 +< 3 -4 1 >: 0.001893825097024421 0.025490411046797022 +< 3 -3 0 >: 0.000546700214782559 0.007358447839811230 +< 3 -2 -1 >: -0.001789496511921209 -0.024086174445228044 +< 3 -1 -2 >: 0.001518438142186993 0.020437796739675461 +< 4 -4 0 >: -0.002186800859130236 -0.029433791359244930 +< 4 -3 -1 >: 0.001893825097024421 0.025490411046797022 +< 4 -2 -2 >: -0.001012292094791329 -0.013625197826450308 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 3 ) +l=( 0 0 ) +num_ms=1 +< 0 0 >: 0.176658714096489783 0.023879805557936042 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 3 ) +l=( 1 1 ) +num_ms=2 +< 0 0 >: -0.002540801358050102 0.298466751975384748 +< 1 -1 >: 0.005081602716100203 -0.596933503950769384 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 3 ) +l=( 2 2 ) +num_ms=3 +< 0 0 >: 0.059823661384663780 0.100956277395379490 +< 1 -1 >: -0.119647322769327574 -0.201912554790758980 +< 2 -2 >: 0.119647322769327602 0.201912554790759036 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 3 ) +l=( 3 3 ) +num_ms=4 +< 0 0 >: 0.029432650864335195 0.244404832833674923 +< 1 -1 >: -0.058865301728670390 -0.488809665667349846 +< 2 -2 >: 0.058865301728670383 0.488809665667349735 +< 3 -3 >: -0.058865301728670383 -0.488809665667349735 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 3 ) +l=( 4 4 ) +num_ms=5 +< 0 0 >: -0.001906339961232206 -0.025163049350088649 +< 1 -1 >: 0.003812679922464411 0.050326098700177277 +< 2 -2 >: -0.003812679922464411 -0.050326098700177277 +< 3 -3 >: 0.003812679922464411 0.050326098700177277 +< 4 -4 >: -0.003812679922464412 -0.050326098700177291 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 3 ) +l=( 5 5 ) +num_ms=6 +< 0 0 >: 0.000012471310214961 -0.000675022383739162 +< 1 -1 >: -0.000024942620429923 0.001350044767478325 +< 2 -2 >: 0.000024942620429923 -0.001350044767478325 +< 3 -3 >: -0.000024942620429923 0.001350044767478325 +< 4 -4 >: 0.000024942620429923 -0.001350044767478325 +< 5 -5 >: -0.000024942620429922 0.001350044767478324 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 3 3 ) +l=( 6 6 ) +num_ms=7 +< 0 0 >: -0.007031432348500973 0.042736940015154629 +< 1 -1 >: 0.014062864697001949 -0.085473880030309271 +< 2 -2 >: -0.014062864697001944 0.085473880030309243 +< 3 -3 >: 0.014062864697001949 -0.085473880030309271 +< 4 -4 >: -0.014062864697001940 0.085473880030309229 +< 5 -5 >: 0.014062864697001944 -0.085473880030309243 +< 6 -6 >: -0.014062864697001935 0.085473880030309188 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 1 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: -0.022494385424700006 0.030550572951718341 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 1 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.032256602544819685 0.141081987034832185 +< 1 -1 0 >: -0.064513205089639356 -0.282163974069664314 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 1 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: -0.039490564642876563 -0.041364977212005966 +< 0 1 -1 >: -0.039490564642876563 -0.041364977212005959 +< 1 -1 0 >: 0.068399664381045319 0.071646242185123152 +< 1 0 -1 >: 0.068399664381045319 0.071646242185123152 +< 2 -1 -1 >: -0.096731733029442185 -0.101323087391268510 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 1 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.003686817274720872 -0.024299573471098207 +< 1 -1 0 >: -0.007373634549441745 0.048599146942196421 +< 2 -2 0 >: 0.007373634549441747 -0.048599146942196435 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 1 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.006364692275466469 -0.128720015722180114 +< 0 1 -1 >: -0.007349313597099392 -0.148633071454587040 +< 1 -2 1 >: 0.004243128183644311 0.085813343814786724 +< 1 -1 0 >: 0.012001378848394606 0.242716789310913533 +< 1 0 -1 >: 0.010393498963150958 0.210198905468246350 +< 2 -2 0 >: -0.009487923055873893 -0.191884470146424263 +< 2 -1 -1 >: -0.013417949464369239 -0.271365620089848436 +< 3 -2 -1 >: 0.016433564791077746 0.332353651477040213 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 1 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.000109883258596099 0.076222231585436256 +< 1 -1 0 >: 0.000219766517192198 -0.152444463170872513 +< 2 -2 0 >: -0.000219766517192198 0.152444463170872485 +< 3 -3 0 >: 0.000219766517192198 -0.152444463170872485 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 1 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: 0.005775081143343545 -0.138028080587029867 +< 0 1 -1 >: 0.007700108191124730 -0.184037440782706563 +< 0 2 -2 >: 0.001925027047781182 -0.046009360195676634 +< 1 -2 1 >: -0.004304491337364459 0.102880056998805966 +< 1 -1 0 >: -0.010543807378773288 0.252003644355523970 +< 1 0 -1 >: -0.010543807378773288 0.252003644355523970 +< 1 1 -2 >: -0.004304491337364459 0.102880056998805966 +< 2 -2 0 >: 0.007455597697055345 -0.178193485807513957 +< 2 -1 -1 >: 0.012174940056836640 -0.290988743810856987 +< 2 0 -2 >: 0.007455597697055348 -0.178193485807514013 +< 3 -2 -1 >: -0.011388613599298195 0.272195045686990822 +< 3 -1 -2 >: -0.011388613599298193 0.272195045686990822 +< 4 -2 -2 >: 0.016105931808754172 -0.384941925221306547 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 1 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.004286442952834003 0.007171131761165309 +< 0 1 -1 >: -0.005249799022996065 0.008782806846560546 +< 1 -2 1 >: 0.003712168489027029 -0.006210382279054599 +< 1 -1 0 >: 0.008300661085397121 -0.013886836942226154 +< 1 0 -1 >: 0.006777461395666574 -0.011338554883228488 +< 2 -3 1 >: -0.002143221476417002 0.003585565880582655 +< 2 -2 0 >: -0.007424336978054061 0.012420764558109204 +< 2 -1 -1 >: -0.008300661085397121 0.013886836942226156 +< 3 -3 0 >: 0.005670431031132069 -0.009486515629460021 +< 3 -2 -1 >: 0.009821474646735925 -0.016431127057021010 +< 4 -3 -1 >: -0.011340862062264142 0.018973031258920046 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 1 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: -0.001537531547045407 -0.050717661819310568 +< 0 1 -1 >: 0.000512510515681803 0.016905887273103538 +< 0 2 -2 >: 0.003587573609772615 0.118341210911724656 +< 0 3 -3 >: 0.001537531547045407 0.050717661819310568 +< 1 -3 2 >: -0.002807135703975282 -0.092597358141182987 +< 1 -2 1 >: -0.002899197288544134 -0.095634140262294831 +< 1 -1 0 >: 0.001984944691991796 0.065476219861589885 +< 1 0 -1 >: 0.001984944691991795 0.065476219861589857 +< 1 1 -2 >: -0.002899197288544134 -0.095634140262294817 +< 1 2 -3 >: -0.002807135703975283 -0.092597358141183000 +< 2 -3 1 >: 0.003766167753693276 0.124232392404347289 +< 2 -2 0 >: 0.000887694252574207 0.029281855704047351 +< 2 -1 -1 >: -0.003241401108683878 -0.106922219298120388 +< 2 0 -2 >: 0.000887694252574207 0.029281855704047354 +< 2 1 -3 >: 0.003766167753693275 0.124232392404347275 +< 3 -3 0 >: -0.004067926106398554 -0.134186320252571462 +< 3 -2 -1 >: 0.001917638756800137 0.063256037995375367 +< 3 -1 -2 >: 0.001917638756800137 0.063256037995375367 +< 3 0 -3 >: -0.004067926106398554 -0.134186320252571489 +< 4 -3 -1 >: 0.003321447757341056 0.109562671693497496 +< 4 -2 -2 >: -0.004287970616493293 -0.141444800944968807 +< 4 -1 -3 >: 0.003321447757341056 0.109562671693497496 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 1 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.000564000276867000 0.002960362759414127 +< 1 -1 0 >: -0.001128000553734000 -0.005920725518828251 +< 2 -2 0 >: 0.001128000553734000 0.005920725518828251 +< 3 -3 0 >: -0.001128000553734000 -0.005920725518828251 +< 4 -4 0 >: 0.001128000553734001 0.005920725518828253 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 2 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: -0.001362998863120273 0.310650973639591432 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 2 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.056822075852102985 -0.025729572016269381 +< 1 -1 0 >: 0.113644151704205942 0.051459144032538755 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 2 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: 0.039634463368203594 0.108310888568006566 +< 0 1 -1 >: 0.039634463368203587 0.108310888568006553 +< 1 -1 0 >: -0.068648904284456122 -0.187599962012718474 +< 1 0 -1 >: -0.068648904284456122 -0.187599962012718474 +< 2 -1 -1 >: 0.097084211481130306 0.265306410579063845 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 2 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.055685185220894801 -0.052456178200205983 +< 1 -1 0 >: 0.111370370441789615 0.104912356400411980 +< 2 -2 0 >: -0.111370370441789643 -0.104912356400412007 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 2 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.002405068117621055 0.014712202886592562 +< 0 1 -1 >: -0.002777133450255805 0.016988188593893203 +< 1 -2 1 >: 0.001603378745080703 -0.009808135257728371 +< 1 -1 0 >: 0.004535039933827769 -0.027741595806138396 +< 1 0 -1 >: 0.003927459789871746 -0.024024926709635686 +< 2 -2 0 >: -0.003585263867678760 0.021931657168793063 +< 2 -1 -1 >: -0.005070328786357519 0.031016047013424260 +< 3 -2 -1 >: 0.006209859177360511 -0.037986744510531772 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 2 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.002879204336403736 0.002628541220406434 +< 1 -1 0 >: -0.005758408672807473 -0.005257082440812869 +< 2 -2 0 >: 0.005758408672807472 0.005257082440812868 +< 3 -3 0 >: -0.005758408672807472 -0.005257082440812868 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 2 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: 0.004629765197891853 -0.029385394315170330 +< 0 1 -1 >: 0.006173020263855807 -0.039180525753560451 +< 0 2 -2 >: 0.001543255065963951 -0.009795131438390111 +< 1 -2 1 >: -0.003450823234116317 0.021902579744785582 +< 1 -1 0 >: -0.008452756116125794 0.053650144425342883 +< 1 0 -1 >: -0.008452756116125794 0.053650144425342890 +< 1 1 -2 >: -0.003450823234116317 0.021902579744785582 +< 2 -2 0 >: 0.005977001169428610 -0.037936380934797592 +< 2 -1 -1 >: 0.009760402038078965 -0.061949850652068032 +< 2 0 -2 >: 0.005977001169428613 -0.037936380934797606 +< 3 -2 -1 >: -0.009130020095915401 0.057948779075463225 +< 3 -1 -2 >: -0.009130020095915400 0.057948779075463218 +< 4 -2 -2 >: 0.012911798244382463 -0.081951949291482293 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 2 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.000341378894985666 0.029268900300513732 +< 0 1 -1 >: -0.000418102050835023 0.035846935534325934 +< 1 -2 1 >: 0.000295642795373447 -0.025347611201078885 +< 1 -1 0 >: 0.000661077387513088 -0.056678981712847486 +< 1 0 -1 >: 0.000539767426633070 -0.046278194779005064 +< 2 -3 1 >: -0.000170689447492833 0.014634450150256870 +< 2 -2 0 >: -0.000591285590746895 0.050695222402157784 +< 2 -1 -1 >: -0.000661077387513088 0.056678981712847493 +< 3 -3 0 >: 0.000451601829489054 -0.038719115671751500 +< 3 -2 -1 >: 0.000782197313466099 -0.067063475567609984 +< 4 -3 -1 >: -0.000903203658978108 0.077438231343503028 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 2 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: 0.001192979420224080 -0.016137607842938776 +< 0 1 -1 >: -0.000397659806741360 0.005379202614312929 +< 0 2 -2 >: -0.002783618647189520 0.037654418300190479 +< 0 3 -3 >: -0.001192979420224080 0.016137607842938776 +< 1 -3 2 >: 0.002178072463653877 -0.029463106132499504 +< 1 -2 1 >: 0.002249503567617181 -0.030429365167656597 +< 1 -1 0 >: -0.001540129808965347 0.020833562141109364 +< 1 0 -1 >: -0.001540129808965347 0.020833562141109353 +< 1 1 -2 >: 0.002249503567617181 -0.030429365167656593 +< 1 2 -3 >: 0.002178072463653878 -0.029463106132499511 +< 2 -3 1 >: -0.002922190853190307 0.039528904884335907 +< 2 -2 0 >: -0.000688766989404056 0.009317052232197314 +< 2 -1 -1 >: 0.002515021446410155 -0.034021064513522215 +< 2 0 -2 >: -0.000688766989404056 0.009317052232197316 +< 2 1 -3 >: -0.002922190853190306 0.039528904884335900 +< 3 -3 0 >: 0.003156326865130934 -0.042696097107901489 +< 3 -2 -1 >: -0.001487906753316908 0.020127133196797656 +< 3 -1 -2 >: -0.001487906753316908 0.020127133196797653 +< 3 0 -3 >: 0.003156326865130935 -0.042696097107901496 +< 4 -3 -1 >: -0.002577130093669736 0.034861217307559735 +< 4 -2 -2 >: 0.003327060644597615 -0.045005638020232198 +< 4 -1 -3 >: -0.002577130093669736 0.034861217307559735 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 2 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.002558471978950402 0.027987985900305476 +< 1 -1 0 >: 0.005116943957900802 -0.055975971800610931 +< 2 -2 0 >: -0.005116943957900802 0.055975971800610931 +< 3 -3 0 >: 0.005116943957900802 -0.055975971800610931 +< 4 -4 0 >: -0.005116943957900803 0.055975971800610938 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 3 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: 0.004553733633015689 -0.064790509961743667 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 3 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.097793834778726593 -0.108485198544140196 +< 1 -1 0 >: -0.195587669557453159 0.216970397088280337 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 3 ) +l=( 1 1 2 ) +num_ms=4 +< -1 -1 2 >: -0.032161344950737955 -0.112984298064465527 +< -1 0 1 >: 0.045483010213493089 0.159783926657971392 +< -1 1 0 >: -0.013129814095157363 -0.046125646534077594 +< 0 0 0 >: -0.013129814095157365 -0.046125646534077601 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 3 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.093210570847324675 0.043977683080320906 +< 1 -1 0 >: -0.186421141694649378 -0.087955366160641826 +< 2 -2 0 >: 0.186421141694649434 0.087955366160641840 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 3 ) +l=( 2 2 2 ) +num_ms=5 +< -2 0 2 >: -0.029497321738384760 0.039844891202794913 +< -2 1 1 >: 0.024084462345916241 -0.032533217434519271 +< -1 -1 2 >: 0.012042231172958121 -0.016266608717259635 +< -1 0 1 >: -0.014748660869192376 0.019922445601397450 +< 0 0 0 >: 0.004916220289730791 -0.006640815200465815 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 3 ) +l=( 2 2 4 ) +num_ms=9 +< -2 -2 4 >: -0.012053716636300216 0.144055293275742763 +< -2 -1 3 >: 0.017046529544057974 -0.203724949482189194 +< -2 0 2 >: -0.011159573138849526 0.133369285993312298 +< -2 1 1 >: 0.006442982555756092 -0.077000793169867049 +< -2 2 0 >: -0.001440694697251595 0.017217900784922423 +< -1 -1 2 >: -0.009111753312483532 0.108895566014311593 +< -1 0 1 >: 0.015782019683255495 -0.188612653055758361 +< -1 1 0 >: -0.005762778789006382 0.068871603139689708 +< 0 0 0 >: -0.004322084091754785 0.051653702354767267 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 3 ) +l=( 2 3 3 ) +num_ms=12 +< -2 -1 3 >: -0.004380200531294019 -0.041906832467186635 +< -2 0 2 >: 0.012389077994539682 0.118530421662385019 +< -2 1 1 >: -0.006785777484300248 -0.064921785695087261 +< -1 -2 3 >: 0.006925705143584370 0.066260520059701594 +< -1 -1 2 >: -0.005364628136369064 -0.051325178140453370 +< -1 0 1 >: 0.003917770457221650 0.037482610447329825 +< 0 -3 3 >: -0.006925705143584369 -0.066260520059701594 +< 0 -1 1 >: 0.004155423086150621 0.039756312035820945 +< 0 0 0 >: -0.002770282057433748 -0.026504208023880638 +< 1 -3 2 >: 0.006925705143584370 0.066260520059701594 +< 1 -2 1 >: -0.005364628136369064 -0.051325178140453370 +< 2 -3 1 >: -0.004380200531294019 -0.041906832467186635 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 3 ) +l=( 2 4 4 ) +num_ms=18 +< -2 -2 4 >: 0.000809802232324886 0.001889120792213550 +< -2 -1 3 >: -0.001214703348487329 -0.002833681188320325 +< -2 0 2 >: 0.002903696387932681 0.006773793652026266 +< -2 1 1 >: -0.001530382369911856 -0.003570102723398841 +< -1 -3 4 >: -0.001515001252202218 -0.003534221383347035 +< -1 -2 3 >: 0.001431541624742326 0.003339525306636759 +< -1 -1 2 >: -0.000973929376415711 -0.002271999460723093 +< -1 0 1 >: 0.000684407802138027 0.001596598475235387 +< 0 -4 4 >: 0.001749372761563141 0.004080967334102282 +< 0 -3 3 >: -0.000437343190390785 -0.001020241833525570 +< 0 -2 2 >: -0.000499820789018040 -0.001165990666886367 +< 0 -1 1 >: 0.001062119176663335 0.002477730167133528 +< 0 0 0 >: -0.000624775986272550 -0.001457488333607958 +< 1 -4 3 >: -0.001515001252202218 -0.003534221383347035 +< 1 -3 2 >: 0.001431541624742326 0.003339525306636759 +< 1 -2 1 >: -0.000973929376415711 -0.002271999460723093 +< 2 -4 2 >: 0.000809802232324886 0.001889120792213550 +< 2 -3 1 >: -0.001214703348487329 -0.002833681188320325 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 3 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.035701527119409944 -0.053420162550066437 +< 0 1 -1 >: 0.041224572585744086 -0.061684290456868816 +< 1 -2 1 >: -0.023801018079606620 0.035613441700044275 +< 1 -1 0 >: -0.067319445132933850 0.100730024509972343 +< 1 0 -1 >: -0.058300349653793382 0.087234760149465171 +< 2 -2 0 >: 0.053220694359701913 -0.079634076554024699 +< 2 -1 -1 >: 0.075265427762403719 -0.112619591089759025 +< 3 -2 -1 >: -0.092180946645098072 0.137930266605400254 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 3 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.003482305721539481 0.020452352358404691 +< 1 -1 0 >: 0.006964611443078962 -0.040904704716809383 +< 2 -2 0 >: -0.006964611443078961 0.040904704716809376 +< 3 -3 0 >: 0.006964611443078961 -0.040904704716809376 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 3 ) +l=( 3 3 4 ) +num_ms=14 +< -3 -1 4 >: 0.004382834526596494 -0.117676364726824578 +< -3 0 3 >: -0.005367854108607040 0.144123524183184498 +< -3 1 2 >: 0.004969667226395071 -0.133432455538847611 +< -3 2 1 >: -0.003704171247924070 0.099454680329860490 +< -3 3 0 >: 0.001014429074675037 -0.027236785933064969 +< -2 -2 4 >: -0.002829107521781848 0.075959766804870224 +< -2 -1 3 >: 0.002530430693744072 -0.067940480852288751 +< -2 0 2 >: 0.001171361798674831 -0.031450331380630539 +< -2 1 1 >: -0.003825651614589406 0.102716352165315231 +< -2 2 0 >: 0.002367001174241754 -0.063552500510484930 +< -1 -1 2 >: -0.002138604267113434 0.057420186460613150 +< -1 0 1 >: 0.002619244608083346 -0.070325078881984707 +< -1 1 0 >: 0.000338143024891679 -0.009078928644354996 +< 0 0 0 >: -0.001014429074675037 0.027236785933064969 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 3 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.007723239197808061 -0.134033210982121453 +< 0 1 -1 >: 0.009458997598045913 -0.164156487746500074 +< 1 -2 1 >: -0.006688521344805530 0.116076165661316608 +< 1 -1 0 >: -0.014955988395943478 0.259554196986230779 +< 1 0 -1 >: -0.012211513389682590 0.211925114404698856 +< 2 -3 1 >: 0.003861619598904031 -0.067016605491060754 +< 2 -2 0 >: 0.013377042689611065 -0.232152331322633299 +< 2 -1 -1 >: 0.014955988395943479 -0.259554196986230834 +< 3 -3 0 >: -0.010216885116633056 0.177309271841072369 +< 3 -2 -1 >: -0.017696164117102734 0.307108667481779118 +< 4 -3 -1 >: 0.020433770233266119 -0.354618543682144849 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 3 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.003908715996914536 -0.054969785859003528 +< 1 -1 0 >: -0.007817431993829071 0.109939571718007015 +< 2 -2 0 >: 0.007817431993829071 -0.109939571718007015 +< 3 -3 0 >: -0.007817431993829071 0.109939571718007015 +< 4 -4 0 >: 0.007817431993829071 -0.109939571718007029 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 3 ) +l=( 4 4 4 ) +num_ms=13 +< -4 0 4 >: 0.000775532495355726 -0.009285757436870396 +< -4 1 3 >: -0.001634966056532032 0.019576095533571761 +< -4 2 2 >: 0.000926938625917656 -0.011098602947887106 +< -3 -1 4 >: -0.000817483028266016 0.009788047766785877 +< -3 0 3 >: 0.001163298743033588 -0.013928636155305596 +< -3 1 2 >: -0.000617959083945104 0.007399068631924736 +< -2 -2 4 >: 0.000463469312958828 -0.005549301473943552 +< -2 -1 3 >: -0.000308979541972552 0.003699534315962368 +< -2 0 2 >: -0.000609346960636641 0.007295952271826740 +< -2 1 1 >: 0.000700699738513728 -0.008389755228673614 +< -1 -1 2 >: 0.000350349869256864 -0.004194877614336807 +< -1 0 1 >: -0.000498556604157252 0.005969415495130970 +< 0 0 0 >: 0.000166185534719084 -0.001989805165043657 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 4 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.066664158356713826 -0.065458414025154135 +< 1 -1 0 >: 0.133328316713427625 0.130916828050308243 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 4 ) +l=( 1 1 2 ) +num_ms=4 +< -1 -1 2 >: 0.043462810338660528 0.002981869019847740 +< -1 0 1 >: -0.061465695839783299 -0.004216999609088842 +< -1 1 0 >: 0.017743618019513272 0.001217342929739994 +< 0 0 0 >: 0.017743618019513272 0.001217342929739995 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 4 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.044287821139775037 -0.044567938890902138 +< 1 -1 0 >: 0.088575642279550088 0.089135877781804290 +< 2 -2 0 >: -0.088575642279550101 -0.089135877781804304 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 4 ) +l=( 2 2 2 ) +num_ms=7 +< -2 0 2 >: 0.106016957408160653 0.033269414514770987 +< -2 1 1 >: -0.129843724866185284 -0.040746544801166656 +< -2 2 0 >: 0.053008478704080340 0.016634707257385500 +< -1 -1 2 >: -0.064921862433092642 -0.020373272400583328 +< -1 0 1 >: 0.053008478704080313 0.016634707257385490 +< -1 1 0 >: 0.026504239352040156 0.008317353628692745 +< 0 0 0 >: -0.026504239352040156 -0.008317353628692745 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 4 ) +l=( 2 2 4 ) +num_ms=9 +< -2 -2 4 >: -0.045985631644394974 0.036820920571881154 +< -2 -1 3 >: 0.065033503945796753 -0.052072645251816839 +< -2 0 2 >: -0.042574422077117542 0.034089548357576195 +< -2 1 1 >: 0.024580354046816563 -0.019681609920799384 +< -2 2 0 >: -0.005496334255969388 0.004400941768954168 +< -1 -1 2 >: -0.034761870060940378 0.027833999679331350 +< -1 0 1 >: 0.060209325111656158 -0.048209901622457731 +< -1 1 0 >: -0.021985337023877557 0.017603767075816675 +< 0 0 0 >: -0.016489002767908163 0.013202825306862500 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 4 ) +l=( 2 3 3 ) +num_ms=14 +< -2 -1 3 >: -0.009379752710374514 0.102811600243705448 +< -2 0 2 >: 0.013264973494717440 -0.145397559433929291 +< -2 1 1 >: -0.014531050415529753 0.159275046216322297 +< -2 2 0 >: 0.013264973494717440 -0.145397559433929291 +< -1 -2 3 >: 0.014830691226960565 -0.162559413328415808 +< -1 -1 2 >: -0.011487804026952545 0.125917980118040507 +< -1 0 1 >: 0.004194752934507063 -0.045978745404091879 +< -1 1 0 >: 0.004194752934507063 -0.045978745404091879 +< 0 -3 3 >: -0.014830691226960563 0.162559413328415781 +< 0 -1 1 >: 0.008898414736176335 -0.097535647997049446 +< 0 0 0 >: -0.005932276490784225 0.065023765331366321 +< 1 -3 2 >: 0.014830691226960565 -0.162559413328415808 +< 1 -2 1 >: -0.011487804026952545 0.125917980118040507 +< 2 -3 1 >: -0.009379752710374514 0.102811600243705448 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 4 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.029546446403111212 -0.003892591581908146 +< 0 1 -1 >: -0.034117297568866202 -0.004494777595319877 +< 1 -2 1 >: 0.019697630935407467 0.002595061054605430 +< 1 -1 0 >: 0.055713313630946164 0.007339941077218454 +< 1 0 -1 >: 0.048249144933409205 0.006356575435152097 +< 2 -2 0 >: -0.044045241767273875 -0.005802732923860036 +< 2 -1 -1 >: -0.062289378265280616 -0.008206303599751746 +< 3 -2 -1 >: 0.076288596572573142 0.010050628246878286 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 4 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.001030179959723282 -0.043275519382215084 +< 1 -1 0 >: -0.002060359919446563 0.086551038764430169 +< 2 -2 0 >: 0.002060359919446563 -0.086551038764430155 +< 3 -3 0 >: -0.002060359919446563 0.086551038764430155 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 4 ) +l=( 3 3 2 ) +num_ms=12 +< -3 1 2 >: 0.008917378502174089 -0.073728040405108039 +< -3 2 1 >: -0.014099613412345441 0.116574267550532379 +< -3 3 0 >: 0.014099613412345439 -0.116574267550532365 +< -2 1 1 >: 0.010921513586795328 -0.090298039363907942 +< -2 3 -1 >: -0.014099613412345441 0.116574267550532379 +< -1 1 0 >: -0.008459768047407262 0.069944560530319402 +< -1 2 -1 >: 0.010921513586795328 -0.090298039363907942 +< -1 3 -2 >: 0.008917378502174089 -0.073728040405108039 +< 0 0 0 >: 0.005639845364938176 -0.046629707020212949 +< 0 1 -1 >: -0.007975945804782610 0.065944364077469092 +< 0 2 -2 >: -0.025222155237177756 0.208534389336190729 +< 1 1 -2 >: 0.013814743372299319 -0.114218989054996417 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 4 ) +l=( 3 3 4 ) +num_ms=14 +< -3 -1 4 >: -0.001068781669214567 0.066023814167766440 +< -3 0 3 >: 0.001308984868007883 -0.080862327791683272 +< -3 1 2 >: -0.001211884501099818 0.074863968383936982 +< -3 2 1 >: 0.000903285375112537 -0.055800307457292704 +< -3 3 0 >: -0.000247374887906826 0.015281543555041478 +< -2 -2 4 >: 0.000689895600933297 -0.042618188787475440 +< -2 -1 3 >: -0.000617061384425968 0.038118866882685780 +< -2 0 2 >: -0.000285643916247519 0.017645606570272372 +< -2 1 1 >: 0.000932909123915620 -0.057630309732092856 +< -2 2 0 >: -0.000577208071782594 0.035656934961763448 +< -1 -1 2 >: 0.000521512054476276 -0.032216322531331831 +< -1 0 1 >: -0.000638719214088709 0.039456775795345955 +< -1 1 0 >: -0.000082458295968942 0.005093847851680496 +< 0 0 0 >: 0.000247374887906826 -0.015281543555041478 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 4 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.005641052905865435 0.092111697634158968 +< 0 1 -1 >: -0.006908850615707313 0.112813329272608967 +< 1 -2 1 >: 0.004885295120571495 -0.079771070136892649 +< 1 -1 0 >: 0.010923851979745896 -0.178373535463995453 +< 1 0 -1 >: 0.008919287792023091 -0.145641381834342720 +< 2 -3 1 >: -0.002820526452932718 0.046055848817079498 +< 2 -2 0 >: -0.009770590241142994 0.159542140273785354 +< 2 -1 -1 >: -0.010923851979745896 0.178373535463995453 +< 3 -3 0 >: 0.007462411560739097 -0.121852322389980630 +< 3 -2 -1 >: 0.012925275970189483 -0.211054413399709206 +< 4 -3 -1 >: -0.014924823121478199 0.243704644779961344 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 4 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.001879958236216916 0.030209742754573738 +< 1 -1 0 >: 0.003759916472433831 -0.060419485509147455 +< 2 -2 0 >: -0.003759916472433831 0.060419485509147455 +< 3 -3 0 >: 0.003759916472433831 -0.060419485509147455 +< 4 -4 0 >: -0.003759916472433832 0.060419485509147469 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 4 ) +l=( 4 4 2 ) +num_ms=18 +< -4 2 2 >: 0.000165183908643678 0.008762327111258185 +< -4 3 1 >: -0.000309030795976405 -0.016392812980584381 +< -4 4 0 >: 0.000356838026489723 0.018928789974231159 +< -3 1 2 >: -0.000247775862965517 -0.013143490666887279 +< -3 2 1 >: 0.000292006654862109 0.015489752298363482 +< -3 3 0 >: -0.000089209506622431 -0.004732197493557788 +< -3 4 -1 >: -0.000309030795976405 -0.016392812980584381 +< -2 1 1 >: -0.000198662654556260 -0.010538236916089957 +< -2 2 0 >: -0.000101953721854207 -0.005408225706923190 +< -2 3 -1 >: 0.000292006654862109 0.015489752298363482 +< -2 4 -2 >: 0.000165183908643678 0.008762327111258185 +< -1 1 0 >: 0.000216651658940189 0.011492479627211774 +< -1 2 -1 >: -0.000198662654556260 -0.010538236916089957 +< -1 3 -2 >: -0.000247775862965517 -0.013143490666887279 +< 0 0 0 >: -0.000127442152317758 -0.006760282133653986 +< 0 1 -1 >: 0.000139605883202891 0.007405518039402884 +< 0 2 -2 >: 0.000592297600237808 0.031418952143166520 +< 1 1 -2 >: -0.000312168244900560 -0.016559241744705820 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 3 4 ) +l=( 4 4 4 ) +num_ms=19 +< -4 0 4 >: -0.000195030428604774 0.001789977071893170 +< -4 1 3 >: 0.000308370183714971 -0.002830202253330689 +< -4 2 2 >: -0.000349658921938763 0.003209147709568985 +< -4 3 1 >: 0.000308370183714971 -0.002830202253330690 +< -4 4 0 >: -0.000097515214302387 0.000894988535946585 +< -3 -1 4 >: 0.000308370183714971 -0.002830202253330689 +< -3 0 3 >: -0.000292545642907161 0.002684965607839755 +< -3 1 2 >: 0.000116552973979588 -0.001069715903189661 +< -3 2 1 >: 0.000116552973979588 -0.001069715903189661 +< -3 3 0 >: -0.000146272821453581 0.001342482803919877 +< -2 -2 4 >: -0.000174829460969381 0.001604573854784492 +< -2 -1 3 >: 0.000116552973979588 -0.001069715903189661 +< -2 0 2 >: 0.000153238193903751 -0.001406410556487491 +< -2 1 1 >: -0.000264317300327118 0.002425887645712020 +< -2 2 0 >: 0.000076619096951876 -0.000703205278243745 +< -1 -1 2 >: -0.000132158650163559 0.001212943822856010 +< -1 0 1 >: 0.000125376704103069 -0.001150699546217038 +< -1 1 0 >: 0.000062688352051535 -0.000575349773108519 +< 0 0 0 >: -0.000062688352051535 0.000575349773108519 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 1 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: 0.047525227733783315 0.060775651937650811 +< 0 1 -1 >: 0.047525227733783308 0.060775651937650797 +< 1 -1 0 >: -0.082316109076194202 -0.105266517019133088 +< 1 0 -1 >: -0.082316109076194202 -0.105266517019133088 +< 2 -1 -1 >: 0.116412557857336854 0.148869336032236232 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 1 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.021861474116540425 -0.014568241311156417 +< 0 1 -1 >: 0.025243455932133292 -0.016821956085231161 +< 1 -2 1 >: -0.014574316077693612 0.009712160874104274 +< 1 -1 0 >: -0.041222390918773125 0.027470139256215206 +< 1 0 -1 >: -0.035699637740390464 0.023789838441378525 +< 2 -2 0 >: 0.032589161475291034 -0.021717051922910940 +< 2 -1 -1 >: 0.046088034144723358 -0.030712549364141351 +< 3 -2 -1 >: -0.056446083451270369 0.037615037321093128 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 1 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: -0.006240588588765760 -0.068885280705849511 +< 0 1 -1 >: -0.008320784785021016 -0.091847040941132718 +< 0 2 -2 >: -0.002080196196255254 -0.022961760235283176 +< 1 -2 1 >: 0.004651460101363241 0.051344056769144740 +< 1 -1 0 >: 0.011393703807254461 0.125766740408897265 +< 1 0 -1 >: 0.011393703807254463 0.125766740408897265 +< 1 1 -2 >: 0.004651460101363241 0.051344056769144740 +< 2 -2 0 >: -0.008056565224940611 -0.088930514990859411 +< 2 -1 -1 >: -0.013156315920370455 -0.145222922860357234 +< 2 0 -2 >: -0.008056565224940615 -0.088930514990859438 +< 3 -2 -1 >: 0.012306606661546433 0.135843605512339538 +< 3 -1 -2 >: 0.012306606661546432 0.135843605512339510 +< 4 -2 -2 >: -0.017404170047550040 -0.192111869277211050 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 1 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.003062949483190131 -0.030827964827846322 +< 0 1 -1 >: -0.003751331670868632 -0.037756391818345079 +< 1 -2 1 >: 0.002652592062951071 0.026697800687888084 +< 1 -1 0 >: 0.005931376169334998 0.059698097187858415 +< 1 0 -1 >: 0.004842948362458217 0.048743292241777474 +< 2 -3 1 >: -0.001531474741595066 -0.015413982413923165 +< 2 -2 0 >: -0.005305184125902145 -0.053395601375776189 +< 2 -1 -1 >: -0.005931376169334998 -0.059698097187858422 +< 3 -3 0 >: 0.004051901305437450 0.040781564180363744 +< 3 -2 -1 >: 0.007018098928272326 0.070635741172521055 +< 4 -3 -1 >: -0.008103802610874903 -0.081563128360727516 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 1 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: 0.000836442954682002 0.008642052578707270 +< 0 1 -1 >: -0.000278814318227334 -0.002880684192902426 +< 0 2 -2 >: -0.001951700227591339 -0.020164789350316965 +< 0 3 -3 >: -0.000836442954682002 -0.008642052578707270 +< 1 -3 2 >: 0.001527128914485346 0.015778157135012204 +< 1 -2 1 >: 0.001577211960883616 0.016295610618065604 +< 1 -1 0 >: -0.001079843211178640 -0.011156841904794044 +< 1 0 -1 >: -0.001079843211178640 -0.011156841904794039 +< 1 1 -2 >: 0.001577211960883616 0.016295610618065604 +< 1 2 -3 >: 0.001527128914485347 0.015778157135012207 +< 2 -3 1 >: -0.002048858437916820 -0.021168619148136378 +< 2 -2 0 >: -0.000482920565047420 -0.004989491382667540 +< 2 -1 -1 >: 0.001763376579730752 0.018219046538431028 +< 2 0 -2 >: -0.000482920565047420 -0.004989491382667541 +< 2 1 -3 >: -0.002048858437916819 -0.021168619148136378 +< 3 -3 0 >: 0.002213020043980647 0.022864721940403888 +< 3 -2 -1 >: -0.001043227653333645 -0.010778533289336286 +< 3 -1 -2 >: -0.001043227653333645 -0.010778533289336284 +< 3 0 -3 >: 0.002213020043980648 0.022864721940403891 +< 4 -3 -1 >: -0.001806923299434725 -0.018668967288202939 +< 4 -2 -2 >: 0.002332727948861615 0.024101533132700335 +< 4 -1 -3 >: -0.001806923299434725 -0.018668967288202939 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 2 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: -0.029237905706183832 -0.128485553661727453 +< 0 1 -1 >: -0.029237905706183828 -0.128485553661727425 +< 1 -1 0 >: 0.050641538190018397 0.222543506980729361 +< 1 0 -1 >: 0.050641538190018397 0.222543506980729361 +< 2 -1 -1 >: -0.071617950127759039 -0.314724045790218954 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 2 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.005655341211660518 0.076721839767011066 +< 0 1 -1 >: -0.006530225541822766 0.088590749684414313 +< 1 -2 1 >: 0.003770227474440344 -0.051147893178007359 +< 1 -1 0 >: 0.010663813655170397 -0.144668088438296677 +< 1 0 -1 >: 0.009235133526600950 -0.125286239704498703 +< 2 -2 0 >: -0.008430484923485962 0.114370166051922240 +< 2 -1 -1 >: -0.011922506116175751 0.161743839961491359 +< 3 -2 -1 >: 0.014602028219921103 -0.198094938472018478 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 2 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: 0.003688550512002725 0.059394131097942435 +< 0 1 -1 >: 0.004918067349336969 0.079192174797256612 +< 0 2 -2 >: 0.001229516837334242 0.019798043699314150 +< 1 -2 1 >: -0.002749283227759917 -0.044269771533177842 +< 1 -1 0 >: -0.006734341066403744 -0.108438351285873855 +< 1 0 -1 >: -0.006734341066403745 -0.108438351285873869 +< 1 1 -2 >: -0.002749283227759917 -0.044269771533177842 +< 2 -2 0 >: 0.004761898234877131 0.076677493534930349 +< 2 -1 -1 >: 0.007776147255005907 0.125213822610756947 +< 2 0 -2 >: 0.004761898234877133 0.076677493534930377 +< 3 -2 -1 >: -0.007273919704333691 -0.117126806074435222 +< 3 -1 -2 >: -0.007273919704333691 -0.117126806074435208 +< 4 -2 -2 >: 0.010286875897481597 0.165642317667909655 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 2 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.001338310405543282 0.013816890326506145 +< 0 1 -1 >: 0.001639088805519132 0.016922165565968459 +< 1 -2 1 >: -0.001159010809349536 -0.011965778024057789 +< 1 -1 0 >: -0.002591626956362612 -0.026756293065466334 +< 1 0 -1 >: -0.002116054548910202 -0.021846421806253478 +< 2 -3 1 >: 0.000669155202771641 0.006908445163253073 +< 2 -2 0 >: 0.002318021618699074 0.023931556048115588 +< 2 -1 -1 >: 0.002591626956362613 0.026756293065466334 +< 3 -3 0 >: -0.001770418255038761 -0.018278027848094645 +< 3 -2 -1 >: -0.003066454368374569 -0.031658472895058770 +< 4 -3 -1 >: 0.003540836510077523 0.036556055696189305 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 2 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: -0.000290279039957704 0.008903859516862032 +< 0 1 -1 >: 0.000096759679985902 -0.002967953172287346 +< 0 2 -2 >: 0.000677317759901310 -0.020775672206011408 +< 0 3 -3 >: 0.000290279039957704 -0.008903859516862032 +< 1 -3 2 >: -0.000529974593852594 0.016256149020807947 +< 1 -2 1 >: -0.000547355406907770 0.016789278514948054 +< 1 -1 0 >: 0.000374748629169756 -0.011494833208592358 +< 1 0 -1 >: 0.000374748629169756 -0.011494833208592353 +< 1 1 -2 >: -0.000547355406907770 0.016789278514948051 +< 1 2 -3 >: -0.000529974593852594 0.016256149020807950 +< 2 -3 1 >: 0.000711035530921346 -0.021809912557735935 +< 2 -2 0 >: 0.000167592681859687 -0.005140645688886903 +< 2 -1 -1 >: -0.000611961948848916 0.018770984026300282 +< 2 0 -2 >: 0.000167592681859687 -0.005140645688886904 +< 2 1 -3 >: 0.000711035530921345 -0.021809912557735931 +< 3 -3 0 >: -0.000768006150542667 0.023557397990272653 +< 3 -2 -1 >: 0.000362041571361131 -0.011105063910688094 +< 3 -1 -2 >: 0.000362041571361131 -0.011105063910688093 +< 3 0 -3 >: -0.000768006150542667 0.023557397990272656 +< 4 -3 -1 >: 0.000627074396049552 -0.019234534914611308 +< 4 -2 -2 >: -0.000809549564244330 0.024831677798778224 +< 4 -1 -3 >: 0.000627074396049552 -0.019234534914611308 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 3 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: -0.012791305455401133 -0.031734570064752096 +< 0 1 -1 >: -0.012791305455401131 -0.031734570064752096 +< 1 -1 0 >: 0.022155190943887720 0.054965887708504996 +< 1 0 -1 >: 0.022155190943887720 0.054965887708504996 +< 2 -1 -1 >: -0.031332171509811581 -0.077733503865244358 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 3 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.027599415306187654 -0.092072968743109149 +< 0 1 -1 >: -0.031869059713007422 -0.106316706577844075 +< 1 -2 1 >: 0.018399610204125096 0.061381979162072740 +< 1 -1 0 >: 0.052041956586104221 0.173614454832612009 +< 1 0 -1 >: 0.045069656466213116 0.150354528349227939 +< 2 -2 0 >: -0.041142779175922503 -0.137254277999870250 +< 2 -1 -1 >: -0.058184676304310949 -0.194106861441143613 +< 3 -2 -1 >: 0.071261383897284550 0.237731383051958428 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 3 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: -0.003208876008607552 -0.015865073805428828 +< 0 1 -1 >: -0.004278501344810070 -0.021153431740571781 +< 0 2 -2 >: -0.001069625336202517 -0.005288357935142944 +< 1 -2 1 >: 0.002391754962204895 0.011825127832330046 +< 1 -1 0 >: 0.005858579247171660 0.028965529332392329 +< 1 0 -1 >: 0.005858579247171660 0.028965529332392333 +< 1 1 -2 >: 0.002391754962204895 0.011825127832330046 +< 2 -2 0 >: -0.004142641113793858 -0.020481722211592460 +< 2 -1 -1 >: -0.006764904610846626 -0.033446512314553430 +< 2 0 -2 >: -0.004142641113793859 -0.020481722211592467 +< 3 -2 -1 >: 0.006327988826998846 0.031286347465893614 +< 3 -1 -2 >: 0.006327988826998845 0.031286347465893614 +< 4 -2 -2 >: -0.008949127621687177 -0.044245576903383849 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 3 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.000311875931422909 0.030493197373766243 +< 0 1 -1 >: 0.000381968447520683 0.037346387095851676 +< 1 -2 1 >: -0.000270092479441173 -0.026407883568294495 +< 1 -1 0 >: -0.000603945144241926 -0.059049822800606208 +< 1 0 -1 >: -0.000493119145341435 -0.048213978421083034 +< 2 -3 1 >: 0.000155937965711454 0.015246598686883125 +< 2 -2 0 >: 0.000540184958882345 0.052815767136589011 +< 2 -1 -1 >: 0.000603945144241926 0.059049822800606215 +< 3 -3 0 >: -0.000412573077225826 -0.040338708465096684 +< 3 -2 -1 >: -0.000714597531590169 -0.069868692573256244 +< 4 -3 -1 >: 0.000825146154451652 0.080677416930193396 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 3 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: 0.000434757122193576 -0.025981169198161836 +< 0 1 -1 >: -0.000144919040731192 0.008660389732720618 +< 0 2 -2 >: -0.001014433285118343 0.060622728129044283 +< 0 3 -3 >: -0.000434757122193576 0.025981169198161836 +< 1 -3 2 >: 0.000793754276204838 -0.047434908133972144 +< 1 -2 1 >: 0.000819785891392602 -0.048990562461800780 +< 1 -1 0 >: -0.000561269031300261 0.033541545206492641 +< 1 0 -1 >: -0.000561269031300261 0.033541545206492628 +< 1 1 -2 >: 0.000819785891392602 -0.048990562461800773 +< 1 2 -3 >: 0.000793754276204838 -0.047434908133972151 +< 2 -3 1 >: -0.001064933111415097 0.063640607456411674 +< 2 -2 0 >: -0.000251007141530568 0.015000235030419943 +< 2 -1 -1 >: 0.000916548490074559 -0.054773113960267988 +< 2 0 -2 >: -0.000251007141530568 0.015000235030419945 +< 2 1 -3 >: -0.001064933111415097 0.063640607456411660 +< 3 -3 0 >: 0.001150259226038322 -0.068739712469027631 +< 3 -2 -1 >: -0.000542237399236058 0.032404211215775282 +< 3 -1 -2 >: -0.000542237399236058 0.032404211215775275 +< 3 0 -3 >: 0.001150259226038322 -0.068739712469027645 +< 4 -3 -1 >: -0.000939182725240862 0.056125740204916043 +< 4 -2 -2 >: 0.001212479684634518 -0.072458019035734608 +< 4 -1 -3 >: -0.000939182725240862 0.056125740204916043 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 4 ) +l=( 2 1 1 ) +num_ms=4 +< 0 -1 1 >: 0.017006555442343647 0.051682027384418273 +< 0 0 0 >: 0.017006555442343651 0.051682027384418280 +< 1 -1 0 >: -0.058912436175752418 -0.179031794535957051 +< 2 -1 -1 >: 0.041657383116094210 0.126594595964371892 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 4 ) +l=( 2 2 2 ) +num_ms=8 +< -2 0 2 >: -0.073419485635343396 -0.030314404211117290 +< -2 1 1 >: 0.044960069246047618 0.018563705543428739 +< -1 -1 2 >: 0.044960069246047618 0.018563705543428739 +< -1 0 1 >: -0.036709742817671677 -0.015157202105558635 +< 0 -2 2 >: -0.036709742817671677 -0.015157202105558635 +< 0 -1 1 >: -0.018354871408835838 -0.007578601052779317 +< 0 0 0 >: 0.018354871408835838 0.007578601052779317 +< 1 -2 1 >: 0.044960069246047618 0.018563705543428739 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 4 ) +l=( 2 3 3 ) +num_ms=12 +< -2 -1 3 >: 0.010399637935952335 -0.034587632831313740 +< -2 0 2 >: -0.029414618025587074 0.097828598880849688 +< -2 1 1 >: 0.016111049813012111 -0.053582930376166016 +< -1 -2 3 >: -0.016443271359350829 0.054687849310284906 +< -1 -1 2 >: 0.012736903226387035 -0.042361025923726855 +< -1 0 1 >: -0.009301718946470012 0.030936119276648424 +< 0 -3 3 >: 0.016443271359350826 -0.054687849310284906 +< 0 -1 1 >: -0.009865962815610493 0.032812709586170934 +< 0 0 0 >: 0.006577308543740331 -0.021875139724113962 +< 1 -3 2 >: -0.016443271359350829 0.054687849310284906 +< 1 -2 1 >: 0.012736903226387035 -0.042361025923726855 +< 2 -3 1 >: 0.010399637935952335 -0.034587632831313740 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 4 ) +l=( 2 4 4 ) +num_ms=18 +< -2 -2 4 >: -0.000056969662490620 -0.003666580543715266 +< -2 -1 3 >: 0.000085454493735930 0.005499870815572900 +< -2 0 2 >: -0.000204275311418739 -0.013147205892832026 +< -2 1 1 >: 0.000107662542303903 0.006929185914756131 +< -1 -3 4 >: 0.000106580479240023 0.006859544087796920 +< -1 -2 3 >: -0.000100709086672565 -0.006481659915569307 +< -1 -1 2 >: 0.000068516022368586 0.004409706913583733 +< -1 0 1 >: -0.000048148152644395 -0.003098826146825754 +< 0 -4 4 >: -0.000123068536759173 -0.007920719251215312 +< 0 -3 3 >: 0.000030767134189793 0.001980179812803828 +< 0 -2 2 >: 0.000035162439074049 0.002263062643204376 +< 0 -1 1 >: -0.000074720183032355 -0.004809008116809297 +< 0 0 0 >: 0.000043953048842562 0.002828828304005469 +< 1 -4 3 >: 0.000106580479240023 0.006859544087796920 +< 1 -3 2 >: -0.000100709086672565 -0.006481659915569307 +< 1 -2 1 >: 0.000068516022368586 0.004409706913583733 +< 2 -4 2 >: -0.000056969662490620 -0.003666580543715266 +< 2 -3 1 >: 0.000085454493735930 0.005499870815572900 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 4 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.025159180427669910 0.062119674465192128 +< 0 1 -1 >: 0.029051319185011158 0.071729621548901154 +< 1 -2 1 >: -0.016772786951779934 -0.041413116310128069 +< 1 -1 0 >: -0.047440605572003344 -0.117133981491835112 +< 1 0 -1 >: -0.041084769596272469 -0.101441003618345432 +< 2 -2 0 >: 0.037505091796301425 0.092602543229551637 +< 2 -1 -1 >: 0.053040209476377380 0.130959772545472752 +< 3 -2 -1 >: -0.064960724533728753 -0.160392309783676773 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 4 ) +l=( 3 2 3 ) +num_ms=14 +< -3 0 3 >: 0.002833752401334180 -0.079207572764643866 +< -3 1 2 >: -0.002833752401334180 0.079207572764643866 +< -3 2 1 >: 0.001792222382637516 -0.050095267573958942 +< -2 -1 3 >: -0.002833752401334180 0.079207572764643866 +< -2 1 1 >: 0.002195015171528512 -0.061353922042195599 +< -1 -2 3 >: 0.001792222382637516 -0.050095267573958942 +< -1 -1 2 >: 0.002195015171528512 -0.061353922042195599 +< -1 0 1 >: -0.001700251440800508 0.047524543658786306 +< 0 -2 2 >: -0.002534585200314599 0.070845406813801901 +< 0 -1 1 >: -0.000801506215674825 0.022403284729282640 +< 0 0 0 >: 0.001133500960533672 -0.031683029105857546 +< 1 -2 1 >: 0.002776498976262111 -0.077607254815098989 +< 1 -1 0 >: -0.000801506215674825 0.022403284729282640 +< 2 -2 0 >: -0.002534585200314599 0.070845406813801901 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 4 ) +l=( 4 2 2 ) +num_ms=9 +< 0 -2 2 >: 0.000834529747187740 0.010078086610853210 +< 0 -1 1 >: 0.003338118988750962 0.040312346443412847 +< 0 0 0 >: 0.002503589241563220 0.030234259832559625 +< 1 -2 1 >: -0.003732130487915003 -0.045070573489996490 +< 1 -1 0 >: -0.009141815348876177 -0.110399907465101838 +< 2 -2 0 >: 0.006464239625545608 0.078064523210940845 +< 2 -1 -1 >: 0.005278029552555514 0.063739416293486326 +< 3 -2 -1 >: -0.009874289131465252 -0.119245528901591236 +< 4 -2 -2 >: 0.006982176804255703 0.084319322112491588 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 4 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.000572908359465638 -0.024115899432731829 +< 0 1 -1 >: -0.000701666575032910 -0.029535824149233642 +< 1 -2 1 >: 0.000496153193337710 0.020884981543856498 +< 1 -1 0 >: 0.001109432267556715 0.046700238440891648 +< 1 0 -1 >: 0.000905847653230952 0.038130585015497570 +< 2 -3 1 >: -0.000286454179732819 -0.012057949716365918 +< 2 -2 0 >: -0.000992306386675420 -0.041769963087713018 +< 2 -1 -1 >: -0.001109432267556715 -0.046700238440891648 +< 3 -3 0 >: 0.000757886521588038 0.031902336270826032 +< 3 -2 -1 >: 0.001312697961762130 0.055256467301218123 +< 4 -3 -1 >: -0.001515773043176077 -0.063804672541652077 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 4 ) +l=( 4 3 3 ) +num_ms=14 +< 0 -3 3 >: -0.000232922969764295 -0.008537019114105015 +< 0 -2 2 >: -0.000543486929450021 -0.019919711266245036 +< 0 -1 1 >: -0.000077640989921432 -0.002845673038035007 +< 0 0 0 >: 0.000232922969764295 0.008537019114105015 +< 1 -3 2 >: 0.000850514431339986 0.031172786284320568 +< 1 -2 1 >: 0.000878407527543690 0.032195115235748417 +< 1 -1 0 >: -0.000601404521897524 -0.022042488570122077 +< 2 -3 1 >: -0.001141084850592472 -0.041822681507888343 +< 2 -2 0 >: -0.000268956278587725 -0.009857700567211020 +< 2 -1 -1 >: 0.000491044735883803 0.017997616552643158 +< 3 -3 0 >: 0.001232512505261881 0.045173659027453628 +< 3 -2 -1 >: -0.000581011966911931 -0.021295067086214238 +< 4 -3 -1 >: -0.001006342246496992 -0.036884138143910797 +< 4 -2 -2 >: 0.000649591126877968 0.023808608795096702 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 3 4 4 ) +l=( 4 4 4 ) +num_ms=25 +< -4 0 4 >: 0.000449825338994940 -0.008002256070840756 +< -4 1 3 >: -0.000711236310240683 0.012652677801883255 +< -4 2 2 >: 0.000403233085777721 -0.007173394046316527 +< -3 -1 4 >: -0.000355618155120342 0.006326338900941627 +< -3 0 3 >: 0.000674738008492410 -0.012003384106261129 +< -3 1 2 >: -0.000268822057185147 0.004782262697544351 +< -2 -2 4 >: 0.000403233085777720 -0.007173394046316526 +< -2 -1 3 >: -0.000134411028592573 0.002391131348772176 +< -2 0 2 >: -0.000353434194924595 0.006287486912803448 +< -2 1 1 >: 0.000304815561531721 -0.005422576200807108 +< -1 -3 4 >: -0.000355618155120341 0.006326338900941624 +< -1 -2 3 >: -0.000134411028592573 0.002391131348772175 +< -1 -1 2 >: 0.000304815561531721 -0.005422576200807109 +< -1 0 1 >: -0.000289173432211033 0.005144307474111914 +< 0 -4 4 >: 0.000224912669497470 -0.004001128035420377 +< 0 -3 3 >: 0.000337369004246205 -0.006001692053130567 +< 0 -2 2 >: -0.000176717097462298 0.003143743456401726 +< 0 -1 1 >: -0.000144586716105516 0.002572153737055957 +< 0 0 0 >: 0.000144586716105516 -0.002572153737055958 +< 1 -4 3 >: -0.000355618155120341 0.006326338900941624 +< 1 -3 2 >: -0.000134411028592573 0.002391131348772175 +< 1 -2 1 >: 0.000304815561531721 -0.005422576200807109 +< 2 -4 2 >: 0.000403233085777720 -0.007173394046316526 +< 2 -3 1 >: -0.000134411028592573 0.002391131348772176 +< 3 -4 1 >: -0.000355618155120342 0.006326338900941627 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 1 ) +l=( 0 0 ) +num_ms=1 +< 0 0 >: -0.157554155758129116 0.231164493466297694 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 1 ) +l=( 1 1 ) +num_ms=2 +< 0 0 >: 0.184133567952436655 -0.154604107376737965 +< 1 -1 >: -0.368267135904873255 0.309208214753475874 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 1 ) +l=( 2 2 ) +num_ms=3 +< 0 0 >: -0.144488809584725070 -0.364079015494222169 +< 1 -1 >: 0.288977619169450195 0.728158030988444449 +< 2 -2 >: -0.288977619169450251 -0.728158030988444671 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 1 ) +l=( 3 3 ) +num_ms=4 +< 0 0 >: -0.089201606941624448 0.126277646492835266 +< 1 -1 >: 0.178403213883248896 -0.252555292985670532 +< 2 -2 >: -0.178403213883248868 0.252555292985670476 +< 3 -3 >: 0.178403213883248868 -0.252555292985670476 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 1 ) +l=( 4 4 ) +num_ms=5 +< 0 0 >: 0.031206805162126219 -0.074117671226575033 +< 1 -1 >: -0.062413610324252418 0.148235342453150010 +< 2 -2 >: 0.062413610324252418 -0.148235342453150010 +< 3 -3 >: -0.062413610324252418 0.148235342453150010 +< 4 -4 >: 0.062413610324252425 -0.148235342453150037 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 1 ) +l=( 5 5 ) +num_ms=6 +< 0 0 >: 0.002505517869991374 -0.034819070698867929 +< 1 -1 >: -0.005011035739982747 0.069638141397735859 +< 2 -2 >: 0.005011035739982749 -0.069638141397735859 +< 3 -3 >: -0.005011035739982750 0.069638141397735873 +< 4 -4 >: 0.005011035739982749 -0.069638141397735859 +< 5 -5 >: -0.005011035739982743 0.069638141397735789 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 1 ) +l=( 6 6 ) +num_ms=7 +< 0 0 >: 0.011027347746966754 0.049545417789944347 +< 1 -1 >: -0.022054695493933515 -0.099090835579888722 +< 2 -2 >: 0.022054695493933504 0.099090835579888681 +< 3 -3 >: -0.022054695493933515 -0.099090835579888722 +< 4 -4 >: 0.022054695493933501 0.099090835579888667 +< 5 -5 >: -0.022054695493933504 -0.099090835579888681 +< 6 -6 >: 0.022054695493933490 0.099090835579888625 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 1 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: 0.009881859225126983 -0.219792647952851444 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 1 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.038037296734070511 -0.051050933697750711 +< 1 -1 0 >: -0.076074593468141008 0.102101867395501394 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 1 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.023970409040645662 -0.097244131034850759 +< 1 -1 0 >: -0.047940818081291331 0.194488262069701517 +< 2 -2 0 >: 0.047940818081291338 -0.194488262069701573 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 1 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.004853574855062973 -0.030948741139870253 +< 0 1 -1 >: -0.005604425498205210 -0.035736528056368254 +< 1 -2 1 >: 0.003235716570041981 0.020632494093246825 +< 1 -1 0 >: 0.009151988514697448 0.058357505944504888 +< 1 0 -1 >: 0.007925854548871399 0.050539082649442610 +< 2 -2 0 >: -0.007235282206536331 -0.046135659337862796 +< 2 -1 -1 >: -0.010232234224080410 -0.065245675144630491 +< 3 -2 -1 >: 0.012531876388819979 0.079909306013867865 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 1 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.011630735346167934 0.003140347900163450 +< 1 -1 0 >: 0.023261470692335869 -0.006280695800326900 +< 2 -2 0 >: -0.023261470692335865 0.006280695800326899 +< 3 -3 0 >: 0.023261470692335865 -0.006280695800326899 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 1 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.002697459723056831 0.062847678113761199 +< 0 1 -1 >: -0.003303699961599229 0.076972371448698451 +< 1 -2 1 >: 0.002336068645852552 -0.054427685815384479 +< 1 -1 0 >: 0.005223608292232188 -0.121704005341200780 +< 1 0 -1 >: 0.004265058310713298 -0.099370904246300101 +< 2 -3 1 >: -0.001348729861528416 0.031423839056880606 +< 2 -2 0 >: -0.004672137291705105 0.108855371630768999 +< 2 -1 -1 >: -0.005223608292232189 0.121704005341200794 +< 3 -3 0 >: 0.003568403799410768 -0.083139663383424545 +< 3 -2 -1 >: 0.006180656682501273 -0.144002121104265135 +< 4 -3 -1 >: -0.007136807598821539 0.166279326766849145 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 1 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.001556648333714049 -0.001179970747050745 +< 1 -1 0 >: -0.003113296667428097 0.002359941494101490 +< 2 -2 0 >: 0.003113296667428097 -0.002359941494101490 +< 3 -3 0 >: -0.003113296667428097 0.002359941494101490 +< 4 -4 0 >: 0.003113296667428097 -0.002359941494101490 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 1 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: 0.003147239138375993 -0.045268139294386202 +< 0 1 -1 >: -0.001723813869951654 0.024794381027821315 +< 0 2 -2 >: -0.007313522861677441 0.105193649760573202 +< 1 -3 2 >: 0.006118932231508618 -0.088011321799897457 +< 1 -2 1 >: 0.004906060282112865 -0.070566045499783847 +< 1 -1 0 >: -0.005350306535239187 0.076955836800456520 +< 1 0 -1 >: -0.001723813869951654 0.024794381027821315 +< 1 1 -2 >: 0.007709129987537763 -0.110883842876479149 +< 2 -4 2 >: -0.004079288154339078 0.058674214533264969 +< 2 -3 1 >: -0.007211230790867793 0.103722337443164808 +< 2 -2 0 >: 0.002517791310700795 -0.036214511435508967 +< 2 -1 -1 >: 0.004906060282112865 -0.070566045499783847 +< 2 0 -2 >: -0.007313522861677441 0.105193649760573202 +< 3 -4 1 >: 0.007631649327731125 -0.109769404110774904 +< 3 -3 0 >: 0.002203067396863194 -0.031687697506070325 +< 3 -2 -1 >: -0.007211230790867793 0.103722337443164808 +< 3 -1 -2 >: 0.006118932231508618 -0.088011321799897457 +< 4 -4 0 >: -0.008812269587452780 0.126750790024281357 +< 4 -3 -1 >: 0.007631649327731125 -0.109769404110774904 +< 4 -2 -2 >: -0.004079288154339078 0.058674214533264969 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 2 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.011930248142467558 0.034879821696619094 +< 1 -1 0 >: -0.023860496284935112 -0.069759643393238174 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 2 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.010800971050317396 -0.087271967525785019 +< 1 -1 0 >: -0.021601942100634795 0.174543935051570037 +< 2 -2 0 >: 0.021601942100634802 -0.174543935051570093 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 2 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.013126827675406438 0.050469449847610731 +< 0 1 -1 >: -0.015157554984003466 0.058277100910740717 +< 1 -2 1 >: 0.008751218450270956 -0.033646299898407145 +< 1 -1 0 >: 0.024752183639325697 -0.095166107279999773 +< 1 0 -1 >: 0.021436019830793605 -0.082416266483754982 +< 2 -2 0 >: -0.019568319340756223 0.075235413764182649 +< 2 -1 -1 >: -0.027673782604545193 0.106398942516058526 +< 3 -2 -1 >: 0.033893323316922491 -0.130311559168031166 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 2 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.024882056454765392 0.048496728546899577 +< 1 -1 0 >: -0.049764112909530783 -0.096993457093799154 +< 2 -2 0 >: 0.049764112909530776 0.096993457093799140 +< 3 -3 0 >: -0.049764112909530776 -0.096993457093799140 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 2 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.000918343606543681 0.027461293300710472 +< 0 1 -1 >: 0.001124736622289629 0.033633078131825353 +< 1 -2 1 >: -0.000795308892669849 -0.023782177619190686 +< 1 -1 0 >: -0.001778364747119867 -0.053178565809484490 +< 1 0 -1 >: -0.001452028735665771 -0.043420117162084146 +< 2 -3 1 >: 0.000459171803271841 0.013730646650355239 +< 2 -2 0 >: 0.001590617785339699 0.047564355238381394 +< 2 -1 -1 >: 0.001778364747119867 0.053178565809484497 +< 3 -3 0 >: -0.001214854400510364 -0.036327876376941994 +< 3 -2 -1 >: -0.002104189545482582 -0.062921727615944750 +< 4 -3 -1 >: 0.002429708801020729 0.072655752753884015 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 2 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.009851657119976582 -0.006144135502695961 +< 1 -1 0 >: 0.019703314239953158 0.012288271005391916 +< 2 -2 0 >: -0.019703314239953158 -0.012288271005391916 +< 3 -3 0 >: 0.019703314239953158 0.012288271005391916 +< 4 -4 0 >: -0.019703314239953161 -0.012288271005391919 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 2 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: -0.003578339080263088 -0.000467045563529370 +< 0 1 -1 >: 0.001959937032662382 0.000255811390527748 +< 0 2 -2 >: 0.008315308598965265 0.001085315813681586 +< 1 -3 2 >: -0.006957086313049306 -0.000908040357472688 +< 1 -2 1 >: -0.005578078584352461 -0.000728051980934257 +< 1 -1 0 >: 0.006083176436447249 0.000793977457999930 +< 1 0 -1 >: 0.001959937032662382 0.000255811390527748 +< 1 1 -2 >: -0.008765104873304628 -0.001144023317277582 +< 2 -4 2 >: 0.004638057542032871 0.000605360238315125 +< 2 -3 1 >: 0.008199004848762133 0.001070135823933324 +< 2 -2 0 >: -0.002862671264210471 -0.000373636450823496 +< 2 -1 -1 >: -0.005578078584352461 -0.000728051980934257 +< 2 0 -2 >: 0.008315308598965265 0.001085315813681586 +< 3 -4 1 >: -0.008677011131214942 -0.001132525303675511 +< 3 -3 0 >: -0.002504837356184161 -0.000326931894470559 +< 3 -2 -1 >: 0.008199004848762133 0.001070135823933324 +< 3 -1 -2 >: -0.006957086313049306 -0.000908040357472688 +< 4 -4 0 >: 0.010019349424736645 0.001307727577882237 +< 4 -3 -1 >: -0.008677011131214942 -0.001132525303675511 +< 4 -2 -2 >: 0.004638057542032871 0.000605360238315125 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 3 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.013468787859311522 -0.061572797573190549 +< 1 -1 0 >: -0.026937575718623038 0.123145595146381071 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 3 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.038797971985155805 0.053059172670396101 +< 1 -1 0 >: 0.077595943970311623 -0.106118345340792217 +< 2 -2 0 >: -0.077595943970311637 0.106118345340792244 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 3 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.036749560678448812 -0.103331079045556190 +< 0 1 -1 >: 0.042434737500605800 -0.119316452605212675 +< 1 -2 1 >: -0.024499707118965867 0.068887386030370770 +< 1 -1 0 >: -0.069295636163620417 0.194842951201162518 +< 1 0 -1 >: -0.060011781289098898 0.168738945488538378 +< 2 -2 0 >: 0.054783010546843217 -0.154036877956178458 +< 2 -1 -1 >: 0.077474876502973980 -0.217841041911236821 +< 3 -2 -1 >: -0.094886957658714105 0.266799698859387480 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 3 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.019572126169034785 0.084843622212785935 +< 1 -1 0 >: 0.039144252338069570 -0.169687244425571870 +< 2 -2 0 >: -0.039144252338069563 0.169687244425571870 +< 3 -3 0 >: 0.039144252338069563 -0.169687244425571870 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 3 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.005990785587919729 -0.048647248739531211 +< 0 1 -1 >: 0.007337183924411334 -0.059580468401051793 +< 1 -2 1 >: -0.005188172507764179 0.042129753232654540 +< 1 -1 0 >: -0.011601106406356261 0.094204992103507079 +< 1 0 -1 >: -0.009472263715768623 0.076918053958836927 +< 2 -3 1 >: 0.002995392793959865 -0.024323624369765609 +< 2 -2 0 >: 0.010376345015528362 -0.084259506465309109 +< 2 -1 -1 >: 0.011601106406356263 -0.094204992103507093 +< 3 -3 0 >: -0.007925064411772738 0.064354261066149970 +< 3 -2 -1 >: -0.013726614214446344 0.111464849850123462 +< 4 -3 -1 >: 0.015850128823545480 -0.128708522132299996 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 3 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.012567434723074462 -0.015502730665534242 +< 1 -1 0 >: -0.025134869446148917 0.031005461331068473 +< 2 -2 0 >: 0.025134869446148917 -0.031005461331068473 +< 3 -3 0 >: -0.025134869446148917 0.031005461331068473 +< 4 -4 0 >: 0.025134869446148921 -0.031005461331068480 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 3 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: 0.002206809792468274 0.020213622302955207 +< 0 1 -1 >: -0.001208719503458168 -0.011071456904218091 +< 0 2 -2 >: -0.005128162544686243 -0.046972213527523406 +< 1 -3 2 >: 0.004290528610708245 0.039299773416302003 +< 1 -2 1 >: 0.003440076014876023 0.031509918750353257 +< 1 -1 0 >: -0.003751576647196064 -0.034363157915023847 +< 1 0 -1 >: -0.001208719503458168 -0.011071456904218091 +< 1 1 -2 >: 0.005405557950924511 0.049513060495582073 +< 2 -4 2 >: -0.002860352407138830 -0.026199848944201336 +< 2 -3 1 >: -0.005056436459177827 -0.046315227136269919 +< 2 -2 0 >: 0.001765447833974619 0.016170897842364168 +< 2 -1 -1 >: 0.003440076014876023 0.031509918750353257 +< 2 0 -2 >: -0.005128162544686243 -0.046972213527523406 +< 3 -4 1 >: 0.005351229356473814 0.049015429167216192 +< 3 -3 0 >: 0.001544766854727791 0.014149535612068638 +< 3 -2 -1 >: -0.005056436459177827 -0.046315227136269919 +< 3 -1 -2 >: 0.004290528610708245 0.039299773416302003 +< 4 -4 0 >: -0.006179067418911166 -0.056598142448274574 +< 4 -3 -1 >: 0.005351229356473814 0.049015429167216192 +< 4 -2 -2 >: -0.002860352407138830 -0.026199848944201336 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 4 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.059083716408346074 0.136148585985658210 +< 1 -1 0 >: 0.118167432816692133 -0.272297171971316365 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 4 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.009352930572533689 -0.044273101196926970 +< 1 -1 0 >: -0.018705861145067382 0.088546202393853954 +< 2 -2 0 >: 0.018705861145067386 -0.088546202393853982 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 4 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.026234572998636890 0.014909810897346160 +< 0 1 -1 >: -0.030293075565675776 0.017216366670298435 +< 1 -2 1 >: 0.017489715332424584 -0.009939873931564102 +< 1 -1 0 >: 0.049468385250319040 -0.028114209044593472 +< 1 0 -1 >: 0.042840878310971699 -0.024347619239924168 +< 2 -2 0 >: -0.039108192390421716 0.022226233798755431 +< 2 -1 -1 >: -0.055307336078430656 0.031432641278675205 +< 3 -2 -1 >: 0.067737376212388942 -0.038496966200349016 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 4 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.002524005065410506 -0.051232649910169847 +< 1 -1 0 >: -0.005048010130821012 0.102465299820339695 +< 2 -2 0 >: 0.005048010130821011 -0.102465299820339681 +< 3 -3 0 >: -0.005048010130821011 0.102465299820339681 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 4 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.005334637759604893 0.033713120893056552 +< 0 1 -1 >: -0.006533570236808009 0.041289971912375642 +< 1 -2 1 >: 0.004619931819805540 -0.029196419134242896 +< 1 -1 0 >: 0.010330481600499498 -0.065285177883742690 +< 1 0 -1 >: 0.008434802906144621 -0.053305124527334276 +< 2 -3 1 >: -0.002667318879802447 0.016856560446528279 +< 2 -2 0 >: -0.009239863639611084 0.058392838268485812 +< 2 -1 -1 >: -0.010330481600499500 0.065285177883742690 +< 3 -3 0 >: 0.007057062423264657 -0.044598266901441710 +< 3 -2 -1 >: 0.012223190669279531 -0.077246464202814460 +< 4 -3 -1 >: -0.014114124846529319 0.089196533802883449 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 4 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.003828032263925754 -0.011598754992030929 +< 1 -1 0 >: 0.007656064527851504 0.023197509984061851 +< 2 -2 0 >: -0.007656064527851504 -0.023197509984061851 +< 3 -3 0 >: 0.007656064527851504 0.023197509984061851 +< 4 -4 0 >: -0.007656064527851506 -0.023197509984061854 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 1 4 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: -0.001401747909936194 0.010543239399376297 +< 0 1 -1 >: 0.000767768950207773 -0.005774770048215617 +< 0 2 -2 >: 0.003257367786458360 -0.024500274365317376 +< 1 -3 2 >: -0.002725309418649495 0.020498400200578571 +< 1 -2 1 >: -0.002185108739471674 0.016435283684473549 +< 1 -1 0 >: 0.002382971446891529 -0.017923506978939702 +< 1 0 -1 >: 0.000767768950207773 -0.005774770048215617 +< 1 1 -2 >: -0.003433567127356465 0.025825556764479719 +< 2 -4 2 >: 0.001816872945766330 -0.013665600133719048 +< 2 -3 1 >: 0.003211807951264375 -0.024157596308841317 +< 2 -2 0 >: -0.001121398327948955 0.008434591519501039 +< 2 -1 -1 >: -0.002185108739471674 0.016435283684473549 +< 2 0 -2 >: 0.003257367786458360 -0.024500274365317376 +< 3 -4 1 >: -0.003399058039178160 0.025565996842514420 +< 3 -3 0 >: -0.000981223536955335 0.007380267579563404 +< 3 -2 -1 >: 0.003211807951264375 -0.024157596308841317 +< 3 -1 -2 >: -0.002725309418649495 0.020498400200578571 +< 4 -4 0 >: 0.003924894147821343 -0.029521070318253628 +< 4 -3 -1 >: -0.003399058039178160 0.025565996842514420 +< 4 -2 -2 >: 0.001816872945766330 -0.013665600133719048 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 2 ) +l=( 0 0 ) +num_ms=1 +< 0 0 >: 0.287026989817026290 -0.066729552024546113 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 2 ) +l=( 1 1 ) +num_ms=2 +< 0 0 >: -0.005767666807775936 -0.096451267935127302 +< 1 -1 >: 0.011535333615551870 0.192902535870254577 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 2 ) +l=( 2 2 ) +num_ms=3 +< 0 0 >: 0.057515597339940411 0.044271616939913321 +< 1 -1 >: -0.115031194679880835 -0.088543233879826655 +< 2 -2 >: 0.115031194679880863 0.088543233879826669 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 2 ) +l=( 3 3 ) +num_ms=4 +< 0 0 >: 0.032601265583660076 0.138180925507352059 +< 1 -1 >: -0.065202531167320152 -0.276361851014704119 +< 2 -2 >: 0.065202531167320138 0.276361851014704063 +< 3 -3 >: -0.065202531167320138 -0.276361851014704063 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 2 ) +l=( 4 4 ) +num_ms=5 +< 0 0 >: -0.020388227653746625 0.002279263934942535 +< 1 -1 >: 0.040776455307493235 -0.004558527869885069 +< 2 -2 >: -0.040776455307493235 0.004558527869885069 +< 3 -3 >: 0.040776455307493235 -0.004558527869885069 +< 4 -4 >: -0.040776455307493242 0.004558527869885070 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 2 ) +l=( 5 5 ) +num_ms=6 +< 0 0 >: -0.001555261349867393 0.025661933919382016 +< 1 -1 >: 0.003110522699734786 -0.051323867838764033 +< 2 -2 >: -0.003110522699734787 0.051323867838764047 +< 3 -3 >: 0.003110522699734787 -0.051323867838764053 +< 4 -4 >: -0.003110522699734787 0.051323867838764047 +< 5 -5 >: 0.003110522699734783 -0.051323867838763991 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 2 ) +l=( 6 6 ) +num_ms=7 +< 0 0 >: -0.005821332904486398 -0.127693554634757372 +< 1 -1 >: 0.011642665808972798 0.255387109269514800 +< 2 -2 >: -0.011642665808972795 -0.255387109269514689 +< 3 -3 >: 0.011642665808972798 0.255387109269514800 +< 4 -4 >: -0.011642665808972791 -0.255387109269514634 +< 5 -5 >: 0.011642665808972795 0.255387109269514689 +< 6 -6 >: -0.011642665808972788 -0.255387109269514578 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 1 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: -0.018455587456866641 0.464400210681951586 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 1 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.000112749367497700 -0.063197505042209404 +< 1 -1 0 >: -0.000225498734995400 0.126395010084418780 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 1 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: 0.024360220296848232 0.044872287240805497 +< 0 1 -1 >: 0.024360220296848228 0.044872287240805490 +< 1 -1 0 >: -0.042193139237711737 -0.077721081352899790 +< 1 0 -1 >: -0.042193139237711737 -0.077721081352899790 +< 2 -1 -1 >: 0.059670109749068327 0.109914207331573532 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 1 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.016306322357343566 0.094452916810822768 +< 1 -1 0 >: 0.032612644714687139 -0.188905833621645564 +< 2 -2 0 >: -0.032612644714687146 0.188905833621645619 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 1 ) +l=( 2 2 2 ) +num_ms=10 +< 0 0 0 >: 0.003325328308296832 0.027448792220999947 +< 0 1 -1 >: -0.003325328308296832 -0.027448792220999947 +< 0 2 -2 >: -0.006650656616593668 -0.054897584441999929 +< 1 -2 1 >: 0.008145357582559630 0.067235534997126076 +< 1 -1 0 >: -0.003325328308296832 -0.027448792220999947 +< 1 0 -1 >: -0.003325328308296832 -0.027448792220999947 +< 1 1 -2 >: 0.008145357582559630 0.067235534997126076 +< 2 -2 0 >: -0.006650656616593664 -0.054897584441999894 +< 2 -1 -1 >: 0.008145357582559630 0.067235534997126076 +< 2 0 -2 >: -0.006650656616593668 -0.054897584441999929 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 1 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.016730983793628286 -0.003411413597293024 +< 0 1 -1 >: 0.019319275994117108 -0.003939161117428552 +< 1 -2 1 >: -0.011153989195752187 0.002274275731528682 +< 1 -1 0 >: -0.031548245590391440 0.006432623168207710 +< 1 0 -1 >: -0.027321582126109373 0.005570815076640215 +< 2 -2 0 >: 0.024941078062000105 -0.005085435135276196 +< 2 -1 -1 >: 0.035272010855486619 -0.007191891338876251 +< 3 -2 -1 >: -0.043199214398925684 0.008808232032894277 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 1 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.005652004549836375 -0.007069154502153570 +< 1 -1 0 >: -0.011304009099672749 0.014138309004307140 +< 2 -2 0 >: 0.011304009099672748 -0.014138309004307138 +< 3 -3 0 >: -0.011304009099672748 0.014138309004307138 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 1 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: 0.022641065281083991 -0.011572589255505880 +< 0 1 -1 >: 0.030188087041445336 -0.015430119007341179 +< 0 2 -2 >: 0.007547021760361332 -0.003857529751835294 +< 1 -2 1 >: -0.016875653683838067 0.008625698750331610 +< 1 -1 0 >: -0.041336740601322496 0.021128560613274960 +< 1 0 -1 >: -0.041336740601322502 0.021128560613274963 +< 1 1 -2 >: -0.016875653683838067 0.008625698750331610 +< 2 -2 0 >: 0.029229489591344412 -0.014940148486357718 +< 2 -1 -1 >: 0.047731556627190558 -0.024397160315327248 +< 2 0 -2 >: 0.029229489591344422 -0.014940148486357724 +< 3 -2 -1 >: -0.044648782859086571 0.022821453777538071 +< 3 -1 -2 >: -0.044648782859086564 0.022821453777538067 +< 4 -2 -2 >: 0.063142914262771591 -0.032274409445265030 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 1 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.000364239024064384 -0.000939032880186161 +< 0 1 -1 >: -0.000446099876683532 -0.001150075704076073 +< 1 -2 1 >: 0.000315440247889408 0.000813226329230084 +< 1 -1 0 >: 0.000705345837120102 0.001818429353251093 +< 1 0 -1 >: 0.000575912464380168 0.001484741349588133 +< 2 -3 1 >: -0.000182119512032192 -0.000469516440093080 +< 2 -2 0 >: -0.000630880495778817 -0.001626452658460169 +< 2 -1 -1 >: -0.000705345837120102 -0.001818429353251093 +< 3 -3 0 >: 0.000481842937729616 0.001242223736942646 +< 3 -2 -1 >: 0.000834576449415942 0.002151594626752740 +< 4 -3 -1 >: -0.000963685875459232 -0.002484447473885294 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 1 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: -0.000635830977452394 0.048298488990391457 +< 0 1 -1 >: 0.000211943659150798 -0.016099496330130497 +< 0 2 -2 >: 0.001483605614055586 -0.112696474310913397 +< 0 3 -3 >: 0.000635830977452394 -0.048298488990391457 +< 1 -3 2 >: -0.001160863230370783 0.088180573044841046 +< 1 -2 1 >: -0.001198934388920157 0.091072504229785634 +< 1 -1 0 >: 0.000820854262225302 -0.062353081168922811 +< 1 0 -1 >: 0.000820854262225302 -0.062353081168922783 +< 1 1 -2 >: -0.001198934388920156 0.091072504229785620 +< 1 2 -3 >: -0.001160863230370783 0.088180573044841060 +< 2 -3 1 >: 0.001557461457413442 -0.118306653373890153 +< 2 -2 0 >: 0.000367097185991242 -0.027885145620054671 +< 2 -1 -1 >: -0.001340449397093820 0.101822155169468895 +< 2 0 -2 >: 0.000367097185991242 -0.027885145620054678 +< 2 1 -3 >: 0.001557461457413442 -0.118306653373890139 +< 3 -3 0 >: -0.001682250642210152 0.127785790568766905 +< 3 -2 -1 >: 0.000793020557841482 -0.060238799366972705 +< 3 -1 -2 >: 0.000793020557841482 -0.060238799366972691 +< 3 0 -3 >: -0.001682250642210152 0.127785790568766905 +< 4 -3 -1 >: 0.001373551897628060 -0.104336661090544638 +< 4 -2 -2 >: -0.001773247874888357 0.134698050267522212 +< 4 -1 -3 >: 0.001373551897628060 -0.104336661090544638 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 1 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.001729464105349662 -0.024105254666445555 +< 1 -1 0 >: 0.003458928210699323 0.048210509332891095 +< 2 -2 0 >: -0.003458928210699323 -0.048210509332891095 +< 3 -3 0 >: 0.003458928210699323 0.048210509332891095 +< 4 -4 0 >: -0.003458928210699323 -0.048210509332891102 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 1 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: -0.001876784661961253 0.010877525676841630 +< 0 1 -1 >: 0.001027957294935886 -0.005957866183047810 +< 0 2 -2 >: 0.004361253444116070 -0.025277085476610721 +< 1 -3 2 >: -0.003648886422275981 0.021148327005565227 +< 1 -2 1 >: -0.002925617750444584 0.016956384419632271 +< 1 -1 0 >: 0.003190533925334130 -0.018491793650630767 +< 1 0 -1 >: 0.001027957294935886 -0.005957866183047810 +< 1 1 -2 >: -0.004597164778886885 0.026644387572284225 +< 2 -4 2 >: 0.002432590948183987 -0.014098884670376817 +< 2 -3 1 >: 0.004300253888284776 -0.024923542393976265 +< 2 -2 0 >: -0.001501427729569003 0.008702020541473307 +< 2 -1 -1 >: -0.002925617750444584 0.016956384419632271 +< 2 0 -2 >: 0.004361253444116070 -0.025277085476610721 +< 3 -4 1 >: -0.004550960945136021 0.026376597986094652 +< 3 -3 0 >: -0.001313749263372877 0.007614267973789138 +< 3 -2 -1 >: 0.004300253888284776 -0.024923542393976265 +< 3 -1 -2 >: -0.003648886422275981 0.021148327005565227 +< 4 -4 0 >: 0.005254997053491508 -0.030457071895156562 +< 4 -3 -1 >: -0.004550960945136021 0.026376597986094652 +< 4 -2 -2 >: 0.002432590948183987 -0.014098884670376817 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 1 ) +l=( 4 4 4 ) +num_ms=31 +< 0 0 0 >: 0.000655470119741609 -0.009793161264484037 +< 0 1 -1 >: -0.000655470119741609 0.009793161264484034 +< 0 2 -2 >: -0.000801130146350855 0.011969419323258259 +< 0 3 -3 >: 0.001529430279397088 -0.022850709617129407 +< 0 4 -4 >: 0.001019620186264725 -0.015233806411419609 +< 1 -4 3 >: -0.001612161068440831 0.024086762847081025 +< 1 -3 2 >: -0.000609339608639231 0.009103940625995212 +< 1 -2 1 >: 0.001381852344377855 -0.020645796726069452 +< 1 -1 0 >: -0.000655470119741609 0.009793161264484035 +< 1 0 -1 >: -0.000655470119741609 0.009793161264484034 +< 1 1 -2 >: 0.001381852344377855 -0.020645796726069445 +< 1 2 -3 >: -0.000609339608639231 0.009103940625995212 +< 1 3 -4 >: -0.001612161068440832 0.024086762847081028 +< 2 -4 2 >: 0.001828018825917694 -0.027311821877985636 +< 2 -3 1 >: -0.000609339608639231 0.009103940625995210 +< 2 -2 0 >: -0.000801130146350856 0.011969419323258268 +< 2 -1 -1 >: 0.001381852344377855 -0.020645796726069452 +< 2 0 -2 >: -0.000801130146350855 0.011969419323258259 +< 2 1 -3 >: -0.000609339608639231 0.009103940625995212 +< 2 2 -4 >: 0.001828018825917694 -0.027311821877985639 +< 3 -4 1 >: -0.001612161068440830 0.024086762847081014 +< 3 -3 0 >: 0.001529430279397088 -0.022850709617129417 +< 3 -2 -1 >: -0.000609339608639231 0.009103940625995210 +< 3 -1 -2 >: -0.000609339608639231 0.009103940625995212 +< 3 0 -3 >: 0.001529430279397088 -0.022850709617129407 +< 3 1 -4 >: -0.001612161068440832 0.024086762847081028 +< 4 -4 0 >: 0.001019620186264725 -0.015233806411419607 +< 4 -3 -1 >: -0.001612161068440830 0.024086762847081014 +< 4 -2 -2 >: 0.001828018825917694 -0.027311821877985636 +< 4 -1 -3 >: -0.001612161068440831 0.024086762847081025 +< 4 0 -4 >: 0.001019620186264725 -0.015233806411419609 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 2 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: -0.003160276460310858 -0.290714607686225146 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 2 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.033165383753138482 -0.065714662622380016 +< 1 -1 0 >: 0.066330767506276950 0.131429325244760004 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 2 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.022326309815497613 0.053284706814357853 +< 1 -1 0 >: 0.044652619630995226 -0.106569413628715720 +< 2 -2 0 >: -0.044652619630995240 0.106569413628715748 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 2 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.005907741309733746 -0.106135249692557762 +< 0 1 -1 >: 0.006821672070954898 -0.122554429961012692 +< 1 -2 1 >: -0.003938494206489162 0.070756833128371818 +< 1 -1 0 >: -0.011139743844289673 0.200130546081426747 +< 1 0 -1 >: -0.009647301160806174 0.173318136979767723 +< 2 -2 0 >: 0.008806740774698863 -0.158217088747648532 +< 2 -1 -1 >: 0.012454612243883268 -0.223752752706112140 +< 3 -2 -1 >: -0.015253722470866923 0.274040036336561321 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 2 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.010723934618256343 0.042211665913045954 +< 1 -1 0 >: 0.021447869236512686 -0.084423331826091907 +< 2 -2 0 >: -0.021447869236512682 0.084423331826091894 +< 3 -3 0 >: 0.021447869236512682 -0.084423331826091894 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 2 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.000392382834446121 0.002302098388691950 +< 0 1 -1 >: 0.000480568864109982 0.002819483194989307 +< 1 -2 1 >: -0.000339813502639284 -0.001993675686618451 +< 1 -1 0 >: -0.000759846091573744 -0.004457994360367426 +< 1 0 -1 >: -0.000620411735801258 -0.003639937153035087 +< 2 -3 1 >: 0.000196191417223061 0.001151049194345975 +< 2 -2 0 >: 0.000679627005278569 0.003987351373236904 +< 2 -1 -1 >: 0.000759846091573744 0.004457994360367427 +< 3 -3 0 >: -0.000519073699337532 -0.003045389915040704 +< 3 -2 -1 >: -0.000899062020125338 -0.005274770061708367 +< 4 -3 -1 >: 0.001038147398675065 0.006090779830081409 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 2 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.009590808832438397 0.015162806903201789 +< 1 -1 0 >: -0.019181617664876787 -0.030325613806403567 +< 2 -2 0 >: 0.019181617664876787 0.030325613806403567 +< 3 -3 0 >: -0.019181617664876787 -0.030325613806403567 +< 4 -4 0 >: 0.019181617664876791 0.030325613806403574 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 2 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: 0.002321808667863386 0.034548359254821651 +< 0 1 -1 >: -0.001271706981599796 -0.018922915688658188 +< 0 2 -2 >: -0.005395395782228952 -0.080283132019629097 +< 1 -3 2 >: 0.004514111978321516 0.067169687365781591 +< 1 -2 1 >: 0.003619341520373877 0.053855562192744191 +< 1 -1 0 >: -0.003947074735367755 -0.058732210733196795 +< 1 0 -1 >: -0.001271706981599796 -0.018922915688658188 +< 1 1 -2 >: 0.005687246516636438 0.084625851624673926 +< 2 -4 2 >: -0.003009407985547677 -0.044779791577187721 +< 2 -3 1 >: -0.005319931984844275 -0.079160235710874188 +< 2 -2 0 >: 0.001857446934290709 0.027638687403857328 +< 2 -1 -1 >: 0.003619341520373877 0.053855562192744191 +< 2 0 -2 >: -0.005395395782228952 -0.080283132019629097 +< 3 -4 1 >: 0.005630086809470477 0.083775318966490986 +< 3 -3 0 >: 0.001625266067504369 0.024183851478375144 +< 3 -2 -1 >: -0.005319931984844275 -0.079160235710874188 +< 3 -1 -2 >: 0.004514111978321516 0.067169687365781591 +< 4 -4 0 >: -0.006501064270017480 -0.096735405913500619 +< 4 -3 -1 >: 0.005630086809470477 0.083775318966490986 +< 4 -2 -2 >: -0.003009407985547677 -0.044779791577187721 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 3 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.047209873545272368 0.112362011082415572 +< 1 -1 0 >: -0.094419747090544723 -0.224724022164831116 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 3 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.055540104125378409 -0.064077659113268695 +< 1 -1 0 >: -0.111080208250756832 0.128155318226537418 +< 2 -2 0 >: 0.111080208250756859 -0.128155318226537446 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 3 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.026824954147321351 0.039363876600757679 +< 0 1 -1 >: -0.030974788995910687 0.045453489503589295 +< 1 -2 1 >: 0.017883302764880895 -0.026242584400505111 +< 1 -1 0 >: 0.050581618620237676 -0.074225237541829914 +< 1 0 -1 >: 0.043804966689661794 -0.064280941313159104 +< 2 -2 0 >: -0.039988280644483627 0.058680202624805007 +< 2 -1 -1 >: -0.056551968823410272 0.082986338394800518 +< 3 -2 -1 >: 0.069261733783568757 -0.101637092344598848 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 3 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.009447121937352258 -0.102258967371407938 +< 1 -1 0 >: -0.018894243874704515 0.204517934742815877 +< 2 -2 0 >: 0.018894243874704512 -0.204517934742815849 +< 3 -3 0 >: -0.018894243874704512 0.204517934742815849 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 3 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.000656854021824935 -0.027812928638570465 +< 0 1 -1 >: -0.000804478594483028 -0.034063741708469431 +< 1 -2 1 >: 0.000568852269478372 0.024086702754645764 +< 1 -1 0 >: 0.001271992343708669 0.053859504713219375 +< 1 0 -1 >: 0.001038577399604373 0.043976101448804351 +< 2 -3 1 >: -0.000328427010912468 -0.013906464319285236 +< 2 -2 0 >: -0.001137704538956744 -0.048173405509291549 +< 2 -1 -1 >: -0.001271992343708669 -0.053859504713219382 +< 3 -3 0 >: 0.000868936194710686 0.036793046205021850 +< 3 -2 -1 >: 0.001505041637774471 0.063727425392327133 +< 4 -3 -1 >: -0.001737872389421372 -0.073586092410043727 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 3 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.012398524780334092 0.043462566869807581 +< 1 -1 0 >: 0.024797049560668173 -0.086925133739615135 +< 2 -2 0 >: -0.024797049560668173 0.086925133739615135 +< 3 -3 0 >: 0.024797049560668173 -0.086925133739615135 +< 4 -4 0 >: -0.024797049560668180 0.086925133739615149 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 3 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: -0.001535119704393886 -0.049500517208194067 +< 0 1 -1 >: 0.000840819690567194 0.027112549883100540 +< 0 2 -2 >: 0.003567295829731425 0.115028807265593586 +< 1 -3 2 >: -0.002984613823557992 -0.096240004939014620 +< 1 -2 1 >: -0.002393014791339294 -0.077163669724976694 +< 1 -1 0 >: 0.002609703497469606 0.084150879253929903 +< 1 0 -1 >: 0.000840819690567194 0.027112549883100540 +< 1 1 -2 >: -0.003760259969857169 -0.121251009163933582 +< 2 -4 2 >: 0.001989742549038661 0.064160003292676404 +< 2 -3 1 >: 0.003517401123101609 0.113419933523006736 +< 2 -2 0 >: -0.001228095763515109 -0.039600413766555265 +< 2 -1 -1 >: -0.002393014791339294 -0.077163669724976694 +< 2 0 -2 >: 0.003567295829731425 0.115028807265593586 +< 3 -4 1 >: -0.003722467453194459 -0.120032375127741550 +< 3 -3 0 >: -0.001074583793075720 -0.034650362045735836 +< 3 -2 -1 >: 0.003517401123101609 0.113419933523006736 +< 3 -1 -2 >: -0.002984613823557992 -0.096240004939014620 +< 4 -4 0 >: 0.004298335172302881 0.138601448182943371 +< 4 -3 -1 >: -0.003722467453194459 -0.120032375127741550 +< 4 -2 -2 >: 0.001989742549038661 0.064160003292676404 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 4 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.014680923368191412 -0.058637077745640601 +< 1 -1 0 >: 0.029361846736382816 0.117274155491281173 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 4 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.021502947095046354 0.082736453508225102 +< 1 -1 0 >: 0.043005894190092715 -0.165472907016450232 +< 2 -2 0 >: -0.043005894190092729 0.165472907016450260 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 4 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.020176428560983086 0.043726297438351325 +< 0 1 -1 >: 0.023297732921937667 0.050490779193395542 +< 1 -2 1 >: -0.013450952373988719 -0.029150864958900874 +< 1 -1 0 >: -0.038045038548258865 -0.082451097159568484 +< 1 0 -1 >: -0.032947969870750403 -0.071404744710085261 +< 2 -2 0 >: 0.030077243870350958 0.065183315651018980 +< 2 -1 -1 >: 0.042535646200253359 0.092183129034117475 +< 3 -2 -1 >: -0.052095314535087429 -0.112900814513364450 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 4 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.002654179181349309 0.065491871130055904 +< 1 -1 0 >: 0.005308358362698618 -0.130983742260111807 +< 2 -2 0 >: -0.005308358362698617 0.130983742260111780 +< 3 -3 0 >: 0.005308358362698617 -0.130983742260111780 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 4 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.000529039402438292 0.014985092581065959 +< 0 1 -1 >: 0.000647938294900369 0.018352915285988685 +< 1 -2 1 >: -0.000458161562114500 -0.012977470853264844 +< 1 -1 0 >: -0.001024480397565514 -0.029018507003922393 +< 1 0 -1 >: -0.000836484741839719 -0.023693511752329897 +< 2 -3 1 >: 0.000264519701219146 0.007492546290532981 +< 2 -2 0 >: 0.000916323124229000 0.025954941706529698 +< 2 -1 -1 >: 0.001024480397565514 0.029018507003922396 +< 3 -3 0 >: -0.000699853346302969 -0.019823414171389764 +< 3 -2 -1 >: -0.001212181553643839 -0.034335160524327980 +< 4 -3 -1 >: 0.001399706692605938 0.039646828342779543 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 4 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.004087506620450706 -0.024883374261687737 +< 1 -1 0 >: -0.008175013240901408 0.049766748523375461 +< 2 -2 0 >: 0.008175013240901408 -0.049766748523375461 +< 3 -3 0 >: -0.008175013240901408 0.049766748523375461 +< 4 -4 0 >: 0.008175013240901410 -0.049766748523375468 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 2 4 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: 0.001167370367493290 0.009436401675653811 +< 0 1 -1 >: -0.000639395083239171 -0.005168530059435140 +< 0 2 -2 >: -0.002712723595294528 -0.021928215922758586 +< 1 -3 2 >: 0.002269627395218733 0.018346461715780141 +< 1 -2 1 >: 0.001819750308973858 0.014709894428574443 +< 1 -1 0 >: -0.001984529624738593 -0.016041882848611477 +< 1 0 -1 >: -0.000639395083239171 -0.005168530059435140 +< 1 1 -2 >: 0.002859461741203844 0.023114369113296007 +< 2 -4 2 >: -0.001513084930145822 -0.012230974477186761 +< 2 -3 1 >: -0.002674781536543210 -0.021621512483345859 +< 2 -2 0 >: 0.000933896293994632 0.007549121340523051 +< 2 -1 -1 >: 0.001819750308973858 0.014709894428574443 +< 2 0 -2 >: -0.002712723595294528 -0.021928215922758586 +< 3 -4 1 >: 0.002830722702848224 0.022882058000004694 +< 3 -3 0 >: 0.000817159257245303 0.006605481172957665 +< 3 -2 -1 >: -0.002674781536543210 -0.021621512483345859 +< 3 -1 -2 >: 0.002269627395218733 0.018346461715780141 +< 4 -4 0 >: -0.003268637028981213 -0.026421924691830669 +< 4 -3 -1 >: 0.002830722702848224 0.022882058000004694 +< 4 -2 -2 >: -0.001513084930145822 -0.012230974477186761 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 3 ) +l=( 0 0 ) +num_ms=1 +< 0 0 >: -0.245281708527948977 0.559268363567744231 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 3 ) +l=( 1 1 ) +num_ms=2 +< 0 0 >: -0.145119885809440269 -0.061365845190963948 +< 1 -1 >: 0.290239771618880482 0.122731690381927869 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 3 ) +l=( 2 2 ) +num_ms=3 +< 0 0 >: -0.090566246377035614 -0.084976941526146571 +< 1 -1 >: 0.181132492754071256 0.169953883052293142 +< 2 -2 >: -0.181132492754071284 -0.169953883052293198 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 3 ) +l=( 3 3 ) +num_ms=4 +< 0 0 >: -0.051110005163533430 -0.022849868411288696 +< 1 -1 >: 0.102220010327066860 0.045699736822577393 +< 2 -2 >: -0.102220010327066846 -0.045699736822577386 +< 3 -3 >: 0.102220010327066846 0.045699736822577386 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 3 ) +l=( 4 4 ) +num_ms=5 +< 0 0 >: 0.008081311756303928 0.040428258540914440 +< 1 -1 >: -0.016162623512607849 -0.080856517081828852 +< 2 -2 >: 0.016162623512607849 0.080856517081828852 +< 3 -3 >: -0.016162623512607849 -0.080856517081828852 +< 4 -4 >: 0.016162623512607853 0.080856517081828866 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 3 ) +l=( 5 5 ) +num_ms=6 +< 0 0 >: 0.000042027964679000 0.000652235133231223 +< 1 -1 >: -0.000084055929358001 -0.001304470266462445 +< 2 -2 >: 0.000084055929358001 0.001304470266462445 +< 3 -3 >: -0.000084055929358001 -0.001304470266462446 +< 4 -4 >: 0.000084055929358001 0.001304470266462445 +< 5 -5 >: -0.000084055929358001 -0.001304470266462444 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 3 ) +l=( 6 6 ) +num_ms=7 +< 0 0 >: -0.011536460262933116 0.013132408814001066 +< 1 -1 >: 0.023072920525866240 -0.026264817628002136 +< 2 -2 >: -0.023072920525866229 0.026264817628002125 +< 3 -3 >: 0.023072920525866240 -0.026264817628002136 +< 4 -4 >: -0.023072920525866226 0.026264817628002122 +< 5 -5 >: 0.023072920525866229 -0.026264817628002125 +< 6 -6 >: -0.023072920525866215 0.026264817628002111 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 1 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: 0.005191241746347684 -0.155144029183842513 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 1 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.049017226878351014 -0.126224630147017125 +< 1 -1 0 >: 0.098034453756702014 0.252449260294034195 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 1 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: 0.006085618806556616 -0.014309749310589969 +< 0 1 -1 >: 0.006085618806556615 -0.014309749310589965 +< 1 -1 0 >: -0.010540600968452734 0.024785212849515542 +< 1 0 -1 >: -0.010540600968452734 0.024785212849515542 +< 2 -1 -1 >: 0.014906660845148835 -0.035051584158088782 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 1 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.007027679783514151 0.021483606466834285 +< 1 -1 0 >: -0.014055359567028304 -0.042967212933668578 +< 2 -2 0 >: 0.014055359567028308 0.042967212933668592 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 1 ) +l=( 2 2 2 ) +num_ms=10 +< 0 0 0 >: -0.032375079188961889 -0.054437665386157477 +< 0 1 -1 >: 0.032375079188961889 0.054437665386157477 +< 0 2 -2 >: 0.064750158377923819 0.108875330772315024 +< 1 -2 1 >: -0.079302424395155294 -0.133344502984455632 +< 1 -1 0 >: 0.032375079188961889 0.054437665386157477 +< 1 0 -1 >: 0.032375079188961889 0.054437665386157477 +< 1 1 -2 >: -0.079302424395155294 -0.133344502984455632 +< 2 -2 0 >: 0.064750158377923778 0.108875330772314954 +< 2 -1 -1 >: -0.079302424395155294 -0.133344502984455632 +< 2 0 -2 >: 0.064750158377923819 0.108875330772315024 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 1 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.016301924233295455 0.035769565686963475 +< 0 1 -1 >: -0.018823840688804019 0.041303136756328712 +< 1 -2 1 >: 0.010867949488863632 -0.023846377124642309 +< 1 -1 0 >: 0.030739203124673396 -0.067447739886265387 +< 1 0 -1 >: 0.026620930798057146 -0.058411456169350749 +< 2 -2 0 >: -0.024301473833133178 0.053322120267796189 +< 2 -1 -1 >: -0.034367473880471823 0.075408865657206656 +< 3 -2 -1 >: 0.042091387377792257 -0.092356621471121184 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 1 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.005810194013240329 0.019740242534463631 +< 1 -1 0 >: 0.011620388026480659 -0.039480485068927262 +< 2 -2 0 >: -0.011620388026480657 0.039480485068927255 +< 3 -3 0 >: 0.011620388026480657 -0.039480485068927255 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 1 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: -0.030395364395211857 0.083940308665567717 +< 0 1 -1 >: -0.040527152526949155 0.111920411554090327 +< 0 2 -2 >: -0.010131788131737287 0.027980102888522575 +< 1 -2 1 >: 0.022655366996190168 -0.062565412076174706 +< 1 -1 0 >: 0.055494089076156355 -0.153253335133592711 +< 1 0 -1 >: 0.055494089076156362 -0.153253335133592739 +< 1 1 -2 >: 0.022655366996190168 -0.062565412076174706 +< 2 -2 0 >: -0.039240246701520459 0.108366472512417947 +< 2 -1 -1 >: -0.064079054533103891 0.176961708587175387 +< 2 0 -2 >: -0.039240246701520473 0.108366472512417988 +< 3 -2 -1 >: 0.059940466932819618 -0.165532521027835638 +< 3 -1 -2 >: 0.059940466932819611 -0.165532521027835638 +< 4 -2 -2 >: -0.084768621271369513 0.234098336251374661 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 1 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.000060364084857908 -0.033485278125448638 +< 0 1 -1 >: -0.000073930603345969 -0.041010922651264187 +< 1 -2 1 >: 0.000052276830963148 0.028999101509425890 +< 1 -1 0 >: 0.000116894547681864 0.064843962261493054 +< 1 0 -1 >: 0.000095443998511335 0.052944873480315562 +< 2 -3 1 >: -0.000030182042428954 -0.016742639062724322 +< 2 -2 0 >: -0.000104553661926296 -0.057998203018851800 +< 2 -1 -1 >: -0.000116894547681864 -0.064843962261493068 +< 3 -3 0 >: 0.000079854178327012 0.044296859250884099 +< 3 -2 -1 >: 0.000138311494059050 0.076724410838258719 +< 4 -3 -1 >: -0.000159708356654024 -0.088593718501768226 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 1 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: 0.000233797391050202 0.009216789555698943 +< 0 1 -1 >: -0.000077932463683401 -0.003072263185232983 +< 0 2 -2 >: -0.000545527245783804 -0.021505842296630866 +< 0 3 -3 >: -0.000233797391050202 -0.009216789555698943 +< 1 -3 2 >: 0.000426853683213507 0.016827478491447757 +< 1 -2 1 >: 0.000440852588360856 0.017379345054944186 +< 1 -1 0 >: -0.000301831133974725 -0.011898824151573490 +< 1 0 -1 >: -0.000301831133974725 -0.011898824151573485 +< 1 1 -2 >: 0.000440852588360855 0.017379345054944182 +< 1 2 -3 >: 0.000426853683213507 0.016827478491447761 +< 2 -3 1 >: -0.000572684311266937 -0.022576431478075691 +< 2 -2 0 >: -0.000134982986658666 -0.005321315931046913 +< 2 -1 -1 >: 0.000492888177815803 0.019430698473640005 +< 2 0 -2 >: -0.000134982986658666 -0.005321315931046914 +< 2 1 -3 >: -0.000572684311266937 -0.022576431478075688 +< 3 -3 0 >: 0.000618569753894552 0.024385333050796903 +< 3 -2 -1 >: -0.000291596578410488 -0.011495356241140623 +< 3 -1 -2 >: -0.000291596578410488 -0.011495356241140621 +< 3 0 -3 >: 0.000618569753894553 0.024385333050796907 +< 4 -3 -1 >: -0.000505060089120207 -0.019910541060759547 +< 4 -2 -2 >: 0.000652029771332198 0.025704397980766888 +< 4 -1 -3 >: -0.000505060089120207 -0.019910541060759547 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 1 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.000558486550436971 0.001763741065189403 +< 1 -1 0 >: -0.001116973100873941 -0.003527482130378805 +< 2 -2 0 >: 0.001116973100873941 0.003527482130378805 +< 3 -3 0 >: -0.001116973100873941 -0.003527482130378805 +< 4 -4 0 >: 0.001116973100873941 0.003527482130378806 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 1 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: -0.000216751494657636 -0.018274738668965874 +< 0 1 -1 >: 0.000118719682996948 0.010009486601504544 +< 0 2 -2 >: 0.000503684957444755 0.042466655112718528 +< 1 -3 2 >: -0.000421413069860543 -0.035530152793420526 +< 1 -2 1 >: -0.000337882141227168 -0.028487498282723286 +< 1 -1 0 >: 0.000368477540917981 0.031067055737241982 +< 1 0 -1 >: 0.000118719682996948 0.010009486601504544 +< 1 1 -2 >: -0.000530930562896803 -0.044763784921675029 +< 2 -4 2 >: 0.000280942046573695 0.023686768528947015 +< 2 -3 1 >: 0.000496640065631717 0.041872686628036337 +< 2 -2 0 >: -0.000173401195726109 -0.014619790935172704 +< 2 -1 -1 >: -0.000337882141227168 -0.028487498282723286 +< 2 0 -2 >: 0.000503684957444755 0.042466655112718528 +< 3 -4 1 >: -0.000525594441908928 -0.044313886217569563 +< 3 -3 0 >: -0.000151726046260345 -0.012792317068276108 +< 3 -2 -1 >: 0.000496640065631717 0.041872686628036337 +< 3 -1 -2 >: -0.000421413069860543 -0.035530152793420526 +< 4 -4 0 >: 0.000606904185041381 0.051169268273104446 +< 4 -3 -1 >: -0.000525594441908928 -0.044313886217569563 +< 4 -2 -2 >: 0.000280942046573695 0.023686768528947015 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 1 ) +l=( 4 4 4 ) +num_ms=31 +< 0 0 0 >: -0.000325122105032178 0.005743213611392538 +< 0 1 -1 >: 0.000325122105032178 -0.005743213611392535 +< 0 2 -2 >: 0.000397371461705995 -0.007019483302813096 +< 0 3 -3 >: -0.000758618245075082 0.013400831759915913 +< 0 4 -4 >: -0.000505745496716721 0.008933887839943946 +< 1 -4 3 >: 0.000799653842999024 -0.014125716967352335 +< 1 -3 2 >: 0.000302240743358929 -0.005339019169442825 +< 1 -2 1 >: -0.000685417579713449 0.012107757400587716 +< 1 -1 0 >: 0.000325122105032178 -0.005743213611392537 +< 1 0 -1 >: 0.000325122105032178 -0.005743213611392535 +< 1 1 -2 >: -0.000685417579713449 0.012107757400587714 +< 1 2 -3 >: 0.000302240743358929 -0.005339019169442825 +< 1 3 -4 >: 0.000799653842999024 -0.014125716967352337 +< 2 -4 2 >: -0.000906722230076788 0.016017057508328471 +< 2 -3 1 >: 0.000302240743358929 -0.005339019169442823 +< 2 -2 0 >: 0.000397371461705995 -0.007019483302813102 +< 2 -1 -1 >: -0.000685417579713449 0.012107757400587716 +< 2 0 -2 >: 0.000397371461705995 -0.007019483302813096 +< 2 1 -3 >: 0.000302240743358929 -0.005339019169442825 +< 2 2 -4 >: -0.000906722230076788 0.016017057508328474 +< 3 -4 1 >: 0.000799653842999024 -0.014125716967352328 +< 3 -3 0 >: -0.000758618245075082 0.013400831759915919 +< 3 -2 -1 >: 0.000302240743358929 -0.005339019169442823 +< 3 -1 -2 >: 0.000302240743358929 -0.005339019169442825 +< 3 0 -3 >: -0.000758618245075082 0.013400831759915913 +< 3 1 -4 >: 0.000799653842999024 -0.014125716967352337 +< 4 -4 0 >: -0.000505745496716721 0.008933887839943944 +< 4 -3 -1 >: 0.000799653842999024 -0.014125716967352328 +< 4 -2 -2 >: -0.000906722230076788 0.016017057508328471 +< 4 -1 -3 >: 0.000799653842999024 -0.014125716967352335 +< 4 0 -4 >: -0.000505745496716721 0.008933887839943946 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 2 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: 0.018778803118206799 0.097831166433084232 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 2 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.080195260248957248 0.231864109412112884 +< 1 -1 0 >: -0.160390520497914441 -0.463728218824225658 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 2 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: -0.003623467502519982 0.019712479171376876 +< 0 1 -1 >: -0.003623467502519981 0.019712479171376873 +< 1 -1 0 >: 0.006276029813939318 -0.034143015467967990 +< 1 0 -1 >: 0.006276029813939318 -0.034143015467967990 +< 2 -1 -1 >: -0.008875646480730874 0.048285515535114697 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 2 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.033924763634886182 0.146941163170304895 +< 1 -1 0 >: -0.067849527269772378 -0.293882326340609790 +< 2 -2 0 >: 0.067849527269772392 0.293882326340609901 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 2 ) +l=( 2 2 2 ) +num_ms=10 +< 0 0 0 >: 0.039246049473245823 0.031493586671176986 +< 0 1 -1 >: -0.039246049473245823 -0.031493586671176986 +< 0 2 -2 >: -0.078492098946491701 -0.062987173342354014 +< 1 -2 1 >: 0.096132795629476825 0.077143217514501067 +< 1 -1 0 >: -0.039246049473245823 -0.031493586671176986 +< 1 0 -1 >: -0.039246049473245823 -0.031493586671176986 +< 1 1 -2 >: 0.096132795629476825 0.077143217514501067 +< 2 -2 0 >: -0.078492098946491645 -0.062987173342353972 +< 2 -1 -1 >: 0.096132795629476825 0.077143217514501067 +< 2 0 -2 >: -0.078492098946491701 -0.062987173342354014 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 2 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.000626888692694647 0.032468049842558626 +< 0 1 -1 >: 0.000723868710958374 0.037490874633326801 +< 1 -2 1 >: -0.000417925795129765 -0.021645366561705744 +< 1 -1 0 >: -0.001182072655076146 -0.061222341908202721 +< 1 0 -1 >: -0.001023704948414863 -0.053020103371680199 +< 2 -2 0 >: 0.000934510487460805 0.048400511029874950 +< 2 -1 -1 >: 0.001321597405546962 0.068448659124237726 +< 3 -2 -1 >: -0.001618619644488072 -0.083832144216041252 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 2 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.012528122968272454 -0.115052983924417720 +< 1 -1 0 >: -0.025056245936544909 0.230105967848835441 +< 2 -2 0 >: 0.025056245936544905 -0.230105967848835413 +< 3 -3 0 >: -0.025056245936544905 0.230105967848835413 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 2 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: 0.039041347200888643 -0.011178525647991046 +< 0 1 -1 >: 0.052055129601184878 -0.014904700863988067 +< 0 2 -2 >: 0.013013782400296216 -0.003726175215997016 +< 1 -2 1 >: -0.029099702091452719 0.008331981079044289 +< 1 -1 0 >: -0.071279421791059630 0.020409102190182504 +< 1 0 -1 >: -0.071279421791059644 0.020409102190182507 +< 1 1 -2 >: -0.029099702091452719 0.008331981079044289 +< 2 -2 0 >: 0.050402162507514413 -0.014431414556607262 +< 2 -1 -1 >: 0.082306386717498320 -0.023566401286840899 +< 2 0 -2 >: 0.050402162507514434 -0.014431414556607267 +< 3 -2 -1 >: -0.076990574960050073 0.022044349863646801 +< 3 -1 -2 >: -0.076990574960050059 0.022044349863646798 +< 4 -2 -2 >: 0.108881115283405189 -0.031175418550866783 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 2 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.000437096148983159 0.014621722902882639 +< 0 1 -1 >: -0.000535331266772138 0.017907880136214450 +< 1 -2 1 >: 0.000378536368915764 -0.012662783480993112 +< 1 -1 0 >: 0.000846433052851586 -0.028314844647862016 +< 1 0 -1 >: 0.000691109693637537 -0.023118973844479050 +< 2 -3 1 >: -0.000218548074491580 0.007310861451441321 +< 2 -2 0 >: -0.000757072737831527 0.025325566961986231 +< 2 -1 -1 >: -0.000846433052851586 0.028314844647862020 +< 3 -3 0 >: 0.000578223854616738 -0.019342721270162445 +< 3 -2 -1 >: 0.001001513094344511 -0.033502575996564574 +< 4 -3 -1 >: -0.001156447709233477 0.038685442540324903 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 2 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: -0.000448111692132453 0.025490836760937236 +< 0 1 -1 >: 0.000149370564044151 -0.008496945586979086 +< 0 2 -2 >: 0.001045593948309058 -0.059478619108853555 +< 0 3 -3 >: 0.000448111692132453 -0.025490836760937236 +< 1 -3 2 >: -0.000818136273542517 0.046539687678824153 +< 1 -2 1 >: -0.000844967509962230 0.048065982751408137 +< 1 -1 0 >: 0.000578509706956606 -0.032908528752000586 +< 1 0 -1 >: 0.000578509706956606 -0.032908528752000572 +< 1 1 -2 >: -0.000844967509962230 0.048065982751408130 +< 1 2 -3 >: -0.000818136273542517 0.046539687678824160 +< 2 -3 1 >: 0.001097644993499658 -0.062439543180876148 +< 2 -2 0 >: 0.000258717406079691 -0.014717141465795915 +< 2 -1 -1 >: -0.000944702395527139 0.053739402418740478 +< 2 0 -2 >: 0.000258717406079691 -0.014717141465795919 +< 2 1 -3 >: 0.001097644993499658 -0.062439543180876141 +< 3 -3 0 >: -0.001185592096962811 0.067442414780383153 +< 3 -2 -1 >: 0.000558893474322388 -0.031792659220536520 +< 3 -1 -2 >: 0.000558893474322388 -0.031792659220536514 +< 3 0 -3 >: -0.001185592096962811 0.067442414780383167 +< 4 -3 -1 >: 0.000968031893545068 -0.055066501077692384 +< 4 -2 -2 >: -0.001249723800765893 0.071090547202605103 +< 4 -1 -3 >: 0.000968031893545068 -0.055066501077692384 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 2 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.002688524825348421 -0.031280983902182924 +< 1 -1 0 >: 0.005377049650696841 0.062561967804365820 +< 2 -2 0 >: -0.005377049650696841 -0.062561967804365820 +< 3 -3 0 >: 0.005377049650696841 0.062561967804365820 +< 4 -4 0 >: -0.005377049650696842 -0.062561967804365834 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 2 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: 0.000415328282348928 -0.007188021197386673 +< 0 1 -1 >: -0.000227484669012383 0.003937041353633975 +< 0 2 -2 >: -0.000965135712447799 0.016703451833798691 +< 1 -3 2 >: 0.000807490470785560 -0.013975110454476670 +< 1 -2 1 >: 0.000647432718163791 -0.011205016127780219 +< 1 -1 0 >: -0.000706058079993178 0.012219636035557343 +< 1 0 -1 >: -0.000227484669012383 0.003937041353633975 +< 1 1 -2 >: 0.001017342367501456 -0.017606984193906716 +< 2 -4 2 >: -0.000538326980523707 0.009316740302984447 +< 2 -3 1 >: -0.000951636646059978 0.016469825616985775 +< 2 -2 0 >: 0.000332262625879143 -0.005750416957909340 +< 2 -1 -1 >: 0.000647432718163791 -0.011205016127780219 +< 2 0 -2 >: -0.000965135712447799 0.016703451833798691 +< 3 -4 1 >: 0.001007117561588119 -0.017430025087658122 +< 3 -3 0 >: 0.000290729797644250 -0.005031614838170669 +< 3 -2 -1 >: -0.000951636646059978 0.016469825616985775 +< 3 -1 -2 >: 0.000807490470785560 -0.013975110454476670 +< 4 -4 0 >: -0.001162919190577000 0.020126459352682684 +< 4 -3 -1 >: 0.001007117561588119 -0.017430025087658122 +< 4 -2 -2 >: -0.000538326980523707 0.009316740302984447 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 2 ) +l=( 4 4 4 ) +num_ms=31 +< 0 0 0 >: 0.000303706996230653 -0.002598029442864748 +< 0 1 -1 >: -0.000303706996230653 0.002598029442864747 +< 0 2 -2 >: -0.000371197439837464 0.003175369319056911 +< 0 3 -3 >: 0.000708649657871523 -0.006062068700017741 +< 0 4 -4 >: 0.000472433105247682 -0.004041379133345162 +< 1 -4 3 >: -0.000746982327324361 0.006389981474824025 +< 1 -3 2 >: -0.000282332781694358 0.002415185980670587 +< 1 -2 1 >: 0.000640270566278024 -0.005477126978420593 +< 1 -1 0 >: -0.000303706996230653 0.002598029442864747 +< 1 0 -1 >: -0.000303706996230653 0.002598029442864747 +< 1 1 -2 >: 0.000640270566278024 -0.005477126978420592 +< 1 2 -3 >: -0.000282332781694358 0.002415185980670587 +< 1 3 -4 >: -0.000746982327324361 0.006389981474824026 +< 2 -4 2 >: 0.000846998345083074 -0.007245557942011760 +< 2 -3 1 >: -0.000282332781694358 0.002415185980670586 +< 2 -2 0 >: -0.000371197439837465 0.003175369319056914 +< 2 -1 -1 >: 0.000640270566278024 -0.005477126978420593 +< 2 0 -2 >: -0.000371197439837464 0.003175369319056911 +< 2 1 -3 >: -0.000282332781694358 0.002415185980670587 +< 2 2 -4 >: 0.000846998345083074 -0.007245557942011761 +< 3 -4 1 >: -0.000746982327324361 0.006389981474824022 +< 3 -3 0 >: 0.000708649657871523 -0.006062068700017744 +< 3 -2 -1 >: -0.000282332781694358 0.002415185980670586 +< 3 -1 -2 >: -0.000282332781694358 0.002415185980670587 +< 3 0 -3 >: 0.000708649657871523 -0.006062068700017741 +< 3 1 -4 >: -0.000746982327324361 0.006389981474824026 +< 4 -4 0 >: 0.000472433105247682 -0.004041379133345162 +< 4 -3 -1 >: -0.000746982327324361 0.006389981474824022 +< 4 -2 -2 >: 0.000846998345083074 -0.007245557942011760 +< 4 -1 -3 >: -0.000746982327324361 0.006389981474824025 +< 4 0 -4 >: 0.000472433105247682 -0.004041379133345162 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 3 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: 0.002178592250819812 -0.198859745376887886 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 3 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.144434674241241234 0.026404400773172472 +< 1 -1 0 >: 0.288869348482482413 -0.052808801546344930 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 3 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.066933773019674625 -0.060517553976457361 +< 1 -1 0 >: 0.133867546039349278 0.121035107952914736 +< 2 -2 0 >: -0.133867546039349306 -0.121035107952914764 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 3 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.008216152462939682 0.080644103798288486 +< 0 1 -1 >: 0.009487195672362459 0.093119790072995909 +< 1 -2 1 >: -0.005477434975293119 -0.053762735865525636 +< 1 -1 0 >: -0.015492525658152539 -0.152063980422617595 +< 1 0 -1 >: -0.013416920788742326 -0.131691270046566333 +< 2 -2 0 >: 0.012247916947090298 0.120217132051681344 +< 2 -1 -1 >: 0.017321170257394370 0.170012698577085036 +< 3 -2 -1 >: -0.021214014439244287 -0.208222180653728994 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 3 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.014229741031922949 0.121632073985388084 +< 1 -1 0 >: 0.028459482063845899 -0.243264147970776168 +< 2 -2 0 >: -0.028459482063845895 0.243264147970776112 +< 3 -3 0 >: 0.028459482063845895 -0.243264147970776112 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 3 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.000098084456858408 0.018122032281549901 +< 0 1 -1 >: -0.000120128435500565 0.022194866096021060 +< 1 -2 1 >: 0.000084943631355780 -0.015694140324023886 +< 1 -1 0 >: 0.000189939733967207 -0.035093164612937988 +< 1 0 -1 >: 0.000155085143366546 -0.028653448920397725 +< 2 -3 1 >: -0.000049042228429204 0.009061016140774954 +< 2 -2 0 >: -0.000169887262711560 0.031388280648047787 +< 2 -1 -1 >: -0.000189939733967207 0.035093164612937995 +< 3 -3 0 >: 0.000129753540164096 -0.023973195334032745 +< 3 -2 -1 >: 0.000224739724026143 -0.041522792338317870 +< 4 -3 -1 >: -0.000259507080328191 0.047946390668065504 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 3 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.003056338219503456 0.047063152839364790 +< 1 -1 0 >: -0.006112676439006910 -0.094126305678729552 +< 2 -2 0 >: 0.006112676439006910 0.094126305678729552 +< 3 -3 0 >: -0.006112676439006910 -0.094126305678729552 +< 4 -4 0 >: 0.006112676439006912 0.094126305678729566 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 3 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: -0.000321265665724485 0.015693481158689460 +< 0 1 -1 >: 0.000175964452069215 -0.008595673636396527 +< 0 2 -2 >: 0.000746553943835503 -0.036468354702974493 +< 1 -3 2 >: -0.000624611842458531 0.030511614613444728 +< 1 -2 1 >: -0.000500803610186023 0.024463716043027536 +< 1 -1 0 >: 0.000546151631731625 -0.026678917969772075 +< 1 0 -1 >: 0.000175964452069215 -0.008595673636396527 +< 1 1 -2 >: -0.000786936952900536 0.038441021126770898 +< 2 -4 2 >: 0.000416407894972354 -0.020341076408963151 +< 2 -3 1 >: 0.000736112115686417 -0.035958282663528865 +< 2 -2 0 >: -0.000257012532579588 0.012554784926951570 +< 2 -1 -1 >: -0.000500803610186023 0.024463716043027536 +< 2 0 -2 >: 0.000746553943835503 -0.036468354702974493 +< 3 -4 1 >: -0.000779027838067147 0.038054669400265070 +< 3 -3 0 >: -0.000224885966007140 0.010985436811082617 +< 3 -2 -1 >: 0.000736112115686417 -0.035958282663528865 +< 3 -1 -2 >: -0.000624611842458531 0.030511614613444728 +< 4 -4 0 >: 0.000899543864028559 -0.043941747244330483 +< 4 -3 -1 >: -0.000779027838067147 0.038054669400265070 +< 4 -2 -2 >: 0.000416407894972354 -0.020341076408963151 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 4 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.105451860684968465 0.081293634195520742 +< 1 -1 0 >: -0.210903721369936875 -0.162587268391041456 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 4 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.030457193645041694 -0.051104929393587219 +< 1 -1 0 >: -0.060914387290083395 0.102209858787174451 +< 2 -2 0 >: 0.060914387290083409 -0.102209858787174479 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 4 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.007340629660088890 -0.092579558798564845 +< 0 1 -1 >: -0.008476229020547340 -0.106901666387616348 +< 1 -2 1 >: 0.004893753106725926 0.061719705865709878 +< 1 -1 0 >: 0.013841624028874549 0.174569690201930389 +< 1 0 -1 >: 0.011987198038638465 0.151181786445651084 +< 2 -2 0 >: -0.010942764611739954 -0.138009457867019819 +< 2 -1 -1 >: -0.015475406123778998 -0.195174847051297645 +< 3 -2 -1 >: 0.018953424282800318 0.239039392950714580 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 4 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.006013331113252285 -0.048220230959381494 +< 1 -1 0 >: -0.012026662226504571 0.096440461918762987 +< 2 -2 0 >: 0.012026662226504569 -0.096440461918762974 +< 3 -3 0 >: -0.012026662226504569 0.096440461918762974 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 4 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.000113806136745823 -0.008979004277503451 +< 0 1 -1 >: 0.000139383482312336 -0.010996989439075493 +< 1 -2 1 >: -0.000098559005528448 0.007776045805007128 +< 1 -1 0 >: -0.000220384636156388 0.017387767016148015 +< 1 0 -1 >: -0.000179943301910691 0.014197052318652740 +< 2 -3 1 >: 0.000056903068372911 -0.004489502138751727 +< 2 -2 0 >: 0.000197118011056896 -0.015552091610014264 +< 2 -1 -1 >: 0.000220384636156388 -0.017387767016148019 +< 3 -3 0 >: -0.000150551367751228 0.011878106169629662 +< 3 -2 -1 >: -0.000260762618094114 0.020573483383495926 +< 4 -3 -1 >: 0.000301102735502457 -0.023756212339259331 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 4 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.000810472149903069 -0.033694185263296240 +< 1 -1 0 >: 0.001620944299806138 0.067388370526592467 +< 2 -2 0 >: -0.001620944299806138 -0.067388370526592467 +< 3 -3 0 >: 0.001620944299806138 0.067388370526592467 +< 4 -4 0 >: -0.001620944299806138 -0.067388370526592467 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 3 4 ) +l=( 4 4 2 ) +num_ms=20 +< 0 0 0 >: -0.000093237885069566 0.004741555114419998 +< 0 1 -1 >: 0.000051068492866675 -0.002597056693821822 +< 0 2 -2 >: 0.000216665265666018 -0.011018378395963953 +< 1 -3 2 >: -0.000181275166921143 0.009218636761129689 +< 1 -2 1 >: -0.000145343478717680 0.007391352928557148 +< 1 -1 0 >: 0.000158504404618262 -0.008060643694513994 +< 1 0 -1 >: 0.000051068492866675 -0.002597056693821822 +< 1 1 -2 >: -0.000228385243116698 0.011614390617612904 +< 2 -4 2 >: 0.000120850111280762 -0.006145757840753126 +< 2 -3 1 >: 0.000213634832984439 -0.010864267611817319 +< 2 -2 0 >: -0.000074590308055653 0.003793244091535999 +< 2 -1 -1 >: -0.000145343478717680 0.007391352928557148 +< 2 0 -2 >: 0.000216665265666018 -0.011018378395963953 +< 3 -4 1 >: -0.000226089855783058 0.011497660111088900 +< 3 -3 0 >: -0.000065266519548696 0.003319088580093997 +< 3 -2 -1 >: 0.000213634832984439 -0.010864267611817319 +< 3 -1 -2 >: -0.000181275166921143 0.009218636761129689 +< 4 -4 0 >: 0.000261066078194784 -0.013276354320375992 +< 4 -3 -1 >: -0.000226089855783058 0.011497660111088900 +< 4 -2 -2 >: 0.000120850111280762 -0.006145757840753126 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 4 ) +l=( 0 0 ) +num_ms=1 +< 0 0 >: 0.054250151605964823 0.208595392086789289 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 4 ) +l=( 1 1 ) +num_ms=2 +< 0 0 >: 0.103192119057310613 -0.093246219760853732 +< 1 -1 >: -0.206384238114621199 0.186492439521707437 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 4 ) +l=( 2 2 ) +num_ms=3 +< 0 0 >: 0.044390859739626594 0.169408665353573712 +< 1 -1 >: -0.088781719479253202 -0.338817330707147479 +< 2 -2 >: 0.088781719479253215 0.338817330707147590 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 4 ) +l=( 3 3 ) +num_ms=4 +< 0 0 >: 0.011637781623393110 -0.226875186972397141 +< 1 -1 >: -0.023275563246786219 0.453750373944794283 +< 2 -2 >: 0.023275563246786216 -0.453750373944794172 +< 3 -3 >: -0.023275563246786216 0.453750373944794172 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 4 ) +l=( 4 4 ) +num_ms=5 +< 0 0 >: -0.002673631050075407 -0.052584537499551505 +< 1 -1 >: 0.005347262100150813 0.105169074999102968 +< 2 -2 >: -0.005347262100150813 -0.105169074999102968 +< 3 -3 >: 0.005347262100150813 0.105169074999102968 +< 4 -4 >: -0.005347262100150814 -0.105169074999102996 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 4 ) +l=( 5 5 ) +num_ms=6 +< 0 0 >: 0.000756246807439673 -0.017237829886004301 +< 1 -1 >: -0.001512493614879346 0.034475659772008602 +< 2 -2 >: 0.001512493614879346 -0.034475659772008609 +< 3 -3 >: -0.001512493614879346 0.034475659772008616 +< 4 -4 >: 0.001512493614879346 -0.034475659772008609 +< 5 -5 >: -0.001512493614879344 0.034475659772008567 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 4 4 ) +l=( 6 6 ) +num_ms=7 +< 0 0 >: 0.010487613030069814 -0.003629149816459060 +< 1 -1 >: -0.020975226060139636 0.007258299632918121 +< 2 -2 >: 0.020975226060139626 -0.007258299632918118 +< 3 -3 >: -0.020975226060139636 0.007258299632918121 +< 4 -4 >: 0.020975226060139622 -0.007258299632918117 +< 5 -5 >: -0.020975226060139626 0.007258299632918118 +< 6 -6 >: 0.020975226060139615 -0.007258299632918114 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 1 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: 0.001213408047735315 0.035697451364269411 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 1 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.018657268269850258 0.028650874808118284 +< 1 -1 0 >: -0.037314536539700509 -0.057301749616236554 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 1 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: -0.018430445854120365 0.003240291627703445 +< 0 1 -1 >: -0.018430445854120361 0.003240291627703444 +< 1 -1 0 >: 0.031922468625483646 -0.005612349730522423 +< 1 0 -1 >: 0.031922468625483646 -0.005612349730522423 +< 2 -1 -1 >: -0.045145188074588581 0.007937061105685796 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 1 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.002825899779315056 0.010538572521290751 +< 1 -1 0 >: 0.005651799558630113 -0.021077145042581506 +< 2 -2 0 >: -0.005651799558630114 0.021077145042581513 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 1 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.000633670587875195 0.057629644903303641 +< 0 1 -1 >: 0.000731699768974584 0.066544981996449773 +< 1 -2 1 >: -0.000422447058583463 -0.038419763268869082 +< 1 -1 0 >: -0.001194860719266710 -0.108667500555996693 +< 1 0 -1 >: -0.001034779736869117 -0.094108816047252714 +< 2 -2 0 >: 0.000944620339887460 0.085909202348640815 +< 2 -1 -1 >: 0.001335894895962328 0.121493959094102377 +< 3 -2 -1 >: -0.001636130422548062 -0.148799103305561398 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 1 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.001618336463487219 -0.001267267722437297 +< 1 -1 0 >: 0.003236672926974437 0.002534535444874594 +< 2 -2 0 >: -0.003236672926974437 -0.002534535444874593 +< 3 -3 0 >: 0.003236672926974437 0.002534535444874593 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 1 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: -0.000736986042581823 0.070591808985609933 +< 0 1 -1 >: -0.000982648056775764 0.094122411980813281 +< 0 2 -2 >: -0.000245662014193941 0.023530602995203317 +< 1 -2 1 >: 0.000549316963227170 -0.052616027848834769 +< 1 -1 0 >: 0.001345546266961758 -0.128882420521714808 +< 1 0 -1 >: 0.001345546266961758 -0.128882420521714836 +< 1 1 -2 >: 0.000549316963227170 -0.052616027848834769 +< 2 -2 0 >: -0.000951444889768903 0.091133633526640778 +< 2 -1 -1 >: -0.001553702998874934 0.148820600364045208 +< 2 0 -2 >: -0.000951444889768904 0.091133633526640806 +< 3 -2 -1 >: 0.001453356075648306 -0.139208924664065675 +< 3 -1 -2 >: 0.001453356075648306 -0.139208924664065647 +< 4 -2 -2 >: -0.002055355873139172 0.196871149263296047 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 1 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.000196073051354437 0.040098960077170558 +< 0 1 -1 >: -0.000240139464064447 0.049110995702650720 +< 1 -2 1 >: 0.000169804243470474 -0.034726718092167715 +< 1 -1 0 >: 0.000379693831267904 -0.077651302289558827 +< 1 0 -1 >: 0.000310018715029592 -0.063402022824010071 +< 2 -3 1 >: -0.000098036525677219 0.020049480038585282 +< 2 -2 0 >: -0.000339608486940947 0.069453436184335457 +< 2 -1 -1 >: -0.000379693831267904 0.077651302289558841 +< 3 -3 0 >: 0.000259380266342719 -0.053045938098250339 +< 3 -2 -1 >: 0.000449259799786336 -0.091878259921323202 +< 4 -3 -1 >: -0.000518760532685437 0.106091876196500706 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 1 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: 0.001238384706671072 0.007037363188932728 +< 0 1 -1 >: -0.000412794902223691 -0.002345787729644244 +< 0 2 -2 >: -0.002889564315565836 -0.016420514107509696 +< 0 3 -3 >: -0.001238384706671072 -0.007037363188932728 +< 1 -3 2 >: 0.002260970795710549 0.012848408546449815 +< 1 -2 1 >: 0.002335120596812877 0.013269779286845118 +< 1 -1 0 >: -0.001598747781711674 -0.009085196810649860 +< 1 0 -1 >: -0.001598747781711673 -0.009085196810649857 +< 1 1 -2 >: 0.002335120596812877 0.013269779286845116 +< 1 2 -3 >: 0.002260970795710549 0.012848408546449816 +< 2 -3 1 >: -0.003033410636610348 -0.017237948947530637 +< 2 -2 0 >: -0.000714981743756859 -0.004063023531515472 +< 2 -1 -1 >: 0.002610744195066736 0.014836064265902182 +< 2 0 -2 >: -0.000714981743756859 -0.004063023531515472 +< 2 1 -3 >: -0.003033410636610347 -0.017237948947530633 +< 3 -3 0 >: 0.003276457961277329 0.018619112883556454 +< 3 -2 -1 >: -0.001544537095127900 -0.008777133986427054 +< 3 -1 -2 >: -0.001544537095127900 -0.008777133986427054 +< 3 0 -3 >: 0.003276457961277329 0.018619112883556454 +< 4 -3 -1 >: -0.002675216722936367 -0.015202442009331218 +< 4 -2 -2 >: 0.003453689938476042 0.019626268241274603 +< 4 -1 -3 >: -0.002675216722936367 -0.015202442009331218 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 1 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.000356821089702680 0.020718344046613824 +< 1 -1 0 >: 0.000713642179405360 -0.041436688093227633 +< 2 -2 0 >: -0.000713642179405360 0.041436688093227633 +< 3 -3 0 >: 0.000713642179405360 -0.041436688093227633 +< 4 -4 0 >: -0.000713642179405360 0.041436688093227640 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 2 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: -0.001741909027330715 0.001028033309054385 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 2 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.026292349867263188 -0.145147277541537695 +< 1 -1 0 >: 0.052584699734526362 0.290294555083075334 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 2 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: 0.007695818301156227 0.021265540175698535 +< 0 1 -1 >: 0.007695818301156226 0.021265540175698535 +< 1 -1 0 >: -0.013329548303420990 -0.036832996034707056 +< 1 0 -1 >: -0.013329548303420990 -0.036832996034707056 +< 2 -1 -1 >: 0.018850827991005240 0.052089722535117143 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 2 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.013713591503660897 -0.063837175218931175 +< 1 -1 0 >: 0.027427183007321797 0.127674350437862377 +< 2 -2 0 >: -0.027427183007321804 -0.127674350437862405 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 2 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.005666625340128594 -0.011330464497213925 +< 0 1 -1 >: 0.006543255331039994 -0.013083293455019908 +< 1 -2 1 >: -0.003777750226752395 0.007553642998142613 +< 1 -1 0 >: -0.010685091211862547 0.021364928746595711 +< 1 0 -1 >: -0.009253560431226816 0.018502571044596301 +< 2 -2 0 >: 0.008447306309033601 -0.016890459221612204 +< 2 -1 -1 >: 0.011946295147755128 -0.023886716505913688 +< 3 -2 -1 >: -0.014631163714343320 0.029255133535002604 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 2 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.003440334564960547 0.020755218162560776 +< 1 -1 0 >: -0.006880669129921094 -0.041510436325121552 +< 2 -2 0 >: 0.006880669129921093 0.041510436325121546 +< 3 -3 0 >: -0.006880669129921093 -0.041510436325121546 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 2 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: -0.011655980059018163 -0.029947069094655394 +< 0 1 -1 >: -0.015541306745357556 -0.039929425459540542 +< 0 2 -2 >: -0.003885326686339389 -0.009982356364885134 +< 1 -2 1 >: 0.008687854585448877 0.022321227407510850 +< 1 -1 0 >: 0.021280810693848823 0.054675617581028582 +< 1 0 -1 >: 0.021280810693848826 0.054675617581028589 +< 1 1 -2 >: 0.008687854585448877 0.022321227407510850 +< 2 -2 0 >: -0.015047805550767695 -0.038661499957107714 +< 2 -1 -1 >: -0.024572963565334172 -0.063133965057031782 +< 2 0 -2 >: -0.015047805550767700 -0.038661499957107728 +< 3 -2 -1 >: 0.022985902659789888 0.059056416677992732 +< 3 -1 -2 >: 0.022985902659789885 0.059056416677992725 +< 4 -2 -2 >: -0.032506975284862648 -0.083518385411173943 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 2 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.001114057647065003 -0.005461004065584623 +< 0 1 -1 >: 0.001364436389677444 -0.006688336721973384 +< 1 -2 1 >: -0.000964802223638611 0.004729368250966384 +< 1 -1 0 >: -0.002157363356898890 0.010575188899790122 +< 1 0 -1 >: -0.001761479804726704 0.008634605579343473 +< 2 -3 1 >: 0.000557028823532502 -0.002730502032792312 +< 2 -2 0 >: 0.001929604447277223 -0.009458736501932772 +< 2 -1 -1 >: 0.002157363356898890 -0.010575188899790124 +< 3 -3 0 >: -0.001473759740161883 0.007224229333124788 +< 3 -2 -1 >: -0.002552626748109889 0.012512732250501564 +< 4 -3 -1 >: 0.002947519480323767 -0.014448458666249581 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 2 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: -0.000040013265781497 0.005034179208135279 +< 0 1 -1 >: 0.000013337755260499 -0.001678059736045094 +< 0 2 -2 >: 0.000093364286823494 -0.011746418152315649 +< 0 3 -3 >: 0.000040013265781497 -0.005034179208135279 +< 1 -3 2 >: -0.000073053894226585 0.009191111702730620 +< 1 -2 1 >: -0.000075449737524044 0.009492539348748748 +< 1 -1 0 >: 0.000051656903999703 -0.006499097411643860 +< 1 0 -1 >: 0.000051656903999703 -0.006499097411643858 +< 1 1 -2 >: -0.000075449737524044 0.009492539348748746 +< 1 2 -3 >: -0.000073053894226585 0.009191111702730622 +< 2 -3 1 >: 0.000098012084107035 -0.012331170333659710 +< 2 -2 0 >: 0.000023101669770103 -0.002906484720965719 +< 2 -1 -1 >: -0.000084355370994139 0.010612981631446890 +< 2 0 -2 >: 0.000023101669770103 -0.002906484720965719 +< 2 1 -3 >: 0.000098012084107035 -0.012331170333659708 +< 3 -3 0 >: -0.000105865150401372 0.013319186240058017 +< 3 -2 -1 >: 0.000049905310493429 -0.006278724606821053 +< 3 -1 -2 >: 0.000049905310493429 -0.006278724606821052 +< 3 0 -3 >: -0.000105865150401372 0.013319186240058019 +< 4 -3 -1 >: 0.000086438533342120 -0.010875070025746987 +< 4 -2 -2 >: -0.000111591666701542 0.014039655032852510 +< 4 -1 -3 >: 0.000086438533342120 -0.010875070025746987 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 2 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.000421853567774246 -0.023896840608999721 +< 1 -1 0 >: -0.000843707135548492 0.047793681217999429 +< 2 -2 0 >: 0.000843707135548492 -0.047793681217999429 +< 3 -3 0 >: -0.000843707135548492 0.047793681217999429 +< 4 -4 0 >: 0.000843707135548492 -0.047793681217999436 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 3 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: -0.014109861976344697 0.193509596104425502 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 3 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: 0.049685918092498657 0.008458786461950975 +< 1 -1 0 >: -0.099371836184997300 -0.016917572923901947 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 3 ) +l=( 2 1 1 ) +num_ms=5 +< 0 0 0 >: -0.012106686397669158 0.038685893459240055 +< 0 1 -1 >: -0.012106686397669156 0.038685893459240048 +< 1 -1 0 >: 0.020969395952066008 -0.067005933007600285 +< 1 0 -1 >: 0.020969395952066008 -0.067005933007600285 +< 2 -1 -1 >: -0.029655204150183224 0.094760699218811348 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 3 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: 0.024701085634451905 0.107843322975982550 +< 1 -1 0 >: -0.049402171268903818 -0.215686645951965128 +< 2 -2 0 >: 0.049402171268903824 0.215686645951965184 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 3 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: -0.012234782769779649 -0.029335212186955249 +< 0 1 -1 >: -0.014127510251217744 -0.033873385305746795 +< 1 -2 1 >: 0.008156521846519762 0.019556808124636827 +< 1 -1 0 >: 0.023070127634281387 0.055315006573179483 +< 1 0 -1 >: 0.019979316599837066 0.047904200902876622 +< 2 -2 0 >: -0.018238537308780303 -0.043730352389608131 +< 2 -1 -1 >: -0.025793186819924790 -0.061844057436738500 +< 3 -2 -1 >: 0.031590073274548013 0.075743192171692342 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 3 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: -0.002867619014356497 0.014286109322940568 +< 1 -1 0 >: 0.005735238028712993 -0.028572218645881137 +< 2 -2 0 >: -0.005735238028712992 0.028572218645881130 +< 3 -3 0 >: 0.005735238028712992 -0.028572218645881130 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 3 ) +l=( 4 2 2 ) +num_ms=13 +< 0 0 0 >: 0.014951251518046636 -0.018095272181581044 +< 0 1 -1 >: 0.019935002024062190 -0.024127029575441401 +< 0 2 -2 >: 0.004983750506015547 -0.006031757393860349 +< 1 -2 1 >: -0.011144004914349736 0.013487419556458715 +< 1 -1 0 >: -0.027297125731225006 0.033037295860158862 +< 1 0 -1 >: -0.027297125731225010 0.033037295860158869 +< 1 1 -2 >: -0.011144004914349736 0.013487419556458715 +< 2 -2 0 >: 0.019301982711450991 -0.023360895934784576 +< 2 -1 -1 >: 0.031520005778051641 -0.038148183316320063 +< 2 0 -2 >: 0.019301982711450998 -0.023360895934784586 +< 3 -2 -1 >: -0.029484265612651068 0.035684357974378855 +< 3 -1 -2 >: -0.029484265612651064 0.035684357974378855 +< 4 -2 -2 >: 0.041697048306021799 -0.050465303011943068 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 3 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: -0.000827935056385834 -0.019614086301770382 +< 0 1 -1 >: -0.001014009214153857 -0.024022251605125295 +< 1 -2 1 >: 0.000717012791513834 0.016986297009353522 +< 1 -1 0 >: 0.001603289342561818 0.037982514798915859 +< 1 0 -1 >: 0.001309080266439585 0.031012593468351547 +< 2 -3 1 >: -0.000413967528192917 -0.009807043150885193 +< 2 -2 0 >: -0.001434025583027669 -0.033972594018707059 +< 2 -1 -1 >: -0.001603289342561818 -0.037982514798915866 +< 3 -3 0 >: 0.001095255130454578 0.025946997274121506 +< 3 -2 -1 >: 0.001897037533197809 0.044941517582629625 +< 4 -3 -1 >: -0.002190510260909157 -0.051893994548243033 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 3 ) +l=( 4 3 3 ) +num_ms=22 +< 0 0 0 >: 0.000188613045151763 -0.003056798319884722 +< 0 1 -1 >: -0.000062871015050588 0.001018932773294908 +< 0 2 -2 >: -0.000440097105354114 0.007132529413064352 +< 0 3 -3 >: -0.000188613045151763 0.003056798319884722 +< 1 -3 2 >: 0.000344358731564537 -0.005580924645149182 +< 1 -2 1 >: 0.000355652168658816 -0.005763954188560354 +< 1 -1 0 >: -0.000243498394250082 0.003946309661876115 +< 1 0 -1 >: -0.000243498394250082 0.003946309661876113 +< 1 1 -2 >: 0.000355652168658816 -0.005763954188560353 +< 1 2 -3 >: 0.000344358731564537 -0.005580924645149183 +< 2 -3 1 >: -0.000462005719454344 0.007487596130314481 +< 2 -2 0 >: -0.000108895792391045 0.001764843332843839 +< 2 -1 -1 >: 0.000397631212733167 -0.006444296692407796 +< 2 0 -2 >: -0.000108895792391045 0.001764843332843840 +< 2 1 -3 >: -0.000462005719454344 0.007487596130314480 +< 3 -3 0 >: 0.000499023211494162 -0.008087528162495042 +< 3 -2 -1 >: -0.000235241797878007 0.003812497337824949 +< 3 -1 -2 >: -0.000235241797878007 0.003812497337824948 +< 3 0 -3 >: 0.000499023211494162 -0.008087528162495044 +< 4 -3 -1 >: -0.000407450745988557 0.006603439092833897 +< 4 -2 -2 >: 0.000526016651204489 -0.008525003211413563 +< 4 -1 -3 >: -0.000407450745988557 0.006603439092833897 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 3 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: -0.000151112971668910 0.010079340615102923 +< 1 -1 0 >: 0.000302225943337819 -0.020158681230205838 +< 2 -2 0 >: -0.000302225943337819 0.020158681230205838 +< 3 -3 0 >: 0.000302225943337819 -0.020158681230205838 +< 4 -4 0 >: -0.000302225943337819 0.020158681230205842 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 4 ) +l=( 0 0 0 ) +num_ms=1 +< 0 0 0 >: 0.005541515991558750 -0.060359180371488269 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 4 ) +l=( 1 1 0 ) +num_ms=2 +< 0 0 0 >: -0.039526815180770912 -0.005101713824901174 +< 1 -1 0 >: 0.079053630361541810 0.010203427649802347 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 4 ) +l=( 1 1 2 ) +num_ms=4 +< -1 -1 2 >: -0.004177952841598594 -0.081072442466747066 +< -1 0 1 >: 0.005908517571543944 0.114653747671186163 +< -1 1 0 >: -0.001705642105221264 -0.033097686040779374 +< 0 0 0 >: -0.001705642105221265 -0.033097686040779381 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 4 ) +l=( 2 2 0 ) +num_ms=3 +< 0 0 0 >: -0.009429509908910956 -0.051590743999683941 +< 1 -1 0 >: 0.018859019817821916 0.103181487999367882 +< 2 -2 0 >: -0.018859019817821919 -0.103181487999367910 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 4 ) +l=( 2 2 2 ) +num_ms=5 +< -2 0 2 >: -0.002347060540487584 -0.126608246332323732 +< -2 1 1 >: 0.001916366906538493 0.103375200247597623 +< -1 -1 2 >: 0.000958183453269246 0.051687600123798812 +< -1 0 1 >: -0.001173530270243791 -0.063304123166161852 +< 0 0 0 >: 0.000391176756747930 0.021101374388720614 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 4 ) +l=( 2 2 4 ) +num_ms=9 +< -2 -2 4 >: -0.001504842363776750 -0.051768039787223226 +< -2 -1 3 >: 0.002128168480086666 0.073211063964561091 +< -2 0 2 >: -0.001393213307373752 -0.047927891760836408 +< -2 1 1 >: 0.000804372078050805 0.027671181209810151 +< -2 2 0 >: -0.000179863064572437 -0.006187464220285037 +< -1 -1 2 >: -0.001137553901973678 -0.039132959753797068 +< -1 0 1 >: 0.001970301154566636 0.067780274544124580 +< -1 1 0 >: -0.000719452258289746 -0.024749856881140151 +< 0 0 0 >: -0.000539589193717310 -0.018562392660855107 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 4 ) +l=( 2 3 3 ) +num_ms=12 +< -2 -1 3 >: -0.004223553912545217 0.023819573153742578 +< -2 0 2 >: 0.011946014449070792 -0.067371926807921673 +< -2 1 1 >: -0.006543101586038722 0.036901124055285721 +< -1 -2 3 >: 0.006678025092079245 -0.037662052029413307 +< -1 -1 2 >: -0.005172775993435635 0.029172900058783004 +< -1 0 1 >: 0.003777661462034523 -0.021304873906718983 +< 0 -3 3 >: -0.006678025092079244 0.037662052029413300 +< 0 -1 1 >: 0.004006815055247546 -0.022597231217647975 +< 0 0 0 >: -0.002671210036831698 0.015064820811765321 +< 1 -3 2 >: 0.006678025092079245 -0.037662052029413307 +< 1 -2 1 >: -0.005172775993435635 0.029172900058783004 +< 2 -3 1 >: -0.004223553912545217 0.023819573153742578 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 4 ) +l=( 2 4 4 ) +num_ms=18 +< -2 -2 4 >: 0.000240220309580954 0.004324166557239217 +< -2 -1 3 >: -0.000360330464371431 -0.006486249835858826 +< -2 0 2 >: 0.000861354559662963 0.015505102742217962 +< -2 1 1 >: -0.000453973713584393 -0.008171906670055223 +< -1 -3 4 >: -0.000449411047898350 -0.008089774870267481 +< -1 -2 3 >: 0.000424653524708561 0.007644118739009841 +< -1 -1 2 >: -0.000288907102220368 -0.005200569559457665 +< -1 0 1 >: 0.000203023216714545 0.003654587764005484 +< 0 -4 4 >: 0.000518935178961808 0.009341267398064795 +< 0 -3 3 >: -0.000129733794740452 -0.002335316849516198 +< 0 -2 2 >: -0.000148267193989088 -0.002668933542304228 +< 0 -1 1 >: 0.000315067787226812 0.005671483777396482 +< 0 0 0 >: -0.000185333992486360 -0.003336166927880284 +< 1 -4 3 >: -0.000449411047898350 -0.008089774870267481 +< 1 -3 2 >: 0.000424653524708561 0.007644118739009841 +< 1 -2 1 >: -0.000288907102220368 -0.005200569559457665 +< 2 -4 2 >: 0.000240220309580954 0.004324166557239217 +< 2 -3 1 >: -0.000360330464371431 -0.006486249835858826 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 4 ) +l=( 3 2 1 ) +num_ms=8 +< 0 0 0 >: 0.008760751724334374 0.041747788186835638 +< 0 1 -1 >: 0.010116044732695853 0.048206193495482053 +< 1 -2 1 >: -0.005840501149556247 -0.027831858791223751 +< 1 -1 0 >: -0.016519431873516198 -0.078720384337202992 +< 1 0 -1 >: -0.014306247658551386 -0.068173852631692400 +< 2 -2 0 >: 0.013059757593073438 0.062233928197351449 +< 2 -1 -1 >: 0.018469286309429463 0.088012065296447797 +< 3 -2 -1 >: -0.022620163685736622 -0.107792325592406077 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 4 ) +l=( 3 3 0 ) +num_ms=4 +< 0 0 0 >: 0.000591058405233963 -0.019472467390641453 +< 1 -1 0 >: -0.001182116810467926 0.038944934781282907 +< 2 -2 0 >: 0.001182116810467926 -0.038944934781282900 +< 3 -3 0 >: -0.001182116810467926 0.038944934781282900 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 4 ) +l=( 3 3 4 ) +num_ms=14 +< -3 -1 4 >: 0.000271764969167761 -0.055075168110579449 +< -3 0 3 >: -0.000332842752212108 0.067453029684461763 +< -3 1 2 >: 0.000308152510061585 -0.062449370672429283 +< -3 2 1 >: -0.000229683319978297 0.046547012658544523 +< -3 3 0 >: 0.000062901367717395 -0.012747424408781675 +< -2 -2 4 >: -0.000175423533278218 0.035550868146974654 +< -2 -1 3 >: 0.000156903578105317 -0.031797663134306930 +< -2 0 2 >: 0.000072632243168067 -0.014719457827769010 +< -2 1 1 >: -0.000237215912847353 0.048073547957933012 +< -2 2 0 >: 0.000146769858007255 -0.029743990287157244 +< -1 -1 2 >: -0.000132607726617837 0.026873930288383602 +< -1 0 1 >: 0.000162410633082093 -0.032913708294832901 +< -1 1 0 >: 0.000020967122572465 -0.004249141469593896 +< 0 0 0 >: -0.000062901367717395 0.012747424408781675 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 4 ) +l=( 4 3 1 ) +num_ms=11 +< 0 0 0 >: 0.000112956969057605 0.019211722353957333 +< 0 1 -1 >: 0.000138343468541241 0.023529458423608391 +< 1 -2 1 >: -0.000097823604738379 -0.016637839608980427 +< 1 -1 0 >: -0.000218740229999086 -0.037203340364418754 +< 1 0 -1 >: -0.000178600649905598 -0.030376400206638364 +< 2 -3 1 >: 0.000056478484528803 0.009605861176978668 +< 2 -2 0 >: 0.000195647209476758 0.033275679217960860 +< 2 -1 -1 >: 0.000218740229999086 0.037203340364418760 +< 3 -3 0 >: -0.000149428024489021 -0.025414719802895756 +< 3 -2 -1 >: -0.000258816930489631 -0.044019585958742349 +< 4 -3 -1 >: 0.000298856048978042 0.050829439605791532 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 4 ) +l=( 4 4 0 ) +num_ms=5 +< 0 0 0 >: 0.000040901533397538 0.008179721997529900 +< 1 -1 0 >: -0.000081803066795075 -0.016359443995059793 +< 2 -2 0 >: 0.000081803066795075 0.016359443995059793 +< 3 -3 0 >: -0.000081803066795075 -0.016359443995059793 +< 4 -4 0 >: 0.000081803066795075 0.016359443995059796 +ctilde_basis_func: rank=3 ndens=2 mu0=0 mu=( 0 0 0 ) +n=( 4 4 4 ) +l=( 4 4 4 ) +num_ms=13 +< -4 0 4 >: -0.000089621725821500 -0.004671772164949175 +< -4 1 3 >: 0.000188939187620711 0.009848960500410162 +< -4 2 2 >: -0.000107118450719780 -0.005583835747839332 +< -3 -1 4 >: 0.000094469593810355 0.004924480250205079 +< -3 0 3 >: -0.000134432588732250 -0.007007658247423763 +< -3 1 2 >: 0.000071412300479853 0.003722557165226221 +< -2 -2 4 >: -0.000053559225359890 -0.002791917873919665 +< -2 -1 3 >: 0.000035706150239927 0.001861278582613110 +< -2 0 2 >: 0.000070417070288322 0.003670678129602923 +< -2 1 1 >: -0.000080973937551733 -0.004220983071604355 +< -1 -1 2 >: -0.000040486968775867 -0.002110491535802177 +< -1 0 1 >: 0.000057613966599536 0.003003282106038756 +< 0 0 0 >: -0.000019204655533179 -0.001001094035346252 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 1 ) +l=( 0 0 ) +num_ms=1 +< 0 0 >: -0.036354686618942797 0.112716151876300436 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 1 ) +l=( 1 1 ) +num_ms=2 +< 0 0 >: 0.012575790814374094 0.044298713022054285 +< 1 -1 >: -0.025151581628748185 -0.088597426044108557 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 1 ) +l=( 2 2 ) +num_ms=3 +< 0 0 >: 0.024515135306401561 0.272026568680671377 +< 1 -1 >: -0.049030270612803128 -0.544053137361342865 +< 2 -2 >: 0.049030270612803142 0.544053137361342976 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 1 ) +l=( 3 3 ) +num_ms=4 +< 0 0 >: 0.007582177999163661 -0.070781616545872547 +< 1 -1 >: -0.015164355998327321 0.141563233091745094 +< 2 -2 >: 0.015164355998327319 -0.141563233091745094 +< 3 -3 >: -0.015164355998327319 0.141563233091745094 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 1 ) +l=( 4 4 ) +num_ms=5 +< 0 0 >: -0.009642092538547307 0.027222201050041573 +< 1 -1 >: 0.019284185077094607 -0.054444402100083125 +< 2 -2 >: -0.019284185077094607 0.054444402100083125 +< 3 -3 >: 0.019284185077094607 -0.054444402100083125 +< 4 -4 >: -0.019284185077094611 0.054444402100083139 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 1 ) +l=( 5 5 ) +num_ms=6 +< 0 0 >: 0.000765366179527079 -0.013233978357391383 +< 1 -1 >: -0.001530732359054158 0.026467956714782765 +< 2 -2 >: 0.001530732359054158 -0.026467956714782772 +< 3 -3 >: -0.001530732359054159 0.026467956714782775 +< 4 -4 >: 0.001530732359054158 -0.026467956714782772 +< 5 -5 >: -0.001530732359054157 0.026467956714782741 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 1 ) +l=( 6 6 ) +num_ms=7 +< 0 0 >: 0.011966394369992209 -0.043960679058516534 +< 1 -1 >: -0.023932788739984421 0.087921358117033083 +< 2 -2 >: 0.023932788739984414 -0.087921358117033055 +< 3 -3 >: -0.023932788739984421 0.087921358117033083 +< 4 -4 >: 0.023932788739984407 -0.087921358117033027 +< 5 -5 >: -0.023932788739984414 0.087921358117033055 +< 6 -6 >: 0.023932788739984397 -0.087921358117032999 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 2 ) +l=( 0 0 ) +num_ms=1 +< 0 0 >: 0.022654895781669057 0.005925444934381353 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 2 ) +l=( 1 1 ) +num_ms=2 +< 0 0 >: 0.000930388542384164 -0.019540938019308115 +< 1 -1 >: -0.001860777084768328 0.039081876038616223 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 2 ) +l=( 2 2 ) +num_ms=3 +< 0 0 >: -0.016769561527053545 0.107666259659159783 +< 1 -1 >: 0.033539123054107091 -0.215332519318319593 +< 2 -2 >: -0.033539123054107105 0.215332519318319648 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 2 ) +l=( 3 3 ) +num_ms=4 +< 0 0 >: -0.011757247699702073 0.050365927147369705 +< 1 -1 >: 0.023514495399404145 -0.100731854294739409 +< 2 -2 >: -0.023514495399404142 0.100731854294739395 +< 3 -3 >: 0.023514495399404142 -0.100731854294739395 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 2 ) +l=( 4 4 ) +num_ms=5 +< 0 0 >: 0.006244736507749126 -0.007390267531366143 +< 1 -1 >: -0.012489473015498249 0.014780535062732280 +< 2 -2 >: 0.012489473015498249 -0.014780535062732280 +< 3 -3 >: -0.012489473015498249 0.014780535062732280 +< 4 -4 >: 0.012489473015498251 -0.014780535062732284 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 2 ) +l=( 5 5 ) +num_ms=6 +< 0 0 >: -0.000345498946750941 0.002458373216535279 +< 1 -1 >: 0.000690997893501882 -0.004916746433070557 +< 2 -2 >: -0.000690997893501882 0.004916746433070558 +< 3 -3 >: 0.000690997893501882 -0.004916746433070559 +< 4 -4 >: -0.000690997893501882 0.004916746433070558 +< 5 -5 >: 0.000690997893501881 -0.004916746433070553 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 2 ) +l=( 6 6 ) +num_ms=7 +< 0 0 >: -0.019269466067705292 0.071391366733516939 +< 1 -1 >: 0.038538932135410590 -0.142782733467033907 +< 2 -2 >: -0.038538932135410577 0.142782733467033851 +< 3 -3 >: 0.038538932135410590 -0.142782733467033907 +< 4 -4 >: -0.038538932135410570 0.142782733467033823 +< 5 -5 >: 0.038538932135410577 -0.142782733467033851 +< 6 -6 >: -0.038538932135410556 0.142782733467033768 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 3 ) +l=( 0 0 ) +num_ms=1 +< 0 0 >: 0.009916635737881018 -0.678214416426462074 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 3 ) +l=( 1 1 ) +num_ms=2 +< 0 0 >: -0.017546705953354277 -0.073117899737826647 +< 1 -1 >: 0.035093411906708546 0.146235799475653266 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 3 ) +l=( 2 2 ) +num_ms=3 +< 0 0 >: 0.004749098007251869 -0.257069405099209003 +< 1 -1 >: -0.009498196014503739 0.514138810198418117 +< 2 -2 >: 0.009498196014503742 -0.514138810198418228 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 3 ) +l=( 3 3 ) +num_ms=4 +< 0 0 >: 0.027176926052467926 -0.108355590420074283 +< 1 -1 >: -0.054353852104935853 0.216711180840148565 +< 2 -2 >: 0.054353852104935846 -0.216711180840148510 +< 3 -3 >: -0.054353852104935846 0.216711180840148510 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 3 ) +l=( 4 4 ) +num_ms=5 +< 0 0 >: 0.000211150248804564 0.002501125696239490 +< 1 -1 >: -0.000422300497609128 -0.005002251392478979 +< 2 -2 >: 0.000422300497609128 0.005002251392478979 +< 3 -3 >: -0.000422300497609128 -0.005002251392478979 +< 4 -4 >: 0.000422300497609128 0.005002251392478980 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 3 ) +l=( 5 5 ) +num_ms=6 +< 0 0 >: 0.000099590275967354 -0.005481190461921377 +< 1 -1 >: -0.000199180551934708 0.010962380923842753 +< 2 -2 >: 0.000199180551934708 -0.010962380923842757 +< 3 -3 >: -0.000199180551934708 0.010962380923842758 +< 4 -4 >: 0.000199180551934708 -0.010962380923842757 +< 5 -5 >: -0.000199180551934708 0.010962380923842744 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 3 ) +l=( 6 6 ) +num_ms=7 +< 0 0 >: 0.028820822741815019 0.043553113576786734 +< 1 -1 >: -0.057641645483630044 -0.087106227153573496 +< 2 -2 >: 0.057641645483630023 0.087106227153573454 +< 3 -3 >: -0.057641645483630044 -0.087106227153573496 +< 4 -4 >: 0.057641645483630009 0.087106227153573440 +< 5 -5 >: -0.057641645483630023 -0.087106227153573454 +< 6 -6 >: 0.057641645483629989 0.087106227153573398 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 4 ) +l=( 0 0 ) +num_ms=1 +< 0 0 >: -0.015195924588765826 -0.167087048140837691 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 4 ) +l=( 1 1 ) +num_ms=2 +< 0 0 >: 0.013684484211213044 0.034395304368322346 +< 1 -1 >: -0.027368968422426084 -0.068790608736644679 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 4 ) +l=( 2 2 ) +num_ms=3 +< 0 0 >: -0.005928702549188424 -0.130153406570613472 +< 1 -1 >: 0.011857405098376850 0.260306813141227000 +< 2 -2 >: -0.011857405098376851 -0.260306813141227056 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 4 ) +l=( 3 3 ) +num_ms=4 +< 0 0 >: -0.015008760973931355 0.153801142295301702 +< 1 -1 >: 0.030017521947862710 -0.307602284590603403 +< 2 -2 >: -0.030017521947862707 0.307602284590603348 +< 3 -3 >: 0.030017521947862707 -0.307602284590603348 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 4 ) +l=( 4 4 ) +num_ms=5 +< 0 0 >: -0.001151840097758326 0.013431027541694857 +< 1 -1 >: 0.002303680195516651 -0.026862055083389708 +< 2 -2 >: -0.002303680195516651 0.026862055083389708 +< 3 -3 >: 0.002303680195516651 -0.026862055083389708 +< 4 -4 >: -0.002303680195516651 0.026862055083389711 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 4 ) +l=( 5 5 ) +num_ms=6 +< 0 0 >: -0.000652423778863231 0.026695406667047394 +< 1 -1 >: 0.001304847557726462 -0.053390813334094789 +< 2 -2 >: -0.001304847557726462 0.053390813334094796 +< 3 -3 >: 0.001304847557726462 -0.053390813334094803 +< 4 -4 >: -0.001304847557726462 0.053390813334094796 +< 5 -5 >: 0.001304847557726461 -0.053390813334094740 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 4 ) +l=( 6 6 ) +num_ms=7 +< 0 0 >: -0.022661669008512072 -0.089577314277810058 +< 1 -1 >: 0.045323338017024151 0.179154628555620143 +< 2 -2 >: -0.045323338017024137 -0.179154628555620060 +< 3 -3 >: 0.045323338017024151 0.179154628555620143 +< 4 -4 >: -0.045323338017024123 -0.179154628555620032 +< 5 -5 >: 0.045323338017024137 0.179154628555620060 +< 6 -6 >: -0.045323338017024109 -0.179154628555619949 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 5 ) +l=( 0 0 ) +num_ms=1 +< 0 0 >: 0.000927204096660696 0.214065283656125371 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 5 ) +l=( 1 1 ) +num_ms=2 +< 0 0 >: 0.000094655033139699 0.004208753371838363 +< 1 -1 >: -0.000189310066279397 -0.008417506743676724 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 5 ) +l=( 2 2 ) +num_ms=3 +< 0 0 >: 0.000351584678183165 0.036688837956052121 +< 1 -1 >: -0.000703169356366331 -0.073377675912104257 +< 2 -2 >: 0.000703169356366331 0.073377675912104270 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 5 ) +l=( 3 3 ) +num_ms=4 +< 0 0 >: 0.002788351180694639 -0.034407768721874142 +< 1 -1 >: -0.005576702361389278 0.068815537443748284 +< 2 -2 >: 0.005576702361389277 -0.068815537443748284 +< 3 -3 >: -0.005576702361389277 0.068815537443748284 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 5 ) +l=( 4 4 ) +num_ms=5 +< 0 0 >: 0.000317570803659664 -0.001123830834830057 +< 1 -1 >: -0.000635141607319327 0.002247661669660114 +< 2 -2 >: 0.000635141607319327 -0.002247661669660114 +< 3 -3 >: -0.000635141607319327 0.002247661669660114 +< 4 -4 >: 0.000635141607319327 -0.002247661669660114 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 5 ) +l=( 5 5 ) +num_ms=6 +< 0 0 >: 0.000488890061324461 -0.017808170881300944 +< 1 -1 >: -0.000977780122648922 0.035616341762601887 +< 2 -2 >: 0.000977780122648922 -0.035616341762601894 +< 3 -3 >: -0.000977780122648922 0.035616341762601901 +< 4 -4 >: 0.000977780122648922 -0.035616341762601894 +< 5 -5 >: -0.000977780122648921 0.035616341762601852 +ctilde_basis_func: rank=2 ndens=2 mu0=0 mu=( 0 0 ) +n=( 5 5 ) +l=( 6 6 ) +num_ms=7 +< 0 0 >: 0.005721847329407898 0.062910453316038589 +< 1 -1 >: -0.011443694658815798 -0.125820906632077206 +< 2 -2 >: 0.011443694658815794 0.125820906632077151 +< 3 -3 >: -0.011443694658815798 -0.125820906632077206 +< 4 -4 >: 0.011443694658815791 0.125820906632077123 +< 5 -5 >: -0.011443694658815794 -0.125820906632077151 +< 6 -6 >: 0.011443694658815787 0.125820906632077067 diff --git a/python/install.py b/python/install.py index 6e4c509f07..fbff02a1b5 100644 --- a/python/install.py +++ b/python/install.py @@ -10,7 +10,7 @@ build target in the conventional and CMake based build systems # copy LAMMPS shared library and lammps package to system dirs from __future__ import print_function -import sys,os,shutil +import sys,os,shutil,time from argparse import ArgumentParser parser = ArgumentParser(prog='install.py', @@ -80,13 +80,15 @@ if args.dir: sys.exit() -# extract version string from header +# extract LAMMPS version string from header +# and convert to python packaging compatible version def get_lammps_version(header): with open(header, 'r') as f: line = f.readline() start_pos = line.find('"')+1 end_pos = line.find('"', start_pos) - return "".join(line[start_pos:end_pos].split()) + t = time.strptime("".join(line[start_pos:end_pos].split()), "%d%b%Y") + return "{}.{}.{}".format(t.tm_year,t.tm_mon,t.tm_mday) verstr = get_lammps_version(args.version) diff --git a/python/lammps/__init__.py b/python/lammps/__init__.py index e6ffd779a9..2c0e7a6fe3 100644 --- a/python/lammps/__init__.py +++ b/python/lammps/__init__.py @@ -13,10 +13,16 @@ from .core import * from .data import * from .pylammps import * -# convert module string version to numeric version +# convert installed module string version to numeric version def get_version_number(): import time + from os.path import join from sys import version_info + + # must report 0 when inside LAMMPS source tree + if __file__.find(join('python', 'lammps', '__init__.py')) > 0: + return 0 + vstring = None if version_info.major == 3 and version_info.minor >= 8: from importlib.metadata import version @@ -32,7 +38,7 @@ def get_version_number(): if not vstring: return 0 - t = time.strptime(vstring, "%d%b%Y") + t = time.strptime(vstring, "%Y.%m.%d") return t.tm_year*10000 + t.tm_mon*100 + t.tm_mday __version__ = get_version_number() diff --git a/python/setup.py b/python/setup.py index aff0b14671..2f2b67b6f1 100644 --- a/python/setup.py +++ b/python/setup.py @@ -1,7 +1,8 @@ # this only installs the LAMMPS python package # it assumes the LAMMPS shared library is already installed from distutils.core import setup -import os +from sys import version_info +import os,time LAMMPS_PYTHON_DIR = os.path.dirname(os.path.realpath(__file__)) LAMMPS_DIR = os.path.dirname(LAMMPS_PYTHON_DIR) @@ -12,7 +13,13 @@ def get_lammps_version(): line = f.readline() start_pos = line.find('"')+1 end_pos = line.find('"', start_pos) - return "".join(line[start_pos:end_pos].split()) + t = time.strptime("".join(line[start_pos:end_pos].split()), "%d%b%Y") + return "{}.{}.{}".format(t.tm_year,t.tm_mon,t.tm_mday) + +if version_info.major >= 3: + pkgs = ['lammps', 'lammps.mliap'] +else: + pkgs = ['lammps'] setup( name = "lammps", @@ -22,5 +29,5 @@ setup( url = "https://lammps.sandia.gov", description = "LAMMPS Molecular Dynamics Python package", license = "GPL", - packages=["lammps","lammps.mliap"], + packages=pkgs, ) diff --git a/src/.gitignore b/src/.gitignore index 6fa3aef513..96a89ae667 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -32,6 +32,9 @@ /pair_kim.cpp /pair_kim.h +/pair_pace.cpp +/pair_pace.h + /superpose3d.h /kokkos.cpp diff --git a/src/COMPRESS/dump_atom_gz.cpp b/src/COMPRESS/dump_atom_gz.cpp index f252e32064..7b54fd8e62 100644 --- a/src/COMPRESS/dump_atom_gz.cpp +++ b/src/COMPRESS/dump_atom_gz.cpp @@ -11,24 +11,18 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "dump_atom_gz.h" #include "domain.h" +#include "dump_atom_gz.h" #include "error.h" #include "update.h" - #include - using namespace LAMMPS_NS; DumpAtomGZ::DumpAtomGZ(LAMMPS *lmp, int narg, char **arg) : DumpAtom(lmp, narg, arg) { - gzFp = nullptr; - - compression_level = Z_BEST_COMPRESSION; - if (!compressed) error->all(FLERR,"Dump atom/gz only writes compressed files"); } @@ -37,9 +31,6 @@ DumpAtomGZ::DumpAtomGZ(LAMMPS *lmp, int narg, char **arg) : DumpAtomGZ::~DumpAtomGZ() { - if (gzFp) gzclose(gzFp); - gzFp = nullptr; - fp = nullptr; } /* ---------------------------------------------------------------------- @@ -80,7 +71,9 @@ void DumpAtomGZ::openfile() nameslist[numfiles] = utils::strdup(filecurrent); ++numfiles; } else { - remove(nameslist[fileidx]); + if (remove(nameslist[fileidx]) != 0) { + error->warning(FLERR, fmt::format("Could not delete {}", nameslist[fileidx])); + } delete[] nameslist[fileidx]; nameslist[fileidx] = utils::strdup(filecurrent); fileidx = (fileidx + 1) % maxfiles; @@ -91,17 +84,12 @@ void DumpAtomGZ::openfile() // each proc with filewriter = 1 opens a file if (filewriter) { - std::string mode; - if (append_flag) { - mode = fmt::format("ab{}", compression_level); - } else { - mode = fmt::format("wb{}", compression_level); + try { + writer.open(filecurrent, append_flag); + } catch (FileWriterException &e) { + error->one(FLERR, e.what()); } - - gzFp = gzopen(filecurrent, mode.c_str()); - - if (gzFp == nullptr) error->one(FLERR,"Cannot open dump file"); - } else gzFp = nullptr; + } // delete string with timestep replaced @@ -112,29 +100,34 @@ void DumpAtomGZ::openfile() void DumpAtomGZ::write_header(bigint ndump) { + std::string header; + if ((multiproc) || (!multiproc && me == 0)) { if (unit_flag && !unit_count) { ++unit_count; - gzprintf(gzFp,"ITEM: UNITS\n%s\n",update->unit_style); + header = fmt::format("ITEM: UNITS\n{}\n",update->unit_style); } - if (time_flag) gzprintf(gzFp,"ITEM: TIME\n%.16g\n",compute_time()); - gzprintf(gzFp,"ITEM: TIMESTEP\n"); - gzprintf(gzFp,BIGINT_FORMAT "\n",update->ntimestep); - gzprintf(gzFp,"ITEM: NUMBER OF ATOMS\n"); - gzprintf(gzFp,BIGINT_FORMAT "\n",ndump); - if (domain->triclinic == 0) { - gzprintf(gzFp,"ITEM: BOX BOUNDS %s\n",boundstr); - gzprintf(gzFp,"%-1.16e %-1.16e\n",boxxlo,boxxhi); - gzprintf(gzFp,"%-1.16e %-1.16e\n",boxylo,boxyhi); - gzprintf(gzFp,"%-1.16e %-1.16e\n",boxzlo,boxzhi); - } else { - gzprintf(gzFp,"ITEM: BOX BOUNDS xy xz yz %s\n",boundstr); - gzprintf(gzFp,"%-1.16e %-1.16e %-1.16e\n",boxxlo,boxxhi,boxxy); - gzprintf(gzFp,"%-1.16e %-1.16e %-1.16e\n",boxylo,boxyhi,boxxz); - gzprintf(gzFp,"%-1.16e %-1.16e %-1.16e\n",boxzlo,boxzhi,boxyz); + if (time_flag) { + header += fmt::format("ITEM: TIME\n{0:.16g}\n", compute_time()); } - gzprintf(gzFp,"ITEM: ATOMS %s\n",columns); + + header += fmt::format("ITEM: TIMESTEP\n{}\n", update->ntimestep); + header += fmt::format("ITEM: NUMBER OF ATOMS\n{}\n", ndump); + if (domain->triclinic == 0) { + header += fmt::format("ITEM: BOX BOUNDS {}\n", boundstr); + header += fmt::format("{0:-1.16e} {1:-1.16e}\n", boxxlo, boxxhi); + header += fmt::format("{0:-1.16e} {1:-1.16e}\n", boxylo, boxyhi); + header += fmt::format("{0:-1.16e} {1:-1.16e}\n", boxzlo, boxzhi); + } else { + header += fmt::format("ITEM: BOX BOUNDS xy xz yz {}\n", boundstr); + header += fmt::format("{0:-1.16e} {1:-1.16e} {2:-1.16e}\n", boxxlo, boxxhi, boxxy); + header += fmt::format("{0:-1.16e} {1:-1.16e} {2:-1.16e}\n", boxylo, boxyhi, boxxz); + header += fmt::format("{0:-1.16e} {1:-1.16e} {2:-1.16e}\n", boxzlo, boxzhi, boxyz); + } + header += fmt::format("ITEM: ATOMS {}\n", columns); + + writer.write(header.c_str(), header.length()); } } @@ -142,7 +135,33 @@ void DumpAtomGZ::write_header(bigint ndump) void DumpAtomGZ::write_data(int n, double *mybuf) { - gzwrite(gzFp,mybuf,sizeof(char)*n); + if (buffer_flag == 1) { + writer.write(mybuf, n); + } else { + constexpr size_t VBUFFER_SIZE = 256; + char vbuffer[VBUFFER_SIZE]; + int m = 0; + for (int i = 0; i < n; i++) { + int written = 0; + if (image_flag == 1) { + written = snprintf(vbuffer, VBUFFER_SIZE, format, + static_cast (mybuf[m]), static_cast (mybuf[m+1]), + mybuf[m+2],mybuf[m+3],mybuf[m+4], static_cast (mybuf[m+5]), + static_cast (mybuf[m+6]), static_cast (mybuf[m+7])); + } else { + written = snprintf(vbuffer, VBUFFER_SIZE, format, + static_cast (mybuf[m]), static_cast (mybuf[m+1]), + mybuf[m+2],mybuf[m+3],mybuf[m+4]); + } + if (written > 0) { + writer.write(vbuffer, written); + } else if (written < 0) { + error->one(FLERR, "Error while writing dump atom/gz output"); + } + + m += size_one; + } + } } /* ---------------------------------------------------------------------- */ @@ -152,11 +171,11 @@ void DumpAtomGZ::write() DumpAtom::write(); if (filewriter) { if (multifile) { - gzclose(gzFp); - gzFp = nullptr; + writer.close(); } else { - if (flush_flag) - gzflush(gzFp,Z_SYNC_FLUSH); + if (flush_flag && writer.isopen()) { + writer.flush(); + } } } } @@ -167,14 +186,15 @@ int DumpAtomGZ::modify_param(int narg, char **arg) { int consumed = DumpAtom::modify_param(narg, arg); if (consumed == 0) { - if (strcmp(arg[0],"compression_level") == 0) { - if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); - int min_level = Z_DEFAULT_COMPRESSION; - int max_level = Z_BEST_COMPRESSION; - compression_level = utils::inumeric(FLERR, arg[1], false, lmp); - if (compression_level < min_level || compression_level > max_level) - error->all(FLERR, fmt::format("Illegal dump_modify command: compression level must in the range of [{}, {}]", min_level, max_level)); - return 2; + try { + if (strcmp(arg[0],"compression_level") == 0) { + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); + int compression_level = utils::inumeric(FLERR, arg[1], false, lmp); + writer.setCompressionLevel(compression_level); + return 2; + } + } catch (FileWriterException &e) { + error->one(FLERR, fmt::format("Illegal dump_modify command: {}", e.what())); } } return consumed; diff --git a/src/COMPRESS/dump_atom_gz.h b/src/COMPRESS/dump_atom_gz.h index 0c0b95974f..d540f5300a 100644 --- a/src/COMPRESS/dump_atom_gz.h +++ b/src/COMPRESS/dump_atom_gz.h @@ -21,7 +21,7 @@ DumpStyle(atom/gz,DumpAtomGZ) #define LMP_DUMP_ATOM_GZ_H #include "dump_atom.h" -#include +#include "gz_file_writer.h" namespace LAMMPS_NS { @@ -31,8 +31,7 @@ class DumpAtomGZ : public DumpAtom { virtual ~DumpAtomGZ(); protected: - int compression_level; - gzFile gzFp; // file pointer for the compressed output stream + GzFileWriter writer; virtual void openfile(); virtual void write_header(bigint); diff --git a/src/COMPRESS/dump_atom_zstd.cpp b/src/COMPRESS/dump_atom_zstd.cpp index 3dde07bbf4..b53ebb2269 100644 --- a/src/COMPRESS/dump_atom_zstd.cpp +++ b/src/COMPRESS/dump_atom_zstd.cpp @@ -43,7 +43,7 @@ DumpAtomZstd::~DumpAtomZstd() /* ---------------------------------------------------------------------- generic opening of a dump file - ASCII or binary or zstdipped + ASCII or binary or compressed some derived classes override this function ------------------------------------------------------------------------- */ @@ -79,7 +79,9 @@ void DumpAtomZstd::openfile() nameslist[numfiles] = utils::strdup(filecurrent); ++numfiles; } else { - remove(nameslist[fileidx]); + if (remove(nameslist[fileidx]) != 0) { + error->warning(FLERR, fmt::format("Could not delete {}", nameslist[fileidx])); + } delete[] nameslist[fileidx]; nameslist[fileidx] = utils::strdup(filecurrent); fileidx = (fileidx + 1) % maxfiles; @@ -90,12 +92,8 @@ void DumpAtomZstd::openfile() // each proc with filewriter = 1 opens a file if (filewriter) { - if (append_flag) { - error->one(FLERR, "dump/zstd currently doesn't support append"); - } - try { - writer.open(filecurrent); + writer.open(filecurrent, append_flag); } catch (FileWriterException &e) { error->one(FLERR, e.what()); } @@ -145,7 +143,33 @@ void DumpAtomZstd::write_header(bigint ndump) void DumpAtomZstd::write_data(int n, double *mybuf) { - writer.write(mybuf, n); + if (buffer_flag == 1) { + writer.write(mybuf, n); + } else { + constexpr size_t VBUFFER_SIZE = 256; + char vbuffer[VBUFFER_SIZE]; + int m = 0; + for (int i = 0; i < n; i++) { + int written = 0; + if (image_flag == 1) { + written = snprintf(vbuffer, VBUFFER_SIZE, format, + static_cast (mybuf[m]), static_cast (mybuf[m+1]), + mybuf[m+2],mybuf[m+3],mybuf[m+4], static_cast (mybuf[m+5]), + static_cast (mybuf[m+6]), static_cast (mybuf[m+7])); + } else { + written = snprintf(vbuffer, VBUFFER_SIZE, format, + static_cast (mybuf[m]), static_cast (mybuf[m+1]), + mybuf[m+2],mybuf[m+3],mybuf[m+4]); + } + if (written > 0) { + writer.write(vbuffer, written); + } else if (written < 0) { + error->one(FLERR, "Error while writing dump atom/gz output"); + } + + m += size_one; + } + } } /* ---------------------------------------------------------------------- */ @@ -184,7 +208,7 @@ int DumpAtomZstd::modify_param(int narg, char **arg) return 2; } } catch (FileWriterException &e) { - error->one(FLERR, e.what()); + error->one(FLERR, fmt::format("Illegal dump_modify command: {}", e.what())); } } return consumed; diff --git a/src/COMPRESS/dump_cfg_gz.cpp b/src/COMPRESS/dump_cfg_gz.cpp index 378baf502f..c5942c1fc5 100644 --- a/src/COMPRESS/dump_cfg_gz.cpp +++ b/src/COMPRESS/dump_cfg_gz.cpp @@ -11,41 +11,30 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "dump_cfg_gz.h" #include "atom.h" #include "domain.h" +#include "dump_cfg_gz.h" #include "error.h" #include "update.h" - #include - using namespace LAMMPS_NS; #define UNWRAPEXPAND 10.0 DumpCFGGZ::DumpCFGGZ(LAMMPS *lmp, int narg, char **arg) : DumpCFG(lmp, narg, arg) { - gzFp = nullptr; - - compression_level = Z_BEST_COMPRESSION; - if (!compressed) error->all(FLERR,"Dump cfg/gz only writes compressed files"); } - /* ---------------------------------------------------------------------- */ DumpCFGGZ::~DumpCFGGZ() { - if (gzFp) gzclose(gzFp); - gzFp = nullptr; - fp = nullptr; } - /* ---------------------------------------------------------------------- generic opening of a dump file ASCII or binary or gzipped @@ -84,7 +73,9 @@ void DumpCFGGZ::openfile() nameslist[numfiles] = utils::strdup(filecurrent); ++numfiles; } else { - remove(nameslist[fileidx]); + if (remove(nameslist[fileidx]) != 0) { + error->warning(FLERR, fmt::format("Could not delete {}", nameslist[fileidx])); + } delete[] nameslist[fileidx]; nameslist[fileidx] = utils::strdup(filecurrent); fileidx = (fileidx + 1) % maxfiles; @@ -95,17 +86,12 @@ void DumpCFGGZ::openfile() // each proc with filewriter = 1 opens a file if (filewriter) { - std::string mode; - if (append_flag) { - mode = fmt::format("ab{}", compression_level); - } else { - mode = fmt::format("wb{}", compression_level); + try { + writer.open(filecurrent, append_flag); + } catch (FileWriterException &e) { + error->one(FLERR, e.what()); } - - gzFp = gzopen(filecurrent, mode.c_str()); - - if (gzFp == nullptr) error->one(FLERR,"Cannot open dump file"); - } else gzFp = nullptr; + } // delete string with timestep replaced @@ -127,30 +113,95 @@ void DumpCFGGZ::write_header(bigint n) if (atom->peri_flag) scale = atom->pdscale; else if (unwrapflag == 1) scale = UNWRAPEXPAND; - char str[64]; - sprintf(str,"Number of particles = %s\n",BIGINT_FORMAT); - gzprintf(gzFp,str,n); - gzprintf(gzFp,"A = %g Angstrom (basic length-scale)\n",scale); - gzprintf(gzFp,"H0(1,1) = %g A\n",domain->xprd); - gzprintf(gzFp,"H0(1,2) = 0 A \n"); - gzprintf(gzFp,"H0(1,3) = 0 A \n"); - gzprintf(gzFp,"H0(2,1) = %g A \n",domain->xy); - gzprintf(gzFp,"H0(2,2) = %g A\n",domain->yprd); - gzprintf(gzFp,"H0(2,3) = 0 A \n"); - gzprintf(gzFp,"H0(3,1) = %g A \n",domain->xz); - gzprintf(gzFp,"H0(3,2) = %g A \n",domain->yz); - gzprintf(gzFp,"H0(3,3) = %g A\n",domain->zprd); - gzprintf(gzFp,".NO_VELOCITY.\n"); - gzprintf(gzFp,"entry_count = %d\n",nfield-2); + std::string header = fmt::format("Number of particles = {}\n", n); + header += fmt::format("A = {0:g} Angstrom (basic length-scale)\n", scale); + header += fmt::format("H0(1,1) = {0:g} A\n",domain->xprd); + header += fmt::format("H0(1,2) = 0 A \n"); + header += fmt::format("H0(1,3) = 0 A \n"); + header += fmt::format("H0(2,1) = {0:g} A \n",domain->xy); + header += fmt::format("H0(2,2) = {0:g} A\n",domain->yprd); + header += fmt::format("H0(2,3) = 0 A \n"); + header += fmt::format("H0(3,1) = {0:g} A \n",domain->xz); + header += fmt::format("H0(3,2) = {0:g} A \n",domain->yz); + header += fmt::format("H0(3,3) = {0:g} A\n",domain->zprd); + header += fmt::format(".NO_VELOCITY.\n"); + header += fmt::format("entry_count = {}\n",nfield-2); for (int i = 0; i < nfield-5; i++) - gzprintf(gzFp,"auxiliary[%d] = %s\n",i,auxname[i]); + header += fmt::format("auxiliary[{}] = {}\n",i,auxname[i]); + + writer.write(header.c_str(), header.length()); } /* ---------------------------------------------------------------------- */ void DumpCFGGZ::write_data(int n, double *mybuf) { - gzwrite(gzFp,mybuf,sizeof(char)*n); + if (buffer_flag) { + writer.write(mybuf, n); + } else { + constexpr size_t VBUFFER_SIZE = 256; + char vbuffer[VBUFFER_SIZE]; + if (unwrapflag == 0) { + int m = 0; + for (int i = 0; i < n; i++) { + for (int j = 0; j < size_one; j++) { + int written = 0; + if (j == 0) { + written = snprintf(vbuffer, VBUFFER_SIZE, "%f \n", mybuf[m]); + } else if (j == 1) { + written = snprintf(vbuffer, VBUFFER_SIZE, "%s \n", typenames[(int) mybuf[m]]); + } else if (j >= 2) { + if (vtype[j] == Dump::INT) + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], static_cast (mybuf[m])); + else if (vtype[j] == Dump::DOUBLE) + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], mybuf[m]); + else if (vtype[j] == Dump::STRING) + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], typenames[(int) mybuf[m]]); + else if (vtype[j] == Dump::BIGINT) + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], static_cast (mybuf[m])); + } + if (written > 0) { + writer.write(vbuffer, written); + } else if (written < 0) { + error->one(FLERR, "Error while writing dump cfg/gz output"); + } + m++; + } + writer.write("\n", 1); + } + } else if (unwrapflag == 1) { + int m = 0; + for (int i = 0; i < n; i++) { + for (int j = 0; j < size_one; j++) { + int written = 0; + if (j == 0) { + written = snprintf(vbuffer, VBUFFER_SIZE, "%f \n", mybuf[m]); + } else if (j == 1) { + written = snprintf(vbuffer, VBUFFER_SIZE, "%s \n", typenames[(int) mybuf[m]]); + } else if (j >= 2 && j <= 4) { + double unwrap_coord = (mybuf[m] - 0.5)/UNWRAPEXPAND + 0.5; + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], unwrap_coord); + } else if (j >= 5) { + if (vtype[j] == Dump::INT) + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], static_cast (mybuf[m])); + else if (vtype[j] == Dump::DOUBLE) + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], mybuf[m]); + else if (vtype[j] == Dump::STRING) + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], typenames[(int) mybuf[m]]); + else if (vtype[j] == Dump::BIGINT) + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], static_cast (mybuf[m])); + } + if (written > 0) { + writer.write(vbuffer, written); + } else if (written < 0) { + error->one(FLERR, "Error while writing dump cfg/gz output"); + } + m++; + } + writer.write("\n", 1); + } + } + } } /* ---------------------------------------------------------------------- */ @@ -160,11 +211,11 @@ void DumpCFGGZ::write() DumpCFG::write(); if (filewriter) { if (multifile) { - gzclose(gzFp); - gzFp = nullptr; + writer.close(); } else { - if (flush_flag) - gzflush(gzFp,Z_SYNC_FLUSH); + if (flush_flag && writer.isopen()) { + writer.flush(); + } } } } @@ -175,16 +226,16 @@ int DumpCFGGZ::modify_param(int narg, char **arg) { int consumed = DumpCFG::modify_param(narg, arg); if (consumed == 0) { - if (strcmp(arg[0],"compression_level") == 0) { - if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); - int min_level = Z_DEFAULT_COMPRESSION; - int max_level = Z_BEST_COMPRESSION; - compression_level = utils::inumeric(FLERR, arg[1], false, lmp); - if (compression_level < min_level || compression_level > max_level) - error->all(FLERR, fmt::format("Illegal dump_modify command: compression level must in the range of [{}, {}]", min_level, max_level)); - return 2; + try { + if (strcmp(arg[0],"compression_level") == 0) { + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); + int compression_level = utils::inumeric(FLERR, arg[1], false, lmp); + writer.setCompressionLevel(compression_level); + return 2; + } + } catch (FileWriterException &e) { + error->one(FLERR, fmt::format("Illegal dump_modify command: {}", e.what())); } } return consumed; } - diff --git a/src/COMPRESS/dump_cfg_gz.h b/src/COMPRESS/dump_cfg_gz.h index 0c6ed24f06..2844902a38 100644 --- a/src/COMPRESS/dump_cfg_gz.h +++ b/src/COMPRESS/dump_cfg_gz.h @@ -21,7 +21,7 @@ DumpStyle(cfg/gz,DumpCFGGZ) #define LMP_DUMP_CFG_GZ_H #include "dump_cfg.h" -#include +#include "gz_file_writer.h" namespace LAMMPS_NS { @@ -31,8 +31,7 @@ class DumpCFGGZ : public DumpCFG { virtual ~DumpCFGGZ(); protected: - int compression_level; - gzFile gzFp; // file pointer for the compressed output stream + GzFileWriter writer; virtual void openfile(); virtual void write_header(bigint); diff --git a/src/COMPRESS/dump_cfg_zstd.cpp b/src/COMPRESS/dump_cfg_zstd.cpp index 459649c70a..0ea92f3807 100644 --- a/src/COMPRESS/dump_cfg_zstd.cpp +++ b/src/COMPRESS/dump_cfg_zstd.cpp @@ -21,7 +21,6 @@ #include "domain.h" #include "dump_cfg_zstd.h" #include "error.h" -#include "file_writer.h" #include "update.h" #include @@ -46,7 +45,7 @@ DumpCFGZstd::~DumpCFGZstd() /* ---------------------------------------------------------------------- generic opening of a dump file - ASCII or binary or zstdipped + ASCII or binary or compressed some derived classes override this function ------------------------------------------------------------------------- */ @@ -82,7 +81,9 @@ void DumpCFGZstd::openfile() nameslist[numfiles] = utils::strdup(filecurrent); ++numfiles; } else { - remove(nameslist[fileidx]); + if (remove(nameslist[fileidx]) != 0) { + error->warning(FLERR, fmt::format("Could not delete {}", nameslist[fileidx])); + } delete[] nameslist[fileidx]; nameslist[fileidx] = utils::strdup(filecurrent); fileidx = (fileidx + 1) % maxfiles; @@ -147,7 +148,72 @@ void DumpCFGZstd::write_header(bigint n) void DumpCFGZstd::write_data(int n, double *mybuf) { - writer.write(mybuf, n); + if (buffer_flag) { + writer.write(mybuf, n); + } else { + constexpr size_t VBUFFER_SIZE = 256; + char vbuffer[VBUFFER_SIZE]; + if (unwrapflag == 0) { + int m = 0; + for (int i = 0; i < n; i++) { + for (int j = 0; j < size_one; j++) { + int written = 0; + if (j == 0) { + written = snprintf(vbuffer, VBUFFER_SIZE, "%f \n", mybuf[m]); + } else if (j == 1) { + written = snprintf(vbuffer, VBUFFER_SIZE, "%s \n", typenames[(int) mybuf[m]]); + } else if (j >= 2) { + if (vtype[j] == Dump::INT) + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], static_cast (mybuf[m])); + else if (vtype[j] == Dump::DOUBLE) + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], mybuf[m]); + else if (vtype[j] == Dump::STRING) + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], typenames[(int) mybuf[m]]); + else if (vtype[j] == Dump::BIGINT) + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], static_cast (mybuf[m])); + } + if (written > 0) { + writer.write(vbuffer, written); + } else if (written < 0) { + error->one(FLERR, "Error while writing dump cfg/gz output"); + } + m++; + } + writer.write("\n", 1); + } + } else if (unwrapflag == 1) { + int m = 0; + for (int i = 0; i < n; i++) { + for (int j = 0; j < size_one; j++) { + int written = 0; + if (j == 0) { + written = snprintf(vbuffer, VBUFFER_SIZE, "%f \n", mybuf[m]); + } else if (j == 1) { + written = snprintf(vbuffer, VBUFFER_SIZE, "%s \n", typenames[(int) mybuf[m]]); + } else if (j >= 2 && j <= 4) { + double unwrap_coord = (mybuf[m] - 0.5)/UNWRAPEXPAND + 0.5; + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], unwrap_coord); + } else if (j >= 5) { + if (vtype[j] == Dump::INT) + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], static_cast (mybuf[m])); + else if (vtype[j] == Dump::DOUBLE) + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], mybuf[m]); + else if (vtype[j] == Dump::STRING) + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], typenames[(int) mybuf[m]]); + else if (vtype[j] == Dump::BIGINT) + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], static_cast (mybuf[m])); + } + if (written > 0) { + writer.write(vbuffer, written); + } else if (written < 0) { + error->one(FLERR, "Error while writing dump cfg/gz output"); + } + m++; + } + writer.write("\n", 1); + } + } + } } /* ---------------------------------------------------------------------- */ diff --git a/src/COMPRESS/dump_custom_gz.cpp b/src/COMPRESS/dump_custom_gz.cpp index 4f03a4a232..9a3fc39d0a 100644 --- a/src/COMPRESS/dump_custom_gz.cpp +++ b/src/COMPRESS/dump_custom_gz.cpp @@ -11,39 +11,28 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "dump_custom_gz.h" #include "domain.h" +#include "dump_custom_gz.h" #include "error.h" #include "update.h" - #include - using namespace LAMMPS_NS; DumpCustomGZ::DumpCustomGZ(LAMMPS *lmp, int narg, char **arg) : DumpCustom(lmp, narg, arg) { - gzFp = nullptr; - - compression_level = Z_BEST_COMPRESSION; - if (!compressed) error->all(FLERR,"Dump custom/gz only writes compressed files"); } - /* ---------------------------------------------------------------------- */ DumpCustomGZ::~DumpCustomGZ() { - if (gzFp) gzclose(gzFp); - gzFp = nullptr; - fp = nullptr; } - /* ---------------------------------------------------------------------- generic opening of a dump file ASCII or binary or gzipped @@ -82,7 +71,9 @@ void DumpCustomGZ::openfile() nameslist[numfiles] = utils::strdup(filecurrent); ++numfiles; } else { - remove(nameslist[fileidx]); + if (remove(nameslist[fileidx]) != 0) { + error->warning(FLERR, fmt::format("Could not delete {}", nameslist[fileidx])); + } delete[] nameslist[fileidx]; nameslist[fileidx] = utils::strdup(filecurrent); fileidx = (fileidx + 1) % maxfiles; @@ -93,17 +84,12 @@ void DumpCustomGZ::openfile() // each proc with filewriter = 1 opens a file if (filewriter) { - std::string mode; - if (append_flag) { - mode = fmt::format("ab{}", compression_level); - } else { - mode = fmt::format("wb{}", compression_level); + try { + writer.open(filecurrent, append_flag); + } catch (FileWriterException &e) { + error->one(FLERR, e.what()); } - - gzFp = gzopen(filecurrent, mode.c_str()); - - if (gzFp == nullptr) error->one(FLERR,"Cannot open dump file"); - } else gzFp = nullptr; + } // delete string with timestep replaced @@ -112,29 +98,34 @@ void DumpCustomGZ::openfile() void DumpCustomGZ::write_header(bigint ndump) { + std::string header; + if ((multiproc) || (!multiproc && me == 0)) { if (unit_flag && !unit_count) { ++unit_count; - gzprintf(gzFp,"ITEM: UNITS\n%s\n",update->unit_style); + header = fmt::format("ITEM: UNITS\n{}\n",update->unit_style); } - if (time_flag) gzprintf(gzFp,"ITEM: TIME\n%.16g\n",compute_time()); - gzprintf(gzFp,"ITEM: TIMESTEP\n"); - gzprintf(gzFp,BIGINT_FORMAT "\n",update->ntimestep); - gzprintf(gzFp,"ITEM: NUMBER OF ATOMS\n"); - gzprintf(gzFp,BIGINT_FORMAT "\n",ndump); - if (domain->triclinic == 0) { - gzprintf(gzFp,"ITEM: BOX BOUNDS %s\n",boundstr); - gzprintf(gzFp,"%-1.16e %-1.16e\n",boxxlo,boxxhi); - gzprintf(gzFp,"%-1.16e %-1.16e\n",boxylo,boxyhi); - gzprintf(gzFp,"%-1.16e %-1.16e\n",boxzlo,boxzhi); - } else { - gzprintf(gzFp,"ITEM: BOX BOUNDS xy xz yz %s\n",boundstr); - gzprintf(gzFp,"%-1.16e %-1.16e %-1.16e\n",boxxlo,boxxhi,boxxy); - gzprintf(gzFp,"%-1.16e %-1.16e %-1.16e\n",boxylo,boxyhi,boxxz); - gzprintf(gzFp,"%-1.16e %-1.16e %-1.16e\n",boxzlo,boxzhi,boxyz); + if (time_flag) { + header += fmt::format("ITEM: TIME\n{0:.16g}\n", compute_time()); } - gzprintf(gzFp,"ITEM: ATOMS %s\n",columns); + + header += fmt::format("ITEM: TIMESTEP\n{}\n", update->ntimestep); + header += fmt::format("ITEM: NUMBER OF ATOMS\n{}\n", ndump); + if (domain->triclinic == 0) { + header += fmt::format("ITEM: BOX BOUNDS {}\n", boundstr); + header += fmt::format("{0:-1.16e} {1:-1.16e}\n", boxxlo, boxxhi); + header += fmt::format("{0:-1.16e} {1:-1.16e}\n", boxylo, boxyhi); + header += fmt::format("{0:-1.16e} {1:-1.16e}\n", boxzlo, boxzhi); + } else { + header += fmt::format("ITEM: BOX BOUNDS xy xz yz {}\n", boundstr); + header += fmt::format("{0:-1.16e} {1:-1.16e} {2:-1.16e}\n", boxxlo, boxxhi, boxxy); + header += fmt::format("{0:-1.16e} {1:-1.16e} {2:-1.16e}\n", boxylo, boxyhi, boxxz); + header += fmt::format("{0:-1.16e} {1:-1.16e} {2:-1.16e}\n", boxzlo, boxzhi, boxyz); + } + header += fmt::format("ITEM: ATOMS {}\n", columns); + + writer.write(header.c_str(), header.length()); } } @@ -142,7 +133,35 @@ void DumpCustomGZ::write_header(bigint ndump) void DumpCustomGZ::write_data(int n, double *mybuf) { - gzwrite(gzFp,mybuf,sizeof(char)*n); + if (buffer_flag == 1) { + writer.write(mybuf, n); + } else { + constexpr size_t VBUFFER_SIZE = 256; + char vbuffer[VBUFFER_SIZE]; + int m = 0; + for (int i = 0; i < n; i++) { + for (int j = 0; j < nfield; j++) { + int written = 0; + if (vtype[j] == Dump::INT) { + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], static_cast (mybuf[m])); + } else if (vtype[j] == Dump::DOUBLE) { + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], mybuf[m]); + } else if (vtype[j] == Dump::STRING) { + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], typenames[(int) mybuf[m]]); + } else if (vtype[j] == Dump::BIGINT) { + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], static_cast (mybuf[m])); + } + + if (written > 0) { + writer.write(vbuffer, written); + } else if (written < 0) { + error->one(FLERR, "Error while writing dump custom/gz output"); + } + m++; + } + writer.write("\n", 1); + } + } } /* ---------------------------------------------------------------------- */ @@ -152,11 +171,11 @@ void DumpCustomGZ::write() DumpCustom::write(); if (filewriter) { if (multifile) { - gzclose(gzFp); - gzFp = nullptr; + writer.close(); } else { - if (flush_flag) - gzflush(gzFp,Z_SYNC_FLUSH); + if (flush_flag && writer.isopen()) { + writer.flush(); + } } } } @@ -167,14 +186,15 @@ int DumpCustomGZ::modify_param(int narg, char **arg) { int consumed = DumpCustom::modify_param(narg, arg); if (consumed == 0) { - if (strcmp(arg[0],"compression_level") == 0) { - if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); - int min_level = Z_DEFAULT_COMPRESSION; - int max_level = Z_BEST_COMPRESSION; - compression_level = utils::inumeric(FLERR, arg[1], false, lmp); - if (compression_level < min_level || compression_level > max_level) - error->all(FLERR, fmt::format("Illegal dump_modify command: compression level must in the range of [{}, {}]", min_level, max_level)); - return 2; + try { + if (strcmp(arg[0],"compression_level") == 0) { + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); + int compression_level = utils::inumeric(FLERR, arg[1], false, lmp); + writer.setCompressionLevel(compression_level); + return 2; + } + } catch (FileWriterException &e) { + error->one(FLERR, fmt::format("Illegal dump_modify command: {}", e.what())); } } return consumed; diff --git a/src/COMPRESS/dump_custom_gz.h b/src/COMPRESS/dump_custom_gz.h index 184f3563f1..db30b944ec 100644 --- a/src/COMPRESS/dump_custom_gz.h +++ b/src/COMPRESS/dump_custom_gz.h @@ -21,7 +21,7 @@ DumpStyle(custom/gz,DumpCustomGZ) #define LMP_DUMP_CUSTOM_GZ_H #include "dump_custom.h" -#include +#include "gz_file_writer.h" namespace LAMMPS_NS { @@ -31,8 +31,7 @@ class DumpCustomGZ : public DumpCustom { virtual ~DumpCustomGZ(); protected: - int compression_level; - gzFile gzFp; // file pointer for the compressed output stream + GzFileWriter writer; virtual void openfile(); virtual void write_header(bigint); diff --git a/src/COMPRESS/dump_custom_zstd.cpp b/src/COMPRESS/dump_custom_zstd.cpp index 3aa3f874ea..b3f0971bf5 100644 --- a/src/COMPRESS/dump_custom_zstd.cpp +++ b/src/COMPRESS/dump_custom_zstd.cpp @@ -20,7 +20,6 @@ #include "domain.h" #include "dump_custom_zstd.h" #include "error.h" -#include "file_writer.h" #include "update.h" #include @@ -79,7 +78,9 @@ void DumpCustomZstd::openfile() nameslist[numfiles] = utils::strdup(filecurrent); ++numfiles; } else { - remove(nameslist[fileidx]); + if (remove(nameslist[fileidx]) != 0) { + error->warning(FLERR, fmt::format("Could not delete {}", nameslist[fileidx])); + } delete[] nameslist[fileidx]; nameslist[fileidx] = utils::strdup(filecurrent); fileidx = (fileidx + 1) % maxfiles; @@ -145,7 +146,35 @@ void DumpCustomZstd::write_header(bigint ndump) void DumpCustomZstd::write_data(int n, double *mybuf) { - writer.write(mybuf, n); + if (buffer_flag == 1) { + writer.write(mybuf, n); + } else { + constexpr size_t VBUFFER_SIZE = 256; + char vbuffer[VBUFFER_SIZE]; + int m = 0; + for (int i = 0; i < n; i++) { + for (int j = 0; j < nfield; j++) { + int written = 0; + if (vtype[j] == Dump::INT) { + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], static_cast (mybuf[m])); + } else if (vtype[j] == Dump::DOUBLE) { + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], mybuf[m]); + } else if (vtype[j] == Dump::STRING) { + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], typenames[(int) mybuf[m]]); + } else if (vtype[j] == Dump::BIGINT) { + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], static_cast (mybuf[m])); + } + + if (written > 0) { + writer.write(vbuffer, written); + } else if (written < 0) { + error->one(FLERR, "Error while writing dump custom/gz output"); + } + m++; + } + writer.write("\n", 1); + } + } } /* ---------------------------------------------------------------------- */ @@ -184,7 +213,7 @@ int DumpCustomZstd::modify_param(int narg, char **arg) return 2; } } catch (FileWriterException &e) { - error->one(FLERR, e.what()); + error->one(FLERR, fmt::format("Illegal dump_modify command: {}", e.what())); } } return consumed; diff --git a/src/COMPRESS/dump_local_gz.cpp b/src/COMPRESS/dump_local_gz.cpp index e8065a848a..7ffb8d80ff 100644 --- a/src/COMPRESS/dump_local_gz.cpp +++ b/src/COMPRESS/dump_local_gz.cpp @@ -11,39 +11,28 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "dump_local_gz.h" #include "domain.h" +#include "dump_local_gz.h" #include "error.h" #include "update.h" - #include - using namespace LAMMPS_NS; DumpLocalGZ::DumpLocalGZ(LAMMPS *lmp, int narg, char **arg) : DumpLocal(lmp, narg, arg) { - gzFp = nullptr; - - compression_level = Z_BEST_COMPRESSION; - if (!compressed) error->all(FLERR,"Dump local/gz only writes compressed files"); } - /* ---------------------------------------------------------------------- */ DumpLocalGZ::~DumpLocalGZ() { - if (gzFp) gzclose(gzFp); - gzFp = nullptr; - fp = nullptr; } - /* ---------------------------------------------------------------------- generic opening of a dump file ASCII or binary or gzipped @@ -82,7 +71,9 @@ void DumpLocalGZ::openfile() nameslist[numfiles] = utils::strdup(filecurrent); ++numfiles; } else { - remove(nameslist[fileidx]); + if (remove(nameslist[fileidx]) != 0) { + error->warning(FLERR, fmt::format("Could not delete {}", nameslist[fileidx])); + } delete[] nameslist[fileidx]; nameslist[fileidx] = utils::strdup(filecurrent); fileidx = (fileidx + 1) % maxfiles; @@ -93,17 +84,12 @@ void DumpLocalGZ::openfile() // each proc with filewriter = 1 opens a file if (filewriter) { - std::string mode; - if (append_flag) { - mode = fmt::format("ab{}", compression_level); - } else { - mode = fmt::format("wb{}", compression_level); + try { + writer.open(filecurrent, append_flag); + } catch (FileWriterException &e) { + error->one(FLERR, e.what()); } - - gzFp = gzopen(filecurrent, mode.c_str()); - - if (gzFp == nullptr) error->one(FLERR,"Cannot open dump file"); - } else gzFp = nullptr; + } // delete string with timestep replaced @@ -112,29 +98,34 @@ void DumpLocalGZ::openfile() void DumpLocalGZ::write_header(bigint ndump) { + std::string header; + if ((multiproc) || (!multiproc && me == 0)) { if (unit_flag && !unit_count) { ++unit_count; - gzprintf(gzFp,"ITEM: UNITS\n%s\n",update->unit_style); + header = fmt::format("ITEM: UNITS\n{}\n",update->unit_style); } - if (time_flag) gzprintf(gzFp,"ITEM: TIME\n%.16g\n",compute_time()); - gzprintf(gzFp,"ITEM: TIMESTEP\n"); - gzprintf(gzFp,BIGINT_FORMAT "\n",update->ntimestep); - gzprintf(gzFp,"ITEM: NUMBER OF %s\n",label); - gzprintf(gzFp,BIGINT_FORMAT "\n",ndump); - if (domain->triclinic) { - gzprintf(gzFp,"ITEM: BOX BOUNDS xy xz yz %s\n",boundstr); - gzprintf(gzFp,"%-1.16e %-1.16e %-1.16e\n",boxxlo,boxxhi,boxxy); - gzprintf(gzFp,"%-1.16e %-1.16e %-1.16e\n",boxylo,boxyhi,boxxz); - gzprintf(gzFp,"%-1.16e %-1.16e %-1.16e\n",boxzlo,boxzhi,boxyz); - } else { - gzprintf(gzFp,"ITEM: BOX BOUNDS %s\n",boundstr); - gzprintf(gzFp,"%-1.16e %-1.16e\n",boxxlo,boxxhi); - gzprintf(gzFp,"%-1.16e %-1.16e\n",boxylo,boxyhi); - gzprintf(gzFp,"%-1.16e %-1.16e\n",boxzlo,boxzhi); + if (time_flag) { + header += fmt::format("ITEM: TIME\n{0:.16g}\n", compute_time()); } - gzprintf(gzFp,"ITEM: %s %s\n",label,columns); + + header += fmt::format("ITEM: TIMESTEP\n{}\n", update->ntimestep); + header += fmt::format("ITEM: NUMBER OF {}\n{}\n", label, ndump); + if (domain->triclinic == 0) { + header += fmt::format("ITEM: BOX BOUNDS {}\n", boundstr); + header += fmt::format("{0:-1.16e} {1:-1.16e}\n", boxxlo, boxxhi); + header += fmt::format("{0:-1.16e} {1:-1.16e}\n", boxylo, boxyhi); + header += fmt::format("{0:-1.16e} {1:-1.16e}\n", boxzlo, boxzhi); + } else { + header += fmt::format("ITEM: BOX BOUNDS xy xz yz {}\n", boundstr); + header += fmt::format("{0:-1.16e} {1:-1.16e} {2:-1.16e}\n", boxxlo, boxxhi, boxxy); + header += fmt::format("{0:-1.16e} {1:-1.16e} {2:-1.16e}\n", boxylo, boxyhi, boxxz); + header += fmt::format("{0:-1.16e} {1:-1.16e} {2:-1.16e}\n", boxzlo, boxzhi, boxyz); + } + header += fmt::format("ITEM: {} {}\n", label, columns); + + writer.write(header.c_str(), header.length()); } } @@ -143,19 +134,32 @@ void DumpLocalGZ::write_header(bigint ndump) void DumpLocalGZ::write_data(int n, double *mybuf) { if (buffer_flag == 1) { - gzwrite(gzFp,mybuf,sizeof(char)*n); - + writer.write(mybuf, sizeof(char)*n); } else { - int i,j; + constexpr size_t VBUFFER_SIZE = 256; + char vbuffer[VBUFFER_SIZE]; int m = 0; - for (i = 0; i < n; i++) { - for (j = 0; j < size_one; j++) { - if (vtype[j] == INT) - gzprintf(gzFp,vformat[j],static_cast (mybuf[m])); - else gzprintf(gzFp,vformat[j],mybuf[m]); + for (int i = 0; i < n; i++) { + for (int j = 0; j < size_one; j++) { + int written = 0; + if (vtype[j] == Dump::INT) { + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], static_cast (mybuf[m])); + } else if (vtype[j] == Dump::DOUBLE) { + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], mybuf[m]); + } else if (vtype[j] == Dump::BIGINT) { + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], static_cast (mybuf[m])); + } else { + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], mybuf[m]); + } + + if (written > 0) { + writer.write(vbuffer, written); + } else if (written < 0) { + error->one(FLERR, "Error while writing dump local/gz output"); + } m++; } - gzprintf(gzFp,"\n"); + writer.write("\n", 1); } } } @@ -167,11 +171,11 @@ void DumpLocalGZ::write() DumpLocal::write(); if (filewriter) { if (multifile) { - gzclose(gzFp); - gzFp = nullptr; + writer.close(); } else { - if (flush_flag) - gzflush(gzFp,Z_SYNC_FLUSH); + if (flush_flag && writer.isopen()) { + writer.flush(); + } } } } @@ -182,14 +186,15 @@ int DumpLocalGZ::modify_param(int narg, char **arg) { int consumed = DumpLocal::modify_param(narg, arg); if (consumed == 0) { - if (strcmp(arg[0],"compression_level") == 0) { - if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); - int min_level = Z_DEFAULT_COMPRESSION; - int max_level = Z_BEST_COMPRESSION; - compression_level = utils::inumeric(FLERR, arg[1], false, lmp); - if (compression_level < min_level || compression_level > max_level) - error->all(FLERR, fmt::format("Illegal dump_modify command: compression level must in the range of [{}, {}]", min_level, max_level)); - return 2; + try { + if (strcmp(arg[0],"compression_level") == 0) { + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); + int compression_level = utils::inumeric(FLERR, arg[1], false, lmp); + writer.setCompressionLevel(compression_level); + return 2; + } + } catch (FileWriterException &e) { + error->one(FLERR, fmt::format("Illegal dump_modify command: {}", e.what())); } } return consumed; diff --git a/src/COMPRESS/dump_local_gz.h b/src/COMPRESS/dump_local_gz.h index b3f7c7dcf8..7feb6a8945 100644 --- a/src/COMPRESS/dump_local_gz.h +++ b/src/COMPRESS/dump_local_gz.h @@ -21,7 +21,7 @@ DumpStyle(local/gz,DumpLocalGZ) #define LMP_DUMP_LOCAL_GZ_H #include "dump_local.h" -#include +#include "gz_file_writer.h" namespace LAMMPS_NS { @@ -31,8 +31,7 @@ class DumpLocalGZ : public DumpLocal { virtual ~DumpLocalGZ(); protected: - int compression_level; - gzFile gzFp; // file pointer for the compressed output stream + GzFileWriter writer; virtual void openfile(); virtual void write_header(bigint); diff --git a/src/COMPRESS/dump_local_zstd.cpp b/src/COMPRESS/dump_local_zstd.cpp index d26555d282..4d7fe9361b 100644 --- a/src/COMPRESS/dump_local_zstd.cpp +++ b/src/COMPRESS/dump_local_zstd.cpp @@ -17,15 +17,13 @@ #ifdef LAMMPS_ZSTD -#include "dump_local_zstd.h" #include "domain.h" +#include "dump_local_zstd.h" #include "error.h" #include "update.h" - #include - using namespace LAMMPS_NS; DumpLocalZstd::DumpLocalZstd(LAMMPS *lmp, int narg, char **arg) : @@ -42,7 +40,6 @@ DumpLocalZstd::~DumpLocalZstd() { } - /* ---------------------------------------------------------------------- generic opening of a dump file ASCII or binary or gzipped @@ -81,7 +78,9 @@ void DumpLocalZstd::openfile() nameslist[numfiles] = utils::strdup(filecurrent); ++numfiles; } else { - remove(nameslist[fileidx]); + if (remove(nameslist[fileidx]) != 0) { + error->warning(FLERR, fmt::format("Could not delete {}", nameslist[fileidx])); + } delete[] nameslist[fileidx]; nameslist[fileidx] = utils::strdup(filecurrent); fileidx = (fileidx + 1) % maxfiles; @@ -145,7 +144,35 @@ void DumpLocalZstd::write_header(bigint ndump) void DumpLocalZstd::write_data(int n, double *mybuf) { - writer.write(mybuf, sizeof(char)*n); + if (buffer_flag == 1) { + writer.write(mybuf, sizeof(char)*n); + } else { + constexpr size_t VBUFFER_SIZE = 256; + char vbuffer[VBUFFER_SIZE]; + int m = 0; + for (int i = 0; i < n; i++) { + for (int j = 0; j < size_one; j++) { + int written = 0; + if (vtype[j] == Dump::INT) { + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], static_cast (mybuf[m])); + } else if (vtype[j] == Dump::DOUBLE) { + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], mybuf[m]); + } else if (vtype[j] == Dump::BIGINT) { + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], static_cast (mybuf[m])); + } else { + written = snprintf(vbuffer, VBUFFER_SIZE, vformat[j], mybuf[m]); + } + + if (written > 0) { + writer.write(vbuffer, written); + } else if (written < 0) { + error->one(FLERR, "Error while writing dump local/gz output"); + } + m++; + } + writer.write("\n", 1); + } + } } /* ---------------------------------------------------------------------- */ @@ -184,7 +211,7 @@ int DumpLocalZstd::modify_param(int narg, char **arg) return 2; } } catch (FileWriterException &e) { - error->one(FLERR, e.what()); + error->one(FLERR, fmt::format("Illegal dump_modify command: {}", e.what())); } } return consumed; diff --git a/src/COMPRESS/dump_xyz_gz.cpp b/src/COMPRESS/dump_xyz_gz.cpp index c63d354e80..abd6e7fa78 100644 --- a/src/COMPRESS/dump_xyz_gz.cpp +++ b/src/COMPRESS/dump_xyz_gz.cpp @@ -15,19 +15,13 @@ #include "error.h" #include "update.h" - #include - using namespace LAMMPS_NS; DumpXYZGZ::DumpXYZGZ(LAMMPS *lmp, int narg, char **arg) : DumpXYZ(lmp, narg, arg) { - gzFp = nullptr; - - compression_level = Z_BEST_COMPRESSION; - if (!compressed) error->all(FLERR,"Dump xyz/gz only writes compressed files"); } @@ -37,12 +31,8 @@ DumpXYZGZ::DumpXYZGZ(LAMMPS *lmp, int narg, char **arg) : DumpXYZGZ::~DumpXYZGZ() { - if (gzFp) gzclose(gzFp); - gzFp = nullptr; - fp = nullptr; } - /* ---------------------------------------------------------------------- generic opening of a dump file ASCII or binary or gzipped @@ -81,7 +71,9 @@ void DumpXYZGZ::openfile() nameslist[numfiles] = utils::strdup(filecurrent); ++numfiles; } else { - remove(nameslist[fileidx]); + if (remove(nameslist[fileidx]) != 0) { + error->warning(FLERR, fmt::format("Could not delete {}", nameslist[fileidx])); + } delete[] nameslist[fileidx]; nameslist[fileidx] = utils::strdup(filecurrent); fileidx = (fileidx + 1) % maxfiles; @@ -92,17 +84,12 @@ void DumpXYZGZ::openfile() // each proc with filewriter = 1 opens a file if (filewriter) { - std::string mode; - if (append_flag) { - mode = fmt::format("ab{}", compression_level); - } else { - mode = fmt::format("wb{}", compression_level); + try { + writer.open(filecurrent, append_flag); + } catch (FileWriterException &e) { + error->one(FLERR, e.what()); } - - gzFp = gzopen(filecurrent, mode.c_str()); - - if (gzFp == nullptr) error->one(FLERR,"Cannot open dump file"); - } else gzFp = nullptr; + } // delete string with timestep replaced @@ -112,8 +99,9 @@ void DumpXYZGZ::openfile() void DumpXYZGZ::write_header(bigint ndump) { if (me == 0) { - gzprintf(gzFp,BIGINT_FORMAT "\n",ndump); - gzprintf(gzFp,"Atoms. Timestep: " BIGINT_FORMAT "\n",update->ntimestep); + std::string header = fmt::format("{}\n", ndump); + header += fmt::format("Atoms. Timestep: {}\n", update->ntimestep); + writer.write(header.c_str(), header.length()); } } @@ -121,7 +109,24 @@ void DumpXYZGZ::write_header(bigint ndump) void DumpXYZGZ::write_data(int n, double *mybuf) { - gzwrite(gzFp,mybuf,sizeof(char)*n); + if (buffer_flag) { + writer.write(mybuf, n); + } else { + constexpr size_t VBUFFER_SIZE = 256; + char vbuffer[VBUFFER_SIZE]; + int m = 0; + for (int i = 0; i < n; i++) { + int written = snprintf(vbuffer, VBUFFER_SIZE, format, + typenames[static_cast (mybuf[m+1])], + mybuf[m+2],mybuf[m+3],mybuf[m+4]); + if (written > 0) { + writer.write(vbuffer, written); + } else if (written < 0) { + error->one(FLERR, "Error while writing dump xyz/gz output"); + } + m += size_one; + } + } } /* ---------------------------------------------------------------------- */ @@ -131,11 +136,11 @@ void DumpXYZGZ::write() DumpXYZ::write(); if (filewriter) { if (multifile) { - gzclose(gzFp); - gzFp = nullptr; + writer.close(); } else { - if (flush_flag) - gzflush(gzFp,Z_SYNC_FLUSH); + if (flush_flag && writer.isopen()) { + writer.flush(); + } } } } @@ -146,14 +151,15 @@ int DumpXYZGZ::modify_param(int narg, char **arg) { int consumed = DumpXYZ::modify_param(narg, arg); if (consumed == 0) { - if (strcmp(arg[0],"compression_level") == 0) { - if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); - int min_level = Z_DEFAULT_COMPRESSION; - int max_level = Z_BEST_COMPRESSION; - compression_level = utils::inumeric(FLERR, arg[1], false, lmp); - if (compression_level < min_level || compression_level > max_level) - error->all(FLERR, fmt::format("Illegal dump_modify command: compression level must in the range of [{}, {}]", min_level, max_level)); - return 2; + try { + if (strcmp(arg[0],"compression_level") == 0) { + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); + int compression_level = utils::inumeric(FLERR, arg[1], false, lmp); + writer.setCompressionLevel(compression_level); + return 2; + } + } catch (FileWriterException &e) { + error->one(FLERR, fmt::format("Illegal dump_modify command: {}", e.what())); } } return consumed; diff --git a/src/COMPRESS/dump_xyz_gz.h b/src/COMPRESS/dump_xyz_gz.h index 834db488a5..2fce0a3f5a 100644 --- a/src/COMPRESS/dump_xyz_gz.h +++ b/src/COMPRESS/dump_xyz_gz.h @@ -21,7 +21,7 @@ DumpStyle(xyz/gz,DumpXYZGZ) #define LMP_DUMP_XYZ_GZ_H #include "dump_xyz.h" -#include +#include "gz_file_writer.h" namespace LAMMPS_NS { @@ -31,8 +31,7 @@ class DumpXYZGZ : public DumpXYZ { virtual ~DumpXYZGZ(); protected: - int compression_level; - gzFile gzFp; // file pointer for the compressed output stream + GzFileWriter writer; virtual void openfile(); virtual void write_header(bigint); diff --git a/src/COMPRESS/dump_xyz_zstd.cpp b/src/COMPRESS/dump_xyz_zstd.cpp index 7c5b73d0ba..74e482717b 100644 --- a/src/COMPRESS/dump_xyz_zstd.cpp +++ b/src/COMPRESS/dump_xyz_zstd.cpp @@ -19,7 +19,6 @@ #include "dump_xyz_zstd.h" #include "error.h" -#include "file_writer.h" #include "update.h" #include @@ -79,7 +78,9 @@ void DumpXYZZstd::openfile() nameslist[numfiles] = utils::strdup(filecurrent); ++numfiles; } else { - remove(nameslist[fileidx]); + if (remove(nameslist[fileidx]) != 0) { + error->warning(FLERR, fmt::format("Could not delete {}", nameslist[fileidx])); + } delete[] nameslist[fileidx]; nameslist[fileidx] = utils::strdup(filecurrent); fileidx = (fileidx + 1) % maxfiles; @@ -119,7 +120,24 @@ void DumpXYZZstd::write_header(bigint ndump) void DumpXYZZstd::write_data(int n, double *mybuf) { - writer.write(mybuf, n); + if (buffer_flag) { + writer.write(mybuf, n); + } else { + constexpr size_t VBUFFER_SIZE = 256; + char vbuffer[VBUFFER_SIZE]; + int m = 0; + for (int i = 0; i < n; i++) { + int written = snprintf(vbuffer, VBUFFER_SIZE, format, + typenames[static_cast (mybuf[m+1])], + mybuf[m+2],mybuf[m+3],mybuf[m+4]); + if (written > 0) { + writer.write(vbuffer, written); + } else if (written < 0) { + error->one(FLERR, "Error while writing dump xyz/gz output"); + } + m += size_one; + } + } } /* ---------------------------------------------------------------------- */ @@ -158,7 +176,7 @@ int DumpXYZZstd::modify_param(int narg, char **arg) return 2; } } catch (FileWriterException &e) { - error->one(FLERR, e.what()); + error->one(FLERR, fmt::format("Illegal dump_modify command: {}", e.what())); } } return consumed; diff --git a/src/COMPRESS/gz_file_writer.cpp b/src/COMPRESS/gz_file_writer.cpp new file mode 100644 index 0000000000..36b9161cc1 --- /dev/null +++ b/src/COMPRESS/gz_file_writer.cpp @@ -0,0 +1,105 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://lammps.sandia.gov/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Richard Berger (Temple U) +------------------------------------------------------------------------- */ + +#include "gz_file_writer.h" +#include +#include "fmt/format.h" + +using namespace LAMMPS_NS; + +GzFileWriter::GzFileWriter() : FileWriter(), + compression_level(Z_BEST_COMPRESSION), + gzFp(nullptr) +{ +} + +/* ---------------------------------------------------------------------- */ + +GzFileWriter::~GzFileWriter() +{ + close(); +} + +/* ---------------------------------------------------------------------- */ + +void GzFileWriter::open(const std::string &path, bool append) +{ + if (isopen()) return; + + std::string mode; + if (append) { + mode = fmt::format("ab{}", mode, compression_level); + } else { + mode = fmt::format("wb{}", mode, compression_level); + } + + gzFp = gzopen(path.c_str(), mode.c_str()); + + if (gzFp == nullptr) + throw FileWriterException(fmt::format("Could not open file '{}'", path)); +} + +/* ---------------------------------------------------------------------- */ + +size_t GzFileWriter::write(const void * buffer, size_t length) +{ + if (!isopen()) return 0; + + return gzwrite(gzFp, buffer, length); +} + +/* ---------------------------------------------------------------------- */ + +void GzFileWriter::flush() +{ + if (!isopen()) return; + + gzflush(gzFp, Z_SYNC_FLUSH); +} + +/* ---------------------------------------------------------------------- */ + +void GzFileWriter::close() +{ + if (!isopen()) return; + + gzclose(gzFp); + gzFp = nullptr; +} + +/* ---------------------------------------------------------------------- */ + +bool GzFileWriter::isopen() const +{ + return gzFp; +} + +/* ---------------------------------------------------------------------- */ + +void GzFileWriter::setCompressionLevel(int level) +{ + if (isopen()) + throw FileWriterException("Compression level can not be changed while file is open"); + + const int min_level = Z_DEFAULT_COMPRESSION; + const int max_level = Z_BEST_COMPRESSION; + + if (level < min_level || level > max_level) + throw FileWriterException(fmt::format("Compression level must in the range of [{}, {}]", min_level, max_level)); + + compression_level = level; +} diff --git a/src/COMPRESS/gz_file_writer.h b/src/COMPRESS/gz_file_writer.h new file mode 100644 index 0000000000..28473b1164 --- /dev/null +++ b/src/COMPRESS/gz_file_writer.h @@ -0,0 +1,47 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Richard Berger (Temple U) +------------------------------------------------------------------------- */ + +#ifndef LMP_GZ_FILE_WRITER_H +#define LMP_GZ_FILE_WRITER_H + +#include "file_writer.h" +#include +#include +#include + +namespace LAMMPS_NS { + +class GzFileWriter : public FileWriter { + int compression_level; + + gzFile gzFp; // file pointer for the compressed output stream +public: + GzFileWriter(); + virtual ~GzFileWriter(); + virtual void open(const std::string &path, bool append = false) override; + virtual void close() override; + virtual void flush() override; + virtual size_t write(const void * buffer, size_t length) override; + virtual bool isopen() const override; + + void setCompressionLevel(int level); +}; + + +} + +#endif diff --git a/src/COMPRESS/zstd_file_writer.cpp b/src/COMPRESS/zstd_file_writer.cpp index f82ade605c..3356fc1ad5 100644 --- a/src/COMPRESS/zstd_file_writer.cpp +++ b/src/COMPRESS/zstd_file_writer.cpp @@ -46,11 +46,15 @@ ZstdFileWriter::~ZstdFileWriter() /* ---------------------------------------------------------------------- */ -void ZstdFileWriter::open(const std::string &path) +void ZstdFileWriter::open(const std::string &path, bool append) { if (isopen()) return; - fp = fopen(path.c_str(), "wb"); + if (append) { + fp = fopen(path.c_str(), "ab"); + } else { + fp = fopen(path.c_str(), "wb"); + } if (!fp) { throw FileWriterException(fmt::format("Could not open file '{}'", path)); diff --git a/src/COMPRESS/zstd_file_writer.h b/src/COMPRESS/zstd_file_writer.h index 30afc86994..a4dbbdff64 100644 --- a/src/COMPRESS/zstd_file_writer.h +++ b/src/COMPRESS/zstd_file_writer.h @@ -38,7 +38,7 @@ class ZstdFileWriter : public FileWriter { public: ZstdFileWriter(); virtual ~ZstdFileWriter(); - virtual void open(const std::string &path) override; + virtual void open(const std::string &path, bool append = false) override; virtual void close() override; virtual void flush() override; virtual size_t write(const void * buffer, size_t length) override; diff --git a/src/KIM/kim_command.h b/src/KIM/kim_command.h index f327e4f2f3..b27b0e0873 100644 --- a/src/KIM/kim_command.h +++ b/src/KIM/kim_command.h @@ -62,13 +62,13 @@ CommandStyle(kim,KimCommand) #ifndef LMP_KIM_COMMAND_H #define LMP_KIM_COMMAND_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class KimCommand : protected Pointers { +class KimCommand : public Command { public: - KimCommand(class LAMMPS *lmp) : Pointers(lmp) {}; + KimCommand(class LAMMPS *lmp) : Command(lmp) {}; void command(int, char **); }; diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 7c35f81891..0ac90a53f2 100755 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -63,6 +63,8 @@ action atom_vec_bond_kokkos.cpp atom_vec_bond.cpp action atom_vec_bond_kokkos.h atom_vec_bond.h action atom_vec_charge_kokkos.cpp action atom_vec_charge_kokkos.h +action atom_vec_spin_kokkos.cpp +action atom_vec_spin_kokkos.h action atom_vec_dpd_kokkos.cpp atom_vec_dpd.cpp action atom_vec_dpd_kokkos.h atom_vec_dpd.h action atom_vec_full_kokkos.cpp atom_vec_full.cpp diff --git a/src/KOKKOS/atom_kokkos.cpp b/src/KOKKOS/atom_kokkos.cpp index 19cfe02c96..98b33368b7 100644 --- a/src/KOKKOS/atom_kokkos.cpp +++ b/src/KOKKOS/atom_kokkos.cpp @@ -76,6 +76,12 @@ AtomKokkos::~AtomKokkos() memoryKK->destroy_kokkos(k_improper_atom3, improper_atom3); memoryKK->destroy_kokkos(k_improper_atom4, improper_atom4); + // SPIN package + + memoryKK->destroy_kokkos(k_sp, sp); + memoryKK->destroy_kokkos(k_fm, fm); + memoryKK->destroy_kokkos(k_fm_long, fm_long); + // USER-DPD package memoryKK->destroy_kokkos(k_uCond,uCond); memoryKK->destroy_kokkos(k_uMech,uMech); diff --git a/src/KOKKOS/atom_kokkos.h b/src/KOKKOS/atom_kokkos.h index c875817a70..f5cf4916cf 100644 --- a/src/KOKKOS/atom_kokkos.h +++ b/src/KOKKOS/atom_kokkos.h @@ -54,6 +54,11 @@ class AtomKokkos : public Atom { DAT::tdual_float_2d k_dvector; + // SPIN package + + DAT::tdual_float_1d_4 k_sp; + DAT::tdual_f_array k_fm; + DAT::tdual_f_array k_fm_long; // USER-DPD package DAT::tdual_efloat_1d k_uCond, k_uMech, k_uChem, k_uCG, k_uCGnew, diff --git a/src/KOKKOS/atom_vec_spin_kokkos.cpp b/src/KOKKOS/atom_vec_spin_kokkos.cpp new file mode 100644 index 0000000000..399ab23a5f --- /dev/null +++ b/src/KOKKOS/atom_vec_spin_kokkos.cpp @@ -0,0 +1,1310 @@ +/* ---------------------------------------------------------------------- + + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. + +------------------------------------------------------------------------- */ + +/* ------------------------------------------------------------------------ + Contributing authors: Julien Tranchida (SNL) + Aidan Thompson (SNL) + + Please cite the related publication: + Tranchida, J., Plimpton, S. J., Thibaudeau, P., & Thompson, A. P. (2018). + Massively parallel symplectic algorithm for coupled magnetic spin dynamics + and molecular dynamics. Journal of Computational Physics. +------------------------------------------------------------------------- */ + +#include "atom_vec_spin_kokkos.h" + +#include "atom_kokkos.h" +#include "atom_masks.h" +#include "comm_kokkos.h" +#include "domain.h" +#include "error.h" +#include "fix.h" +#include "memory_kokkos.h" +#include "modify.h" + +using namespace LAMMPS_NS; + +#define DELTA 10 + +/* ---------------------------------------------------------------------- */ + +AtomVecSpinKokkos::AtomVecSpinKokkos(LAMMPS *lmp) : AtomVecKokkos(lmp) +{ + molecular = 0; + mass_type = 1; + forceclearflag = 1; + + comm_x_only = comm_f_only = 0; + size_forward = 7; + size_reverse = 9; + size_border = 10; + size_velocity = 3; + size_data_atom = 9; + size_data_vel = 4; + xcol_data = 4; + + atom->sp_flag = 1; + + k_count = DAT::tdual_int_1d("atom::k_count",1); + atomKK = (AtomKokkos *) atom; + commKK = (CommKokkos *) comm; +} + +/* ---------------------------------------------------------------------- + grow atom arrays + n = 0 grows arrays by a chunk + n > 0 allocates arrays to size n +------------------------------------------------------------------------- */ + +void AtomVecSpinKokkos::grow(int n) +{ + int step = MAX(DELTA,nmax*0.01); + if (n == 0) nmax += step; + else nmax = n; + atomKK->nmax = nmax; + if (nmax < 0 || nmax > MAXSMALLINT) + error->one(FLERR,"Per-processor system is too big"); + + atomKK->sync(Device,ALL_MASK); + atomKK->modified(Device,ALL_MASK); + + memoryKK->grow_kokkos(atomKK->k_tag,atomKK->tag,nmax,"atom:tag"); + memoryKK->grow_kokkos(atomKK->k_type,atomKK->type,nmax,"atom:type"); + memoryKK->grow_kokkos(atomKK->k_mask,atomKK->mask,nmax,"atom:mask"); + memoryKK->grow_kokkos(atomKK->k_image,atomKK->image,nmax,"atom:image"); + + // allocating mech. quantities + + memoryKK->grow_kokkos(atomKK->k_x,atomKK->x,nmax,"atom:x"); + memoryKK->grow_kokkos(atomKK->k_v,atomKK->v,nmax,"atom:v"); + memoryKK->grow_kokkos(atomKK->k_f,atomKK->f,nmax,"atom:f"); + + // allocating mag. quantities + + memoryKK->grow_kokkos(atomKK->k_sp,atomKK->sp,nmax,"atom:sp"); + memoryKK->grow_kokkos(atomKK->k_fm,atomKK->fm,nmax,"atom:fm"); + memoryKK->grow_kokkos(atomKK->k_fm_long,atomKK->fm_long,nmax,"atom:fm_long"); + + grow_pointers(); + atomKK->sync(Host,ALL_MASK); + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); +} + +/* ---------------------------------------------------------------------- + reset local array ptrs +------------------------------------------------------------------------- */ + +void AtomVecSpinKokkos::grow_pointers() +{ + tag = atomKK->tag; + d_tag = atomKK->k_tag.d_view; + h_tag = atomKK->k_tag.h_view; + + type = atomKK->type; + d_type = atomKK->k_type.d_view; + h_type = atomKK->k_type.h_view; + mask = atomKK->mask; + d_mask = atomKK->k_mask.d_view; + h_mask = atomKK->k_mask.h_view; + image = atomKK->image; + d_image = atomKK->k_image.d_view; + h_image = atomKK->k_image.h_view; + + x = atomKK->x; + d_x = atomKK->k_x.d_view; + h_x = atomKK->k_x.h_view; + v = atomKK->v; + d_v = atomKK->k_v.d_view; + h_v = atomKK->k_v.h_view; + f = atomKK->f; + d_f = atomKK->k_f.d_view; + h_f = atomKK->k_f.h_view; + + sp = atomKK->sp; + d_sp = atomKK->k_sp.d_view; + h_sp = atomKK->k_sp.h_view; + fm = atomKK->fm; + d_fm = atomKK->k_fm.d_view; + h_fm = atomKK->k_fm.h_view; + fm_long = atomKK->fm_long; + d_fm_long = atomKK->k_fm_long.d_view; + h_fm_long = atomKK->k_fm_long.h_view; +} + +/* ---------------------------------------------------------------------- + copy atom I info to atom J +------------------------------------------------------------------------- */ + +void AtomVecSpinKokkos::copy(int i, int j, int delflag) +{ + h_tag[j] = h_tag[i]; + h_type[j] = h_type[i]; + mask[j] = mask[i]; + h_image[j] = h_image[i]; + h_x(j,0) = h_x(i,0); + h_x(j,1) = h_x(i,1); + h_x(j,2) = h_x(i,2); + h_v(j,0) = h_v(i,0); + h_v(j,1) = h_v(i,1); + h_v(j,2) = h_v(i,2); + + h_sp(j,0) = h_sp(i,0); + h_sp(j,1) = h_sp(i,1); + h_sp(j,2) = h_sp(i,2); + h_sp(j,3) = h_sp(i,3); + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecSpinKokkos_PackComm { + typedef DeviceType device_type; + + typename ArrayTypes::t_x_array_randomread _x; + typename ArrayTypes::t_sp_array_randomread _sp; + typename ArrayTypes::t_xfloat_2d_um _buf; + typename ArrayTypes::t_int_2d_const _list; + const int _iswap; + X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; + X_FLOAT _pbc[6]; + + AtomVecSpinKokkos_PackComm( + const typename DAT::tdual_x_array &x, + const typename DAT::tdual_float_1d_4 &sp, + const typename DAT::tdual_xfloat_2d &buf, + const typename DAT::tdual_int_2d &list, + const int & iswap, + const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, + const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): + _x(x.view()),_sp(sp.view()), + _list(list.view()),_iswap(iswap), + _xprd(xprd),_yprd(yprd),_zprd(zprd), + _xy(xy),_xz(xz),_yz(yz) { + const size_t maxsend = (buf.view().extent(0)*buf.view().extent(1))/3; + const size_t elements = 7; + buffer_view(_buf,buf,maxsend,elements); + _pbc[0] = pbc[0]; _pbc[1] = pbc[1]; _pbc[2] = pbc[2]; + _pbc[3] = pbc[3]; _pbc[4] = pbc[4]; _pbc[5] = pbc[5]; + }; + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + const int j = _list(_iswap,i); + if (PBC_FLAG == 0) { + _buf(i,0) = _x(j,0); + _buf(i,1) = _x(j,1); + _buf(i,2) = _x(j,2); + _buf(i,3) = _sp(j,0); + _buf(i,4) = _sp(j,1); + _buf(i,5) = _sp(j,2); + _buf(i,6) = _sp(j,3); + } else { + if (TRICLINIC == 0) { + _buf(i,0) = _x(j,0) + _pbc[0]*_xprd; + _buf(i,1) = _x(j,1) + _pbc[1]*_yprd; + _buf(i,2) = _x(j,2) + _pbc[2]*_zprd; + _buf(i,3) = _sp(j,0); + _buf(i,4) = _sp(j,1); + _buf(i,5) = _sp(j,2); + _buf(i,6) = _sp(j,3); + } else { + _buf(i,0) = _x(j,0) + _pbc[0]*_xprd + _pbc[5]*_xy + _pbc[4]*_xz; + _buf(i,1) = _x(j,1) + _pbc[1]*_yprd + _pbc[3]*_yz; + _buf(i,2) = _x(j,2) + _pbc[2]*_zprd; + _buf(i,3) = _sp(j,0); + _buf(i,4) = _sp(j,1); + _buf(i,5) = _sp(j,2); + _buf(i,6) = _sp(j,3); + } + } + } +}; + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecSpinKokkos_PackBorder { + typedef DeviceType device_type; + + typename ArrayTypes::t_xfloat_2d _buf; + const typename ArrayTypes::t_int_2d_const _list; + const int _iswap; + const typename ArrayTypes::t_x_array_randomread _x; + const typename ArrayTypes::t_tagint_1d _tag; + const typename ArrayTypes::t_int_1d _type; + const typename ArrayTypes::t_int_1d _mask; + const typename ArrayTypes::t_sp_array_randomread _sp; + X_FLOAT _dx,_dy,_dz; + + AtomVecSpinKokkos_PackBorder( + const typename ArrayTypes::t_xfloat_2d &buf, + const typename ArrayTypes::t_int_2d_const &list, + const int & iswap, + const typename ArrayTypes::t_x_array &x, + const typename ArrayTypes::t_tagint_1d &tag, + const typename ArrayTypes::t_int_1d &type, + const typename ArrayTypes::t_int_1d &mask, + const typename ArrayTypes::t_sp_array &sp, + const X_FLOAT &dx, const X_FLOAT &dy, const X_FLOAT &dz): + _buf(buf),_list(list),_iswap(iswap), + _x(x),_tag(tag),_type(type),_mask(mask),_sp(sp), + _dx(dx),_dy(dy),_dz(dz) {} + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + const int j = _list(_iswap,i); + if (PBC_FLAG == 0) { + _buf(i,0) = _x(j,0); + _buf(i,1) = _x(j,1); + _buf(i,2) = _x(j,2); + _buf(i,3) = d_ubuf(_tag(j)).d; + _buf(i,4) = d_ubuf(_type(j)).d; + _buf(i,5) = d_ubuf(_mask(j)).d; + _buf(i,6) = _sp(j,0); + _buf(i,7) = _sp(j,1); + _buf(i,8) = _sp(j,2); + _buf(i,9) = _sp(j,3); + } else { + _buf(i,0) = _x(j,0) + _dx; + _buf(i,1) = _x(j,1) + _dy; + _buf(i,2) = _x(j,2) + _dz; + _buf(i,3) = d_ubuf(_tag(j)).d; + _buf(i,4) = d_ubuf(_type(j)).d; + _buf(i,5) = d_ubuf(_mask(j)).d; + _buf(i,6) = _sp(j,0); + _buf(i,7) = _sp(j,1); + _buf(i,8) = _sp(j,2); + _buf(i,9) = _sp(j,3); + } + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecSpinKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, + int pbc_flag, int *pbc, ExecutionSpace space) +{ + X_FLOAT dx,dy,dz; + + if (pbc_flag != 0) { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + if(space==Host) { + AtomVecSpinKokkos_PackBorder f( + buf.view(), k_sendlist.view(), + iswap,h_x,h_tag,h_type,h_mask,h_sp,dx,dy,dz); + Kokkos::parallel_for(n,f); + } else { + AtomVecSpinKokkos_PackBorder f( + buf.view(), k_sendlist.view(), + iswap,d_x,d_tag,d_type,d_mask,d_sp,dx,dy,dz); + Kokkos::parallel_for(n,f); + } + + } else { + dx = dy = dz = 0; + if(space==Host) { + AtomVecSpinKokkos_PackBorder f( + buf.view(), k_sendlist.view(), + iswap,h_x,h_tag,h_type,h_mask,h_sp,dx,dy,dz); + Kokkos::parallel_for(n,f); + } else { + AtomVecSpinKokkos_PackBorder f( + buf.view(), k_sendlist.view(), + iswap,d_x,d_tag,d_type,d_mask,d_sp,dx,dy,dz); + Kokkos::parallel_for(n,f); + } + } + return n*size_border; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecSpinKokkos::pack_border(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + buf[m++] = h_sp(j,0); + buf[m++] = h_sp(j,1); + buf[m++] = h_sp(j,2); + buf[m++] = h_sp(j,3); + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + buf[m++] = h_sp(j,0); + buf[m++] = h_sp(j,1); + buf[m++] = h_sp(j,2); + buf[m++] = h_sp(j,3); + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecSpinKokkos::pack_border_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz,dvx,dvy,dvz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + buf[m++] = h_sp(j,0); + buf[m++] = h_sp(j,1); + buf[m++] = h_sp(j,2); + buf[m++] = h_sp(j,3); + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + buf[m++] = h_sp(j,0); + buf[m++] = h_sp(j,1); + buf[m++] = h_sp(j,2); + buf[m++] = h_sp(j,3); + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + buf[m++] = h_sp(j,0); + buf[m++] = h_sp(j,1); + buf[m++] = h_sp(j,2); + buf[m++] = h_sp(j,3); + if (mask[i] & deform_groupbit) { + buf[m++] = h_v(j,0) + dvx; + buf[m++] = h_v(j,1) + dvy; + buf[m++] = h_v(j,2) + dvz; + } else { + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + } + } + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecSpinKokkos::pack_border_hybrid(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_sp(j,0); + buf[m++] = h_sp(j,1); + buf[m++] = h_sp(j,2); + buf[m++] = h_sp(j,3); + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecSpinKokkos_UnpackBorder { + typedef DeviceType device_type; + + const typename ArrayTypes::t_xfloat_2d_const _buf; + typename ArrayTypes::t_x_array _x; + typename ArrayTypes::t_tagint_1d _tag; + typename ArrayTypes::t_int_1d _type; + typename ArrayTypes::t_int_1d _mask; + typename ArrayTypes::t_sp_array _sp; + int _first; + + + AtomVecSpinKokkos_UnpackBorder( + const typename ArrayTypes::t_xfloat_2d_const &buf, + typename ArrayTypes::t_x_array &x, + typename ArrayTypes::t_tagint_1d &tag, + typename ArrayTypes::t_int_1d &type, + typename ArrayTypes::t_int_1d &mask, + typename ArrayTypes::t_sp_array &sp, + const int& first): + _buf(buf),_x(x),_tag(tag),_type(type),_mask(mask),_sp(sp),_first(first){ + }; + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + _x(i+_first,0) = _buf(i,0); + _x(i+_first,1) = _buf(i,1); + _x(i+_first,2) = _buf(i,2); + _tag(i+_first) = (tagint) d_ubuf(_buf(i,3)).i; + _type(i+_first) = (int) d_ubuf(_buf(i,4)).i; + _mask(i+_first) = (int) d_ubuf(_buf(i,5)).i; + _sp(i+_first,0) = _buf(i,6); + _sp(i+_first,1) = _buf(i,7); + _sp(i+_first,2) = _buf(i,8); + _sp(i+_first,3) = _buf(i,9); + } +}; + +/* ---------------------------------------------------------------------- */ + +void AtomVecSpinKokkos::unpack_border_kokkos(const int &n, const int &first, + const DAT::tdual_xfloat_2d &buf,ExecutionSpace space) { + if (first+n >= nmax) { + grow(first+n+100); + } + if(space==Host) { + struct AtomVecSpinKokkos_UnpackBorder + f(buf.view(),h_x,h_tag,h_type,h_mask,h_sp,first); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecSpinKokkos_UnpackBorder + f(buf.view(),d_x,d_tag,d_type,d_mask,d_sp,first); + Kokkos::parallel_for(n,f); + } + atomKK->modified(space,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK|SP_MASK); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecSpinKokkos::unpack_border(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + + for (i = first; i < last; i++) { + if (i == nmax) { + grow(0); + } + atomKK->modified(Host,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK|SP_MASK); + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_tag(i) = (tagint) ubuf(buf[m++]).i; + h_type(i) = (int) ubuf(buf[m++]).i; + h_mask(i) = (int) ubuf(buf[m++]).i; + h_sp(i,0) = buf[m++]; + h_sp(i,1) = buf[m++]; + h_sp(i,2) = buf[m++]; + h_sp(i,3) = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecSpinKokkos::unpack_border_vel(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + atomKK->modified(Host,X_MASK|V_MASK|TAG_MASK|TYPE_MASK|MASK_MASK|SP_MASK); + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_tag(i) = (tagint) ubuf(buf[m++]).i; + h_type(i) = (int) ubuf(buf[m++]).i; + h_mask(i) = (int) ubuf(buf[m++]).i; + h_sp(i,0) = buf[m++]; + h_sp(i,1) = buf[m++]; + h_sp(i,2) = buf[m++]; + h_sp(i,3) = buf[m++]; + h_v(i,0) = buf[m++]; + h_v(i,1) = buf[m++]; + h_v(i,2) = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecSpinKokkos::unpack_border_hybrid(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) + h_sp(i,0) = buf[m++]; + h_sp(i,1) = buf[m++]; + h_sp(i,2) = buf[m++]; + h_sp(i,3) = buf[m++]; + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecSpinKokkos_PackExchangeFunctor { + typedef DeviceType device_type; + typedef ArrayTypes AT; + typename AT::t_x_array_randomread _x; + typename AT::t_v_array_randomread _v; + typename AT::t_tagint_1d_randomread _tag; + typename AT::t_int_1d_randomread _type; + typename AT::t_int_1d_randomread _mask; + typename AT::t_imageint_1d_randomread _image; + typename AT::t_sp_array_randomread _sp; + typename AT::t_x_array _xw; + typename AT::t_v_array _vw; + typename AT::t_tagint_1d _tagw; + typename AT::t_int_1d _typew; + typename AT::t_int_1d _maskw; + typename AT::t_imageint_1d _imagew; + typename AT::t_sp_array _spw; + + typename AT::t_xfloat_2d_um _buf; + typename AT::t_int_1d_const _sendlist; + typename AT::t_int_1d_const _copylist; + int _nlocal,_dim; + X_FLOAT _lo,_hi; + + AtomVecSpinKokkos_PackExchangeFunctor( + const AtomKokkos* atom, + const typename AT::tdual_xfloat_2d buf, + typename AT::tdual_int_1d sendlist, + typename AT::tdual_int_1d copylist,int nlocal, int dim, + X_FLOAT lo, X_FLOAT hi): + _x(atom->k_x.view()), + _v(atom->k_v.view()), + _tag(atom->k_tag.view()), + _type(atom->k_type.view()), + _mask(atom->k_mask.view()), + _image(atom->k_image.view()), + _sp(atom->k_sp.view()), + _xw(atom->k_x.view()), + _vw(atom->k_v.view()), + _tagw(atom->k_tag.view()), + _typew(atom->k_type.view()), + _maskw(atom->k_mask.view()), + _imagew(atom->k_image.view()), + _spw(atom->k_sp.view()), + _sendlist(sendlist.template view()), + _copylist(copylist.template view()), + _nlocal(nlocal),_dim(dim), + _lo(lo),_hi(hi){ + const size_t elements = 15; + const int maxsendlist = (buf.template view().extent(0)* + buf.template view().extent(1))/elements; + + buffer_view(_buf,buf,maxsendlist,elements); + } + + KOKKOS_INLINE_FUNCTION + void operator() (const int &mysend) const { + const int i = _sendlist(mysend); + _buf(mysend,0) = 15; + _buf(mysend,1) = _x(i,0); + _buf(mysend,2) = _x(i,1); + _buf(mysend,3) = _x(i,2); + _buf(mysend,4) = _v(i,0); + _buf(mysend,5) = _v(i,1); + _buf(mysend,6) = _v(i,2); + _buf(mysend,7) = d_ubuf(_tag[i]).d; + _buf(mysend,8) = d_ubuf(_type[i]).d; + _buf(mysend,9) = d_ubuf(_mask[i]).d; + _buf(mysend,10) = d_ubuf(_image[i]).d; + _buf(mysend,11) = _sp(i,0); + _buf(mysend,12) = _sp(i,1); + _buf(mysend,13) = _sp(i,2); + _buf(mysend,14) = _sp(i,3); + const int j = _copylist(mysend); + + if(j>-1) { + _xw(i,0) = _x(j,0); + _xw(i,1) = _x(j,1); + _xw(i,2) = _x(j,2); + _vw(i,0) = _v(j,0); + _vw(i,1) = _v(j,1); + _vw(i,2) = _v(j,2); + _tagw(i) = _tag(j); + _typew(i) = _type(j); + _maskw(i) = _mask(j); + _imagew(i) = _image(j); + _spw(i,0) = _sp(j,0); + _spw(i,1) = _sp(j,1); + _spw(i,2) = _sp(j,2); + _spw(i,3) = _sp(j,3); + } + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecSpinKokkos::pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d &k_buf, + DAT::tdual_int_1d k_sendlist, + DAT::tdual_int_1d k_copylist, + ExecutionSpace space,int dim, + X_FLOAT lo,X_FLOAT hi ) +{ + if(nsend > (int) (k_buf.view().extent(0)*k_buf.view().extent(1))/15) { + int newsize = nsend*15/k_buf.view().extent(1)+1; + k_buf.resize(newsize,k_buf.view().extent(1)); + } + if(space == Host) { + AtomVecSpinKokkos_PackExchangeFunctor + f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); + Kokkos::parallel_for(nsend,f); + return nsend*15; + } else { + AtomVecSpinKokkos_PackExchangeFunctor + f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); + Kokkos::parallel_for(nsend,f); + return nsend*15; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecSpinKokkos::pack_exchange(int i, double *buf) +{ + int m = 1; + buf[m++] = h_x(i,0); + buf[m++] = h_x(i,1); + buf[m++] = h_x(i,2); + buf[m++] = h_v(i,0); + buf[m++] = h_v(i,1); + buf[m++] = h_v(i,2); + buf[m++] = ubuf(h_tag(i)).d; + buf[m++] = ubuf(h_type(i)).d; + buf[m++] = ubuf(h_mask(i)).d; + buf[m++] = ubuf(h_image(i)).d; + buf[m++] = h_sp(i,0); + buf[m++] = h_sp(i,1); + buf[m++] = h_sp(i,2); + buf[m++] = h_sp(i,3); + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]->pack_exchange(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecSpinKokkos_UnpackExchangeFunctor { + typedef DeviceType device_type; + typedef ArrayTypes AT; + typename AT::t_x_array _x; + typename AT::t_v_array _v; + typename AT::t_tagint_1d _tag; + typename AT::t_int_1d _type; + typename AT::t_int_1d _mask; + typename AT::t_imageint_1d _image; + typename AT::t_sp_array _sp; + typename AT::t_xfloat_2d_um _buf; + typename AT::t_int_1d _nlocal; + int _dim; + X_FLOAT _lo,_hi; + + AtomVecSpinKokkos_UnpackExchangeFunctor( + const AtomKokkos* atom, + const typename AT::tdual_xfloat_2d buf, + typename AT::tdual_int_1d nlocal, + int dim, X_FLOAT lo, X_FLOAT hi): + _x(atom->k_x.view()), + _v(atom->k_v.view()), + _tag(atom->k_tag.view()), + _type(atom->k_type.view()), + _mask(atom->k_mask.view()), + _image(atom->k_image.view()), + _sp(atom->k_sp.view()), + _nlocal(nlocal.template view()),_dim(dim), + _lo(lo),_hi(hi){ + const size_t elements = 15; + const int maxsendlist = (buf.template view().extent(0)*buf.template view().extent(1))/elements; + + buffer_view(_buf,buf,maxsendlist,elements); + } + + KOKKOS_INLINE_FUNCTION + void operator() (const int &myrecv) const { + X_FLOAT x = _buf(myrecv,_dim+1); + if (x >= _lo && x < _hi) { + int i = Kokkos::atomic_fetch_add(&_nlocal(0),1); + _x(i,0) = _buf(myrecv,1); + _x(i,1) = _buf(myrecv,2); + _x(i,2) = _buf(myrecv,3); + _v(i,0) = _buf(myrecv,4); + _v(i,1) = _buf(myrecv,5); + _v(i,2) = _buf(myrecv,6); + _tag[i] = (tagint) d_ubuf(_buf(myrecv,7)).i; + _type[i] = (int) d_ubuf(_buf(myrecv,8)).i; + _mask[i] = (int) d_ubuf(_buf(myrecv,9)).i; + _image[i] = (imageint) d_ubuf(_buf(myrecv,10)).i; + _sp(i,0) = _buf(myrecv,11); + _sp(i,1) = _buf(myrecv,12); + _sp(i,2) = _buf(myrecv,13); + _sp(i,3) = _buf(myrecv,14); + } + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecSpinKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,int nrecv, + int nlocal,int dim,X_FLOAT lo,X_FLOAT hi, + ExecutionSpace space) { + if(space == Host) { + k_count.h_view(0) = nlocal; + AtomVecSpinKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); + Kokkos::parallel_for(nrecv/15,f); + return k_count.h_view(0); + } else { + k_count.h_view(0) = nlocal; + k_count.modify(); + k_count.sync(); + AtomVecSpinKokkos_UnpackExchangeFunctor + f(atomKK,k_buf,k_count,dim,lo,hi); + Kokkos::parallel_for(nrecv/15,f); + k_count.modify(); + k_count.sync(); + + return k_count.h_view(0); + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecSpinKokkos::unpack_exchange(double *buf) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + atomKK->modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK | SP_MASK); + + int m = 1; + h_x(nlocal,0) = buf[m++]; + h_x(nlocal,1) = buf[m++]; + h_x(nlocal,2) = buf[m++]; + h_v(nlocal,0) = buf[m++]; + h_v(nlocal,1) = buf[m++]; + h_v(nlocal,2) = buf[m++]; + h_tag(nlocal) = (tagint) ubuf(buf[m++]).i; + h_type(nlocal) = (int) ubuf(buf[m++]).i; + h_mask(nlocal) = (int) ubuf(buf[m++]).i; + h_image(nlocal) = (imageint) ubuf(buf[m++]).i; + h_sp(nlocal,0) = buf[m++]; + h_sp(nlocal,1) = buf[m++]; + h_sp(nlocal,2) = buf[m++]; + h_sp(nlocal,3) = buf[m++]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + m += modify->fix[atom->extra_grow[iextra]]-> + unpack_exchange(nlocal,&buf[m]); + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + size of restart data for all atoms owned by this proc + include extra data stored by fixes +------------------------------------------------------------------------- */ + +int AtomVecSpinKokkos::size_restart() +{ + int i; + + int nlocal = atom->nlocal; + int n = 15 * nlocal; + + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + for (i = 0; i < nlocal; i++) + n += modify->fix[atom->extra_restart[iextra]]->size_restart(i); + + return n; +} + +/* ---------------------------------------------------------------------- + pack atom I's data for restart file including extra quantities + xyz must be 1st 3 values, so that read_restart can test on them + molecular types may be negative, but write as positive +------------------------------------------------------------------------- */ + +int AtomVecSpinKokkos::pack_restart(int i, double *buf) +{ + atomKK->sync(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK | SP_MASK); + + int m = 1; + buf[m++] = h_x(i,0); + buf[m++] = h_x(i,1); + buf[m++] = h_x(i,2); + buf[m++] = ubuf(h_tag(i)).d; + buf[m++] = ubuf(h_type(i)).d; + buf[m++] = ubuf(h_mask(i)).d; + buf[m++] = ubuf(h_image(i)).d; + buf[m++] = h_v(i,0); + buf[m++] = h_v(i,1); + buf[m++] = h_v(i,2); + + buf[m++] = h_sp(i,0); + buf[m++] = h_sp(i,1); + buf[m++] = h_sp(i,2); + buf[m++] = h_sp(i,3); + + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + m += modify->fix[atom->extra_restart[iextra]]->pack_restart(i,&buf[m]); + + buf[0] = m; + return m; +} + +/* ---------------------------------------------------------------------- + unpack data for one atom from restart file including extra quantities +------------------------------------------------------------------------- */ + +int AtomVecSpinKokkos::unpack_restart(double *buf) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) { + grow(0); + if (atom->nextra_store) + memory->grow(atom->extra,nmax,atom->nextra_store,"atom:extra"); + } + + atomKK->modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK | SP_MASK); + + int m = 1; + h_x(nlocal,0) = buf[m++]; + h_x(nlocal,1) = buf[m++]; + h_x(nlocal,2) = buf[m++]; + h_tag(nlocal) = (tagint) ubuf(buf[m++]).i; + h_type(nlocal) = (int) ubuf(buf[m++]).i; + h_mask(nlocal) = (int) ubuf(buf[m++]).i; + h_image(nlocal) = (imageint) ubuf(buf[m++]).i; + h_v(nlocal,0) = buf[m++]; + h_v(nlocal,1) = buf[m++]; + h_v(nlocal,2) = buf[m++]; + + h_sp(nlocal,0) = buf[m++]; + h_sp(nlocal,1) = buf[m++]; + h_sp(nlocal,2) = buf[m++]; + h_sp(nlocal,3) = buf[m++]; + + double **extra = atom->extra; + if (atom->nextra_store) { + int size = static_cast (buf[0]) - m; + for (int i = 0; i < size; i++) extra[nlocal][i] = buf[m++]; + } + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + create one atom of itype at coord + set other values to defaults +------------------------------------------------------------------------- */ + +void AtomVecSpinKokkos::create_atom(int itype, double *coord) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) { + atomKK->modified(Host,ALL_MASK); + grow(0); + } + atomKK->sync(Host,ALL_MASK); + atomKK->modified(Host,ALL_MASK); + + h_tag[nlocal] = 0; + h_type[nlocal] = itype; + h_x(nlocal,0) = coord[0]; + h_x(nlocal,1) = coord[1]; + h_x(nlocal,2) = coord[2]; + h_mask[nlocal] = 1; + h_image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | + ((imageint) IMGMAX << IMGBITS) | IMGMAX; + h_v(nlocal,0) = 0.0; + h_v(nlocal,1) = 0.0; + h_v(nlocal,2) = 0.0; + + h_sp(nlocal,0) = 0.0; + h_sp(nlocal,1) = 0.0; + h_sp(nlocal,2) = 0.0; + h_sp(nlocal,3) = 0.0; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Atoms section of data file + initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVecSpinKokkos::data_atom(double *coord, imageint imagetmp, + char **values) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + h_tag[nlocal] = utils::inumeric(FLERR,values[0],true,lmp); + h_type[nlocal] = utils::inumeric(FLERR,values[1],true,lmp); + if (type[nlocal] <= 0 || type[nlocal] > atom->ntypes) + error->one(FLERR,"Invalid atom type in Atoms section of data file"); + + h_sp(nlocal,3) = utils::numeric(FLERR,values[2],true,lmp); + h_sp(nlocal,0) = utils::numeric(FLERR,values[6],true,lmp); + h_sp(nlocal,1) = utils::numeric(FLERR,values[7],true,lmp); + h_sp(nlocal,2) = utils::numeric(FLERR,values[8],true,lmp); + double inorm = 1.0/sqrt(sp[nlocal][0]*sp[nlocal][0] + + sp[nlocal][1]*sp[nlocal][1] + + sp[nlocal][2]*sp[nlocal][2]); + h_sp(nlocal,0) *= inorm; + h_sp(nlocal,1) *= inorm; + h_sp(nlocal,2) *= inorm; + + h_x(nlocal,0) = coord[0]; + h_x(nlocal,1) = coord[1]; + h_x(nlocal,2) = coord[2]; + + h_image[nlocal] = imagetmp; + + h_mask[nlocal] = 1; + h_v(nlocal,0) = 0.0; + h_v(nlocal,1) = 0.0; + h_v(nlocal,2) = 0.0; + + atomKK->modified(Host,ALL_MASK); + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack hybrid quantities from one line in Atoms section of data file + initialize other atom quantities for this sub-style +------------------------------------------------------------------------- */ + +int AtomVecSpinKokkos::data_atom_hybrid(int nlocal, char **values) +{ + h_sp(nlocal,3) = utils::numeric(FLERR,values[0],true,lmp); + h_sp(nlocal,0) = utils::numeric(FLERR,values[1],true,lmp); + h_sp(nlocal,1) = utils::numeric(FLERR,values[2],true,lmp); + h_sp(nlocal,2) = utils::numeric(FLERR,values[3],true,lmp); + double inorm = 1.0/sqrt(sp[nlocal][0]*sp[nlocal][0] + + sp[nlocal][1]*sp[nlocal][1] + + sp[nlocal][2]*sp[nlocal][2]); + sp[nlocal][0] *= inorm; + sp[nlocal][1] *= inorm; + sp[nlocal][2] *= inorm; + + return 4; +} + +/* ---------------------------------------------------------------------- + pack atom info for data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecSpinKokkos::pack_data(double **buf) +{ + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { + buf[i][0] = h_tag[i]; + buf[i][1] = h_type[i]; + buf[i][2] = h_sp(i,0); + buf[i][3] = h_x(i,0); + buf[i][4] = h_x(i,1); + buf[i][5] = h_x(i,2); + buf[i][2] = h_sp(i,1); + buf[i][2] = h_sp(i,2); + buf[i][2] = h_sp(i,3); + buf[i][6] = (h_image[i] & IMGMASK) - IMGMAX; + buf[i][7] = (h_image[i] >> IMGBITS & IMGMASK) - IMGMAX; + buf[i][8] = (h_image[i] >> IMG2BITS) - IMGMAX; + } +} + +/* ---------------------------------------------------------------------- + pack hybrid atom info for data file +------------------------------------------------------------------------- */ + +int AtomVecSpinKokkos::pack_data_hybrid(int i, double *buf) +{ + buf[0] = h_sp(i,3); + buf[1] = h_sp(i,0); + buf[2] = h_sp(i,1); + buf[3] = h_sp(i,2); + return 4; +} + +/* ---------------------------------------------------------------------- + write atom info to data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecSpinKokkos::write_data(FILE *fp, int n, double **buf) +{ + for (int i = 0; i < n; i++) + fprintf(fp,"%d %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", + (int) buf[i][0],(int) buf[i][1],buf[i][2],buf[i][3],buf[i][4], + buf[i][5],(int) buf[i][6],(int) buf[i][7],(int) buf[i][8]); +} + +/* ---------------------------------------------------------------------- + write hybrid atom info to data file +------------------------------------------------------------------------- */ + +int AtomVecSpinKokkos::write_data_hybrid(FILE *fp, double *buf) +{ + fprintf(fp," %-1.16e %-1.16e %-1.16e %-1.16e",buf[0],buf[1],buf[2],buf[3]); + return 4; +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory +------------------------------------------------------------------------- */ + +double AtomVecSpinKokkos::memory_usage() +{ + bigint bytes = 0; + + if (atom->memcheck("tag")) bytes += memory->usage(tag,nmax); + if (atom->memcheck("type")) bytes += memory->usage(type,nmax); + if (atom->memcheck("mask")) bytes += memory->usage(mask,nmax); + if (atom->memcheck("image")) bytes += memory->usage(image,nmax); + if (atom->memcheck("x")) bytes += memory->usage(x,nmax,3); + if (atom->memcheck("v")) bytes += memory->usage(v,nmax,3); + if (atom->memcheck("f")) bytes += memory->usage(f,nmax*commKK->nthreads,3); + + if (atom->memcheck("sp")) bytes += memory->usage(sp,nmax,4); + if (atom->memcheck("fm")) bytes += memory->usage(fm,nmax*comm->nthreads,3); + if (atom->memcheck("fm_long")) bytes += memory->usage(fm_long,nmax*comm->nthreads,3); + + return bytes; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecSpinKokkos::sync(ExecutionSpace space, unsigned int mask) +{ + if (space == Device) { + if (mask & X_MASK) atomKK->k_x.sync(); + if (mask & V_MASK) atomKK->k_v.sync(); + if (mask & F_MASK) atomKK->k_f.sync(); + if (mask & TAG_MASK) atomKK->k_tag.sync(); + if (mask & TYPE_MASK) atomKK->k_type.sync(); + if (mask & MASK_MASK) atomKK->k_mask.sync(); + if (mask & IMAGE_MASK) atomKK->k_image.sync(); + if (mask & SP_MASK) atomKK->k_sp.sync(); + if (mask & FM_MASK) atomKK->k_fm.sync(); + if (mask & FML_MASK) atomKK->k_fm_long.sync(); + } else { + if (mask & X_MASK) atomKK->k_x.sync(); + if (mask & V_MASK) atomKK->k_v.sync(); + if (mask & F_MASK) atomKK->k_f.sync(); + if (mask & TAG_MASK) atomKK->k_tag.sync(); + if (mask & TYPE_MASK) atomKK->k_type.sync(); + if (mask & MASK_MASK) atomKK->k_mask.sync(); + if (mask & IMAGE_MASK) atomKK->k_image.sync(); + if (mask & SP_MASK) atomKK->k_sp.sync(); + if (mask & FM_MASK) atomKK->k_fm.sync(); + if (mask & FML_MASK) atomKK->k_fm_long.sync(); + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecSpinKokkos::modified(ExecutionSpace space, unsigned int mask) +{ + if (space == Device) { + if (mask & X_MASK) atomKK->k_x.modify(); + if (mask & V_MASK) atomKK->k_v.modify(); + if (mask & F_MASK) atomKK->k_f.modify(); + if (mask & TAG_MASK) atomKK->k_tag.modify(); + if (mask & TYPE_MASK) atomKK->k_type.modify(); + if (mask & MASK_MASK) atomKK->k_mask.modify(); + if (mask & IMAGE_MASK) atomKK->k_image.modify(); + if (mask & SP_MASK) atomKK->k_sp.modify(); + if (mask & FM_MASK) atomKK->k_fm.modify(); + if (mask & FML_MASK) atomKK->k_fm_long.modify(); + } else { + if (mask & X_MASK) atomKK->k_x.modify(); + if (mask & V_MASK) atomKK->k_v.modify(); + if (mask & F_MASK) atomKK->k_f.modify(); + if (mask & TAG_MASK) atomKK->k_tag.modify(); + if (mask & TYPE_MASK) atomKK->k_type.modify(); + if (mask & MASK_MASK) atomKK->k_mask.modify(); + if (mask & IMAGE_MASK) atomKK->k_image.modify(); + if (mask & SP_MASK) atomKK->k_sp.modify(); + if (mask & FM_MASK) atomKK->k_fm.modify(); + if (mask & FML_MASK) atomKK->k_fm_long.modify(); + } +} + +void AtomVecSpinKokkos::sync_overlapping_device(ExecutionSpace space, unsigned int mask) +{ + if (space == Device) { + if ((mask & X_MASK) && atomKK->k_x.need_sync()) + perform_async_copy(atomKK->k_x,space); + if ((mask & V_MASK) && atomKK->k_v.need_sync()) + perform_async_copy(atomKK->k_v,space); + if ((mask & F_MASK) && atomKK->k_f.need_sync()) + perform_async_copy(atomKK->k_f,space); + if ((mask & TAG_MASK) && atomKK->k_tag.need_sync()) + perform_async_copy(atomKK->k_tag,space); + if ((mask & TYPE_MASK) && atomKK->k_type.need_sync()) + perform_async_copy(atomKK->k_type,space); + if ((mask & MASK_MASK) && atomKK->k_mask.need_sync()) + perform_async_copy(atomKK->k_mask,space); + if ((mask & IMAGE_MASK) && atomKK->k_image.need_sync()) + perform_async_copy(atomKK->k_image,space); + if ((mask & SP_MASK) && atomKK->k_sp.need_sync()) + perform_async_copy(atomKK->k_sp,space); + if ((mask & FM_MASK) && atomKK->k_sp.need_sync()) + perform_async_copy(atomKK->k_fm,space); + if ((mask & FML_MASK) && atomKK->k_fm_long.need_sync()) + perform_async_copy(atomKK->k_fm_long,space); + } else { + if ((mask & X_MASK) && atomKK->k_x.need_sync()) + perform_async_copy(atomKK->k_x,space); + if ((mask & V_MASK) && atomKK->k_v.need_sync()) + perform_async_copy(atomKK->k_v,space); + if ((mask & F_MASK) && atomKK->k_f.need_sync()) + perform_async_copy(atomKK->k_f,space); + if ((mask & TAG_MASK) && atomKK->k_tag.need_sync()) + perform_async_copy(atomKK->k_tag,space); + if ((mask & TYPE_MASK) && atomKK->k_type.need_sync()) + perform_async_copy(atomKK->k_type,space); + if ((mask & MASK_MASK) && atomKK->k_mask.need_sync()) + perform_async_copy(atomKK->k_mask,space); + if ((mask & IMAGE_MASK) && atomKK->k_image.need_sync()) + perform_async_copy(atomKK->k_image,space); + if ((mask & SP_MASK) && atomKK->k_sp.need_sync()) + perform_async_copy(atomKK->k_sp,space); + if ((mask & FM_MASK) && atomKK->k_fm.need_sync()) + perform_async_copy(atomKK->k_fm,space); + if ((mask & FML_MASK) && atomKK->k_fm_long.need_sync()) + perform_async_copy(atomKK->k_fm_long,space); + } +} + +/* ---------------------------------------------------------------------- + clear all forces (mech and mag) +------------------------------------------------------------------------- */ + +void AtomVecSpinKokkos::force_clear(int n, size_t nbytes) +{ + memset(&f[n][0],0,3*nbytes); + memset(&fm[n][0],0,3*nbytes); + memset(&fm_long[n][0],0,3*nbytes); +} diff --git a/src/KOKKOS/atom_vec_spin_kokkos.h b/src/KOKKOS/atom_vec_spin_kokkos.h new file mode 100644 index 0000000000..bcb5ea3b45 --- /dev/null +++ b/src/KOKKOS/atom_vec_spin_kokkos.h @@ -0,0 +1,132 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef ATOM_CLASS + +AtomStyle(spin/kk,AtomVecSpinKokkos) +AtomStyle(spin/kk/device,AtomVecSpinKokkos) +AtomStyle(spin/kk/host,AtomVecSpinKokkos) + +#else + +#ifndef LMP_ATOM_VEC_SPIN_KOKKOS_H +#define LMP_ATOM_VEC_SPIN_KOKKOS_H + +#include "atom_vec_kokkos.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +class AtomVecSpinKokkos : public AtomVecKokkos { + public: + AtomVecSpinKokkos(class LAMMPS *); + void grow(int); + void copy(int, int, int); + int pack_border(int, int *, double *, int, int *); + int pack_border_vel(int, int *, double *, int, int *); + int pack_border_hybrid(int, int *, double *); + void unpack_border(int, int, double *); + void unpack_border_vel(int, int, double *); + int unpack_border_hybrid(int, int, double *); + int pack_exchange(int, double *); + int unpack_exchange(double *); + int size_restart(); + int pack_restart(int, double *); + int unpack_restart(double *); + void create_atom(int, double *); + void data_atom(double *, imageint, char **); + int data_atom_hybrid(int, char **); + void pack_data(double **); + int pack_data_hybrid(int, double *); + void write_data(FILE *, int, double **); + int write_data_hybrid(FILE *, double *); + double memory_usage(); + + // clear magnetic and mechanic forces + + void force_clear(int, size_t); + + void grow_pointers(); + // input lists to be checked + int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, + DAT::tdual_xfloat_2d buf,int iswap, + int pbc_flag, int *pbc, ExecutionSpace space); + void unpack_border_kokkos(const int &n, const int &nfirst, + const DAT::tdual_xfloat_2d &buf, + ExecutionSpace space); + int pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d &buf, + DAT::tdual_int_1d k_sendlist, + DAT::tdual_int_1d k_copylist, + ExecutionSpace space, int dim, + X_FLOAT lo, X_FLOAT hi); + int unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, int nrecv, + int nlocal, int dim, X_FLOAT lo, X_FLOAT hi, + ExecutionSpace space); + + void sync(ExecutionSpace space, unsigned int mask); + void modified(ExecutionSpace space, unsigned int mask); + void sync_overlapping_device(ExecutionSpace space, unsigned int mask); + + protected: + tagint *tag; + int *type,*mask; + imageint *image; + double **x,**v,**f; // lattice quantities + + // spin quantities + double **sp; // sp[i][0-2] direction of the spin i + // sp[i][3] atomic magnetic moment of the spin i + double **fm; // fm[i][0-2] direction of magnetic precession + double **fm_long; // storage of long-range spin prec. components + + DAT::t_tagint_1d d_tag; + HAT::t_tagint_1d h_tag; + + DAT::t_int_1d d_type, d_mask; + HAT::t_int_1d h_type, h_mask; + + DAT::t_imageint_1d d_image; + HAT::t_imageint_1d h_image; + + DAT::t_x_array d_x; + DAT::t_v_array d_v; + DAT::t_f_array d_f; + + DAT::t_sp_array d_sp; + DAT::t_fm_array d_fm; + DAT::t_fm_long_array d_fm_long; + + HAT::t_sp_array h_sp; + HAT::t_fm_array h_fm; + HAT::t_fm_long_array h_fm_long; + + DAT::tdual_int_1d k_count; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Per-processor system is too big + +The number of owned atoms plus ghost atoms on a single +processor must fit in 32-bit integer. + +E: Invalid atom type in Atoms section of data file + +Atom types must range from 1 to specified # of types. + +*/ diff --git a/src/KOKKOS/kokkos_type.h b/src/KOKKOS/kokkos_type.h index b555cc5a03..af5adeee73 100644 --- a/src/KOKKOS/kokkos_type.h +++ b/src/KOKKOS/kokkos_type.h @@ -769,6 +769,36 @@ typedef tdual_virial_array::t_dev_um t_virial_array_um; typedef tdual_virial_array::t_dev_const_um t_virial_array_const_um; typedef tdual_virial_array::t_dev_const_randomread t_virial_array_randomread; +// Spin Types + +//3d SP_FLOAT array n*4 +#ifdef LMP_KOKKOS_NO_LEGACY +typedef Kokkos::DualView tdual_float_1d_4; +#else +typedef Kokkos::DualView tdual_float_1d_4; +#endif +typedef tdual_float_1d_4::t_dev t_sp_array; +typedef tdual_float_1d_4::t_dev_const t_sp_array_const; +typedef tdual_float_1d_4::t_dev_um t_sp_array_um; +typedef tdual_float_1d_4::t_dev_const_um t_sp_array_const_um; +typedef tdual_float_1d_4::t_dev_const_randomread t_sp_array_randomread; + +//3d FM_FLOAT array n*3 + +typedef tdual_f_array::t_dev t_fm_array; +typedef tdual_f_array::t_dev_const t_fm_array_const; +typedef tdual_f_array::t_dev_um t_fm_array_um; +typedef tdual_f_array::t_dev_const_um t_fm_array_const_um; +typedef tdual_f_array::t_dev_const_randomread t_fm_array_randomread; + +//3d FML_FLOAT array n*3 + +typedef tdual_f_array::t_dev t_fm_long_array; +typedef tdual_f_array::t_dev_const t_fm_long_array_const; +typedef tdual_f_array::t_dev_um t_fm_long_array_um; +typedef tdual_f_array::t_dev_const_um t_fm_long_array_const_um; +typedef tdual_f_array::t_dev_const_randomread t_fm_long_array_randomread; + //Energy Types //1d E_FLOAT array n @@ -1005,6 +1035,28 @@ typedef tdual_virial_array::t_host_um t_virial_array_um; typedef tdual_virial_array::t_host_const_um t_virial_array_const_um; typedef tdual_virial_array::t_host_const_randomread t_virial_array_randomread; +// Spin types + +//2d X_FLOAT array n*4 +typedef tdual_float_1d_4::t_host t_sp_array; +typedef tdual_float_1d_4::t_host_const t_sp_array_const; +typedef tdual_float_1d_4::t_host_um t_sp_array_um; +typedef tdual_float_1d_4::t_host_const_um t_sp_array_const_um; +typedef tdual_float_1d_4::t_host_const_randomread t_sp_array_randomread; + +//2d F_FLOAT array n*3 +typedef tdual_f_array::t_host t_fm_array; +typedef tdual_f_array::t_host_const t_fm_array_const; +typedef tdual_f_array::t_host_um t_fm_array_um; +typedef tdual_f_array::t_host_const_um t_fm_array_const_um; +typedef tdual_f_array::t_host_const_randomread t_fm_array_randomread; + +//2d F_FLOAT array n*3 +typedef tdual_f_array::t_host t_fm_long_array; +typedef tdual_f_array::t_host_const t_fm_long_array_const; +typedef tdual_f_array::t_host_um t_fm_long_array_um; +typedef tdual_f_array::t_host_const_um t_fm_long_array_const_um; +typedef tdual_f_array::t_host_const_randomread t_fm_long_array_randomread; //Energy Types diff --git a/src/KOKKOS/verlet_kokkos.cpp b/src/KOKKOS/verlet_kokkos.cpp index 3aa7a3575a..254e269671 100644 --- a/src/KOKKOS/verlet_kokkos.cpp +++ b/src/KOKKOS/verlet_kokkos.cpp @@ -595,6 +595,15 @@ void VerletKokkos::force_clear() atomKK->modified(Device,TORQUE_MASK); } + // reset SPIN forces + + if (extraflag) { + Kokkos::parallel_for(nall, Zero::t_fm_array>(atomKK->k_fm.view())); + atomKK->modified(Device,FM_MASK); + Kokkos::parallel_for(nall, Zero::t_fm_array>(atomKK->k_fm_long.view())); + atomKK->modified(Device,FML_MASK); + } + // neighbor includegroup flag is set // clear force only on initial nfirst particles // if either newton flag is set, also include ghosts @@ -608,6 +617,15 @@ void VerletKokkos::force_clear() atomKK->modified(Device,TORQUE_MASK); } + // reset SPIN forces + + if (extraflag) { + Kokkos::parallel_for(atomKK->nfirst, Zero::t_fm_array>(atomKK->k_fm.view())); + atomKK->modified(Device,FM_MASK); + Kokkos::parallel_for(atomKK->nfirst, Zero::t_fm_array>(atomKK->k_fm_long.view())); + atomKK->modified(Device,FML_MASK); + } + if (force->newton) { auto range = Kokkos::RangePolicy(atomKK->nlocal, atomKK->nlocal + atomKK->nghost); Kokkos::parallel_for(range, Zero::t_f_array>(atomKK->k_f.view())); @@ -617,6 +635,15 @@ void VerletKokkos::force_clear() Kokkos::parallel_for(range, Zero::t_f_array>(atomKK->k_torque.view())); atomKK->modified(Device,TORQUE_MASK); } + + // reset SPIN forces + + if (extraflag) { + Kokkos::parallel_for(range, Zero::t_fm_array>(atomKK->k_fm.view())); + atomKK->modified(Device,FM_MASK); + Kokkos::parallel_for(range, Zero::t_fm_array>(atomKK->k_fm_long.view())); + atomKK->modified(Device,FML_MASK); + } } } } diff --git a/src/MANYBODY/fix_qeq_comb.cpp b/src/MANYBODY/fix_qeq_comb.cpp index 910db90822..7c23e6c218 100644 --- a/src/MANYBODY/fix_qeq_comb.cpp +++ b/src/MANYBODY/fix_qeq_comb.cpp @@ -17,21 +17,21 @@ #include "fix_qeq_comb.h" -#include -#include -#include "pair_comb.h" -#include "pair_comb3.h" -#include "neigh_list.h" #include "atom.h" #include "comm.h" +#include "error.h" #include "force.h" #include "group.h" +#include "memory.h" +#include "neigh_list.h" #include "respa.h" #include "update.h" -#include "memory.h" -#include "error.h" +#include +#include +#include "pair_comb.h" +#include "pair_comb3.h" using namespace LAMMPS_NS; using namespace FixConst; @@ -85,9 +85,6 @@ FixQEQComb::FixQEQComb(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), int nlocal = atom->nlocal; for (int i = 0; i < nlocal; i++) qf[i] = 0.0; - comb = nullptr; - comb3 = nullptr; - comm_forward = 1; } @@ -119,8 +116,9 @@ void FixQEQComb::init() if (!atom->q_flag) error->all(FLERR,"Fix qeq/comb requires atom attribute q"); - comb = (PairComb *) force->pair_match("^comb",0); comb3 = (PairComb3 *) force->pair_match("^comb3",0); + if (!comb3) comb = (PairComb *) force->pair_match("^comb",0); + if (comb == nullptr && comb3 == nullptr) error->all(FLERR,"Must use pair_style comb or comb3 with fix qeq/comb"); @@ -204,14 +202,17 @@ void FixQEQComb::post_force(int /*vflag*/) double *q = atom->q; int *mask = atom->mask; - if (comb) { + if (comb) { inum = comb->list->inum; ilist = comb->list->ilist; - } - if (comb3) { + } else if (comb3) { inum = comb3->list->inum; ilist = comb3->list->ilist; + } else { + inum = 0; + ilist = nullptr; } + for (ii = 0; ii < inum; ii++) { i = ilist[ii]; q1[i] = q2[i] = qf[i] = 0.0; @@ -227,8 +228,9 @@ void FixQEQComb::post_force(int /*vflag*/) } comm->forward_comm_fix(this); + enegtot = 0.0; if (comb) enegtot = comb->yasu_char(qf,igroup); - if (comb3) enegtot = comb3->combqeq(qf,igroup); + else if (comb3) enegtot = comb3->combqeq(qf,igroup); enegtot /= ngroup; enegchk = enegmax = 0.0; diff --git a/src/MC/fix_charge_regulation.cpp b/src/MC/fix_charge_regulation.cpp new file mode 100644 index 0000000000..4e7e5ab5a0 --- /dev/null +++ b/src/MC/fix_charge_regulation.cpp @@ -0,0 +1,1372 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Tine Curk (tcurk5@gmail.com) and Jiaxing Yuan (yuanjiaxing123@hotmail.com) +------------------------------------------------------------------------- */ + +#include "fix_charge_regulation.h" + +#include "angle.h" +#include "atom.h" +#include "atom_vec.h" +#include "bond.h" +#include "comm.h" +#include "compute.h" +#include "dihedral.h" +#include "domain.h" +#include "error.h" +#include "fix.h" +#include "force.h" +#include "group.h" +#include "improper.h" +#include "kspace.h" +#include "math_const.h" +#include "math_extra.h" +#include "math_special.h" +#include "memory.h" +#include "modify.h" +#include "molecule.h" +#include "neighbor.h" +#include "pair.h" +#include "random_park.h" +#include "region.h" +#include "update.h" + +#include +#include + +using namespace LAMMPS_NS; +using namespace FixConst; +using namespace MathConst; +using namespace MathSpecial; + +// large energy value used to signal overlap +#define MAXENERGYSIGNAL 1.0e100 +#define MAXENERGYTEST 1.0e50 +#define SMALL 0.0000001 +#define NA_RHO0 0.602214 // Avogadro's constant times reference concentration (N_A * mol / liter) [nm^-3] + +/* ---------------------------------------------------------------------- */ + +FixChargeRegulation::FixChargeRegulation(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg), + ngroups(0), groupstrings(nullptr), ptype_ID(nullptr), + random_equal(nullptr), random_unequal(nullptr), + idftemp(nullptr) +{ + + // Region restrictions not yet implemented .. + + vector_flag = 1; + size_vector = 8; + global_freq = 1; + extvector = 0; + restart_global = 1; + time_depend = 1; + cr_nmax = 0; + overlap_flag = 0; + energy_stored = 0; + + // necessary to specify the free ion types + cation_type = utils::inumeric(FLERR, arg[3], false, lmp); + anion_type = utils::inumeric(FLERR, arg[4], false, lmp); + + // set defaults and read optional arguments + options(narg - 5, &arg[5]); + + if ((nevery <= 0) || (nmc < 0) || (llength_unit_in_nm < 0.0) + || (*target_temperature_tcp < 0.0) || (cation_type <= 0) + || (anion_type <= 0) || (reaction_distance < 0.0) + || (salt_charge[0] <= 0) || (salt_charge[1] >= 0)) + error->all(FLERR, "Illegal fix charge/regulation command"); + + if (seed <= 0) + error->all(FLERR, "Illegal fix charge/regulation command: " + "Seed value (positive integer) must be provided "); + if ((salt_charge[1] % salt_charge[0] != 0) + && (salt_charge[0] % salt_charge[1] != 0)) + error->all(FLERR,"Illegal fix charge/regulation command, " + "multivalent cation/anion charges are allowed, " + "but must be divisible, e.g. (3,-1) is fine, " + "but (3,-2) is not implemented"); + + if (pmcmoves[0] < 0 || pmcmoves[1] < 0 || pmcmoves[2] < 0) + error->all(FLERR, "Illegal fix charge/regulation command"); + if (acid_type < 0) pmcmoves[0] = 0; + if (base_type < 0) pmcmoves[1] = 0; + + // normalize + double psum = pmcmoves[0] + pmcmoves[1] + pmcmoves[2]; + if (psum <= 0) error->all(FLERR, "Illegal fix charge/regulation command"); + pmcmoves[0] /= psum; + pmcmoves[1] /= psum; + pmcmoves[2] /= psum; + + force_reneighbor = 1; + next_reneighbor = update->ntimestep + 1; + random_equal = new RanPark(lmp, seed); + random_unequal = new RanPark(lmp, seed); + nacid_attempts = 0; + nacid_successes = 0; + nbase_attempts = 0; + nbase_successes = 0; + nsalt_attempts = 0; + nsalt_successes = 0; +} + +FixChargeRegulation::~FixChargeRegulation() { + + memory->destroy(ptype_ID); + + delete random_equal; + delete random_unequal; + delete[] idftemp; + + if (group) { + int igroupall = group->find("all"); + neighbor->exclusion_group_group_delete(exclusion_group, igroupall); + } +} + +int FixChargeRegulation::setmask() { + int mask = 0; + mask |= PRE_EXCHANGE; + return mask; +} + +void FixChargeRegulation::init() { + + triclinic = domain->triclinic; + int ipe = modify->find_compute("thermo_pe"); + c_pe = modify->compute[ipe]; + + if (atom->molecule_flag) { + + int flag = 0; + for (int i = 0; i < atom->nlocal; i++) + if (atom->type[i] == cation_type || atom->type[i] == anion_type) + if (atom->molecule[i]) flag = 1; + int flagall = flag; + + MPI_Allreduce(&flag, &flagall, 1, MPI_INT, MPI_SUM, world); + if (flagall && comm->me == 0) + error->all(FLERR, "fix charge/regulation cannot exchange " + "individual atoms (ions) belonging to a molecule"); + } + + if (domain->dimension == 2) + error->all(FLERR, "Cannot use fix charge/regulation in a 2d simulation"); + + // create a new group for interaction exclusions + // used for attempted atom deletions + // skip if already exists from previous init() + + if (!exclusion_group_bit) { + + // create unique group name for atoms to be excluded + + auto group_id = fmt::format("FixChargeRegulation:exclusion_group:{}",id); + group->assign(group_id + " subtract all all"); + exclusion_group = group->find(group_id); + if (exclusion_group == -1) + error->all(FLERR,"Could not find fix charge/regulation exclusion " + "group ID"); + exclusion_group_bit = group->bitmask[exclusion_group]; + + // neighbor list exclusion setup + // turn off interactions between group all and the exclusion group + + neighbor->modify_params(fmt::format("exclude group {} all",group_id)); + } + + // check that no deletable atoms are in atom->firstgroup + // deleting such an atom would not leave firstgroup atoms first + + if (atom->firstgroup >= 0) { + int *mask = atom->mask; + int firstgroupbit = group->bitmask[atom->firstgroup]; + + int flag = 0; + for (int i = 0; i < atom->nlocal; i++) + if ((mask[i] == groupbit) && (mask[i] && firstgroupbit)) flag = 1; + + int flagall; + MPI_Allreduce(&flag, &flagall, 1, MPI_INT, MPI_SUM, world); + + if (flagall) + error->all(FLERR, "Cannot use fix charge/regulation on atoms " + "in atom_modify first group"); + } + + // construct group bitmask for all new atoms + // aggregated over all group keywords + + groupbitall = 1 | groupbit; + + for (int igroup = 0; igroup < ngroups; igroup++) { + int jgroup = group->find(groupstrings[igroup]); + if (jgroup == -1) + error->all(FLERR, "Could not find fix charge/regulation group ID"); + groupbitall |= group->bitmask[jgroup]; + } +} + +void FixChargeRegulation::pre_exchange() { + + if (next_reneighbor != update->ntimestep) return; + xlo = domain->boxlo[0]; + xhi = domain->boxhi[0]; + ylo = domain->boxlo[1]; + yhi = domain->boxhi[1]; + zlo = domain->boxlo[2]; + zhi = domain->boxhi[2]; + + if (triclinic) { + sublo = domain->sublo_lamda; + subhi = domain->subhi_lamda; + } else { + sublo = domain->sublo; + subhi = domain->subhi; + } + volume = domain->xprd * domain->yprd * domain->zprd; + if (triclinic) domain->x2lamda(atom->nlocal); + domain->pbc(); + comm->exchange(); + atom->nghost = 0; + comm->borders(); + + if (triclinic) domain->lamda2x(atom->nlocal + atom->nghost); + energy_stored = energy_full(); + if ((energy_stored > MAXENERGYTEST) && (comm->me == 0)) + error->warning(FLERR, "Energy of old configuration in fix " + "charge/regulation is > MAXENERGYTEST."); + + if ((reaction_distance > domain->prd_half[0]) || + (reaction_distance > domain->prd_half[1]) || + (reaction_distance > domain->prd_half[2])) { + if (comm->me == 0) + error->warning(FLERR,"reaction distance (rxd) is larger than " + "half the box dimension, resetting default: xrd = 0."); + reaction_distance = 0; + } + // volume in units of (N_A * mol / liter) + volume_rx = (xhi - xlo) * (yhi - ylo) * (zhi - zlo) + * cube(llength_unit_in_nm) * NA_RHO0; + if (reaction_distance < SMALL) { + vlocal_xrd = volume_rx; + } else { + vlocal_xrd = 4.0 * MY_PI * cube(reaction_distance) + / 3.0 * cube(llength_unit_in_nm) * NA_RHO0; + } + beta = 1.0 / (force->boltz * *target_temperature_tcp); + + // pre-compute powers + c10pH = pow(10.0,-pH); // dissociated ion (H+) activity + c10pKa = pow(10.0,-pKa); // acid dissociation constant + c10pKb = pow(10.0,-pKb); // base dissociation constant + c10pOH = pow(10.0,-pKs + pH); // dissociated anion (OH-) activity + c10pI_plus = pow(10.0,-pI_plus); // free cation activity + c10pI_minus = pow(10.0,-pI_minus); // free anion activity + + // reinitialize counters + nacid_neutral = particle_number(acid_type, 0); + nacid_charged = particle_number(acid_type, -1); + nbase_neutral = particle_number(base_type, 0); + nbase_charged = particle_number(base_type, 1); + ncation = particle_number(cation_type, salt_charge[0]); + nanion = particle_number(anion_type, salt_charge[1]); + + + // Attempt exchanges + if (!only_salt_flag) { + + // Do charge regulation + for (int i = 0; i < nmc; i++) { + double rand_number = random_equal->uniform(); + if (rand_number < pmcmoves[0] / 2) { + forward_acid(); + nacid_attempts++; + } else if (rand_number < pmcmoves[0]) { + backward_acid(); + nacid_attempts++; + } else if (rand_number < pmcmoves[0] + pmcmoves[1] / 2) { + forward_base(); + nbase_attempts++; + } else if (rand_number < pmcmoves[0] + pmcmoves[1]) { + backward_base(); + nbase_attempts++; + } else if (rand_number < pmcmoves[0] + pmcmoves[1] + pmcmoves[2] / 2) { + forward_ions(); + nsalt_attempts++; + } else { + backward_ions(); + nsalt_attempts++; + } + } + } else { + // do only ion insertion, multivalent cation/anions are implemented + if (salt_charge[0] >= -salt_charge[1]) { + salt_charge_ratio = -salt_charge[0] / salt_charge[1]; + } else { + salt_charge_ratio = -salt_charge[1] / salt_charge[0]; + } + for (int i = 0; i < nmc; i++) { + double rand_number = random_equal->uniform(); + if (rand_number < 0.5) { + forward_ions_multival(); + nsalt_attempts++; + } else { + backward_ions_multival(); + nsalt_attempts++; + } + } + } + + // assign unique tags to newly inserted ions + if (add_tags_flag && atom->tag_enable) assign_tags(); + + if (triclinic) domain->x2lamda(atom->nlocal); + domain->pbc(); + comm->exchange(); + atom->nghost = 0; + comm->borders(); + if (triclinic) domain->lamda2x(atom->nlocal + atom->nghost); + next_reneighbor = update->ntimestep + nevery; +} + +void FixChargeRegulation::forward_acid() { + + double energy_before = energy_stored; + double factor; + double dummyp[3]; + double pos[3]; + pos[0] = 0; + pos[1] = 0; + pos[2] = 0; // acid/base particle position + double pos_all[3]; + int m1 = -1, m2 = -1; + + m1 = get_random_particle(acid_type, 0, 0, dummyp); + if (npart_xrd != nacid_neutral) error->all(FLERR, "fix charge/regulation acid count inconsistent"); + + if (nacid_neutral > 0) { + if (m1 >= 0) { + atom->q[m1] = -1; // assign negative charge to acid + pos[0] = atom->x[m1][0]; + pos[1] = atom->x[m1][1]; + pos[2] = atom->x[m1][2]; + } + npart_xrd2 = ncation; + if (reaction_distance >= SMALL) { + pos_all[0] = pos[0]; + pos_all[1] = pos[1]; + pos_all[2] = pos[2]; + MPI_Allreduce(pos, pos_all, 3, MPI_DOUBLE, MPI_SUM, world); + npart_xrd2 = particle_number_xrd(cation_type, 1, reaction_distance, pos_all); + } + m2 = insert_particle(cation_type, 1, reaction_distance, pos_all); + factor = nacid_neutral * vlocal_xrd * c10pKa * c10pI_plus / + (c10pH * (1 + nacid_charged) * (1 + npart_xrd2)); + + double energy_after = energy_full(); + + if (energy_after < MAXENERGYTEST && + random_equal->uniform() < factor * exp(beta * (energy_before - energy_after))) { + energy_stored = energy_after; + nacid_successes += 1; + ncation++; + nacid_charged++; + nacid_neutral--; + } else { + energy_stored = energy_before; + atom->natoms--; + if (m2 >= 0) { + atom->nlocal--; + } + if (m1 >= 0) { + atom->q[m1] = 0; + } + if (force->kspace) force->kspace->qsum_qsq(); + if (force->pair->tail_flag) force->pair->reinit(); + } + } +} + +void FixChargeRegulation::backward_acid() { + + double energy_before = energy_stored; + double factor; + int mask_tmp; + double dummyp[3]; + double pos[3]; + pos[0] = 0; + pos[1] = 0; + pos[2] = 0; // acid/base particle position + double pos_all[3]; + int m1 = -1, m2 = -1; + + m1 = get_random_particle(acid_type, -1, 0, dummyp); + if (npart_xrd != nacid_charged) + error->all(FLERR, "fix charge/regulation acid count inconsistent"); + + if (nacid_charged > 0) { + if (m1 >= 0) { + atom->q[m1] = 0; + pos[0] = atom->x[m1][0]; + pos[1] = atom->x[m1][1]; + pos[2] = atom->x[m1][2]; + } + if (reaction_distance >= SMALL) { + pos_all[0] = pos[0]; + pos_all[1] = pos[1]; + pos_all[2] = pos[2]; + MPI_Allreduce(pos, pos_all, 3, MPI_DOUBLE, MPI_SUM, world); + } + m2 = get_random_particle(cation_type, 1, reaction_distance, pos_all); + // note: npart_xrd changes everytime get_random_particle is called. + + if (npart_xrd > 0) { + if (m2 >= 0) { + atom->q[m2] = 0; + mask_tmp = atom->mask[m2]; // remember group bits. + atom->mask[m2] = exclusion_group_bit; + } + factor = (1 + nacid_neutral) * vlocal_xrd * c10pKa * c10pI_plus / + (c10pH * nacid_charged * npart_xrd); + + double energy_after = energy_full(); + + if (energy_after < MAXENERGYTEST && + random_equal->uniform() < (1.0 / factor) * exp(beta * (energy_before - energy_after))) { + nacid_successes += 1; + atom->natoms--; + energy_stored = energy_after; + nacid_charged--; + nacid_neutral++; + ncation--; + if (m2 >= 0) { + atom->avec->copy(atom->nlocal - 1, m2, 1); + atom->nlocal--; + } + } else { + energy_stored = energy_before; + if (m1 >= 0) { + atom->q[m1] = -1; + } + if (m2 >= 0) { + atom->q[m2] = 1; + atom->mask[m2] = mask_tmp; + } + } + } else { + if (m1 >= 0) { + atom->q[m1] = -1; + } + } + } +} + +void FixChargeRegulation::forward_base() { + + double energy_before = energy_stored; + double factor; + double dummyp[3]; + double pos[3]; + pos[0] = 0; + pos[1] = 0; + pos[2] = 0; // acid/base particle position + double pos_all[3]; + int m1 = -1, m2 = -1; + + m1 = get_random_particle(base_type, 0, 0, dummyp); + if (npart_xrd != nbase_neutral) + error->all(FLERR, "fix charge/regulation acid count inconsistent"); + + if (nbase_neutral > 0) { + if (m1 >= 0) { + atom->q[m1] = 1; // assign negative charge to acid + pos[0] = atom->x[m1][0]; + pos[1] = atom->x[m1][1]; + pos[2] = atom->x[m1][2]; + } + npart_xrd2 = nanion; + if (reaction_distance >= SMALL) { + pos_all[0] = pos[0]; + pos_all[1] = pos[1]; + pos_all[2] = pos[2]; + MPI_Allreduce(pos, pos_all, 3, MPI_DOUBLE, MPI_SUM, world); + npart_xrd2 = particle_number_xrd(anion_type, -1, reaction_distance, pos_all); + } + factor = nbase_neutral * vlocal_xrd * c10pKb * c10pI_minus / + (c10pOH * (1 + nbase_charged) * (1 + npart_xrd2)); + m2 = insert_particle(anion_type, -1, reaction_distance, pos_all); + + double energy_after = energy_full(); + if (energy_after < MAXENERGYTEST && + random_equal->uniform() < factor * exp(beta * (energy_before - energy_after))) { + energy_stored = energy_after; + nbase_successes += 1; + nbase_charged++; + nbase_neutral--; + nanion++; + } else { + energy_stored = energy_before; + atom->natoms--; + if (m2 >= 0) { + atom->nlocal--; + } + if (m1 >= 0) { + atom->q[m1] = 0; + } + if (force->kspace) force->kspace->qsum_qsq(); + if (force->pair->tail_flag) force->pair->reinit(); + } + } +} + +void FixChargeRegulation::backward_base() { + + double energy_before = energy_stored; + double factor; + double dummyp[3]; + int mask_tmp; + double pos[3]; + pos[0] = 0; + pos[1] = 0; + pos[2] = 0; // acid/base particle position + double pos_all[3]; + int m1 = -1, m2 = -1; + + m1 = get_random_particle(base_type, 1, 0, dummyp); + if (npart_xrd != nbase_charged) + error->all(FLERR, "fix charge/regulation acid count inconsistent"); + + if (nbase_charged > 0) { + if (m1 >= 0) { + atom->q[m1] = 0; + pos[0] = atom->x[m1][0]; + pos[1] = atom->x[m1][1]; + pos[2] = atom->x[m1][2]; + } + if (reaction_distance >= SMALL) { + pos_all[0] = pos[0]; + pos_all[1] = pos[1]; + pos_all[2] = pos[2]; + MPI_Allreduce(pos, pos_all, 3, MPI_DOUBLE, MPI_SUM, world); + } + m2 = get_random_particle(anion_type, -1, reaction_distance, pos_all); + + if (npart_xrd > 0) { + if (m2 >= 0) { + atom->q[m2] = 0; + mask_tmp = atom->mask[m2]; // remember group bits. + atom->mask[m2] = exclusion_group_bit; + } + factor = (1 + nbase_neutral) * vlocal_xrd * c10pKb * c10pI_minus / + (c10pOH * nbase_charged * npart_xrd); + + double energy_after = energy_full(); + + if (energy_after < MAXENERGYTEST && + random_equal->uniform() < (1.0 / factor) * exp(beta * (energy_before - energy_after))) { + nbase_successes += 1; + atom->natoms--; + energy_stored = energy_after; + nbase_charged--; + nbase_neutral++; + nanion--; + if (m2 >= 0) { + atom->avec->copy(atom->nlocal - 1, m2, 1); + atom->nlocal--; + } + } else { + energy_stored = energy_before; + if (m1 >= 0) { + atom->q[m1] = 1; + } + if (m2 >= 0) { + atom->q[m2] = -1; + atom->mask[m2] = mask_tmp; + } + } + } else { + if (m1 >= 0) { + atom->q[m1] = 1; + } + } + } +} + +void FixChargeRegulation::forward_ions() { + + double energy_before = energy_stored; + double factor; + double dummyp[3]; + int m1 = -1, m2 = -1; + factor = volume_rx * volume_rx * c10pI_plus * c10pI_minus / + ((1 + ncation) * (1 + nanion)); + + m1 = insert_particle(cation_type, +1, 0, dummyp); + m2 = insert_particle(anion_type, -1, 0, dummyp); + double energy_after = energy_full(); + if (energy_after < MAXENERGYTEST && + random_equal->uniform() < factor * exp(beta * (energy_before - energy_after))) { + energy_stored = energy_after; + nsalt_successes += 1; + ncation++; + nanion++; + } else { + energy_stored = energy_before; + atom->natoms--; + if (m1 >= 0) { + atom->nlocal--; + } + atom->natoms--; + if (m2 >= 0) { + atom->nlocal--; + } + if (force->kspace) force->kspace->qsum_qsq(); + if (force->pair->tail_flag) force->pair->reinit(); + } +} + + +void FixChargeRegulation::backward_ions() { + + double energy_before = energy_stored; + double factor; + int mask1_tmp = 0, mask2_tmp = 0; + double dummyp[3]; + int m1 = -1, m2 = -1; + + m1 = get_random_particle(cation_type, +1, 0, dummyp); + if (npart_xrd != ncation) + error->all(FLERR, "fix charge/regulation salt count inconsistent"); + if (ncation > 0) { + m2 = get_random_particle(anion_type, -1, 0, dummyp); + if (npart_xrd != nanion) + error->all(FLERR, "fix charge/regulation salt count inconsistent"); + if (nanion > 0) { + + // attempt deletion + + if (m1 >= 0) { + atom->q[m1] = 0; + mask1_tmp = atom->mask[m1]; + atom->mask[m1] = exclusion_group_bit; + } + if (m2 >= 0) { + atom->q[m2] = 0; + mask2_tmp = atom->mask[m2]; + atom->mask[m2] = exclusion_group_bit; + } + factor = volume_rx * volume_rx * c10pI_plus * c10pI_minus / (ncation * nanion); + + double energy_after = energy_full(); + if (energy_after < MAXENERGYTEST && + random_equal->uniform() < (1.0 / factor) * exp(beta * (energy_before - energy_after))) { + energy_stored = energy_after; + nsalt_successes += 1; + ncation--; + nanion--; + + // ions must be deleted in order, otherwise index m could change upon the first deletion + atom->natoms -= 2; + if (m1 > m2) { + if (m1 >= 0) { + atom->avec->copy(atom->nlocal - 1, m1, 1); + atom->nlocal--; + } + if (m2 >= 0) { + atom->avec->copy(atom->nlocal - 1, m2, 1); + atom->nlocal--; + } + } else { + if (m2 >= 0) { + atom->avec->copy(atom->nlocal - 1, m2, 1); + atom->nlocal--; + } + if (m1 >= 0) { + atom->avec->copy(atom->nlocal - 1, m1, 1); + atom->nlocal--; + } + } + if (force->kspace) force->kspace->qsum_qsq(); + if (force->pair->tail_flag) force->pair->reinit(); + + } else { + energy_stored = energy_before; + + // reassign original charge and mask + if (m1 >= 0) { + atom->q[m1] = 1; + atom->mask[m1] = mask1_tmp; + } + if (m2 >= 0) { + atom->q[m2] = -1; + atom->mask[m2] = mask2_tmp; + } + } + } + } +} + +void FixChargeRegulation::forward_ions_multival() { + + double energy_before = energy_stored; + double factor = 1; + double dummyp[3]; + int mm[salt_charge_ratio + 1];// particle ID array for all ions to be inserted + + if (salt_charge[0] <= -salt_charge[1]) { + // insert one anion and (salt_charge_ratio) cations + + mm[0] = insert_particle(anion_type, salt_charge[1], 0, dummyp); + factor *= volume_rx * c10pI_minus / (1 + nanion); + for (int i = 0; i < salt_charge_ratio; i++) { + mm[i + 1] = insert_particle(cation_type, salt_charge[0], 0, dummyp); + factor *= volume_rx *c10pI_plus / (1 + ncation + i); + } + } else { + // insert one cation and (salt_charge_ratio) anions + + mm[0] = insert_particle(cation_type, salt_charge[0], 0, dummyp); + factor *= volume_rx * c10pI_plus / (1 + ncation); + for (int i = 0; i < salt_charge_ratio; i++) { + mm[i + 1] = insert_particle(anion_type, salt_charge[1], 0, dummyp); + factor *= volume_rx * c10pI_minus / (1 + nanion + i); + } + } + + double energy_after = energy_full(); + if (energy_after < MAXENERGYTEST && random_equal->uniform() < factor * exp(beta * (energy_before - energy_after))) { + energy_stored = energy_after; + nsalt_successes += 1; + + if (salt_charge[0] <= -salt_charge[1]) { + ncation += salt_charge_ratio; + nanion++; + } else { + nanion += salt_charge_ratio; + ncation++; + } + } else { + energy_stored = energy_before; + + // delete inserted ions + for (int i = 0; i < salt_charge_ratio + 1; i++) { + atom->natoms--; + if (mm[i] >= 0) { + atom->nlocal--; + } + } + if (force->kspace) force->kspace->qsum_qsq(); + if (force->pair->tail_flag) force->pair->reinit(); + } +} + +void FixChargeRegulation::backward_ions_multival() { + + double energy_before = energy_stored; + double factor = 1; + double dummyp[3]; // dummy particle + int mm[salt_charge_ratio + 1]; // particle ID array for all deleted ions + double qq[salt_charge_ratio + 1]; // charge array for all deleted ions + int mask_tmp[salt_charge_ratio + 1]; // temporary mask array + + if (salt_charge[0] <= -salt_charge[1]) { + // delete one anion and (salt_charge_ratio) cations + if (ncation < salt_charge_ratio || nanion < 1) return; + + mm[0] = get_random_particle(anion_type, salt_charge[1], 0, dummyp); + if (npart_xrd != nanion) + error->all(FLERR, "fix charge/regulation salt count inconsistent"); + factor *= volume_rx * c10pI_minus / (nanion); + if (mm[0] >= 0) { + qq[0] = atom->q[mm[0]]; + atom->q[mm[0]] = 0; + mask_tmp[0] = atom->mask[mm[0]]; + atom->mask[mm[0]] = exclusion_group_bit; + } + for (int i = 0; i < salt_charge_ratio; i++) { + mm[i + 1] = get_random_particle(cation_type, salt_charge[0], 0, dummyp); + if (npart_xrd != ncation - i) + error->all(FLERR, "fix charge/regulation salt count inconsistent"); + factor *= volume_rx * c10pI_plus / (ncation - i); + if (mm[i + 1] >= 0) { + qq[i + 1] = atom->q[mm[i + 1]]; + atom->q[mm[i + 1]] = 0; + mask_tmp[i + 1] = atom->mask[mm[i + 1]]; + atom->mask[mm[i + 1]] = exclusion_group_bit; + } + } + } else { + // delete one cation and (salt_charge_ratio) anions + + if (nanion < salt_charge_ratio || ncation < 1) return; + mm[0] = get_random_particle(cation_type, salt_charge[0], 0, dummyp); + if (npart_xrd != ncation) + error->all(FLERR, "fix charge/regulation salt count inconsistent"); + factor *= volume_rx * c10pI_plus / (ncation); + if (mm[0] >= 0) { + qq[0] = atom->q[mm[0]]; + atom->q[mm[0]] = 0; + mask_tmp[0] = atom->mask[mm[0]]; + atom->mask[mm[0]] = exclusion_group_bit; + } + for (int i = 0; i < salt_charge_ratio; i++) { + mm[i + 1] = get_random_particle(anion_type, salt_charge[1], 0, dummyp); + if (npart_xrd != nanion - i) + error->all(FLERR, "fix charge/regulation salt count inconsistent"); + if (mm[i + 1] >= 0) { + qq[i + 1] = atom->q[mm[i + 1]]; + atom->q[mm[i + 1]] = 0; + mask_tmp[i + 1] = atom->mask[mm[i + 1]]; + atom->mask[mm[i + 1]] = exclusion_group_bit; + } + factor *= volume_rx * c10pI_minus / (nanion - i); + } + } + + // attempt deletion + + double energy_after = energy_full(); + if (energy_after < MAXENERGYTEST && + random_equal->uniform() < (1.0 / factor) * exp(beta * (energy_before - energy_after))) { + energy_stored = energy_after; + + atom->natoms -= 1 + salt_charge_ratio; + // ions must be deleted in order, otherwise index m could change upon the first deletion + for (int i = 0; i < salt_charge_ratio + 1; i++) { + // get max mm value, poor N^2 scaling, but charge ratio is a SMALL number (2 or 3). + int maxmm = -1, jmaxm = -1; + for (int j = 0; j < salt_charge_ratio + 1; j++) { + if (mm[j] > maxmm) { + maxmm = mm[j]; + jmaxm = j; + } + } + if (maxmm < 0) { + break; // already deleted all particles in this thread + } else { + // delete particle maxmm + atom->avec->copy(atom->nlocal - 1, maxmm, 1); + atom->nlocal--; + mm[jmaxm] = -1; + } + } + + // update indices + nsalt_successes += 1; + if (salt_charge[0] <= -salt_charge[1]) { + ncation -= salt_charge_ratio; + nanion--; + } else { + nanion -= salt_charge_ratio; + ncation--; + } + if (force->kspace) force->kspace->qsum_qsq(); + if (force->pair->tail_flag) force->pair->reinit(); + + } else { + energy_stored = energy_before; + + // reassign original charge and mask + for (int i = 0; i < salt_charge_ratio + 1; i++) { + if (mm[i] >= 0) { + atom->q[mm[i]] = qq[i]; + atom->mask[mm[i]] = mask_tmp[i]; + } + } + } +} + +int FixChargeRegulation::insert_particle(int ptype, double charge, double rd, double *target) { + + // insert a particle of type (ptype) with charge (charge) within distance (rd) of (target) + + double coord[3]; + int m = -1; + if (rd < SMALL) { + coord[0] = xlo + random_equal->uniform() * (xhi - xlo); + coord[1] = ylo + random_equal->uniform() * (yhi - ylo); + coord[2] = zlo + random_equal->uniform() * (zhi - zlo); + } else { + // get a random point inside a sphere with radius rd + // simple rejection sampling, probably the fastest method + double dxx=1,dyy=1,dzz=1; + while (dxx * dxx + dyy * dyy + dzz * dzz > 1.0) { + dxx = 2 * random_equal->uniform() - 1.0; + dyy = 2 * random_equal->uniform() - 1.0; + dzz = 2 * random_equal->uniform() - 1.0; + } + coord[0] = target[0] + rd * dxx; + coord[1] = target[1] + rd * dyy; + coord[2] = target[2] + rd * dzz; + + // Alternative way, but likely somewhat less efficient + /* + double radius = rd * pow(random_equal->uniform(), THIRD); + double theta = acos(2 * random_equal->uniform() - 1); + double phi = random_equal->uniform() * 2 * MY_PI; + double sinphi = sin(phi); + double cosphi = cos(phi); + double sintheta = sin(theta); + double costheta = cos(theta); + coord[0] = target[0] + radius * sintheta * cosphi; + coord[1] = target[1] + radius * sintheta * sinphi; + coord[2] = target[2] + radius * costheta; + */ + coord[0] = coord[0] - floor(1.0 * (coord[0] - xlo) / (xhi - xlo)) * (xhi - xlo); + coord[1] = coord[1] - floor(1.0 * (coord[1] - ylo) / (yhi - ylo)) * (yhi - ylo); + coord[2] = coord[2] - floor(1.0 * (coord[2] - zlo) / (zhi - zlo)) * (zhi - zlo); + } + + if (coord[0] >= sublo[0] && coord[0] < subhi[0] && + coord[1] >= sublo[1] && coord[1] < subhi[1] && + coord[2] >= sublo[2] && coord[2] < subhi[2]) { + atom->avec->create_atom(ptype, coord); + m = atom->nlocal - 1; + atom->mask[m] = groupbitall; + + sigma = sqrt(force->boltz * *target_temperature_tcp / atom->mass[ptype] / force->mvv2e); + atom->v[m][0] = random_unequal->gaussian() * sigma; + atom->v[m][1] = random_unequal->gaussian() * sigma; + atom->v[m][2] = random_unequal->gaussian() * sigma; + atom->q[m] = charge; + modify->create_attribute(m); + + } + atom->nghost = 0; + comm->borders(); + atom->natoms++; + return m; +} + +int FixChargeRegulation::get_random_particle(int ptype, double charge, double rd, double *target) { + + // returns a randomly chosen particle of type (ptype) with charge (charge) + // chosen among particles within distance (rd) of (target) + + int nlocal = atom->nlocal; + + // expand memory, if necessary + if (atom->nmax > cr_nmax) { + memory->sfree(ptype_ID); + cr_nmax = atom->nmax; + ptype_ID = (int *) memory->smalloc(cr_nmax * sizeof(int), + "CR: local_atom_list"); + } + + int count_local, count_global, count_before; + int m = -1; + count_local = 0; + count_global = 0; + count_before = 0; + + if (rd < SMALL) { //reaction_distance < SMALL: No constraint on random particle choice + for (int i = 0; i < nlocal; i++) { + if (atom->type[i] == ptype && fabs(atom->q[i] - charge) < SMALL && + atom->mask[i] != exclusion_group_bit) { + ptype_ID[count_local] = i; + count_local++; + } + } + } else { + double dx, dy, dz, distance_check; + for (int i = 0; i < nlocal; i++) { + dx = fabs(atom->x[i][0] - target[0]); + dx -= static_cast(1.0 * dx / (xhi - xlo) + 0.5) * (xhi - xlo); + dy = fabs(atom->x[i][1] - target[1]); + dy -= static_cast(1.0 * dy / (yhi - ylo) + 0.5) * (yhi - ylo); + dz = fabs(atom->x[i][2] - target[2]); + dz -= static_cast(1.0 * dz / (zhi - zlo) + 0.5) * (zhi - zlo); + distance_check = dx * dx + dy * dy + dz * dz; + if ((distance_check < rd * rd) && atom->type[i] == ptype && + fabs(atom->q[i] - charge) < SMALL && atom->mask[i] != exclusion_group_bit) { + ptype_ID[count_local] = i; + count_local++; + } + } + } + count_global = count_local; + count_before = count_local; + MPI_Allreduce(&count_local, &count_global, 1, MPI_INT, MPI_SUM, world); + MPI_Scan(&count_local, &count_before, 1, MPI_INT, MPI_SUM, world); + count_before -= count_local; + + npart_xrd = count_global; // save the number of particles, for use in MC acceptance ratio + if (count_global > 0) { + const int ID_global = floor(random_equal->uniform() * count_global); + if ((ID_global >= count_before) && (ID_global < (count_before + count_local))) { + const int ID_local = ID_global - count_before; + m = ptype_ID[ID_local]; // local ID of the chosen particle + return m; + } + } + return -1; +} + +double FixChargeRegulation::energy_full() { + if (triclinic) domain->x2lamda(atom->nlocal); + domain->pbc(); + comm->exchange(); + atom->nghost = 0; + comm->borders(); + if (triclinic) domain->lamda2x(atom->nlocal + atom->nghost); + if (modify->n_pre_neighbor) modify->pre_neighbor(); + neighbor->build(1); + int eflag = 1; + int vflag = 0; + if (overlap_flag) { + int overlaptestall; + int overlaptest = 0; + double delx, dely, delz, rsq; + double **x = atom->x; + int nall = atom->nlocal + atom->nghost; + for (int i = 0; i < atom->nlocal; i++) { + for (int j = i + 1; j < nall; j++) { + delx = x[i][0] - x[j][0]; + dely = x[i][1] - x[j][1]; + delz = x[i][2] - x[j][2]; + rsq = delx * delx + dely * dely + delz * delz; + if (rsq < overlap_cutoffsq) { + overlaptest = 1; + break; + } + } + if (overlaptest) break; + } + overlaptestall = overlaptest; + MPI_Allreduce(&overlaptest, &overlaptestall, 1, + MPI_INT, MPI_MAX, world); + if (overlaptestall) return MAXENERGYSIGNAL; + } + size_t nbytes = sizeof(double) * (atom->nlocal + atom->nghost); + if (nbytes) memset(&atom->f[0][0], 0, 3 * nbytes); + + if (modify->n_pre_force) modify->pre_force(vflag); + + if (force->pair) force->pair->compute(eflag, vflag); + + if (atom->molecular) { + if (force->bond) force->bond->compute(eflag, vflag); + if (force->angle) force->angle->compute(eflag, vflag); + if (force->dihedral) force->dihedral->compute(eflag, vflag); + if (force->improper) force->improper->compute(eflag, vflag); + } + + if (force->kspace) force->kspace->compute(eflag, vflag); + + if (modify->n_pre_reverse) modify->pre_reverse(eflag,vflag); + if (modify->n_post_force) modify->post_force(vflag); + if (modify->n_end_of_step) modify->end_of_step(); + update->eflag_global = update->ntimestep; + double total_energy = c_pe->compute_scalar(); + return total_energy; +} + +int FixChargeRegulation::particle_number_xrd(int ptype, double charge, double rd, double *target) { + + int count = 0; + if (rd < SMALL) { + for (int i = 0; i < atom->nlocal; i++) { + if (atom->type[i] == ptype && fabs(atom->q[i] - charge) < SMALL && atom->mask[i] != exclusion_group_bit) + count++; + } + } else { + double dx, dy, dz, distance_check; + for (int i = 0; i < atom->nlocal; i++) { + dx = fabs(atom->x[i][0] - target[0]); + dx -= static_cast(1.0 * dx / (xhi - xlo) + 0.5) * (xhi - xlo); + dy = fabs(atom->x[i][1] - target[1]); + dy -= static_cast(1.0 * dy / (yhi - ylo) + 0.5) * (yhi - ylo); + dz = fabs(atom->x[i][2] - target[2]); + dz -= static_cast(1.0 * dz / (zhi - zlo) + 0.5) * (zhi - zlo); + distance_check = dx * dx + dy * dy + dz * dz; + if ((distance_check < rd * rd) && atom->type[i] == ptype && + fabs(atom->q[i] - charge) < SMALL && atom->mask[i] != exclusion_group_bit) { + count++; + } + } + } + int count_sum = count; + MPI_Allreduce(&count, &count_sum, 1, MPI_INT, MPI_SUM, world); + return count_sum; +} + +int FixChargeRegulation::particle_number(int ptype, double charge) { + + int count = 0; + for (int i = 0; i < atom->nlocal; i++) { + if (atom->type[i] == ptype && fabs(atom->q[i] - charge) < SMALL && atom->mask[i] != exclusion_group_bit) + count = count + 1; + } + int count_sum = count; + MPI_Allreduce(&count, &count_sum, 1, MPI_INT, MPI_SUM, world); + return count_sum; +} + +double FixChargeRegulation::compute_vector(int n) { + if (n == 0) { + return nacid_attempts + nbase_attempts + nsalt_attempts; + } else if (n == 1) { + return nacid_successes + nbase_successes + nsalt_successes; + } else if (n == 2) { + return particle_number(acid_type, 0); + } else if (n == 3) { + return particle_number(acid_type, -1); + } else if (n == 4) { + return particle_number(base_type, 0); + } else if (n == 5) { + return particle_number(base_type, 1); + } else if (n == 6) { + return particle_number(cation_type, salt_charge[0]); + } else if (n == 7) { + return particle_number(anion_type, salt_charge[1]); + } + return 0.0; +} + +void FixChargeRegulation::setThermoTemperaturePointer() { + int ifix = -1; + ifix = modify->find_fix(idftemp); + if (ifix == -1) { + error->all(FLERR, + "fix charge/regulation regulation could not find a temperature fix id provided by tempfixid\n"); + } + Fix *temperature_fix = modify->fix[ifix]; + int dim; + target_temperature_tcp = (double *) temperature_fix->extract("t_target", dim); + +} + +void FixChargeRegulation::assign_tags() { + // Assign tags to ions with zero tags + if (atom->tag_enable) { + tagint *tag = atom->tag; + tagint maxtag_all = 0; + tagint maxtag = 0; + for (int i = 0; i < atom->nlocal; i++) maxtag = MAX(maxtag, tag[i]); + maxtag_all = maxtag; + MPI_Allreduce(&maxtag, &maxtag_all, 1, MPI_LMP_TAGINT, MPI_MAX, world); + if (maxtag_all >= MAXTAGINT) + error->all(FLERR, "New atom IDs exceed maximum allowed ID"); + + tagint notag = 0; + tagint notag_all; + for (int i = 0; i < atom->nlocal; i++) + if (tag[i] == 0 && (atom->type[i] == cation_type || atom->type[i] == anion_type))notag++; + notag_all = notag; + MPI_Allreduce(¬ag, ¬ag_all, 1, MPI_LMP_TAGINT, MPI_SUM, world); + if (notag_all >= MAXTAGINT) + error->all(FLERR, "New atom IDs exceed maximum allowed ID"); + + tagint notag_sum = notag; + MPI_Scan(¬ag, ¬ag_sum, 1, MPI_LMP_TAGINT, MPI_SUM, world); + // itag = 1st new tag that my untagged atoms should use + + tagint itag = maxtag_all + notag_sum - notag + 1; + for (int i = 0; i < atom->nlocal; i++) { + if (tag[i] == 0 && (atom->type[i] == cation_type || atom->type[i] == anion_type)) { + tag[i] = itag++; + } + } + if (atom->map_style) atom->map_init(); + atom->nghost = 0; + comm->borders(); + } +} + +/* ---------------------------------------------------------------------- + parse input options +------------------------------------------------------------------------- */ + +void FixChargeRegulation::options(int narg, char **arg) { + if (narg < 0) error->all(FLERR, "Illegal fix charge/regulation command"); + + // defaults + + pH = 7.0; + pI_plus = 5; + pI_minus = 5; + acid_type = -1; + base_type = -1; + pKa = 100; + pKb = 100; + pKs = 14.0; + nevery = 100; + nmc = 100; + pmcmoves[0] = pmcmoves[1] = pmcmoves[2] = THIRD; + llength_unit_in_nm= 0.71; // Default set to Bjerrum length in water at 20 degrees C [nm] + + reservoir_temperature = 1.0; + reaction_distance = 0; + seed = 0; + target_temperature_tcp = &reservoir_temperature; + add_tags_flag = false; + only_salt_flag = false; + salt_charge[0] = 1; // cation charge + salt_charge[1] = -1; // anion charge + + exclusion_group = 0; + exclusion_group_bit = 0; + ngroups = 0; + int ngroupsmax = 0; + groupstrings = nullptr; + + int iarg = 0; + while (iarg < narg) { + + if (strcmp(arg[iarg], "lunit_nm") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + llength_unit_in_nm = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + iarg += 2; + } else if (strcmp(arg[iarg], "acid_type") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + acid_type = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); + iarg += 2; + } else if (strcmp(arg[iarg], "base_type") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + base_type = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); + iarg += 2; + } else if (strcmp(arg[iarg], "pH") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + pH = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + iarg += 2; + } else if (strcmp(arg[iarg], "pIp") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + pI_plus = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + iarg += 2; + } else if (strcmp(arg[iarg], "pIm") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + pI_minus = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + iarg += 2; + } else if (strcmp(arg[iarg], "pKa") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + pKa = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + iarg += 2; + } else if (strcmp(arg[iarg], "pKb") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + pKb = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + iarg += 2; + + } else if (strcmp(arg[iarg], "temp") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + reservoir_temperature = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + iarg += 2; + } else if (strcmp(arg[iarg], "pKs") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + pKs = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + iarg += 2; + } else if (strcmp(arg[iarg], "tempfixid") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + idftemp = utils::strdup(arg[iarg+1]); + setThermoTemperaturePointer(); + iarg += 2; + } else if (strcmp(arg[iarg], "rxd") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + reaction_distance = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + if ((reaction_distance > domain->prd_half[0]) || + (reaction_distance > domain->prd_half[1]) || + (reaction_distance > domain->prd_half[2])) { + if (comm->me == 0) + error->warning(FLERR,"reaction distance (rxd) is larger than half " + "the box dimension, resetting default: xrd = 0."); + reaction_distance = 0; + } + iarg += 2; + } else if (strcmp(arg[iarg], "nevery") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + nevery = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); + iarg += 2; + } else if (strcmp(arg[iarg], "nmc") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + nmc = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); + iarg += 2; + } else if (strcmp(arg[iarg], "pmcmoves") == 0) { + if (iarg + 4 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + pmcmoves[0] = utils::numeric(FLERR, arg[iarg + 1], false, lmp); + pmcmoves[1] = utils::numeric(FLERR, arg[iarg + 2], false, lmp); + pmcmoves[2] = utils::numeric(FLERR, arg[iarg + 3], false, lmp); + iarg += 4; + } else if (strcmp(arg[iarg], "seed") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + seed = utils::inumeric(FLERR, arg[iarg + 1], false, lmp); + iarg += 2; + } else if (strcmp(arg[iarg], "tag") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + if (strcmp(arg[iarg + 1], "yes") == 0) { + add_tags_flag = true; + } else if (strcmp(arg[iarg + 1], "no") == 0) { + add_tags_flag = false; + } else error->all(FLERR, "Illegal fix charge/regulation command"); + iarg += 2; + } else if (strcmp(arg[iarg], "onlysalt") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + if (strcmp(arg[iarg + 1], "yes") == 0) { + only_salt_flag = true; + // need to specify salt charge + if (iarg + 4 > narg) + error->all(FLERR, "Illegal fix charge/regulation command"); + salt_charge[0] = utils::inumeric(FLERR, arg[iarg + 2], false, lmp); + salt_charge[1] = utils::inumeric(FLERR, arg[iarg + 3], false, lmp); + iarg += 4; + } else if (strcmp(arg[iarg + 1], "no") == 0) { + only_salt_flag = false; + iarg += 2; + } else error->all(FLERR, "Illegal fix charge/regulation command"); + + } else if (strcmp(arg[iarg], "group") == 0) { + if (iarg + 2 > narg) + error->all(FLERR, "Illegal fix fix charge/regulation command"); + if (ngroups >= ngroupsmax) { + ngroupsmax = ngroups + 1; + groupstrings = (char **) + memory->srealloc(groupstrings, + ngroupsmax * sizeof(char *), + "fix_charge_regulation:groupstrings"); + } + groupstrings[ngroups] = utils::strdup(arg[iarg+1]); + ngroups++; + iarg += 2; + } else error->all(FLERR, "Illegal fix charge/regulation command"); + } +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based arrays +------------------------------------------------------------------------- */ + +double FixChargeRegulation::memory_usage() { + return (double)cr_nmax * sizeof(int); +} diff --git a/src/MC/fix_charge_regulation.h b/src/MC/fix_charge_regulation.h new file mode 100644 index 0000000000..3afaffddb7 --- /dev/null +++ b/src/MC/fix_charge_regulation.h @@ -0,0 +1,118 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing author: Tine Curk (tcurk5@gmail.com) and Jiaxing Yuan (yuanjiaxing123@hotmail.com) +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS + +FixStyle(charge/regulation,FixChargeRegulation) + +#else + +#ifndef LMP_FIX_CHARGE_REGULATION_H +#define LMP_FIX_CHARGE_REGULATION_H + +#include "fix.h" + +namespace LAMMPS_NS { + + class FixChargeRegulation : public Fix { + public: + FixChargeRegulation(class LAMMPS *, int, char **); + ~FixChargeRegulation(); + int setmask(); + void init(); + void pre_exchange(); + void forward_acid(); + void backward_acid(); + void forward_base(); + void backward_base(); + void forward_ions(); + void forward_ions_multival(); + void backward_ions(); + void backward_ions_multival(); + int get_random_particle(int, double, double, double *); + int insert_particle(int, double, double, double *); + double energy_full(); + int particle_number(int, double); + int particle_number_xrd(int, double, double, double *); + double compute_vector(int n); + void assign_tags(); + void options(int, char **); + void setThermoTemperaturePointer(); + double memory_usage(); + + private: + int exclusion_group, exclusion_group_bit; + int nevery, seed; // begin MC cycle every nevery MD timesteps, random seed + int nmc; // MC move attempts per cycle + double llength_unit_in_nm ; // LAMMPS unit of length in nm, needed since chemical potentials are in units of mol/l + double pH, pKa, pKb, pKs, pI_plus, pI_minus; // chemical potentials and equilibrium constant in log10 base + double c10pH, c10pKa, c10pKb, c10pOH, c10pI_plus, c10pI_minus; // 10 raised to chemical potential value, in units of concentration [mol/liter] + double pmcmoves[3]; // mc move attempt probability: acid, base, ion pair exchange + double pmcc; // mc move cumulative attempt probability + int npart_xrd; // # of particles (ions) within xrd + int npart_xrd2; // # of particles (ions) within xrd + double vlocal_xrd; // # local volume within xrd + bool only_salt_flag; // true if performing only salt insertion/deletion, no acid/base dissociation. + bool add_tags_flag; // true if each inserted atom gets its unique atom tag + int groupbitall; // group bitmask for inserted atoms + int ngroups; // number of group-ids for inserted atoms + char **groupstrings; // list of group-ids for inserted atoms + + // counters + unsigned long int nacid_attempts, nacid_successes, nbase_attempts, nbase_successes, nsalt_attempts, nsalt_successes; + int nacid_neutral, nacid_charged, nbase_neutral, nbase_charged, ncation, nanion; // particle type counts + int cr_nmax; // max number of local particles + double reservoir_temperature; + double beta, sigma, volume, volume_rx; // inverse temperature, speed, total volume, reacting volume + int salt_charge[2]; // charge of salt ions: [0] - cation, [1] - anion + int salt_charge_ratio; // charge ratio when using multivalent ion exchange + double xlo, xhi, ylo, yhi, zlo, zhi; // box size + double energy_stored; // full energy of old/current configuration + int triclinic; // 0 = orthog box, 1 = triclinic + double *sublo, *subhi; // triclinic size + int *ptype_ID; // particle ID array + double overlap_cutoffsq; // square distance cutoff for overlap + int overlap_flag; + int acid_type, cation_type, base_type, anion_type; // reacting atom types + int reaction_distance_flag; // radial reaction restriction flag + double reaction_distance; // max radial distance from acid/base for ion insertion + + + class Pair *pair; + class Compute *c_pe; // energy compute pointer + class RanPark *random_equal; // random number generator + class RanPark *random_unequal; // random number generator + char *idftemp; // pointer to the temperature fix + double *target_temperature_tcp; // current temperature of the thermostat + + }; +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +Self-explanatory. + +*/ diff --git a/src/MC/fix_gcmc.cpp b/src/MC/fix_gcmc.cpp index b946615b04..3ab6327404 100644 --- a/src/MC/fix_gcmc.cpp +++ b/src/MC/fix_gcmc.cpp @@ -580,14 +580,7 @@ void FixGCMC::init() // neighbor list exclusion setup // turn off interactions between group all and the exclusion group - int narg = 4; - char **arg = new char*[narg];; - arg[0] = (char *) "exclude"; - arg[1] = (char *) "group"; - arg[2] = (char *) group_id.c_str(); - arg[3] = (char *) "all"; - neighbor->modify_params(narg,arg); - delete [] arg; + neighbor->modify_params(fmt::format("exclude group {} all",group_id)); } // create a new group for temporary use with selected molecules diff --git a/src/MC/fix_widom.cpp b/src/MC/fix_widom.cpp index e898196e14..65f00811c1 100644 --- a/src/MC/fix_widom.cpp +++ b/src/MC/fix_widom.cpp @@ -342,14 +342,7 @@ void FixWidom::init() // neighbor list exclusion setup // turn off interactions between group all and the exclusion group - int narg = 4; - char **arg = new char*[narg];; - arg[0] = (char *) "exclude"; - arg[1] = (char *) "group"; - arg[2] = (char *) group_id.c_str(); - arg[3] = (char *) "all"; - neighbor->modify_params(narg,arg); - delete [] arg; + neighbor->modify_params(fmt::format("exclude group {} all",group_id)); } // create a new group for temporary use with selected molecules diff --git a/src/MESSAGE/message.h b/src/MESSAGE/message.h index f8b2d47a21..88c658e44b 100644 --- a/src/MESSAGE/message.h +++ b/src/MESSAGE/message.h @@ -20,13 +20,13 @@ CommandStyle(message,Message) #ifndef LMP_MESSAGE_H #define LMP_MESSAGE_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class Message : protected Pointers { +class Message : public Command { public: - Message(class LAMMPS *lmp) : Pointers(lmp) {}; + Message(class LAMMPS *lmp) : Command(lmp) {}; void command(int, char **); private: diff --git a/src/MESSAGE/server.h b/src/MESSAGE/server.h index 579f6ab6f1..7c93db8c64 100644 --- a/src/MESSAGE/server.h +++ b/src/MESSAGE/server.h @@ -20,13 +20,13 @@ CommandStyle(server,Server) #ifndef LMP_SERVER_H #define LMP_SERVER_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class Server : protected Pointers { +class Server : public Command { public: - Server(class LAMMPS *lmp) : Pointers(lmp) {}; + Server(class LAMMPS *lmp) : Command(lmp) {}; void command(int, char **); }; diff --git a/src/Makefile b/src/Makefile index a63c49e344..d5f0e600d6 100644 --- a/src/Makefile +++ b/src/Makefile @@ -55,7 +55,7 @@ PACKUSER = user-adios user-atc user-awpmd user-bocs user-cgdna user-cgsdk user-c user-diffraction user-dpd user-drude user-eff user-fep user-h5md \ user-intel user-lb user-manifold user-meamc user-mesodpd user-mesont \ user-mgpt user-misc user-mofff user-molfile \ - user-netcdf user-omp user-phonon user-plumed user-ptm user-qmmm \ + user-netcdf user-omp user-phonon user-pace user-plumed user-ptm user-qmmm \ user-qtb user-quip user-reaction user-reaxc user-scafacos user-smd user-smtbq \ user-sdpd user-sph user-tally user-uef user-vtk user-yaff @@ -63,15 +63,15 @@ PACKLIB = compress gpu kim kokkos latte message mpiio mscg poems \ python voronoi \ user-adios user-atc user-awpmd user-colvars user-h5md user-lb user-molfile \ user-netcdf user-plumed user-qmmm user-quip user-scafacos \ - user-smd user-vtk user-mesont + user-smd user-vtk user-mesont user-pace PACKSYS = compress mpiio python user-lb PACKINT = gpu kokkos message poems user-atc user-awpmd user-colvars user-mesont PACKEXT = kim latte mscg voronoi \ - user-adios user-h5md user-molfile user-netcdf user-plumed user-qmmm user-quip \ - user-smd user-vtk + user-adios user-h5md user-molfile user-netcdf user-pace user-plumed \ + user-qmmm user-quip user-smd user-vtk PACKALL = $(PACKAGE) $(PACKUSER) diff --git a/src/PLUGIN/plugin.cpp b/src/PLUGIN/plugin.cpp index b52e1a1959..d311b64520 100644 --- a/src/PLUGIN/plugin.cpp +++ b/src/PLUGIN/plugin.cpp @@ -41,7 +41,7 @@ namespace LAMMPS_NS /* ---------------------------------------------------------------------- */ - Plugin::Plugin(LAMMPS *lmp) : Pointers(lmp) {} + Plugin::Plugin(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- */ @@ -257,7 +257,7 @@ namespace LAMMPS_NS "style {} from plugin", plugin->name)); } - (*command_map)[plugin->name] = (Input::CommandCreator)plugin->creator.v3; + (*command_map)[plugin->name] = (Input::CommandCreator)plugin->creator.v1; } else { utils::logmesg(lmp,fmt::format("Loading plugin for {} styles not " diff --git a/src/PLUGIN/plugin.h b/src/PLUGIN/plugin.h index 946b08db1a..4b4bca9878 100644 --- a/src/PLUGIN/plugin.h +++ b/src/PLUGIN/plugin.h @@ -21,12 +21,12 @@ CommandStyle(plugin,Plugin) #define LMP_PLUGIN_H #include "lammpsplugin.h" -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { - class Plugin : protected Pointers { + class Plugin : public Command { public: Plugin(class LAMMPS *); void command(int, char **); diff --git a/src/PYTHON/fix_python_invoke.cpp b/src/PYTHON/fix_python_invoke.cpp index 6483e21f91..82baef909b 100644 --- a/src/PYTHON/fix_python_invoke.cpp +++ b/src/PYTHON/fix_python_invoke.cpp @@ -93,7 +93,7 @@ void FixPythonInvoke::end_of_step() { PyUtils::GIL lock; - PyObject * result = PyObject_CallFunction((PyObject*)pFunc, "O", (PyObject*)lmpPtr); + PyObject * result = PyObject_CallFunction((PyObject*)pFunc, (char *)"O", (PyObject*)lmpPtr); if (!result) { PyUtils::Print_Errors(); @@ -110,8 +110,9 @@ void FixPythonInvoke::post_force(int vflag) if (update->ntimestep % nevery != 0) return; PyUtils::GIL lock; + char fmt[] = "Oi"; - PyObject * result = PyObject_CallFunction((PyObject*)pFunc, "Oi", (PyObject*)lmpPtr, vflag); + PyObject * result = PyObject_CallFunction((PyObject*)pFunc, fmt, (PyObject*)lmpPtr, vflag); if (!result) { PyUtils::Print_Errors(); diff --git a/src/PYTHON/fix_python_move.cpp b/src/PYTHON/fix_python_move.cpp index e04a32afe4..8ec2e1b74d 100644 --- a/src/PYTHON/fix_python_move.cpp +++ b/src/PYTHON/fix_python_move.cpp @@ -75,7 +75,7 @@ FixPythonMove::FixPythonMove(LAMMPS *lmp, int narg, char **arg) : } PyObject *ptr = PY_VOID_POINTER(lmp); - PyObject *py_move_obj = PyObject_CallFunction(py_move_type, "O", ptr); + PyObject *py_move_obj = PyObject_CallFunction(py_move_type, (char *)"O", ptr); Py_CLEAR(ptr); if (!py_move_obj) { @@ -112,7 +112,7 @@ int FixPythonMove::setmask() void FixPythonMove::init() { PyUtils::GIL lock; - PyObject * result = PyObject_CallMethod((PyObject *)py_move, "init", nullptr); + PyObject * result = PyObject_CallMethod((PyObject *)py_move, (char *)"init", nullptr); if (!result) { PyUtils::Print_Errors(); @@ -126,7 +126,7 @@ void FixPythonMove::init() void FixPythonMove::initial_integrate(int vflag) { PyUtils::GIL lock; - PyObject * result = PyObject_CallMethod((PyObject*)py_move, "initial_integrate", "i", vflag); + PyObject * result = PyObject_CallMethod((PyObject*)py_move, (char *)"initial_integrate", (char *)"i", vflag); if (!result) { PyUtils::Print_Errors(); @@ -140,7 +140,7 @@ void FixPythonMove::initial_integrate(int vflag) void FixPythonMove::final_integrate() { PyUtils::GIL lock; - PyObject * result = PyObject_CallMethod((PyObject*)py_move, "final_integrate", nullptr); + PyObject * result = PyObject_CallMethod((PyObject*)py_move, (char *)"final_integrate", nullptr); if (!result) { PyUtils::Print_Errors(); @@ -154,7 +154,7 @@ void FixPythonMove::final_integrate() void FixPythonMove::initial_integrate_respa(int vflag, int ilevel, int iloop) { PyUtils::GIL lock; - PyObject * result = PyObject_CallMethod((PyObject*)py_move, "initial_integrate_respa", "iii", vflag, ilevel, iloop); + PyObject * result = PyObject_CallMethod((PyObject*)py_move, (char *)"initial_integrate_respa", (char *)"iii", vflag, ilevel, iloop); if (!result) { PyUtils::Print_Errors(); @@ -168,7 +168,7 @@ void FixPythonMove::initial_integrate_respa(int vflag, int ilevel, int iloop) void FixPythonMove::final_integrate_respa(int ilevel, int iloop) { PyUtils::GIL lock; - PyObject * result = PyObject_CallMethod((PyObject*)py_move, "final_integrate_respa", "ii", ilevel, iloop); + PyObject * result = PyObject_CallMethod((PyObject*)py_move, (char *)"final_integrate_respa", (char *)"ii", ilevel, iloop); if (!result) { PyUtils::Print_Errors(); @@ -182,7 +182,7 @@ void FixPythonMove::final_integrate_respa(int ilevel, int iloop) void FixPythonMove::reset_dt() { PyUtils::GIL lock; - PyObject * result = PyObject_CallMethod((PyObject*)py_move, "reset_dt", nullptr); + PyObject * result = PyObject_CallMethod((PyObject*)py_move, (char *)"reset_dt", nullptr); if (!result) { PyUtils::Print_Errors(); diff --git a/src/PYTHON/pair_python.cpp b/src/PYTHON/pair_python.cpp index b147c9cb79..5020119e0d 100644 --- a/src/PYTHON/pair_python.cpp +++ b/src/PYTHON/pair_python.cpp @@ -288,7 +288,7 @@ void PairPython::coeff(int narg, char **arg) py_potential = (void *) py_pair_instance; - PyObject *py_value = PyObject_CallMethod(py_pair_instance, "check_units", "s", update->unit_style); + PyObject *py_value = PyObject_CallMethod(py_pair_instance, (char *)"check_units", (char *)"s", update->unit_style); if (!py_value) { PyUtils::Print_Errors(); error->all(FLERR,"Calling 'check_units' function failed"); @@ -306,7 +306,7 @@ void PairPython::coeff(int narg, char **arg) } else skip_types[i] = 0; const int type = i; const char * name = arg[2+i]; - py_value = PyObject_CallMethod(py_pair_instance, "map_coeff", "si", name, type); + py_value = PyObject_CallMethod(py_pair_instance, (char *)"map_coeff", (char *)"si", name, type); if (!py_value) { PyUtils::Print_Errors(); error->all(FLERR,"Calling 'map_coeff' function failed"); diff --git a/src/QEQ/fix_qeq.cpp b/src/QEQ/fix_qeq.cpp index a63e008b36..e592ed2af4 100644 --- a/src/QEQ/fix_qeq.cpp +++ b/src/QEQ/fix_qeq.cpp @@ -18,16 +18,16 @@ #include "fix_qeq.h" -#include -#include #include "atom.h" #include "comm.h" -#include "neigh_list.h" -#include "update.h" +#include "error.h" #include "force.h" #include "memory.h" -#include "error.h" +#include "neigh_list.h" +#include "update.h" +#include +#include using namespace LAMMPS_NS; using namespace FixConst; @@ -386,13 +386,11 @@ int FixQEq::CG( double *b, double *x ) vector_sum( d, 1., p, beta, d, inum ); } - if (loop >= maxiter && comm->me == 0) { - char str[128]; - sprintf(str,"Fix qeq CG convergence failed (%g) after %d iterations " - "at " BIGINT_FORMAT " step",sqrt(sig_new)/b_norm,loop,update->ntimestep); - error->warning(FLERR,str); - } - + if ((comm->me == 0) && (loop >= maxiter)) + error->warning(FLERR,fmt::format("Fix qeq CG convergence failed ({}) " + "after {} iterations at step {}", + sqrt(sig_new)/b_norm,loop, + update->ntimestep)); return loop; } @@ -708,11 +706,9 @@ void FixQEq::read_file(char *file) FILE *fp; if (comm->me == 0) { fp = utils::open_potential(file,lmp,nullptr); - if (fp == nullptr) { - char str[128]; - snprintf(str,128,"Cannot open fix qeq parameter file %s",file); - error->one(FLERR,str); - } + if (fp == nullptr) + error->one(FLERR,fmt::format("Cannot open fix qeq parameter file {}: {}", + file,utils::getsyserror())); } // read each line out of file, skipping blank lines or leading '#' diff --git a/src/QEQ/fix_qeq_dynamic.cpp b/src/QEQ/fix_qeq_dynamic.cpp index b06bde223b..397393b786 100644 --- a/src/QEQ/fix_qeq_dynamic.cpp +++ b/src/QEQ/fix_qeq_dynamic.cpp @@ -17,20 +17,20 @@ #include "fix_qeq_dynamic.h" -#include - -#include #include "atom.h" #include "comm.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "neigh_request.h" -#include "update.h" +#include "error.h" #include "force.h" #include "group.h" #include "kspace.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" #include "respa.h" -#include "error.h" +#include "update.h" + +#include +#include using namespace LAMMPS_NS; @@ -154,14 +154,9 @@ void FixQEqDynamic::pre_force(int /*vflag*/) } } - if (comm->me == 0) { - if (iloop == maxiter) { - char str[128]; - sprintf(str,"Charges did not converge at step " BIGINT_FORMAT - ": %lg",update->ntimestep,enegchk); - error->warning(FLERR,str); - } - } + if ((comm->me == 0) && (iloop >= maxiter)) + error->warning(FLERR,fmt::format("Charges did not converge at step " + "{}: {}",update->ntimestep,enegchk)); if (force->kspace) force->kspace->qsum_qsq(); } diff --git a/src/QEQ/fix_qeq_fire.cpp b/src/QEQ/fix_qeq_fire.cpp index b33a7745e0..0bdf65dc18 100644 --- a/src/QEQ/fix_qeq_fire.cpp +++ b/src/QEQ/fix_qeq_fire.cpp @@ -17,22 +17,22 @@ #include "fix_qeq_fire.h" -#include - -#include #include "atom.h" #include "comm.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "neigh_request.h" -#include "update.h" +#include "error.h" #include "force.h" #include "group.h" +#include "kspace.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" #include "pair_comb.h" #include "pair_comb3.h" -#include "kspace.h" #include "respa.h" -#include "error.h" +#include "update.h" + +#include +#include using namespace LAMMPS_NS; using namespace FixConst; @@ -47,7 +47,7 @@ using namespace FixConst; /* ---------------------------------------------------------------------- */ FixQEqFire::FixQEqFire(LAMMPS *lmp, int narg, char **arg) : - FixQEq(lmp, narg, arg) + FixQEq(lmp, narg, arg), comb(nullptr), comb3(nullptr) { qdamp = 0.20; qstep = 0.20; @@ -65,9 +65,6 @@ FixQEqFire::FixQEqFire(LAMMPS *lmp, int narg, char **arg) : iarg += 2; } else error->all(FLERR,"Illegal fix qeq/fire command"); } - - comb = nullptr; - comb3 = nullptr; } /* ---------------------------------------------------------------------- */ @@ -94,9 +91,8 @@ void FixQEqFire::init() if (utils::strmatch(update->integrate_style,"^respa")) nlevels_respa = ((Respa *) update->integrate)->nlevels; - comb = (PairComb *) force->pair_match("comb",1); - comb3 = (PairComb3 *) force->pair_match("comb3",1); - + comb3 = (PairComb3 *) force->pair_match("^comb3",0); + if (!comb3) comb = (PairComb *) force->pair_match("^comb",0); } /* ---------------------------------------------------------------------- */ @@ -218,14 +214,9 @@ void FixQEqFire::pre_force(int /*vflag*/) if (enegchk < tolerance) break; } - if (comm->me == 0) { - if (iloop == maxiter) { - char str[128]; - sprintf(str,"Charges did not converge at step " BIGINT_FORMAT - ": %lg",update->ntimestep,enegchk); - error->warning(FLERR,str); - } - } + if ((comm->me == 0) && (iloop >= maxiter)) + error->warning(FLERR,fmt::format("Charges did not converge at step " + "{}: {}",update->ntimestep,enegchk)); if (force->kspace) force->kspace->qsum_qsq(); } diff --git a/src/QEQ/fix_qeq_point.cpp b/src/QEQ/fix_qeq_point.cpp index 3d71135ae1..ac31f906e0 100644 --- a/src/QEQ/fix_qeq_point.cpp +++ b/src/QEQ/fix_qeq_point.cpp @@ -16,20 +16,22 @@ ------------------------------------------------------------------------- */ #include "fix_qeq_point.h" -#include -#include + #include "atom.h" #include "comm.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "neigh_request.h" -#include "update.h" +#include "error.h" #include "force.h" #include "group.h" #include "kspace.h" -#include "respa.h" #include "memory.h" -#include "error.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" +#include "respa.h" +#include "update.h" + +#include +#include using namespace LAMMPS_NS; @@ -158,13 +160,9 @@ void FixQEqPoint::compute_H() } } - if (m_fill >= H.m) { - char str[128]; - sprintf(str,"H matrix size has been exceeded: m_fill=%d H.m=%d\n", - m_fill, H.m ); - error->warning(FLERR,str); - error->all(FLERR,"Fix qeq/point has insufficient QEq matrix size"); - } + if (m_fill >= H.m) + error->all(FLERR,fmt::format("Fix qeq/point has insufficient H matrix " + "size: m_fill={} H.m={}\n",m_fill, H.m)); } /* ---------------------------------------------------------------------- */ diff --git a/src/QEQ/fix_qeq_shielded.cpp b/src/QEQ/fix_qeq_shielded.cpp index 356a747ed3..ad6202abd8 100644 --- a/src/QEQ/fix_qeq_shielded.cpp +++ b/src/QEQ/fix_qeq_shielded.cpp @@ -16,21 +16,23 @@ ------------------------------------------------------------------------- */ #include "fix_qeq_shielded.h" -#include -#include + #include "atom.h" #include "comm.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "neigh_request.h" -#include "update.h" +#include "error.h" #include "force.h" #include "group.h" -#include "pair.h" #include "kspace.h" -#include "respa.h" #include "memory.h" -#include "error.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" +#include "pair.h" +#include "respa.h" +#include "update.h" + +#include +#include using namespace LAMMPS_NS; @@ -223,13 +225,9 @@ void FixQEqShielded::compute_H() } } - if (m_fill >= H.m) { - char str[128]; - sprintf(str,"H matrix size has been exceeded: m_fill=%d H.m=%d\n", - m_fill, H.m ); - error->warning(FLERR,str); - error->all(FLERR,"Fix qeq/shielded has insufficient QEq matrix size"); - } + if (m_fill >= H.m) + error->all(FLERR,fmt::format("Fix qeq/shielded has insufficient H matrix " + "size: m_fill={} H.m={}\n",m_fill,H.m)); } /* ---------------------------------------------------------------------- */ @@ -247,7 +245,7 @@ double FixQEqShielded::calculate_H( double r, double gamma ) Taper = Taper * r + Tap[0]; denom = r * r * r + gamma; - denom = pow(denom,0.3333333333333); + denom = pow(denom,1.0/3.0); return Taper * EV_TO_KCAL_PER_MOL / denom; } diff --git a/src/QEQ/fix_qeq_slater.cpp b/src/QEQ/fix_qeq_slater.cpp index 9b90f78d7a..326d71c93b 100644 --- a/src/QEQ/fix_qeq_slater.cpp +++ b/src/QEQ/fix_qeq_slater.cpp @@ -16,22 +16,23 @@ ------------------------------------------------------------------------- */ #include "fix_qeq_slater.h" -#include -#include #include "atom.h" #include "comm.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "neigh_request.h" -#include "update.h" +#include "error.h" #include "force.h" #include "group.h" -#include "pair.h" #include "kspace.h" -#include "respa.h" #include "math_const.h" -#include "error.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" +#include "pair.h" +#include "respa.h" +#include "update.h" + +#include +#include using namespace LAMMPS_NS; using namespace MathConst; @@ -207,14 +208,9 @@ void FixQEqSlater::compute_H() chizj[i] = zjtmp; } - if (m_fill >= H.m) { - char str[128]; - sprintf(str,"H matrix size has been exceeded: m_fill=%d H.m=%d\n", - m_fill, H.m ); - error->warning(FLERR,str); - error->all(FLERR,"Fix qeq/slater has insufficient QEq matrix size"); - } - + if (m_fill >= H.m) + error->all(FLERR,fmt::format(FLERR,"Fix qeq/slater has insufficient H " + "matrix size:m_fill={} H.m={}\n",m_fill,H.m)); } /* ---------------------------------------------------------------------- */ diff --git a/src/REPLICA/hyper.cpp b/src/REPLICA/hyper.cpp index 5a9cf8520e..8eb1c143e9 100644 --- a/src/REPLICA/hyper.cpp +++ b/src/REPLICA/hyper.cpp @@ -38,7 +38,7 @@ enum{NOHYPER,GLOBAL,LOCAL}; /* ---------------------------------------------------------------------- */ -Hyper::Hyper(LAMMPS *lmp) : Pointers(lmp), dumplist(nullptr) {} +Hyper::Hyper(LAMMPS *lmp) : Command(lmp), dumplist(nullptr) {} /* ---------------------------------------------------------------------- perform hyperdynamics simulation diff --git a/src/REPLICA/hyper.h b/src/REPLICA/hyper.h index 1b05172bcf..a96ccf3727 100644 --- a/src/REPLICA/hyper.h +++ b/src/REPLICA/hyper.h @@ -20,11 +20,11 @@ CommandStyle(hyper,Hyper) #ifndef LMP_HYPER_H #define LMP_HYPER_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class Hyper : protected Pointers { +class Hyper : public Command { public: Hyper(class LAMMPS *); ~Hyper() {} diff --git a/src/REPLICA/neb.cpp b/src/REPLICA/neb.cpp index a6a70fde38..7183bdd168 100644 --- a/src/REPLICA/neb.cpp +++ b/src/REPLICA/neb.cpp @@ -42,7 +42,7 @@ using namespace MathConst; /* ---------------------------------------------------------------------- */ -NEB::NEB(LAMMPS *lmp) : Pointers(lmp), all(nullptr), rdist(nullptr) {} +NEB::NEB(LAMMPS *lmp) : Command(lmp), all(nullptr), rdist(nullptr) {} /* ---------------------------------------------------------------------- internal NEB constructor, called from TAD @@ -50,7 +50,7 @@ NEB::NEB(LAMMPS *lmp) : Pointers(lmp), all(nullptr), rdist(nullptr) {} NEB::NEB(LAMMPS *lmp, double etol_in, double ftol_in, int n1steps_in, int n2steps_in, int nevery_in, double *buf_init, double *buf_final) - : Pointers(lmp), all(nullptr), rdist(nullptr) + : Command(lmp), all(nullptr), rdist(nullptr) { double delx,dely,delz; diff --git a/src/REPLICA/neb.h b/src/REPLICA/neb.h index b53992711c..8298766ccf 100644 --- a/src/REPLICA/neb.h +++ b/src/REPLICA/neb.h @@ -20,11 +20,11 @@ CommandStyle(neb,NEB) #ifndef LMP_NEB_H #define LMP_NEB_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class NEB : protected Pointers { +class NEB : public Command { public: NEB(class LAMMPS *); NEB(class LAMMPS *, double, double, int, int, int, double *, double *); diff --git a/src/REPLICA/prd.cpp b/src/REPLICA/prd.cpp index 40e5fc8833..2ba0340109 100644 --- a/src/REPLICA/prd.cpp +++ b/src/REPLICA/prd.cpp @@ -46,7 +46,7 @@ enum{SINGLE_PROC_DIRECT,SINGLE_PROC_MAP,MULTI_PROC}; /* ---------------------------------------------------------------------- */ -PRD::PRD(LAMMPS *lmp) : Pointers(lmp) {} +PRD::PRD(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- perform PRD simulation on one or more replicas diff --git a/src/REPLICA/prd.h b/src/REPLICA/prd.h index 3539987093..0d8fde1bfe 100644 --- a/src/REPLICA/prd.h +++ b/src/REPLICA/prd.h @@ -20,11 +20,11 @@ CommandStyle(prd,PRD) #ifndef LMP_PRD_H #define LMP_PRD_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class PRD : protected Pointers { +class PRD : public Command { public: PRD(class LAMMPS *); ~PRD() {} diff --git a/src/REPLICA/tad.cpp b/src/REPLICA/tad.cpp index 0bab7a31c8..a849e7a242 100644 --- a/src/REPLICA/tad.cpp +++ b/src/REPLICA/tad.cpp @@ -43,7 +43,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -TAD::TAD(LAMMPS *lmp) : Pointers(lmp) {} +TAD::TAD(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/REPLICA/tad.h b/src/REPLICA/tad.h index d44b226643..91e570c707 100644 --- a/src/REPLICA/tad.h +++ b/src/REPLICA/tad.h @@ -20,11 +20,11 @@ CommandStyle(tad,TAD) #ifndef LMP_TAD_H #define LMP_TAD_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class TAD : protected Pointers { +class TAD : public Command { public: TAD(class LAMMPS *); ~TAD(); diff --git a/src/REPLICA/temper.cpp b/src/REPLICA/temper.cpp index 63b34b9b1d..d3894060a3 100644 --- a/src/REPLICA/temper.cpp +++ b/src/REPLICA/temper.cpp @@ -40,7 +40,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -Temper::Temper(LAMMPS *lmp) : Pointers(lmp) {} +Temper::Temper(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/REPLICA/temper.h b/src/REPLICA/temper.h index 883ec30b94..3f7d813f2a 100644 --- a/src/REPLICA/temper.h +++ b/src/REPLICA/temper.h @@ -20,11 +20,11 @@ CommandStyle(temper,Temper) #ifndef LMP_TEMPER_H #define LMP_TEMPER_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class Temper : protected Pointers { +class Temper : public Command { public: Temper(class LAMMPS *); ~Temper(); diff --git a/src/SPIN/fix_nve_spin.cpp b/src/SPIN/fix_nve_spin.cpp index 7b96c88a6a..5da7c32b6c 100644 --- a/src/SPIN/fix_nve_spin.cpp +++ b/src/SPIN/fix_nve_spin.cpp @@ -551,11 +551,23 @@ void FixNVESpin::sectoring() { int sec[3]; double sublo[3],subhi[3]; - double* sublotmp = domain->sublo; - double* subhitmp = domain->subhi; - for (int dim = 0 ; dim < 3 ; dim++) { - sublo[dim]=sublotmp[dim]; - subhi[dim]=subhitmp[dim]; + + if (domain->triclinic == 1){ + double* sublotmp = domain->sublo_lamda; + double* subhitmp = domain->subhi_lamda; + for (int dim = 0 ; dim < 3 ; dim++) { + sublo[dim]=sublotmp[dim]*domain->boxhi[dim]; + subhi[dim]=subhitmp[dim]*domain->boxhi[dim]; + } + } + + else { + double* sublotmp = domain->sublo; + double* subhitmp = domain->subhi; + for (int dim = 0 ; dim < 3 ; dim++) { + sublo[dim]=sublotmp[dim]; + subhi[dim]=subhitmp[dim]; + } } const double rsx = subhi[0] - sublo[0]; diff --git a/src/SPIN/neb_spin.cpp b/src/SPIN/neb_spin.cpp index cbb495db8e..88a0ffc402 100644 --- a/src/SPIN/neb_spin.cpp +++ b/src/SPIN/neb_spin.cpp @@ -67,7 +67,7 @@ static const char cite_neb_spin[] = /* ---------------------------------------------------------------------- */ -NEBSpin::NEBSpin(LAMMPS *lmp) : Pointers(lmp) { +NEBSpin::NEBSpin(LAMMPS *lmp) : Command(lmp) { if (lmp->citeme) lmp->citeme->add(cite_neb_spin); } diff --git a/src/SPIN/neb_spin.h b/src/SPIN/neb_spin.h index 568eca0957..54d85093a5 100644 --- a/src/SPIN/neb_spin.h +++ b/src/SPIN/neb_spin.h @@ -20,11 +20,11 @@ CommandStyle(neb/spin,NEBSpin) #ifndef LMP_NEB_SPIN_H #define LMP_NEB_SPIN_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class NEBSpin : protected Pointers { +class NEBSpin : public Command { public: NEBSpin(class LAMMPS *); ~NEBSpin(); diff --git a/src/SPIN/pair_spin_exchange_biquadratic.cpp b/src/SPIN/pair_spin_exchange_biquadratic.cpp index 352949e5c3..a00d1cc8b0 100644 --- a/src/SPIN/pair_spin_exchange_biquadratic.cpp +++ b/src/SPIN/pair_spin_exchange_biquadratic.cpp @@ -393,7 +393,7 @@ void PairSpinExchangeBiquadratic::compute_exchange(int i, int j, double rsq, jtype = type[j]; r2j = rsq/J3[itype][jtype]/J3[itype][jtype]; - r2k = rsq/J3[itype][jtype]/J3[itype][jtype]; + r2k = rsq/K3[itype][jtype]/K3[itype][jtype]; Jex = 4.0*J1_mag[itype][jtype]*r2j; Jex *= (1.0-J2[itype][jtype]*r2j); diff --git a/src/USER-COLVARS/group_ndx.h b/src/USER-COLVARS/group_ndx.h index fa15f0e82e..58b210937a 100644 --- a/src/USER-COLVARS/group_ndx.h +++ b/src/USER-COLVARS/group_ndx.h @@ -22,13 +22,13 @@ CommandStyle(group2ndx,Group2Ndx) #ifndef LMP_GROUP_NDX_H #define LMP_GROUP_NDX_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class Group2Ndx : protected Pointers { +class Group2Ndx : public Command { public: - Group2Ndx(class LAMMPS *lmp) : Pointers(lmp) {}; + Group2Ndx(class LAMMPS *lmp) : Command(lmp) {}; void command(int, char **); private: void write_group(FILE *, int); diff --git a/src/USER-COLVARS/ndx_group.h b/src/USER-COLVARS/ndx_group.h index ceca1f9570..91b2e471ba 100644 --- a/src/USER-COLVARS/ndx_group.h +++ b/src/USER-COLVARS/ndx_group.h @@ -22,15 +22,16 @@ CommandStyle(ndx2group,Ndx2Group) #ifndef LMP_NDX_GROUP_H #define LMP_NDX_GROUP_H -#include "pointers.h" +#include "command.h" #include namespace LAMMPS_NS { -class Ndx2Group : protected Pointers { +class Ndx2Group : public Command { public: - Ndx2Group(class LAMMPS *lmp) : Pointers(lmp) {}; + Ndx2Group(class LAMMPS *lmp) : Command(lmp) {}; void command(int, char **); + private: void create(const std::string &, const std::vector &); }; diff --git a/src/USER-MISC/fix_srp.cpp b/src/USER-MISC/fix_srp.cpp index eb57da30e9..51047dfaa6 100644 --- a/src/USER-MISC/fix_srp.cpp +++ b/src/USER-MISC/fix_srp.cpp @@ -128,20 +128,10 @@ void FixSRP::init() // bond particles do not interact with other types // type bptype only interacts with itself - char* arg1[4]; - arg1[0] = (char *) "exclude"; - arg1[1] = (char *) "type"; - char c0[20]; - char c1[20]; - for (int z = 1; z < atom->ntypes; z++) { if (z == bptype) continue; - sprintf(c0, "%d", z); - arg1[2] = c0; - sprintf(c1, "%d", bptype); - arg1[3] = c1; - neighbor->modify_params(4, arg1); + neighbor->modify_params(fmt::format("exclude type {} {}",z,bptype)); } } diff --git a/src/USER-MISC/temper_grem.cpp b/src/USER-MISC/temper_grem.cpp index 3b987aaad2..ee60ab375d 100644 --- a/src/USER-MISC/temper_grem.cpp +++ b/src/USER-MISC/temper_grem.cpp @@ -40,7 +40,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -TemperGrem::TemperGrem(LAMMPS *lmp) : Pointers(lmp) {} +TemperGrem::TemperGrem(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/USER-MISC/temper_grem.h b/src/USER-MISC/temper_grem.h index f379814c61..3c1891f22d 100644 --- a/src/USER-MISC/temper_grem.h +++ b/src/USER-MISC/temper_grem.h @@ -20,11 +20,11 @@ CommandStyle(temper/grem,TemperGrem) #ifndef LMP_TEMPER_GREM_H #define LMP_TEMPER_GREM_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class TemperGrem : protected Pointers { +class TemperGrem : public Command { public: TemperGrem(class LAMMPS *); ~TemperGrem(); diff --git a/src/USER-MISC/temper_npt.cpp b/src/USER-MISC/temper_npt.cpp index 08fa2246c3..1ed55a9cf3 100644 --- a/src/USER-MISC/temper_npt.cpp +++ b/src/USER-MISC/temper_npt.cpp @@ -42,7 +42,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -TemperNPT::TemperNPT(LAMMPS *lmp) : Pointers(lmp) {} +TemperNPT::TemperNPT(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/USER-MISC/temper_npt.h b/src/USER-MISC/temper_npt.h index 6beae68c6a..a0eb1c1e9b 100644 --- a/src/USER-MISC/temper_npt.h +++ b/src/USER-MISC/temper_npt.h @@ -21,11 +21,11 @@ CommandStyle(temper/npt,TemperNPT) #ifndef LMP_TEMPERNPT_H #define LMP_TEMPERNPT_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class TemperNPT : protected Pointers { +class TemperNPT : public Command { public: TemperNPT(class LAMMPS *); ~TemperNPT(); diff --git a/src/USER-PACE/Install.sh b/src/USER-PACE/Install.sh new file mode 100644 index 0000000000..c099ddd2c4 --- /dev/null +++ b/src/USER-PACE/Install.sh @@ -0,0 +1,64 @@ +# Install/unInstall package files in LAMMPS +# mode = 0/1/2 for uninstall/install/update + +mode=$1 + +# enforce using portable C locale +LC_ALL=C +export LC_ALL + +# arg1 = file, arg2 = file it depends on + +action () { + if (test $mode = 0) then + rm -f ../$1 + elif (! cmp -s $1 ../$1) then + if (test -z "$2" || test -e ../$2) then + cp $1 .. + if (test $mode = 2) then + echo " updating src/$1" + fi + fi + elif (test -n "$2") then + if (test ! -e ../$2) then + rm -f ../$1 + fi + fi +} + +# all package files with no dependencies + +for file in *.cpp *.h; do + test -f ${file} && action $file +done + +# edit 2 Makefile.package files to include/exclude package info + +if (test $1 = 1) then + + if (test -e ../Makefile.package) then + sed -i -e 's/[^ \t]*pace[^ \t]* //' ../Makefile.package + sed -i -e 's|^PKG_SYSINC =[ \t]*|&$(pace_SYSINC) |' ../Makefile.package + sed -i -e 's|^PKG_SYSLIB =[ \t]*|&$(pace_SYSLIB) |' ../Makefile.package + sed -i -e 's|^PKG_SYSPATH =[ \t]*|&$(pace_SYSPATH) |' ../Makefile.package + fi + + if (test -e ../Makefile.package.settings) then + sed -i -e '/^include.*pace.*$/d' ../Makefile.package.settings + # multiline form needed for BSD sed on Macs + sed -i -e '4 i \ +include ..\/..\/lib\/pace\/Makefile.lammps +' ../Makefile.package.settings + fi + +elif (test $1 = 0) then + + if (test -e ../Makefile.package) then + sed -i -e 's/[^ \t]*pace[^ \t]* //' ../Makefile.package + fi + + if (test -e ../Makefile.package.settings) then + sed -i -e '/^include.*pace.*$/d' ../Makefile.package.settings + fi + +fi diff --git a/src/USER-PACE/README b/src/USER-PACE/README new file mode 100644 index 0000000000..c701a615f7 --- /dev/null +++ b/src/USER-PACE/README @@ -0,0 +1,23 @@ +The USER-PACE package provides the pace pair style, +an efficient implementation of the Atomic Cluster Expansion +potential (ACE). + +ACE is a methodology for deriving a highly accurate classical +potential fit to a large archive of quantum mechanical (DFT) data. +This package was written by Yury Lysogorskiy and others +at ICAMS, the Interdisciplinary Centre for Advanced Materials Simulation, +Ruhr University Bochum, Germany (http://www.icams.de). + +This package requires a library that can be downloaded and built +in lib/pace or somewhere else, which must be done before building +LAMMPS with this package. Details of the download, build, and +install process for this package using traditional make (not CMake) +are given in the lib/pace/README file, and scripts are +provided to help automate the process. Also see the LAMMPS manual for +general information on building LAMMPS with external libraries +using either traditional make or CMake. + +More information about the USER-PACE implementation of ACE +is available here: + +https://github.com/ICAMS/lammps-user-pace diff --git a/src/USER-PACE/pair_pace.cpp b/src/USER-PACE/pair_pace.cpp new file mode 100644 index 0000000000..d6eda0f511 --- /dev/null +++ b/src/USER-PACE/pair_pace.cpp @@ -0,0 +1,392 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://lammps.sandia.gov/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* +Copyright 2021 Yury Lysogorskiy^1, Cas van der Oord^2, Anton Bochkarev^1, + Sarath Menon^1, Matteo Rinaldi^1, Thomas Hammerschmidt^1, Matous Mrovec^1, + Aidan Thompson^3, Gabor Csanyi^2, Christoph Ortner^4, Ralf Drautz^1 + +^1: Ruhr-University Bochum, Bochum, Germany +^2: University of Cambridge, Cambridge, United Kingdom +^3: Sandia National Laboratories, Albuquerque, New Mexico, USA +^4: University of British Columbia, Vancouver, BC, Canada +*/ + + +// +// Created by Lysogorskiy Yury on 27.02.20. +// + +#include "pair_pace.h" + +#include "atom.h" +#include "comm.h" +#include "error.h" +#include "force.h" +#include "math_const.h" +#include "memory.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" +#include "update.h" + +#include +#include + +#include "ace_evaluator.h" +#include "ace_recursive.h" +#include "ace_c_basis.h" +#include "ace_version.h" + +namespace LAMMPS_NS { + struct ACEImpl { + ACECTildeBasisSet *basis_set; + ACERecursiveEvaluator *ace; + }; +} + +using namespace LAMMPS_NS; +using namespace MathConst; + +#define MAXLINE 1024 +#define DELTA 4 + +//added YL + +//keywords for ACE evaluator style +#define RECURSIVE_KEYWORD "recursive" +#define PRODUCT_KEYWORD "product" + +static int elements_num_pace = 104; +static char const *const elements_pace[104] = {"X", "H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne", "Na", + "Mg", "Al", "Si", "P", "S", "Cl", "Ar", "K", "Ca", "Sc", "Ti", "V", "Cr", "Mn", + "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr", "Rb", "Sr", + "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh", "Pd", "Ag", "Cd", "In", "Sn", "Sb", + "Te", "I", "Xe", "Cs", "Ba", "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", + "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu", "Hf", "Ta", "W", "Re", "Os", "Ir", + "Pt", "Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn", "Fr", "Ra", "Ac", "Th", + "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Cf", "Es", "Fm", "Md", "No", "Lr" +}; + +static int AtomicNumberByName_pace(char *elname) { + for (int i = 1; i < elements_num_pace; i++) + if (strcmp(elname, elements_pace[i]) == 0) + return i; + return -1; +} + +/* ---------------------------------------------------------------------- */ +PairPACE::PairPACE(LAMMPS *lmp) : Pair(lmp) { + single_enable = 0; + restartinfo = 0; + one_coeff = 1; + manybody_flag = 1; + + aceimpl = new ACEImpl; + aceimpl->ace = nullptr; + aceimpl->basis_set = nullptr; + recursive = false; + + scale = nullptr; +} + +/* ---------------------------------------------------------------------- + check if allocated, since class can be destructed when incomplete +------------------------------------------------------------------------- */ + +PairPACE::~PairPACE() { + if (copymode) return; + + delete aceimpl->basis_set; + delete aceimpl->ace; + delete aceimpl; + + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + memory->destroy(scale); + } +} + +/* ---------------------------------------------------------------------- */ + +void PairPACE::compute(int eflag, int vflag) { + int i, j, ii, jj, inum, jnum; + double delx, dely, delz, evdwl; + double fij[3]; + int *ilist, *jlist, *numneigh, **firstneigh; + + ev_init(eflag, vflag); + + // downwards modified by YL + + double **x = atom->x; + double **f = atom->f; + tagint *tag = atom->tag; + int *type = atom->type; + + // number of atoms in cell + int nlocal = atom->nlocal; + + int newton_pair = force->newton_pair; + + // number of atoms including ghost atoms + int nall = nlocal + atom->nghost; + + // inum: length of the neighborlists list + inum = list->inum; + + // ilist: list of "i" atoms for which neighbor lists exist + ilist = list->ilist; + + //numneigh: the length of each these neigbor list + numneigh = list->numneigh; + + // the pointer to the list of neighbors of "i" + firstneigh = list->firstneigh; + + if (inum != nlocal) + error->all(FLERR,fmt::format("inum: {} nlocal: {} are different",inum, nlocal)); + + // Aidan Thompson told RD (26 July 2019) that practically always holds: + // inum = nlocal + // i = ilist(ii) < inum + // j = jlist(jj) < nall + // neighborlist contains neighbor atoms plus skin atoms, + // skin atoms can be removed by setting skin to zero but here + // they are disregarded anyway + + + //determine the maximum number of neighbours + int max_jnum = -1; + int nei = 0; + for (ii = 0; ii < list->inum; ii++) { + i = ilist[ii]; + jnum = numneigh[i]; + nei = nei + jnum; + if (jnum > max_jnum) + max_jnum = jnum; + } + + aceimpl->ace->resize_neighbours_cache(max_jnum); + + //loop over atoms + for (ii = 0; ii < list->inum; ii++) { + i = list->ilist[ii]; + const int itype = type[i]; + + const double xtmp = x[i][0]; + const double ytmp = x[i][1]; + const double ztmp = x[i][2]; + + jlist = firstneigh[i]; + jnum = numneigh[i]; + + // checking if neighbours are actually within cutoff range is done inside compute_atom + // mapping from LAMMPS atom types ('type' array) to ACE species is done inside compute_atom + // by using 'aceimpl->ace->element_type_mapping' array + // x: [r0 ,r1, r2, ..., r100] + // i = 0 ,1 + // jnum(0) = 50 + // jlist(neigh ind of 0-atom) = [1,2,10,7,99,25, .. 50 element in total] + + try { + aceimpl->ace->compute_atom(i, x, type, jnum, jlist); + } catch (exception &e) { + error->one(FLERR, e.what()); + } + // 'compute_atom' will update the `aceimpl->ace->e_atom` and `aceimpl->ace->neighbours_forces(jj, alpha)` arrays + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + const int jtype = type[j]; + j &= NEIGHMASK; + delx = x[j][0] - xtmp; + dely = x[j][1] - ytmp; + delz = x[j][2] - ztmp; + + fij[0] = scale[itype][jtype]*aceimpl->ace->neighbours_forces(jj, 0); + fij[1] = scale[itype][jtype]*aceimpl->ace->neighbours_forces(jj, 1); + fij[2] = scale[itype][jtype]*aceimpl->ace->neighbours_forces(jj, 2); + + f[i][0] += fij[0]; + f[i][1] += fij[1]; + f[i][2] += fij[2]; + f[j][0] -= fij[0]; + f[j][1] -= fij[1]; + f[j][2] -= fij[2]; + + // tally per-atom virial contribution + if (vflag) + ev_tally_xyz(i, j, nlocal, newton_pair, 0.0, 0.0, + fij[0], fij[1], fij[2], + -delx, -dely, -delz); + } + + // tally energy contribution + if (eflag) { + // evdwl = energy of atom I + evdwl = scale[1][1]*aceimpl->ace->e_atom; + ev_tally_full(i, 2.0 * evdwl, 0.0, 0.0, 0.0, 0.0, 0.0); + } + } + + if (vflag_fdotr) virial_fdotr_compute(); + + // end modifications YL +} + +/* ---------------------------------------------------------------------- */ + +void PairPACE::allocate() { + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag, n + 1, n + 1, "pair:setflag"); + memory->create(cutsq, n + 1, n + 1, "pair:cutsq"); + memory->create(scale, n + 1, n + 1,"pair:scale"); + map = new int[n+1]; +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void PairPACE::settings(int narg, char **arg) { + if (narg > 1) + error->all(FLERR,"Illegal pair_style command."); + + // ACE potentials are parameterized in metal units + if (strcmp("metal",update->unit_style) != 0) + error->all(FLERR,"ACE potentials require 'metal' units"); + + recursive = true; // default evaluator style: RECURSIVE + if (narg > 0) { + if (strcmp(arg[0], RECURSIVE_KEYWORD) == 0) + recursive = true; + else if (strcmp(arg[0], PRODUCT_KEYWORD) == 0) { + recursive = false; + } else error->all(FLERR,"Illegal pair_style command"); + } + + if (comm->me == 0) { + utils::logmesg(lmp,fmt::format("ACE version: {}.{}.{}\n", + VERSION_YEAR, VERSION_MONTH, VERSION_DAY)); + if (recursive) utils::logmesg(lmp,"Recursive evaluator is used\n"); + else utils::logmesg(lmp,"Product evaluator is used\n"); + } +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +void PairPACE::coeff(int narg, char **arg) { + + if (!allocated) allocate(); + + map_element2type(narg-3,arg+3); + + auto potential_file_name = utils::get_potential_file_path(arg[2]); + char **elemtypes = &arg[3]; + + //load potential file + aceimpl->basis_set = new ACECTildeBasisSet(); + if (comm->me == 0) + utils::logmesg(lmp,fmt::format("Loading {}\n", potential_file_name)); + aceimpl->basis_set->load(potential_file_name); + + if (comm->me == 0) { + utils::logmesg(lmp,"Total number of basis functions\n"); + + for (SPECIES_TYPE mu = 0; mu < aceimpl->basis_set->nelements; mu++) { + int n_r1 = aceimpl->basis_set->total_basis_size_rank1[mu]; + int n = aceimpl->basis_set->total_basis_size[mu]; + utils::logmesg(lmp,fmt::format("\t{}: {} (r=1) {} (r>1)\n", aceimpl->basis_set->elements_name[mu], n_r1, n)); + } + } + + // read args that map atom types to pACE elements + // map[i] = which element the Ith atom type is, -1 if not mapped + // map[0] is not used + + aceimpl->ace = new ACERecursiveEvaluator(); + aceimpl->ace->set_recursive(recursive); + aceimpl->ace->element_type_mapping.init(atom->ntypes + 1); + + const int n = atom->ntypes; + for (int i = 1; i <= n; i++) { + char *elemname = elemtypes[i - 1]; + int atomic_number = AtomicNumberByName_pace(elemname); + if (atomic_number == -1) + error->all(FLERR,fmt::format("'{}' is not a valid element\n", elemname)); + + SPECIES_TYPE mu = aceimpl->basis_set->get_species_index_by_name(elemname); + if (mu != -1) { + if (comm->me == 0) + utils::logmesg(lmp,fmt::format("Mapping LAMMPS atom type #{}({}) -> " + "ACE species type #{}\n", i, elemname, mu)); + map[i] = mu; + aceimpl->ace->element_type_mapping(i) = mu; // set up LAMMPS atom type to ACE species mapping for ace evaluator + } else { + error->all(FLERR, fmt::format("Element {} is not supported by ACE-potential from file {}", elemname,potential_file_name)); + } + } + + // initialize scale factor + for (int i = 1; i <= n; i++) { + for (int j = i; j <= n; j++) { + scale[i][j] = 1.0; + } + } + + aceimpl->ace->set_basis(*aceimpl->basis_set, 1); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairPACE::init_style() { + if (atom->tag_enable == 0) + error->all(FLERR, "Pair style pACE requires atom IDs"); + if (force->newton_pair == 0) + error->all(FLERR, "Pair style pACE requires newton pair on"); + + // request a full neighbor list + int irequest = neighbor->request(this, instance_me); + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +double PairPACE::init_one(int i, int j) { + if (setflag[i][j] == 0) error->all(FLERR, "All pair coeffs are not set"); + //cutoff from the basis set's radial functions settings + scale[j][i] = scale[i][j]; + return aceimpl->basis_set->radial_functions->cut(map[i], map[j]); +} + +/* ---------------------------------------------------------------------- + extract method for extracting value of scale variable + ---------------------------------------------------------------------- */ +void *PairPACE::extract(const char *str, int &dim) +{ + dim = 2; + if (strcmp(str,"scale") == 0) return (void *) scale; + return nullptr; +} + diff --git a/src/USER-PACE/pair_pace.h b/src/USER-PACE/pair_pace.h new file mode 100644 index 0000000000..4d5ddcb9e8 --- /dev/null +++ b/src/USER-PACE/pair_pace.h @@ -0,0 +1,65 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + This software is distributed under the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* +Copyright 2021 Yury Lysogorskiy^1, Cas van der Oord^2, Anton Bochkarev^1, + Sarath Menon^1, Matteo Rinaldi^1, Thomas Hammerschmidt^1, Matous Mrovec^1, + Aidan Thompson^3, Gabor Csanyi^2, Christoph Ortner^4, Ralf Drautz^1 + +^1: Ruhr-University Bochum, Bochum, Germany +^2: University of Cambridge, Cambridge, United Kingdom +^3: Sandia National Laboratories, Albuquerque, New Mexico, USA +^4: University of British Columbia, Vancouver, BC, Canada +*/ + + +// +// Created by Lysogorskiy Yury on 27.02.20. +// + + +#ifdef PAIR_CLASS + +PairStyle(pace,PairPACE) + +#else + +#ifndef LMP_PAIR_PACE_H +#define LMP_PAIR_PACE_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairPACE : public Pair { + public: + PairPACE(class LAMMPS *); + virtual ~PairPACE(); + + virtual void compute(int, int); + void settings(int, char **); + void coeff(int, char **); + virtual void init_style(); + double init_one(int, int); + + void *extract(const char *, int &); + + protected: + struct ACEImpl *aceimpl; + + virtual void allocate(); + + double **scale; + bool recursive; // "recursive" option for ACERecursiveEvaluator +}; +} + +#endif +#endif diff --git a/src/USER-PHONON/dynamical_matrix.cpp b/src/USER-PHONON/dynamical_matrix.cpp index 798b50fdf7..0476c734a5 100644 --- a/src/USER-PHONON/dynamical_matrix.cpp +++ b/src/USER-PHONON/dynamical_matrix.cpp @@ -32,7 +32,7 @@ enum{REGULAR,ESKM}; /* ---------------------------------------------------------------------- */ -DynamicalMatrix::DynamicalMatrix(LAMMPS *lmp) : Pointers(lmp), fp(nullptr) +DynamicalMatrix::DynamicalMatrix(LAMMPS *lmp) : Command(lmp), fp(nullptr) { external_force_clear = 1; } diff --git a/src/USER-PHONON/dynamical_matrix.h b/src/USER-PHONON/dynamical_matrix.h index 8ff11044ea..d8c3ad411b 100644 --- a/src/USER-PHONON/dynamical_matrix.h +++ b/src/USER-PHONON/dynamical_matrix.h @@ -11,62 +11,62 @@ CommandStyle(dynamical_matrix,DynamicalMatrix) #ifndef LMP_DYNAMICAL_MATRIX_H #define LMP_DYNAMICAL_MATRIX_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { - class DynamicalMatrix : protected Pointers { - public: - DynamicalMatrix(class LAMMPS *); - virtual ~DynamicalMatrix(); - void command(int, char **); - void setup(); +class DynamicalMatrix : public Command { + public: + DynamicalMatrix(class LAMMPS *); + virtual ~DynamicalMatrix(); + void command(int, char **); + void setup(); - protected: - int eflag,vflag; // flags for energy/virial computation - int external_force_clear; // clear forces locally or externally + protected: + int eflag,vflag; // flags for energy/virial computation + int external_force_clear; // clear forces locally or externally - int triclinic; // 0 if domain is orthog, 1 if triclinic - int pairflag; + int triclinic; // 0 if domain is orthog, 1 if triclinic + int pairflag; - int pair_compute_flag; // 0 if pair->compute is skipped - int kspace_compute_flag; // 0 if kspace->compute is skipped + int pair_compute_flag; // 0 if pair->compute is skipped + int kspace_compute_flag; // 0 if kspace->compute is skipped - int nvec; // local atomic dof = length of xvec + int nvec; // local atomic dof = length of xvec - void update_force(); - void force_clear(); - virtual void openfile(const char* filename); + void update_force(); + void force_clear(); + virtual void openfile(const char* filename); - private: - void options(int, char **); - void calculateMatrix(); - void dynmat_clear(double **dynmat); - void create_groupmap(); - void writeMatrix(double **dynmat); - void convert_units(const char *style); - void displace_atom(int local_idx, int direction, int magnitude); + private: + void options(int, char **); + void calculateMatrix(); + void dynmat_clear(double **dynmat); + void create_groupmap(); + void writeMatrix(double **dynmat); + void convert_units(const char *style); + void displace_atom(int local_idx, int direction, int magnitude); - double conversion; - double conv_energy; - double conv_distance; - double conv_mass; - double del; - int igroup,groupbit; - bigint gcount; // number of atoms in group - bigint dynlen; // rank of dynamical matrix - int scaleflag; - int me; - bigint *groupmap; + double conversion; + double conv_energy; + double conv_distance; + double conv_mass; + double del; + int igroup,groupbit; + bigint gcount; // number of atoms in group + bigint dynlen; // rank of dynamical matrix + int scaleflag; + int me; + bigint *groupmap; - int compressed; // 1 if dump file is written compressed, 0 no - int binaryflag; // 1 if dump file is written binary, 0 no - int file_opened; // 1 if openfile method has been called, 0 no - int file_flag; // 1 custom file name, 0 dynmat.dat + int compressed; // 1 if dump file is written compressed, 0 no + int binaryflag; // 1 if dump file is written binary, 0 no + int file_opened; // 1 if openfile method has been called, 0 no + int file_flag; // 1 custom file name, 0 dynmat.dat - FILE *fp; - }; + FILE *fp; +}; } diff --git a/src/USER-PHONON/third_order.cpp b/src/USER-PHONON/third_order.cpp index 875490d643..ebcc682d7a 100644 --- a/src/USER-PHONON/third_order.cpp +++ b/src/USER-PHONON/third_order.cpp @@ -32,7 +32,7 @@ enum{REGULAR,BALLISTICO}; /* ---------------------------------------------------------------------- */ -ThirdOrder::ThirdOrder(LAMMPS *lmp) : Pointers(lmp), fp(nullptr) +ThirdOrder::ThirdOrder(LAMMPS *lmp) : Command(lmp), fp(nullptr) { external_force_clear = 1; } diff --git a/src/USER-PHONON/third_order.h b/src/USER-PHONON/third_order.h index 83062b6b1f..56a0266937 100644 --- a/src/USER-PHONON/third_order.h +++ b/src/USER-PHONON/third_order.h @@ -12,11 +12,11 @@ CommandStyle(third_order,ThirdOrder) #ifndef LMP_THIRD_ORDER_H #define LMP_THIRD_ORDER_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { - class ThirdOrder : protected Pointers { + class ThirdOrder : public Command { public: ThirdOrder(class LAMMPS *); virtual ~ThirdOrder(); diff --git a/src/balance.cpp b/src/balance.cpp index 6294e023b3..bf037e8f8f 100644 --- a/src/balance.cpp +++ b/src/balance.cpp @@ -51,7 +51,7 @@ enum{X,Y,Z}; /* ---------------------------------------------------------------------- */ -Balance::Balance(LAMMPS *lmp) : Pointers(lmp) +Balance::Balance(LAMMPS *lmp) : Command(lmp) { MPI_Comm_rank(world,&me); MPI_Comm_size(world,&nprocs); diff --git a/src/balance.h b/src/balance.h index 424da33757..0642fe04f6 100644 --- a/src/balance.h +++ b/src/balance.h @@ -20,11 +20,11 @@ CommandStyle(balance,Balance) #ifndef LMP_BALANCE_H #define LMP_BALANCE_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class Balance : protected Pointers { +class Balance : public Command { public: class RCB *rcb; class FixStore *fixstore; // per-atom weights stored in FixStore diff --git a/src/body.cpp b/src/body.cpp index 89bb2fc1d9..2c4121b0cc 100644 --- a/src/body.cpp +++ b/src/body.cpp @@ -12,7 +12,6 @@ ------------------------------------------------------------------------- */ #include "body.h" -#include using namespace LAMMPS_NS; diff --git a/src/change_box.cpp b/src/change_box.cpp index ba99e1b6e1..4471d85132 100644 --- a/src/change_box.cpp +++ b/src/change_box.cpp @@ -35,7 +35,7 @@ enum{X=0,Y,Z,YZ,XZ,XY}; /* ---------------------------------------------------------------------- */ -ChangeBox::ChangeBox(LAMMPS *lmp) : Pointers(lmp) {} +ChangeBox::ChangeBox(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/change_box.h b/src/change_box.h index d8a057f9a6..f48edb2d9f 100644 --- a/src/change_box.h +++ b/src/change_box.h @@ -20,11 +20,11 @@ CommandStyle(change_box,ChangeBox) #ifndef LMP_CHANGE_BOX_H #define LMP_CHANGE_BOX_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class ChangeBox : protected Pointers { +class ChangeBox : public Command { public: ChangeBox(class LAMMPS *); void command(int, char **); diff --git a/src/command.h b/src/command.h new file mode 100644 index 0000000000..6abbc167ac --- /dev/null +++ b/src/command.h @@ -0,0 +1,29 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifndef LMP_COMMAND_H +#define LMP_COMMAND_H + +#include "pointers.h" + +namespace LAMMPS_NS { + +class Command : protected Pointers { + public: + Command(class LAMMPS *lmp) : Pointers(lmp) {}; + virtual void command(int, char **) = 0; +}; + +} + +#endif diff --git a/src/compute.cpp b/src/compute.cpp index 81e317076c..46bd0d0fc8 100644 --- a/src/compute.cpp +++ b/src/compute.cpp @@ -22,7 +22,6 @@ #include "modify.h" #include -#include using namespace LAMMPS_NS; diff --git a/src/compute_chunk_spread_atom.cpp b/src/compute_chunk_spread_atom.cpp index d817141064..f552454e72 100644 --- a/src/compute_chunk_spread_atom.cpp +++ b/src/compute_chunk_spread_atom.cpp @@ -23,6 +23,8 @@ #include "modify.h" #include "update.h" +#include + using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ diff --git a/src/compute_reduce.cpp b/src/compute_reduce.cpp index 30b4fcb98a..6e961df47a 100644 --- a/src/compute_reduce.cpp +++ b/src/compute_reduce.cpp @@ -25,6 +25,8 @@ #include "update.h" #include "variable.h" +#include + using namespace LAMMPS_NS; #define BIG 1.0e20 diff --git a/src/compute_temp_region.cpp b/src/compute_temp_region.cpp index 036f118a30..535a0166c5 100644 --- a/src/compute_temp_region.cpp +++ b/src/compute_temp_region.cpp @@ -13,15 +13,14 @@ #include "compute_temp_region.h" -#include #include "atom.h" -#include "update.h" -#include "force.h" #include "domain.h" -#include "region.h" +#include "error.h" +#include "force.h" #include "group.h" #include "memory.h" -#include "error.h" +#include "region.h" +#include "update.h" using namespace LAMMPS_NS; diff --git a/src/create_atoms.cpp b/src/create_atoms.cpp index 46aff081d9..7591ae7587 100644 --- a/src/create_atoms.cpp +++ b/src/create_atoms.cpp @@ -52,7 +52,7 @@ enum{NONE,RATIO,SUBSET}; /* ---------------------------------------------------------------------- */ -CreateAtoms::CreateAtoms(LAMMPS *lmp) : Pointers(lmp), basistype(nullptr) {} +CreateAtoms::CreateAtoms(LAMMPS *lmp) : Command(lmp), basistype(nullptr) {} /* ---------------------------------------------------------------------- */ diff --git a/src/create_atoms.h b/src/create_atoms.h index 5508752f00..deb155b96a 100644 --- a/src/create_atoms.h +++ b/src/create_atoms.h @@ -20,11 +20,11 @@ CommandStyle(create_atoms,CreateAtoms) #ifndef LMP_CREATE_ATOMS_H #define LMP_CREATE_ATOMS_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class CreateAtoms : protected Pointers { +class CreateAtoms : public Command { public: CreateAtoms(class LAMMPS *); void command(int, char **); diff --git a/src/create_bonds.cpp b/src/create_bonds.cpp index 494e743c05..bedbe4b436 100644 --- a/src/create_bonds.cpp +++ b/src/create_bonds.cpp @@ -38,7 +38,7 @@ enum{MANY,SBOND,SANGLE,SDIHEDRAL,SIMPROPER}; /* ---------------------------------------------------------------------- */ -CreateBonds::CreateBonds(LAMMPS *lmp) : Pointers(lmp) {} +CreateBonds::CreateBonds(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/create_bonds.h b/src/create_bonds.h index eea99b0113..d2d50c86c6 100644 --- a/src/create_bonds.h +++ b/src/create_bonds.h @@ -20,11 +20,11 @@ CommandStyle(create_bonds,CreateBonds) #ifndef LMP_CREATE_BONDS_H #define LMP_CREATE_BONDS_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class CreateBonds : protected Pointers { +class CreateBonds : public Command { public: CreateBonds(class LAMMPS *); void command(int, char **); diff --git a/src/create_box.cpp b/src/create_box.cpp index 000fb42495..1350b6f392 100644 --- a/src/create_box.cpp +++ b/src/create_box.cpp @@ -12,22 +12,24 @@ ------------------------------------------------------------------------- */ #include "create_box.h" -#include + #include "atom.h" #include "atom_vec.h" +#include "comm.h" #include "domain.h" +#include "error.h" +#include "force.h" #include "region.h" #include "region_prism.h" -#include "force.h" -#include "comm.h" #include "update.h" -#include "error.h" + +#include using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -CreateBox::CreateBox(LAMMPS *lmp) : Pointers(lmp) {} +CreateBox::CreateBox(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/create_box.h b/src/create_box.h index 740769b4de..26a2be6fe1 100644 --- a/src/create_box.h +++ b/src/create_box.h @@ -20,11 +20,11 @@ CommandStyle(create_box,CreateBox) #ifndef LMP_CREATE_BOX_H #define LMP_CREATE_BOX_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class CreateBox : protected Pointers { +class CreateBox : public Command { public: CreateBox(class LAMMPS *); void command(int, char **); diff --git a/src/delete_atoms.cpp b/src/delete_atoms.cpp index 3dbf21ae59..326201c9a2 100644 --- a/src/delete_atoms.cpp +++ b/src/delete_atoms.cpp @@ -41,7 +41,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -DeleteAtoms::DeleteAtoms(LAMMPS *lmp) : Pointers(lmp) {} +DeleteAtoms::DeleteAtoms(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/delete_atoms.h b/src/delete_atoms.h index 5eab7f6ba7..5ff1d12f65 100644 --- a/src/delete_atoms.h +++ b/src/delete_atoms.h @@ -20,12 +20,12 @@ CommandStyle(delete_atoms,DeleteAtoms) #ifndef LMP_DELETE_ATOMS_H #define LMP_DELETE_ATOMS_H -#include "pointers.h" +#include "command.h" #include namespace LAMMPS_NS { -class DeleteAtoms : protected Pointers { +class DeleteAtoms : public Command { public: DeleteAtoms(class LAMMPS *); void command(int, char **); diff --git a/src/delete_bonds.cpp b/src/delete_bonds.cpp index 5a487743e1..2bb46e7564 100644 --- a/src/delete_bonds.cpp +++ b/src/delete_bonds.cpp @@ -30,7 +30,7 @@ enum{MULTI,ATOM,BOND,ANGLE,DIHEDRAL,IMPROPER,STATS}; /* ---------------------------------------------------------------------- */ -DeleteBonds::DeleteBonds(LAMMPS *lmp) : Pointers(lmp) {} +DeleteBonds::DeleteBonds(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/delete_bonds.h b/src/delete_bonds.h index 60d76b9086..5c56a67f68 100644 --- a/src/delete_bonds.h +++ b/src/delete_bonds.h @@ -20,11 +20,11 @@ CommandStyle(delete_bonds,DeleteBonds) #ifndef LMP_DELETE_BONDS_H #define LMP_DELETE_BONDS_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class DeleteBonds : protected Pointers { +class DeleteBonds : public Command { public: DeleteBonds(class LAMMPS *); void command(int, char **); diff --git a/src/deprecated.h b/src/deprecated.h index aceb1181c1..d5997d7199 100644 --- a/src/deprecated.h +++ b/src/deprecated.h @@ -26,13 +26,13 @@ CommandStyle(kim_query,Deprecated) #ifndef LMP_DEPRECATED_H #define LMP_DEPRECATED_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class Deprecated : protected Pointers { +class Deprecated : public Command { public: - Deprecated(class LAMMPS *lmp) : Pointers(lmp) {}; + Deprecated(class LAMMPS *lmp) : Command(lmp) {}; void command(int, char **); }; diff --git a/src/displace_atoms.cpp b/src/displace_atoms.cpp index dd71e944ef..6bc3b0ab35 100644 --- a/src/displace_atoms.cpp +++ b/src/displace_atoms.cpp @@ -42,7 +42,7 @@ enum{MOVE,RAMP,RANDOM,ROTATE}; /* ---------------------------------------------------------------------- */ -DisplaceAtoms::DisplaceAtoms(LAMMPS *lmp) : Pointers(lmp) +DisplaceAtoms::DisplaceAtoms(LAMMPS *lmp) : Command(lmp) { mvec = nullptr; } diff --git a/src/displace_atoms.h b/src/displace_atoms.h index 737d55dbdd..c2c2e8306f 100644 --- a/src/displace_atoms.h +++ b/src/displace_atoms.h @@ -20,11 +20,11 @@ CommandStyle(displace_atoms,DisplaceAtoms) #ifndef LMP_DISPLACE_ATOMS_H #define LMP_DISPLACE_ATOMS_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class DisplaceAtoms : protected Pointers { +class DisplaceAtoms : public Command { public: DisplaceAtoms(class LAMMPS *); ~DisplaceAtoms(); diff --git a/src/dump_local.cpp b/src/dump_local.cpp index 53a82b496f..0f8d139f66 100644 --- a/src/dump_local.cpp +++ b/src/dump_local.cpp @@ -112,7 +112,7 @@ DumpLocal::DumpLocal(LAMMPS *lmp, int narg, char **arg) : label = utils::strdup("ENTRIES"); - // if wildcard expansion occurred, free earg memory from exapnd_args() + // if wildcard expansion occurred, free earg memory from expand_args() if (expand) { for (int i = 0; i < nfield; i++) delete [] earg[i]; @@ -179,6 +179,8 @@ void DumpLocal::init_style() vformat[i] = utils::strdup(std::string(format_int_user) + " "); else if (vtype[i] == Dump::DOUBLE && format_float_user) vformat[i] = utils::strdup(std::string(format_float_user) + " "); + else if (vtype[i] == Dump::BIGINT && format_bigint_user) + vformat[i] = utils::strdup(std::string(format_bigint_user) + " "); else vformat[i] = utils::strdup(word + " "); ++i; } @@ -225,6 +227,46 @@ int DumpLocal::modify_param(int narg, char **arg) delete [] label; label = utils::strdup(arg[1]); return 2; + } else if (strcmp(arg[0],"format") == 0) { + if (narg < 2) error->all(FLERR,"Illegal dump_modify command"); + + if (strcmp(arg[1],"none") == 0) { + // just clear format_column_user allocated by this dump child class + for (int i = 0; i < nfield; i++) { + delete [] format_column_user[i]; + format_column_user[i] = nullptr; + } + return 2; + } else if (strcmp(arg[1],"int") == 0) { + delete [] format_int_user; + format_int_user = utils::strdup(arg[2]); + delete [] format_bigint_user; + int n = strlen(format_int_user) + 8; + format_bigint_user = new char[n]; + // replace "d" in format_int_user with bigint format specifier + // use of &str[1] removes leading '%' from BIGINT_FORMAT string + char *ptr = strchr(format_int_user,'d'); + if (ptr == nullptr) + error->all(FLERR, + "Dump_modify int format does not contain d character"); + char str[8]; + sprintf(str,"%s",BIGINT_FORMAT); + *ptr = '\0'; + sprintf(format_bigint_user,"%s%s%s",format_int_user,&str[1],ptr+1); + *ptr = 'd'; + + } else if (strcmp(arg[1],"float") == 0) { + delete [] format_float_user; + format_float_user = utils::strdup(arg[2]); + + } else { + int i = utils::inumeric(FLERR,arg[1],false,lmp) - 1; + if (i < 0 || i >= nfield) + error->all(FLERR,"Illegal dump_modify command"); + if (format_column_user[i]) delete [] format_column_user[i]; + format_column_user[i] = utils::strdup(arg[2]); + } + return 3; } return 0; } @@ -335,6 +377,10 @@ int DumpLocal::convert_string(int n, double *mybuf) for (j = 0; j < size_one; j++) { if (vtype[j] == Dump::INT) offset += sprintf(&sbuf[offset],vformat[j],static_cast (mybuf[m])); + else if (vtype[j] == Dump::DOUBLE) + offset += sprintf(&sbuf[offset],vformat[j],mybuf[m]); + else if (vtype[j] == Dump::BIGINT) + offset += sprintf(&sbuf[offset],vformat[j],static_cast (mybuf[m])); else offset += sprintf(&sbuf[offset],vformat[j],mybuf[m]); m++; @@ -369,6 +415,8 @@ void DumpLocal::write_lines(int n, double *mybuf) for (i = 0; i < n; i++) { for (j = 0; j < size_one; j++) { if (vtype[j] == Dump::INT) fprintf(fp,vformat[j],static_cast (mybuf[m])); + else if (vtype[j] == Dump::DOUBLE) fprintf(fp,vformat[j],mybuf[m]); + else if (vtype[j] == Dump::BIGINT) fprintf(fp,vformat[j],static_cast(mybuf[m])); else fprintf(fp,vformat[j],mybuf[m]); m++; } diff --git a/src/file_writer.h b/src/file_writer.h index 8597ab570d..02eef6ad70 100644 --- a/src/file_writer.h +++ b/src/file_writer.h @@ -27,7 +27,7 @@ class FileWriter { public: FileWriter() = default; virtual ~FileWriter() = default; - virtual void open(const std::string &path) = 0; + virtual void open(const std::string &path, bool append = false) = 0; virtual void close() = 0; virtual void flush() = 0; virtual size_t write(const void * buffer, size_t length) = 0; diff --git a/src/fix.cpp b/src/fix.cpp index 32a76cc125..14c04bf4b5 100644 --- a/src/fix.cpp +++ b/src/fix.cpp @@ -21,7 +21,6 @@ #include "memory.h" #include -#include using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/fix_controller.cpp b/src/fix_controller.cpp index 21d1ccf751..c611dee271 100644 --- a/src/fix_controller.cpp +++ b/src/fix_controller.cpp @@ -21,8 +21,6 @@ #include "update.h" #include "variable.h" -#include - using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/fix_enforce2d.cpp b/src/fix_enforce2d.cpp index 1284a9b78c..11e041fcf4 100644 --- a/src/fix_enforce2d.cpp +++ b/src/fix_enforce2d.cpp @@ -12,14 +12,13 @@ ------------------------------------------------------------------------- */ #include "fix_enforce2d.h" -#include + #include "atom.h" -#include "update.h" #include "domain.h" +#include "error.h" #include "modify.h" #include "respa.h" -#include "error.h" - +#include "update.h" using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/fix_lineforce.cpp b/src/fix_lineforce.cpp index 6a77442ea4..d95aacfd93 100644 --- a/src/fix_lineforce.cpp +++ b/src/fix_lineforce.cpp @@ -19,7 +19,6 @@ #include "update.h" #include -#include using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/fix_nph_sphere.cpp b/src/fix_nph_sphere.cpp index 20e072d5b5..1266cb2b9d 100644 --- a/src/fix_nph_sphere.cpp +++ b/src/fix_nph_sphere.cpp @@ -16,8 +16,6 @@ #include "error.h" #include "modify.h" -#include - using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/fix_npt_sphere.cpp b/src/fix_npt_sphere.cpp index a6dfeba425..8bbd43d4cf 100644 --- a/src/fix_npt_sphere.cpp +++ b/src/fix_npt_sphere.cpp @@ -16,8 +16,6 @@ #include "error.h" #include "modify.h" -#include - using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/fix_nve_limit.cpp b/src/fix_nve_limit.cpp index 58db5e25d9..58dc023991 100644 --- a/src/fix_nve_limit.cpp +++ b/src/fix_nve_limit.cpp @@ -13,16 +13,15 @@ #include "fix_nve_limit.h" -#include -#include #include "atom.h" -#include "force.h" -#include "update.h" -#include "respa.h" -#include "modify.h" #include "comm.h" #include "error.h" +#include "force.h" +#include "modify.h" +#include "respa.h" +#include "update.h" +#include using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/fix_nve_noforce.cpp b/src/fix_nve_noforce.cpp index 61528a0024..e6bca3b608 100644 --- a/src/fix_nve_noforce.cpp +++ b/src/fix_nve_noforce.cpp @@ -12,11 +12,11 @@ ------------------------------------------------------------------------- */ #include "fix_nve_noforce.h" -#include + #include "atom.h" -#include "update.h" -#include "respa.h" #include "error.h" +#include "respa.h" +#include "update.h" using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/fix_planeforce.cpp b/src/fix_planeforce.cpp index 783d26ac9e..fe6f3d6500 100644 --- a/src/fix_planeforce.cpp +++ b/src/fix_planeforce.cpp @@ -19,7 +19,6 @@ #include "update.h" #include -#include using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/fix_store_force.cpp b/src/fix_store_force.cpp index 1541294f6c..7ebd4db75a 100644 --- a/src/fix_store_force.cpp +++ b/src/fix_store_force.cpp @@ -12,12 +12,12 @@ ------------------------------------------------------------------------- */ #include "fix_store_force.h" -#include + #include "atom.h" -#include "update.h" -#include "respa.h" -#include "memory.h" #include "error.h" +#include "memory.h" +#include "respa.h" +#include "update.h" using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/fix_vector.cpp b/src/fix_vector.cpp index afd3778841..71a8bb3d3c 100644 --- a/src/fix_vector.cpp +++ b/src/fix_vector.cpp @@ -22,8 +22,6 @@ #include "update.h" #include "variable.h" -#include - using namespace LAMMPS_NS; using namespace FixConst; diff --git a/src/group.cpp b/src/group.cpp index ebab78dd0f..0143008a72 100644 --- a/src/group.cpp +++ b/src/group.cpp @@ -35,7 +35,6 @@ #include #include #include -#include using namespace LAMMPS_NS; diff --git a/src/imbalance_store.cpp b/src/imbalance_store.cpp index 879b434bfd..e72ef4d50b 100644 --- a/src/imbalance_store.cpp +++ b/src/imbalance_store.cpp @@ -16,8 +16,6 @@ #include "atom.h" #include "error.h" -#include - using namespace LAMMPS_NS; /* -------------------------------------------------------------------- */ diff --git a/src/imbalance_var.cpp b/src/imbalance_var.cpp index d2a4f0d691..64f98a6a26 100644 --- a/src/imbalance_var.cpp +++ b/src/imbalance_var.cpp @@ -20,8 +20,6 @@ #include "memory.h" #include "variable.h" -#include - using namespace LAMMPS_NS; /* -------------------------------------------------------------------- */ diff --git a/src/info.cpp b/src/info.cpp index 948073bb10..f1ee327191 100644 --- a/src/info.cpp +++ b/src/info.cpp @@ -39,7 +39,6 @@ #include "pair.h" #include "pair_hybrid.h" #include "region.h" -#include "universe.h" #include "update.h" #include "variable.h" diff --git a/src/info.h b/src/info.h index d8fa23489e..386d38c39f 100644 --- a/src/info.h +++ b/src/info.h @@ -20,15 +20,15 @@ CommandStyle(info,Info) #ifndef LMP_INFO_H #define LMP_INFO_H -#include "pointers.h" +#include "command.h" #include namespace LAMMPS_NS { -class Info : protected Pointers { +class Info : public Command { public: - Info(class LAMMPS *lmp) : Pointers(lmp) {}; + Info(class LAMMPS *lmp) : Command(lmp) {}; void command(int, char **); bool is_active(const char *, const char *); diff --git a/src/input.cpp b/src/input.cpp index 9079cdd76c..d3352b380a 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -21,6 +21,7 @@ #include "comm.h" #include "comm_brick.h" #include "comm_tiled.h" +#include "command.h" #include "compute.h" #include "dihedral.h" #include "domain.h" @@ -82,7 +83,7 @@ command line flags, holds the factory of commands and creates and initializes an instance of the Variable class. To execute a command, a specific class instance, derived from -:cpp:class:`Pointers`, is created, then its ``command()`` member +:cpp:class:`Command`, is created, then its ``command()`` member function executed, and finally the class instance is deleted. \endverbatim @@ -789,7 +790,9 @@ int Input::execute_command() if (command_map->find(command) != command_map->end()) { CommandCreator &command_creator = (*command_map)[command]; - command_creator(lmp,narg,arg); + Command *cmd = command_creator(lmp); + cmd->command(narg,arg); + delete cmd; return 0; } @@ -803,10 +806,9 @@ int Input::execute_command() ------------------------------------------------------------------------- */ template -void Input::command_creator(LAMMPS *lmp, int narg, char **arg) +Command *Input::command_creator(LAMMPS *lmp) { - T cmd(lmp); - cmd.command(narg,arg); + return new T(lmp); } /* ---------------------------------------------------------------------- */ diff --git a/src/input.h b/src/input.h index 809a7a5f94..59be026640 100644 --- a/src/input.h +++ b/src/input.h @@ -19,6 +19,7 @@ #include namespace LAMMPS_NS { + class Command; class Input : protected Pointers { friend class Info; @@ -59,12 +60,12 @@ class Input : protected Pointers { FILE **infiles; // list of open input files public: - typedef void (*CommandCreator)(LAMMPS *, int, char **); + typedef Command * (*CommandCreator)(LAMMPS *); typedef std::map CommandCreatorMap; CommandCreatorMap *command_map; protected: - template static void command_creator(LAMMPS *, int, char **); + template static Command *command_creator(LAMMPS *); private: void parse(); // parse an input text line diff --git a/src/lammpsplugin.h b/src/lammpsplugin.h index 1baed9799d..e544e8bffe 100644 --- a/src/lammpsplugin.h +++ b/src/lammpsplugin.h @@ -20,7 +20,6 @@ extern "C" { typedef void *(lammpsplugin_factory1)(void *); typedef void *(lammpsplugin_factory2)(void *, int, char **); - typedef void (lammpsplugin_factory3)(void *, int, char **); typedef struct { const char *version; @@ -31,7 +30,6 @@ extern "C" { union { lammpsplugin_factory1 *v1; lammpsplugin_factory2 *v2; - lammpsplugin_factory3 *v3; } creator; void *handle; } lammpsplugin_t; diff --git a/src/library.cpp b/src/library.cpp index 300aafc293..c51006f8d8 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -31,7 +31,6 @@ #include "group.h" #include "info.h" #include "input.h" -#include "integrate.h" #include "memory.h" #include "modify.h" #include "molecule.h" diff --git a/src/math_eigen.cpp b/src/math_eigen.cpp index ab00e42ae0..10caccd0e5 100644 --- a/src/math_eigen.cpp +++ b/src/math_eigen.cpp @@ -18,7 +18,9 @@ #include "math_eigen.h" #include "math_eigen_impl.h" -#include +#include +#include +#include using std::vector; using std::array; diff --git a/src/math_special.cpp b/src/math_special.cpp index 243d5a05f3..8d48158e72 100644 --- a/src/math_special.cpp +++ b/src/math_special.cpp @@ -4,8 +4,6 @@ #include // IWYU pragma: keep #include -#include "error.h" - using namespace LAMMPS_NS; static constexpr int nmaxfactorial = 167; diff --git a/src/minimize.cpp b/src/minimize.cpp index 8e55d6e0ea..1fb0d219cd 100644 --- a/src/minimize.cpp +++ b/src/minimize.cpp @@ -25,7 +25,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -Minimize::Minimize(LAMMPS *lmp) : Pointers(lmp) {} +Minimize::Minimize(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/minimize.h b/src/minimize.h index 42a2fcaf02..32d08c5f52 100644 --- a/src/minimize.h +++ b/src/minimize.h @@ -20,11 +20,11 @@ CommandStyle(minimize,Minimize) #ifndef LMP_MINIMIZE_H #define LMP_MINIMIZE_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class Minimize : protected Pointers { +class Minimize : public Command { public: Minimize(class LAMMPS *); void command(int, char **); diff --git a/src/my_pool_chunk.cpp b/src/my_pool_chunk.cpp index d866804adc..d824b0557b 100644 --- a/src/my_pool_chunk.cpp +++ b/src/my_pool_chunk.cpp @@ -14,7 +14,6 @@ #include "my_pool_chunk.h" #include -#include #if defined(LMP_USER_INTEL) && !defined(LAMMPS_MEMALIGN) && !defined(_WIN32) #define LAMMPS_MEMALIGN 64 diff --git a/src/neighbor.cpp b/src/neighbor.cpp index 704d94c77c..ee4226f43e 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -2356,6 +2356,22 @@ void Neighbor::modify_params(int narg, char **arg) } } +/* ---------------------------------------------------------------------- + convenience function to allow modifying parameters from a single string +------------------------------------------------------------------------- */ + +void Neighbor::modify_params(const std::string &modcmd) +{ + auto args = utils::split_words(modcmd); + char **newarg = new char*[args.size()]; + int i=0; + for (const auto &arg : args) { + newarg[i++] = (char *)arg.c_str(); + } + modify_params(args.size(),newarg); + delete[] newarg; +} + /* ---------------------------------------------------------------------- remove the first group-group exclusion matching group1, group2 ------------------------------------------------------------------------- */ diff --git a/src/neighbor.h b/src/neighbor.h index b9b40bcf1a..0babfae9ef 100644 --- a/src/neighbor.h +++ b/src/neighbor.h @@ -118,6 +118,7 @@ class Neighbor : protected Pointers { void set(int, char **); // set neighbor style and skin distance void reset_timestep(bigint); // reset of timestep counter void modify_params(int, char**); // modify params that control builds + void modify_params(const std::string &); // convenience overload void exclusion_group_group_delete(int, int); // rm a group-group exclusion int exclude_setting(); // return exclude value to accelerator pkg diff --git a/src/npair_full_bin_atomonly.cpp b/src/npair_full_bin_atomonly.cpp index 4e05c2c17a..8ace197e30 100644 --- a/src/npair_full_bin_atomonly.cpp +++ b/src/npair_full_bin_atomonly.cpp @@ -12,11 +12,11 @@ ------------------------------------------------------------------------- */ #include "npair_full_bin_atomonly.h" -#include "neigh_list.h" + #include "atom.h" -#include "atom_vec.h" -#include "my_page.h" #include "error.h" +#include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_half_bin_atomonly_newton.cpp b/src/npair_half_bin_atomonly_newton.cpp index 2dd0bd0b96..2007bda728 100644 --- a/src/npair_half_bin_atomonly_newton.cpp +++ b/src/npair_half_bin_atomonly_newton.cpp @@ -12,11 +12,11 @@ ------------------------------------------------------------------------- */ #include "npair_half_bin_atomonly_newton.h" -#include "neigh_list.h" + #include "atom.h" -#include "atom_vec.h" -#include "my_page.h" #include "error.h" +#include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_half_size_bin_newtoff.cpp b/src/npair_half_size_bin_newtoff.cpp index 2d406d533c..5b9eee3672 100644 --- a/src/npair_half_size_bin_newtoff.cpp +++ b/src/npair_half_size_bin_newtoff.cpp @@ -12,11 +12,11 @@ ------------------------------------------------------------------------- */ #include "npair_half_size_bin_newtoff.h" -#include "neigh_list.h" + #include "atom.h" -#include "atom_vec.h" -#include "my_page.h" #include "error.h" +#include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_half_size_bin_newton.cpp b/src/npair_half_size_bin_newton.cpp index 820b293414..9cf4e744ab 100644 --- a/src/npair_half_size_bin_newton.cpp +++ b/src/npair_half_size_bin_newton.cpp @@ -12,11 +12,11 @@ ------------------------------------------------------------------------- */ #include "npair_half_size_bin_newton.h" -#include "neigh_list.h" + #include "atom.h" -#include "atom_vec.h" -#include "my_page.h" #include "error.h" +#include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_half_size_bin_newton_tri.cpp b/src/npair_half_size_bin_newton_tri.cpp index ea878ef440..83f903c864 100644 --- a/src/npair_half_size_bin_newton_tri.cpp +++ b/src/npair_half_size_bin_newton_tri.cpp @@ -12,11 +12,11 @@ ------------------------------------------------------------------------- */ #include "npair_half_size_bin_newton_tri.h" -#include "neigh_list.h" + #include "atom.h" -#include "atom_vec.h" -#include "my_page.h" #include "error.h" +#include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_half_size_multi_newtoff.cpp b/src/npair_half_size_multi_newtoff.cpp index d57542f562..f1bc93de38 100644 --- a/src/npair_half_size_multi_newtoff.cpp +++ b/src/npair_half_size_multi_newtoff.cpp @@ -12,11 +12,11 @@ ------------------------------------------------------------------------- */ #include "npair_half_size_multi_newtoff.h" -#include "neigh_list.h" + #include "atom.h" -#include "atom_vec.h" -#include "my_page.h" #include "error.h" +#include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_half_size_multi_newton.cpp b/src/npair_half_size_multi_newton.cpp index 01065876af..22a02899ca 100644 --- a/src/npair_half_size_multi_newton.cpp +++ b/src/npair_half_size_multi_newton.cpp @@ -12,11 +12,11 @@ ------------------------------------------------------------------------- */ #include "npair_half_size_multi_newton.h" -#include "neigh_list.h" + #include "atom.h" -#include "atom_vec.h" -#include "my_page.h" #include "error.h" +#include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_half_size_multi_newton_tri.cpp b/src/npair_half_size_multi_newton_tri.cpp index 361c0ba260..268ca81f3d 100644 --- a/src/npair_half_size_multi_newton_tri.cpp +++ b/src/npair_half_size_multi_newton_tri.cpp @@ -12,11 +12,11 @@ ------------------------------------------------------------------------- */ #include "npair_half_size_multi_newton_tri.h" -#include "neigh_list.h" + #include "atom.h" -#include "atom_vec.h" -#include "my_page.h" #include "error.h" +#include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_half_size_nsq_newtoff.cpp b/src/npair_half_size_nsq_newtoff.cpp index 38594ebcb1..79302042a6 100644 --- a/src/npair_half_size_nsq_newtoff.cpp +++ b/src/npair_half_size_nsq_newtoff.cpp @@ -12,12 +12,12 @@ ------------------------------------------------------------------------- */ #include "npair_half_size_nsq_newtoff.h" -#include "neigh_list.h" + #include "atom.h" -#include "atom_vec.h" +#include "error.h" #include "group.h" #include "my_page.h" -#include "error.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_half_size_nsq_newton.cpp b/src/npair_half_size_nsq_newton.cpp index 9010ca9a86..1ac6223afa 100644 --- a/src/npair_half_size_nsq_newton.cpp +++ b/src/npair_half_size_nsq_newton.cpp @@ -12,12 +12,12 @@ ------------------------------------------------------------------------- */ #include "npair_half_size_nsq_newton.h" -#include "neigh_list.h" + #include "atom.h" -#include "atom_vec.h" +#include "error.h" #include "group.h" #include "my_page.h" -#include "error.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_halffull_newtoff.cpp b/src/npair_halffull_newtoff.cpp index e2965b4a46..52f981e843 100644 --- a/src/npair_halffull_newtoff.cpp +++ b/src/npair_halffull_newtoff.cpp @@ -12,10 +12,10 @@ ------------------------------------------------------------------------- */ #include "npair_halffull_newtoff.h" -#include "neigh_list.h" -#include "atom_vec.h" -#include "my_page.h" + #include "error.h" +#include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_halffull_newton.cpp b/src/npair_halffull_newton.cpp index 99b5493f3e..cf15af8f18 100644 --- a/src/npair_halffull_newton.cpp +++ b/src/npair_halffull_newton.cpp @@ -12,11 +12,11 @@ ------------------------------------------------------------------------- */ #include "npair_halffull_newton.h" -#include "neigh_list.h" + #include "atom.h" -#include "atom_vec.h" -#include "my_page.h" #include "error.h" +#include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_skip.cpp b/src/npair_skip.cpp index 45540ab2fa..6046464ecf 100644 --- a/src/npair_skip.cpp +++ b/src/npair_skip.cpp @@ -12,11 +12,11 @@ ------------------------------------------------------------------------- */ #include "npair_skip.h" -#include "neigh_list.h" + #include "atom.h" -#include "atom_vec.h" -#include "my_page.h" #include "error.h" +#include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_skip_respa.cpp b/src/npair_skip_respa.cpp index 3479a5d8ce..d24a30794e 100644 --- a/src/npair_skip_respa.cpp +++ b/src/npair_skip_respa.cpp @@ -12,11 +12,11 @@ ------------------------------------------------------------------------- */ #include "npair_skip_respa.h" -#include "neigh_list.h" + #include "atom.h" -#include "atom_vec.h" -#include "my_page.h" #include "error.h" +#include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_skip_size.cpp b/src/npair_skip_size.cpp index d3810e6acc..40b70aed21 100644 --- a/src/npair_skip_size.cpp +++ b/src/npair_skip_size.cpp @@ -12,11 +12,11 @@ ------------------------------------------------------------------------- */ #include "npair_skip_size.h" -#include "neigh_list.h" + #include "atom.h" -#include "atom_vec.h" -#include "my_page.h" #include "error.h" +#include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_skip_size_off2on.cpp b/src/npair_skip_size_off2on.cpp index 0d7630aaa9..994910852b 100644 --- a/src/npair_skip_size_off2on.cpp +++ b/src/npair_skip_size_off2on.cpp @@ -12,11 +12,11 @@ ------------------------------------------------------------------------- */ #include "npair_skip_size_off2on.h" -#include "neigh_list.h" + #include "atom.h" -#include "atom_vec.h" -#include "my_page.h" #include "error.h" +#include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/npair_skip_size_off2on_oneside.cpp b/src/npair_skip_size_off2on_oneside.cpp index eab98de035..30ee2ff6ba 100644 --- a/src/npair_skip_size_off2on_oneside.cpp +++ b/src/npair_skip_size_off2on_oneside.cpp @@ -12,12 +12,12 @@ ------------------------------------------------------------------------- */ #include "npair_skip_size_off2on_oneside.h" -#include "neigh_list.h" + #include "atom.h" -#include "atom_vec.h" #include "domain.h" -#include "my_page.h" #include "error.h" +#include "my_page.h" +#include "neigh_list.h" using namespace LAMMPS_NS; diff --git a/src/output.cpp b/src/output.cpp index 988ef04409..d7be9b8cd6 100644 --- a/src/output.cpp +++ b/src/output.cpp @@ -14,18 +14,15 @@ #include "output.h" #include "style_dump.h" // IWYU pragma: keep -#include "atom.h" #include "comm.h" #include "domain.h" #include "dump.h" #include "error.h" -#include "force.h" #include "group.h" #include "info.h" #include "input.h" #include "memory.h" #include "modify.h" -#include "neighbor.h" #include "thermo.h" #include "update.h" #include "variable.h" diff --git a/src/pair_coul_cut.cpp b/src/pair_coul_cut.cpp index 428c12c2e0..629d39a9c5 100644 --- a/src/pair_coul_cut.cpp +++ b/src/pair_coul_cut.cpp @@ -260,7 +260,7 @@ void PairCoulCut::read_restart(FILE *fp) MPI_Bcast(&scale[i][j],1,MPI_DOUBLE,0,world); MPI_Bcast(&setflag[i][j],1,MPI_INT,0,world); if (setflag[i][j]) { - if (me == 0) + if (me == 0) utils::sfread(FLERR,&cut[i][j],sizeof(double),1,fp,nullptr,error); MPI_Bcast(&cut[i][j],1,MPI_DOUBLE,0,world); } diff --git a/src/pair_hybrid_scaled.cpp b/src/pair_hybrid_scaled.cpp index 7a30c9a3ee..de8801fe24 100644 --- a/src/pair_hybrid_scaled.cpp +++ b/src/pair_hybrid_scaled.cpp @@ -396,6 +396,9 @@ double PairHybridScaled::single(int i, int j, int itype, int jtype, double rsq, double *vals = new double[nvars]; for (i = 0; i < nvars; ++i) { j = input->variable->find(scalevars[i].c_str()); + if (j < 0) + error->all(FLERR,fmt::format("Variable '{}' not found when updating " + "scale factors",scalevars[i])); vals[i] = input->variable->compute_equal(j); } for (i = 0; i < nstyles; ++i) { @@ -457,8 +460,6 @@ void PairHybridScaled::coeff(int narg, char **arg) if (multiple[m]) { multflag = 1; if (narg < 4) error->all(FLERR,"Incorrect args for pair coefficients"); - if (!isdigit(arg[3][0])) - error->all(FLERR,"Incorrect args for pair coefficients"); int index = utils::inumeric(FLERR,arg[3],false,lmp); if (index == multiple[m]) break; else continue; diff --git a/src/pair_lj96_cut.cpp b/src/pair_lj96_cut.cpp index 65f2d40e00..92cbb47440 100644 --- a/src/pair_lj96_cut.cpp +++ b/src/pair_lj96_cut.cpp @@ -17,20 +17,19 @@ #include "pair_lj96_cut.h" -#include -#include #include "atom.h" #include "comm.h" +#include "error.h" #include "force.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "neigh_request.h" -#include "update.h" -#include "respa.h" #include "math_const.h" #include "memory.h" -#include "error.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "neighbor.h" +#include "respa.h" +#include "update.h" +#include using namespace LAMMPS_NS; using namespace MathConst; diff --git a/src/pair_lj_relres.cpp b/src/pair_lj_relres.cpp index 1f40d03aa9..2131907f3a 100644 --- a/src/pair_lj_relres.cpp +++ b/src/pair_lj_relres.cpp @@ -26,7 +26,6 @@ #include "memory.h" #include -#include using namespace LAMMPS_NS; @@ -608,18 +607,18 @@ void PairLJRelRes::read_restart(FILE *fp) int me = comm->me; for (i = 1; i <= atom->ntypes; i++) for (j = i; j <= atom->ntypes; j++) { - if (me == 0) fread(&setflag[i][j],sizeof(int),1,fp); + if (me == 0) utils::sfread(FLERR,&setflag[i][j],sizeof(int),1,fp,nullptr,error); MPI_Bcast(&setflag[i][j],1,MPI_INT,0,world); if (setflag[i][j]) { if (me == 0) { - fread(&epsilonf[i][j],sizeof(double),1,fp); - fread(&sigmaf[i][j],sizeof(double),1,fp); - fread(&epsilon[i][j],sizeof(double),1,fp); - fread(&sigma[i][j],sizeof(double),1,fp); - fread(&cutf_inner[i][j],sizeof(double),1,fp); - fread(&cutf[i][j],sizeof(double),1,fp); - fread(&cut_inner[i][j],sizeof(double),1,fp); - fread(&cut[i][j],sizeof(double),1,fp); + utils::sfread(FLERR,&epsilonf[i][j],sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&sigmaf[i][j],sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&epsilon[i][j],sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&sigma[i][j],sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&cutf_inner[i][j],sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&cutf[i][j],sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&cut_inner[i][j],sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&cut[i][j],sizeof(double),1,fp,nullptr,error); } MPI_Bcast(&epsilonf[i][j],1,MPI_DOUBLE,0,world); MPI_Bcast(&sigmaf[i][j],1,MPI_DOUBLE,0,world); @@ -655,12 +654,12 @@ void PairLJRelRes::read_restart_settings(FILE *fp) { int me = comm->me; if (me == 0) { - fread(&cutf_inner_global,sizeof(double),1,fp); - fread(&cutf_global,sizeof(double),1,fp); - fread(&cut_inner_global,sizeof(double),1,fp); - fread(&cut_global,sizeof(double),1,fp); - fread(&offset_flag,sizeof(int),1,fp); - fread(&mix_flag,sizeof(int),1,fp); + utils::sfread(FLERR,&cutf_inner_global,sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&cutf_global,sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&cut_inner_global,sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&cut_global,sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR,&offset_flag,sizeof(int),1,fp,nullptr,error); + utils::sfread(FLERR,&mix_flag,sizeof(int),1,fp,nullptr,error); } MPI_Bcast(&cutf_inner_global,1,MPI_DOUBLE,0,world); MPI_Bcast(&cutf_global,1,MPI_DOUBLE,0,world); diff --git a/src/pair_morse.cpp b/src/pair_morse.cpp index 6c67a8ef55..e6d924dab6 100644 --- a/src/pair_morse.cpp +++ b/src/pair_morse.cpp @@ -13,14 +13,15 @@ #include "pair_morse.h" -#include -#include #include "atom.h" #include "comm.h" -#include "force.h" -#include "neigh_list.h" -#include "memory.h" #include "error.h" +#include "force.h" +#include "memory.h" +#include "neigh_list.h" + +#include +#include using namespace LAMMPS_NS; diff --git a/src/potential_file_reader.cpp b/src/potential_file_reader.cpp index 2730a3d109..bddfca9bce 100644 --- a/src/potential_file_reader.cpp +++ b/src/potential_file_reader.cpp @@ -62,7 +62,8 @@ PotentialFileReader::PotentialFileReader(LAMMPS *lmp, try { reader = open_potential(filename); if (!reader) { - error->one(FLERR, fmt::format("cannot open {} potential file {}", potential_name, filename)); + error->one(FLERR, fmt::format("cannot open {} potential file {}: {}", + potential_name, filename, utils::getsyserror())); } } catch (FileReaderException &e) { error->one(FLERR, e.what()); diff --git a/src/read_data.cpp b/src/read_data.cpp index cc3b2e5965..c0085f19d1 100644 --- a/src/read_data.cpp +++ b/src/read_data.cpp @@ -11,10 +11,6 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -// lmptype.h must be first b/c this file uses MAXBIGINT and includes mpi.h -// due to OpenMPI bug which sets INT64_MAX via its mpi.h -// before lmptype.h can set flags to insure it is done correctly - #include "read_data.h" #include "angle.h" @@ -66,7 +62,7 @@ const char *suffixes[] = {"/cuda","/gpu","/opt","/omp","/kk", /* ---------------------------------------------------------------------- */ -ReadData::ReadData(LAMMPS *lmp) : Pointers(lmp) +ReadData::ReadData(LAMMPS *lmp) : Command(lmp) { MPI_Comm_rank(world,&me); line = new char[MAXLINE]; diff --git a/src/read_data.h b/src/read_data.h index 68b40fc529..7ccbeebd58 100644 --- a/src/read_data.h +++ b/src/read_data.h @@ -20,11 +20,11 @@ CommandStyle(read_data,ReadData) #ifndef LMP_READ_DATA_H #define LMP_READ_DATA_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class ReadData : protected Pointers { +class ReadData : public Command { public: ReadData(class LAMMPS *); ~ReadData(); diff --git a/src/read_dump.cpp b/src/read_dump.cpp index 0282e2d039..ddb793c629 100644 --- a/src/read_dump.cpp +++ b/src/read_dump.cpp @@ -15,10 +15,6 @@ Contributing author: Timothy Sirk (ARL) ------------------------------------------------------------------------- */ -// lmptype.h must be first b/c this file uses MAXBIGINT and includes mpi.h -// due to OpenMPI bug which sets INT64_MAX via its mpi.h -// before lmptype.h can set flags to insure it is done correctly - #include "read_dump.h" #include "atom.h" @@ -46,7 +42,7 @@ enum{NOADD,YESADD,KEEPADD}; /* ---------------------------------------------------------------------- */ -ReadDump::ReadDump(LAMMPS *lmp) : Pointers(lmp) +ReadDump::ReadDump(LAMMPS *lmp) : Command(lmp) { MPI_Comm_rank(world,&me); MPI_Comm_size(world,&nprocs); diff --git a/src/read_dump.h b/src/read_dump.h index 93fb4bc713..842b629fa4 100644 --- a/src/read_dump.h +++ b/src/read_dump.h @@ -22,11 +22,11 @@ CommandStyle(read_dump,ReadDump) #ifndef LMP_READ_DUMP_H #define LMP_READ_DUMP_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class ReadDump : protected Pointers { +class ReadDump : public Command { public: ReadDump(class LAMMPS *); ~ReadDump(); diff --git a/src/read_restart.cpp b/src/read_restart.cpp index 9e8fbce91c..2742dc5e4e 100644 --- a/src/read_restart.cpp +++ b/src/read_restart.cpp @@ -43,7 +43,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -ReadRestart::ReadRestart(LAMMPS *lmp) : Pointers(lmp) {} +ReadRestart::ReadRestart(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- */ @@ -1195,7 +1195,7 @@ void ReadRestart::check_eof_magic() if (me == 0) { long curpos = ftell(fp); fseek(fp,(long)-n,SEEK_END); - fread(str,sizeof(char),n,fp); + utils::sfread(FLERR,str,sizeof(char),n,fp,nullptr,error); fseek(fp,curpos,SEEK_SET); } diff --git a/src/read_restart.h b/src/read_restart.h index 99b37cfa45..fc2a27fa67 100644 --- a/src/read_restart.h +++ b/src/read_restart.h @@ -20,11 +20,11 @@ CommandStyle(read_restart,ReadRestart) #ifndef LMP_READ_RESTART_H #define LMP_READ_RESTART_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class ReadRestart : protected Pointers { +class ReadRestart : public Command { public: ReadRestart(class LAMMPS *); void command(int, char **); diff --git a/src/reader.cpp b/src/reader.cpp index c22a9f7e5d..ba172f58ee 100644 --- a/src/reader.cpp +++ b/src/reader.cpp @@ -15,8 +15,6 @@ #include "error.h" -#include - using namespace LAMMPS_NS; // only proc 0 calls methods of this class, except for constructor/destructor diff --git a/src/region_sphere.cpp b/src/region_sphere.cpp index 8921cbd456..3a5a51834b 100644 --- a/src/region_sphere.cpp +++ b/src/region_sphere.cpp @@ -19,7 +19,6 @@ #include "variable.h" #include -#include using namespace LAMMPS_NS; diff --git a/src/replicate.cpp b/src/replicate.cpp index 6877ec091c..95bf615d04 100644 --- a/src/replicate.cpp +++ b/src/replicate.cpp @@ -31,7 +31,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -Replicate::Replicate(LAMMPS *lmp) : Pointers(lmp) {} +Replicate::Replicate(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/replicate.h b/src/replicate.h index 58c0010aa3..b4be578b23 100644 --- a/src/replicate.h +++ b/src/replicate.h @@ -20,11 +20,11 @@ CommandStyle(replicate,Replicate) #ifndef LMP_REPLICATE_H #define LMP_REPLICATE_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class Replicate : protected Pointers { +class Replicate : public Command { public: Replicate(class LAMMPS *); void command(int, char **); diff --git a/src/rerun.cpp b/src/rerun.cpp index 8615b02d95..9571724e2d 100644 --- a/src/rerun.cpp +++ b/src/rerun.cpp @@ -29,7 +29,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -Rerun::Rerun(LAMMPS *lmp) : Pointers(lmp) {} +Rerun::Rerun(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/rerun.h b/src/rerun.h index ea1d0221c3..c10ca8780e 100644 --- a/src/rerun.h +++ b/src/rerun.h @@ -20,11 +20,11 @@ CommandStyle(rerun,Rerun) #ifndef LMP_RERUN_H #define LMP_RERUN_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class Rerun : protected Pointers { +class Rerun : public Command { public: Rerun(class LAMMPS *); void command(int, char **); diff --git a/src/reset_atom_ids.cpp b/src/reset_atom_ids.cpp index 7298103b80..47dae3cb56 100644 --- a/src/reset_atom_ids.cpp +++ b/src/reset_atom_ids.cpp @@ -43,7 +43,7 @@ static int compare_coords(const int, const int, void *); /* ---------------------------------------------------------------------- */ -ResetIDs::ResetIDs(LAMMPS *lmp) : Pointers(lmp) {} +ResetIDs::ResetIDs(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/reset_atom_ids.h b/src/reset_atom_ids.h index 02a7f77e8d..6c262f2bd8 100644 --- a/src/reset_atom_ids.h +++ b/src/reset_atom_ids.h @@ -20,11 +20,11 @@ CommandStyle(reset_atom_ids,ResetIDs) #ifndef LMP_RESET_IDS_H #define LMP_RESET_IDS_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class ResetIDs : protected Pointers { +class ResetIDs : public Command { public: struct AtomRvous { bigint ibin; diff --git a/src/reset_mol_ids.cpp b/src/reset_mol_ids.cpp index aed26b4568..39f7307ca1 100644 --- a/src/reset_mol_ids.cpp +++ b/src/reset_mol_ids.cpp @@ -32,7 +32,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -ResetMolIDs::ResetMolIDs(LAMMPS *lmp) : Pointers(lmp) { +ResetMolIDs::ResetMolIDs(LAMMPS *lmp) : Command(lmp) { cfa = nullptr; cca = nullptr; diff --git a/src/reset_mol_ids.h b/src/reset_mol_ids.h index fbb6fceb03..5759cf8b4e 100644 --- a/src/reset_mol_ids.h +++ b/src/reset_mol_ids.h @@ -20,11 +20,11 @@ CommandStyle(reset_mol_ids,ResetMolIDs) #ifndef LMP_RESET_MOL_IDS_H #define LMP_RESET_MOL_IDS_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class ResetMolIDs : protected Pointers { +class ResetMolIDs : public Command { public: ResetMolIDs(class LAMMPS *); ~ResetMolIDs(); diff --git a/src/run.cpp b/src/run.cpp index c503e174ff..379cf8015a 100644 --- a/src/run.cpp +++ b/src/run.cpp @@ -31,7 +31,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -Run::Run(LAMMPS *lmp) : Pointers(lmp) {} +Run::Run(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/run.h b/src/run.h index 5578ea9598..747af6a61c 100644 --- a/src/run.h +++ b/src/run.h @@ -20,11 +20,11 @@ CommandStyle(run,Run) #ifndef LMP_RUN_H #define LMP_RUN_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class Run : protected Pointers { +class Run : public Command { public: Run(class LAMMPS *); void command(int, char **); diff --git a/src/set.h b/src/set.h index 29f1ea526e..330bd484a3 100644 --- a/src/set.h +++ b/src/set.h @@ -20,13 +20,13 @@ CommandStyle(set,Set) #ifndef LMP_SET_H #define LMP_SET_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class Set : protected Pointers { +class Set : public Command { public: - Set(class LAMMPS *lmp) : Pointers(lmp) {}; + Set(class LAMMPS *lmp) : Command(lmp) {}; void command(int, char **); private: diff --git a/src/text_file_reader.cpp b/src/text_file_reader.cpp index af27bfb16d..7a6e914639 100644 --- a/src/text_file_reader.cpp +++ b/src/text_file_reader.cpp @@ -46,7 +46,8 @@ TextFileReader::TextFileReader(const std::string &filename, const std::string &f fp = fopen(filename.c_str(), "r"); if (fp == nullptr) { - throw FileReaderException(fmt::format("cannot open {} file {}", filetype, filename)); + throw FileReaderException(fmt::format("cannot open {} file {}: {}", + filetype, filename, utils::getsyserror())); } } diff --git a/src/tokenizer.cpp b/src/tokenizer.cpp index d26a5199f9..ea8ff2ce43 100644 --- a/src/tokenizer.cpp +++ b/src/tokenizer.cpp @@ -19,7 +19,6 @@ #include "utils.h" #include "fmt/format.h" -#include #include using namespace LAMMPS_NS; diff --git a/src/universe.cpp b/src/universe.cpp index a7fa8fc2e2..79de6948df 100644 --- a/src/universe.cpp +++ b/src/universe.cpp @@ -15,9 +15,7 @@ #include "error.h" #include "memory.h" -#include "version.h" -#include #include using namespace LAMMPS_NS; diff --git a/src/variable.cpp b/src/variable.cpp index d903490219..f66b99d6e5 100644 --- a/src/variable.cpp +++ b/src/variable.cpp @@ -40,7 +40,6 @@ #include #include #include -#include using namespace LAMMPS_NS; using namespace MathConst; diff --git a/src/velocity.cpp b/src/velocity.cpp index f4483074aa..e0c80baa91 100644 --- a/src/velocity.cpp +++ b/src/velocity.cpp @@ -42,7 +42,7 @@ enum{NONE,CONSTANT,EQUAL,ATOM}; /* ---------------------------------------------------------------------- */ -Velocity::Velocity(LAMMPS *lmp) : Pointers(lmp) {} +Velocity::Velocity(LAMMPS *lmp) : Command(lmp) {} /* ---------------------------------------------------------------------- */ diff --git a/src/velocity.h b/src/velocity.h index e14c0d0d1c..d7405f87fd 100644 --- a/src/velocity.h +++ b/src/velocity.h @@ -20,11 +20,11 @@ CommandStyle(velocity,Velocity) #ifndef LMP_VELOCITY_H #define LMP_VELOCITY_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class Velocity : protected Pointers { +class Velocity : public Command { public: Velocity(class LAMMPS *); void command(int, char **); diff --git a/src/write_coeff.cpp b/src/write_coeff.cpp index 485bc3b29b..79a99502a6 100644 --- a/src/write_coeff.cpp +++ b/src/write_coeff.cpp @@ -22,7 +22,6 @@ #include "force.h" #include "improper.h" #include "pair.h" -#include "universe.h" #include #include diff --git a/src/write_coeff.h b/src/write_coeff.h index b995e60d63..8815162c48 100644 --- a/src/write_coeff.h +++ b/src/write_coeff.h @@ -20,13 +20,13 @@ CommandStyle(write_coeff,WriteCoeff) #ifndef LMP_WRITE_COEFF_H #define LMP_WRITE_COEFF_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class WriteCoeff : protected Pointers { +class WriteCoeff : public Command { public: - WriteCoeff(class LAMMPS *lmp) : Pointers(lmp) {}; + WriteCoeff(class LAMMPS *lmp) : Command(lmp) {}; void command(int, char **); }; diff --git a/src/write_data.cpp b/src/write_data.cpp index 6d10359e8b..388fab1183 100644 --- a/src/write_data.cpp +++ b/src/write_data.cpp @@ -29,7 +29,6 @@ #include "output.h" #include "pair.h" #include "thermo.h" -#include "universe.h" #include "update.h" #include @@ -41,7 +40,7 @@ enum{ELLIPSOID,LINE,TRIANGLE,BODY}; // also in AtomVecHybrid /* ---------------------------------------------------------------------- */ -WriteData::WriteData(LAMMPS *lmp) : Pointers(lmp) +WriteData::WriteData(LAMMPS *lmp) : Command(lmp) { MPI_Comm_rank(world,&me); MPI_Comm_size(world,&nprocs); diff --git a/src/write_data.h b/src/write_data.h index a4e71c9cda..cecfaa4800 100644 --- a/src/write_data.h +++ b/src/write_data.h @@ -20,11 +20,11 @@ CommandStyle(write_data,WriteData) #ifndef LMP_WRITE_DATA_H #define LMP_WRITE_DATA_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class WriteData : protected Pointers { +class WriteData : public Command { public: WriteData(class LAMMPS *); void command(int, char **); diff --git a/src/write_dump.h b/src/write_dump.h index db39a75d4b..763fd12f60 100644 --- a/src/write_dump.h +++ b/src/write_dump.h @@ -20,13 +20,13 @@ CommandStyle(write_dump,WriteDump) #ifndef LMP_WRITE_DUMP_H #define LMP_WRITE_DUMP_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class WriteDump : protected Pointers { +class WriteDump : public Command { public: - WriteDump(class LAMMPS *lmp) : Pointers(lmp) {}; + WriteDump(class LAMMPS *lmp) : Command(lmp) {}; void command(int, char **); }; diff --git a/src/write_restart.cpp b/src/write_restart.cpp index afe1d2d528..350f083be2 100644 --- a/src/write_restart.cpp +++ b/src/write_restart.cpp @@ -32,7 +32,6 @@ #include "output.h" #include "pair.h" #include "thermo.h" -#include "universe.h" #include "update.h" #include @@ -43,7 +42,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -WriteRestart::WriteRestart(LAMMPS *lmp) : Pointers(lmp) +WriteRestart::WriteRestart(LAMMPS *lmp) : Command(lmp) { MPI_Comm_rank(world,&me); MPI_Comm_size(world,&nprocs); diff --git a/src/write_restart.h b/src/write_restart.h index a4a606482e..05f5c45ec6 100644 --- a/src/write_restart.h +++ b/src/write_restart.h @@ -20,11 +20,11 @@ CommandStyle(write_restart,WriteRestart) #ifndef LMP_WRITE_RESTART_H #define LMP_WRITE_RESTART_H -#include "pointers.h" +#include "command.h" namespace LAMMPS_NS { -class WriteRestart : protected Pointers { +class WriteRestart : public Command { public: WriteRestart(class LAMMPS *); void command(int, char **); diff --git a/unittest/force-styles/tests/manybody-pair-pace_product.yaml b/unittest/force-styles/tests/manybody-pair-pace_product.yaml new file mode 100644 index 0000000000..21c37c49be --- /dev/null +++ b/unittest/force-styles/tests/manybody-pair-pace_product.yaml @@ -0,0 +1,156 @@ +--- +lammps_version: 10 Mar 2021 +date_generated: Wed Apr 7 19:29:52 2021 +epsilon: 5e-13 +skip_tests: +prerequisites: ! | + pair pace +pre_commands: ! | + variable newton_pair delete + variable newton_pair index on +post_commands: ! "" +input_file: in.manybody +pair_style: pace product +pair_coeff: ! | + * * Cu-PBE-core-rep.ace Cu Cu Cu Cu Cu Cu Cu Cu +extract: ! "" +natoms: 64 +init_vdwl: -161.633164433256 +init_coul: 0 +init_stress: ! |2- + 4.9972088100615499e+00 6.2044830913935627e+00 9.1051638867046787e+00 -3.5472278350778463e+00 1.6694265484458743e+01 1.2476127820340779e+00 +init_forces: ! |2 + 1 -6.2219087614981250e-01 1.4663175178944543e+00 1.0137638901413766e+00 + 2 -1.1376106569501299e+00 -4.6174763313965872e-01 -9.1065044746775559e-01 + 3 2.1030321840370370e-01 -1.8491702608421043e-01 2.5692785978237719e-02 + 4 -8.7721996834879601e-01 1.5265564953914739e+00 6.4946175447488763e-01 + 5 -4.2522149043165169e-01 -3.7218018176382173e-01 -9.1663252333251566e-02 + 6 3.7791326544489656e-01 1.2266089287989812e+00 2.9557107319921827e-01 + 7 -5.3020873901893739e-01 -5.3124732660122731e-01 7.0401499321631211e-01 + 8 -4.7453371627778157e-02 2.6914766341308627e-01 -3.4048361271920741e-01 + 9 -1.5727338601129420e-01 -8.3756943998984656e-01 -1.0686980500960253e+00 + 10 4.1485698120166843e-03 -4.7811767918434078e-01 -1.0586891580297206e+00 + 11 1.5438259205363782e+00 -1.5050047785033229e+00 9.6197857985461699e-01 + 12 -2.5123830465559287e+00 -1.7362105833106261e+00 -1.6289247068121975e+00 + 13 -5.9061498165333037e-01 2.3625898287840648e+00 -3.1399719632578482e-01 + 14 -5.5397546653775487e-01 1.8689085709447488e+00 -2.3086691928371150e-02 + 15 -1.6265821570337315e+00 1.7928198829778783e+00 -1.7156140339072117e+00 + 16 8.1679939937581825e-01 3.9772968007052850e-01 3.1004730854830331e+00 + 17 1.0595934046175022e+00 1.1460004586855164e+00 -1.8847997843937443e+00 + 18 2.0249462959828027e-01 2.6186197454749149e-01 1.4401663320550588e+00 + 19 -5.4631311118700510e-01 -7.9893542481115554e-01 -3.9498484189193867e-01 + 20 -2.7894722368446363e+00 3.3102350276296261e-01 1.9153108358696447e-01 + 21 7.2621138168723165e-01 -6.2245359068793776e-02 -1.1867468416622704e+00 + 22 -2.8699857742027954e+00 2.0263873921216695e+00 -2.5768047926156896e+00 + 23 6.7173035813894433e-01 1.1304059874438197e+00 9.5707129936936708e-01 + 24 8.1087520346689013e-01 9.3244931025572342e-01 1.2800553902585901e+00 + 25 2.8247847798959724e-01 -1.2561285000275449e-01 5.0249723343582131e-01 + 26 -1.2883224887965014e-01 -1.4823080811794720e-01 2.1451743731744269e-01 + 27 8.7218773747963574e-01 -4.8694991909043589e-01 8.0838245267066877e-01 + 28 -8.4108903261132240e-03 4.7660038551589268e-01 2.2692513770082767e+00 + 29 -1.2657298236003225e+00 5.0651440211205545e-01 -4.8138238615461226e-01 + 30 -4.9017825771987117e-01 4.3447662476279558e-01 -3.4664013847475933e-01 + 31 -5.2051576149994172e-01 3.8596959394993430e-01 -3.4070818553119930e-01 + 32 -1.3692783712259324e+00 1.9224558097577280e-01 -2.3226212734495302e-01 + 33 2.0607521792189685e+00 -1.2673195197857356e+00 1.6670068237762361e+00 + 34 -4.3444509217934746e-02 -3.3223620460414396e-02 1.7607017023404770e-01 + 35 5.0753059936755485e-01 -3.2385224472005308e-01 1.0142288303361275e+00 + 36 1.3677004996446801e-01 -9.3517724534410873e-01 2.4335569461986416e-02 + 37 -7.4579131173355373e-01 8.8843839477814257e-01 -9.4789414920423842e-01 + 38 3.9719539842505980e-02 -1.5258728344629927e-01 8.3622980382132700e-03 + 39 8.1730755341737116e-01 -9.8384548843887609e-01 -1.6996132976225720e+00 + 40 1.7801146130924872e+00 -1.1427274274008914e+00 -6.5983603408485103e-01 + 41 5.2820539468557050e-03 -2.3421071155474642e-02 -2.2563348155755425e-01 + 42 -1.5456364604619246e+00 -8.8225129116518508e-01 -5.8763735424108920e-01 + 43 1.1131408674714505e-01 -2.2247577888201988e+00 9.9728168268816919e-02 + 44 1.3854946872101335e+00 -1.5126948458101386e+00 9.7414222691400487e-01 + 45 -4.5981549862059468e-01 8.1397756884858363e-01 -1.3541793681441523e+00 + 46 -6.2619038173039365e-01 -8.2735236769680287e-01 2.2798662790638051e+00 + 47 1.0779718530622200e+00 5.2605298038101200e-01 6.1701114081825081e-01 + 48 3.8637284054399190e-01 3.0866805709781331e-01 -1.6028037248104018e-01 + 49 -8.8513638517173976e-01 -2.2564795567224198e+00 -1.4543286189784184e+00 + 50 4.0710335798111497e-01 1.0605235322146205e+00 -3.9752095773786261e-01 + 51 -9.1955086227825678e-01 1.6763661105933092e+00 1.6016036592489016e+00 + 52 2.4999859814585754e+00 -2.4516798161916005e+00 2.9455125031924960e+00 + 53 1.3494715555333863e+00 1.5041935505267137e+00 1.1203406583029385e+00 + 54 1.0781523968729976e+00 -1.1923649286227966e+00 -9.5279276661349610e-01 + 55 8.9808463906224834e-01 -1.4591385038403597e+00 -1.5496340042814589e+00 + 56 -1.6781965313765140e-01 2.7770530096449575e-01 -9.0012005317367583e-01 + 57 8.4669616061380487e-02 -3.6858526486025139e-01 -5.9756791316798570e-02 + 58 8.5722805697043558e-01 -4.6399147930805790e-01 3.6325830284450400e-01 + 59 1.6110642872174779e+00 9.9355375331449325e-01 -9.4982017793350748e-01 + 60 -1.3129344859566598e+00 -2.5250923468261077e+00 -1.6935614677383237e+00 + 61 -4.4869257920465672e-02 6.9444242511398624e-01 -2.4196506339842316e-01 + 62 -1.1637776716822190e+00 1.1834011745844724e+00 -9.3135952930487587e-01 + 63 9.6457625131492997e-01 -1.4202510282595555e+00 -6.5977083749846954e-01 + 64 1.3468893282796701e+00 1.5138254987169797e+00 2.7159451744492960e+00 +run_vdwl: -161.618480729195 +run_coul: 0 +run_stress: ! |2- + 4.9994648190802469e+00 6.2341889704204814e+00 9.1844870434928065e+00 -3.5139192287217877e+00 1.6660134035412678e+01 1.4298492052949148e+00 +run_forces: ! |2 + 1 -6.2816679628833150e-01 1.4637637672487021e+00 1.0165317420170146e+00 + 2 -1.1422624515775013e+00 -4.7321268150877716e-01 -9.1937052724928292e-01 + 3 1.9863435270459309e-01 -1.8101272698051718e-01 3.8842917970335344e-02 + 4 -8.6907185029044620e-01 1.5294385374560244e+00 6.4103701764704912e-01 + 5 -4.3303851444525354e-01 -3.7930261859668579e-01 -8.2809410717883475e-02 + 6 3.9940995017594572e-01 1.2286053601549636e+00 3.1250581709996106e-01 + 7 -5.1887189298179548e-01 -5.1653500358989046e-01 6.9318256549563484e-01 + 8 -5.4007672382228117e-02 2.6859183359408156e-01 -3.4042178338983115e-01 + 9 -1.7074436045121943e-01 -8.5109770186947620e-01 -1.0773588492848072e+00 + 10 3.0793973322678671e-04 -4.8186595253268472e-01 -1.0405155138263378e+00 + 11 1.5283231048348811e+00 -1.4922676136398514e+00 9.5299400757773478e-01 + 12 -2.5067070901167137e+00 -1.7260607993708745e+00 -1.6244790393474420e+00 + 13 -5.6235790886570680e-01 2.3585631413137618e+00 -2.9127876443329359e-01 + 14 -5.6548461211840872e-01 1.8653022429237700e+00 -3.3242294041994691e-02 + 15 -1.6247793293987234e+00 1.7878424820880410e+00 -1.7100129080118776e+00 + 16 8.1592475815211640e-01 3.9978815670043610e-01 3.0954281982865943e+00 + 17 1.0568502301698139e+00 1.1454676964498280e+00 -1.8730495547882335e+00 + 18 1.8424845063192019e-01 2.7392740222782286e-01 1.4489558473703783e+00 + 19 -5.5999914801363948e-01 -8.1164618021764123e-01 -4.0693565170944346e-01 + 20 -2.7796384097824927e+00 3.1873084687724579e-01 1.7813456086024190e-01 + 21 7.3330693120564727e-01 -8.0395528722245327e-02 -1.2031927072203379e+00 + 22 -2.8714070500131230e+00 2.0341709966821746e+00 -2.5868755001462174e+00 + 23 6.7965142776034648e-01 1.1390245455901293e+00 9.6635789845676201e-01 + 24 8.2281062435904495e-01 9.2819309753370116e-01 1.2754920796056943e+00 + 25 2.8226519759590424e-01 -1.2226596891011678e-01 4.9537642544898125e-01 + 26 -1.3183205688042435e-01 -1.4257647612047622e-01 2.1434508820007092e-01 + 27 8.7792855239715339e-01 -4.9723350353286189e-01 8.1153570058578628e-01 + 28 -2.0947861194287209e-02 4.8894215287088771e-01 2.2752551215641708e+00 + 29 -1.2702068511884055e+00 5.1109069534141316e-01 -4.8571925387760806e-01 + 30 -4.8291102543559505e-01 4.2805907218805661e-01 -3.4628363342745988e-01 + 31 -5.1815876825981022e-01 3.8579011364491556e-01 -3.3978922486345037e-01 + 32 -1.3608082901833720e+00 1.8827011193929857e-01 -2.3469836599399560e-01 + 33 2.0529282523834711e+00 -1.2685983762091522e+00 1.6663497592278897e+00 + 34 -4.5189243354727182e-02 -3.2736561856626163e-02 1.8030687445807031e-01 + 35 5.0972119775588631e-01 -3.2015892710668520e-01 1.0138858093121164e+00 + 36 1.2271707477597629e-01 -9.3118808111966556e-01 6.0812551409211574e-03 + 37 -7.4244159178072111e-01 8.8563960698770794e-01 -9.5166206712247381e-01 + 38 4.5283609418616089e-02 -1.5033288786816132e-01 1.0628470501896768e-02 + 39 8.1272114808168361e-01 -9.7791747752504798e-01 -1.7007525281592790e+00 + 40 1.8000478262438198e+00 -1.1538213789257317e+00 -6.7136411510679861e-01 + 41 1.5499683265522783e-02 -1.3955600748288348e-02 -2.1744779416050455e-01 + 42 -1.5503540998240530e+00 -8.9262908626198989e-01 -5.9864359763177577e-01 + 43 1.0386261899746982e-01 -2.2234594365313654e+00 9.2443698220991327e-02 + 44 1.3872759356889137e+00 -1.5127698142330404e+00 9.7258424666774057e-01 + 45 -4.6739915218621014e-01 8.0388098835321042e-01 -1.3465943067485506e+00 + 46 -6.2872500689429289e-01 -8.2458713276079976e-01 2.2958918389492728e+00 + 47 1.0814994400034377e+00 5.2553860312232092e-01 6.1776419974193064e-01 + 48 3.8751598752151462e-01 3.1426891660378731e-01 -1.6298137257439968e-01 + 49 -9.0904275530250200e-01 -2.2873822047160863e+00 -1.4864379781792141e+00 + 50 4.1358159051664400e-01 1.0570092137239000e+00 -4.0323250644756137e-01 + 51 -9.4172195349527010e-01 1.6996496654949222e+00 1.6115119215552665e+00 + 52 2.5097037619453455e+00 -2.4525324196081129e+00 2.9540058179786848e+00 + 53 1.3720332798470005e+00 1.5342144442319867e+00 1.1653691882985184e+00 + 54 1.0768101277470987e+00 -1.1921583386413552e+00 -9.4962490497040664e-01 + 55 8.8736792497602746e-01 -1.4571034818051574e+00 -1.5335539060163184e+00 + 56 -1.6630858341375376e-01 2.6605463886145830e-01 -8.9638200504290855e-01 + 57 8.2311794363042881e-02 -3.7571896462749871e-01 -5.9456549563766878e-02 + 58 8.5610205446436338e-01 -4.5532402871724648e-01 3.5240564373735805e-01 + 59 1.6277722160751178e+00 1.0048795089638383e+00 -9.5389574412271805e-01 + 60 -1.3396097925873200e+00 -2.5484866844918983e+00 -1.7252656664423354e+00 + 61 -4.1356937053694531e-02 6.9831995565982619e-01 -2.3722369658580467e-01 + 62 -1.1615014571620641e+00 1.1805918165226632e+00 -9.2596032516965732e-01 + 63 9.6753599487408937e-01 -1.4353996747437299e+00 -6.7618187950266095e-01 + 64 1.3730994742564451e+00 1.5481237027388630e+00 2.7374902138995694e+00 +... diff --git a/unittest/force-styles/tests/manybody-pair-pace_recursive.yaml b/unittest/force-styles/tests/manybody-pair-pace_recursive.yaml new file mode 100644 index 0000000000..43b52a5391 --- /dev/null +++ b/unittest/force-styles/tests/manybody-pair-pace_recursive.yaml @@ -0,0 +1,156 @@ +--- +lammps_version: 10 Mar 2021 +date_generated: Wed Apr 7 19:30:07 2021 +epsilon: 5e-13 +skip_tests: +prerequisites: ! | + pair pace +pre_commands: ! | + variable newton_pair delete + variable newton_pair index on +post_commands: ! "" +input_file: in.manybody +pair_style: pace recursive +pair_coeff: ! | + * * Cu-PBE-core-rep.ace Cu Cu Cu Cu Cu Cu Cu Cu +extract: ! "" +natoms: 64 +init_vdwl: -161.633164433261 +init_coul: 0 +init_stress: ! |2- + 4.9972088100713812e+00 6.2044830914039082e+00 9.1051638867151059e+00 -3.5472278350779094e+00 1.6694265484458967e+01 1.2476127820342575e+00 +init_forces: ! |2 + 1 -6.2219087614976065e-01 1.4663175178944572e+00 1.0137638901413537e+00 + 2 -1.1376106569501236e+00 -4.6174763313970757e-01 -9.1065044746784896e-01 + 3 2.1030321840359212e-01 -1.8491702608427843e-01 2.5692785978129237e-02 + 4 -8.7721996834878824e-01 1.5265564953915360e+00 6.4946175447490173e-01 + 5 -4.2522149043160318e-01 -3.7218018176385625e-01 -9.1663252333276296e-02 + 6 3.7791326544486292e-01 1.2266089287991140e+00 2.9557107319932868e-01 + 7 -5.3020873901893451e-01 -5.3124732660126450e-01 7.0401499321635996e-01 + 8 -4.7453371627832100e-02 2.6914766341310509e-01 -3.4048361271929112e-01 + 9 -1.5727338601131144e-01 -8.3756943998987954e-01 -1.0686980500959902e+00 + 10 4.1485698119566282e-03 -4.7811767918420989e-01 -1.0586891580297877e+00 + 11 1.5438259205364635e+00 -1.5050047785034886e+00 9.6197857985467283e-01 + 12 -2.5123830465558123e+00 -1.7362105833106412e+00 -1.6289247068123103e+00 + 13 -5.9061498165326987e-01 2.3625898287840066e+00 -3.1399719632578593e-01 + 14 -5.5397546653770346e-01 1.8689085709447653e+00 -2.3086691928354244e-02 + 15 -1.6265821570337562e+00 1.7928198829776705e+00 -1.7156140339071948e+00 + 16 8.1679939937577550e-01 3.9772968007061277e-01 3.1004730854830349e+00 + 17 1.0595934046175248e+00 1.1460004586857007e+00 -1.8847997843938362e+00 + 18 2.0249462959833447e-01 2.6186197454741122e-01 1.4401663320550206e+00 + 19 -5.4631311118702253e-01 -7.9893542481102942e-01 -3.9498484189200239e-01 + 20 -2.7894722368447864e+00 3.3102350276278353e-01 1.9153108358694923e-01 + 21 7.2621138168723631e-01 -6.2245359068663686e-02 -1.1867468416622644e+00 + 22 -2.8699857742029091e+00 2.0263873921216184e+00 -2.5768047926156705e+00 + 23 6.7173035813885495e-01 1.1304059874438499e+00 9.5707129936933311e-01 + 24 8.1087520346680431e-01 9.3244931025571798e-01 1.2800553902586222e+00 + 25 2.8247847798945536e-01 -1.2561285000276420e-01 5.0249723343583008e-01 + 26 -1.2883224887964320e-01 -1.4823080811799477e-01 2.1451743731744408e-01 + 27 8.7218773747968470e-01 -4.8694991909036628e-01 8.0838245267060171e-01 + 28 -8.4108903260151635e-03 4.7660038551579958e-01 2.2692513770083211e+00 + 29 -1.2657298236002679e+00 5.0651440211208831e-01 -4.8138238615456286e-01 + 30 -4.9017825771975698e-01 4.3447662476281140e-01 -3.4664013847486475e-01 + 31 -5.2051576149983925e-01 3.8596959395000907e-01 -3.4070818553126514e-01 + 32 -1.3692783712259216e+00 1.9224558097570044e-01 -2.3226212734480328e-01 + 33 2.0607521792189862e+00 -1.2673195197858425e+00 1.6670068237762066e+00 + 34 -4.3444509217972604e-02 -3.3223620460338277e-02 1.7607017023409030e-01 + 35 5.0753059936748002e-01 -3.2385224472009999e-01 1.0142288303361040e+00 + 36 1.3677004996441039e-01 -9.3517724534399915e-01 2.4335569462137843e-02 + 37 -7.4579131173356694e-01 8.8843839477811493e-01 -9.4789414920418880e-01 + 38 3.9719539842571261e-02 -1.5258728344628525e-01 8.3622980381342846e-03 + 39 8.1730755341728512e-01 -9.8384548843884079e-01 -1.6996132976225846e+00 + 40 1.7801146130923835e+00 -1.1427274274009283e+00 -6.5983603408481306e-01 + 41 5.2820539467414857e-03 -2.3421071155573910e-02 -2.2563348155758098e-01 + 42 -1.5456364604620965e+00 -8.8225129116507839e-01 -5.8763735424098651e-01 + 43 1.1131408674736287e-01 -2.2247577888201659e+00 9.9728168268968409e-02 + 44 1.3854946872102469e+00 -1.5126948458100051e+00 9.7414222691401664e-01 + 45 -4.5981549862049609e-01 8.1397756884859851e-01 -1.3541793681441470e+00 + 46 -6.2619038173035535e-01 -8.2735236769680376e-01 2.2798662790638025e+00 + 47 1.0779718530621707e+00 5.2605298038103576e-01 6.1701114081812414e-01 + 48 3.8637284054407789e-01 3.0866805709788758e-01 -1.6028037248101001e-01 + 49 -8.8513638517169380e-01 -2.2564795567223652e+00 -1.4543286189782592e+00 + 50 4.0710335798118663e-01 1.0605235322144930e+00 -3.9752095773780305e-01 + 51 -9.1955086227837013e-01 1.6763661105933743e+00 1.6016036592489449e+00 + 52 2.4999859814584600e+00 -2.4516798161916613e+00 2.9455125031925271e+00 + 53 1.3494715555332963e+00 1.5041935505267034e+00 1.1203406583029645e+00 + 54 1.0781523968730000e+00 -1.1923649286229243e+00 -9.5279276661359580e-01 + 55 8.9808463906211189e-01 -1.4591385038403633e+00 -1.5496340042814931e+00 + 56 -1.6781965313775016e-01 2.7770530096449070e-01 -9.0012005317363286e-01 + 57 8.4669616061344807e-02 -3.6858526486015031e-01 -5.9756791316800374e-02 + 58 8.5722805697030136e-01 -4.6399147930816353e-01 3.6325830284449651e-01 + 59 1.6110642872176364e+00 9.9355375331453510e-01 -9.4982017793350770e-01 + 60 -1.3129344859565715e+00 -2.5250923468261557e+00 -1.6935614677383823e+00 + 61 -4.4869257920441788e-02 6.9444242511398635e-01 -2.4196506339840404e-01 + 62 -1.1637776716821653e+00 1.1834011745845063e+00 -9.3135952930485300e-01 + 63 9.6457625131507396e-01 -1.4202510282595464e+00 -6.5977083749854104e-01 + 64 1.3468893282798624e+00 1.5138254987169519e+00 2.7159451744492755e+00 +run_vdwl: -161.618480729193 +run_coul: 0 +run_stress: ! |2- + 4.9994648190880460e+00 6.2341889704281970e+00 9.1844870435007469e+00 -3.5139192287216519e+00 1.6660134035412629e+01 1.4298492052947611e+00 +run_forces: ! |2 + 1 -6.2816679628832128e-01 1.4637637672488530e+00 1.0165317420171567e+00 + 2 -1.1422624515773547e+00 -4.7321268150894835e-01 -9.1937052724939328e-01 + 3 1.9863435270447563e-01 -1.8101272698046844e-01 3.8842917970311100e-02 + 4 -8.6907185029051970e-01 1.5294385374559754e+00 6.4103701764724941e-01 + 5 -4.3303851444527064e-01 -3.7930261859680259e-01 -8.2809410717699622e-02 + 6 3.9940995017606218e-01 1.2286053601548976e+00 3.1250581709979730e-01 + 7 -5.1887189298196845e-01 -5.1653500358999127e-01 6.9318256549549417e-01 + 8 -5.4007672382224883e-02 2.6859183359401456e-01 -3.4042178338972828e-01 + 9 -1.7074436045121416e-01 -8.5109770186939693e-01 -1.0773588492847035e+00 + 10 3.0793973323051810e-04 -4.8186595253265396e-01 -1.0405155138263271e+00 + 11 1.5283231048349268e+00 -1.4922676136399666e+00 9.5299400757780717e-01 + 12 -2.5067070901166972e+00 -1.7260607993709931e+00 -1.6244790393474351e+00 + 13 -5.6235790886583970e-01 2.3585631413136179e+00 -2.9127876443333595e-01 + 14 -5.6548461211843171e-01 1.8653022429237356e+00 -3.3242294041971987e-02 + 15 -1.6247793293987416e+00 1.7878424820878918e+00 -1.7100129080120188e+00 + 16 8.1592475815216303e-01 3.9978815670041690e-01 3.0954281982866050e+00 + 17 1.0568502301698155e+00 1.1454676964498558e+00 -1.8730495547881063e+00 + 18 1.8424845063197498e-01 2.7392740222789114e-01 1.4489558473704491e+00 + 19 -5.5999914801367834e-01 -8.1164618021765156e-01 -4.0693565170939688e-01 + 20 -2.7796384097825526e+00 3.1873084687730341e-01 1.7813456086038751e-01 + 21 7.3330693120563484e-01 -8.0395528722151582e-02 -1.2031927072201976e+00 + 22 -2.8714070500131141e+00 2.0341709966822590e+00 -2.5868755001463439e+00 + 23 6.7965142776034937e-01 1.1390245455901691e+00 9.6635789845673215e-01 + 24 8.2281062435890928e-01 9.2819309753390167e-01 1.2754920796057649e+00 + 25 2.8226519759595764e-01 -1.2226596891014743e-01 4.9537642544899713e-01 + 26 -1.3183205688038924e-01 -1.4257647612039717e-01 2.1434508820029102e-01 + 27 8.7792855239706757e-01 -4.9723350353285928e-01 8.1153570058585001e-01 + 28 -2.0947861194201500e-02 4.8894215287086157e-01 2.2752551215641588e+00 + 29 -1.2702068511883076e+00 5.1109069534141138e-01 -4.8571925387763182e-01 + 30 -4.8291102543552133e-01 4.2805907218813599e-01 -3.4628363342741275e-01 + 31 -5.1815876825973306e-01 3.8579011364505383e-01 -3.3978922486349478e-01 + 32 -1.3608082901834111e+00 1.8827011193937446e-01 -2.3469836599383653e-01 + 33 2.0529282523835013e+00 -1.2685983762092712e+00 1.6663497592278267e+00 + 34 -4.5189243354751718e-02 -3.2736561856755692e-02 1.8030687445809970e-01 + 35 5.0972119775587099e-01 -3.2015892710665028e-01 1.0138858093119485e+00 + 36 1.2271707477597758e-01 -9.3118808111974460e-01 6.0812551408806932e-03 + 37 -7.4244159178063873e-01 8.8563960698757693e-01 -9.5166206712249257e-01 + 38 4.5283609418585336e-02 -1.5033288786827403e-01 1.0628470501999519e-02 + 39 8.1272114808181617e-01 -9.7791747752517932e-01 -1.7007525281592044e+00 + 40 1.8000478262439097e+00 -1.1538213789257521e+00 -6.7136411510685423e-01 + 41 1.5499683265592791e-02 -1.3955600748503419e-02 -2.1744779416054441e-01 + 42 -1.5503540998240890e+00 -8.9262908626199444e-01 -5.9864359763176522e-01 + 43 1.0386261899753707e-01 -2.2234594365314631e+00 9.2443698220934262e-02 + 44 1.3872759356888453e+00 -1.5127698142329729e+00 9.7258424666771137e-01 + 45 -4.6739915218619787e-01 8.0388098835315858e-01 -1.3465943067486295e+00 + 46 -6.2872500689439892e-01 -8.2458713276081630e-01 2.2958918389493181e+00 + 47 1.0814994400035058e+00 5.2553860312226619e-01 6.1776419974197272e-01 + 48 3.8751598752146438e-01 3.1426891660371681e-01 -1.6298137257451450e-01 + 49 -9.0904275530255685e-01 -2.2873822047160055e+00 -1.4864379781792907e+00 + 50 4.1358159051644028e-01 1.0570092137240017e+00 -4.0323250644759429e-01 + 51 -9.4172195349516652e-01 1.6996496654948405e+00 1.6115119215552218e+00 + 52 2.5097037619454046e+00 -2.4525324196079747e+00 2.9540058179785182e+00 + 53 1.3720332798469679e+00 1.5342144442320667e+00 1.1653691882983437e+00 + 54 1.0768101277471369e+00 -1.1921583386412453e+00 -9.4962490497026519e-01 + 55 8.8736792497605987e-01 -1.4571034818051218e+00 -1.5335539060162722e+00 + 56 -1.6630858341372168e-01 2.6605463886156522e-01 -8.9638200504305587e-01 + 57 8.2311794363030891e-02 -3.7571896462756421e-01 -5.9456549563895990e-02 + 58 8.5610205446440457e-01 -4.5532402871718020e-01 3.5240564373727451e-01 + 59 1.6277722160751129e+00 1.0048795089638642e+00 -9.5389574412266476e-01 + 60 -1.3396097925873169e+00 -2.5484866844917313e+00 -1.7252656664424246e+00 + 61 -4.1356937053699777e-02 6.9831995565994065e-01 -2.3722369658585374e-01 + 62 -1.1615014571620197e+00 1.1805918165227427e+00 -9.2596032516965954e-01 + 63 9.6753599487398723e-01 -1.4353996747436160e+00 -6.7618187950256603e-01 + 64 1.3730994742563347e+00 1.5481237027388883e+00 2.7374902138994806e+00 +... diff --git a/unittest/formats/CMakeLists.txt b/unittest/formats/CMakeLists.txt index be0d14c47d..4c6de98729 100644 --- a/unittest/formats/CMakeLists.txt +++ b/unittest/formats/CMakeLists.txt @@ -102,6 +102,11 @@ target_link_libraries(test_dump_cfg PRIVATE lammps GTest::GMock GTest::GTest) add_test(NAME DumpCfg COMMAND test_dump_cfg WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) set_tests_properties(DumpCfg PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}") +add_executable(test_dump_local test_dump_local.cpp) +target_link_libraries(test_dump_local PRIVATE lammps GTest::GMock GTest::GTest) +add_test(NAME DumpLocal COMMAND test_dump_local WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) +set_tests_properties(DumpLocal PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}") + if(BUILD_TOOLS) set_tests_properties(DumpAtom PROPERTIES ENVIRONMENT "BINARY2TXT_BINARY=$") set_tests_properties(DumpCustom PROPERTIES ENVIRONMENT "BINARY2TXT_BINARY=$") diff --git a/unittest/formats/test_dump_atom.cpp b/unittest/formats/test_dump_atom.cpp index 5161eece3e..669f4d38bd 100644 --- a/unittest/formats/test_dump_atom.cpp +++ b/unittest/formats/test_dump_atom.cpp @@ -135,7 +135,7 @@ TEST_F(DumpAtomTest, no_scale_run0) TEST_F(DumpAtomTest, no_buffer_no_scale_run0) { auto dump_file = "dump_no_buffer_no_scale_run0.melt"; - generate_dump(dump_file, "scale no", 0); + generate_dump(dump_file, "buffer no scale no", 0); ASSERT_FILE_EXISTS(dump_file); auto lines = read_lines(dump_file); diff --git a/unittest/formats/test_dump_atom_compressed.cpp b/unittest/formats/test_dump_atom_compressed.cpp index 5a519e06a1..aeb747004e 100644 --- a/unittest/formats/test_dump_atom_compressed.cpp +++ b/unittest/formats/test_dump_atom_compressed.cpp @@ -61,6 +61,34 @@ TEST_F(DumpAtomCompressTest, compressed_run0) delete_file(converted_file); } +TEST_F(DumpAtomCompressTest, compressed_no_buffer_run0) +{ + if (!COMPRESS_BINARY) GTEST_SKIP(); + + auto text_file = text_dump_filename("no_buffer_run0.melt"); + auto compressed_file = compressed_dump_filename("no_buffer_run0.melt"); + + if(compression_style == "atom/zstd") { + generate_text_and_compressed_dump(text_file, compressed_file, "", "", "buffer no", "buffer no checksum yes", 0); + } else { + generate_text_and_compressed_dump(text_file, compressed_file, "", "buffer no", 0); + } + + TearDown(); + + ASSERT_FILE_EXISTS(text_file); + ASSERT_FILE_EXISTS(compressed_file); + + auto converted_file = convert_compressed_to_text(compressed_file); + + ASSERT_THAT(converted_file, Eq(converted_dump_filename("no_buffer_run0.melt"))); + ASSERT_FILE_EXISTS(converted_file); + ASSERT_FILE_EQUAL(text_file, converted_file); + delete_file(text_file); + delete_file(compressed_file); + delete_file(converted_file); +} + TEST_F(DumpAtomCompressTest, compressed_multi_file_run1) { if (!COMPRESS_BINARY) GTEST_SKIP(); @@ -344,7 +372,7 @@ TEST_F(DumpAtomCompressTest, compressed_modify_bad_param) command(fmt::format("dump id1 all {} 1 {}", compression_style, compressed_dump_filename("modify_bad_param_run0_*.melt"))); END_HIDE_OUTPUT(); - TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*", + TEST_FAILURE(".*ERROR on proc 0: Illegal dump_modify command: Compression level must in the range of.*", command("dump_modify id1 compression_level 12"); ); } @@ -357,7 +385,7 @@ TEST_F(DumpAtomCompressTest, compressed_modify_multi_bad_param) command(fmt::format("dump id1 all {} 1 {}", compression_style, compressed_dump_filename("modify_multi_bad_param_run0_*.melt"))); END_HIDE_OUTPUT(); - TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*", + TEST_FAILURE(".*ERROR on proc 0: Illegal dump_modify command: Compression level must in the range of.*", command("dump_modify id1 pad 3 compression_level 12"); ); } diff --git a/unittest/formats/test_dump_cfg_compressed.cpp b/unittest/formats/test_dump_cfg_compressed.cpp index 20f902091b..1a00f9520e 100644 --- a/unittest/formats/test_dump_cfg_compressed.cpp +++ b/unittest/formats/test_dump_cfg_compressed.cpp @@ -66,6 +66,39 @@ TEST_F(DumpCfgCompressTest, compressed_run0) delete_file(converted_file_0); } +TEST_F(DumpCfgCompressTest, compressed_no_buffer_run0) +{ + if (!COMPRESS_BINARY) GTEST_SKIP(); + + auto base_name = "no_buffer_run*.melt.cfg"; + auto text_files = text_dump_filename(base_name); + auto compressed_files = compressed_dump_filename(base_name); + + auto base_name_0 = "no_buffer_run0.melt.cfg"; + auto text_file_0 = text_dump_filename(base_name_0); + auto compressed_file_0 = compressed_dump_filename(base_name_0); + auto fields = "mass type xs ys zs id proc procp1 x y z ix iy iz vx vy vz fx fy fz"; + + if(compression_style == "cfg/zstd") { + generate_text_and_compressed_dump(text_files, compressed_files, fields, fields, "buffer no", "buffer no", 0); + } else { + generate_text_and_compressed_dump(text_files, compressed_files, fields, "buffer no", 0); + } + + TearDown(); + + ASSERT_FILE_EXISTS(text_file_0); + ASSERT_FILE_EXISTS(compressed_file_0); + + auto converted_file_0 = convert_compressed_to_text(compressed_file_0); + + ASSERT_FILE_EXISTS(converted_file_0); + ASSERT_FILE_EQUAL(text_file_0, converted_file_0); + delete_file(text_file_0); + delete_file(compressed_file_0); + delete_file(converted_file_0); +} + TEST_F(DumpCfgCompressTest, compressed_unwrap_run0) { if (!COMPRESS_BINARY) GTEST_SKIP(); @@ -234,7 +267,7 @@ TEST_F(DumpCfgCompressTest, compressed_modify_bad_param) command(fmt::format("dump id1 all {} 1 {} {}", compression_style, compressed_dump_filename("modify_bad_param_run0_*.melt.cfg"), fields)); END_HIDE_OUTPUT(); - TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*", + TEST_FAILURE(".*ERROR on proc 0: Illegal dump_modify command: Compression level must in the range of.*", command("dump_modify id1 compression_level 12"); ); } @@ -248,7 +281,7 @@ TEST_F(DumpCfgCompressTest, compressed_modify_multi_bad_param) command(fmt::format("dump id1 all {} 1 {} {}", compression_style, compressed_dump_filename("modify_multi_bad_param_run0_*.melt.cfg"), fields)); END_HIDE_OUTPUT(); - TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*", + TEST_FAILURE(".*ERROR on proc 0: Illegal dump_modify command: Compression level must in the range of.*", command("dump_modify id1 pad 3 compression_level 12"); ); } diff --git a/unittest/formats/test_dump_custom_compressed.cpp b/unittest/formats/test_dump_custom_compressed.cpp index fb70206590..cb45c1b837 100644 --- a/unittest/formats/test_dump_custom_compressed.cpp +++ b/unittest/formats/test_dump_custom_compressed.cpp @@ -58,6 +58,64 @@ TEST_F(DumpCustomCompressTest, compressed_run1) delete_file(converted_file); } +TEST_F(DumpCustomCompressTest, compressed_with_time_run1) +{ + if (!COMPRESS_BINARY) GTEST_SKIP(); + + auto base_name = "with_time_custom_run1.melt"; + auto text_file = text_dump_filename(base_name); + auto compressed_file = compressed_dump_filename(base_name); + auto fields = "id type proc x y z ix iy iz xs ys zs xu yu zu xsu ysu zsu vx vy vz fx fy fz"; + + if(compression_style == "custom/zstd") { + generate_text_and_compressed_dump(text_file, compressed_file, fields, fields, "time yes", "time yes checksum yes", 1); + } else { + generate_text_and_compressed_dump(text_file, compressed_file, fields, "time yes", 1); + } + + TearDown(); + + ASSERT_FILE_EXISTS(text_file); + ASSERT_FILE_EXISTS(compressed_file); + + auto converted_file = convert_compressed_to_text(compressed_file); + + ASSERT_FILE_EXISTS(converted_file); + ASSERT_FILE_EQUAL(text_file, converted_file); + delete_file(text_file); + delete_file(compressed_file); + delete_file(converted_file); +} + +TEST_F(DumpCustomCompressTest, compressed_no_buffer_run1) +{ + if (!COMPRESS_BINARY) GTEST_SKIP(); + + auto base_name = "no_buffer_custom_run1.melt"; + auto text_file = text_dump_filename(base_name); + auto compressed_file = compressed_dump_filename(base_name); + auto fields = "id type proc x y z ix iy iz xs ys zs xu yu zu xsu ysu zsu vx vy vz fx fy fz"; + + if(compression_style == "custom/zstd") { + generate_text_and_compressed_dump(text_file, compressed_file, fields, fields, "buffer no", "buffer no checksum yes", 1); + } else { + generate_text_and_compressed_dump(text_file, compressed_file, fields, "buffer no", 1); + } + + TearDown(); + + ASSERT_FILE_EXISTS(text_file); + ASSERT_FILE_EXISTS(compressed_file); + + auto converted_file = convert_compressed_to_text(compressed_file); + + ASSERT_FILE_EXISTS(converted_file); + ASSERT_FILE_EQUAL(text_file, converted_file); + delete_file(text_file); + delete_file(compressed_file); + delete_file(converted_file); +} + TEST_F(DumpCustomCompressTest, compressed_triclinic_run1) { if (!COMPRESS_BINARY) GTEST_SKIP(); @@ -222,7 +280,7 @@ TEST_F(DumpCustomCompressTest, compressed_modify_bad_param) auto fields = "id type proc x y z ix iy iz xs ys zs xu yu zu xsu ysu zsu vx vy vz fx fy fz"; command(fmt::format("dump id1 all {} 1 {} {}", compression_style, compressed_dump_filename("modify_bad_param_run0_*.melt.custom"), fields)); - TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*", + TEST_FAILURE(".*ERROR on proc 0: Illegal dump_modify command: Compression level must in the range of.*", command("dump_modify id1 compression_level 12"); ); } @@ -234,7 +292,7 @@ TEST_F(DumpCustomCompressTest, compressed_modify_multi_bad_param) auto fields = "id type proc x y z ix iy iz xs ys zs xu yu zu xsu ysu zsu vx vy vz fx fy fz"; command(fmt::format("dump id1 all {} 1 {} {}", compression_style, compressed_dump_filename("modify_multi_bad_param_run0_*.melt.custom"), fields)); - TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*", + TEST_FAILURE(".*ERROR on proc 0: Illegal dump_modify command: Compression level must in the range of.*", command("dump_modify id1 pad 3 compression_level 12"); ); } diff --git a/unittest/formats/test_dump_local.cpp b/unittest/formats/test_dump_local.cpp new file mode 100644 index 0000000000..b122d71849 --- /dev/null +++ b/unittest/formats/test_dump_local.cpp @@ -0,0 +1,261 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + https://lammps.sandia.gov/, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include "../testing/core.h" +#include "../testing/systems/melt.h" +#include "../testing/utils.h" +#include "fmt/format.h" +#include "output.h" +#include "thermo.h" +#include "utils.h" +#include "gmock/gmock.h" +#include "gtest/gtest.h" + +#include + +using ::testing::Eq; + +char *BINARY2TXT_BINARY = nullptr; +bool verbose = false; + +class DumpLocalTest : public MeltTest { + std::string dump_style = "local"; + +public: + void enable_triclinic() + { + BEGIN_HIDE_OUTPUT(); + command("change_box all triclinic"); + END_HIDE_OUTPUT(); + } + + void generate_dump(std::string dump_file, std::string dump_options, std::string dump_modify_options, int ntimesteps) + { + BEGIN_HIDE_OUTPUT(); + command(fmt::format("dump id all {} 1 {} {}", dump_style, dump_file, dump_options)); + + if (!dump_modify_options.empty()) { + command(fmt::format("dump_modify id {}", dump_modify_options)); + } + + command(fmt::format("run {} post no", ntimesteps)); + END_HIDE_OUTPUT(); + } + + void continue_dump(int ntimesteps) + { + BEGIN_HIDE_OUTPUT(); + command(fmt::format("run {} pre no post no", ntimesteps)); + END_HIDE_OUTPUT(); + } + + void SetUp() override { + MeltTest::SetUp(); + + BEGIN_HIDE_OUTPUT(); + command("compute comp all pair/local dist eng"); + END_HIDE_OUTPUT(); + } +}; + +TEST_F(DumpLocalTest, run0) +{ + auto dump_file = "dump_local_run0.melt"; + generate_dump(dump_file, "index c_comp[1]", "", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto lines = read_lines(dump_file); + ASSERT_EQ(lines.size(), 873); + + ASSERT_THAT(lines[0], Eq("ITEM: TIMESTEP")); + ASSERT_EQ(std::stoi(lines[1]), 0); + + ASSERT_THAT(lines[2], Eq("ITEM: NUMBER OF ENTRIES")); + ASSERT_EQ(std::stoi(lines[3]), 864); + + ASSERT_THAT(lines[4], Eq("ITEM: BOX BOUNDS pp pp pp")); + ASSERT_EQ(utils::split_words(lines[5]).size(), 2); + ASSERT_EQ(utils::split_words(lines[6]).size(), 2); + ASSERT_EQ(utils::split_words(lines[7]).size(), 2); + ASSERT_THAT(lines[8], Eq("ITEM: ENTRIES index c_comp[1] ")); + ASSERT_EQ(utils::split_words(lines[9]).size(), 2); + ASSERT_THAT(lines[9], Eq("1 1.18765 ")); + delete_file(dump_file); +} + +TEST_F(DumpLocalTest, label_run0) +{ + auto dump_file = "dump_local_label_run0.melt"; + generate_dump(dump_file, "index c_comp[1]", "label ELEMENTS", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto lines = read_lines(dump_file); + ASSERT_THAT(lines[2], Eq("ITEM: NUMBER OF ELEMENTS")); + ASSERT_THAT(lines[8], Eq("ITEM: ELEMENTS index c_comp[1] ")); + delete_file(dump_file); +} + +TEST_F(DumpLocalTest, format_line_run0) +{ + auto dump_file = "dump_local_format_line_run0.melt"; + generate_dump(dump_file, "index c_comp[1]", "format line \"%d %20.8g\"", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto lines = read_lines(dump_file); + + ASSERT_EQ(utils::split_words(lines[9]).size(), 2); + ASSERT_THAT(lines[9], Eq("1 1.1876539 ")); + delete_file(dump_file); +} + +TEST_F(DumpLocalTest, format_int_run0) +{ + auto dump_file = "dump_local_format_int_run0.melt"; + generate_dump(dump_file, "index c_comp[1]", "format int \"%20d\"", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto lines = read_lines(dump_file); + + ASSERT_EQ(utils::split_words(lines[9]).size(), 2); + ASSERT_THAT(lines[9], Eq(" 1 1.18765 ")); + delete_file(dump_file); +} + +TEST_F(DumpLocalTest, format_float_run0) +{ + auto dump_file = "dump_local_format_float_run0.melt"; + generate_dump(dump_file, "index c_comp[1]", "format float \"%20.5g\"", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto lines = read_lines(dump_file); + + ASSERT_EQ(utils::split_words(lines[9]).size(), 2); + ASSERT_THAT(lines[9], Eq("1 1.1877 ")); + delete_file(dump_file); +} + +TEST_F(DumpLocalTest, format_column_run0) +{ + auto dump_file = "dump_local_format_column_run0.melt"; + generate_dump(dump_file, "index c_comp[1]", "format 1 \"%20d\"", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto lines = read_lines(dump_file); + + ASSERT_EQ(utils::split_words(lines[9]).size(), 2); + ASSERT_THAT(lines[9], Eq(" 1 1.18765 ")); + delete_file(dump_file); +} + +TEST_F(DumpLocalTest, no_buffer_run0) +{ + auto dump_file = "dump_local_format_line_run0.melt"; + generate_dump(dump_file, "index c_comp[1]", "buffer no", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto lines = read_lines(dump_file); + ASSERT_EQ(lines.size(), 873); + + ASSERT_THAT(lines[0], Eq("ITEM: TIMESTEP")); + ASSERT_EQ(std::stoi(lines[1]), 0); + + ASSERT_THAT(lines[2], Eq("ITEM: NUMBER OF ENTRIES")); + ASSERT_EQ(std::stoi(lines[3]), 864); + + ASSERT_THAT(lines[4], Eq("ITEM: BOX BOUNDS pp pp pp")); + ASSERT_EQ(utils::split_words(lines[5]).size(), 2); + ASSERT_EQ(utils::split_words(lines[6]).size(), 2); + ASSERT_EQ(utils::split_words(lines[7]).size(), 2); + ASSERT_THAT(lines[8], Eq("ITEM: ENTRIES index c_comp[1] ")); + ASSERT_EQ(utils::split_words(lines[9]).size(), 2); + ASSERT_THAT(lines[9], Eq("1 1.18765 ")); + delete_file(dump_file); +} + +TEST_F(DumpLocalTest, with_units_run0) +{ + auto dump_file = "dump_with_units_run0.melt"; + generate_dump(dump_file, "index c_comp[1]", "units yes", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto lines = read_lines(dump_file); + ASSERT_EQ(lines.size(), 875); + + ASSERT_THAT(lines[0], Eq("ITEM: UNITS")); + ASSERT_THAT(lines[1], Eq("lj")); + + ASSERT_THAT(lines[2], Eq("ITEM: TIMESTEP")); + ASSERT_EQ(std::stoi(lines[3]), 0); + + ASSERT_THAT(lines[4], Eq("ITEM: NUMBER OF ENTRIES")); + ASSERT_EQ(std::stoi(lines[5]), 864); +} + +TEST_F(DumpLocalTest, with_time_run0) +{ + auto dump_file = "dump_with_time_run0.melt"; + generate_dump(dump_file, "index c_comp[1]", "time yes", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto lines = read_lines(dump_file); + ASSERT_EQ(lines.size(), 875); + + ASSERT_THAT(lines[0], Eq("ITEM: TIME")); + ASSERT_THAT(std::stof(lines[1]), 0.0); + + ASSERT_THAT(lines[2], Eq("ITEM: TIMESTEP")); + ASSERT_EQ(std::stoi(lines[3]), 0); + + ASSERT_THAT(lines[4], Eq("ITEM: NUMBER OF ENTRIES")); + ASSERT_EQ(std::stoi(lines[5]), 864); +} + +TEST_F(DumpLocalTest, triclinic_run0) +{ + auto dump_file = "dump_local_triclinic_run0.melt"; + enable_triclinic(); + generate_dump(dump_file, "index c_comp[1]", "", 0); + + ASSERT_FILE_EXISTS(dump_file); + auto lines = read_lines(dump_file); + + ASSERT_THAT(lines[4], Eq("ITEM: BOX BOUNDS xy xz yz pp pp pp")); + ASSERT_EQ(utils::split_words(lines[5]).size(), 3); + ASSERT_EQ(utils::split_words(lines[6]).size(), 3); + ASSERT_EQ(utils::split_words(lines[7]).size(), 3); + delete_file(dump_file); +} + +int main(int argc, char **argv) +{ + MPI_Init(&argc, &argv); + ::testing::InitGoogleMock(&argc, argv); + + // handle arguments passed via environment variable + if (const char *var = getenv("TEST_ARGS")) { + std::vector env = utils::split_words(var); + for (auto arg : env) { + if (arg == "-v") { + verbose = true; + } + } + } + + BINARY2TXT_BINARY = getenv("BINARY2TXT_BINARY"); + + if ((argc > 1) && (strcmp(argv[1], "-v") == 0)) verbose = true; + + int rv = RUN_ALL_TESTS(); + MPI_Finalize(); + return rv; +} diff --git a/unittest/formats/test_dump_local_compressed.cpp b/unittest/formats/test_dump_local_compressed.cpp index 95656071fc..cd217354af 100644 --- a/unittest/formats/test_dump_local_compressed.cpp +++ b/unittest/formats/test_dump_local_compressed.cpp @@ -69,6 +69,135 @@ TEST_F(DumpLocalCompressTest, compressed_run0) delete_file(converted_file_0); } +TEST_F(DumpLocalCompressTest, compressed_no_buffer_run0) +{ + if (!COMPRESS_BINARY) GTEST_SKIP(); + + auto base_name = "no_buffer_run*.melt.local"; + auto base_name_0 = "no_buffer_run0.melt.local"; + auto text_files = text_dump_filename(base_name); + auto compressed_files = compressed_dump_filename(base_name); + auto text_file_0 = text_dump_filename(base_name_0); + auto compressed_file_0 = compressed_dump_filename(base_name_0); + auto fields = "index c_comp[1]"; + + if(compression_style == "local/zstd") { + generate_text_and_compressed_dump(text_files, compressed_files, fields, fields, "buffer no", "buffer no checksum yes", 0); + } else { + generate_text_and_compressed_dump(text_files, compressed_files, fields, "buffer no", 0); + } + + TearDown(); + + ASSERT_FILE_EXISTS(text_file_0); + ASSERT_FILE_EXISTS(compressed_file_0); + + auto converted_file_0 = convert_compressed_to_text(compressed_file_0); + + ASSERT_FILE_EXISTS(converted_file_0); + ASSERT_FILE_EQUAL(text_file_0, converted_file_0); + delete_file(text_file_0); + delete_file(compressed_file_0); + delete_file(converted_file_0); +} + +TEST_F(DumpLocalCompressTest, compressed_with_time_run0) +{ + if (!COMPRESS_BINARY) GTEST_SKIP(); + + auto base_name = "with_time_run*.melt.local"; + auto base_name_0 = "with_time_run0.melt.local"; + auto text_files = text_dump_filename(base_name); + auto compressed_files = compressed_dump_filename(base_name); + auto text_file_0 = text_dump_filename(base_name_0); + auto compressed_file_0 = compressed_dump_filename(base_name_0); + auto fields = "index c_comp[1]"; + + if(compression_style == "local/zstd") { + generate_text_and_compressed_dump(text_files, compressed_files, fields, fields, "time yes", "time yes checksum yes", 0); + } else { + generate_text_and_compressed_dump(text_files, compressed_files, fields, "time yes", 0); + } + + TearDown(); + + ASSERT_FILE_EXISTS(text_file_0); + ASSERT_FILE_EXISTS(compressed_file_0); + + auto converted_file_0 = convert_compressed_to_text(compressed_file_0); + + ASSERT_FILE_EXISTS(converted_file_0); + ASSERT_FILE_EQUAL(text_file_0, converted_file_0); + delete_file(text_file_0); + delete_file(compressed_file_0); + delete_file(converted_file_0); +} + +TEST_F(DumpLocalCompressTest, compressed_with_units_run0) +{ + if (!COMPRESS_BINARY) GTEST_SKIP(); + + auto base_name = "with_units_run*.melt.local"; + auto base_name_0 = "with_units_run0.melt.local"; + auto text_files = text_dump_filename(base_name); + auto compressed_files = compressed_dump_filename(base_name); + auto text_file_0 = text_dump_filename(base_name_0); + auto compressed_file_0 = compressed_dump_filename(base_name_0); + auto fields = "index c_comp[1]"; + + if(compression_style == "local/zstd") { + generate_text_and_compressed_dump(text_files, compressed_files, fields, fields, "units yes", "units yes checksum yes", 0); + } else { + generate_text_and_compressed_dump(text_files, compressed_files, fields, "units yes", 0); + } + + TearDown(); + + ASSERT_FILE_EXISTS(text_file_0); + ASSERT_FILE_EXISTS(compressed_file_0); + + auto converted_file_0 = convert_compressed_to_text(compressed_file_0); + + ASSERT_FILE_EXISTS(converted_file_0); + ASSERT_FILE_EQUAL(text_file_0, converted_file_0); + delete_file(text_file_0); + delete_file(compressed_file_0); + delete_file(converted_file_0); +} + +TEST_F(DumpLocalCompressTest, compressed_triclinic_run0) +{ + if (!COMPRESS_BINARY) GTEST_SKIP(); + enable_triclinic(); + + auto base_name = "triclinic_run*.melt.local"; + auto base_name_0 = "triclinic_run0.melt.local"; + auto text_files = text_dump_filename(base_name); + auto compressed_files = compressed_dump_filename(base_name); + auto text_file_0 = text_dump_filename(base_name_0); + auto compressed_file_0 = compressed_dump_filename(base_name_0); + auto fields = "index c_comp[1]"; + + if(compression_style == "local/zstd") { + generate_text_and_compressed_dump(text_files, compressed_files, fields, fields, "", "checksum yes", 0); + } else { + generate_text_and_compressed_dump(text_files, compressed_files, fields, "", 0); + } + + TearDown(); + + ASSERT_FILE_EXISTS(text_file_0); + ASSERT_FILE_EXISTS(compressed_file_0); + + auto converted_file_0 = convert_compressed_to_text(compressed_file_0); + + ASSERT_FILE_EXISTS(converted_file_0); + ASSERT_FILE_EQUAL(text_file_0, converted_file_0); + delete_file(text_file_0); + delete_file(compressed_file_0); + delete_file(converted_file_0); +} + TEST_F(DumpLocalCompressTest, compressed_multi_file_run1) { if (!COMPRESS_BINARY) GTEST_SKIP(); @@ -209,7 +338,7 @@ TEST_F(DumpLocalCompressTest, compressed_modify_bad_param) command(fmt::format("dump id1 all {} 1 {} {}", compression_style, compressed_dump_filename("modify_bad_param_run0_*.melt.local"), fields)); END_HIDE_OUTPUT(); - TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*", + TEST_FAILURE(".*ERROR on proc 0: Illegal dump_modify command: Compression level must in the range of.*", command("dump_modify id1 compression_level 12"); ); } @@ -224,7 +353,7 @@ TEST_F(DumpLocalCompressTest, compressed_modify_multi_bad_param) command(fmt::format("dump id1 all {} 1 {} {}", compression_style, compressed_dump_filename("modify_multi_bad_param_run0_*.melt.local"), fields)); END_HIDE_OUTPUT(); - TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*", + TEST_FAILURE(".*ERROR on proc 0: Illegal dump_modify command: Compression level must in the range of.*", command("dump_modify id1 pad 3 compression_level 12"); ); } diff --git a/unittest/formats/test_dump_xyz_compressed.cpp b/unittest/formats/test_dump_xyz_compressed.cpp index dad7911b4c..d9aa8e370d 100644 --- a/unittest/formats/test_dump_xyz_compressed.cpp +++ b/unittest/formats/test_dump_xyz_compressed.cpp @@ -60,6 +60,37 @@ TEST_F(DumpXYZCompressTest, compressed_run0) delete_file(converted_file_0); } +TEST_F(DumpXYZCompressTest, compressed_no_buffer_run0) +{ + if (!COMPRESS_BINARY) GTEST_SKIP(); + + auto base_name = "no_buffer_run*.melt.xyz"; + auto base_name_0 = "no_buffer_run0.melt.xyz"; + auto text_files = text_dump_filename(base_name); + auto compressed_files = compressed_dump_filename(base_name); + auto text_file_0 = text_dump_filename(base_name_0); + auto compressed_file_0 = compressed_dump_filename(base_name_0); + + if(compression_style == "xyz/zstd") { + generate_text_and_compressed_dump(text_files, compressed_files, "", "", "buffer no", "buffer no", 0); + } else { + generate_text_and_compressed_dump(text_files, compressed_files, "", "buffer no", 0); + } + + TearDown(); + + ASSERT_FILE_EXISTS(text_file_0); + ASSERT_FILE_EXISTS(compressed_file_0); + + auto converted_file_0 = convert_compressed_to_text(compressed_file_0); + + ASSERT_FILE_EXISTS(converted_file_0); + ASSERT_FILE_EQUAL(text_file_0, converted_file_0); + delete_file(text_file_0); + delete_file(compressed_file_0); + delete_file(converted_file_0); +} + TEST_F(DumpXYZCompressTest, compressed_multi_file_run1) { if (!COMPRESS_BINARY) GTEST_SKIP(); @@ -195,7 +226,7 @@ TEST_F(DumpXYZCompressTest, compressed_modify_bad_param) command(fmt::format("dump id1 all {} 1 {}", compression_style, compressed_dump_filename("modify_bad_param_run0_*.melt.xyz"))); END_HIDE_OUTPUT(); - TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*", + TEST_FAILURE(".*ERROR on proc 0: Illegal dump_modify command: Compression level must in the range of.*", command("dump_modify id1 compression_level 12"); ); } @@ -208,7 +239,7 @@ TEST_F(DumpXYZCompressTest, compressed_modify_multi_bad_param) command(fmt::format("dump id1 all {} 1 {}", compression_style, compressed_dump_filename("modify_multi_bad_param_run0_*.melt.xyz"))); END_HIDE_OUTPUT(); - TEST_FAILURE(".*ERROR: Illegal dump_modify command: compression level must in the range of.*", + TEST_FAILURE(".*ERROR on proc 0: Illegal dump_modify command: Compression level must in the range of.*", command("dump_modify id1 pad 3 compression_level 12"); ); }