Exception: ERROR: Unrecognized fix style 'shake' is part of the RIGID package which is not enabled in this LAM

Exception: ERROR: Unrecognized fix style 'shake' is part of the RIGID package which is not enabled in this LAM

我正尝试在 Colab 环境中 运行 一个 LAMMPS 脚本。但是,每当我尝试将 fix 命令与 RIGID 包中的参数一起使用时,控制台都会给我同样的错误。

我测试了不同的安装和构建方法,例如通过 apt 存储库和 CMAKE:

Method 1

    !add-apt-repository -y ppa:gladky-anton/lammps
    !add-apt-repository -y ppa:openkim/latest
    !apt update
    !apt install -y lammps-stable

Method 2

    !apt install -y cmake build-essential git ccache
    !rm -rf lammps
    !git clone -b release https://github.com/lammps/lammps.git mylammps

    !rm -rf build
    !mkdir build
    !apt install -y fftw3
    !cd build; cmake ../mylammps/cmake/presets/most.cmake -D CMAKE_INSTALL_PREFIX=/usr \
    -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -D BUILD_SHARED_LIBS=on\
    -D PKG_GPU=on -D GPU_API=cuda -D LAMMPS_EXCEPTIONS=on -D PKG_BODY=on\
    -D PKG_KSPACE=on -D PKG_MOLECULE=on -D PKG_MANYBODY=on -D PKG_ASPHERE=on\
    -D PKG_EXTRA-MOLECULE=on -D PKG_KSPACE=on -D PKG_CG-DNA=on -D PKG_ATC=on\
    -D PKG_ EXTRA-FIX=on -D PKG_FIX=on\
    -D PKG_RIGID=on -D PKG_POEMS=on -D PKG_MACHDYN=on -D PKG_DPD-SMOOTH=on\
    -D PKG_PYTHON=on ../mylammps/cmake
    !cd build; make -j 2
    !cd build; make install; make install-python

我还通过使用 file() 方法调用 external script 并使用 command() 方法将命令写入 LAMMPS 来测试它。

我的 codepython 脚本中 returns 错误的部分是::

    !pip install --user mpi4py
    #!pip install lammps-cython
    from mpi4py import MPI
    from lammps import lammps
    #from lammps import PyLammps
    #from lammps import Lammps
    import glob
    from google.colab import files
    from google.colab import drive
    L = lammps()

...

    L.command("fix            freeze teflon setforce 0.0 0.0 0.0")
    L.command("fix            fSHAKE water shake 0.0001 10 0 b 1 a 1")
    L.command("fix            fRIGID RIG rigid molecule")

或 LAMMPS 脚本中的相同行调用:

    #Using an external script
    !pip install --user mpi4py
    #!pip install lammps-cython
    from mpi4py import MPI
    from lammps import lammps
    #from lammps import PyLammps
    #from lammps import Lammps
    import glob
    from google.colab import files
    from google.colab import drive
    L = lammps()

...

    L.file(input[0])
    me = MPI.COMM_WORLD.Get_rank()
    nprocs = MPI.COMM_WORLD.Get_size()
    print("Proc %d out of %d procs has" % (me,nprocs),L)
    MPI.Finalize()

输出错误为:


    ---------------------------------------------------------------------------
    Exception                                 Traceback (most recent call last)
    <ipython-input-60-a968719e9bc6> in <module>()
          1 L = lammps()
    ----> 2 L.file(input[0])
          3 me = MPI.COMM_WORLD.Get_rank()
          4 nprocs = MPI.COMM_WORLD.Get_size()
          5 print("Proc %d out of %d procs has" % (me,nprocs),L)
    
    1 frames
    /usr/local/lib/python3.7/site-packages/lammps/core.py in file(self, path)
        559 
        560     with ExceptionCheck(self):
    --> 561       self.lib.lammps_file(self.lmp, path)
        562 
        563   # -------------------------------------------------------------------------
    
    /usr/local/lib/python3.7/site-packages/lammps/core.py in __exit__(self, exc_type, exc_value, traceback)
         47   def __exit__(self, exc_type, exc_value, traceback):
         48     if self.lmp.has_exceptions and self.lmp.lib.lammps_has_error(self.lmp.lmp):
    ---> 49       raise self.lmp._lammps_exception
         50 
         51 # -------------------------------------------------------------------------
    
    Exception: ERROR: Unrecognized fix style 'shake' is part of the RIGID package which is not enabled in this LAM

有什么建议吗?

您需要启用RIGID 包。为了更好地灵活使用 LAMMPS 功能,最好从源代码构建它:

下载最新的stable版本,将目录改进去

git clone -b stable https://github.com/lammps/lammps.git mylammps
cd mylammps/src

包括你需要的所有包,显然你需要RIGID才能使用fix shake

make yes-rigid 

现在您需要使用 MPI 进行构建并共享其库。这可能需要一段时间,您可以添加“-j N”标志以与 N 个内核并行执行,我使用 8

make mpi mode=shlib -j 8      

最后安装 Pylammps

make install-python

现在您应该可以通过 Colab 成功使用 PyLammps 了。