*** Note that this commit depends on a corresponding change in
ThirdParty-dev. Ensure that both repositories are up to date before
re-building OpenFOAM.
New environment variables have been added to explicitly control the
installation type of the thirdparty decomposition libraries and of the
ParaView visualiation software. These are set in the etc/bashrc and can
be overridden in a ~/.OpenFOAM/<version>/prefs.sh file or similar.
The variables relating to the decomposition libraries are SCOTCH_TYPE,
METIS_TYPE, PARMETIS_TYPE and ZOLTAN_TYPE, and they can take values of
none, system, or ThirdParty. In the case of ThirdParty, a
<library>_VERSION variable can also be specified. If the version is not
specified then the configuration will search for a source directory, and
if multiple such directories are found then the one with the highest
version number will be used.
The variable relating to ParaView is ParaView_TYPE, and this can be
similarly be set to none, system, or ThirdParty, and ParaView_VERSION
can also be specified when the type is ThirdParty. If the version is not
specified then the installation with the highest version number will be
used.
An example ~/.OpenFOAM/dev/prefs.sh file, in which all decomposition
libraries are enabled, and the Scotch and ParaView versions are
explicitly set, is as follows:
export SCOTCH_TYPE=ThirdParty
export SCOTCH_VERSION=7.0.3
export METIS_TYPE=ThirdParty
export PARMETIS_TYPE=ThirdParty
export ZOLTAN_TYPE=ThirdParty
export ParaView_TYPE=ThirdParty
export ParaView_VERSION=5.11.2
*** Note that if version numbers are not set then the configuration will
search for a decomposition source directory, but it will search for a
ParaView installation directory. This is because decomposition libraries
are built as part of OpenFOAM's ./Allwmake, but ParaView is not. This
distinction remains. If a local compilation of ParaView is needed, then
'./makeParaView -version X.XX.X' should be called explicitly in the
third party directory prior to building OpenFOAM.
The name of the third party directory can now also be independently set.
This simplifies some packaging processes in that it permits third party
to be located within the OpenFOAM installation directory and therefore
bundled into the same binary package.
255 lines
7.9 KiB
Bash
255 lines
7.9 KiB
Bash
#----------------------------------*-sh-*--------------------------------------
|
|
# ========= |
|
|
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
# \\ / O peration | Website: https://openfoam.org
|
|
# \\ / A nd | Copyright (C) 2011-2024 OpenFOAM Foundation
|
|
# \\/ M anipulation |
|
|
#------------------------------------------------------------------------------
|
|
# License
|
|
# This file is part of OpenFOAM.
|
|
#
|
|
# OpenFOAM 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.
|
|
#
|
|
# OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
# File
|
|
# 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=OpenFOAM
|
|
export WM_THIRD_PARTY=ThirdParty
|
|
export WM_PROJECT_VERSION=dev
|
|
|
|
################################################################################
|
|
# USER EDITABLE PART: Changes made here may be lost with the next upgrade
|
|
#
|
|
# FOAM_INST_DIR is the location of the OpenFOAM installation which defaults to
|
|
# the directory two levels below this file, or $HOME/$WM_PROJECT if that
|
|
# directory cannot be determined.
|
|
#
|
|
[ "$BASH" ] && bashrcFile=${BASH_SOURCE}
|
|
[ "$ZSH_NAME" ] && bashrcFile=$0
|
|
if [ -n "$bashrcFile" ]
|
|
then
|
|
export FOAM_INST_DIR=$(cd $(dirname $bashrcFile)/../.. && pwd -P)
|
|
else
|
|
export FOAM_INST_DIR=$HOME/$WM_PROJECT
|
|
fi
|
|
unset bashrcFile
|
|
#
|
|
# Please set to the appropriate path if the above default is not correct. E.g.,
|
|
#
|
|
# export FOAM_INST_DIR=~$WM_PROJECT
|
|
# export FOAM_INST_DIR=/opt/$WM_PROJECT
|
|
# export FOAM_INST_DIR=/usr/local/$WM_PROJECT
|
|
#
|
|
# END OF (NORMAL) USER EDITABLE PART
|
|
################################################################################
|
|
|
|
# The default environment variables below can be overridden in a prefs.sh file
|
|
# located in ~/.OpenFOAM/$WM_PROJECT_VERSION, ~/.OpenFOAM,
|
|
# $FOAM_INST_DIR/site/$WM_PROJECT_VERSION or $FOAM_INST_DIR/site
|
|
|
|
#- Compiler location:
|
|
# WM_COMPILER_TYPE = system | ThirdParty (OpenFOAM)
|
|
export WM_COMPILER_TYPE=system
|
|
|
|
#- Compiler:
|
|
# WM_COMPILER = Gcc | Gcc48 ... Gcc62 | Clang | Icx
|
|
export WM_COMPILER=Gcc
|
|
unset WM_COMPILER_ARCH WM_COMPILER_LIB_ARCH
|
|
|
|
#- Memory addressing:
|
|
# On a 64bit OS this can be 32bit or 64bit
|
|
# On a 32bit OS addressing is 32bit and this option is not used
|
|
# WM_ARCH_OPTION = 32 | 64
|
|
export WM_ARCH_OPTION=64
|
|
|
|
#- Precision:
|
|
# WM_PRECISION_OPTION = SP | DP | LP
|
|
export WM_PRECISION_OPTION=DP
|
|
|
|
#- Label size:
|
|
# WM_LABEL_SIZE = 32 | 64
|
|
export WM_LABEL_SIZE=32
|
|
|
|
#- Optimised, debug, profiling:
|
|
# WM_COMPILE_OPTION = Opt | Debug | Prof
|
|
export WM_COMPILE_OPTION=Opt
|
|
|
|
#- MPI implementation:
|
|
# WM_MPLIB = SYSTEMOPENMPI | OPENMPI | SYSTEMMPI | MPICH | MPICH-GM | HPMPI
|
|
# | MPI | FJMPI | QSMPI | SGIMPI | INTELMPI
|
|
export WM_MPLIB=SYSTEMOPENMPI
|
|
|
|
#- Operating System:
|
|
# WM_OSTYPE = POSIX | ???
|
|
export WM_OSTYPE=POSIX
|
|
|
|
#- Decomposition libraries:
|
|
# <library>_TYPE = none | system | ThirdParty (OpenFOAM)
|
|
export SCOTCH_TYPE=ThirdParty
|
|
export METIS_TYPE=none
|
|
export PARMETIS_TYPE=none
|
|
export ZOLTAN_TYPE=none
|
|
|
|
# ParaView_TYPE = none | system | paraviewopenfoam | ThirdParty (OpenFOAM)
|
|
export ParaView_TYPE=ThirdParty
|
|
|
|
#- Floating-point signal handling:
|
|
# set or unset
|
|
export FOAM_SIGFPE=
|
|
|
|
#- Memory initialisation:
|
|
# set or unset
|
|
#export FOAM_SETNAN=
|
|
|
|
|
|
################################################################################
|
|
|
|
# The old dirs to be cleaned from the environment variables
|
|
foamOldDirs="$WM_PROJECT_DIR $WM_THIRD_PARTY_DIR \
|
|
$HOME/$WM_PROJECT/$USER $FOAM_USER_APPBIN $FOAM_USER_LIBBIN \
|
|
$WM_PROJECT_SITE $FOAM_SITE_APPBIN $FOAM_SITE_LIBBIN"
|
|
|
|
# Location of installation
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~
|
|
export WM_PROJECT_INST_DIR=$FOAM_INST_DIR
|
|
export WM_PROJECT_DIR=$WM_PROJECT_INST_DIR/$WM_PROJECT-$WM_PROJECT_VERSION
|
|
|
|
if [ -d "$WM_PROJECT_DIR" ]
|
|
then
|
|
WM_PROJECT_DIR_REAL=$(cd $WM_PROJECT_DIR && pwd -P)
|
|
if [ -d "$WM_PROJECT_DIR_REAL" -a -e "$WM_PROJECT_DIR_REAL/etc/bashrc" ]
|
|
then
|
|
export WM_PROJECT_DIR=$WM_PROJECT_DIR_REAL
|
|
fi
|
|
unset WM_PROJECT_DIR_REAL
|
|
fi
|
|
|
|
# Source initialisation functions
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
. $WM_PROJECT_DIR/etc/config.sh/functions
|
|
|
|
# Add in preset user or site preferences:
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile prefs.sh`
|
|
|
|
# Evaluate command-line parameters of the form "param=keyword" or unset
|
|
# parameters with "param="
|
|
export FOAM_SETTINGS="$@"
|
|
_foamParams $@
|
|
|
|
# Location of third-party software
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
if [ ${WM_THIRD_PARTY%%/*} = ${WM_PROJECT_DIR##*/} ]
|
|
then
|
|
export WM_THIRD_PARTY_DIR=$WM_PROJECT_INST_DIR/$WM_THIRD_PARTY
|
|
else
|
|
export WM_THIRD_PARTY_DIR=$WM_PROJECT_INST_DIR/$WM_THIRD_PARTY-$WM_PROJECT_VERSION
|
|
fi
|
|
|
|
if [ -d "$WM_THIRD_PARTY_DIR" ]
|
|
then
|
|
WM_THIRD_PARTY_DIR_REAL=$(cd $WM_THIRD_PARTY_DIR && pwd -P)
|
|
if [ -d "$WM_THIRD_PARTY_DIR_REAL" -a -e "$WM_THIRD_PARTY_DIR_REAL/etc/tools" ]
|
|
then
|
|
export WM_THIRD_PARTY_DIR=$WM_THIRD_PARTY_DIR_REAL
|
|
fi
|
|
unset WM_THIRD_PARTY_DIR_REAL
|
|
fi
|
|
|
|
# Location of site-specific templates etc
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
# unset is equivalent to $WM_PROJECT_INST_DIR/site
|
|
if [ -d "$WM_PROJECT_SITE" ]
|
|
then
|
|
export WM_PROJECT_SITE
|
|
else
|
|
unset WM_PROJECT_SITE
|
|
fi
|
|
|
|
# Location of user files
|
|
# ~~~~~~~~~~~~~~~~~~~~~~
|
|
export WM_PROJECT_USER_DIR=$HOME/$WM_PROJECT/$USER-$WM_PROJECT_VERSION
|
|
|
|
# Clean standard environment variables (PATH, LD_LIBRARY_PATH, MANPATH)
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
foamClean=$WM_PROJECT_DIR/bin/foamCleanPath
|
|
|
|
#- Clean PATH
|
|
cleaned=`$foamClean "$PATH" "$foamOldDirs"` && PATH="$cleaned"
|
|
|
|
#- Clean LD_LIBRARY_PATH
|
|
cleaned=`$foamClean "$LD_LIBRARY_PATH" "$foamOldDirs"` \
|
|
&& LD_LIBRARY_PATH="$cleaned"
|
|
|
|
#- Clean MANPATH
|
|
cleaned=`$foamClean "$MANPATH" "$foamOldDirs"` && MANPATH="$cleaned"
|
|
|
|
export PATH LD_LIBRARY_PATH MANPATH
|
|
|
|
|
|
# Source project setup files
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
_foamSource $WM_PROJECT_DIR/etc/config.sh/settings
|
|
_foamSource $WM_PROJECT_DIR/etc/config.sh/aliases
|
|
|
|
|
|
# Source user setup files for optional packages
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/mpi`
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/paraview`
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/ensight`
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/gperftools`
|
|
|
|
|
|
# Clean environment paths again. Only remove duplicates
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
#- Clean PATH
|
|
cleaned=`$foamClean "$PATH"` && PATH="$cleaned"
|
|
|
|
#- Clean LD_LIBRARY_PATH
|
|
cleaned=`$foamClean "$LD_LIBRARY_PATH"` && LD_LIBRARY_PATH="$cleaned"
|
|
|
|
#- Clean MANPATH (trailing ':' to find system pages)
|
|
cleaned=`$foamClean "$MANPATH"`: && MANPATH="$cleaned"
|
|
|
|
export PATH LD_LIBRARY_PATH MANPATH
|
|
|
|
#- Clean LD_PRELOAD
|
|
if [ -n "$LD_PRELOAD" ]
|
|
then
|
|
cleaned=`$foamClean "$LD_PRELOAD"` && LD_PRELOAD="$cleaned"
|
|
export LD_PRELOAD
|
|
fi
|
|
|
|
|
|
# Cleanup environment:
|
|
# ~~~~~~~~~~~~~~~~~~~~
|
|
unset cleaned foamClean foamOldDirs
|
|
|
|
# Unload initialisation functions:
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
. $WM_PROJECT_DIR/etc/config.sh/functions
|
|
|
|
# Source the bash completion file:
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
[ "$BASH" ] && . $WM_PROJECT_DIR/etc/config.sh/bash_completion
|
|
|
|
#------------------------------------------------------------------------------
|