#!/bin/bash #----------------------------------*-sh-*-------------------------------------- # ========= | # \\ / F ield | foam-extend: Open Source CFD # \\ / O peration | # \\ / A nd | For copyright notice see file Copyright # \\/ M anipulation | #------------------------------------------------------------------------------ # License # This file is part of foam-extend. # # foam-extend is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # 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. # # You should have received a copy of the GNU General Public License # along with foam-extend. If not, see . # # Script # etc/bashrc # # Description # Startup file for OpenFOAM # Sourced from ~/.profile or ~/.bashrc # Should be usable by any POSIX-compliant shell (eg, ksh) # #------------------------------------------------------------------------------ export WM_PROJECT=foam export WM_FORK=extend export WM_PROJECT_VERSION=3.0 # helps to easily write #ifdefs to detect a dev-version export FOAM_DEV=1 ############################################################################### # USER EDITABLE PART # # either set $FOAM_INST_DIR before sourcing this file or set # $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 # foamInstall=/usr/lib # # END OF (NORMAL) USER EDITABLE PART ################################################################################ # note the location for later use (eg, in job scripts) : ${FOAM_INST_DIR:=$foamInstall}; export FOAM_INST_DIR # 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 # Location of site/user files # ~~~~~~~~~~~~~~~~~~~~~~~~~~~ export WM_PROJECT_INST_DIR=$FOAM_INST_DIR export WM_PROJECT_DIR=$WM_PROJECT_INST_DIR/$WM_PROJECT-$WM_FORK-$WM_PROJECT_VERSION 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 # Source files, possibly with some verbosity _foamSource() { while [ $# -ge 1 ] do [ "$FOAM_VERBOSE" -a "$PS1" ] && echo "Sourcing: $1" 1>&2 . $1 shift done } # Add in preset user or site preferences: 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 # 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 # Operating System/Platform # ~~~~~~~~~~~~~~~~~~~~~~~~~ # WM_OSTYPE = POSIX | ???? : ${WM_OSTYPE:=POSIX}; export WM_OSTYPE # Compiler: set to Gcc or Icc (for Intel's icc) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ : ${WM_COMPILER:=Gcc}; export WM_COMPILER #: ${WM_COMPILER:=Icc}; export WM_COMPILER 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 # WM_MPLIB = SYSTEMOPENMPI | OPENMPI | MPICH | MPICH-GM | HPMPI | GAMMA | MPI | QSMPI | MVAPICH2 : ${WM_MPLIB:=OPENMPI}; export WM_MPLIB # WM_NCOMPPROCS = # 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 # 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) # this makes certain things easier export WM_ARCH_BASE=darwin # Remove limit of open files ulimit -n 1000 case `uname -p` in powerpc) export WM_ARCH=darwinPpc ;; i386) export WM_ARCH=darwinIntel ;; *) echo "This seems to be neither an Intel-Mac nor a PPC-Mac please tell me the output of 'uname -p'. Bernhard." export WM_ARCH=darwinUnknown ;; esac case $WM_ARCH_OPTION in 32) export WM_CFLAGS='-m32 -fPIC' export WM_CXXFLAGS='-m32 -fPIC' export WM_LDFLAGS='-m32' ;; 64) export WM_ARCH=${WM_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 # 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" 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"` which -s port >/dev/null if [ $? -eq "0" -a -d '/opt/local/etc/macports' ] then if [ "$FOAM_VERBOSE" -a "$PS1" ] then echo "Using Macports binaries" fi export WM_USE_MACPORT=1 if [ -e '/opt/local/bin/openmpicc' ] then export WM_MPLIB=MACPORTOPENMPI else if [ -z "$WM_CHOSEN_MAC_MPI" ] then echo "WM_CHOSEN_MAC_MPI unset. Using OPENMPI" export WM_MPLIB=OPENMPI else export WM_MPLIB=$WM_CHOSEN_MAC_MPI fi fi if [ "$compilerInstall" == "System" ] then # Use Mac-Ports-Compiler instead of Apple-gcc-4.2 case $WM_COMPILER in Gcc42) export WM_MACPORT_VERSION=4.2 export WM_BASE_COMPILER=Gcc ;; Gcc43) export WM_MACPORT_VERSION=4.3 export WM_BASE_COMPILER=Gcc ;; Gcc44) export WM_MACPORT_VERSION=4.4 export WM_BASE_COMPILER=Gcc ;; Gcc45) export WM_MACPORT_VERSION=4.5 export WM_BASE_COMPILER=Gcc ;; Gcc46) export WM_MACPORT_VERSION=4.6 export WM_BASE_COMPILER=Gcc ;; Gcc47) export WM_MACPORT_VERSION=4.7 export WM_BASE_COMPILER=Gcc ;; Gcc48) export WM_MACPORT_VERSION=4.8 export WM_BASE_COMPILER=Gcc ;; Clang32) export WM_BASE_COMPILER=Clang export WM_MACPORT_VERSION=3.2 ;; Clang33) export WM_BASE_COMPILER=Clang export WM_MACPORT_VERSION=3.3 ;; Clang34) export WM_BASE_COMPILER=Clang export WM_MACPORT_VERSION=3.4 ;; Gcc) ;; *) echo "Unsupported MacPorts-Compiler $WM_COMPILER" ;; esac if [ "$WM_MACPORT_VERSION" != "" ] then if [ "$WM_BASE_COMPILER" == "Gcc" ] then export WM_CC="gcc-mp-$WM_MACPORT_VERSION" export WM_CXX="g++-mp-$WM_MACPORT_VERSION" export WM_FC="gfortran-mp-$WM_MACPORT_VERSION" else export WM_CC="clang-mp-$WM_MACPORT_VERSION" export WM_CXX="clang++-mp-$WM_MACPORT_VERSION" # hardcoded. Needed for ThirdParty export WM_FC="gfortran-mp-4.5" fi ruleDirBase=$WM_PROJECT_DIR/wmake/rules/$WM_ARCH$WM_BASE_COMPILER ruleDir=$WM_PROJECT_DIR/wmake/rules/$WM_ARCH$WM_COMPILER if [ ! -e $ruleDir ] then echo "Rule directory $ruleDir not existing. Linking to $ruleDirBase" ln -s $ruleDirBase $ruleDir fi unset ruleDir ruleDirBase fi fi fi ;; 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 ;; *) # an unsupported operating system cat <