Skip to content
Snippets Groups Projects
foamExec 3.28 KiB
Newer Older
  • Learn to ignore specific revisions
  • #!/bin/sh
    #------------------------------------------------------------------------------
    # =========                 |
    
    # \\      /  F ield         | foam-extend: Open Source CFD
    
    #  \\    /   O peration     | Version:     4.1
    
    Henrik's avatar
    Henrik committed
    #   \\  /    A nd           | Web:         http://www.foam-extend.org
    #    \\/     M anipulation  | For copyright notice see file Copyright
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
    #------------------------------------------------------------------------------
    
    #     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
    #     foamExec
    #
    # Description
    #     Usage: foamExec [-v foamVersion] <foamCommand> ...
    #
    #     Runs the <foamVersion> version of executable <foamCommand>
    #     with the rest of the arguments.
    #
    #     Can also be used for parallel runs e.g.
    #     mpirun -np <nProcs> \
    #         foamExec -v <foamVersion> <foamCommand> ... -parallel
    #
    #------------------------------------------------------------------------------
    Script=${0##*/}
    
    usage() {
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
        while [ "$#" -ge 1 ]; do echo "$1"; shift; done
        cat<<USAGE
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
    usage: ${0##*/} [OPTION] <application> ...
    
      -v ver        specify foam version
    
    * run a particular foam version of <application>
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
        exit 1
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
    
    
    # This script should exist in <foamInstall>/foam-extend-<VERSION>/bin/
    
    # extract the <foamInstall> and <version> elements
    # using a function preserves the command args
    getDefaults() {
    
        set -- $(echo $0 | sed -e 's@/foam-extend-\([^/]*\)/bin/[^/]*$@ \1@')
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
        foamInstall=$1
        version=$2
    
    }
    
    getDefaults
    
    # parse options
    while [ "$#" -gt 0 ]
    do
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
        case "$1" in
        -h | -help)
            usage
            ;;
        -v)
            shift
            version=$1
            shift
            ;;
        --)
            shift
            break
            ;;
        -*)
            usage "invalid option '$1'"
            ;;
        *)
            break
            ;;
        esac
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
    if [ "$#" -lt 1 ]
    then
        usage "no application specified"
    
    # Check user-specific foam-extend bashrc file
    foamDotFile="$HOME/.foam-extend-$version/bashrc"
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
    if [ -f $foamDotFile ]
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
        . $foamDotFile
        foamDotFile=okay
    else
        # Use the FOAM_INST_DIR variable for locating the installed version
        for FOAM_INST_DIR in $foamInstall $WM_PROJECT_INST_DIR
        do
    
            foamDotFile="$FOAM_INST_DIR/foam-extend-$version/etc/bashrc"
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
            if [ -f $foamDotFile ]
            then
                . $foamDotFile
                foamDotFile=okay
                break
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
        done
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
    
    if [ "$foamDotFile" != okay ]
    
        echo "Error : bashrc file could not be found for foam-extend-$version" 1>&2
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
        exit 1
    
    fi
    
    # Pass on the rest of the arguments
    exec $*
    
    #------------------------------------------------------------------------------