#----------------------------------*-sh-*--------------------------------------
# =========                 |
# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
#  \\    /   O peration     |
#   \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
#    \\/     M anipulation  | Copyright (C) 2016-2018 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
#     This file is part of OpenFOAM, licensed under GNU General Public License
#     <http://www.gnu.org/licenses/>.
#
# File
#     etc/config.sh/aliases
#     - sourced by OpenFOAM-*/etc/bashrc (or from the user's ~/.bashrc)
#
# Description
#     Aliases for working with OpenFOAM.
#
#------------------------------------------------------------------------------

# Change compiled version aliases
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias wmSet='. $WM_PROJECT_DIR/etc/bashrc'
alias wmInt32='wmSet WM_LABEL_SIZE=32'
alias wmInt64='wmSet WM_LABEL_SIZE=64'
alias wmSP='wmSet WM_PRECISION_OPTION=SP'
alias wmDP='wmSet WM_PRECISION_OPTION=DP'

# Clear env
alias wmUnset='. $WM_PROJECT_DIR/etc/config.sh/unset'

# Toggle wmakeScheduler on/off
#  - also need to set WM_HOSTS
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias wmSchedOn='export WM_SCHEDULER=$WM_PROJECT_DIR/wmake/wmakeScheduler'
alias wmSchedOff='unset WM_SCHEDULER'

# Change directory aliases
# ~~~~~~~~~~~~~~~~~~~~~~~~
alias foam='cd $WM_PROJECT_DIR'

alias src='cd $FOAM_SRC'
alias lib='cd $FOAM_LIBBIN'
alias app='cd $FOAM_APP'
alias sol='cd $FOAM_SOLVERS'
alias util='cd $FOAM_UTILITIES'
alias tut='cd $FOAM_TUTORIALS'
alias run='cd $FOAM_RUN'

alias ufoam='cd $WM_PROJECT_USER_DIR'
alias uapp='cd $WM_PROJECT_USER_DIR/applications'
alias usol='cd $WM_PROJECT_USER_DIR/applications/solvers'
alias uutil='cd $WM_PROJECT_USER_DIR/applications/utilities'


# Refresh the environment
# ~~~~~~~~~~~~~~~~~~~~~~~
unset -f wmRefresh 2>/dev/null
wmRefresh()
{
    local projectDir="$WM_PROJECT_DIR"
    local foamSettings="$FOAM_SETTINGS"
    . "$projectDir/etc/config.sh/unset"  2>/dev/null
    . "$projectDir/etc/bashrc" "$foamSettings"
}


# Query the current OpenFOAM version
# or change to another version (if installed in a parallel directory)
unset -f foamVersion 2>/dev/null
foamVersion()
{
    if [ "$#" -gt 0 ] && [ -d "$WM_PROJECT_DIR" ]
    then
        local prefixDir="${WM_PROJECT_DIR%/*}"  # Parent directory
        local ver="$1"
        shift

        if [ -f "$prefixDir/OpenFOAM-$ver/etc/bashrc" ]
        then
            . "$WM_PROJECT_DIR/etc/config.sh/unset"   2>/dev/null
            . "$prefixDir/OpenFOAM-$ver/etc/bashrc"
            echo "Using OpenFOAM-$WM_PROJECT_VERSION" 1>&2
        else
            echo "No OpenFOAM-$ver available in $prefixDir" 1>&2
            echo "Using OpenFOAM-$WM_PROJECT_VERSION" 1>&2
            return 1
        fi
    else
        # Treat as query. Report current version
        echo "OpenFOAM-$WM_PROJECT_VERSION" 1>&2
    fi
}


# Change ParaView version
# ~~~~~~~~~~~~~~~~~~~~~~~
# pass in first value directly (eg, 5.4.1) and transform to
# ParaView_VERSION=...
# Any additional arguments must be fully specified and start with "ParaView".
# Eg,
# ParaView_QT=...
unset -f foamPV 2>/dev/null
foamPV()
{
    . "$WM_PROJECT_DIR/etc/config.sh/paraview" "${@+ParaView_VERSION=$@}"
    local pvdir="${ParaView_DIR##*/}"
    echo "${pvdir:-ParaView_DIR not set}" 1>&2
}


# OpenFOAM working directory with basic env replacements
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
unset -f foamPwd 2>/dev/null
foamPwd()
{
    if [ -d "$WM_PROJECT_DIR" ]
    then
        echo "$PWD" | sed \
        -e "s#^${FOAM_RUN}#\$FOAM_RUN#;" \
        -e "s#^${WM_PROJECT_DIR}#\$WM_PROJECT_DIR#;" \
        -e "s#^${WM_PROJECT_USER_DIR}#\$WM_PROJECT_USER_DIR#;" \
        -e "s#^${HOME}#\$HOME#";
    else
        echo "$PWD" | sed -e "s#^${HOME}#\$HOME#;"
    fi
}


#------------------------------------------------------------------------------
