liggght

liggghts是一个开源的离散元程序包,是以lammps为基础进一步开发的,其全称为: LAMMPS Improved for General Granular and Granular Heat Transfer Simulations,首字母简写为LIGGGHTS


一、脚本模板

#!/bin/bash 
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=56 
#SBATCH --partition=g1_share 
#SBATCH --job-name=liggght 
#SBATCH --output=liggghts.%j.out 
#SBATCH --error=liggghts.%j.err 

ulimit -s unlimited
ulimit -l unlimited
unset I_MPI_PMI_LIBRARY                        # 取消默认mpi库,使用intel自带
export I_MPI_JOB_RESPECT_PROCESS_PLACEMENT=0   # intel 多节点作业所需修改参数 
module load gcc/9.4.0       # intel 环境加载
module load hpcx/2.11
module load liggghts/3.8_gcc9.4


mpirun -x lmp_auto -in  in.sph_1                                 

二、 编译

#1、下载地址 
#liggghts https://github.com/CFDEMproject/LIGGGHTS-PUBLIC/tags
#vtk    https://gitlab.kitware.com/ vtk/vtk 
#2、环境选择 gcc9.4+openmpi4.1.1_gcc9.4  cmake/3.23.1
 export CC=`which gcc`
 export CXX=`which g++`
 export FC=`which gfortran`
 #3、选择vtk 版本
 tar xf LIGGGHTS-PUBLIC-3.8.0.tar.gz 
 vim LIGGGHTS-PUBLIC-3.8.0/src/MAKE/Makefile.auto
 /vtk
 #查看 liggght 要下载的vtk 版本 ,3.8.0版本liggghts 依赖 VTK-8.0.1 下载地址为 http://www.vtk.org/files/release/8.0/VTK-8.0.1.zip
 #4、查看 vtk 编译命令 
 #查找 cmake 
 /cmkae 
  # N n  上下切换搜索项 大概在 800 行 
cmake -DBUILD_TESTING:BOOL=OFF -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX=../install -DModule_vtkIOMPIParallel:BOOL=ON -DVTK_Group_MPI:BOOL=ON -DVTK_Group_Rendering:BOOL=OFF -DVTK_RENDERING_BACKEND:STRING=None -DVTK_USE_X:BOOL=OFF -DModule_vtkIOMPIImage:BOOL=ON -DModule_vtkParallelMPI:BOOL=ON ../
#退出 LIGGGHTS-PUBLIC-3.8.0/src/MAKE/Makefile.auto 文件
:q
# 5、安装 vtk 
unzip VTK-8.0.1.zip
cd VTK-8.0.1
mkdir build
cd build
cmake -DBUILD_TESTING:BOOL=OFF -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX=../install -DModule_vtkIOMPIParallel:BOOL=ON -DVTK_Group_MPI:BOOL=ON -DVTK_Group_Rendering:BOOL=OFF -DVTK_RENDERING_BACKEND:STRING=None -DVTK_USE_X:BOOL=OFF -DModule_vtkIOMPIImage:BOOL=ON -DModule_vtkParallelMPI:BOOL=ON ../
make -j 20
make install -j 20
#6、安装 liggghts
cd LIGGGHTS-PUBLIC-3.8.0/src/
make auto 
#修改 MAKE/Makefile.user
12 AUTOINSTALL_VTK = "ON"
###vtk 安装目录
120 VTK_INC_USR=-I/sh2/software/app/liggghts/vtk/VTK-8.0.1/install/include/vtk-8.0
122 VTK_LIB_USR=-L/sh2/software/app/liggghts/vtk/VTK-8.0.1/install/lib
#保存退出
make auto
#编译成功后会 生成 lmp_auto
##7、加载 环境变量 需要 加载 vtk lib 目录 及 lmp_auto文件目录
报错:
用户要求协助编译liggght,并告知她对源代码进行了部分修改,没法直接用集群中预编译的。本地能正常编译安装。
本地环境:openmpi1.10.7 vtk6.2 liggght3.8 源代码修改版本 gcc4.8.5
vtk 编译:
  cmake -DBUILD_TESTING:BOOL=OFF -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX=../install -DModule_vtkIOMPIParallel:BOOL=ON -DVTK_Group_MPI:BOOL=ON  -DModule_vtkIOMPIImage:BOOL=ON -DModule_v
tkParallelMPI:BOOL=ON ../
 make -j
 make -j install
liggght:编译
vim MAKE/Makefinde.mpi
MPI_INC = -I/public/software/mpi/openmpi/1.10.7/openmpi_gcc4.8.5/include
MPI_PATH = -L/public/software/mpi/openmpi/1.10.7/openmpi_gcc4.8.5/lib
FFT_INC = -I/public/software/mathlib/fftw/3.3.10/fftw_gcc4.8.5/include
FFT_PATH = -L/public/software/mathlib/fftw/3.3.10/fftw_gcc4.8.5/lib
VTK_INC =   -I/public/home/limc/software/6.2/vtk-v6.2.0/install/include/vtk-6.2
VTK_PATH =  -L/public/home/limc/software/6.2/vtk-v6.2.0/install/lib
JPG_INC = -I/usr/include
JPG_PATH = -L/usr/lib64

make mpi
1.找不到vtk 库 添加以下环境变量
export LD_LIBRARY_PATH=/public/home/limc/software/6.2/vtk-v6.2.0/install/lib:/public/software/mpi/openmpi/1.10.7/openmpi_gcc4.8.5/lib:$LD_LIBRARY_PATH
export PATH=/public/home/limc/software/6.2/vtk-v6.2.0/install/bin:/public/software/mpi/openmpi/1.10.7/openmpi_gcc4.8.5/bin:$PATH
2、少函数

怀疑源码问题,查看提示中的函数包含在LIGGGHTS-PUBLIC-3.8.0/src: neigh_request.h
按照提示查看pair_hybrid.cpp 及 pair_hybrif_overlay.cpp 两个文件,发现均包含 neigh_request.h
因用户修改过源码,尝试编译原版liggght,判断是否为依赖环境问题,编译正常,基本排除依赖库问题。
使用 diff 比对原版和用户修改源码后的版本,输出提示4千多行,重点筛选上述报错提到的几个文件及neigh_request字样的文件名的文件,发现少LIGGGHTS-PUBLIC-3.8.0/src: neigh_request.cpp
复制原版中 LIGGGHTS-PUBLIC-3.8.0/src: neigh_request.cpp到用户修改版本的源码包对应位置,编译成功
与用户确认 LIGGGHTS-PUBLIC-3.8.0/src: neigh_request.cpp 未经过修改,并索要算例,经测试编译正常
作者:admin  创建时间:2024-12-05 09:21
最后编辑:admin  更新时间:2024-12-05 10:18