blob: 12368f87b5968fef879b89eb44fa9b07c4afa854 (
plain)
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
|
#!/bin/sh
#
# This file sets up the appropriate environmental variables and paths
# for CNSsolve. In the case of the same machines with different versions
# of the OS, backward compatibility is assumed - ie. a later version will
# be setup for a previous version of the OS if nothing else is available.
#
# written by: Paul Adams
#
# copyright Yale University
#
# ==========================================================================
#
# >>>>>> Important: define the location of the CNSsolve directory <<<<<<
#
# CHANGE THE NEXT LINE TO POINT TO THE LOCATION OF THE CNSsolve DIRECTORY
CNS_SOLVE=_CNSsolve_location_
#
# ==========================================================================
#
# full expansion of the CNS_SOLVE variable prior to use.
#
export CNS_SOLVE; CNS_SOLVE=$CNS_SOLVE
#
# ==========================================================================
#
# get the machine architecture
#
if [ -d $CNS_SOLVE ]; then
if [ ! "$CNS_ARCH" ]; then
export CNS_ARCH; CNS_ARCH=`$CNS_SOLVE/bin/getarch`
fi
else
export CNS_ARCH; CNS_ARCH='unknown'
fi
#
# ==========================================================================
#
# system variables for OpenMP
#
# The default stack sizes are usually insufficient, especially when
# CNS is compiled using OpenMP. If the stack sizes are too
# small segfaults may occur. Recommended setting for "stacksize":
limit stacksize unlimited
#
# KMP_STACKSIZE is specific for Intel ifort, icc:
##setenv KMP_STACKSIZE 256m
#
# OMP_STACKSIZE is used by all compilers:
setenv OMP_STACKSIZE 256m
#
# Uncomment the following line and change as appropriate to set the number
# of processors (threads) to use.
###setenv OMP_NUM_THREADS 4
#
# ==========================================================================
#
# general environmental variables
#
export CNS_LIB; CNS_LIB=$CNS_SOLVE/libraries
export CNS_MODULE; CNS_MODULE=$CNS_SOLVE/modules
export CNS_TOPPAR; CNS_TOPPAR=$CNS_LIB/toppar
export CNS_CONFDB; CNS_CONFDB=$CNS_LIB/confdb
export CNS_XTALLIB; CNS_XTALLIB=$CNS_LIB/xtal
export CNS_NMRLIB; CNS_NMRLIB=$CNS_LIB/nmr
export CNS_XRAYLIB; CNS_XRAYLIB=$CNS_LIB/xray
export CNS_XTALMODULE; CNS_XTALMODULE=$CNS_MODULE/xtal
export CNS_NMRMODULE; CNS_NMRMODULE=$CNS_MODULE/nmr
export CNS_HELPLIB; CNS_HELPLIB=$CNS_SOLVE/helplib
#
# general user aliases
#
cns_web () { $CNS_SOLVE/bin/cns_web; }
cns_header () { $CNS_SOLVE/bin/cns_header; }
cns_info () { cat $CNS_SOLVE/bin/cns_info; }
cns_transfer () { $CNS_SOLVE/bin/cns_transfer; }
if [ -x $CNS_SOLVE/bin/cns_edit_local ]; then
cns_edit () { $CNS_SOLVE/bin/cns_edit_local; }
else
cns_edit () { $CNS_SOLVE/bin/cns_edit; }
fi
#
# g77 compilation and use
#
g77on () { CNS_G77=ON; . $CNS_SOLVE/.cns_solve_env_sh; }
g77off () { unset CNS_G77; . $CNS_SOLVE/.cns_solve_env_sh; }
#
# developer aliases
#
run_tests () { $CNS_SOLVE/bin/run_tests; }
run_diffs () { $CNS_SOLVE/bin/run_diffs; }
maketar () { $CNS_SOLVE/bin/maketar; }
create_patch () { $CNS_SOLVE/bin/create_patch; }
#
#
# ==========================================================================
#
# to do expansions - unset noglob just in case user has it otherwise
#
set +f
#
# try to set up appropriate path
#
# first strip off any trailing information (eg. _g77)
#
CNS_ARCH=`echo ${CNS_ARCH} | sed -e 's/_g77//g'`
#
cns_vendor=`echo $CNS_ARCH | awk 'BEGIN{FS="-"}{print $1}'`
cns_cpu=`echo $CNS_ARCH | awk 'BEGIN{FS="-"}{print $2}'`
cns_os=`echo $CNS_ARCH | awk 'BEGIN{FS="-"}{print $3}'`
cns_major=`echo $CNS_ARCH | awk 'BEGIN{FS="-"}{print $4}'`
cns_minor=`echo $cns_major | sed -e 's/\./ /g'`
#
# if we are looking for a specific type of setup then limit search
#
cns_dirs=""
if [ ! "$CNS_G77" ]; then
if /bin/ls -d $CNS_SOLVE/$cns_vendor-* >/dev/null 2>&1 ; then
cns_dirs="`/bin/ls -d $CNS_SOLVE/$cns_vendor-* 2>&1 | awk 'BEGIN{FS="/"}{print $NF}' | sort -t\- -n -r -k 3 -k 4`"
fi
else
CNS_ARCH="${CNS_ARCH}_g77"
if /bin/ls -d $CNS_SOLVE/$cns_vendor-*_g77 >/dev/null 2>&1 ; then
cns_dirs="`/bin/ls -d $CNS_SOLVE/$cns_vendor-*_g77 2>&1 | awk 'BEGIN{FS="/"}{print $NF}' | sort -t\- -n -r -k 3 -k 4`"
fi
fi
#
# first look for an exact match (with os version)
#
#
cns_found=0
if [ -n "$cns_dirs" ]; then
for cns_dir in $cns_dirs ; do
cns_tmp_major=`echo $cns_dir | awk 'BEGIN{FS="-"}{print $4}'`
if [ -f $CNS_SOLVE/$cns_dir/bin/cns_solve ]; then
if [ $cns_dir = ${cns_vendor}-${cns_cpu}-${cns_os}-${cns_major} -o \
$cns_dir = ${cns_vendor}-${cns_cpu}-${cns_os}-${cns_major}_g77 ]; then
cns_archenv=$cns_dir
cns_found=1
fi
fi
done
#
#
# now look for an exact match (without os version)
#
if [ $cns_found -eq 0 ]; then
for cns_dir in $cns_dirs ; do
if [ -f $CNS_SOLVE/$cns_dir/bin/cns_solve ]; then
if [ $cns_dir = ${cns_vendor}-${cns_cpu}-${cns_os} -o \
$cns_dir = ${cns_vendor}-${cns_cpu}-${cns_os}_g77 ]; then
cns_archenv=$cns_dir
cns_found=1
fi
fi
done
fi
#
# now look for a backwards compatible match (with os version major/minor)
#
if [ $cns_found -eq 0 ]; then
for cns_dir in $cns_dirs ; do
if [ $cns_found -eq 0 ]; then
cns_tmp_major=`echo $cns_dir | awk 'BEGIN{FS="-"}{print $4}' | sed 's/_g77//g'`
if [ -f $CNS_SOLVE/$cns_dir/bin/cns_solve ]; then
if [ $cns_dir = ${cns_vendor}-${cns_cpu}-${cns_os}-* ]; then
osv_test=`echo $cns_major $cns_tmp_major | awk '{if ($1 > $2) print 1}'`
if [ $osv_test -eq 1 ]; then
cns_archenv=$cns_dir
cns_found=1
fi
fi
fi
fi
done
fi
#
# now look for a wildcard match on cpu
#
if [ $cns_found -eq 0 ]; then
cpu_cpu=`echo $cns_cpu | sed 's/[0-9]*\.*[0-9]*$//'`
cpu_ver=`echo $cns_cpu | sed 's/[A-Za-z]*//'`
for cns_dir in $cns_dirs ; do
if [ $cns_found -eq 0 ]; then
cns_tmp_cpu=`echo $cns_dir | awk 'BEGIN{FS="-"}{print $2}' | sed 's/[0-9]*\.*[0-9]*$//'`
cns_tmp_ver=`echo $cns_dir | awk 'BEGIN{FS="-"}{print $2}' | sed 's/[A-Za-z]*//'`
if [ -f $CNS_SOLVE/$cns_dir/bin/cns_solve ]; then
if [ $cns_dir = ${cns_vendor}-${cpu_cpu}*-${cns_os}-${cns_major} -o \
$cns_dir = ${cns_vendor}-${cpu_cpu}*-${cns_os}-${cns_major}_g77 ]; then
cpu_test=`echo $cpu_ver $cns_tmp_ver | awk '{if ($1 > $2) print 1}'`
if [ $cpu_test -eq 1 ]; then
cns_archenv=$cns_dir
cns_found=1
fi
fi
fi
fi
done
fi
fi
#
# if found set environment
#
if [ $cns_found -eq 1 ]; then
#
# set installation and source directory
#
export CNS_INST; CNS_INST=$CNS_SOLVE/$cns_archenv
export CNS_SOURCE; CNS_SOURCE=$CNS_INST/source
#
# path for CNSsolve utility programs
#
if [ -d $CNS_SOLVE/$cns_archenv/utils ]; then
export PATH; PATH=`$CNS_SOLVE/bin/modify_path -sh $CNS_SOLVE/$cns_archenv/utils`
fi
#
# path for CNSsolve executable if installed
#
if [ -d $CNS_SOLVE/$cns_archenv/bin ]; then
export PATH; PATH=`$CNS_SOLVE/bin/modify_path -sh $CNS_SOLVE/$cns_archenv/bin`
fi
fi
#
unset cns_vendor cns_cpu cns_os cns_major cns_minor cns_tmp_major cns_tmp_minor
unset cns_dir cns_dirs cns_found cns_archenv cns_diff cns_count cns_same
unset cpu_cpu cpu_ver cns_tmp_cpu cns_tmp_ver cpu_test osv_test
#
|