-
Notifications
You must be signed in to change notification settings - Fork 611
Expand file tree
/
Copy pathdp_gmx_patch
More file actions
135 lines (122 loc) · 3.91 KB
/
dp_gmx_patch
File metadata and controls
135 lines (122 loc) · 3.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/bin/bash
echo "WARNING: The GROMACS patch in deepmd-kit is deprecated and will be removed in a future version." >&2
echo "WARNING: See https://arxiv.org/abs/2602.02234 for a third-party alternative." >&2
DEEPMD_PATCH_SCRIPT_DIR=$(dirname $(readlink -f "$0"))
DEEPMD_PATCH_ROOT=${DEEPMD_PATCH_SCRIPT_DIR}/../share/deepmd_gromacs_patches
VERSION="NULL"
PATCH_FILES=("CMakeLists.txt" "src/gromacs/mdlib/forcerec.cpp" "src/gromacs/mdlib/sim_util.cpp" "src/gromacs/mdlib/forcerec.h")
MANUAL="\
usage: this is a deepmd-kit patch program for gromacs
arguments:
-h print this help and exit
-d gromacs root
-p patch mode
-r revert mode
-v gromacs version (only support 2020.2 now)
"
check () {
echo "- Checking GROMACS root: $1"
for ((i=0;i<${#PATCH_FILES[*]};i++))
do
file=${PATCH_FILES[$i]}
if [ ! -e $1/${file} ]; then
echo "- $1/${file} not exist"
exit 1
fi
done
echo "- Done"
}
check_unpatched () {
for ((i=0;i<${#PATCH_FILES[*]};i++))
do
file=${PATCH_FILES[$i]}
if [ -e ${GMX_ROOT}/${file}.predp ]; then
echo "- ERROR: This is a patched gromacs code, please revert first"
exit 1
fi
done
}
check_patched () {
for ((i=0;i<${#INSTALL_FILES[*]};i++))
do
file=${INSTALL_FILES[$i]}
if [ ! -e ${GMX_ROOT}/${file} ]; then
echo "- WARNING: ${GMX_ROOT}/${file} not found"
fi
done
for ((i=0;i<${#PATCH_FILES[*]};i++))
do
file=${PATCH_FILES[$i]}
if [ ! -e ${GMX_ROOT}/${file}.predp ]; then
echo "- ERROR: backup file ${GMX_ROOT}/${file}.predp is lost"
exit 1
fi
done
}
dp_gmx_patch () {
echo "- Staring DeePMD-kit patch program to GROMACS ${VERSION}"
echo "- Mode: patch"
if [ ! -d $1 ]; then
echo "- ERROR: invalid gromacs root: $1"
exit 1
else
check_unpatched $1
check $1
for ((i=0;i<${#PATCH_FILES[*]};i++))
do
file=${PATCH_FILES[$i]}
patch -b -u ${GMX_ROOT}/${file} --suffix=.predp < ${DEEPMD_PATCH_ROOT}/${file}.patch > /dev/null
echo "- Installing ${GMX_ROOT}/${file}"
echo "- Backing up ${GMX_ROOT}/${file}.predp"
done
for ((i=0;i<${#INSTALL_FILES[*]};i++))
do
file=${INSTALL_FILES[$i]}
cp ${DEEPMD_PATCH_ROOT}/${file} ${GMX_ROOT}/${file}
echo "- Installing ${GMX_ROOT}/${file}"
done
echo "- Finished"
fi
}
dp_gmx_revert () {
echo "- Staring DeePMD-kit patch program to GROMACS ${VERSION}"
echo "- Mode: revert"
check_patched $1
if [ ! -d $1 ]; then
echo "- ERROR: invalid gromacs root: $1"
exit 1
else
for ((i=0;i<${#INSTALL_FILES[*]};i++))
do
file=${INSTALL_FILES[$i]}
rm ${GMX_ROOT}/${file}
echo "- Removing ${GMX_ROOT}/${file}"
done
for ((i=0;i<${#PATCH_FILES[*]};i++))
do
file=${PATCH_FILES[$i]}
patch ${GMX_ROOT}/${file} -R -u < ${DEEPMD_PATCH_ROOT}/${file}.patch > /dev/null
rm ${GMX_ROOT}/${file}.predp
echo "- Restoring from ${GMX_ROOT}/${file}.predp"
done
echo "- Finished"
fi
}
check_version () {
case $1 in
"NULL") echo "- ERROR: Please specify a version from -v option" && exit 1;;
"2020.2") echo "- GROMACS version: 2020.2" ;;
*) echo "- ERROR: Invalid version" && exit 1 ;;
esac
}
while getopts "hprd:v:" opt
do
case ${opt} in
h) echo "${MANUAL}" && exit 0 ;;
d) GMX_ROOT=${OPTARG};;
v) VERSION=${OPTARG} && DEEPMD_PATCH_ROOT=${DEEPMD_PATCH_ROOT}/${VERSION} ;;
p) check_version ${VERSION} && dp_gmx_patch ${GMX_ROOT} ;;
r) check_version ${VERSION} && dp_gmx_revert ${GMX_ROOT} ;;
*) echo "- ERROR: Invalid option ${opt}" && exit 1 ;;
esac
done