- permit SYSTEMMPI user adjustments via etc/config.{csh,sh}/mpi-system This can be a convenient place for setting up SYSTEMMPI for OpenFOAM without adjusting bashrc, prefs.sh ... - add a USERMPI type. This represents any generic mpi implementation. The user is responsible for supplying an appropriate wmake/rules/General/mplibUSERMPI file and managing all settings. This type of setup can be useful in combination with specific build systems (SPACK, EASYBUILD, etc) or module systems for which the MPI variant is part of the installed configuration.
263 lines
8.2 KiB
Bash
263 lines
8.2 KiB
Bash
#----------------------------------*-sh-*--------------------------------------
|
|
# ========= |
|
|
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
# \\ / O peration |
|
|
# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
|
# \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd.
|
|
#------------------------------------------------------------------------------
|
|
# 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/cshrc
|
|
#
|
|
# Description
|
|
# Startup file for OpenFOAM
|
|
# Sourced from ~/.login or ~/.cshrc
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
|
|
setenv WM_PROJECT OpenFOAM
|
|
setenv WM_PROJECT_VERSION plus
|
|
|
|
################################################################################
|
|
# USER EDITABLE PART: Changes made here may be lost with the next upgrade
|
|
#
|
|
# FOAM_INST_DIR = the parent directory containing the OpenFOAM installation(s).
|
|
# - If the OpenFOAM installation has this OpenFOAM-<VERSION>/etc/cshrc, the
|
|
# next lines should work when sourced by a CSH or TCSH shell.
|
|
# - If this does not produce the desired result, please set one of the fallback
|
|
# values to an appropriate path.
|
|
#
|
|
setenv FOAM_INST_DIR `/usr/bin/lsof +p $$ |& \
|
|
sed -n -e 's@[^/]*@@' -e 's@/'$WM_PROJECT'[^/]*/etc/cshrc@@p'`
|
|
# setenv FOAM_INST_DIR $HOME/$WM_PROJECT
|
|
# setenv FOAM_INST_DIR /opt/$WM_PROJECT
|
|
# setenv FOAM_INST_DIR /usr/local/$WM_PROJECT
|
|
#
|
|
# END OF (NORMAL) USER EDITABLE PART
|
|
################################################################################
|
|
|
|
# The default environment variables below can be overridden in a prefs.csh 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
|
|
setenv WM_COMPILER_TYPE system
|
|
|
|
#- Compiler:
|
|
# WM_COMPILER = Gcc | Gcc4[8-9] | Gcc5[1-4] | Gcc6[1-3] | GccKNL
|
|
# | Clang | Clang3[8-9] | Icc | IccKNL
|
|
setenv WM_COMPILER Gcc
|
|
setenv WM_COMPILER_ARCH # defined but empty
|
|
unsetenv WM_COMPILER_LIB_ARCH
|
|
|
|
#- Memory addressing:
|
|
# WM_ARCH_OPTION = 32 | 64
|
|
# - on a 64-bit OS this can be 32 or 64
|
|
# - on a 32-bit OS addressing is 32-bit and this option is not used
|
|
setenv WM_ARCH_OPTION 64
|
|
|
|
#- Precision:
|
|
# WM_PRECISION_OPTION = DP | SP
|
|
setenv WM_PRECISION_OPTION DP
|
|
|
|
#- Label size:
|
|
# WM_LABEL_SIZE = 32 | 64
|
|
setenv WM_LABEL_SIZE 32
|
|
|
|
#- Optimised, debug, profiling:
|
|
# WM_COMPILE_OPTION = Opt | Debug | Prof
|
|
setenv WM_COMPILE_OPTION Opt
|
|
|
|
#- MPI implementation:
|
|
# WM_MPLIB = SYSTEMOPENMPI | OPENMPI | SYSTEMMPI | MPICH | MPICH-GM | HPMPI
|
|
# | MPI | FJMPI | QSMPI | SGIMPI | INTELMPI | USERMPI
|
|
setenv WM_MPLIB SYSTEMOPENMPI
|
|
|
|
#- Operating System:
|
|
# WM_OSTYPE = POSIX
|
|
#setenv WM_OSTYPE POSIX
|
|
|
|
#- Floating-point signal handling:
|
|
# set or unset
|
|
setenv FOAM_SIGFPE
|
|
|
|
#- memory initialisation:
|
|
# set or unset
|
|
#setenv FOAM_SETNAN
|
|
|
|
|
|
################################################################################
|
|
|
|
# The old dirs to be cleaned from the environment variables
|
|
set foamOldDirs=
|
|
if ( $?WM_PROJECT_DIR ) then
|
|
set foamOldDirs="$foamOldDirs $WM_PROJECT_DIR"
|
|
endif
|
|
if ( $?WM_THIRD_PARTY_DIR ) then
|
|
set foamOldDirs="$foamOldDirs $WM_THIRD_PARTY_DIR"
|
|
endif
|
|
if ( $?WM_PROJECT ) then
|
|
set foamOldDirs="$foamOldDirs $HOME/$WM_PROJECT/$LOGNAME"
|
|
endif
|
|
if ( $?FOAM_SITE_APPBIN ) then
|
|
set foamOldDirs="$foamOldDirs $FOAM_SITE_APPBIN"
|
|
endif
|
|
if ( $?FOAM_SITE_LIBBIN ) then
|
|
set foamOldDirs="$foamOldDirs $FOAM_SITE_LIBBIN"
|
|
endif
|
|
|
|
# Location of installation
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~
|
|
setenv WM_PROJECT_INST_DIR $FOAM_INST_DIR
|
|
setenv WM_PROJECT_DIR $WM_PROJECT_INST_DIR/$WM_PROJECT-$WM_PROJECT_VERSION
|
|
|
|
# Location of third-party software
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
setenv WM_THIRD_PARTY_DIR $WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION
|
|
|
|
# Location of site-specific templates etc
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
# unset is equivalent to $WM_PROJECT_INST_DIR/site
|
|
if ( $?WM_PROJECT_SITE ) then
|
|
set foamOldDirs="$WM_PROJECT_SITE $foamOldDirs"
|
|
if ( ! -d "$WM_PROJECT_SITE" ) unsetenv WM_PROJECT_SITE
|
|
else
|
|
unsetenv WM_PROJECT_SITE
|
|
endif
|
|
|
|
# Location of user files
|
|
# ~~~~~~~~~~~~~~~~~~~~~~
|
|
setenv WM_PROJECT_USER_DIR $HOME/$WM_PROJECT/$LOGNAME-$WM_PROJECT_VERSION
|
|
|
|
# Source etc files, possibly with some verbosity
|
|
if ($?FOAM_VERBOSE && $?prompt) then
|
|
alias _foamEtc 'eval `$WM_PROJECT_DIR/bin/foamEtcFile -csh-verbose \!*`'
|
|
else
|
|
alias _foamEtc 'eval `$WM_PROJECT_DIR/bin/foamEtcFile -csh \!*`'
|
|
endif
|
|
|
|
# Override definitions via prefs, with 'other' first so the sys-admin
|
|
# can provide base values independent of WM_PROJECT_SITE
|
|
_foamEtc -mode=o prefs.csh
|
|
_foamEtc -mode=ug prefs.csh
|
|
|
|
# Evaluate command-line parameters and record settings for later.
|
|
# These can be used to set/unset values, specify additional files etc.
|
|
setenv FOAM_SETTINGS "${*}"
|
|
while ( $#argv > 0 )
|
|
switch ($argv[1])
|
|
case -*:
|
|
# Stray option (not meant for us here) -> get out
|
|
break
|
|
breaksw
|
|
case *=:
|
|
# name= -> unsetenv name
|
|
if ($?FOAM_VERBOSE && $?prompt) echo "unsetenv $argv[1]:s/=//"
|
|
eval "unsetenv $argv[1]:s/=//"
|
|
breaksw
|
|
case *=*:
|
|
# name=value -> setenv name value
|
|
if ($?FOAM_VERBOSE && $?prompt) echo "setenv $argv[1]:s/=/ /"
|
|
eval "setenv $argv[1]:s/=/ /"
|
|
breaksw
|
|
default:
|
|
# Filename: source it
|
|
if ( -f "$argv[1]" ) then
|
|
if ($?FOAM_VERBOSE && $?prompt) echo "Using: $argv[1]"
|
|
source "$argv[1]"
|
|
else
|
|
_foamEtc -silent "$argv[1]"
|
|
endif
|
|
breaksw
|
|
endsw
|
|
shift
|
|
end
|
|
|
|
|
|
# Clean standard environment variables (PATH, LD_LIBRARY_PATH, MANPATH)
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
set foamClean=$WM_PROJECT_DIR/bin/foamCleanPath
|
|
|
|
#- prevent local variables from shadowing setenv variables
|
|
unset PATH MANPATH LD_LIBRARY_PATH LD_PRELOAD
|
|
|
|
if (! $?LD_LIBRARY_PATH ) setenv LD_LIBRARY_PATH
|
|
if (! $?MANPATH ) setenv MANPATH
|
|
|
|
#- Clean PATH (path)
|
|
set cleaned=`$foamClean "$PATH" "$foamOldDirs"`
|
|
if ( $status == 0 ) setenv PATH $cleaned
|
|
|
|
#- Clean LD_LIBRARY_PATH
|
|
set cleaned=`$foamClean "$LD_LIBRARY_PATH" "$foamOldDirs"`
|
|
if ( $status == 0 ) setenv LD_LIBRARY_PATH $cleaned
|
|
|
|
#- Clean MANPATH
|
|
set cleaned=`$foamClean "$MANPATH" "$foamOldDirs"`
|
|
if ( $status == 0 ) setenv MANPATH $cleaned
|
|
|
|
|
|
# Source project setup files
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
_foamEtc config.csh/settings
|
|
_foamEtc config.csh/aliases
|
|
|
|
# Source user setup files for optional packages
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
_foamEtc config.csh/mpi
|
|
_foamEtc config.csh/paraview
|
|
_foamEtc config.csh/vtk
|
|
_foamEtc config.csh/ensight
|
|
|
|
#_foamEtc config.csh/ADIOS
|
|
_foamEtc config.csh/CGAL
|
|
_foamEtc config.csh/FFTW
|
|
|
|
|
|
# Clean environment paths again. Only remove duplicates
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
#- Clean PATH (path)
|
|
set cleaned=`$foamClean "$PATH"`
|
|
if ( $status == 0 ) setenv PATH $cleaned
|
|
|
|
#- Clean LD_LIBRARY_PATH
|
|
set cleaned=`$foamClean "$LD_LIBRARY_PATH"`
|
|
if ( $status == 0 ) setenv LD_LIBRARY_PATH $cleaned
|
|
|
|
#- Clean MANPATH (trailing ':' to find system pages)
|
|
set cleaned=`$foamClean "$MANPATH"`
|
|
if ( $status == 0 ) setenv MANPATH "${cleaned}:"
|
|
|
|
#- Clean LD_PRELOAD
|
|
if ( $?LD_PRELOAD ) then
|
|
set cleaned=`$foamClean "$LD_PRELOAD"`
|
|
if ( $status == 0 ) setenv LD_PRELOAD $cleaned
|
|
endif
|
|
|
|
|
|
# Cleanup environment
|
|
# ~~~~~~~~~~~~~~~~~~~
|
|
unset cleaned foamClean foamOldDirs
|
|
unalias _foamEtc
|
|
unalias _foamAddPath
|
|
unalias _foamAddLib
|
|
unalias _foamAddMan
|
|
|
|
#------------------------------------------------------------------------------
|