Skip to content
Snippets Groups Projects
bashrc 18.2 KiB
Newer Older
  • Learn to ignore specific revisions
  • Sergey Lesnik's avatar
    Sergey Lesnik committed
    #!/bin/bash
    #----------------------------------*-sh-*--------------------------------------
    # =========                 |
    # \\      /  F ield         | foam-extend: Open Source CFD
    #  \\    /   O peration     | Version:     4.1
    #   \\  /    A nd           | Web:         http://www.foam-extend.org
    #    \\/     M anipulation  | For copyright notice see file Copyright
    #------------------------------------------------------------------------------
    # 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 <http://www.gnu.org/licenses/>.
    #
    # Script
    #     etc/bashrc
    #
    # Description
    #     Startup file for FOAM
    #     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=4.1r
    
    # helps to easily write #ifdefs to detect a dev-version
    export FOAM_DEV=1
    
    
    #------------------------------------------------------------------------------
    # (advanced / legacy)
    
    # [projectDir] - directory containing this OpenFOAM version.
    # \- When this file is located as $WM_PROJECT_DIR/etc/bashrc, the next lines
    #    should work when sourced by BASH or ZSH shells. If this however fails,
    #    set one of the fallback values to an appropriate path.
    
    #    This can be removed if an absolute path is provided for WM_PROJECT_DIR
    #    later on in this file
    # --
    projectDir="${BASH_SOURCE:-${ZSH_NAME:+$0}}";
    [ -n "$projectDir" ] && projectDir="$(\cd $(dirname $projectDir)/.. && \pwd -L)" ||\
    projectDir="$HOME/openfoam/foam-extend-$WM_PROJECT_VERSION"
    
    Sergey Lesnik's avatar
    Sergey Lesnik committed
    ################################################################################
    
    # Set $USER if it has not been set (eg. on Windows/MSYS systems)
    
    Sergey Lesnik's avatar
    Sergey Lesnik committed
    then
    
        export USER="$(whoami)"
    
    Sergey Lesnik's avatar
    Sergey Lesnik committed
    fi
    
    # note the location for later use (eg, in job scripts)
    
    : ${FOAM_INST_DIR:=$(dirname $projectDir)}; export FOAM_INST_DIR
    
    Sergey Lesnik's avatar
    Sergey Lesnik committed
    
    # 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="$projectDir"
    
    Sergey Lesnik's avatar
    Sergey Lesnik committed
    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
    # Use external ThirdParty directory, e.g., from the standard installation of foam-extend.
    
    #export WM_THIRD_PARTY_DIR=$HOME/$WM_PROJECT/$WM_PROJECT-$WM_FORK-4.1/ThirdParty
    export WM_THIRD_PARTY_DIR=$WM_PROJECT_DIR/ThirdParty
    
    Sergey Lesnik's avatar
    Sergey Lesnik committed
    
    # Enabling the usage of third-party software
    # This can be overriden in prefs.sh
    # Use 'set' and 'unset' to adjust for your environent
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # For AllMake.stage1
    #export WM_THIRD_PARTY_USE_BISON_27=1
    
    #export WM_THIRD_PARTY_USE_CMAKE_3114=1
    
    Sergey Lesnik's avatar
    Sergey Lesnik committed
    
    #
    # For AllMake.stage2
    #export WM_THIRD_PARTY_USE_OPENMPI_188=1
    #export WM_THIRD_PARTY_USE_OPENMPI_400=1
    
    #
    # For AllMake.stage3
    
    #export WM_THIRD_PARTY_USE_PARMGRIDGEN_10=1
    
    Sergey Lesnik's avatar
    Sergey Lesnik committed
    #export WM_THIRD_PARTY_USE_LIBCCMIO_261=1
    
    #export WM_THIRD_PARTY_USE_MESQUITE_230=1
    
    #export WM_THIRD_PARTY_USE_PYFOAM_069=1
    #export WM_THIRD_PARTY_USE_HWLOC_201=1
    
    export WM_THIRD_PARTY_USE_ADIOS2_291=1
    
    #export WM_THIRD_PARTY_USE_PETSC=1
    
    Sergey Lesnik's avatar
    Sergey Lesnik committed
    #
    # For AllMake.stage4
    #export WM_THIRD_PARTY_USE_QT_5111=1
    #export WM_THIRD_PARTY_USE_PARAVIEW_552=1
    
    
    # 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 [ "$WM_OSTYPE" == "MSWindows" ]
    then
        _foamSource $WM_PROJECT_DIR/etc/prefs.sh.mingw
    elif [ -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, Icc (for Intel's icc) or Clang
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    : ${WM_COMPILER:=Gcc}; export WM_COMPILER
    #: ${WM_COMPILER:=Icc}; export WM_COMPILER
    #: ${WM_COMPILER:=Clang}; export WM_COMPILER
    #: ${WM_COMPILER:=Arm}; 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 = LDP | DP | SP
    : ${WM_PRECISION_OPTION:=DP}; export WM_PRECISION_OPTION
    
    #    WM_LABEL_SIZE = 32 | 64
    
    : ${WM_LABEL_SIZE:=64}; export WM_LABEL_SIZE
    
    Sergey Lesnik's avatar
    Sergey Lesnik committed
    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 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611
    
    # 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:=SYSTEMOPENMPI}; export WM_MPLIB
    
    # WM_NCOMPPROCS = <number of processes to use>
    # 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
    MINGW32_NT-6.1)
        WM_ARCH=mingw
        export WM_ARCH_BASE=mingw
        export WM_COMPILER_LIB_ARCH=64
        export WM_CFLAGS='-m64 -fPIC'
        export WM_CXXFLAGS='-m64 -fPIC'
        export WM_LDFLAGS='-m64'
        ;;
    
    MINGW32_NT-6.2)
        WM_ARCH=mingw
        export WM_ARCH_BASE=mingw
        export WM_COMPILER_LIB_ARCH=64
        export WM_CFLAGS='-m64 -fPIC'
        export WM_CXXFLAGS='-m64 -fPIC'
        export WM_LDFLAGS='-m64'
        ;;
    
    MINGW64_NT-6.1)
        WM_ARCH=mingw
        export WM_ARCH_BASE=mingw
        export WM_COMPILER_LIB_ARCH=64
        export WM_CFLAGS='-m64 -fPIC'
        export WM_CXXFLAGS='-m64 -fPIC'
        export WM_LDFLAGS='-m64'
        ;;
    
    MINGW64_NT-6.2)
        WM_ARCH=mingw
        export WM_ARCH_BASE=mingw
        export WM_COMPILER_LIB_ARCH=64
        export WM_CFLAGS='-m64 -fPIC'
        export WM_CXXFLAGS='-m64 -fPIC'
        export WM_LDFLAGS='-m64'
        ;;
    
    MINGW64_NT-6.1)
        WM_ARCH=mingw
        export WM_ARCH_BASE=mingw
        export WM_COMPILER_LIB_ARCH=64
        export WM_CFLAGS='-m64 -fPIC'
        export WM_CXXFLAGS='-m64 -fPIC'
        export WM_LDFLAGS='-m64'
        ;;
    
    MINGW64_NT-6.2)
        WM_ARCH=mingw
        export WM_ARCH_BASE=mingw
        export WM_COMPILER_LIB_ARCH=64
        export WM_CFLAGS='-m64 -fPIC'
        export WM_CXXFLAGS='-m64 -fPIC'
        export WM_LDFLAGS='-m64'
        ;;
    
    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'
            ;;
    
        armv7l)
            WM_ARCH=linuxARM7
            export WM_COMPILER_LIB_ARCH=32
            export WM_CC='gcc'
            export WM_CXX='g++'
            export WM_CFLAGS='-fPIC -mfloat-abi=hard'
            export WM_CXXFLAGS='-fPIC -mfloat-abi=hard'
            export WM_LDFLAGS='-mfloat-abi=hard'
            ;;
    
        aarch64)
            # https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html
            # This command will provide more details for your specific processor
            # gcc -c -Q -march=native -mtune=native --help=target
            WM_ARCH=linuxARM8
            if [ "$WM_COMPILER" = "Gcc" ]
            then
                # https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html
                # This command will provide more details for your specific processor
                # gcc -c -Q -march=native -mtune=native --help=target
                export WM_COMPILER_LIB_ARCH=64
                export WM_CC='gcc'
                export WM_CXX='g++'
                export WM_CFLAGS='-fPIC -march=native -mtune=native'
                export WM_CXXFLAGS='-fPIC -march=native -mtune=native'
                export WM_LDFLAGS=''
            elif [ "$WM_COMPILER" = "Arm" ]
            then
                export WM_LDFLAGS=''
                export WM_COMPILER_LIB_ARCH=64
                export WM_CC='armclang'
                export WM_CXX='armclang++'
                export WM_CFLAGS='-fPIC'
                export WM_CXXFLAGS='-fPIC'
            else
                echo "Unknown WM_COMPILER" $WM_COMPILER
            fi
            ;;
    
        *)
            echo Unknown processor type `uname -m` for Linux
            ;;
        esac
        ;;
    
    Darwin)
        # this makes certain things easier
        export WM_ARCH_BASE=darwin
    
        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
    
        # Using MacPorts
        : ${MACOSX_MACPORTS_ROOT:='/opt/local/etc/macports'}; export MACOSX_MACPORTS_ROOT
        which -s port >/dev/null
        if [ $? -eq "0" ]  && [ -d "$MACOSX_MACPORTS_ROOT" ]
        then
        if [ "$FOAM_VERBOSE" -a "$PS1" ]
        then
            echo "Using Macports binaries"
        fi
    
        export WM_USE_MACPORT=0
        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"
                export WM_FC="gfortran-mp-$WM_MACPORT_VERSION"
            elif [ "$WM_BASE_COMPILER" == "Clang" ]
            then
                if [ "$WM_USE_MACPORT" == "1" ]
                then
                    export WM_CC="clang-mp-$WM_MACPORT_VERSION"
                    export WM_CXX="clang++-mp-$WM_MACPORT_VERSION"
                else
                    export WM_CC="clang"
                    export WM_CXX="clang++"
                fi
            # Seems like there is no Fortran-frontend for LLVM at thistime
            elif [ "$WM_BASE_COMPILER" == "Dragonegg" ]
            then
                export WM_CC="dragonegg-$WM_MACPORT_VERSION-gcc"
                export WM_CXX="dragonegg-$WM_MACPORT_VERSION-g++"
                export WM_CXX="dragonegg-$WM_MACPORT_VERSION-gfortran"
            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 "Warning: You are not using MacPorts. Make sure your compilation and MPI environment is correctly initialized"
        fi
    
        # 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"`
        ;;
    
    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 <<USAGE
    
        Your "$WM_ARCH" operating system is not supported by this release
        of foam-extend. For further assistance, please contact www.foam-extend.org
    
    USAGE
        ;;
    esac
    
    
    # Clean standard environment variables (PATH, LD_LIBRARY_PATH, MANPATH)
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cleanProg=$WM_PROJECT_DIR/bin/foamCleanPath
    
    #- Clean PATH
    cleanEnv=`$cleanProg "$PATH" "$foamOldDirs"` && PATH="$cleanEnv"
    
    #- Clean LD_LIBRARY_PATH
    cleanEnv=`$cleanProg "$LD_LIBRARY_PATH" "$foamOldDirs"` && LD_LIBRARY_PATH="$cleanEnv"
    
    #- Clean DYLD_LIBRARY_PATH
    if [[ "$WM_ARCH_BASE" == "darwin" ]]
    then
        cleanEnv=`$cleanProg "$DYLD_LIBRARY_PATH" "$foamOldDirs"` && DYLD_LIBRARY_PATH="$cleanEnv"
    fi
    
    #- Clean MANPATH
    cleanEnv=`$cleanProg "$MANPATH" "$foamCleanDirs"` && MANPATH="$cleanEnv"
    
    export PATH LD_LIBRARY_PATH MANPATH
    
    # Source project setup files
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    _foamSource $WM_PROJECT_DIR/etc/settings.sh
    _foamSource $WM_PROJECT_DIR/etc/aliases.sh
    
    
    # Source user setup files for optional packages
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    # _foamSource $WM_PROJECT_DIR/etc/apps/paraview/bashrc
    # _foamSource $WM_PROJECT_DIR/etc/apps/paraview3/bashrc
    # _foamSource $WM_PROJECT_DIR/etc/apps/ensight/bashrc
    
    
    # Clean environment paths again. Only remove duplicates
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    #- Clean PATH
    cleanEnv=`$cleanProg "$PATH"` && PATH="$cleanEnv"
    
    #- Clean LD_LIBRARY_PATH
    cleanEnv=`$cleanProg "$LD_LIBRARY_PATH"` && LD_LIBRARY_PATH="$cleanEnv"
    
    #- Clean MANPATH
    cleanEnv=`$cleanProg "$MANPATH"` && MANPATH="$cleanEnv:"
    
    export PATH LD_LIBRARY_PATH MANPATH
    
    #- Clean LD_PRELOAD
    if [ "$LD_PRELOAD" != "" ]
    then
        cleanEnv=`$cleanProg "$LD_PRELOAD"` && LD_PRELOAD="$cleanEnv"
        export LD_PRELOAD
    fi
    
    # temporarily disabled.  HJ, 13/Jun/2014
    # if [[ `uname -s` == "Darwin" ]]
    # then
    #     if [[ `ulimit -n` == "unlimited" || `ulimit -n` < 8192 ]]
    #     then
    #     # higher limit needed for wmkdeps
    #     ulimit -n 8192
    #     fi
    # fi
    
    # cleanup environment:
    # ~~~~~~~~~~~~~~~~~~~~
    
    unset cleanEnv cleanProg projectDir foamInstall foamOldDirs
    
    Sergey Lesnik's avatar
    Sergey Lesnik committed
    unset _foamSource
    
    # -----------------------------------------------------------------------------