diff --git a/BuildIssues.txt b/BuildIssues.txt index fbb6b6dcb5728c4d6d81c21479fa885a140326d6..a05b5301c3c3217f6ef357024abaea952f16974f 100644 --- a/BuildIssues.txt +++ b/BuildIssues.txt @@ -1,4 +1,4 @@ -OpenFOAM-1706 +OpenFOAM-1712 ================== Known Build Issues ================== @@ -75,6 +75,33 @@ If your system compiler is too old to build the minimum required gcc or clang/llvm, it is just simply too old. +--------------------------------- +ThirdParty clang without gmp/mpfr +--------------------------------- + +If using ThirdParty clang without gmp/mpfr, the ThirdParty makeCGAL +script will need to be run manually and specify that there is no +gmp/mpfr. Eg, + + cd $WM_THIRD_PARTY_DIR + ./makeCGAL gmp-none mpfr-none + +Subequent compilation with Allwmake will now run largely without any +problems, except that the components linking against CGAL +(foamyMesh and surfaceBooleanFeatures) will also try to link against +a nonexistent mpfr library. As a workaround, the link-dependency can +be removed in wmake/rules/General/CGAL : + + CGAL_LIBS = \ + -L$(BOOST_ARCH_PATH)/lib \ + -L$(BOOST_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \ + -L$(CGAL_ARCH_PATH)/lib \ + -L$(CGAL_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \ + -lCGAL + +This is a temporary inconvenience until a more robust solution is found. + + ------------------------- Building with spack ------------------------- diff --git a/etc/bashrc b/etc/bashrc index 2ad6b3512d7e3c64342e038b7617b2e5826dc287..b1a39aaed39619727462fb13cbba4703091b577c 100644 --- a/etc/bashrc +++ b/etc/bashrc @@ -36,7 +36,7 @@ export WM_PROJECT=OpenFOAM export WM_PROJECT_VERSION=plus # [FOAM_INST_DIR] - parent directory containing the OpenFOAM installation. -# * When this file is located as $WM_PROJECT_DIR/etc/bashrc, the next lines +# \- 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. # -- @@ -104,23 +104,18 @@ export WM_MPLIB=SYSTEMOPENMPI ################################################################################ -# The old dirs to be cleaned from the environment variables +# 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 -# ~~~~~~~~~~~~~~~~~~~~~~~~ +# 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 - -# Location of third-party software -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ export 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 +# [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 @@ -128,12 +123,10 @@ else unset WM_PROJECT_SITE fi -# Location of user files -# ~~~~~~~~~~~~~~~~~~~~~~ +# [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 # Override definitions via prefs, with 'other' first so the sys-admin @@ -163,35 +156,29 @@ cleaned=$($foamClean "$MANPATH" "$foamOldDirs") && MANPATH="$cleaned" export PATH LD_LIBRARY_PATH MANPATH -# Source project setup files -# ~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Setup for OpenFOAM compilation etc +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _foamEtc config.sh/settings -if /usr/bin/tty -s 2>/dev/null # Interactive shell -then - _foamEtc config.sh/aliases - - # Bash completions - if [ "${BASH_VERSINFO:-0}" -ge 4 ] - then - _foamEtc config.sh/bash_completion - fi -fi - - -# Source user setup files for optional packages -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Setup for third-party packages +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _foamEtc config.sh/mpi _foamEtc config.sh/paraview _foamEtc config.sh/vtk _foamEtc config.sh/ensight _foamEtc config.sh/gperftools - -#_foamEtc config.sh/ADIOS +## _foamEtc config.csh/ADIOS _foamEtc config.sh/CGAL _foamEtc config.sh/scotch _foamEtc config.sh/FFTW +# Interactive shell +if /usr/bin/tty -s 2>/dev/null +then + _foamEtc config.sh/aliases + [ "${BASH_VERSINFO:-0}" -ge 4 ] && _foamEtc config.sh/bash_completion +fi + # Clean environment paths again. Only remove duplicates # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -214,13 +201,13 @@ then fi -# Cleanup environment -# ~~~~~~~~~~~~~~~~~~~ +# Cleanup temporary information +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# Functions +# Unload shell functions . $WM_PROJECT_DIR/etc/config.sh/functions -# Variables (do as last for a clean exit code) +# Variables (done as the last statement for a clean exit code) unset cleaned foamClean foamOldDirs #------------------------------------------------------------------------------ diff --git a/etc/config.csh/settings b/etc/config.csh/settings index 37c49f4e91dad3c268810d5b4116897cbc4f783a..8b7d27e2a3839094976e8a66dccb7318622a6f6c 100644 --- a/etc/config.csh/settings +++ b/etc/config.csh/settings @@ -149,15 +149,14 @@ setenv FOAM_LIBBIN $WM_PROJECT_DIR/platforms/$WM_OPTIONS/lib # External (ThirdParty) libraries setenv FOAM_EXT_LIBBIN $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib -# Site-specific directory +# Site-specific (group) files if ( $?WM_PROJECT_SITE ) then set siteDir=$WM_PROJECT_SITE else set siteDir=$WM_PROJECT_INST_DIR/site endif -# Shared site executables/libraries -# Similar naming convention as ~OpenFOAM expansion +# Shared site (group) executables/libraries setenv FOAM_SITE_APPBIN $siteDir/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/bin setenv FOAM_SITE_LIBBIN $siteDir/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/lib @@ -165,8 +164,8 @@ setenv FOAM_SITE_LIBBIN $siteDir/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/lib setenv FOAM_USER_APPBIN $WM_PROJECT_USER_DIR/platforms/$WM_OPTIONS/bin setenv FOAM_USER_LIBBIN $WM_PROJECT_USER_DIR/platforms/$WM_OPTIONS/lib -# DynamicCode templates -# - default location is the "~OpenFOAM/codeTemplates/dynamicCode" expansion +# [FOAM_CODE_TEMPLATES] - dynamicCode templates +# * fallback == "foamEtcFile -list codeTemplates/dynamicCode" # setenv FOAM_CODE_TEMPLATES $WM_PROJECT_DIR/etc/codeTemplates/dynamicCode # Convenience diff --git a/etc/config.sh/settings b/etc/config.sh/settings index 33aa7fa89376e2548b6fafbf71c4c1fe5043f026..330f197af1fa54efa0ae0374a8da5b49224b8ae7 100644 --- a/etc/config.sh/settings +++ b/etc/config.sh/settings @@ -133,7 +133,7 @@ export FOAM_LIBBIN=$WM_PROJECT_DIR/platforms/$WM_OPTIONS/lib # External (ThirdParty) libraries export FOAM_EXT_LIBBIN=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib -# Site-specific directory +# Site-specific (group) files if [ -n "$WM_PROJECT_SITE" ] then siteDir=$WM_PROJECT_SITE @@ -141,8 +141,7 @@ else siteDir=$WM_PROJECT_INST_DIR/site fi -# Shared site executables/libraries -# Similar naming convention as ~OpenFOAM expansion +# Shared site (group) executables/libraries export FOAM_SITE_APPBIN=$siteDir/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/bin export FOAM_SITE_LIBBIN=$siteDir/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/lib @@ -150,8 +149,8 @@ export FOAM_SITE_LIBBIN=$siteDir/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/lib export FOAM_USER_APPBIN=$WM_PROJECT_USER_DIR/platforms/$WM_OPTIONS/bin export FOAM_USER_LIBBIN=$WM_PROJECT_USER_DIR/platforms/$WM_OPTIONS/lib -# DynamicCode templates -# - default location is the "~OpenFOAM/codeTemplates/dynamicCode" expansion +# [FOAM_CODE_TEMPLATES] - dynamicCode templates +# * fallback == "foamEtcFile -list codeTemplates/dynamicCode" # export FOAM_CODE_TEMPLATES=$WM_PROJECT_DIR/etc/codeTemplates/dynamicCode # Convenience diff --git a/etc/cshrc b/etc/cshrc index 9a1e81d3ee8fa60998dfa8ab5783e5e8e50f4b22..4dc34be99e9f64c6923ae1b8fb8a76bba09097c9 100644 --- a/etc/cshrc +++ b/etc/cshrc @@ -36,7 +36,7 @@ setenv WM_PROJECT OpenFOAM setenv WM_PROJECT_VERSION plus # [FOAM_INST_DIR] - parent directory containing the OpenFOAM installation. -# * When this file is located as $WM_PROJECT_DIR/etc/cshrc, the next lines +# \- When this file is located as $WM_PROJECT_DIR/etc/cshrc, the next lines # should work when sourced by CSH or TCSH shells. If this however fails, # set one of the fallback values to an appropriate path. # -- @@ -101,7 +101,7 @@ setenv WM_MPLIB SYSTEMOPENMPI ################################################################################ -# The old dirs to be cleaned from the environment variables +# Old directories to be cleaned from PATH, LD_LIBRARY_PATH set foamOldDirs= if ( $?WM_PROJECT_DIR ) then set foamOldDirs="$foamOldDirs $WM_PROJECT_DIR" @@ -119,18 +119,13 @@ if ( $?FOAM_SITE_LIBBIN ) then set foamOldDirs="$foamOldDirs $FOAM_SITE_LIBBIN" endif -# Location of installation -# ~~~~~~~~~~~~~~~~~~~~~~~~ +# Location of installation and third-party software setenv WM_PROJECT_INST_DIR $FOAM_INST_DIR -setenv WM_PROJECT_DIR $WM_PROJECT_INST_DIR/$WM_PROJECT-$WM_PROJECT_VERSION +setenv WM_PROJECT_DIR $WM_PROJECT_INST_DIR/$WM_PROJECT-$WM_PROJECT_VERSION +setenv WM_THIRD_PARTY_DIR $WM_PROJECT_INST_DIR/ThirdParty-$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 +# [WM_PROJECT_SITE] - Location of site-specific (group) files +# default (unset) implies 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 @@ -138,8 +133,7 @@ else unsetenv WM_PROJECT_SITE endif -# Location of user files -# ~~~~~~~~~~~~~~~~~~~~~~ +# [WM_PROJECT_USER_DIR] - Location of user files setenv WM_PROJECT_USER_DIR $HOME/$WM_PROJECT/$LOGNAME-$WM_PROJECT_VERSION # Source an etc file, possibly with some verbosity @@ -210,27 +204,26 @@ set cleaned=`$foamClean "$MANPATH" "$foamOldDirs"` if ( $status == 0 ) setenv MANPATH $cleaned -# Source project setup files -# ~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Setup for OpenFOAM compilation etc +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _foamEtc config.csh/settings -if ($?prompt) then # Interactive shell - _foamEtc config.csh/aliases - _foamEtc config.csh/tcsh_completion -endif - - -# Source user setup files for optional packages -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Setup for third-party packages +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _foamEtc config.csh/mpi _foamEtc config.csh/paraview _foamEtc config.csh/vtk _foamEtc config.csh/ensight - -#_foamEtc config.csh/ADIOS +## _foamEtc config.csh/ADIOS _foamEtc config.csh/CGAL _foamEtc config.csh/FFTW +# Interactive shell +if ($?prompt) then + _foamEtc config.csh/aliases + _foamEtc config.csh/tcsh_completion +endif + # Clean environment paths again. Only remove duplicates # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -253,12 +246,15 @@ if ( $?LD_PRELOAD ) then endif -# Cleanup environment -# ~~~~~~~~~~~~~~~~~~~ -unset cleaned foamClean foamOldDirs +# Cleanup temporary information +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Unload shell "functions" unalias _foamEtc unalias _foamAddPath unalias _foamAddLib unalias _foamAddMan +unset cleaned foamClean foamOldDirs + #------------------------------------------------------------------------------ diff --git a/modules/README.md b/modules/README.md index 246fac8696b75464ca8381ebb8b1ad6a940a03e7..8bc84322da61eba610c2ac29722f425d39a21093 100644 --- a/modules/README.md +++ b/modules/README.md @@ -1,15 +1,64 @@ OpenFOAM Modules ================ -This directory is a location to place additional OpenFOAM components -or tools and have them built as part of the normal OpenFOAM build +This directory is a location for additional OpenFOAM components or tools +to placed and have them built as part of the normal OpenFOAM build process. It is assumed that each subdirectory contain an appropriate -Allwmake file, and that they should in all likelihood also build into +Allwmake file, and that they in all likelihood also build into `$FOAM_APPBIN` and `$FOAM_LIBBIN` instead of `$FOAM_USER_APPBIN` and `$FOAM_USER_LIBBIN`. -These additional components may be added as git submodules, by script -or by hand. +These additional components may be added as [git submodules][man git-submodule], +by script or by hand. + + +### git + +On the first use, it will be necessary to register the submodules: + + git submodule init + + +This will clone the relevant submodules from their respective +repositories. + + +The following will indicate the current state: + + git submodule status + + +On the first use, or after merging upstream changes in the OpenFOAM +repository, it will be necessary to update the submodules: + + git submodule update + + +A quick overview of `git submodule` can be in this +[*blog*][blog git-submodule] with full details in the +[*manpage*][man git-submodule]. + + +An easy way to see which submodules are actually in use: + + `cat .gitmodules` + +Which will reveal content resembling the following: + + [submodule "cfmesh"] + path = modules/cfmesh + url = https://develop.openfoam.com/Community/integration-cfmesh.git + + +### doxygen To build the doxygen information for the components, it is also necessary to link the directories to the doc/ subdirectory. +This is a purely manual operation. + +<!-- General Information --> + +[man git-submodule]: https://git-scm.com/docs/git-submodule +[blog git-submodule]: http://blog.joncairns.com/2011/10/how-to-use-git-submodules/ + +---