2 #----------------------------------*-sh-*--------------------------------------
4 # \\ / F ield | foam-extend: Open Source CFD
5 # \\ / O peration | Version: 3.2
6 # \\ / A nd | Web: http://www.foam-extend.org
7 # \\/ M anipulation | For copyright notice see file Copyright
8 #------------------------------------------------------------------------------
10 # This file is part of foam-extend.
12 # foam-extend is free software: you can redistribute it and/or modify it
13 # under the terms of the GNU General Public License as published by the
14 # Free Software Foundation, either version 3 of the License, or (at your
15 # option) any later version.
17 # foam-extend is distributed in the hope that it will be useful, but
18 # WITHOUT ANY WARRANTY; without even the implied warranty of
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 # General Public License for more details.
22 # You should have received a copy of the GNU General Public License
23 # along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
29 # Startup file for FOAM
30 # Sourced from ~/.profile or ~/.bashrc
31 # Should be usable by any POSIX-compliant shell (eg, ksh)
33 #------------------------------------------------------------------------------
35 export WM_PROJECT
=foam
37 export WM_PROJECT_VERSION
=3.1
39 # helps to easily write #ifdefs to detect a dev-version
42 ###############################################################################
45 # either set $FOAM_INST_DIR before sourcing this file or set
46 # $foamInstall below to where FOAM is installed
48 # Location of FOAM installation
49 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50 foamInstall
=$HOME/$WM_PROJECT
51 # foamInstall=~$WM_PROJECT
52 # foamInstall=/usr/local/$WM_PROJECT
53 # foamInstall=/opt/$WM_PROJECT
54 # foamInstall=/usr/lib
56 # END OF (NORMAL) USER EDITABLE PART
57 ################################################################################
59 # note the location for later use (eg, in job scripts)
60 : ${FOAM_INST_DIR:=$foamInstall}; export FOAM_INST_DIR
62 # The old dirs to be cleaned from the various environment variables
63 # - remove anything under top-level directory.
64 # NB: the WM_PROJECT_INST_DIR might not be identical between versions
65 foamOldDirs
="$FOAM_INST_DIR $HOME/$WM_PROJECT/$USER"
66 if [ "$WM_PROJECT_INST_DIR" != "$FOAM_INST_DIR" ]
68 foamOldDirs
="$WM_PROJECT_INST_DIR $foamOldDirs"
72 # Location of site/user files
73 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~
74 export WM_PROJECT_INST_DIR
=$FOAM_INST_DIR
75 export WM_PROJECT_DIR
=$WM_PROJECT_INST_DIR/$WM_PROJECT-$WM_FORK-$WM_PROJECT_VERSION
76 export WM_PROJECT_USER_DIR
=$HOME/$WM_PROJECT/$USER-$WM_PROJECT_VERSION
78 # Location of third-party software
79 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
80 #: ${WM_THIRD_PARTY_DIR=$WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION}; export WM_THIRD_PARTY_DIR
81 export WM_THIRD_PARTY_DIR
=$WM_PROJECT_DIR/ThirdParty
83 # Enabling the usage of third-party software
84 # This can be overriden in prefs.sh
85 # Use 'set' and 'unset' to adjust for your environent
86 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
88 export WM_THIRD_PARTY_USE_CMAKE_322
=1
92 export WM_THIRD_PARTY_USE_OPENMPI_184
=1
96 export WM_THIRD_PARTY_USE_METIS_510
=1
97 export WM_THIRD_PARTY_USE_PARMGRIDGEN_10
=1
98 export WM_THIRD_PARTY_USE_LIBCCMIO_261
=1
99 export WM_THIRD_PARTY_USE_MESQUITE_212
=1
100 export WM_THIRD_PARTY_USE_SCOTCH_604
=1
101 export WM_THIRD_PARTY_USE_PARMETIS_403
=1
102 export WM_THIRD_PARTY_USE_PYFOAM_064
=1
103 export WM_THIRD_PARTY_USE_HWLOC_1101
=1
107 #export WM_THIRD_PARTY_USE_QT_486=1
108 export WM_THIRD_PARTY_USE_PARAVIEW_431
=1
111 # Source files, possibly with some verbosity
116 [ "$FOAM_VERBOSE" -a "$PS1" ] && echo "Sourcing: $1" 1>&2
122 # Add in preset user or site preferences:
123 if [ -e $WM_PROJECT_DIR/etc
/prefs.sh
]
125 _foamSource
$WM_PROJECT_DIR/etc
/prefs.sh
127 [ "$FOAM_VERBOSE" -a "$PS1" ] && echo "No prefs.sh found"
131 # Evaluate command-line parameters
136 # name= -> unset name
140 # name=value -> export name=value
148 # Operating System/Platform
149 # ~~~~~~~~~~~~~~~~~~~~~~~~~
150 # WM_OSTYPE = POSIX | ????
151 : ${WM_OSTYPE:=POSIX}; export WM_OSTYPE
154 # Compiler: set to Gcc or Icc (for Intel's icc)
155 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
156 : ${WM_COMPILER:=Gcc}; export WM_COMPILER
157 #: ${WM_COMPILER:=Icc}; export WM_COMPILER
159 export WM_COMPILER_ARCH
=
160 export WM_COMPILER_LIB_ARCH
=
163 # Compilation options (architecture, precision, optimised, debug or profiling)
164 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
166 # WM_ARCH_OPTION = 32 | 64
167 : ${WM_ARCH_OPTION:=64}; export WM_ARCH_OPTION
169 # WM_PRECISION_OPTION = LDP | DP | SP
170 : ${WM_PRECISION_OPTION:=DP}; export WM_PRECISION_OPTION
172 # WM_COMPILE_OPTION = Opt | Debug | Prof
173 : ${WM_COMPILE_OPTION:=Opt}; export WM_COMPILE_OPTION
175 # WM_MPLIB = SYSTEMOPENMPI | OPENMPI | MPICH | MPICH-GM | HPMPI | GAMMA | MPI | QSMPI | MVAPICH2
176 : ${WM_MPLIB:=OPENMPI}; export WM_MPLIB
178 # WM_NCOMPPROCS = <number of processes to use>
179 # Warning: Need to use a complete path for foamGetSystemInfo because the PATH
180 # environment variable is not properly initialized yet.
181 : ${WM_NCOMPPROCS:=`$WM_PROJECT_DIR/bin/foamGetSystemInfo -nbrCores`}; export WM_NCOMPPROCS
184 # Run options (floating-point signal handling and memory initialisation)
185 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
187 # export FOAM_SETNAN=
190 # Detect system type and set environment variables appropriately
191 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
192 export WM_ARCH
=`uname -s`
204 case $WM_ARCH_OPTION in
206 export WM_COMPILER_ARCH
='-64'
207 export WM_CFLAGS
='-m32 -fPIC'
208 export WM_CXXFLAGS
='-m32 -fPIC'
209 export WM_LDFLAGS
='-m32'
213 export WM_COMPILER_LIB_ARCH
=64
214 export WM_CFLAGS
='-m64 -fPIC'
215 export WM_CXXFLAGS
='-m64 -fPIC'
216 export WM_LDFLAGS
='-m64'
219 echo Unknown WM_ARCH_OPTION
$WM_ARCH_OPTION, should be
32 or
64
226 export WM_COMPILER
=I64
231 export WM_COMPILER_LIB_ARCH
=64
232 export WM_CFLAGS
='-mabi=64 -fPIC'
233 export WM_CXXFLAGS
='-mabi=64 -fPIC'
234 export WM_LDFLAGS
='-mabi=64 -G0'
240 export WM_COMPILER_LIB_ARCH
=64
241 export WM_CFLAGS
='-m64 -fPIC'
242 export WM_CXXFLAGS
='-m64 -fPIC'
243 export WM_LDFLAGS
='-m64'
247 echo Unknown processor
type `uname -m` for Linux
253 # this makes certain things easier
254 export WM_ARCH_BASE
=darwin
258 export WM_ARCH
=darwinPpc
261 export WM_ARCH
=darwinIntel
264 echo "This seems to be neither an Intel-Mac nor a PPC-Mac please tell me the output of 'uname -p'. Bernhard."
265 export WM_ARCH
=darwinUnknown
269 case $WM_ARCH_OPTION in
271 export WM_CFLAGS
='-m32 -fPIC'
272 export WM_CXXFLAGS
='-m32 -fPIC'
273 export WM_LDFLAGS
='-m32'
276 export WM_ARCH
=${WM_ARCH}64
277 export WM_CFLAGS
='-m64 -fPIC'
278 export WM_CXXFLAGS
='-m64 -fPIC'
279 export WM_LDFLAGS
='-m64'
282 echo Unknown WM_ARCH_OPTION
$WM_ARCH_OPTION, should be
32 or
64
287 : ${MACOSX_MACPORTS_ROOT:='/opt/local/etc/macports'}; export MACOSX_MACPORTS_ROOT
288 which -s port
>/dev
/null
289 if [ $?
-eq "0" ] && [ -d "$MACOSX_MACPORTS_ROOT" ]
291 if [ "$FOAM_VERBOSE" -a "$PS1" ]
293 echo "Using Macports binaries"
296 export WM_USE_MACPORT
=1
297 export WM_BASE_COMPILER
=`echo $WM_COMPILER | tr -d "[:digit:]"`
298 export WM_MACPORT_MPI_VERSION
=`echo $WM_COMPILER | tr "[:upper:]" "[:lower:]"`
299 export WM_MACPORT_VERSION
=`echo $WM_MACPORT_MPI_VERSION | tr -d "[:alpha:]" | sed -e "s/\(.\)\(.\)/\1\.\2/"`
301 if [ -z "$WM_CHOSEN_MAC_MPI" ]
303 if [ -e '/opt/local/bin/mpicc' ]
305 readlink
/opt
/local
/bin
/mpicc |
grep openmpi
>/dev
/null
308 export WM_MPLIB
=MACPORTOPENMPI
309 if [ "$FOAM_VERBOSE" -a "$PS1" ]
311 echo "Using OpenMPI from MacPorts"
314 readlink
/opt
/local
/bin
/mpicc |
grep mpich
>/dev
/null
317 export WM_MPLIB
=MACPORTMPICH
318 if [ "$FOAM_VERBOSE" -a "$PS1" ]
320 echo "Using MPICH from MacPorts"
323 echo "/opt/local/bin/mpicc neither OpenMPI nor MPICH. Confused. Defaulting to OPENMPI"
324 export WM_MPLIB
=OPENMPI
329 export WM_MPLIB
=$WM_CHOSEN_MAC_MPI
330 if [ "$FOAM_VERBOSE" -a "$PS1" ]
332 echo "User chose WM_CHOSEN_MAC_MPI=$WM_CHOSEN_MAC_MPI"
336 if [ "$WM_MPLIB" == "MACPORTOPENMPI" ]
338 if [ ! -e "/opt/local/lib/openmpi-$WM_MACPORT_MPI_VERSION" ]
340 export WM_MACPORT_MPI_VERSION
=mp
341 if [ ! -e "/opt/local/lib/openmpi-$WM_MACPORT_MPI_VERSION" ]
343 echo "Proper OpenMPI not installed. Either do 'port install openmpi-$WM_MACPORT_MPI_VERSION' or 'port install openmpi-default'"
347 if [ "$WM_MPLIB" == "MACPORTMPICH" ]
349 if [ ! -e "/opt/local/lib/mpich-$WM_MACPORT_MPI_VERSION" ]
351 echo "MPICH wants the same version as the used compiler. Do 'port install mpich-$WM_MACPORT_MPI_VERSION'"
356 if [ "$WM_COMPILER" != "Gcc" ]
358 if [ "$WM_BASE_COMPILER" == "Gcc" ]
360 export WM_CC
="gcc-mp-$WM_MACPORT_VERSION"
361 export WM_CXX
="g++-mp-$WM_MACPORT_VERSION"
362 export WM_FC
="gfortran-mp-$WM_MACPORT_VERSION"
363 elif [ "$WM_BASE_COMPILER" == "Clang" ]
365 export WM_CC
="clang-mp-$WM_MACPORT_VERSION"
366 export WM_CXX
="clang++-mp-$WM_MACPORT_VERSION"
367 # Seems like there is no Fortran-frontend for LLVM at thistime
368 elif [ "$WM_BASE_COMPILER" == "Dragonegg" ]
370 export WM_CC
="dragonegg-$WM_MACPORT_VERSION-gcc"
371 export WM_CXX
="dragonegg-$WM_MACPORT_VERSION-g++"
372 export WM_CXX
="dragonegg-$WM_MACPORT_VERSION-gfortran"
374 echo "Unknown base compiler $WM_BASE_COMPILER"
377 ruleDirBase
=$WM_PROJECT_DIR/wmake
/rules
/$WM_ARCH
378 ruleDirTarget
=$ruleDirBase$WM_BASE_COMPILER
379 ruleDir
=$ruleDirBase$WM_COMPILER
382 echo "Rule directory $ruleDir not existing. Linking to $ruleDirTarget"
383 ln -s $ruleDirTarget $ruleDir
385 unset ruleDir ruleDirBase
388 echo "Warning: You are not using MacPorts. Make sure your compilation and MPI environment is correctly initialized"
391 # Make sure that binaries use the best features of the used OS-Version
392 # We need to get rid of the revision number from this string. eg turn "10.7.5" into "10.7"
393 # v=(`sw_vers -productVersion | sed 's/\./ /g'`)
394 # export MACOSX_DEPLOYMENT_TARGET="${v[1]}.${v[2]}"
395 export MACOSX_DEPLOYMENT_TARGET
=`sw_vers -productVersion | sed -e "s/\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\)/\1.\2/g"`
400 export WM_COMPILER_LIB_ARCH
=64
401 export WM_CFLAGS
='-mabi=64 -fPIC'
402 export WM_CXXFLAGS
='-mabi=64 -fPIC'
403 export WM_LDFLAGS
='-mabi=64 -G0'
404 export WM_MPLIB
=FJMPI
407 *) # an unsupported operating system
410 Your "$WM_ARCH" operating system is not supported by this release
411 of foam-extend. For further assistance, please contact www.foam-extend.org
418 # Clean standard environment variables (PATH, LD_LIBRARY_PATH, MANPATH)
419 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
420 cleanProg
=$WM_PROJECT_DIR/bin
/foamCleanPath
423 cleanEnv
=`$cleanProg "$PATH" "$foamOldDirs"` && PATH
="$cleanEnv"
425 #- Clean LD_LIBRARY_PATH
426 cleanEnv
=`$cleanProg "$LD_LIBRARY_PATH" "$foamOldDirs"` && LD_LIBRARY_PATH
="$cleanEnv"
428 #- Clean DYLD_LIBRARY_PATH
429 if [[ "$WM_ARCH_BASE" == "darwin" ]]
431 cleanEnv
=`$cleanProg "$DYLD_LIBRARY_PATH" "$foamOldDirs"` && DYLD_LIBRARY_PATH
="$cleanEnv"
435 cleanEnv
=`$cleanProg "$MANPATH" "$foamCleanDirs"` && MANPATH
="$cleanEnv"
437 export PATH LD_LIBRARY_PATH MANPATH
439 # Source project setup files
440 # ~~~~~~~~~~~~~~~~~~~~~~~~~~
442 _foamSource
$WM_PROJECT_DIR/etc
/settings.sh
443 _foamSource
$WM_PROJECT_DIR/etc
/aliases.sh
446 # Source user setup files for optional packages
447 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
448 # _foamSource $WM_PROJECT_DIR/etc/apps/paraview/bashrc
449 # _foamSource $WM_PROJECT_DIR/etc/apps/paraview3/bashrc
450 # _foamSource $WM_PROJECT_DIR/etc/apps/ensight/bashrc
453 # Clean environment paths again. Only remove duplicates
454 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
456 cleanEnv
=`$cleanProg "$PATH"` && PATH
="$cleanEnv"
458 #- Clean LD_LIBRARY_PATH
459 cleanEnv
=`$cleanProg "$LD_LIBRARY_PATH"` && LD_LIBRARY_PATH
="$cleanEnv"
462 cleanEnv
=`$cleanProg "$MANPATH"` && MANPATH
="$cleanEnv:"
464 export PATH LD_LIBRARY_PATH MANPATH
467 if [ "$LD_PRELOAD" != "" ]
469 cleanEnv
=`$cleanProg "$LD_PRELOAD"` && LD_PRELOAD
="$cleanEnv"
473 # temporarily disabled. HJ, 13/Jun/2014
474 # if [[ `uname -s` == "Darwin" ]]
476 # if [[ `ulimit -n` == "unlimited" || `ulimit -n` < 8192 ]]
478 # # higher limit needed for wmkdeps
483 # cleanup environment:
484 # ~~~~~~~~~~~~~~~~~~~~
485 unset cleanEnv cleanProg foamInstall foamOldDirs
488 # -----------------------------------------------------------------------------