Ubuntu 18.04下OpenFOAM 2.3.1安装及配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu 18.04下OpenFOAM 2.3.1安装及配置相关的知识,希望对你有一定的参考价值。

参考技术A OpenFOAM 2.3.1是Ubuntu 14.04 下发布的,尝试N次在18.04下安装失败后,求助 Bruno 大神,随后Bruno在OpenFOAMwiki上放出了 how to install OpenFOAM in Ubuntu 18.04 ,完美安装。

Source guide 的编译出现问题,OpenFOAM 2.3.1版本的Source Guide 在Ubuntu环境下用Doxygen编译后是没有Search bar、main page等工具栏的。这是由于18.04的Doxygen版本太高,而且因为flex的版本也过新,无法安装低版本的Doxygen,所以只能在Ubuntu14.04上编译好Source guide,然后把html文件夹复制过来...

Qtcreator是一个很棒的IDE,可以链接OF中的各种*.C、*.H文件,安装及配置wmake的方法在这里: HowTo Use OpenFOAM with QtCreator ,其中编译设置选择作者推荐的 3.2.1 Option 1: using foamExec
Tips No.1 因为OF文件后缀是大写的C&H,可能会出现在导入现有项目时无法识别OF文件,只需在Qt文件过滤器(show files matching)中增加OF文件后缀:*.C、*.H
Tips No.2 安装git和gitk即可在Tool -> git中进行commit、Diff等版本管理操作

OpenFoam Win 10,Ubuntu Bash 安装失败

【中文标题】OpenFoam Win 10,Ubuntu Bash 安装失败【英文标题】:OpenFoam Win 10, Ubuntu Bash installing fails 【发布时间】:2018-10-12 15:13:13 【问题描述】:

我正在尝试在 Win 10 上的 ubuntu bash 上安装 OpenFoam。我正在执行以下步骤: OpenFoam installation on win 10 Ubuntu bash

在这一步

源 $HOME/.bashrc

我收到以下错误:

-bash: eval: line 38: syntax error near unexpected token `('
-bash: eval: line 38: `PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program:Files:(x86)/Common:Files/Oracle/Java/javapath_target_275852031:/mnt/c/Windows/System32:/mnt/c/DAYSIM/lib:/mnt/c/DAYSIM/bin:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:Files/Microsoft:SQL:Server/120/Tools/Binn:Files/Common:Files/Autodesk:Shared:/mnt/c/Radiance/bin:Server/130/Tools/Binn:Files/dotnet:Server/Client:SDK/ODBC/130/Tools/Binn:(x86)/Microsoft:Server/140/Tools/Binn:Server/140/DTS/Binn:Server/140/Tools/Binn/ManagementStudio:/mnt/c/Users/danie/AppData/Local/Programs/Python/Python36/Scripts:/mnt/c/Users/danie/AppData/Local/Programs/Python/Python36:/mnt/c/Users/danie/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/danie/AppData/Local/Programs/Microsoft:VS:Code/bin:/snap/bin'
-bash: eval: line 62: syntax error near unexpected token `('
-bash: eval: line 62: `PATH=/opt/OpenFOAM/ThirdParty-v1806/platforms/linux64Gcc63/openmpi-1.10.4/bin:/opt/OpenFOAM/ThirdParty-v1806/platforms/linux64/gcc-6.3.0/bin:/home/daniel/OpenFOAM/daniel-v1806/platforms/linux64Gcc63DPInt32Opt/bin:/opt/OpenFOAM/site/v1806/platforms/linux64Gcc63DPInt32Opt/bin:/opt/OpenFOAM/OpenFOAM-v1806/platforms/linux64Gcc63DPInt32Opt/bin:/opt/OpenFOAM/OpenFOAM-v1806/bin:/opt/OpenFOAM/OpenFOAM-v1806/wmake:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program:Files:(x86)/Common:Files/Oracle/Java/javapath_target_275852031:/mnt/c/Windows/System32:/mnt/c/DAYSIM/lib:/mnt/c/DAYSIM/bin:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:Files/Microsoft:SQL:Server/120/Tools/Binn:Files/Common:Files/Autodesk:Shared:/mnt/c/Radiance/bin:Server/130/Tools/Binn:Files/dotnet:Server/Client:SDK/ODBC/130/Tools/Binn:(x86)/Microsoft:Server/140/Tools/Binn:Server/140/DTS/Binn:Server/140/Tools/Binn/ManagementStudio:/mnt/c/Users/danie/AppData/Local/Programs/Python/Python36/Scripts:/mnt/c/Users/danie/AppData/Local/Programs/Python/Python36:/mnt/c/Users/danie/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/danie/AppData/Local/Programs/Microsoft:VS:Code/bin:/snap/bin:'
-bash: eval: line 38: syntax error near unexpected token `('
-bash: eval: line 38: `PATH=/opt/OpenFOAM/ThirdParty-v1806/platforms/linux64Gcc63/gperftools-2.5/bin:/opt/OpenFOAM/ThirdParty-v1806/platforms/linux64Gcc63/openmpi-1.10.4/bin:/opt/OpenFOAM/ThirdParty-v1806/platforms/linux64/gcc-6.3.0/bin:/home/daniel/OpenFOAM/daniel-v1806/platforms/linux64Gcc63DPInt32Opt/bin:/opt/OpenFOAM/site/v1806/platforms/linux64Gcc63DPInt32Opt/bin:/opt/OpenFOAM/OpenFOAM-v1806/platforms/linux64Gcc63DPInt32Opt/bin:/opt/OpenFOAM/OpenFOAM-v1806/bin:/opt/OpenFOAM/OpenFOAM-v1806/wmake:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program:Files:(x86)/Common:Files/Oracle/Java/javapath_target_275852031:/mnt/c/Windows/System32:/mnt/c/DAYSIM/lib:/mnt/c/DAYSIM/bin:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:Files/Microsoft:SQL:Server/120/Tools/Binn:Files/Common:Files/Autodesk:Shared:/mnt/c/Radiance/bin:Server/130/Tools/Binn:Files/dotnet:Server/Client:SDK/ODBC/130/Tools/Binn:(x86)/Microsoft:Server/140/Tools/Binn:Server/140/DTS/Binn:Server/140/Tools/Binn/ManagementStudio:/mnt/c/Users/danie/AppData/Local/Programs/Python/Python36/Scripts:/mnt/c/Users/danie/AppData/Local/Programs/Python/Python36:/mnt/c/Users/danie/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/danie/AppData/Local/Programs/Microsoft:VS:Code/bin:/snap/bin'

我不明白这里发生了什么。任何帮助将不胜感激。

OpenFoam bashrc 代码如下:

#----------------------------------*-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/bashrc
#
# Description
#     The OpenFOAM environment for POSIX shell (eg, bash,dash,zsh,...).
#     Source manually or from the ~/.bashrc or ~/.profile files.
#
#     Many settings can be overridden using a <prefs.sh> file:
#
#       - Base values (eg, from system admin):
#         -  $WM_PROJECT_DIR/etc/prefs.sh
#
#       - User or group values (first file found):
#         -  ~/.OpenFOAM/$WM_PROJECT_VERSION/prefs.sh
#         -  ~/.OpenFOAM/prefs.sh
#         -  $WM_PROJECT_SITE/site/$WM_PROJECT_VERSION/prefs.sh
#         -  $WM_PROJECT_SITE/site/prefs.sh
#
# Note: Changes made to this bashrc file may be lost with the next upgrade.
#------------------------------------------------------------------------------

export WM_PROJECT=OpenFOAM
export WM_PROJECT_VERSION=v1806

# [FOAM_INST_DIR] - parent directory containing the OpenFOAM installation.
# \- 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.
# --
rc="$BASH_SOURCE:-$ZSH_NAME:+$0"
[ -n "$rc" ] && FOAM_INST_DIR=$(\cd $(dirname $rc)/../.. && \pwd -L) || \
FOAM_INST_DIR=$HOME/$WM_PROJECT
# FOAM_INST_DIR=/opt/$WM_PROJECT
# FOAM_INST_DIR=/usr/local/$WM_PROJECT
#
# END OF (NORMAL) USER EDITABLE PART
################################################################################
: # Extra safety - if the user commented out all fallback values
unset rc

# Configuration environment variables.
# Should override via <prefs.sh> file instead of editing this file.

# [WM_COMPILER_TYPE] - Compiler location:
# = system | ThirdParty
export WM_COMPILER_TYPE=ThirdParty

# [WM_COMPILER] - Compiler:
# = Gcc | Gcc4[8-9] | Gcc5[1-5] | Gcc6[1-4] | Gcc7[1-3] | Gcc8[1] | GccKNL |
#   Clang | Clang3[7-9] | Clang[4-6]0 | Icc | IccKNL | Cray | Arm
export WM_COMPILER=Gcc63

# [WM_ARCH_OPTION] - Memory addressing:
# = 32 | 64
#   * on a 64-bit OS this can be 32 or 64
#   * on a 32-bit OS, it is always 32-bit and this option is ignored
export WM_ARCH_OPTION=64

# [WM_PRECISION_OPTION] - Floating-point precision:
# = DP | SP
export WM_PRECISION_OPTION=DP

# [WM_LABEL_SIZE] - Label size in bits:
# = 32 | 64
export WM_LABEL_SIZE=32

# [WM_COMPILE_OPTION] - Optimised, debug, profiling:
# = Opt | Debug | Prof
export WM_COMPILE_OPTION=Opt

# [WM_MPLIB] - MPI implementation:
# = SYSTEMOPENMPI | OPENMPI | SYSTEMMPI | MPI | MPICH | MPICH-GM |
#   HPMPI | CRAY-MPICH | FJMPI | QSMPI | SGIMPI | INTELMPI | USERMPI
export WM_MPLIB=OPENMPI


#------------------------------------------------------------------------------
# (legacy / advanced)
#
# [FOAM_SIGFPE] - Trap floating-point exceptions.
#               - overrides the 'trapFpe' controlDict entry
# = true | false
#export FOAM_SIGFPE=true

# [FOAM_SETNAN] - Initialize memory with NaN
#               - overrides the 'setNaN' controlDict entry
# = true | false
#export FOAM_SETNAN=false

# [WM_OSTYPE] - Operating System Type:
# = POSIX
#export WM_OSTYPE=POSIX

################################################################################

# Old directories to be cleaned from PATH, LD_LIBRARY_PATH
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 and third-party software
export WM_PROJECT_INST_DIR=$FOAM_INST_DIR
export WM_PROJECT_DIR=$WM_PROJECT_INST_DIR/$WM_PROJECT-$WM_PROJECT_VERSION
export WM_THIRD_PARTY_DIR=$WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION

# [WM_PROJECT_SITE] - Location of site-specific (group) files
# default (unset) implies WM_PROJECT_INST_DIR/site
if [ -d "$WM_PROJECT_SITE" ]
then
    export WM_PROJECT_SITE
else
    unset WM_PROJECT_SITE
fi

# [WM_PROJECT_USER_DIR] - Location of user files
export WM_PROJECT_USER_DIR=$HOME/$WM_PROJECT/$USER-$WM_PROJECT_VERSION

# Load shell functions
. $WM_PROJECT_DIR/etc/config.sh/functions

# Overrides via <prefs.sh>
_foamEtc -mode=o  prefs.sh      # 1) other (system) values
_foamEtc -mode=ug prefs.sh      # 2) user or group values

# Evaluate command-line parameters and record settings for later.
# These can be used to set/unset values, specify additional files etc.
export FOAM_SETTINGS="$@"
_foamEval $@

# Clean standard environment variables (PATH, MANPATH, LD_LIBRARY_PATH)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export PATH MANPATH LD_LIBRARY_PATH
_foamClean PATH "$foamOldDirs"
_foamClean MANPATH "$foamOldDirs"
_foamClean LD_LIBRARY_PATH "$foamOldDirs"

# Setup for OpenFOAM compilation etc
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamEtc -config  settings

# Setup for third-party packages
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamEtc -config  mpi
_foamEtc -config  paraview -- $@        # Pass through for evaluation
_foamEtc -config  vtk
_foamEtc -config  ensight
_foamEtc -config  gperftools
## _foamEtc -config  ADIOS
## _foamEtc -config  ADIOS2
_foamEtc -config  CGAL
_foamEtc -config  scotch
_foamEtc -config  FFTW

# Interactive shell
if /usr/bin/tty -s 2>/dev/null
then
    _foamEtc -config  aliases
    [ "$BASH_VERSINFO:-0" -ge 4 ] && _foamEtc -config  bash_completion
fi


# Clean environment paths again. Only remove duplicates
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export PATH MANPATH LD_LIBRARY_PATH

_foamClean PATH
_foamClean MANPATH
_foamClean LD_LIBRARY_PATH

# Add trailing ':' for system manpages
if [ -n "$MANPATH" ]
then
    MANPATH="$MANPATH:"
fi

if [ -n "$LD_PRELOAD" ]
then
    export LD_PRELOAD
    _foamClean LD_PRELOAD
fi


# Cleanup temporary information
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Unload shell functions
. $WM_PROJECT_DIR/etc/config.sh/functions

# Variables (done as the last statement for a clean exit code)
unset FOAM_INST_DIR     # Old variable name (OpenFOAM-v1606) - now unneeded
unset cleaned foamOldDirs

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

【问题讨论】:

这真是糟糕的代码。 真的糟糕的代码。考虑通过shellcheck.net 运行它(连同它获取它的函数定义——没有它们你将无法获得完整的评估)并将输出作为错误提交给制作它的人。 ...作为一些具体的起点:formOldDirs 应该是一个数组,而不是字符串——这样就根本不需要符号字符(无论是空格还是其他)。大多数未引用的扩展都需要引用以确保所有可能内容的安全。 $@ 需要为 "$@" 以避免传递内容。 BashFAQ #48(Eval 命令和安全问题)和BashFAQ #50(我正在尝试将命令放入变量中,但复杂情况总是失败!)是推荐阅读。 顺便说一句,如果您确实在上游提交了一个错误,如果它包含启用xtrace 的执行日志,这将对他们有所帮助,这样他们就可以看到事情是如何破裂的在实践中。为此:PS4=':$BASH_SOURCE##*/:$LINENO+' bash -x yourscript,并捕获它在 stderr 上发出的内容。 交叉投递:askubuntu.com/questions/1083334/… 【参考方案1】:

答案是foamCleanPath 如何在PATH 上使用IFS 内部拆分(带有空格)。现在,这已在当前的开发分支中进行了更改,更改类似于上一个(已删除)答案。

https://develop.openfoam.com/Development/OpenFOAM-plus/commit/0a2768667f4aa0eb02e41ab2a2de72dbf00e4af6

此外,OpenFOAM 现在允许 cwd() 使用逻辑名称而不是物理名称,当案例目录包含空格时,这提供了一种解决问题的额外方法。

https://develop.openfoam.com/Development/OpenFOAM-plus/commit/b7054272989a0e5fddbaf6dfbdbfb726f7db8539

【讨论】:

【参考方案2】:

bash(或您的.bashrc)无法处理包含未转义括号的$PATH。默认情况下,Windows 在其路径中有C:\Program Files (x86),并且很可能在Linux 子系统下将其转换为/mnt/c/Program Files (x86)。一些糟糕的处理会将其转换为(例如)/mnt/c/Program:Files:(x86),然后 bash 在括号中阻塞。

如果您显示.bashrc 的相关行,也许可以找到修复程序。以下很可能会起作用:

export PATH="$PATH":/some/new/path

而不是

export PATH=$PATH:/some/new/path

更新

由于您的 .bashrc 正在寻找另一个 bashrc 文件,因此问题出在另一个 bashrc 文件上。该文件无法处理空格。

另见

How to add Path with space in bash variable

https://unix.stackexchange.com/questions/26047/how-to-correctly-add-a-path-to-path

【讨论】:

感谢您的回复。实际上,我不知道到底发生了什么。步骤如下:echo "source /opt/OpenFOAM/OpenFOAM-v1806/etc/bashrc" &gt;&gt; ~/.bashrc source $HOME/.bashrc 我会上传文件。 那么错误可能在/opt/OpenFOAM/OpenFOAM-v1806/etc/bashrc 中。当谈到$PATH 中的空格或一般文件名时,Unix 人一无所知。 嘿。使用eval 的人毫无头绪(其中肯定包括手头编写脚本的人)。从长远来看,这并不是所有的“UNIX 人”。 (对只提出不寻常的文件名的可靠性错误不屑一顾的人数是一个长期的烦恼,但作为一个 UNIX 人,我不愿意接受它们作为我自己的一员——称之为“不是真正的苏格兰人”) . 我刚刚将 bashrc 文件中的代码添加到问题中。 叹息。是的。需要有人教这些人如何使用数组。也就是说,修复一堆别人的代码不是我不付钱就要做的事情。 (如果 OpenFoam 项目的某个人出现并询问有关如何修复它的建议,我很乐意提供它,但这不是这里发生的事情)。【参考方案3】:

感谢@user10142377,问题解决了。 foamCleanPath 中的代码必须替换为以下代码:

#!/bin/sh
#------------------------------------------------------------------------------
# =========                 |
# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
#  \\    /   O peration     |
#   \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
#    \\/     M anipulation  | Copyright (C) 2017-2018 OpenCFD Ltd.
#-------------------------------------------------------------------------------
# License
#     This file is part of OpenFOAM, licensed under GNU General Public License
#     <http://www.gnu.org/licenses/>.
#
# Script
#     foamCleanPath
#
# Description
#     Usage: foamCleanPath [OPTION] path [filter] .. [filter]
#            foamCleanPath [OPTION] -env=name [filter] .. [filter]
#
#     Prints its argument (which should be a ':' separated path)
#     without the following:
#         - duplicate elements
#         - elements matching the specified filter(s)
#         - inaccessible directories (with the -strip option)
#
# Note
#     - false matches possible when the filter contains '.' (sed regex) etc.
#     - a single composite filter can be passed in. This composite filter
#       is assumed to be delimited by whitespace, colons or semi-colons.
#
# Examples for cleaning the path:
#
#     - Using explicit arguments
#       cleaned=$(foamCleanPath "$PATH" dir1:dir2) && PATH=$cleaned
#
#     - Variable to clean passed as an option
#       cleaned=$(foamCleanPath -env=PATH dir1:dir2) && PATH=$cleaned
#
#     - Using shell evaluation for the output
#       eval $(foamCleanPath -sh=PATH $PATH" dir1:dir2)
#       eval "$(foamCleanPath -sh=PATH -env=PATH dir1:dir2)"
#       eval "$(foamCleanPath -sh-env=PATH dir1:dir2)"
#
#     - Similarly for c-shell
#       eval `foamCleanPath -csh-env=PATH dir1:dir2`
#
#------------------------------------------------------------------------------
usage() 
    cat <<USAGE 1>&2
Usage: foamCleanPath [OPTION] path [filter] .. [filter]
       foamCleanPath [OPTION] -env=name [filter] .. [filter]
options:
  -csh=NAME         Produce 'setenv NAME ...' output for csh eval
  -sh=NAME          Produce 'NAME=...' output for sh eval
  -csh-env=NAME     As per -csh, with -env for initial content
  -sh-env=NAME      As per -sh,  with -env for initial content
  -env=NAME         Evaluate NAME to obtain initial content
  -debug            Print debug information to stderr
  -strip            Remove inaccessible directories
  -verbose          Report some progress (input, output, ...)
  -help             Print the usage

Prints its argument (which should be a ':' separated list) cleansed from
  * duplicate elements
  * elements whose start matches one of the filters
  * inaccessible directories (the -strip option)

Exit status
    0  on success
    1  general error
    2  initial value of 'path' is empty

USAGE
    exit 1


# Report error and exit
die()

    exec 1>&2
    echo
    echo "Error encountered:"
    while [ "$#" -ge 1 ]; do echo "    $1"; shift; done
    echo
    echo "See 'foamCleanPath -help' for usage"
    echo
    exit 1


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

# Input and outputs
unset dirList shellOutput

# Parse options
unset optDebug optEnvName optStrip optVerbose
while [ "$#" -gt 0 ]
do
    case "$1" in
    -h | -help*)
        usage
        ;;
    -csh=* | -sh=* | -csh-env=* | -sh-env=*)
        name="$1#*="
        [ -n "$name" ] || die "Option '$1' missing an ENVNAME"

        # Output prefix
        case "$1" in
        -csh*)
            shellOutput="setenv $name "     # eg, "setenv PATH xyz"
            ;;
        *)
            shellOutput="$name="            # eg, "PATH=xyz"
            ;;
        esac

        # For (-csh-env | -sh-env) also use name for input evaluation
        case "$1" in
        *-env=*)
            optEnvName="$name"
            ;;
        esac
        ;;
    -env=*)
        name="$1#*="
        [ -n "$name" ] || die "Option '$1' missing an ENVNAME"
        optEnvName="$name"
        ;;
    -debug)
        optDebug=true
        ;;
    -strip)
        optStrip=true
        ;;
    -verbose)
        optVerbose=true
        ;;
    *)
        break
        ;;
    esac
    shift
done


# Basic checks
if [ -n "$optEnvName" ]
then
    eval "dirList=\$$optEnvName"
elif [ "$#" -ge 1 ]
then
    dirList="$1"
    shift
else
    die "Requires at least one argument, or use the -env option"
fi

[ -n "$dirList" ] || exit 2     # Quick exit on empty 'dirList'

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

# Debugging (optional)
if [ -n "$optDebug" ]
then
    printDebug()  while [ "$#" -ge 1 ]; do echo "$1" 1>&2; shift; done; 
else
    printDebug()  true;       # No-op
fi

# Optional test for directory existence
if [ -n "$optStrip" ]
then
    isDir()  test -d "$1";    # Check for directory existence
else
    isDir()  test -n "$1";    # Only check for non-zero string
fi

# The "filter ... filterN" may have been passed as a single parameter
# or may contain ':' separators.
# Currently (OCT-2018) also accept split on whitespace too.

oldIFS="$IFS"       # Preserve initial IFS
IFS=':; '           # Split on colon, semicolon, whitespace
set -- $*

if [ -n "$optVerbose" ]
then
    echo "clean: $dirList" 1>&2
    echo "with:  $@" 1>&2
fi

printDebug "input>$dirList<"

# Apply filters via sed. Path and filter cannot contain '?'.
for filter
do
    if [ -n "$filter" ]
    then
        printDebug "remove>$filter<"
        dirList=$(echo "$dirList:" | sed -e "s?$filter[^:]*:??g")
    fi
done
printDebug "intermediate>$dirList<"

IFS=':'             # Split on colon. No split on whitespace.
set -- $dirList

# Rebuild the list
unset dirList
for dir
do
    printDebug "check>$dir< in $dirList"
    if isDir "$dir"
    then
        # Detect duplicates (ie, dir already in the list)
        duplicate=$(echo ":$dirList:" | sed -ne '\?:'"$dir"':?p')

        if [ -n "$duplicate" ]
        then
            printDebug "duplicate>$dir<"
        else
            dirList="$dirList$dirList:+:$dir"
        fi
    fi
done

IFS="$oldIFS"       # Restore initial IFS

printDebug "output>$dirList<"
if [ -n "$optVerbose" ]
then
    echo "output: \"$dirList\"" 1>&2
fi

echo "$shellOutput\"$dirList\""

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

该文件可以在 OpenFoam 应用程序的 bin 文件夹中找到。 This link 在 OpenFoam 的 gitlab 中进行原始讨论。

【讨论】:

以上是关于Ubuntu 18.04下OpenFOAM 2.3.1安装及配置的主要内容,如果未能解决你的问题,请参考以下文章

openfoam 的安装转载

OpenFoam Win 10,Ubuntu Bash 安装失败

OpenSUSE下编译安装OpenFoam

ubuntu18.04安装nvidia驱动,3种方式图文详解+卸载教程

win10系统下安装Ubuntu18.04双系统

Ubuntu 18.04 下 emscripten SDK 的安装