2014-02-17 15:05:12 +00:00
#!/bin/bash
2010-05-12 13:27:55 +00:00
#----------------------------------*-sh-*--------------------------------------
# ========= |
2013-12-11 16:09:41 +00:00
# \\ / F ield | foam-extend: Open Source CFD
2010-05-12 13:27:55 +00:00
# \\ / O peration |
2013-12-11 16:09:41 +00:00
# \\ / A nd | For copyright notice see file Copyright
2010-05-12 13:27:55 +00:00
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
2013-12-11 16:09:41 +00:00
# This file is part of foam-extend.
2010-05-12 13:27:55 +00:00
#
2013-12-11 16:09:41 +00:00
# foam-extend is free software: you can redistribute it and/or modify it
2010-05-12 13:27:55 +00:00
# under the terms of the GNU General Public License as published by the
2013-12-11 16:09:41 +00:00
# Free Software Foundation, either version 3 of the License, or (at your
2010-05-12 13:27:55 +00:00
# option) any later version.
#
2013-12-11 16:09:41 +00:00
# foam-extend is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
2010-05-12 13:27:55 +00:00
#
# You should have received a copy of the GNU General Public License
2013-12-11 16:09:41 +00:00
# along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
2010-05-12 13:27:55 +00:00
#
# Script
# etc/bashrc
#
# Description
# Startup file for OpenFOAM
# Sourced from ~/.profile or ~/.bashrc
# Should be usable by any POSIX-compliant shell (eg, ksh)
#
#------------------------------------------------------------------------------
2013-12-11 16:09:41 +00:00
export WM_PROJECT = foam
export WM_FORK = extend
export WM_PROJECT_VERSION = 3.0
2010-05-12 13:27:55 +00:00
# helps to easily write #ifdefs to detect a dev-version
export FOAM_DEV = 1
2010-08-30 17:57:22 +00:00
###############################################################################
2010-05-17 13:51:21 +00:00
# USER EDITABLE PART
#
# either set $FOAM_INST_DIR before sourcing this file or set
2010-05-12 13:27:55 +00:00
# $foamInstall below to where OpenFOAM is installed
#
# Location of FOAM installation
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
foamInstall = $HOME /$WM_PROJECT
# foamInstall=~$WM_PROJECT
# foamInstall=/usr/local/$WM_PROJECT
# foamInstall=/opt/$WM_PROJECT
2010-11-29 16:14:51 +00:00
# foamInstall=/usr/lib
2010-05-17 13:51:21 +00:00
#
# END OF (NORMAL) USER EDITABLE PART
################################################################################
2010-05-12 13:27:55 +00:00
2010-05-17 13:51:21 +00:00
# note the location for later use (eg, in job scripts)
2010-05-12 13:27:55 +00:00
: ${ FOAM_INST_DIR : = $foamInstall } ; export FOAM_INST_DIR
2010-05-17 13:51:21 +00:00
# The old dirs to be cleaned from the various environment variables
# - remove anything under top-level directory.
# NB: the WM_PROJECT_INST_DIR might not be identical between versions
foamOldDirs = " $FOAM_INST_DIR $HOME / $WM_PROJECT / $USER "
if [ " $WM_PROJECT_INST_DIR " != " $FOAM_INST_DIR " ]
then
foamOldDirs = " $WM_PROJECT_INST_DIR $foamOldDirs "
fi
2010-05-12 13:27:55 +00:00
# Location of site/user files
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~
export WM_PROJECT_INST_DIR = $FOAM_INST_DIR
2013-12-11 16:09:41 +00:00
export WM_PROJECT_DIR = $WM_PROJECT_INST_DIR /$WM_PROJECT -$WM_FORK -$WM_PROJECT_VERSION
2013-09-16 14:07:47 +00:00
export WM_PROJECT_USER_DIR = $HOME /$WM_PROJECT /$USER -$WM_PROJECT_VERSION
# Location of third-party software
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#: ${WM_THIRD_PARTY_DIR=$WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION}; export WM_THIRD_PARTY_DIR
export WM_THIRD_PARTY_DIR = $WM_PROJECT_DIR /ThirdParty
2010-05-12 13:27:55 +00:00
2010-10-04 12:13:26 +00:00
# Source files, possibly with some verbosity
_foamSource( )
{
while [ $# -ge 1 ]
do
2013-08-30 07:42:26 +00:00
[ " $FOAM_VERBOSE " -a " $PS1 " ] && echo " Sourcing: $1 " 1>& 2
2010-10-04 12:13:26 +00:00
. $1
shift
done
}
# Add in preset user or site preferences:
2013-12-11 16:09:41 +00:00
if [ -e $WM_PROJECT_DIR /etc/prefs.sh ]
then
_foamSource $WM_PROJECT_DIR /etc/prefs.sh
else
[ " $FOAM_VERBOSE " -a " $PS1 " ] && echo "No prefs.sh found"
fi
2010-10-04 12:13:26 +00:00
# Evaluate command-line parameters
while [ $# -gt 0 ]
do
case " $1 " in
*= )
# name= -> unset name
eval " unset ${ 1 %= } "
; ;
*= *)
# name=value -> export name=value
eval " export $1 "
; ;
esac
shift
done
2010-05-12 13:27:55 +00:00
2010-05-17 13:51:21 +00:00
# Operating System/Platform
# ~~~~~~~~~~~~~~~~~~~~~~~~~
# WM_OSTYPE = POSIX | ????
: ${ WM_OSTYPE : =POSIX } ; export WM_OSTYPE
2010-05-12 13:27:55 +00:00
2013-11-04 14:10:04 +00:00
# Compiler: set to Gcc or Icc (for Intel's icc)
2010-05-12 13:27:55 +00:00
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
: ${ WM_COMPILER : =Gcc } ; export WM_COMPILER
2013-11-29 17:21:10 +00:00
#: ${WM_COMPILER:=Icc}; export WM_COMPILER
2010-05-12 13:27:55 +00:00
export WM_COMPILER_ARCH =
export WM_COMPILER_LIB_ARCH =
# Compilation options (architecture, precision, optimised, debug or profiling)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# WM_ARCH_OPTION = 32 | 64
: ${ WM_ARCH_OPTION : =64 } ; export WM_ARCH_OPTION
# WM_PRECISION_OPTION = DP | SP
: ${ WM_PRECISION_OPTION : =DP } ; export WM_PRECISION_OPTION
# WM_COMPILE_OPTION = Opt | Debug | Prof
: ${ WM_COMPILE_OPTION : =Opt } ; export WM_COMPILE_OPTION
2014-04-30 09:35:07 +00:00
# WM_MPLIB = SYSTEMOPENMPI | OPENMPI | MPICH | MPICH-GM | HPMPI | GAMMA | MPI | QSMPI | MVAPICH2
2010-05-12 13:27:55 +00:00
: ${ WM_MPLIB : =OPENMPI } ; export WM_MPLIB
2013-07-05 16:15:23 +00:00
# WM_NCOMPPROCS = <number of processes to use>
2013-07-11 17:47:31 +00:00
# Warning: Need to use a complete path for foamGetSystemInfo because the PATH
# environment variable is not properly initialized yet.
: ${ WM_NCOMPPROCS : = ` $WM_PROJECT_DIR /bin/foamGetSystemInfo -nbrCores` } ; export WM_NCOMPPROCS
2013-07-05 16:15:23 +00:00
2010-05-12 13:27:55 +00:00
# Run options (floating-point signal handling and memory initialisation)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export FOAM_SIGFPE =
# export FOAM_SETNAN=
# Detect system type and set environment variables appropriately
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export WM_ARCH = ` uname -s`
case $WM_ARCH in
Linux)
WM_ARCH = linux
# compiler specifics
case ` uname -m` in
i686)
; ;
x86_64)
case $WM_ARCH_OPTION in
32)
export WM_COMPILER_ARCH = '-64'
export WM_CFLAGS = '-m32 -fPIC'
export WM_CXXFLAGS = '-m32 -fPIC'
export WM_LDFLAGS = '-m32'
; ;
64)
WM_ARCH = linux64
export WM_COMPILER_LIB_ARCH = 64
export WM_CFLAGS = '-m64 -fPIC'
export WM_CXXFLAGS = '-m64 -fPIC'
export WM_LDFLAGS = '-m64'
; ;
*)
echo Unknown WM_ARCH_OPTION $WM_ARCH_OPTION , should be 32 or 64
; ;
esac
; ;
ia64)
WM_ARCH = linuxIA64
export WM_COMPILER = I64
; ;
mips64)
WM_ARCH = SiCortex64
export WM_COMPILER_LIB_ARCH = 64
export WM_CFLAGS = '-mabi=64 -fPIC'
export WM_CXXFLAGS = '-mabi=64 -fPIC'
export WM_LDFLAGS = '-mabi=64 -G0'
export WM_MPLIB = MPI
; ;
ppc64)
WM_ARCH = linuxPPC64
export WM_COMPILER_LIB_ARCH = 64
export WM_CFLAGS = '-m64 -fPIC'
export WM_CXXFLAGS = '-m64 -fPIC'
export WM_LDFLAGS = '-m64'
; ;
*)
echo Unknown processor type ` uname -m` for Linux
; ;
esac
; ;
Darwin)
2010-10-02 20:30:55 +00:00
# this makes certain things easier
export WM_ARCH_BASE = darwin
2010-05-12 13:27:55 +00:00
case ` uname -p` in
powerpc)
2013-07-18 01:43:15 +00:00
export WM_ARCH = darwinPpc
; ;
2010-05-12 13:27:55 +00:00
i386)
2013-07-18 01:43:15 +00:00
export WM_ARCH = darwinIntel
; ;
2010-05-12 13:27:55 +00:00
*)
2010-10-05 22:18:13 +00:00
echo "This seems to be neither an Intel-Mac nor a PPC-Mac please tell me the output of 'uname -p'. Bernhard."
2013-07-18 01:43:15 +00:00
export WM_ARCH = darwinUnknown
; ;
2010-05-12 13:27:55 +00:00
esac
2013-07-05 15:15:35 +00:00
2010-10-02 20:30:55 +00:00
case $WM_ARCH_OPTION in
32)
2013-07-18 01:43:15 +00:00
export WM_CFLAGS = '-m32 -fPIC'
export WM_CXXFLAGS = '-m32 -fPIC'
export WM_LDFLAGS = '-m32'
; ;
2010-10-02 20:30:55 +00:00
64)
export WM_ARCH = ${ WM_ARCH } 64
2013-07-18 01:43:15 +00:00
export WM_CFLAGS = '-m64 -fPIC'
export WM_CXXFLAGS = '-m64 -fPIC'
export WM_LDFLAGS = '-m64'
; ;
2010-10-02 20:30:55 +00:00
*)
2013-07-18 01:43:15 +00:00
echo Unknown WM_ARCH_OPTION $WM_ARCH_OPTION , should be 32 or 64
; ;
2010-10-02 20:30:55 +00:00
esac
2013-07-11 22:58:42 +00:00
which -s port >/dev/null
if [ $? -eq "0" -a -d '/opt/local/etc/macports' ]
2011-05-22 20:43:46 +00:00
then
2014-02-20 18:23:16 +00:00
if [ " $FOAM_VERBOSE " -a " $PS1 " ]
then
echo "Using Macports binaries"
fi
export WM_USE_MACPORT = 1
export WM_BASE_COMPILER = ` echo $WM_COMPILER | tr -d "[:digit:]" `
export WM_MACPORT_MPI_VERSION = ` echo $WM_COMPILER | tr "[:upper:]" "[:lower:]" `
export WM_MACPORT_VERSION = ` echo $WM_MACPORT_MPI_VERSION | tr -d "[:alpha:]" | sed -e "s/\(.\)\(.\)/\1\.\2/" `
if [ -z " $WM_CHOSEN_MAC_MPI " ]
then
if [ -e '/opt/local/bin/mpicc' ]
then
readlink /opt/local/bin/mpicc | grep openmpi >/dev/null
if [ $? -eq "0" ]
then
export WM_MPLIB = MACPORTOPENMPI
if [ " $FOAM_VERBOSE " -a " $PS1 " ]
then
echo "Using OpenMPI from MacPorts"
fi
else
readlink /opt/local/bin/mpicc | grep mpich >/dev/null
if [ $? -eq "0" ]
then
export WM_MPLIB = MACPORTMPICH
if [ " $FOAM_VERBOSE " -a " $PS1 " ]
then
echo "Using MPICH from MacPorts"
fi
else
echo "/opt/local/bin/mpicc neither OpenMPI nor MPICH. Confused. Defaulting to OPENMPI"
export WM_MPLIB = OPENMPI
fi
fi
fi
else
export WM_MPLIB = $WM_CHOSEN_MAC_MPI
if [ " $FOAM_VERBOSE " -a " $PS1 " ]
then
echo " User chose WM_CHOSEN_MAC_MPI= $WM_CHOSEN_MAC_MPI "
fi
fi
if [ " $WM_MPLIB " = = "MACPORTOPENMPI" ]
then
if [ ! -e " /opt/local/lib/openmpi- $WM_MACPORT_MPI_VERSION " ]
then
export WM_MACPORT_MPI_VERSION = mp
if [ ! -e " /opt/local/lib/openmpi- $WM_MACPORT_MPI_VERSION " ]
then
echo " Proper OpenMPI not installed. Either do 'port install openmpi- $WM_MACPORT_MPI_VERSION ' or 'port install openmpi-default' "
fi
fi
else
if [ " $WM_MPLIB " = = "MACPORTMPICH" ]
then
if [ ! -e " /opt/local/lib/mpich- $WM_MACPORT_MPI_VERSION " ]
then
echo " MPICH wants the same version as the used compiler. Do 'port install mpich- $WM_MACPORT_MPI_VERSION ' "
fi
fi
fi
if [ " $WM_COMPILER " != "Gcc" ]
then
if [ " $WM_BASE_COMPILER " = = "Gcc" ]
then
export WM_CC = " gcc-mp- $WM_MACPORT_VERSION "
export WM_CXX = " g++-mp- $WM_MACPORT_VERSION "
elif [ " $WM_BASE_COMPILER " = = "Clang" ]
then
export WM_CC = " clang-mp- $WM_MACPORT_VERSION "
export WM_CXX = " clang++-mp- $WM_MACPORT_VERSION "
elif [ " $WM_BASE_COMPILER " = = "Dragonegg" ]
then
export WM_CC = " dragonegg- $WM_MACPORT_VERSION -gcc "
export WM_CXX = " dragonegg- $WM_MACPORT_VERSION -g++ "
else
echo " Unknown base compiler $WM_BASE_COMPILER "
fi
ruleDirBase = $WM_PROJECT_DIR /wmake/rules/$WM_ARCH
ruleDirTarget = $ruleDirBase $WM_BASE_COMPILER
ruleDir = $ruleDirBase $WM_COMPILER
if [ ! -e $ruleDir ]
then
echo " Rule directory $ruleDir not existing. Linking to $ruleDirTarget "
ln -s $ruleDirTarget $ruleDir
fi
unset ruleDir ruleDirBase
fi
else
echo "Seems you're not using MacPorts. This is currently not supported/tested. Find this line in 'etc/config/settings.sh', modify it accordingly and send patches to Bernhard"
export WM_COMPILER =
export WM_MPLIB = OPENMPI
2013-07-11 22:58:42 +00:00
fi
2014-02-20 18:23:16 +00:00
# Make sure that binaries use the best features of the used OS-Version
# We need to get rid of the revision number from this string. eg turn "10.7.5" into "10.7"
# v=(`sw_vers -productVersion | sed 's/\./ /g'`)
# export MACOSX_DEPLOYMENT_TARGET="${v[1]}.${v[2]}"
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" `
2010-05-12 13:27:55 +00:00
; ;
SunOS)
WM_ARCH = SunOS64
export WM_COMPILER_LIB_ARCH = 64
export WM_CFLAGS = '-mabi=64 -fPIC'
export WM_CXXFLAGS = '-mabi=64 -fPIC'
export WM_LDFLAGS = '-mabi=64 -G0'
export WM_MPLIB = FJMPI
; ;
2013-07-18 01:43:15 +00:00
*) # an unsupported operating system
2010-05-12 13:27:55 +00:00
cat <<USAGE
Your " $WM_ARCH " operating system is not supported by this release
2010-11-18 19:31:44 +00:00
of OpenFOAM. For further assistance, please contact www.extend-project.de
2010-05-12 13:27:55 +00:00
USAGE
; ;
esac
2010-05-17 13:51:21 +00:00
# Clean standard environment variables (PATH, LD_LIBRARY_PATH, MANPATH)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-05-12 13:27:55 +00:00
cleanProg = $WM_PROJECT_DIR /bin/foamCleanPath
2010-05-17 13:51:21 +00:00
#- Clean PATH
cleanEnv = ` $cleanProg " $PATH " " $foamOldDirs " ` && PATH = " $cleanEnv "
2010-05-12 13:27:55 +00:00
#- Clean LD_LIBRARY_PATH
2010-05-17 13:51:21 +00:00
cleanEnv = ` $cleanProg " $LD_LIBRARY_PATH " " $foamOldDirs " ` && LD_LIBRARY_PATH = " $cleanEnv "
2010-05-12 13:27:55 +00:00
2010-10-02 20:30:55 +00:00
#- Clean DYLD_LIBRARY_PATH
2013-07-05 02:08:36 +00:00
if [ [ " $WM_ARCH_BASE " = = "darwin" ] ]
2010-10-02 20:30:55 +00:00
then
cleanEnv = ` $cleanProg " $DYLD_LIBRARY_PATH " " $foamOldDirs " ` && DYLD_LIBRARY_PATH = " $cleanEnv "
fi
2010-05-12 13:27:55 +00:00
#- Clean MANPATH
2010-05-17 13:51:21 +00:00
cleanEnv = ` $cleanProg " $MANPATH " " $foamCleanDirs " ` && MANPATH = " $cleanEnv "
2010-05-12 13:27:55 +00:00
export PATH LD_LIBRARY_PATH MANPATH
# Source project setup files
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamSource $WM_PROJECT_DIR /etc/settings.sh
2011-01-31 12:21:32 +00:00
_foamSource $WM_PROJECT_DIR /etc/aliases.sh
2010-05-12 13:27:55 +00:00
# Source user setup files for optional packages
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# _foamSource $WM_PROJECT_DIR/etc/apps/paraview/bashrc
2010-11-24 05:49:05 +00:00
# _foamSource $WM_PROJECT_DIR/etc/apps/paraview3/bashrc
2010-11-29 16:14:51 +00:00
# _foamSource $WM_PROJECT_DIR/etc/apps/ensight/bashrc
2010-05-12 13:27:55 +00:00
2010-05-17 13:51:21 +00:00
# Clean environment paths again. Only remove duplicates
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#- Clean PATH
cleanEnv = ` $cleanProg " $PATH " ` && PATH = " $cleanEnv "
2010-05-12 13:27:55 +00:00
#- Clean LD_LIBRARY_PATH
2010-05-17 13:51:21 +00:00
cleanEnv = ` $cleanProg " $LD_LIBRARY_PATH " ` && LD_LIBRARY_PATH = " $cleanEnv "
2010-05-12 13:27:55 +00:00
#- Clean MANPATH
2010-05-17 13:51:21 +00:00
cleanEnv = ` $cleanProg " $MANPATH " ` && MANPATH = " $cleanEnv : "
2010-05-12 13:27:55 +00:00
export PATH LD_LIBRARY_PATH MANPATH
#- Clean LD_PRELOAD
2010-05-17 13:51:21 +00:00
if [ " $LD_PRELOAD " != "" ]
then
cleanEnv = ` $cleanProg " $LD_PRELOAD " ` && LD_PRELOAD = " $cleanEnv "
2010-05-12 13:27:55 +00:00
export LD_PRELOAD
fi
2014-02-20 18:23:16 +00:00
if [ [ ` uname -s` = = "Darwin" ] ]
then
if [ [ ` ulimit -n` = = "unlimited" || ` ulimit -n` < 8192 ] ]
then
# higher limit needed for wmkdeps
ulimit -n 8192
fi
fi
2010-05-12 13:27:55 +00:00
# cleanup environment:
# ~~~~~~~~~~~~~~~~~~~~
2010-05-17 13:51:21 +00:00
unset cleanEnv cleanProg foamInstall foamOldDirs
2010-05-12 13:27:55 +00:00
unset _foamSource
# -----------------------------------------------------------------------------