FEATURE: Updates to coupled solver and linear solvers. Author: Hrvoje Jasak. Merge: Dominik Christ.

This commit is contained in:
Dominik Christ 2015-04-24 14:27:29 +01:00
commit fac323eb99
61 changed files with 1813 additions and 250 deletions

View file

@ -62,22 +62,35 @@ echo
# Gcc and companion libraries # Gcc and companion libraries
# #
# Uncomment the following 3 lines for gcc-4.4.5. You need gmp and mpfr for gcc-4.4.5 # Uncomment the following 4 lines for gcc-4.9.2. You need gmp, mpfr and mpc for gcc-4.9.2
#( rpm_make -p gmp-5.0.1 -s gmp-5.0.1.spec -u ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.gz ) #( rpm_make -p gmp-5.1.2 -s gmp-5.1.2.spec -u ftp://ftp.gnu.org/gnu/gmp/gmp-5.1.2.tar.bz2 )
#( rpm_make -p mpfr-3.0.1 -s mpfr-3.0.1.spec -u ftp://ftp.gnu.org/gnu/mpfr/mpfr-3.0.1.tar.gz ) #( rpm_make -p mpfr-3.1.2 -s mpfr-3.1.2.spec -u ftp://ftp.gnu.org/gnu/mpfr/mpfr-3.1.2.tar.gz )
#( rpm_make -p gcc-4.4.5 -s gcc-4.4.5.spec -u ftp://ftp.gnu.org/gnu/gcc/gcc-4.4.5/gcc-4.4.5.tar.gz ) #( rpm_make -p mpc-1.0.1 -s mpc-1.0.1.spec -u http://www.multiprecision.org/mpc/download/mpc-1.0.1.tar.gz )
#( rpm_make -p gcc-4.9.2 -s gcc-4.9.2.spec -u ftp://ftp.gnu.org/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.gz )
#
# Uncomment the following 4 lines for gcc-4.7.4. You need gmp, mpfr and mpc for gcc-4.7.4
#( rpm_make -p gmp-5.1.2 -s gmp-5.1.2.spec -u ftp://ftp.gnu.org/gnu/gmp/gmp-5.1.2.tar.bz2 )
#( rpm_make -p mpfr-3.1.2 -s mpfr-3.1.2.spec -u ftp://ftp.gnu.org/gnu/mpfr/mpfr-3.1.2.tar.gz )
#( rpm_make -p mpc-1.0.1 -s mpc-1.0.1.spec -u http://www.multiprecision.org/mpc/download/mpc-1.0.1.tar.gz )
#( rpm_make -p gcc-4.7.4 -s gcc-4.7.4.spec -u ftp://ftp.gnu.org/gnu/gcc/gcc-4.7.4/gcc-4.7.4.tar.gz )
#
# Uncomment the following 4 lines for gcc-4.6.4. You need gmp, mpfr and mpc for gcc-4.6.4
#( rpm_make -p gmp-5.1.2 -s gmp-5.1.2.spec -u ftp://ftp.gnu.org/gnu/gmp/gmp-5.1.2.tar.bz2 )
#( rpm_make -p mpfr-3.1.2 -s mpfr-3.1.2.spec -u ftp://ftp.gnu.org/gnu/mpfr/mpfr-3.1.2.tar.gz )
#( rpm_make -p mpc-1.0.1 -s mpc-1.0.1.spec -u http://www.multiprecision.org/mpc/download/mpc-1.0.1.tar.gz )
#( rpm_make -p gcc-4.6.4 -s gcc-4.6.4.spec -u ftp://ftp.gnu.org/gnu/gcc/gcc-4.6.4/gcc-4.6.4.tar.gz )
# #
# Uncomment the following 4 lines for gcc-4.5.1. You need gmp, mpfr and mpc for gcc-4.5.1 # Uncomment the following 4 lines for gcc-4.5.1. You need gmp, mpfr and mpc for gcc-4.5.1
#( rpm_make -p gmp-5.0.1 -s gmp-5.0.1.spec -u ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.gz ) #( rpm_make -p gmp-5.0.1 -s gmp-5.0.1.spec -u ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.gz )
#( rpm_make -p mpfr-3.0.1 -s mpfr-3.0.1.spec -u ftp://ftp.gnu.org/gnu/mpfr/mpfr-3.0.1.tar.gz ) #( rpm_make -p mpfr-3.0.1 -s mpfr-3.0.1.spec -u ftp://ftp.gnu.org/gnu/mpfr/mpfr-3.0.1.tar.gz )
#( rpm_make -p mpc-0.8.2 -s mpc-0.8.2.spec -u http://www.multiprecision.org/mpc/download/mpc-0.8.2.tar.gz ) #( rpm_make -p mpc-0.8.2 -s mpc-0.8.2.spec -u http://www.multiprecision.org/mpc/download/mpc-0.8.2.tar.gz )
#( rpm_make -p gcc-4.5.1 -s gcc-4.5.1.spec -u ftp://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.gz ) #( rpm_make -p gcc-4.5.1 -s gcc-4.5.1.spec -u ftp://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.gz )
#
# Uncomment the following 4 lines for gcc-4.6.3. You need gmp, mpfr and mpc for gcc-4.6.3 # Uncomment the following 3 lines for gcc-4.4.5. You need gmp and mpfr for gcc-4.4.5
#( rpm_make -p gmp-5.0.5 -s gmp-5.0.5.spec -u ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.5.tar.bz2 ) #( rpm_make -p gmp-5.0.1 -s gmp-5.0.1.spec -u ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.gz )
#( rpm_make -p mpfr-3.1.0 -s mpfr-3.1.0.spec -u ftp://ftp.gnu.org/gnu/mpfr/mpfr-3.1.0.tar.gz ) #( rpm_make -p mpfr-3.0.1 -s mpfr-3.0.1.spec -u ftp://ftp.gnu.org/gnu/mpfr/mpfr-3.0.1.tar.gz )
#( rpm_make -p mpc-0.9 -s mpc-0.9.spec -u http://www.multiprecision.org/mpc/download/mpc-0.9.tar.gz ) #( rpm_make -p gcc-4.4.5 -s gcc-4.4.5.spec -u ftp://ftp.gnu.org/gnu/gcc/gcc-4.4.5/gcc-4.4.5.tar.gz )
#( rpm_make -p gcc-4.6.3 -s gcc-4.6.3.spec -u ftp://ftp.gnu.org/gnu/gcc/gcc-4.6.3/gcc-4.6.3.tar.gz ) #
# Python # Python
#( rpm_make -p Python-2.7 -s Python-2.7.spec -u http://www.python.org/ftp/python/2.7/Python-2.7.tgz ) #( rpm_make -p Python-2.7 -s Python-2.7.spec -u http://www.python.org/ftp/python/2.7/Python-2.7.tgz )

View file

@ -0,0 +1,12 @@
diff -ruN ParaView-4.2.0_orig/Applications/ParaView-4.2.0_extra_install_Darwin.cmake ParaView-4.2.0/Applications/ParaView-4.2.0_extra_install_Darwin.cmake
--- ParaView-4.2.0_orig/Applications/ParaView-4.2.0_extra_install_Darwin.cmake 1969-12-31 19:00:00.000000000 -0500
+++ ParaView-4.2.0/Applications/ParaView-4.2.0_extra_install_Darwin.cmake 2013-10-02 19:00:00.000000000 -0400
@@ -0,0 +1,8 @@
+#
+# Additional install rules for Mac OS X platforms
+#
+INSTALL (DIRECTORY ../../buildObj/bin/paraview.app
+ DESTINATION ${PV_INSTALL_BIN_DIR}
+ USE_SOURCE_PERMISSIONS
+ COMPONENT Runtime)
+

View file

@ -0,0 +1,274 @@
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | foam-extend: Open Source CFD
# \\ / O peration |
# \\ / A nd | For copyright notice see file Copyright
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of foam-extend.
#
# foam-extend 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.
#
# foam-extend 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 foam-extend. If not, see <http://www.gnu.org/licenses/>.
#
# Script
# RPM spec file for ParaView-4.2.0
#
# Description
# RPM spec file for creating a relocatable RPM
#
# Authors:
# Martin Beaudoin, Hydro-Quebec, (2010)
# Andreas Feymark, Chalmers University of Technology, (2013)
#
#------------------------------------------------------------------------------
# We grab the value of WM_THIRD_PARTY and WM_OPTIONS from the environment variable
%{expand:%%define _WM_THIRD_PARTY_DIR %(echo $WM_THIRD_PARTY_DIR)}
%{expand:%%define _WM_OPTIONS %(echo $WM_OPTIONS)}
# Disable the generation of debuginfo packages
%define debug_package %{nil}
# The topdir needs to point to the $WM_THIRD_PARTY/rpmbuild directory
%define _topdir %{_WM_THIRD_PARTY_DIR}/rpmBuild
%define _tmppath %{_topdir}/tmp
# Will install the package directly $WM_THIRD_PARTY_DIR
# Some comments about package relocation:
# By using this prefix for the Prefix: parameter in this file, you will make this
# package relocatable.
#
# This is fine, as long as your software is itself relocatable.
#
# Simply take note that libraries built with libtool are not relocatable because the
# prefix we specify will be hard-coded in the library .la files.
# Ref: http://sourceware.org/autobook/autobook/autobook_80.html
#
# In that case, if you ever change the value of the $WM_THIRD_PARTY_DIR, you will
# not be able to reutilize this RPM, even though it is relocatable. You will need to
# regenerate the RPM.
#
%define _prefix %{_WM_THIRD_PARTY_DIR}
%define name ParaView
%define release %{_WM_OPTIONS}
%define version 4.2.0
%define buildroot %{_topdir}/BUILD/%{name}-%{version}-root
BuildRoot: %{buildroot}
Summary: ParaView
License: Unkown
Name: %{name}
Version: %{version}
Release: %{release}
URL: http://www.paraview.org/files/v4.2/
Source: %url/%{name}-v%{version}-source.tar.gz
Prefix: %{_prefix}
Group: Development/Tools
Patch0: paraview-4.2.0.patch_darwin
%define _installPrefix %{_prefix}/packages/%{name}-%{version}/platforms/%{_WM_OPTIONS}
#--------------------------------------------------------------------------
#
# Here, we define default compiling options for cmake
#
# One can override the option on the commande line : --define='MACRO EXPR'
#
%{!?_withVerbose: %define _withVerbose false}
%{!?_withMesa: %define _withMesa false}
%{!?_withMPI: %define _withMPI false}
%{!?_withPython: %define _withPython false}
%{!?_withQt: %define _withQt true}
%{!?_qmakePath: %define _qmakePath Undefined}
%{!?_mesaIncludePath: %define _mesaIncludePath Undefined}
%{!?_mesaLibPath: %define _mesaLibPath Undefined}
%{!?_pythonLibPath: %define _pythonLibPath Undefined}
#--------------------------------------------------------------------------
%description
%{summary}
%prep
%setup -q -n %{name}-v%{version}-source
%ifos darwin
%patch0 -p1
%endif
%build
#
# set CMake cache variables
#
addCMakeVariable()
{
while [ -n "$1" ]
do
CMAKE_VARIABLES="$CMAKE_VARIABLES -D$1"
shift
done
}
# export WM settings in a form that GNU configure recognizes
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
[ -n "$WM_CFLAGS" ] && export CFLAGS="$WM_CFLAGS"
[ -n "$WM_CXXFLAGS" ] && export CXXFLAGS="$WM_CXXFLAGS"
[ -n "$WM_LDFLAGS" ] && export LDFLAGS="$WM_LDFLAGS"
set +x
echo ""
echo "Compilation options:"
echo " _withVerbose : %{_withVerbose}"
echo " _withMesa : %{_withMesa}"
echo " _withMPI : %{_withMPI}"
echo " _withPython : %{_withPython}"
echo " _withQt : %{_withQt}"
echo " _qmakePath : %{_qmakePath}"
echo " _mesaIncludePath : %{_mesaIncludePath}"
echo " _mesaLibPath : %{_mesaLibPath}"
echo " _pythonLibPath : %{_pythonLibPath}"
echo ""
set -x
# start with these general settings
addCMakeVariable VTK_USE_TK:BOOL=OFF
addCMakeVariable BUILD_SHARED_LIBS:BOOL=ON VTK_USE_RPATH:BOOL=OFF
addCMakeVariable CMAKE_BUILD_TYPE:STRING=Release
# include development files in "make install"
addCMakeVariable PARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON
# new alternative to "make HTMLDocumentation"
addCMakeVariable PARAVIEW_GENERATE_PROXY_DOCUMENTATION:BOOL=ON
%ifos darwin
# Additional installation rules for Mac OS X
addCMakeVariable PARAVIEW_EXTRA_INSTALL_RULES_FILE:FILEPATH=%{_topdir}/BUILD/%{name}-%{version}/Applications/ParaView-3.8.1_extra_install_Darwin.cmake
%endif
# Add the value of _qmakePath for QT_QMAKE_EXECUTABLE
addCMakeVariable QT_QMAKE_EXECUTABLE:FILEPATH=%{_qmakePath}
echo "CMAKE_VARIABLES: $CMAKE_VARIABLES"
mkdir -p ./buildObj
cd ./buildObj
cmake \
-DCMAKE_INSTALL_PREFIX:PATH=%{_installPrefix} \
$CMAKE_VARIABLES \
..
[ -z "$WM_NCOMPPROCS" ] && WM_NCOMPPROCS=1
make -j $WM_NCOMPPROCS
%install
# On OpenSUSE, rpmbuild, will choke when detecting unreferenced symlinks
# created during installation.
# Qt version 4.6.3 will generate some unreferenced symlinks when
# ParaView is compiled and installed. By enabling the following
# environment variable, the command brp-symlink will still complain
# about missing link targets, but it won't stop rpmbuild from generating
# the final rpm.
# For all other Unix distros, this is a no-op.
export NO_BRP_STALE_LINK_ERROR=yes
cd buildObj
make install DESTDIR=$RPM_BUILD_ROOT
# Creation of foam-extend specific .csh and .sh files"
echo ""
echo "Generating foam-extend specific .csh and .sh files for the package %{name}-%{version}"
echo ""
#
# Generate package specific .sh file for foam-extend
#
mkdir -p $RPM_BUILD_ROOT/%{_installPrefix}/etc
cat << DOT_SH_EOF > $RPM_BUILD_ROOT/%{_installPrefix}/etc/%{name}-%{version}.sh
# Load %{name}-%{version} libraries and binaries if available
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export PARAVIEW_DIR=\$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
export PARAVIEW_BIN_DIR=\$PARAVIEW_DIR/bin
export PARAVIEW_LIB_DIR=\$PARAVIEW_DIR/lib
export PARAVIEW_INCLUDE_DIR=\$PARAVIEW_DIR/include/paraview-4.2
export PARAVIEW_VERSION=%{version}
# NB: It is important to set the PV_PLUGIN_PATH location to a directory containing only the ParaView plugins.
# Otherwise, paraview will try to automatically autoload each and every dynamic library it can find in the
# specified directory to see if a given library is a paraview plugin.
# In the case of \$FOAM_LIBBIN, with over 80 libraries, this is a total waste of time that will slow down the
# startup of paraview or even make paraview crash on startup.
export PV_PLUGIN_PATH=\$FOAM_LIBBIN/paraview_plugins
[ -d \$PARAVIEW_LIB_DIR/paraview-4.2 ] && _foamAddLib \$PARAVIEW_LIB_DIR/paraview-4.2
# Enable access to the package applications if present
[ -d \$PARAVIEW_BIN_DIR ] && _foamAddPath \$PARAVIEW_BIN_DIR
# Additional binary path if running on Mac OS X
[ -d \$PARAVIEW_BIN_DIR/paraview.app/Contents/MacOS ] && _foamAddPath \$PARAVIEW_BIN_DIR/paraview.app/Contents/MacOS
DOT_SH_EOF
#
# Generate package specific .csh file for foam-extend
#
cat << DOT_CSH_EOF > $RPM_BUILD_ROOT/%{_installPrefix}/etc/%{name}-%{version}.csh
# Load %{name}-%{version} libraries and binaries if available
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
setenv PARAVIEW_DIR \$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
setenv PARAVIEW_BIN_DIR \$PARAVIEW_DIR/bin
setenv PARAVIEW_LIB_DIR \$PARAVIEW_DIR/lib
setenv PARAVIEW_INCLUDE_DIR \$PARAVIEW_DIR/include/paraview-4.2
setenv PARAVIEW_VERSION %{version}
# NB: It is important to set the PV_PLUGIN_PATH location to a directory containing only the ParaView plugins.
# Otherwise, paraview will try to automatically autoload each and every dynamic library it can find in the
# specified directory to see if a given library is a paraview plugin.
# In the case of \$FOAM_LIBBIN, with over 80 libraries, this is a total waste of time that will slow down the
# startup of paraview or even make paraview crash on startup.
setenv PV_PLUGIN_PATH \$FOAM_LIBBIN/paraview_plugins
if ( -e \$PARAVIEW_BIN_DIR ) then
_foamAddPath \$PARAVIEW_BIN_DIR
endif
if ( -e \$PARAVIEW_LIB_DIR/paraview-4.2 ) then
_foamAddLib \$PARAVIEW_LIB_DIR/paraview-4.2
endif
# Additional binary path if running on Mac OS X
if ( -e \$PARAVIEW_BIN_DIR/paraview.app/Contents/MacOS ) then
_foamAddPath \$PARAVIEW_BIN_DIR/paraview.app/Contents/MacOS
endif
DOT_CSH_EOF
#finally, generate a .tgz file for systems where using rpm for installing packages
# as a non-root user might be a problem.
(mkdir -p %{_topdir}/TGZS/%{_target_cpu}; cd $RPM_BUILD_ROOT/%{_prefix}; tar -zcvf %{_topdir}/TGZS/%{_target_cpu}/%{name}-%{version}.tgz packages/%{name}-%{version})
%clean
%files
%defattr(-,root,root)
%{_installPrefix}

174
ThirdParty/rpmBuild/SPECS/gcc-4.7.4.spec vendored Normal file
View file

@ -0,0 +1,174 @@
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | foam-extend: Open Source CFD
# \\ / O peration |
# \\ / A nd | For copyright notice see file Copyright
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of foam-extend.
#
# foam-extend 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.
#
# foam-extend 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 foam-extend. If not, see <http://www.gnu.org/licenses/>.
#
# Script
# RPM spec file for gcc-4.7.4
#
# Description
# RPM spec file for creating a relocatable RPM
#
# Author:
# Hrvoje Jasak, Wikki Ltd. (2015)
#
#------------------------------------------------------------------------------
# We grab the value of WM_THIRD_PARTY and WM_OPTIONS from the environment variable
%{expand:%%define _WM_THIRD_PARTY_DIR %(echo $WM_THIRD_PARTY_DIR)}
%{expand:%%define _WM_OPTIONS %(echo $WM_OPTIONS)}
# Disable the generation of debuginfo packages
%define debug_package %{nil}
# The topdir needs to point to the $WM_THIRD_PARTY/rpmbuild directory
%define _topdir %{_WM_THIRD_PARTY_DIR}/rpmBuild
%define _tmppath %{_topdir}/tmp
# Will install the package directly $WM_THIRD_PARTY_DIR
# Some comments about package relocation:
# By using this prefix for the Prefix: parameter in thi file, you will make this
# package relocatable.
#
# This is fine, as long as your software is itself relocatable.
#
# Simply take note that libraries built with libtool are not relocatable because the
# prefix we specify will be hard-coded in the library .la files.
# Ref: http://sourceware.org/autobook/autobook/autobook_80.html
#
# In that case, if you ever change the value of the $WM_THIRD_PARTY_DIR, you will
# not be able to reutilize this RPM, even though it is relocatable. You will need to
# regenerate the RPM.
#
%define _prefix %{_WM_THIRD_PARTY_DIR}
%define name gcc
%define release %{_WM_OPTIONS}
%define version 4.7.4
%define buildroot %{_topdir}/BUILD/%{name}-%{version}-root
BuildRoot: %{buildroot}
Summary: gcc
License: Unkown
Name: %{name}
Version: %{version}
Release: %{release}
URL: ftp://ftp.gnu.org/gnu/gcc/gcc-4.7.4
Source: %url/%{name}-%{version}.tar.gz
Prefix: %{_prefix}
Group: Development/Tools
%define _installPrefix %{_prefix}/packages/%{name}-%{version}/platforms/%{_WM_OPTIONS}
%description
%{summary}
%prep
%setup -q
%build
# export WM settings in a form that GNU configure recognizes
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
[ -n "$WM_CFLAGS" ] && export CFLAGS="$WM_CFLAGS"
[ -n "$WM_CXXFLAGS" ] && export CXXFLAGS="$WM_CXXFLAGS"
[ -n "$WM_LDFLAGS" ] && export LDFLAGS="$WM_LDFLAGS"
GMP_VERSION=gmp-5.1.2
MPFR_VERSION=mpfr-3.1.2
MPC_VERSION=mpc-1.0.1
mkdir ./objBuildDir
cd ./objBuildDir
../configure \
--prefix=%{_installPrefix} \
--enable-languages=c,c++ \
--enable-shared \
--disable-multilib \
--with-mpc=$WM_THIRD_PARTY_DIR/packages/$MPC_VERSION/platforms/$WM_OPTIONS \
--with-gmp=$WM_THIRD_PARTY_DIR/packages/$GMP_VERSION/platforms/$WM_OPTIONS \
--with-mpfr=$WM_THIRD_PARTY_DIR/packages/$MPFR_VERSION/platforms/$WM_OPTIONS
[ -z "$WM_NCOMPPROCS" ] && WM_NCOMPPROCS=1
make -j $WM_NCOMPPROCS
%install
cd ./objBuildDir
make install DESTDIR=$RPM_BUILD_ROOT
# Creation of foam-extend specific .csh and .sh files"
echo ""
echo "Generating foam-extend specific .csh and .sh files for the package %{name}-%{version}"
echo ""
#
# Generate package specific .sh file for foam-extend
#
mkdir -p $RPM_BUILD_ROOT/%{_installPrefix}/etc
cat << DOT_SH_EOF > $RPM_BUILD_ROOT/%{_installPrefix}/etc/%{name}-%{version}.sh
# Load %{name}-%{version} libraries and binaries if available
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export GCC_DIR=\$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
[ -d \$GCC_DIR/lib ] && _foamAddLib \$GCC_DIR/lib
[ -d \$GCC_DIR/lib64 ] && _foamAddLib \$GCC_DIR/lib64
# Enable access to the package applications if present
[ -d \$GCC_DIR/bin ] && _foamAddPath \$GCC_DIR/bin
DOT_SH_EOF
#
# Generate package specific .csh file for foam-extend
#
cat << DOT_CSH_EOF > $RPM_BUILD_ROOT/%{_installPrefix}/etc/%{name}-%{version}.csh
# Load %{name}-%{version} libraries and binaries if available
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
setenv GCC_DIR \$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
if ( -e \$GCC_DIR/lib ) then
_foamAddLib \$GCC_DIR/lib
endif
if ( -e \$GCC_DIR/lib64 ) then
_foamAddLib \$GCC_DIR/lib64
endif
if ( -e \$GCC_DIR/bin ) then
_foamAddPath \$GCC_DIR/bin
endif
DOT_CSH_EOF
#finally, generate a .tgz file for systems where using rpm for installing packages
# as a non-root user might be a problem.
(mkdir -p %{_topdir}/TGZS/%{_target_cpu}; cd $RPM_BUILD_ROOT/%{_prefix}; tar -zcvf %{_topdir}/TGZS/%{_target_cpu}/%{name}-%{version}.tgz packages/%{name}-%{version})
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root)
%{_installPrefix}

174
ThirdParty/rpmBuild/SPECS/gcc-4.9.2.spec vendored Normal file
View file

@ -0,0 +1,174 @@
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | foam-extend: Open Source CFD
# \\ / O peration |
# \\ / A nd | For copyright notice see file Copyright
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of foam-extend.
#
# foam-extend 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.
#
# foam-extend 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 foam-extend. If not, see <http://www.gnu.org/licenses/>.
#
# Script
# RPM spec file for gcc-4.9.2
#
# Description
# RPM spec file for creating a relocatable RPM
#
# Author:
# Hrvoje Jasak, Wikki Ltd. (2015)
#
#------------------------------------------------------------------------------
# We grab the value of WM_THIRD_PARTY and WM_OPTIONS from the environment variable
%{expand:%%define _WM_THIRD_PARTY_DIR %(echo $WM_THIRD_PARTY_DIR)}
%{expand:%%define _WM_OPTIONS %(echo $WM_OPTIONS)}
# Disable the generation of debuginfo packages
%define debug_package %{nil}
# The topdir needs to point to the $WM_THIRD_PARTY/rpmbuild directory
%define _topdir %{_WM_THIRD_PARTY_DIR}/rpmBuild
%define _tmppath %{_topdir}/tmp
# Will install the package directly $WM_THIRD_PARTY_DIR
# Some comments about package relocation:
# By using this prefix for the Prefix: parameter in thi file, you will make this
# package relocatable.
#
# This is fine, as long as your software is itself relocatable.
#
# Simply take note that libraries built with libtool are not relocatable because the
# prefix we specify will be hard-coded in the library .la files.
# Ref: http://sourceware.org/autobook/autobook/autobook_80.html
#
# In that case, if you ever change the value of the $WM_THIRD_PARTY_DIR, you will
# not be able to reutilize this RPM, even though it is relocatable. You will need to
# regenerate the RPM.
#
%define _prefix %{_WM_THIRD_PARTY_DIR}
%define name gcc
%define release %{_WM_OPTIONS}
%define version 4.9.2
%define buildroot %{_topdir}/BUILD/%{name}-%{version}-root
BuildRoot: %{buildroot}
Summary: gcc
License: Unkown
Name: %{name}
Version: %{version}
Release: %{release}
URL: ftp://ftp.gnu.org/gnu/gcc/gcc-4.9.2
Source: %url/%{name}-%{version}.tar.gz
Prefix: %{_prefix}
Group: Development/Tools
%define _installPrefix %{_prefix}/packages/%{name}-%{version}/platforms/%{_WM_OPTIONS}
%description
%{summary}
%prep
%setup -q
%build
# export WM settings in a form that GNU configure recognizes
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
[ -n "$WM_CFLAGS" ] && export CFLAGS="$WM_CFLAGS"
[ -n "$WM_CXXFLAGS" ] && export CXXFLAGS="$WM_CXXFLAGS"
[ -n "$WM_LDFLAGS" ] && export LDFLAGS="$WM_LDFLAGS"
GMP_VERSION=gmp-5.1.2
MPFR_VERSION=mpfr-3.1.2
MPC_VERSION=mpc-1.0.1
mkdir ./objBuildDir
cd ./objBuildDir
../configure \
--prefix=%{_installPrefix} \
--enable-languages=c,c++ \
--enable-shared \
--disable-multilib \
--with-mpc=$WM_THIRD_PARTY_DIR/packages/$MPC_VERSION/platforms/$WM_OPTIONS \
--with-gmp=$WM_THIRD_PARTY_DIR/packages/$GMP_VERSION/platforms/$WM_OPTIONS \
--with-mpfr=$WM_THIRD_PARTY_DIR/packages/$MPFR_VERSION/platforms/$WM_OPTIONS
[ -z "$WM_NCOMPPROCS" ] && WM_NCOMPPROCS=1
make -j $WM_NCOMPPROCS
%install
cd ./objBuildDir
make install DESTDIR=$RPM_BUILD_ROOT
# Creation of foam-extend specific .csh and .sh files"
echo ""
echo "Generating foam-extend specific .csh and .sh files for the package %{name}-%{version}"
echo ""
#
# Generate package specific .sh file for foam-extend
#
mkdir -p $RPM_BUILD_ROOT/%{_installPrefix}/etc
cat << DOT_SH_EOF > $RPM_BUILD_ROOT/%{_installPrefix}/etc/%{name}-%{version}.sh
# Load %{name}-%{version} libraries and binaries if available
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export GCC_DIR=\$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
[ -d \$GCC_DIR/lib ] && _foamAddLib \$GCC_DIR/lib
[ -d \$GCC_DIR/lib64 ] && _foamAddLib \$GCC_DIR/lib64
# Enable access to the package applications if present
[ -d \$GCC_DIR/bin ] && _foamAddPath \$GCC_DIR/bin
DOT_SH_EOF
#
# Generate package specific .csh file for foam-extend
#
cat << DOT_CSH_EOF > $RPM_BUILD_ROOT/%{_installPrefix}/etc/%{name}-%{version}.csh
# Load %{name}-%{version} libraries and binaries if available
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
setenv GCC_DIR \$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
if ( -e \$GCC_DIR/lib ) then
_foamAddLib \$GCC_DIR/lib
endif
if ( -e \$GCC_DIR/lib64 ) then
_foamAddLib \$GCC_DIR/lib64
endif
if ( -e \$GCC_DIR/bin ) then
_foamAddPath \$GCC_DIR/bin
endif
DOT_CSH_EOF
#finally, generate a .tgz file for systems where using rpm for installing packages
# as a non-root user might be a problem.
(mkdir -p %{_topdir}/TGZS/%{_target_cpu}; cd $RPM_BUILD_ROOT/%{_prefix}; tar -zcvf %{_topdir}/TGZS/%{_target_cpu}/%{name}-%{version}.tgz packages/%{name}-%{version})
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root)
%{_installPrefix}

155
ThirdParty/rpmBuild/SPECS/gmp-4.3.2.spec vendored Normal file
View file

@ -0,0 +1,155 @@
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | foam-extend: Open Source CFD
# \\ / O peration |
# \\ / A nd | For copyright notice see file Copyright
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of foam-extend.
#
# foam-extend 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.
#
# foam-extend 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 foam-extend. If not, see <http://www.gnu.org/licenses/>.
#
# Script
# RPM spec file for gmp-4.3.2
#
# Description
# RPM spec file for creating a relocatable RPM
#
# Author:
# Martin Beaudoin, Hydro-Quebec, (2010)
#
#------------------------------------------------------------------------------
# We grab the value of WM_THIRD_PARTY and WM_OPTIONS from the environment variable
%{expand:%%define _WM_THIRD_PARTY_DIR %(echo $WM_THIRD_PARTY_DIR)}
%{expand:%%define _WM_OPTIONS %(echo $WM_OPTIONS)}
# Disable the generation of debuginfo packages
%define debug_package %{nil}
# The topdir needs to point to the $WM_THIRD_PARTY/rpmbuild directory
%define _topdir %{_WM_THIRD_PARTY_DIR}/rpmBuild
%define _tmppath %{_topdir}/tmp
# Will install the package directly $WM_THIRD_PARTY_DIR
# Some comments about package relocation:
# By using this prefix for the Prefix: parameter in thi file, you will make this
# package relocatable.
#
# This is fine, as long as your software is itself relocatable.
#
# Simply take note that libraries built with libtool are not relocatable because the
# prefix we specify will be hard-coded in the library .la files.
# Ref: http://sourceware.org/autobook/autobook/autobook_80.html
#
# In that case, if you ever change the value of the $WM_THIRD_PARTY_DIR, you will
# not be able to reutilize this RPM, even though it is relocatable. You will need to
# regenerate the RPM.
#
%define _prefix %{_WM_THIRD_PARTY_DIR}
%define name gmp
%define release %{_WM_OPTIONS}
%define version 4.3.2
%define buildroot %{_topdir}/BUILD/%{name}-%{version}-root
BuildRoot: %{buildroot}
Summary: gmp
License: Unkown
Name: %{name}
Version: %{version}
Release: %{release}
URL: ftp://ftp.gnu.org/gnu/gmp
Source: %url/%{name}-%{version}.tar.bz2
Prefix: %{_prefix}
Group: Development/Tools
%define _installPrefix %{_prefix}/packages/%{name}-%{version}/platforms/%{_WM_OPTIONS}
%description
%{summary}
%prep
%setup -q
%build
# export WM settings in a form that GNU configure recognizes
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
[ -n "$WM_CFLAGS" ] && export CFLAGS="$WM_CFLAGS"
[ -n "$WM_CXXFLAGS" ] && export CXXFLAGS="$WM_CXXFLAGS"
[ -n "$WM_LDFLAGS" ] && export LDFLAGS="$WM_LDFLAGS"
./configure --prefix=%{_installPrefix}
[ -z "$WM_NCOMPPROCS" ] && WM_NCOMPPROCS=1
make -j $WM_NCOMPPROCS
%install
make install DESTDIR=$RPM_BUILD_ROOT
# Creation of foam-extend specific .csh and .sh files"
echo ""
echo "Generating foam-extend specific .csh and .sh files for the package %{name}-%{version}"
echo ""
#
# Generate package specific .sh file for foam-extend
#
mkdir -p $RPM_BUILD_ROOT/%{_installPrefix}/etc
cat << DOT_SH_EOF > $RPM_BUILD_ROOT/%{_installPrefix}/etc/%{name}-%{version}.sh
# Load %{name}-%{version} libraries and binaries if available
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export GMP_DIR=\$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
[ -d \$GMP_DIR/lib ] && _foamAddLib \$GMP_DIR/lib
# Enable access to the package applications if present
[ -d \$GMP_DIR/bin ] && _foamAddPath \$GMP_DIR/bin
DOT_SH_EOF
#
# Generate package specific .csh file for foam-extend
#
cat << DOT_CSH_EOF > $RPM_BUILD_ROOT/%{_installPrefix}/etc/%{name}-%{version}.csh
# Load %{name}-%{version} libraries and binaries if available
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
setenv GMP_DIR \$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
if ( -e \$GMP_DIR/lib ) then
_foamAddLib \$GMP_DIR/lib
endif
if ( -e \$GMP_DIR/bin ) then
_foamAddPath \$GMP_DIR/bin
endif
DOT_CSH_EOF
#finally, generate a .tgz file for systems where using rpm for installing packages
# as a non-root user might be a problem.
(mkdir -p %{_topdir}/TGZS/%{_target_cpu}; cd $RPM_BUILD_ROOT/%{_prefix}; tar -zcvf %{_topdir}/TGZS/%{_target_cpu}/%{name}-%{version}.tgz packages/%{name}-%{version})
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root)
%{_installPrefix}/etc
%{_installPrefix}/include
%{_installPrefix}/lib
%{_installPrefix}/share

View file

@ -0,0 +1,157 @@
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | foam-extend: Open Source CFD
# \\ / O peration |
# \\ / A nd | For copyright notice see file Copyright
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of foam-extend.
#
# foam-extend 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.
#
# foam-extend 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 foam-extend. If not, see <http://www.gnu.org/licenses/>.
#
# Script
# RPM spec file for mpfr-2.4.2
#
# Description
# RPM spec file for creating a relocatable RPM
#
# Author:
# Martin Beaudoin, Hydro-Quebec, (2010)
#
#------------------------------------------------------------------------------
# We grab the value of WM_THIRD_PARTY and WM_OPTIONS from the environment variable
%{expand:%%define _WM_THIRD_PARTY_DIR %(echo $WM_THIRD_PARTY_DIR)}
%{expand:%%define _WM_OPTIONS %(echo $WM_OPTIONS)}
# Disable the generation of debuginfo packages
%define debug_package %{nil}
# The topdir needs to point to the $WM_THIRD_PARTY/rpmbuild directory
%define _topdir %{_WM_THIRD_PARTY_DIR}/rpmBuild
%define _tmppath %{_topdir}/tmp
# Will install the package directly $WM_THIRD_PARTY_DIR
# Some comments about package relocation:
# By using this prefix for the Prefix: parameter in thi file, you will make this
# package relocatable.
#
# This is fine, as long as your software is itself relocatable.
#
# Simply take note that libraries built with libtool are not relocatable because the
# prefix we specify will be hard-coded in the library .la files.
# Ref: http://sourceware.org/autobook/autobook/autobook_80.html
#
# In that case, if you ever change the value of the $WM_THIRD_PARTY_DIR, you will
# not be able to reutilize this RPM, even though it is relocatable. You will need to
# regenerate the RPM.
#
%define _prefix %{_WM_THIRD_PARTY_DIR}
%define name mpfr
%define release %{_WM_OPTIONS}
%define version 2.4.2
%define buildroot %{_topdir}/BUILD/%{name}-%{version}-root
BuildRoot: %{buildroot}
Summary: mpfr
License: Unkown
Name: %{name}
Version: %{version}
Release: %{release}
URL: http://www.mpfr.org/mpfr-current
Source: %url/%{name}-%{version}.tar.gz
Prefix: %{_prefix}
Group: Development/Tools
%define _installPrefix %{_prefix}/packages/%{name}-%{version}/platforms/%{_WM_OPTIONS}
%description
%{summary}
%prep
%setup -q
%build
# export WM settings in a form that GNU configure recognizes
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
[ -n "$WM_CFLAGS" ] && export CFLAGS="$WM_CFLAGS"
[ -n "$WM_CXXFLAGS" ] && export CXXFLAGS="$WM_CXXFLAGS"
[ -n "$WM_LDFLAGS" ] && export LDFLAGS="$WM_LDFLAGS"
GMP_VERSION=gmp-5.1.2
./configure \
--prefix=%{_installPrefix} \
--with-gmp=$WM_THIRD_PARTY_DIR/packages/$GMP_VERSION/platforms/$WM_OPTIONS
[ -z "$WM_NCOMPPROCS" ] && WM_NCOMPPROCS=1
make -j $WM_NCOMPPROCS
%install
make install DESTDIR=$RPM_BUILD_ROOT
# Creation of foam-extend specific .csh and .sh files"
echo ""
echo "Generating foam-extend specific .csh and .sh files for the package %{name}-%{version}"
echo ""
#
# Generate package specific .sh file for foam-extend
#
mkdir -p $RPM_BUILD_ROOT/%{_installPrefix}/etc
cat << DOT_SH_EOF > $RPM_BUILD_ROOT/%{_installPrefix}/etc/%{name}-%{version}.sh
# Load %{name}-%{version} libraries and binaries if available
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export MPFR_DIR=\$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
[ -d \$MPFR_DIR/lib ] && _foamAddLib \$MPFR_DIR/lib
# Enable access to the package applications if present
[ -d \$MPFR_DIR/bin ] && _foamAddPath \$MPFR_DIR/bin
DOT_SH_EOF
#
# Generate package specific .csh file for foam-extend
#
cat << DOT_CSH_EOF > $RPM_BUILD_ROOT/%{_installPrefix}/etc/%{name}-%{version}.csh
# Load %{name}-%{version} libraries and binaries if available
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
setenv MPFR_DIR \$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
if ( -e \$MPFR_DIR/lib ) then
_foamAddLib \$MPFR_DIR/lib
endif
if ( -e \$MPFR_DIR/bin ) then
_foamAddPath \$MPFR_DIR/bin
endif
DOT_CSH_EOF
#finally, generate a .tgz file for systems where using rpm for installing packages
# as a non-root user might be a problem.
(mkdir -p %{_topdir}/TGZS/%{_target_cpu}; cd $RPM_BUILD_ROOT/%{_prefix}; tar -zcvf %{_topdir}/TGZS/%{_target_cpu}/%{name}-%{version}.tgz packages/%{name}-%{version})
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root)
%{_installPrefix}

View file

@ -0,0 +1,183 @@
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | foam-extend: Open Source CFD
# \\ / O peration |
# \\ / A nd | For copyright notice see file Copyright
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of foam-extend.
#
# foam-extend 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.
#
# foam-extend 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 foam-extend. If not, see <http://www.gnu.org/licenses/>.
#
# Script
# RPM spec file for qt-everywhere-opensource-src-4.8.6
#
# Description
# RPM spec file for creating a relocatable RPM
#
# Author:
# Martin Beaudoin, Hydro-Quebec, (2014)
#
#------------------------------------------------------------------------------
# We grab the value of WM_THIRD_PARTY and WM_OPTIONS from the environment variable
%{expand:%%define _WM_THIRD_PARTY_DIR %(echo $WM_THIRD_PARTY_DIR)}
%{expand:%%define _WM_OPTIONS %(echo $WM_OPTIONS)}
# Disable the generation of debuginfo packages
%define debug_package %{nil}
# The topdir needs to point to the $WM_THIRD_PARTY/rpmbuild directory
%define _topdir %{_WM_THIRD_PARTY_DIR}/rpmBuild
%define _tmppath %{_topdir}/tmp
# Will install the package directly $WM_THIRD_PARTY_DIR
# Some comments about package relocation:
# By using this prefix for the Prefix: parameter in this file, you will make this
# package relocatable.
#
# This is fine, as long as your software is itself relocatable.
#
# Simply take note that libraries built with libtool are not relocatable because the
# prefix we specify will be hard-coded in the library .la files.
# Ref: http://sourceware.org/autobook/autobook/autobook_80.html
#
# In that case, if you ever change the value of the $WM_THIRD_PARTY_DIR, you will
# not be able to reutilize this RPM, even though it is relocatable. You will need to
# regenerate the RPM.
#
%define _prefix %{_WM_THIRD_PARTY_DIR}
%define name qt-everywhere-opensource-src
%define release %{_WM_OPTIONS}
%define version 4.8.6
%define buildroot %{_topdir}/BUILD/%{name}-%{version}-root
%define _unpackaged_files_terminate_build 0
%define _missing_doc_files_terminate_build 0
BuildRoot: %{buildroot}
Summary: qt-everywhere-opensource-src
License: Unkown
Name: %{name}
Version: %{version}
Release: %{release}
URL: http://download.qt-project.org/official_releases/qt/4.8/4.8.6
Source: %url/%{name}-%{version}.tar.gz
Prefix: %{_prefix}
Group: Development/Tools
%define _installPrefix %{_prefix}/packages/%{name}-%{version}/platforms/%{_WM_OPTIONS}
%description
%{summary}
%prep
%setup -q
%build
# export WM settings in a form that GNU configure recognizes
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
[ -n "$WM_CFLAGS" ] && export CFLAGS="$WM_CFLAGS"
[ -n "$WM_CXXFLAGS" ] && export CXXFLAGS="$WM_CXXFLAGS"
[ -n "$WM_LDFLAGS" ] && export LDFLAGS="$WM_LDFLAGS"
%ifos darwin
# Under Mac OS X, Qt 4.8 will only compile using the stock native g++ compiler supplied with Xcode.
# If your native Mac OS X g++ compiler is not located under /usr/bin, simply adjust the redefinition of the following variables accordingly.
# This is ugly, I know...
export CC=/usr/bin/gcc
export CXX=/usr/bin/g++
export PATH=/usr/bin:$PATH
%endif
./configure \
-opensource --confirm-license=yes \
-release -shared \
-nomake examples -nomake demos \
--prefix=%{_installPrefix}
# Explicitely specify LD_LIBRARY_PATH so it can find QT own libraries
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:%{_builddir}/%{name}-%{version}/lib
[ -z "$WM_NCOMPPROCS" ] && WM_NCOMPPROCS=1
make -j $WM_NCOMPPROCS
%install
# Makefiles generated by qmake do not to support the DESTDIR= option
# We need to use the INSTALL_ROOT= option instead
# Somehow, we need to clean up for the RPM to install properly
rm -rf %{_installPrefix}
make install INSTALL_ROOT=$RPM_BUILD_ROOT
# Creation of foam-extend specific .csh and .sh files"
echo ""
echo "Generating foam-extend specific .csh and .sh files for the package %{name}-%{version}"
echo ""
#
# Generate package specific .sh file for foam-extend
#
mkdir -p $RPM_BUILD_ROOT/%{_installPrefix}/etc
cat << DOT_SH_EOF > $RPM_BUILD_ROOT/%{_installPrefix}/etc/%{name}-%{version}.sh
# Load %{name}-%{version} libraries and binaries if available
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export QT_DIR=\$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
export QT_BIN_DIR=\$QT_DIR/bin
export QT_LIB_DIR=\$QT_DIR/lib
# Enable access to the runtime package applications
[ -d \$QT_BIN_DIR ] && _foamAddPath \$QT_BIN_DIR
[ -d \$QT_LIB_DIR ] && _foamAddLib \$QT_LIB_DIR
DOT_SH_EOF
#
# Generate package specific .csh file for foam-extend
#
cat << DOT_CSH_EOF > $RPM_BUILD_ROOT/%{_installPrefix}/etc/%{name}-%{version}.csh
# Load %{name}-%{version} libraries and binaries if available
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
setenv QT_DIR \$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
setenv QT_BIN_DIR \$QT_DIR/bin
setenv QT_LIB_DIR \$QT_DIR/lib
if ( -e \$QT_BIN_DIR ) then
_foamAddPath \$QT_BIN_DIR
endif
if ( -e \$QT_LIB_DIR ) then
_foamAddLib \$QT_LIB_DIR
endif
DOT_CSH_EOF
#finally, generate a .tgz file for systems where using rpm for installing packages
# as a non-root user might be a problem.
(mkdir -p %{_topdir}/TGZS/%{_target_cpu}; cd $RPM_BUILD_ROOT/%{_prefix}; tar -zcvf %{_topdir}/TGZS/%{_target_cpu}/%{name}-%{version}.tgz packages/%{name}-%{version})
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root)
%{_installPrefix}

View file

@ -0,0 +1,32 @@
{
// Bound the pressure
dimensionedScalar p1 = min(p);
dimensionedScalar p2 = max(p);
if (p1 < pMin || p2 > pMax)
{
Info<< "p: " << p1.value() << " " << p2.value()
<< ". Bounding." << endl;
p.max(pMin);
p.min(pMax);
p.correctBoundaryConditions();
}
// Bound the velocity
volScalarField magU = mag(U);
dimensionedScalar U1 = max(magU);
if (U1 > UMax)
{
Info<< "U: " << U1.value() << ". Bounding." << endl;
volScalarField Ulimiter = pos(magU - UMax)*UMax/(magU + smallU)
+ neg(magU - UMax);
Ulimiter.max(scalar(0));
Ulimiter.min(scalar(1));
U *= Ulimiter;
U.correctBoundaryConditions();
}
}

View file

@ -0,0 +1,8 @@
// Check convergence
if (maxResidual < convergenceCriterion)
{
Info<< "reached convergence criterion: " << convergenceCriterion << endl;
runTime.writeAndEnd();
Info<< "latestTime = " << runTime.timeName() << endl;
}

View file

@ -0,0 +1,4 @@
// initialize values for convergence checks
scalar maxResidual = 0;
scalar convergenceCriterion = 0;

View file

@ -52,11 +52,14 @@ int main(int argc, char *argv[])
# include "createMesh.H" # include "createMesh.H"
# include "createFields.H" # include "createFields.H"
# include "initContinuityErrs.H" # include "initContinuityErrs.H"
# include "readBlockSolverControls.H" # include "initConvergenceCheck.H"
Info<< "\nStarting time loop\n" << endl; Info<< "\nStarting time loop\n" << endl;
while (runTime.loop()) while (runTime.loop())
{ {
# include "readBlockSolverControls.H"
# include "readFieldBounds.H"
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
p.storePrevIter(); p.storePrevIter();
@ -74,7 +77,7 @@ int main(int argc, char *argv[])
# include "couplingTerms.H" # include "couplingTerms.H"
// Solve the block matrix // Solve the block matrix
UpEqn.solve(); maxResidual = cmptMax(UpEqn.solve().initialResidual());
// Retrieve solution // Retrieve solution
UpEqn.retrieveSolution(0, U.internalField()); UpEqn.retrieveSolution(0, U.internalField());
@ -87,6 +90,8 @@ int main(int argc, char *argv[])
# include "continuityErrs.H" # include "continuityErrs.H"
# include "boundPU.H"
p.relax(); p.relax();
turbulence->correct(); turbulence->correct();
@ -95,6 +100,8 @@ int main(int argc, char *argv[])
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s" << " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl; << nl << endl;
# include "convergenceCheck.H"
} }
Info<< "End\n" << endl; Info<< "End\n" << endl;

View file

@ -1,3 +1,15 @@
label pRefCell = 0; label pRefCell = 0;
scalar pRefValue = 0; scalar pRefValue = 0;
setRefCell(p, mesh.solutionDict().subDict("blockSolver"), pRefCell, pRefValue); setRefCell
(
p,
mesh.solutionDict().subDict("blockSolver"),
pRefCell,
pRefValue
);
mesh.solutionDict().subDict("blockSolver").readIfPresent
(
"convergence",
convergenceCriterion
);

View file

@ -0,0 +1,14 @@
// Read field bounds
dictionary fieldBounds = mesh.solutionDict().subDict("fieldBounds");
// Pressure bounds
dimensionedScalar pMin("pMin", p.dimensions(), 0);
dimensionedScalar pMax("pMax", p.dimensions(), 0);
fieldBounds.lookup(p.name()) >> pMin.value() >> pMax.value();
// Velocity bound
dimensionedScalar UMax("UMax", U.dimensions(), 0);
fieldBounds.lookup(U.name()) >> UMax.value();
dimensionedScalar smallU("smallU", dimVelocity, 1e-10);

View file

@ -35,7 +35,7 @@ Description
#include "wallFvPatch.H" #include "wallFvPatch.H"
#include "EulerDdtScheme.H" #include "EulerDdtScheme.H"
#include "CrankNicholsonDdtScheme.H" #include "CrankNicolsonDdtScheme.H"
#include "backwardDdtScheme.H" #include "backwardDdtScheme.H"
#include "tetFemMatrices.H" #include "tetFemMatrices.H"
@ -480,7 +480,7 @@ bool freeSurface::movePoints(const scalarField& interfacePhi)
if if
( (
ddtScheme ddtScheme
== fv::CrankNicholsonDdtScheme<vector>::typeName == fv::CrankNicolsonDdtScheme<vector>::typeName
) )
{ {
sweptVolCorr *= (1.0/2.0)*DB().deltaT().value(); sweptVolCorr *= (1.0/2.0)*DB().deltaT().value();
@ -890,7 +890,7 @@ bool freeSurface::moveMeshPoints()
if if
( (
ddtScheme ddtScheme
== fv::CrankNicholsonDdtScheme<vector>::typeName == fv::CrankNicolsonDdtScheme<vector>::typeName
) )
{ {
sweptVolCorr *= (1.0/2.0)*DB().deltaT().value(); sweptVolCorr *= (1.0/2.0)*DB().deltaT().value();

View file

@ -25,8 +25,8 @@
# aliases.csh # aliases.csh
# #
# Description # Description
# Aliases for working with OpenFOAM # Aliases for working with FOAM
# Sourced from OpenFOAM-??/etc/cshrc and/or ~/.cshrc # Sourced from FOAM-??/etc/cshrc and/or ~/.cshrc
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View file

@ -25,8 +25,8 @@
# aliases.sh # aliases.sh
# #
# Description # Description
# Aliases for working with OpenFOAM # Aliases for working with FOAM
# Sourced from OpenFOAM-??/etc/bashrc and/or ~/.bashrc # Sourced from FOAM-??/etc/bashrc and/or ~/.bashrc
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View file

@ -26,7 +26,7 @@
# #
# Description # Description
# Setup file for Ensight 8.? # Setup file for Ensight 8.?
# Sourced from OpenFOAM-?.?/etc/bashrc # Sourced from FOAM-?.?/etc/bashrc
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View file

@ -4,7 +4,7 @@
# \\ / O peration | # \\ / O peration |
# \\ / A nd | For copyright notice see file Copyright # \\ / A nd | For copyright notice see file Copyright
# \\/ M anipulation | # \\/ M anipulation |
#------------------------------------------------------------------------------- #------------------------------------------------------------------------------
# License # License
# This file is part of foam-extend. # This file is part of foam-extend.
# #
@ -26,7 +26,7 @@
# #
# Description # Description
# Startup File for Ensight 8.?. # Startup File for Ensight 8.?.
# Sourced from OpenFOAM-?.?/etc/cshrc # Sourced from FOAM-?.?/etc/cshrc
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View file

@ -26,7 +26,7 @@
# #
# Description # Description
# Setup file for paraview-3.x # Setup file for paraview-3.x
# Sourced from OpenFOAM-*/etc/bashrc # Sourced from FOAM-*/etc/bashrc
# #
# Note # Note
# The env. variable 'ParaView_DIR' is required for building plugins # The env. variable 'ParaView_DIR' is required for building plugins

View file

@ -26,7 +26,7 @@
# #
# Description # Description
# Setup file for paraview-3.x # Setup file for paraview-3.x
# Sourced from OpenFOAM-*/etc/cshrc # Sourced from FOAM-*/etc/cshrc
# #
# Note # Note
# The env. variable 'ParaView_DIR' is required for building plugins # The env. variable 'ParaView_DIR' is required for building plugins

View file

@ -26,7 +26,7 @@
# etc/bashrc # etc/bashrc
# #
# Description # Description
# Startup file for OpenFOAM # Startup file for FOAM
# Sourced from ~/.profile or ~/.bashrc # Sourced from ~/.profile or ~/.bashrc
# Should be usable by any POSIX-compliant shell (eg, ksh) # Should be usable by any POSIX-compliant shell (eg, ksh)
# #
@ -43,7 +43,7 @@ export FOAM_DEV=1
# USER EDITABLE PART # USER EDITABLE PART
# #
# either set $FOAM_INST_DIR before sourcing this file or set # either set $FOAM_INST_DIR before sourcing this file or set
# $foamInstall below to where OpenFOAM is installed # $foamInstall below to where FOAM is installed
# #
# Location of FOAM installation # Location of FOAM installation
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -379,7 +379,7 @@ SunOS)
cat <<USAGE cat <<USAGE
Your "$WM_ARCH" operating system is not supported by this release Your "$WM_ARCH" operating system is not supported by this release
of OpenFOAM. For further assistance, please contact www.extend-project.de of foam-extend. For further assistance, please contact www.foam-extend.org
USAGE USAGE
;; ;;

View file

@ -22,7 +22,7 @@ Documentation
doxyDocDirs doxyDocDirs
( (
"$WM_PROJECT_USER_DIR/Doxygen/html" "$WM_PROJECT_USER_DIR/Doxygen/html"
"~OpenFOAM/Doxygen/html" "~foam/Doxygen/html"
"$WM_PROJECT_DIR/doc/Doxygen/html" "$WM_PROJECT_DIR/doc/Doxygen/html"
); );
doxySourceFileExts doxySourceFileExts

View file

@ -25,7 +25,7 @@
# etc/cshrc # etc/cshrc
# #
# Description # Description
# Startup file for OpenFOAM # Startup file for FOAM
# Sourced from ~/.login or ~/.cshrc # Sourced from ~/.login or ~/.cshrc
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View file

@ -25,16 +25,17 @@
# etc/prefs.csh # etc/prefs.csh
# #
# Description # Description
# Preset variables for the OpenFOAM configuration - C-Shell shell syntax. # Preset variables for the FOAM configuration - C-Shell shell syntax.
# #
# The prefs.csh file will be sourced by the OpenFOAM etc/cshrc when it is # The prefs.csh file will be sourced by the FOAM etc/cshrc when it is
# found # found
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
## Specify system compiler ## Specify system compiler
## ~~~~~~~~~~~~~~~~~~~~~~~ ## ~~~~~~~~~~~~~~~~~~~~~~~
#set compilerInstall=system #set compilerInstall=System
#set compilerInstall=FOAM
# Specify system openmpi # Specify system openmpi
# ~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~
@ -161,11 +162,11 @@
#setenv ParaView_MAJOR 3.7 #setenv ParaView_MAJOR 3.7
# System identifier for the OpenFOAM CDash test harness on openfoam-extend # System identifier for the FOAM CDash test harness on foam-extend
# #
# By default, your system FQN/hostname will be used as the system identifier # By default, your system FQN/hostname will be used as the system identifier
# when publishing your test harness results on the OpenFOAM CDash server # when publishing your test harness results on the FOAM CDash server
# on openfoam-extend. # on foam-extend.
# You can override your identifier using this environment variable # You can override your identifier using this environment variable
#setenv CDASH_SUBMIT_LOCAL_HOST_ID choose_your_CDash_system_identifer #setenv CDASH_SUBMIT_LOCAL_HOST_ID choose_your_CDash_system_identifer

View file

@ -25,9 +25,9 @@
# etc/prefs.sh # etc/prefs.sh
# #
# Description # Description
# Preset variables for the OpenFOAM configuration - POSIX shell syntax. # Preset variables for the FOAM configuration - POSIX shell syntax.
# #
# The prefs.sh file will be sourced by the OpenFOAM etc/bashrc when it is # The prefs.sh file will be sourced by the FOAM etc/bashrc when it is
# found # found
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
@ -36,7 +36,8 @@ export FOAM_VERBOSE=1
# Specify system compiler # Specify system compiler
# ~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~
compilerInstall=System #compilerInstall=System
#compilerInstall=FOAM
# Specify system openmpi # Specify system openmpi
# ~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~
@ -171,11 +172,11 @@ compilerInstall=System
#export ParaView_MAJOR=3.7 #export ParaView_MAJOR=3.7
# System identifier for the OpenFOAM CDash test harness on openfoam-extend # System identifier for the FOAM CDash test harness on foam-extend
# #
# By default, your system FQN/hostname will be used as the system identifier # By default, your system FQN/hostname will be used as the system identifier
# when publishing your test harness results on the OpenFOAM CDash server # when publishing your test harness results on the FOAM CDash server
# on openfoam-extend. # on foam-extend.
# You can override your identifier using this environment variable # You can override your identifier using this environment variable
#export CDASH_SUBMIT_LOCAL_HOST_ID=choose_your_CDash_system_identifer #export CDASH_SUBMIT_LOCAL_HOST_ID=choose_your_CDash_system_identifer

View file

@ -25,8 +25,8 @@
# etc/settings.csh # etc/settings.csh
# #
# Description # Description
# Startup file for OpenFOAM # Startup file for FOAM
# Sourced from OpenFOAM-??/etc/cshrc # Sourced from FOAM-??/etc/cshrc
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
@ -51,7 +51,7 @@ setenv FOAM_LIB $WM_PROJECT_DIR/lib
setenv FOAM_LIBBIN $WM_PROJECT_DIR/lib/$WM_OPTIONS setenv FOAM_LIBBIN $WM_PROJECT_DIR/lib/$WM_OPTIONS
setenv FOAM_SRC $WM_PROJECT_DIR/src setenv FOAM_SRC $WM_PROJECT_DIR/src
# shared site configuration - similar naming convention as ~OpenFOAM expansion # shared site configuration - similar naming convention as ~FOAM expansion
setenv FOAM_SITE_APPBIN $WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/bin/$WM_OPTIONS setenv FOAM_SITE_APPBIN $WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/bin/$WM_OPTIONS
setenv FOAM_SITE_LIBBIN $WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/lib/$WM_OPTIONS setenv FOAM_SITE_LIBBIN $WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/lib/$WM_OPTIONS
@ -65,7 +65,7 @@ setenv FOAM_UTILITIES $FOAM_APP/utilities
setenv FOAM_SOLVERS $FOAM_APP/solvers setenv FOAM_SOLVERS $FOAM_APP/solvers
setenv FOAM_RUN $WM_PROJECT_USER_DIR/run setenv FOAM_RUN $WM_PROJECT_USER_DIR/run
# add OpenFOAM scripts and wmake to the path # add FOAM scripts and wmake to the path
set path=($WM_DIR $WM_PROJECT_DIR/bin $path) set path=($WM_DIR $WM_PROJECT_DIR/bin $path)
_foamAddPath $FOAM_APPBIN _foamAddPath $FOAM_APPBIN
@ -80,41 +80,49 @@ _foamAddLib $FOAM_USER_LIBBIN
# Select compiler installation # Select compiler installation
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# compilerInstall = OpenFOAM | System # compilerInstall = FOAM | System
#set compilerInstall=OpenFOAM #set compilerInstall=FOAM
#set compilerInstall=System #set compilerInstall=System
if ( ! $?compilerInstall ) then if ( ! $?compilerInstall ) then
setenv compilerInstall System setenv compilerInstall System
endif endif
switch ("$compilerInstall") switch ("$compilerInstall")
case OpenFOAM: case FOAM:
switch ("$WM_COMPILER") switch ("$WM_COMPILER")
case Gcc: case Gcc:
setenv WM_COMPILER_DIR $WM_THIRD_PARTY_DIR/gcc-4.3.3/platforms/$WM_ARCH$WM_COMPILER_ARCH setenv WM_COMPILER_DIR $WM_THIRD_PARTY_DIR/packages/gcc-4.6.4/platforms/$WM_OPTIONS
_foamAddLib $WM_THIRD_PARTY_DIR/mpfr-2.4.1/platforms/$WM_ARCH$WM_COMPILER_ARCH/lib _foamSource $WM_THIRD_PARTY_DIR/packages/gmp-5.1.2/platforms/$WM_OPTIONS/etc/gmp-5.1.2.csh
_foamAddLib $WM_THIRD_PARTY_DIR/gmp-4.2.4/platforms/$WM_ARCH$WM_COMPILER_ARCH/lib _foamSource $WM_THIRD_PARTY_DIR/packages/mpfr-3.1.2/platforms/$WM_OPTIONS/etc/mpfr-3.1.2.csh
_foamSource $WM_THIRD_PARTY_DIR/packages/mpc-1.0.1/platforms/$WM_OPTIONS/etc/mpc-1.0.1.csh
_foamSource $WM_THIRD_PARTY_DIR/packages/gcc-4.6.4/platforms/$WM_OPTIONS/etc/gcc-4.6.4.csh
breaksw
case Gcc49:
setenv WM_COMPILER_DIR $WM_THIRD_PARTY_DIR/packages/gcc-4.9.2/platforms/$WM_OPTIONS
_foamSource $WM_THIRD_PARTY_DIR/packages/gmp-5.1.2/platforms/$WM_OPTIONS/etc/gmp-5.1.2.csh
_foamSource $WM_THIRD_PARTY_DIR/packages/mpfr-3.1.2/platforms/$WM_OPTIONS/etc/mpfr-3.1.2.csh
_foamSource $WM_THIRD_PARTY_DIR/packages/mpc-1.0.1/platforms/$WM_OPTIONS/etc/mpc-1.0.1.csh
_foamSource $WM_THIRD_PARTY_DIR/packages/gcc-4.9.2/platforms/$WM_OPTIONS/etc/gcc-4.9.2.csh
breaksw
case Gcc47:
setenv WM_COMPILER_DIR $WM_THIRD_PARTY_DIR/packages/gcc-4.7.4/platforms/$WM_OPTIONS
_foamSource $WM_THIRD_PARTY_DIR/packages/gmp-5.1.2/platforms/$WM_OPTIONS/etc/gmp-5.1.2.csh
_foamSource $WM_THIRD_PARTY_DIR/packages/mpfr-3.1.2/platforms/$WM_OPTIONS/etc/mpfr-3.1.2.csh
_foamSource $WM_THIRD_PARTY_DIR/packages/mpc-1.0.1/platforms/$WM_OPTIONS/etc/mpc-1.0.1.csh
_foamSource $WM_THIRD_PARTY_DIR/packages/gcc-4.7.4/platforms/$WM_OPTIONS/etc/gcc-4.7.4.csh
breaksw breaksw
case Gcc45: case Gcc45:
setenv WM_COMPILER_DIR $WM_THIRD_PARTY_DIR/packages/gcc-4.5.1/platforms/$WM_OPTIONS setenv WM_COMPILER_DIR $WM_THIRD_PARTY_DIR/packages/gcc-4.5.1/platforms/$WM_OPTIONS
_foamSource $WM_THIRD_PARTY_DIR/packages/gmp-5.0.1/platforms/$WM_OPTIONS/etc/gmp-5.0.1.csh _foamSource $WM_THIRD_PARTY_DIR/packages/gmp-5.0.1/platforms/$WM_OPTIONS/etc/gmp-5.0.1.csh
_foamSource $WM_THIRD_PARTY_DIR/packages/mpfr-3.0.1/platforms/$WM_OPTIONS/etc/mpfr-3.0.1.csh _foamSource $WM_THIRD_PARTY_DIR/packages/mpfr-3.0.1/platforms/$WM_OPTIONS/etc/mpfr-3.0.1.csh
_foamSource $WM_THIRD_PARTY_DIR/packages/mpc-0.8.2/platforms/$WM_OPTIONS/etc/mpc-0.8.2.csh _foamSource $WM_THIRD_PARTY_DIR/packages/mpc-0.8.2/platforms/$WM_OPTIONS/etc/mpc-0.8.2.csh
_foamSource $WM_THIRD_PARTY_DIR/packages/gcc-4.5.1/platforms/$WM_OPTIONS/etc/gcc-4.5.1.csh _foamSource $WM_THIRD_PARTY_DIR/packages/gcc-4.5.1/platforms/$WM_OPTIONS/etc/gcc-4.5.1.csh
breaksw breaksw
case Gcc44: case Gcc44:
setenv WM_COMPILER_DIR $WM_THIRD_PARTY_DIR/packages/gcc-4.4.5/platforms/$WM_OPTIONS setenv WM_COMPILER_DIR $WM_THIRD_PARTY_DIR/packages/gcc-4.4.5/platforms/$WM_OPTIONS
_foamSource $WM_THIRD_PARTY_DIR/packages/mpfr-3.0.1/platforms/$WM_OPTIONS/etc/mpfr-3.0.1.csh _foamSource $WM_THIRD_PARTY_DIR/packages/gmp-5.0.1/platforms/$WM_OPTIONS/etc/gmp-5.0.1.csh
_foamSource $WM_THIRD_PARTY_DIR/packages/gmp-5.0.1/platforms/$WM_OPTIONS/etc/gmp-5.0.1.csh _foamSource $WM_THIRD_PARTY_DIR/packages/mpfr-3.0.1/platforms/$WM_OPTIONS/etc/mpfr-3.0.1.csh
_foamSource $WM_THIRD_PARTY_DIR/packages/gcc-4.4.5/platforms/$WM_OPTIONS/etc/gcc-4.4.5.csh _foamSource $WM_THIRD_PARTY_DIR/packages/gcc-4.4.5/platforms/$WM_OPTIONS/etc/gcc-4.4.5.csh
breaksw
case Gcc43:
setenv WM_COMPILER_DIR $WM_THIRD_PARTY_DIR/gcc-4.3.3/platforms/$WM_ARCH$WM_COMPILER_ARCH
_foamAddLib $WM_THIRD_PARTY_DIR/mpfr-2.4.1/platforms/$WM_ARCH$WM_COMPILER_ARCH/lib
_foamAddLib $WM_THIRD_PARTY_DIR/gmp-4.2.4/platforms/$WM_ARCH$WM_COMPILER_ARCH/lib
breaksw
case Gcc42:
setenv WM_COMPILER_DIR $WM_THIRD_PARTY_DIR/gcc-4.2.4/platforms/$WM_ARCH$WM_COMPILER_ARCH
breaksw breaksw
endsw endsw
@ -530,8 +538,8 @@ endif
# QT # QT
# ~~~~~ # ~~~~~
if ( $?QT_SYSTEM == 0 && -e "$WM_THIRD_PARTY_DIR"/packages/qt-everywhere-opensource-src-4.8.5/platforms/$WM_OPTIONS )then if ( $?QT_SYSTEM == 0 && -e "$WM_THIRD_PARTY_DIR"/packages/qt-everywhere-opensource-src-4.8.6/platforms/$WM_OPTIONS )then
_foamSource $WM_THIRD_PARTY_DIR/packages/qt-everywhere-opensource-src-4.8.5/platforms/$WM_OPTIONS/etc/qt-everywhere-opensource-src-4.8.5.csh _foamSource $WM_THIRD_PARTY_DIR/packages/qt-everywhere-opensource-src-4.8.6/platforms/$WM_OPTIONS/etc/qt-everywhere-opensource-src-4.8.6.csh
endif endif
# PARAVIEW # PARAVIEW

66
etc/settings.sh Executable file → Normal file
View file

@ -26,8 +26,8 @@
# etc/settings.sh # etc/settings.sh
# #
# Description # Description
# Startup file for OpenFOAM # Startup file for FOAM
# Sourced from OpenFOAM-??/etc/bashrc # Sourced from FOAM-??/etc/bashrc
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
@ -89,7 +89,7 @@ export FOAM_LIB=$WM_PROJECT_DIR/lib
export FOAM_LIBBIN=$WM_PROJECT_DIR/lib/$WM_OPTIONS export FOAM_LIBBIN=$WM_PROJECT_DIR/lib/$WM_OPTIONS
export FOAM_SRC=$WM_PROJECT_DIR/src export FOAM_SRC=$WM_PROJECT_DIR/src
# shared site configuration - similar naming convention as ~OpenFOAM expansion # shared site configuration - similar naming convention as ~FOAM expansion
export FOAM_SITE_APPBIN=$WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/bin/$WM_OPTIONS export FOAM_SITE_APPBIN=$WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/bin/$WM_OPTIONS
export FOAM_SITE_LIBBIN=$WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/lib/$WM_OPTIONS export FOAM_SITE_LIBBIN=$WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/lib/$WM_OPTIONS
@ -103,7 +103,7 @@ export FOAM_UTILITIES=$FOAM_APP/utilities
export FOAM_SOLVERS=$FOAM_APP/solvers export FOAM_SOLVERS=$FOAM_APP/solvers
export FOAM_RUN=$WM_PROJECT_USER_DIR/run export FOAM_RUN=$WM_PROJECT_USER_DIR/run
# add OpenFOAM scripts and wmake to the path # add FOAM scripts and wmake to the path
export PATH=$WM_DIR:$WM_PROJECT_DIR/bin:$PATH export PATH=$WM_DIR:$WM_PROJECT_DIR/bin:$PATH
_foamAddPath $FOAM_APPBIN $FOAM_SITE_APPBIN $FOAM_USER_APPBIN _foamAddPath $FOAM_APPBIN $FOAM_SITE_APPBIN $FOAM_USER_APPBIN
@ -118,43 +118,51 @@ unset compilerBin compilerLib
# Select compiler installation # Select compiler installation
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# compilerInstall = OpenFOAM | System # compilerInstall = FOAM | System
# #
# We can override the value of compilerInstall from prefs.sh # We can override the value of compilerInstall from prefs.sh
: ${compilerInstall:=System} : ${compilerInstall:=System}
# Or we can force it right here # Or we can force it right here
#compilerInstall=OpenFOAM #compilerInstall=FOAM
#compilerInstall=System #compilerInstall=System
case "${compilerInstall:-OpenFOAM}" in case "${compilerInstall}" in
OpenFOAM) FOAM)
case "$WM_COMPILER" in case "$WM_COMPILER" in
Gcc) Gcc)
export WM_COMPILER_DIR=$WM_THIRD_PARTY_DIR/gcc-4.3.3/platforms/$WM_ARCH$WM_COMPILER_ARCH export WM_COMPILER_DIR=$WM_THIRD_PARTY_DIR/packages/gcc-4.6.4/platforms/$WM_OPTIONS
_foamAddLib $WM_THIRD_PARTY_DIR/mpfr-2.4.1/platforms/$WM_ARCH$WM_COMPILER_ARCH/lib _foamSource $WM_THIRD_PARTY_DIR/packages/gmp-5.1.2/platforms/$WM_OPTIONS/etc/gmp-5.1.2.sh
_foamAddLib $WM_THIRD_PARTY_DIR/gmp-4.2.4/platforms/$WM_ARCH$WM_COMPILER_ARCH/lib _foamSource $WM_THIRD_PARTY_DIR/packages/mpfr-3.1.2/platforms/$WM_OPTIONS/etc/mpfr-3.1.2.sh
_foamSource $WM_THIRD_PARTY_DIR/packages/mpc-1.0.1/platforms/$WM_OPTIONS/etc/mpc-1.0.1.sh
_foamSource $WM_THIRD_PARTY_DIR/packages/gcc-4.6.4/platforms/$WM_OPTIONS/etc/gcc-4.6.4.csh
;;
Gcc49)
export WM_COMPILER_DIR=$WM_THIRD_PARTY_DIR/packages/gcc-4.9.2/platforms/$WM_OPTIONS
_foamSource $WM_THIRD_PARTY_DIR/packages/gmp-5.1.2/platforms/$WM_OPTIONS/etc/gmp-5.1.2.sh
_foamSource $WM_THIRD_PARTY_DIR/packages/mpfr-3.1.2/platforms/$WM_OPTIONS/etc/mpfr-3.1.2.sh
_foamSource $WM_THIRD_PARTY_DIR/packages/mpc-1.0.1/platforms/$WM_OPTIONS/etc/mpc-1.0.1.sh
_foamSource $WM_THIRD_PARTY_DIR/packages/gcc-4.9.2/platforms/$WM_OPTIONS/etc/gcc-4.9.2.csh
;;
Gcc47)
export WM_COMPILER_DIR=$WM_THIRD_PARTY_DIR/packages/gcc-4.7.4/platforms/$WM_OPTIONS
_foamSource $WM_THIRD_PARTY_DIR/packages/gmp-5.1.2/platforms/$WM_OPTIONS/etc/gmp-5.1.2.sh
_foamSource $WM_THIRD_PARTY_DIR/packages/mpfr-3.1.2/platforms/$WM_OPTIONS/etc/mpfr-3.1.2.sh
_foamSource $WM_THIRD_PARTY_DIR/packages/mpc-1.0.1/platforms/$WM_OPTIONS/etc/mpc-1.0.1.sh
_foamSource $WM_THIRD_PARTY_DIR/packages/gcc-4.7.4/platforms/$WM_OPTIONS/etc/gcc-4.7.4.csh
;; ;;
Gcc45) Gcc45)
export WM_COMPILER_DIR=$WM_THIRD_PARTY_DIR/packages/gcc-4.5.1/platforms/$WM_OPTIONS export WM_COMPILER_DIR=$WM_THIRD_PARTY_DIR/packages/gcc-4.5.1/platforms/$WM_OPTIONS
_foamSource $WM_THIRD_PARTY_DIR/packages/gmp-5.0.1/platforms/$WM_OPTIONS/etc/gmp-5.0.1.sh _foamSource $WM_THIRD_PARTY_DIR/packages/gmp-5.0.1/platforms/$WM_OPTIONS/etc/gmp-5.0.1.sh
_foamSource $WM_THIRD_PARTY_DIR/packages/mpfr-3.0.1/platforms/$WM_OPTIONS/etc/mpfr-3.0.1.sh _foamSource $WM_THIRD_PARTY_DIR/packages/mpfr-3.0.1/platforms/$WM_OPTIONS/etc/mpfr-3.0.1.sh
_foamSource $WM_THIRD_PARTY_DIR/packages/mpc-0.8.2/platforms/$WM_OPTIONS/etc/mpc-0.8.2.sh _foamSource $WM_THIRD_PARTY_DIR/packages/mpc-0.8.2/platforms/$WM_OPTIONS/etc/mpc-0.8.2.sh
_foamSource $WM_THIRD_PARTY_DIR/packages/gcc-4.5.1/platforms/$WM_OPTIONS/etc/gcc-4.5.1.sh _foamSource $WM_THIRD_PARTY_DIR/packages/gcc-4.5.1/platforms/$WM_OPTIONS/etc/gcc-4.5.1.sh
;; ;;
Gcc44) Gcc44)
export WM_COMPILER_DIR=$WM_THIRD_PARTY_DIR/packages/gcc-4.4.5/platforms/$WM_OPTIONS export WM_COMPILER_DIR=$WM_THIRD_PARTY_DIR/packages/gcc-4.4.5/platforms/$WM_OPTIONS
_foamSource $WM_THIRD_PARTY_DIR/packages/mpfr-3.0.1/platforms/$WM_OPTIONS/etc/mpfr-3.0.1.sh _foamSource $WM_THIRD_PARTY_DIR/packages/gmp-5.0.1/platforms/$WM_OPTIONS/etc/gmp-5.0.1.sh
_foamSource $WM_THIRD_PARTY_DIR/packages/gmp-5.0.1/platforms/$WM_OPTIONS/etc/gmp-5.0.1.sh _foamSource $WM_THIRD_PARTY_DIR/packages/mpfr-3.0.1/platforms/$WM_OPTIONS/etc/mpfr-3.0.1.sh
_foamSource $WM_THIRD_PARTY_DIR/packages/gcc-4.4.5/platforms/$WM_OPTIONS/etc/gcc-4.4.5.sh _foamSource $WM_THIRD_PARTY_DIR/packages/gcc-4.4.5/platforms/$WM_OPTIONS/etc/gcc-4.4.5.sh
;;
Gcc43)
export WM_COMPILER_DIR=$WM_THIRD_PARTY_DIR/gcc-4.3.3/platforms/$WM_ARCH$WM_COMPILER_ARCH
_foamAddLib $WM_THIRD_PARTY_DIR/mpfr-2.4.1/platforms/$WM_ARCH$WM_COMPILER_ARCH/lib
_foamAddLib $WM_THIRD_PARTY_DIR/gmp-4.2.4/platforms/$WM_ARCH$WM_COMPILER_ARCH/lib
;;
Gcc42)
export WM_COMPILER_DIR=$WM_THIRD_PARTY_DIR/gcc-4.2.4/platforms/$WM_ARCH$WM_COMPILER_ARCH
;; ;;
esac esac
@ -641,8 +649,8 @@ export MPI_BUFFER_SIZE
# Load QT # Load QT
# ~~~~~~~ # ~~~~~~~
[ ! -z "$QT_THIRD_PARTY" ] && [ -e $WM_THIRD_PARTY_DIR/packages/qt-everywhere-opensource-src-4.8.5/platforms/$WM_OPTIONS ] && { [ ! -z "$QT_THIRD_PARTY" ] && [ -e $WM_THIRD_PARTY_DIR/packages/qt-everywhere-opensource-src-4.8.6/platforms/$WM_OPTIONS ] && {
_foamSource $WM_THIRD_PARTY_DIR/packages/qt-everywhere-opensource-src-4.8.5/platforms/$WM_OPTIONS/etc/qt-everywhere-opensource-src-4.8.5.sh _foamSource $WM_THIRD_PARTY_DIR/packages/qt-everywhere-opensource-src-4.8.6/platforms/$WM_OPTIONS/etc/qt-everywhere-opensource-src-4.8.6.sh
} }
[ "$FOAM_VERBOSE" -a "$PS1" ] && echo " QT_DIR is initialized to: $QT_DIR" [ "$FOAM_VERBOSE" -a "$PS1" ] && echo " QT_DIR is initialized to: $QT_DIR"

View file

@ -328,7 +328,7 @@ $(ddtSchemes)/SLTSDdtScheme/SLTSDdtSchemes.C
$(ddtSchemes)/backwardDdtScheme/backwardDdtSchemes.C $(ddtSchemes)/backwardDdtScheme/backwardDdtSchemes.C
$(ddtSchemes)/boundedBackwardDdtScheme/boundedBackwardDdtScheme.C $(ddtSchemes)/boundedBackwardDdtScheme/boundedBackwardDdtScheme.C
$(ddtSchemes)/boundedBackwardDdtScheme/boundedBackwardDdtSchemes.C $(ddtSchemes)/boundedBackwardDdtScheme/boundedBackwardDdtSchemes.C
$(ddtSchemes)/CrankNicholsonDdtScheme/CrankNicholsonDdtSchemes.C $(ddtSchemes)/CrankNicolsonDdtScheme/CrankNicolsonDdtSchemes.C
$(ddtSchemes)/steadyInertialDdtScheme/steadyInertialDdtSchemes.C $(ddtSchemes)/steadyInertialDdtScheme/steadyInertialDdtSchemes.C
d2dt2Schemes = finiteVolume/d2dt2Schemes d2dt2Schemes = finiteVolume/d2dt2Schemes
@ -344,11 +344,11 @@ $(divSchemes)/gaussDivScheme/gaussDivSchemes.C
gradSchemes = finiteVolume/gradSchemes gradSchemes = finiteVolume/gradSchemes
$(gradSchemes)/gradScheme/gradSchemes.C $(gradSchemes)/gradScheme/gradSchemes.C
$(gradSchemes)/scalarGaussGrad/scalarGaussGrad.C $(gradSchemes)/gaussGrad/scalarGaussGrad.C
$(gradSchemes)/gaussGrad/gaussGrads.C $(gradSchemes)/gaussGrad/gaussGrads.C
$(gradSchemes)/beGaussGrad/beGaussGrads.C $(gradSchemes)/beGaussGrad/beGaussGrads.C
$(gradSchemes)/leastSquaresGrad/leastSquaresVectors.C $(gradSchemes)/leastSquaresGrad/leastSquaresVectors.C
$(gradSchemes)/scalarLeastSquaresGrad/scalarLeastSquaresGrad.C $(gradSchemes)/leastSquaresGrad/scalarLeastSquaresGrad.C
$(gradSchemes)/leastSquaresGrad/leastSquaresGrads.C $(gradSchemes)/leastSquaresGrad/leastSquaresGrads.C
$(gradSchemes)/extendedLeastSquaresGrad/extendedLeastSquaresVectors.C $(gradSchemes)/extendedLeastSquaresGrad/extendedLeastSquaresVectors.C
$(gradSchemes)/extendedLeastSquaresGrad/extendedLeastSquaresGrads.C $(gradSchemes)/extendedLeastSquaresGrad/extendedLeastSquaresGrads.C

View file

@ -28,7 +28,7 @@ License
#include "fvPatchFieldMapper.H" #include "fvPatchFieldMapper.H"
#include "volFields.H" #include "volFields.H"
#include "EulerDdtScheme.H" #include "EulerDdtScheme.H"
#include "CrankNicholsonDdtScheme.H" #include "CrankNicolsonDdtScheme.H"
#include "backwardDdtScheme.H" #include "backwardDdtScheme.H"
#include "steadyStateDdtScheme.H" #include "steadyStateDdtScheme.H"
@ -270,7 +270,7 @@ void advectiveFvPatchField<Type>::updateCoeffs()
if if
( (
ddtScheme == fv::EulerDdtScheme<Type>::typeName ddtScheme == fv::EulerDdtScheme<Type>::typeName
|| ddtScheme == fv::CrankNicholsonDdtScheme<Type>::typeName || ddtScheme == fv::CrankNicolsonDdtScheme<Type>::typeName
) )
{ {
this->refValue() = this->refValue() =
@ -318,7 +318,7 @@ void advectiveFvPatchField<Type>::updateCoeffs()
if if
( (
ddtScheme == fv::EulerDdtScheme<Type>::typeName ddtScheme == fv::EulerDdtScheme<Type>::typeName
|| ddtScheme == fv::CrankNicholsonDdtScheme<Type>::typeName || ddtScheme == fv::CrankNicolsonDdtScheme<Type>::typeName
) )
{ {
this->refValue() = field.oldTime().boundaryField()[patchi]; this->refValue() = field.oldTime().boundaryField()[patchi];

View file

@ -28,7 +28,7 @@ Description
Advective outflow boundary condition based on solving DDt(psi, U) = 0 Advective outflow boundary condition based on solving DDt(psi, U) = 0
at the boundary. at the boundary.
The standard (Euler, backward, CrankNicholson) time schemes are The standard (Euler, backward, CrankNicolson) time schemes are
supported. Additionally an optional mechanism to relax the value at supported. Additionally an optional mechanism to relax the value at
the boundary to a specified far-field value is provided which is the boundary to a specified far-field value is provided which is
switched on by specifying the relaxation length-scale lInf and the switched on by specifying the relaxation length-scale lInf and the

View file

@ -186,7 +186,7 @@ void pressureInletOutletVelocityFvPatchVectorField::updateCoeffs()
InfoIn InfoIn
( (
"pressureInletOutletVelocityFvPatchVectorField::updateCoeffs()" "pressureInletOutletVelocityFvPatchVectorField::updateCoeffs()"
)<< "Cannot find phi. Return" << endl; ) << "Cannot find phi. Return" << endl;
valueFraction() = symmTensor::one; valueFraction() = symmTensor::one;
} }

View file

@ -52,7 +52,8 @@ Foam::tmp<Foam::fvPatchField<Type> > Foam::fvPatchField<Type>::New
"fvPatchField<Type>::New(const word&, const fvPatch&, " "fvPatchField<Type>::New(const word&, const fvPatch&, "
"const DimensionedField<Type, volMesh>&)" "const DimensionedField<Type, volMesh>&)"
) << "Unknown patch field type " << patchFieldType ) << "Unknown patch field type " << patchFieldType
<< endl << endl << " for field " << iF.name() << " on patch " << p.name()
<< nl << nl
<< "Valid patchField types are :" << endl << "Valid patchField types are :" << endl
<< patchConstructorTablePtr_->sortedToc() << patchConstructorTablePtr_->sortedToc()
<< exit(FatalError); << exit(FatalError);
@ -86,7 +87,7 @@ Foam::tmp<Foam::fvPatchField<Type> > Foam::fvPatchField<Type>::New
{ {
Info<< "fvPatchField<Type>::New(const fvPatch&, " Info<< "fvPatchField<Type>::New(const fvPatch&, "
"const DimensionedField<Type, volMesh>&, " "const DimensionedField<Type, volMesh>&, "
"const dictionary&) : patchFieldType=" << patchFieldType "const dictionary&) : patchFieldType = " << patchFieldType
<< endl; << endl;
} }
@ -109,6 +110,7 @@ Foam::tmp<Foam::fvPatchField<Type> > Foam::fvPatchField<Type>::New
"const dictionary&)", "const dictionary&)",
dict dict
) << "Unknown patch field type " << patchFieldType ) << "Unknown patch field type " << patchFieldType
<< " for field " << iF.name() << " on patch " << p.name()
<< " for patch type " << p.type() << endl << endl << " for patch type " << p.type() << endl << endl
<< "Valid patch field types are :" << endl << "Valid patch field types are :" << endl
<< dictionaryConstructorTablePtr_->sortedToc() << dictionaryConstructorTablePtr_->sortedToc()
@ -137,8 +139,8 @@ Foam::tmp<Foam::fvPatchField<Type> > Foam::fvPatchField<Type>::New
"const DimensionedField<Type, volMesh>&, " "const DimensionedField<Type, volMesh>&, "
"const dictionary&)", "const dictionary&)",
dict dict
) << "inconsistent patch and patchField types for field " ) << "Inconsistent patch and patchField types for field "
<< iF.name() << "\n" << iF.name() << " on patch " << p.name() << "\n"
<< " patch type " << p.type() << " patch type " << p.type()
<< " and patchField type " << patchFieldType << " and patchField type " << patchFieldType
<< exit(FatalIOError); << exit(FatalIOError);
@ -177,7 +179,9 @@ Foam::tmp<Foam::fvPatchField<Type> > Foam::fvPatchField<Type>::New
"fvPatchField<Type>::New(const fvPatchField<Type>&, " "fvPatchField<Type>::New(const fvPatchField<Type>&, "
"const fvPatch&, const DimensionedField<Type, volMesh>&, " "const fvPatch&, const DimensionedField<Type, volMesh>&, "
"const fvPatchFieldMapper&)" "const fvPatchFieldMapper&)"
) << "unknown patch field type " << ptf.type() << endl << endl ) << "unknown patch field type " << ptf.type()
<< " for field " << iF.name() << " on patch " << p.name()
<< nl << nl
<< "Valid patchField types are :" << endl << "Valid patchField types are :" << endl
<< patchMapperConstructorTablePtr_->sortedToc() << patchMapperConstructorTablePtr_->sortedToc()
<< exit(FatalError); << exit(FatalError);

View file

@ -23,7 +23,7 @@ License
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "CrankNicholsonDdtScheme.H" #include "CrankNicolsonDdtScheme.H"
#include "surfaceInterpolate.H" #include "surfaceInterpolate.H"
#include "fvcDiv.H" #include "fvcDiv.H"
#include "fvMatrices.H" #include "fvMatrices.H"
@ -42,7 +42,7 @@ namespace fv
template<class Type> template<class Type>
template<class GeoField> template<class GeoField>
CrankNicholsonDdtScheme<Type>::DDt0Field<GeoField>::DDt0Field CrankNicolsonDdtScheme<Type>::DDt0Field<GeoField>::DDt0Field
( (
const IOobject& io, const IOobject& io,
const fvMesh& mesh const fvMesh& mesh
@ -60,7 +60,7 @@ CrankNicholsonDdtScheme<Type>::DDt0Field<GeoField>::DDt0Field
template<class Type> template<class Type>
template<class GeoField> template<class GeoField>
CrankNicholsonDdtScheme<Type>::DDt0Field<GeoField>::DDt0Field CrankNicolsonDdtScheme<Type>::DDt0Field<GeoField>::DDt0Field
( (
const IOobject& io, const IOobject& io,
const fvMesh& mesh, const fvMesh& mesh,
@ -74,7 +74,7 @@ CrankNicholsonDdtScheme<Type>::DDt0Field<GeoField>::DDt0Field
template<class Type> template<class Type>
template<class GeoField> template<class GeoField>
label CrankNicholsonDdtScheme<Type>::DDt0Field<GeoField>:: label CrankNicolsonDdtScheme<Type>::DDt0Field<GeoField>::
startTimeIndex() const startTimeIndex() const
{ {
return startTimeIndex_; return startTimeIndex_;
@ -83,7 +83,7 @@ startTimeIndex() const
template<class Type> template<class Type>
template<class GeoField> template<class GeoField>
GeoField& CrankNicholsonDdtScheme<Type>::DDt0Field<GeoField>:: GeoField& CrankNicolsonDdtScheme<Type>::DDt0Field<GeoField>::
operator()() operator()()
{ {
return *this; return *this;
@ -92,7 +92,7 @@ operator()()
template<class Type> template<class Type>
template<class GeoField> template<class GeoField>
void CrankNicholsonDdtScheme<Type>::DDt0Field<GeoField>:: void CrankNicolsonDdtScheme<Type>::DDt0Field<GeoField>::
operator=(const GeoField& gf) operator=(const GeoField& gf)
{ {
GeoField::operator=(gf); GeoField::operator=(gf);
@ -101,8 +101,8 @@ operator=(const GeoField& gf)
template<class Type> template<class Type>
template<class GeoField> template<class GeoField>
CrankNicholsonDdtScheme<Type>::DDt0Field<GeoField>& CrankNicolsonDdtScheme<Type>::DDt0Field<GeoField>&
CrankNicholsonDdtScheme<Type>::ddt0_ CrankNicolsonDdtScheme<Type>::ddt0_
( (
const word& name, const word& name,
const dimensionSet& dims const dimensionSet& dims
@ -183,7 +183,7 @@ CrankNicholsonDdtScheme<Type>::ddt0_
template<class Type> template<class Type>
template<class GeoField> template<class GeoField>
bool CrankNicholsonDdtScheme<Type>::evaluate bool CrankNicolsonDdtScheme<Type>::evaluate
( (
const DDt0Field<GeoField>& ddt0 const DDt0Field<GeoField>& ddt0
) const ) const
@ -193,7 +193,7 @@ bool CrankNicholsonDdtScheme<Type>::evaluate
template<class Type> template<class Type>
template<class GeoField> template<class GeoField>
scalar CrankNicholsonDdtScheme<Type>::coef_ scalar CrankNicolsonDdtScheme<Type>::coef_
( (
const DDt0Field<GeoField>& ddt0 const DDt0Field<GeoField>& ddt0
) const ) const
@ -211,7 +211,7 @@ scalar CrankNicholsonDdtScheme<Type>::coef_
template<class Type> template<class Type>
template<class GeoField> template<class GeoField>
scalar CrankNicholsonDdtScheme<Type>::coef0_ scalar CrankNicolsonDdtScheme<Type>::coef0_
( (
const DDt0Field<GeoField>& ddt0 const DDt0Field<GeoField>& ddt0
) const ) const
@ -229,7 +229,7 @@ scalar CrankNicholsonDdtScheme<Type>::coef0_
template<class Type> template<class Type>
template<class GeoField> template<class GeoField>
dimensionedScalar CrankNicholsonDdtScheme<Type>::rDtCoef_ dimensionedScalar CrankNicolsonDdtScheme<Type>::rDtCoef_
( (
const DDt0Field<GeoField>& ddt0 const DDt0Field<GeoField>& ddt0
) const ) const
@ -240,7 +240,7 @@ dimensionedScalar CrankNicholsonDdtScheme<Type>::rDtCoef_
template<class Type> template<class Type>
template<class GeoField> template<class GeoField>
dimensionedScalar CrankNicholsonDdtScheme<Type>::rDtCoef0_ dimensionedScalar CrankNicolsonDdtScheme<Type>::rDtCoef0_
( (
const DDt0Field<GeoField>& ddt0 const DDt0Field<GeoField>& ddt0
) const ) const
@ -251,7 +251,7 @@ dimensionedScalar CrankNicholsonDdtScheme<Type>::rDtCoef0_
template<class Type> template<class Type>
template<class GeoField> template<class GeoField>
tmp<GeoField> CrankNicholsonDdtScheme<Type>::offCentre_ tmp<GeoField> CrankNicolsonDdtScheme<Type>::offCentre_
( (
const GeoField& ddt0 const GeoField& ddt0
) const ) const
@ -281,7 +281,7 @@ const FieldField<fvPatchField, Type>& ff
template<class Type> template<class Type>
tmp<GeometricField<Type, fvPatchField, volMesh> > tmp<GeometricField<Type, fvPatchField, volMesh> >
CrankNicholsonDdtScheme<Type>::fvcDdt CrankNicolsonDdtScheme<Type>::fvcDdt
( (
const dimensioned<Type>& dt const dimensioned<Type>& dt
) )
@ -343,7 +343,7 @@ CrankNicholsonDdtScheme<Type>::fvcDdt
template<class Type> template<class Type>
tmp<GeometricField<Type, fvPatchField, volMesh> > tmp<GeometricField<Type, fvPatchField, volMesh> >
CrankNicholsonDdtScheme<Type>::fvcDdt CrankNicolsonDdtScheme<Type>::fvcDdt
( (
const GeometricField<Type, fvPatchField, volMesh>& vf const GeometricField<Type, fvPatchField, volMesh>& vf
) )
@ -432,7 +432,7 @@ CrankNicholsonDdtScheme<Type>::fvcDdt
template<class Type> template<class Type>
tmp<GeometricField<Type, fvPatchField, volMesh> > tmp<GeometricField<Type, fvPatchField, volMesh> >
CrankNicholsonDdtScheme<Type>::fvcDdt CrankNicolsonDdtScheme<Type>::fvcDdt
( (
const dimensionedScalar& rho, const dimensionedScalar& rho,
const GeometricField<Type, fvPatchField, volMesh>& vf const GeometricField<Type, fvPatchField, volMesh>& vf
@ -522,7 +522,7 @@ CrankNicholsonDdtScheme<Type>::fvcDdt
template<class Type> template<class Type>
tmp<GeometricField<Type, fvPatchField, volMesh> > tmp<GeometricField<Type, fvPatchField, volMesh> >
CrankNicholsonDdtScheme<Type>::fvcDdt CrankNicolsonDdtScheme<Type>::fvcDdt
( (
const volScalarField& rho, const volScalarField& rho,
const GeometricField<Type, fvPatchField, volMesh>& vf const GeometricField<Type, fvPatchField, volMesh>& vf
@ -622,7 +622,7 @@ CrankNicholsonDdtScheme<Type>::fvcDdt
template<class Type> template<class Type>
tmp<fvMatrix<Type> > tmp<fvMatrix<Type> >
CrankNicholsonDdtScheme<Type>::fvmDdt CrankNicolsonDdtScheme<Type>::fvmDdt
( (
GeometricField<Type, fvPatchField, volMesh>& vf GeometricField<Type, fvPatchField, volMesh>& vf
) )
@ -705,7 +705,7 @@ CrankNicholsonDdtScheme<Type>::fvmDdt
template<class Type> template<class Type>
tmp<fvMatrix<Type> > tmp<fvMatrix<Type> >
CrankNicholsonDdtScheme<Type>::fvmDdt CrankNicolsonDdtScheme<Type>::fvmDdt
( (
const dimensionedScalar& rho, const dimensionedScalar& rho,
GeometricField<Type, fvPatchField, volMesh>& vf GeometricField<Type, fvPatchField, volMesh>& vf
@ -787,7 +787,7 @@ CrankNicholsonDdtScheme<Type>::fvmDdt
template<class Type> template<class Type>
tmp<fvMatrix<Type> > tmp<fvMatrix<Type> >
CrankNicholsonDdtScheme<Type>::fvmDdt CrankNicolsonDdtScheme<Type>::fvmDdt
( (
const volScalarField& rho, const volScalarField& rho,
GeometricField<Type, fvPatchField, volMesh>& vf GeometricField<Type, fvPatchField, volMesh>& vf
@ -877,8 +877,8 @@ CrankNicholsonDdtScheme<Type>::fvmDdt
template<class Type> template<class Type>
tmp<typename CrankNicholsonDdtScheme<Type>::fluxFieldType> tmp<typename CrankNicolsonDdtScheme<Type>::fluxFieldType>
CrankNicholsonDdtScheme<Type>::fvcDdtPhiCorr CrankNicolsonDdtScheme<Type>::fvcDdtPhiCorr
( (
const volScalarField& rA, const volScalarField& rA,
const GeometricField<Type, fvPatchField, volMesh>& U, const GeometricField<Type, fvPatchField, volMesh>& U,
@ -964,8 +964,8 @@ CrankNicholsonDdtScheme<Type>::fvcDdtPhiCorr
template<class Type> template<class Type>
tmp<typename CrankNicholsonDdtScheme<Type>::fluxFieldType> tmp<typename CrankNicolsonDdtScheme<Type>::fluxFieldType>
CrankNicholsonDdtScheme<Type>::fvcDdtPhiCorr CrankNicolsonDdtScheme<Type>::fvcDdtPhiCorr
( (
const volScalarField& rA, const volScalarField& rA,
const volScalarField& rho, const volScalarField& rho,
@ -1157,7 +1157,7 @@ CrankNicholsonDdtScheme<Type>::fvcDdtPhiCorr
{ {
FatalErrorIn FatalErrorIn
( (
"CrankNicholsonDdtScheme<Type>::fvcDdtPhiCorr" "CrankNicolsonDdtScheme<Type>::fvcDdtPhiCorr"
) << "dimensions of phi are not correct" ) << "dimensions of phi are not correct"
<< abort(FatalError); << abort(FatalError);
@ -1168,7 +1168,7 @@ CrankNicholsonDdtScheme<Type>::fvcDdtPhiCorr
template<class Type> template<class Type>
tmp<surfaceScalarField> CrankNicholsonDdtScheme<Type>::meshPhi tmp<surfaceScalarField> CrankNicolsonDdtScheme<Type>::meshPhi
( (
const GeometricField<Type, fvPatchField, volMesh>& vf const GeometricField<Type, fvPatchField, volMesh>& vf
) )

View file

@ -22,19 +22,19 @@ License
along with foam-extend. If not, see <http://www.gnu.org/licenses/>. along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
Class Class
Foam::fv::CrankNicholsonDdtScheme Foam::fv::CrankNicolsonDdtScheme
Description Description
Second-oder CrankNicholson implicit ddt using the current and Second-oder CrankNicolson implicit ddt using the current and
previous time-step fields as well as the previous time-step ddt. previous time-step fields as well as the previous time-step ddt.
SourceFiles SourceFiles
CrankNicholsonDdtScheme.C CrankNicolsonDdtScheme.C
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#ifndef CrankNicholsonDdtScheme_H #ifndef CrankNicolsonDdtScheme_H
#define CrankNicholsonDdtScheme_H #define CrankNicolsonDdtScheme_H
#include "ddtScheme.H" #include "ddtScheme.H"
@ -49,11 +49,11 @@ namespace fv
{ {
/*---------------------------------------------------------------------------*\ /*---------------------------------------------------------------------------*\
Class CrankNicholsonDdtScheme Declaration Class CrankNicolsonDdtScheme Declaration
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
template<class Type> template<class Type>
class CrankNicholsonDdtScheme class CrankNicolsonDdtScheme
: :
public fv::ddtScheme<Type> public fv::ddtScheme<Type>
{ {
@ -105,10 +105,10 @@ class CrankNicholsonDdtScheme
// Private Member Functions // Private Member Functions
//- Disallow default bitwise copy construct //- Disallow default bitwise copy construct
CrankNicholsonDdtScheme(const CrankNicholsonDdtScheme&); CrankNicolsonDdtScheme(const CrankNicolsonDdtScheme&);
//- Disallow default bitwise assignment //- Disallow default bitwise assignment
void operator=(const CrankNicholsonDdtScheme&); void operator=(const CrankNicolsonDdtScheme&);
template<class GeoField> template<class GeoField>
DDt0Field<GeoField>& ddt0_ DDt0Field<GeoField>& ddt0_
@ -149,20 +149,20 @@ class CrankNicholsonDdtScheme
public: public:
//- Runtime type information //- Runtime type information
TypeName("CrankNicholson"); TypeName("CrankNicolson");
// Constructors // Constructors
//- Construct from mesh //- Construct from mesh
CrankNicholsonDdtScheme(const fvMesh& mesh) CrankNicolsonDdtScheme(const fvMesh& mesh)
: :
ddtScheme<Type>(mesh), ddtScheme<Type>(mesh),
ocCoeff_(1.0) ocCoeff_(1.0)
{} {}
//- Construct from mesh and Istream //- Construct from mesh and Istream
CrankNicholsonDdtScheme(const fvMesh& mesh, Istream& is) CrankNicolsonDdtScheme(const fvMesh& mesh, Istream& is)
: :
ddtScheme<Type>(mesh, is), ddtScheme<Type>(mesh, is),
ocCoeff_(readScalar(is)) ocCoeff_(readScalar(is))
@ -171,7 +171,7 @@ public:
{ {
FatalIOErrorIn FatalIOErrorIn
( (
"CrankNicholsonDdtScheme(const fvMesh& mesh, Istream& is)", "CrankNicolsonDdtScheme(const fvMesh& mesh, Istream& is)",
is is
) << "coefficient = " << ocCoeff_ ) << "coefficient = " << ocCoeff_
<< " should be >= 0 and <= 1" << " should be >= 0 and <= 1"
@ -253,7 +253,7 @@ public:
template<> template<>
tmp<surfaceScalarField> CrankNicholsonDdtScheme<scalar>::fvcDdtPhiCorr tmp<surfaceScalarField> CrankNicolsonDdtScheme<scalar>::fvcDdtPhiCorr
( (
const volScalarField& rA, const volScalarField& rA,
const volScalarField& U, const volScalarField& U,
@ -262,7 +262,7 @@ tmp<surfaceScalarField> CrankNicholsonDdtScheme<scalar>::fvcDdtPhiCorr
template<> template<>
tmp<surfaceScalarField> CrankNicholsonDdtScheme<scalar>::fvcDdtPhiCorr tmp<surfaceScalarField> CrankNicolsonDdtScheme<scalar>::fvcDdtPhiCorr
( (
const volScalarField& rA, const volScalarField& rA,
const volScalarField& rho, const volScalarField& rho,
@ -282,7 +282,7 @@ tmp<surfaceScalarField> CrankNicholsonDdtScheme<scalar>::fvcDdtPhiCorr
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#ifdef NoRepository #ifdef NoRepository
# include "CrankNicholsonDdtScheme.C" # include "CrankNicolsonDdtScheme.C"
#endif #endif
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View file

@ -25,7 +25,7 @@ Description
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "CrankNicholsonDdtScheme.H" #include "CrankNicolsonDdtScheme.H"
#include "fvMesh.H" #include "fvMesh.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -34,7 +34,7 @@ namespace Foam
{ {
namespace fv namespace fv
{ {
makeFvDdtScheme(CrankNicholsonDdtScheme) makeFvDdtScheme(CrankNicolsonDdtScheme)
} }
} }

View file

@ -163,6 +163,8 @@ public:
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#include "scalarGaussGrad.H"
#ifdef NoRepository #ifdef NoRepository
# include "gaussGrad.C" # include "gaussGrad.C"
#endif #endif

View file

@ -27,7 +27,7 @@ Description
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "scalarGaussGrad.H" #include "gaussGrad.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -71,20 +71,20 @@ tmp<BlockLduSystem<vector, vector> > gaussGrad<scalar>::fvmGrad
bs.negSumDiag(); bs.negSumDiag();
// Boundary contributions // Boundary contributions
forAll(vf.boundaryField(), patchI) forAll (vf.boundaryField(), patchI)
{ {
const fvPatchScalarField& pf = vf.boundaryField()[patchI]; const fvPatchScalarField& pf = vf.boundaryField()[patchI];
const fvPatch& patch = pf.patch(); const fvPatch& patch = pf.patch();
const vectorField& Sf = patch.Sf(); const vectorField& pSf = patch.Sf();
const fvsPatchScalarField& pw = tweights().boundaryField()[patchI]; const fvsPatchScalarField& pw = tweights().boundaryField()[patchI];
const labelList& fc = patch.faceCells(); const labelList& fc = patch.faceCells();
const scalarField internalCoeffs(pf.valueInternalCoeffs(pw)); const scalarField internalCoeffs(pf.valueInternalCoeffs(pw));
// Diag contribution // Diag contribution
forAll(pf, faceI) forAll (pf, faceI)
{ {
d[fc[faceI]] += internalCoeffs[faceI]*Sf[faceI]; d[fc[faceI]] += internalCoeffs[faceI]*pSf[faceI];
} }
if (patch.coupled()) if (patch.coupled())
@ -94,8 +94,8 @@ tmp<BlockLduSystem<vector, vector> > gaussGrad<scalar>::fvmGrad
CoeffField<vector>::linearTypeField& pcoupleLower = CoeffField<vector>::linearTypeField& pcoupleLower =
bs.coupleLower()[patchI].asLinear(); bs.coupleLower()[patchI].asLinear();
const vectorField pcl = -pw*Sf; const vectorField pcl = -pw*pSf;
const vectorField pcu = pcl + Sf; const vectorField pcu = pcl + pSf;
// Coupling contributions // Coupling contributions
pcoupleLower -= pcl; pcoupleLower -= pcl;
@ -106,9 +106,9 @@ tmp<BlockLduSystem<vector, vector> > gaussGrad<scalar>::fvmGrad
const scalarField boundaryCoeffs(pf.valueBoundaryCoeffs(pw)); const scalarField boundaryCoeffs(pf.valueBoundaryCoeffs(pw));
// Boundary contribution // Boundary contribution
forAll(pf, faceI) forAll (pf, faceI)
{ {
source[fc[faceI]] -= boundaryCoeffs[faceI]*Sf[faceI]; source[fc[faceI]] -= boundaryCoeffs[faceI]*pSf[faceI];
} }
} }
} }

View file

@ -119,6 +119,8 @@ public:
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#include "scalarLeastSquaresGrad.H"
#ifdef NoRepository #ifdef NoRepository
# include "leastSquaresGrad.C" # include "leastSquaresGrad.C"
#endif #endif

View file

@ -36,6 +36,12 @@ namespace Foam
} }
const Foam::scalar Foam::leastSquaresVectors::smallDotProdTol_
(
debug::tolerances("leastSquaresSmallDotProdTol", 0.1)
);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::leastSquaresVectors::leastSquaresVectors(const fvMesh& mesh) Foam::leastSquaresVectors::leastSquaresVectors(const fvMesh& mesh)
@ -106,7 +112,7 @@ void Foam::leastSquaresVectors::makeLeastSquaresVectors() const
// Set up temporary storage for the dd tensor (before inversion) // Set up temporary storage for the dd tensor (before inversion)
symmTensorField dd(mesh().nCells(), symmTensor::zero); symmTensorField dd(mesh().nCells(), symmTensor::zero);
forAll(owner, faceI) forAll (owner, faceI)
{ {
label own = owner[faceI]; label own = owner[faceI];
label nei = neighbour[faceI]; label nei = neighbour[faceI];
@ -118,18 +124,18 @@ void Foam::leastSquaresVectors::makeLeastSquaresVectors() const
dd[nei] += wdd; dd[nei] += wdd;
} }
forAll(lsP.boundaryField(), patchI) forAll (lsP.boundaryField(), patchI)
{ {
const fvPatch& p = mesh().boundary()[patchI]; const fvPatch& p = mesh().boundary()[patchI];
const unallocLabelList& faceCells = p.patch().faceCells(); const unallocLabelList& fc = p.patch().faceCells();
// Better version of d-vectors: Zeljko Tukovic, 25/Apr/2010 // Better version of d-vectors: Zeljko Tukovic, 25/Apr/2010
const vectorField pd = p.delta(); const vectorField pd = p.delta();
forAll(pd, patchFaceI) forAll (pd, pFaceI)
{ {
const vector& d = pd[patchFaceI]; const vector& d = pd[pFaceI];
dd[faceCells[patchFaceI]] += (1.0/magSqr(d))*sqr(d); dd[fc[pFaceI]] += (1.0/magSqr(d))*sqr(d);
} }
} }
@ -147,9 +153,12 @@ void Foam::leastSquaresVectors::makeLeastSquaresVectors() const
), ),
mesh(), mesh(),
dimensionedSymmTensor("zero", dimless, symmTensor::zero), dimensionedSymmTensor("zero", dimless, symmTensor::zero),
"zeroGradient" zeroGradientFvPatchScalarField::typeName
); );
symmTensorField& invDd = volInvDd.internalField(); symmTensorField& invDd = volInvDd.internalField();
// Invert least squares matrix using Householder transformations to avoid
// badly posed cells
// invDd = inv(dd); // invDd = inv(dd);
invDd = hinv(dd); invDd = hinv(dd);
@ -158,7 +167,11 @@ void Foam::leastSquaresVectors::makeLeastSquaresVectors() const
volInvDd.boundaryField().evaluateCoupled(); volInvDd.boundaryField().evaluateCoupled();
// Revisit all faces and calculate the lsP and lsN vectors // Revisit all faces and calculate the lsP and lsN vectors
forAll(owner, faceI) vectorField& lsPIn = lsP.internalField();
vectorField& lsNIn = lsN.internalField();
// Least squares vectors on internal faces
forAll (owner, faceI)
{ {
label own = owner[faceI]; label own = owner[faceI];
label nei = neighbour[faceI]; label nei = neighbour[faceI];
@ -166,16 +179,17 @@ void Foam::leastSquaresVectors::makeLeastSquaresVectors() const
vector d = C[nei] - C[own]; vector d = C[nei] - C[own];
scalar magSfByMagSqrd = 1.0/magSqr(d); scalar magSfByMagSqrd = 1.0/magSqr(d);
lsP[faceI] = magSfByMagSqrd*(invDd[own] & d); lsPIn[faceI] = magSfByMagSqrd*(invDd[own] & d);
lsN[faceI] = -magSfByMagSqrd*(invDd[nei] & d); lsNIn[faceI] = -magSfByMagSqrd*(invDd[nei] & d);
} }
forAll(lsP.boundaryField(), patchI) // Least squares vectors on boundary faces
forAll (lsP.boundaryField(), patchI)
{ {
fvsPatchVectorField& patchLsP = lsP.boundaryField()[patchI]; fvsPatchVectorField& patchLsP = lsP.boundaryField()[patchI];
fvsPatchVectorField& patchLsN = lsN.boundaryField()[patchI]; fvsPatchVectorField& patchLsN = lsN.boundaryField()[patchI];
const fvPatch& p = mesh().boundary()[patchI]; const fvPatch& p = mesh().boundary()[patchI];
const unallocLabelList& faceCells = p.faceCells(); const unallocLabelList& fc = p.faceCells();
// Better version of d-vectors: Zeljko Tukovic, 25/Apr/2010 // Better version of d-vectors: Zeljko Tukovic, 25/Apr/2010
const vectorField pd = p.delta(); const vectorField pd = p.delta();
@ -185,29 +199,215 @@ void Foam::leastSquaresVectors::makeLeastSquaresVectors() const
const symmTensorField invDdNei = const symmTensorField invDdNei =
volInvDd.boundaryField()[patchI].patchNeighbourField(); volInvDd.boundaryField()[patchI].patchNeighbourField();
forAll(pd, patchFaceI) forAll (pd, pFaceI)
{ {
const vector& d = pd[patchFaceI]; const vector& d = pd[pFaceI];
patchLsP[patchFaceI] = (1.0/magSqr(d)) patchLsP[pFaceI] = (1.0/magSqr(d))*(invDd[fc[pFaceI]] & d);
*(invDd[faceCells[patchFaceI]] & d);
patchLsN[patchFaceI] = - (1.0/magSqr(d)) patchLsN[pFaceI] = - (1.0/magSqr(d))*(invDdNei[pFaceI] & d);
*(invDdNei[patchFaceI] & d);
} }
} }
else else
{ {
forAll(pd, patchFaceI) forAll (pd, pFaceI)
{ {
const vector& d = pd[patchFaceI]; const vector& d = pd[pFaceI];
patchLsP[patchFaceI] = (1.0/magSqr(d)) patchLsP[pFaceI] = (1.0/magSqr(d))*(invDd[fc[pFaceI]] & d);
*(invDd[faceCells[patchFaceI]] & d);
} }
} }
} }
# if 0
// Coefficient sign correction on least squares vectors
// The sign of the coefficient must be positive to ensure correct
// behaviour in coupled systems. This is checked by evaluating
// dot-product of the P/N vectors with the face area vector.
// If the dot-product is negative, cell is marked for use with the
// Gauss gradient, which is unconditionally positive
// HJ, 21/Apr/2015
// First loop: detect cells with bad least squares vectors
Info<< "NEW LEAST SQUARES VECTORS" << endl;
// Use Gauss Gradient field: set to 1 if Gauss is needed
volScalarField useGaussGrad
(
IOobject
(
"useGaussGrad",
mesh().pointsInstance(),
mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh(),
dimensionedScalar("zero", dimVolume, 0),
zeroGradientFvPatchScalarField::typeName
);
const surfaceVectorField& Sf = mesh().Sf();
const surfaceScalarField& w = mesh().weights();
const vectorField& SfIn = Sf.internalField();
const scalarField& wIn = w.internalField();
scalarField& uggIn = useGaussGrad.internalField();
// Check internal faces
forAll (owner, faceI)
{
if
(
(lsPIn[faceI] & SfIn[faceI])/(mag(lsPIn[faceI])*mag(SfIn[faceI]))
< smallDotProdTol_
)
{
// Least square points in the wrong direction for owner
// Use Gauss gradient
uggIn[owner[faceI]] = 1;
}
if
(
(lsNIn[faceI] & SfIn[faceI])/(mag(lsNIn[faceI])*mag(SfIn[faceI]))
> -smallDotProdTol_
)
{
// Least square points in the wrong direction for owner.
// Note that Sf points into neighbour cell
// Use Gauss gradient
uggIn[neighbour[faceI]] = 1;
}
}
forAll (lsP.boundaryField(), patchI)
{
fvsPatchVectorField& patchLsP = lsP.boundaryField()[patchI];
const vectorField& pSf = Sf.boundaryField()[patchI];
const fvPatch& p = mesh().boundary()[patchI];
const unallocLabelList& fc = p.faceCells();
// Same check for coupled and uncoupled
forAll (patchLsP, pFaceI)
{
if
(
(patchLsP[pFaceI] & pSf[pFaceI])/
(mag(patchLsP[pFaceI])*mag(pSf[pFaceI]))
< smallDotProdTol_
)
{
uggIn[fc[pFaceI]] = 1;
}
}
}
// Update boundary conditions for coupled boundaries. This synchronises
// the Gauss grad indication field
useGaussGrad.boundaryField().evaluateCoupled();
// Replace least square vectors with weighted Gauss gradient vectors
// for marked cells
// Prepare cell volumes with parallel communications
volScalarField cellV
(
IOobject
(
"cellV",
mesh().pointsInstance(),
mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh(),
dimensionedScalar("zero", dimVolume, 0),
zeroGradientFvPatchScalarField::typeName
);
cellV.internalField() = mesh().V();
// Evaluate coupled to exchange coupled neighbour field data
// across coupled boundaries. HJ, 18/Mar/2015
cellV.boundaryField().evaluateCoupled();
const scalarField& cellVIn = cellV.internalField();
// Internal faces
forAll (owner, faceI)
{
label own = owner[faceI];
label nei = neighbour[faceI];
if (uggIn[own] > SMALL)
{
// Gauss gradient for owner cell
lsPIn[faceI] = (1 - wIn[faceI])*SfIn[faceI]/cellVIn[own];
}
if (uggIn[nei] > SMALL)
{
// Gauss gradient for neighbour cell
lsNIn[faceI] = -wIn[faceI]*SfIn[faceI]/cellVIn[nei];
}
}
// Boundary faces
forAll (lsP.boundaryField(), patchI)
{
fvsPatchVectorField& patchLsP = lsP.boundaryField()[patchI];
fvsPatchVectorField& patchLsN = lsN.boundaryField()[patchI];
const fvPatch& p = mesh().boundary()[patchI];
const unallocLabelList& fc = p.faceCells();
const fvsPatchScalarField& pw = w.boundaryField()[patchI];
const vectorField& pSf = Sf.boundaryField()[patchI];
// Get indicator for local side
const fvPatchScalarField& ugg = useGaussGrad.boundaryField()[patchI];
const scalarField pUgg = ugg.patchInternalField();
if (p.coupled())
{
const scalarField cellVInNei =
cellV.boundaryField()[patchI].patchNeighbourField();
// Get indicator for neighbour side
const scalarField nUgg = ugg.patchNeighbourField();
forAll (pUgg, pFaceI)
{
if (pUgg[pFaceI] > SMALL)
{
// Gauss grad for owner cell
patchLsP[pFaceI] =
(1 - pw[pFaceI])*pSf[pFaceI]/cellVIn[fc[pFaceI]];
}
if (nUgg[pFaceI] > SMALL)
{
// Gauss gradient for neighbour cell
patchLsN[pFaceI] =
-pw[pFaceI]*pSf[pFaceI]/cellVInNei[pFaceI];
}
}
}
else
{
forAll (pUgg, pFaceI)
{
if (pUgg[pFaceI] > SMALL)
{
// Gauss grad for owner cell
patchLsP[pFaceI] =
(1 - pw[pFaceI])*pSf[pFaceI]/cellVIn[fc[pFaceI]];
}
}
}
}
#endif
if (debug) if (debug)
{ {
Info<< "leastSquaresVectors::makeLeastSquaresVectors() :" Info<< "leastSquaresVectors::makeLeastSquaresVectors() :"

View file

@ -74,6 +74,12 @@ public:
TypeName("leastSquaresVectors"); TypeName("leastSquaresVectors");
// Static data members
//- Point merge tolerance
static const scalar smallDotProdTol_;
// Constructors // Constructors
//- Construct given an fvMesh //- Construct given an fvMesh

View file

@ -27,7 +27,7 @@ Description
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "scalarLeastSquaresGrad.H" #include "leastSquaresGrad.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -64,7 +64,7 @@ tmp<BlockLduSystem<vector, vector> > leastSquaresGrad<scalar>::fvmGrad
), ),
mesh, mesh,
dimensionedScalar("zero", dimVolume, 0), dimensionedScalar("zero", dimVolume, 0),
"zeroGradient" zeroGradientFvPatchScalarField::typeName
); );
cellV.internalField() = mesh.V(); cellV.internalField() = mesh.V();
cellV.correctBoundaryConditions(); cellV.correctBoundaryConditions();
@ -90,7 +90,7 @@ tmp<BlockLduSystem<vector, vector> > leastSquaresGrad<scalar>::fvmGrad
const surfaceVectorField& ownLs = lsv.pVectors(); const surfaceVectorField& ownLs = lsv.pVectors();
const surfaceVectorField& neiLs = lsv.nVectors(); const surfaceVectorField& neiLs = lsv.nVectors();
forAll(nei, faceI) forAll (nei, faceI)
{ {
register label owner = own[faceI]; register label owner = own[faceI];
register label neighbour = nei[faceI]; register label neighbour = nei[faceI];
@ -104,7 +104,7 @@ tmp<BlockLduSystem<vector, vector> > leastSquaresGrad<scalar>::fvmGrad
} }
// Boundary contributions // Boundary contributions
forAll(vf.boundaryField(), patchI) forAll (vf.boundaryField(), patchI)
{ {
const fvPatchScalarField& pf = vf.boundaryField()[patchI]; const fvPatchScalarField& pf = vf.boundaryField()[patchI];
const fvPatch& patch = pf.patch(); const fvPatch& patch = pf.patch();
@ -113,7 +113,7 @@ tmp<BlockLduSystem<vector, vector> > leastSquaresGrad<scalar>::fvmGrad
const labelList& fc = patch.faceCells(); const labelList& fc = patch.faceCells();
// Part of diagonal contribution irrespective of the patch type // Part of diagonal contribution irrespective of the patch type
forAll(pf, faceI) forAll (pf, faceI)
{ {
const label cellI = fc[faceI]; const label cellI = fc[faceI];
d[cellI] -= cellVIn[cellI]*pownLs[faceI]; d[cellI] -= cellVIn[cellI]*pownLs[faceI];
@ -131,7 +131,7 @@ tmp<BlockLduSystem<vector, vector> > leastSquaresGrad<scalar>::fvmGrad
bs.coupleLower()[patchI].asLinear(); bs.coupleLower()[patchI].asLinear();
// Coupling and diagonal contributions // Coupling and diagonal contributions
forAll(pf, faceI) forAll (pf, faceI)
{ {
const vector upper = cellVIn[fc[faceI]]*pownLs[faceI]; const vector upper = cellVIn[fc[faceI]]*pownLs[faceI];
const vector lower = cellVInNei[faceI]*pneiLs[faceI]; const vector lower = cellVInNei[faceI]*pneiLs[faceI];
@ -146,7 +146,7 @@ tmp<BlockLduSystem<vector, vector> > leastSquaresGrad<scalar>::fvmGrad
const scalarField boundaryCoeffs(pf.valueBoundaryCoeffs(pw)); const scalarField boundaryCoeffs(pf.valueBoundaryCoeffs(pw));
// Diagonal and source contributions depending on the patch type // Diagonal and source contributions depending on the patch type
forAll(pf, faceI) forAll (pf, faceI)
{ {
const label cellI = fc[faceI]; const label cellI = fc[faceI];
d[cellI] += cellVIn[cellI]*pownLs[faceI]*internalCoeffs[faceI]; d[cellI] += cellVIn[cellI]*pownLs[faceI]*internalCoeffs[faceI];

View file

@ -200,27 +200,25 @@ void Foam::BlockMatrixAgglomeration<Type>::calcAgglomeration()
} }
// Collect solo equations // Collect solo equations
label nSolo = 0;
forAll (zeroCluster, eqnI) forAll (zeroCluster, eqnI)
{ {
if (zeroCluster[eqnI]) if (zeroCluster[eqnI])
{ {
// Found solo equation // Found solo equation
nSolo++; nSolo_++;
agglomIndex_[eqnI] = nCoarseEqns_; agglomIndex_[eqnI] = nCoarseEqns_;
} }
} }
if (nSolo > 0) if (nSolo_ > 0)
{ {
// Found solo equations // Found solo equations
nCoarseEqns_++; nCoarseEqns_++;
if (BlockLduMatrix<Type>::debug >= 2) if (BlockLduMatrix<Type>::debug >= 3)
{ {
Pout<< "Found " << nSolo << " weakly connected equations." Pout<< "Found " << nSolo_ << " weakly connected equations."
<< endl; << endl;
} }
} }
@ -347,7 +345,7 @@ void Foam::BlockMatrixAgglomeration<Type>::calcAgglomeration()
reduce(coarsen_, andOp<bool>()); reduce(coarsen_, andOp<bool>());
if (BlockLduMatrix<Type>::debug >= 2) if (BlockLduMatrix<Type>::debug >= 3)
{ {
Pout << "Coarse level size: " << nCoarseEqns_; Pout << "Coarse level size: " << nCoarseEqns_;
@ -379,6 +377,7 @@ Foam::BlockMatrixAgglomeration<Type>::BlockMatrixAgglomeration
normPtr_(BlockCoeffNorm<Type>::New(dict)), normPtr_(BlockCoeffNorm<Type>::New(dict)),
agglomIndex_(matrix_.lduAddr().size()), agglomIndex_(matrix_.lduAddr().size()),
groupSize_(groupSize), groupSize_(groupSize),
nSolo_(0),
nCoarseEqns_(0), nCoarseEqns_(0),
coarsen_(false) coarsen_(false)
{ {
@ -441,6 +440,8 @@ Foam::BlockMatrixAgglomeration<Type>::restrictMatrix() const
} }
# endif # endif
// Does the matrix have solo equations
bool soloEqns = nSolo_ > 0;
// Storage for block neighbours and coefficients // Storage for block neighbours and coefficients
@ -468,6 +469,13 @@ Foam::BlockMatrixAgglomeration<Type>::restrictMatrix() const
label rmUpperAddr = agglomIndex_[upperAddr[fineCoeffi]]; label rmUpperAddr = agglomIndex_[upperAddr[fineCoeffi]];
label rmLowerAddr = agglomIndex_[lowerAddr[fineCoeffi]]; label rmLowerAddr = agglomIndex_[lowerAddr[fineCoeffi]];
// If the coefficient touches block zero and solo equations are
// present, skip it
if (soloEqns && (rmUpperAddr == 0 || rmLowerAddr == 0))
{
continue;
}
if (rmUpperAddr == rmLowerAddr) if (rmUpperAddr == rmLowerAddr)
{ {
// For each fine coeff inside of a coarse cluster keep the address // For each fine coeff inside of a coarse cluster keep the address
@ -563,6 +571,16 @@ Foam::BlockMatrixAgglomeration<Type>::restrictMatrix() const
forAll(coeffRestrictAddr, fineCoeffi) forAll(coeffRestrictAddr, fineCoeffi)
{ {
label rmUpperAddr = agglomIndex_[upperAddr[fineCoeffi]];
label rmLowerAddr = agglomIndex_[lowerAddr[fineCoeffi]];
// If the coefficient touches block zero and solo equations are
// present, skip it
if (soloEqns && (rmUpperAddr == 0 || rmLowerAddr == 0))
{
continue;
}
if (coeffRestrictAddr[fineCoeffi] >= 0) if (coeffRestrictAddr[fineCoeffi] >= 0)
{ {
coeffRestrictAddr[fineCoeffi] = coeffRestrictAddr[fineCoeffi] =
@ -765,6 +783,16 @@ Foam::BlockMatrixAgglomeration<Type>::restrictMatrix() const
forAll(coeffRestrictAddr, fineCoeffI) forAll(coeffRestrictAddr, fineCoeffI)
{ {
label rmUpperAddr = agglomIndex_[upperAddr[fineCoeffI]];
label rmLowerAddr = agglomIndex_[lowerAddr[fineCoeffI]];
// If the coefficient touches block zero and
// solo equations are present, skip it
if (soloEqns && (rmUpperAddr == 0 || rmLowerAddr == 0))
{
continue;
}
label cCoeff = coeffRestrictAddr[fineCoeffI]; label cCoeff = coeffRestrictAddr[fineCoeffI];
if (cCoeff >= 0) if (cCoeff >= 0)
@ -837,6 +865,16 @@ Foam::BlockMatrixAgglomeration<Type>::restrictMatrix() const
forAll(coeffRestrictAddr, fineCoeffI) forAll(coeffRestrictAddr, fineCoeffI)
{ {
label rmUpperAddr = agglomIndex_[upperAddr[fineCoeffI]];
label rmLowerAddr = agglomIndex_[lowerAddr[fineCoeffI]];
// If the coefficient touches block zero and
// solo equations are present, skip it
if (soloEqns && (rmUpperAddr == 0 || rmLowerAddr == 0))
{
continue;
}
label cCoeff = coeffRestrictAddr[fineCoeffI]; label cCoeff = coeffRestrictAddr[fineCoeffI];
if (cCoeff >= 0) if (cCoeff >= 0)

View file

@ -74,6 +74,9 @@ class BlockMatrixAgglomeration
//- Group size //- Group size
label groupSize_; label groupSize_;
//- Number of solo cells
label nSolo_;
//- Number of coarse equations //- Number of coarse equations
label nCoarseEqns_; label nCoarseEqns_;

View file

@ -62,7 +62,7 @@ template<class Type>
class BlockAmgLevel; class BlockAmgLevel;
/*---------------------------------------------------------------------------*\ /*---------------------------------------------------------------------------*\
Class BlockMatrixCoarsening Declaration Class BlockMatrixCoarsening Declaration
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
template<class Type> template<class Type>
@ -79,6 +79,7 @@ class BlockMatrixCoarsening
//- Minimum number of coarse level equations //- Minimum number of coarse level equations
label minCoarseEqns_; label minCoarseEqns_;
// Private Member Functions // Private Member Functions
//- Disallow default bitwise copy construct //- Disallow default bitwise copy construct

View file

@ -224,7 +224,7 @@ void Foam::coarseBlockAmgLevel<Type>::solve
// Switch of debug in top-level direct solve // Switch of debug in top-level direct solve
label oldDebug = BlockLduMatrix<Type>::debug; label oldDebug = BlockLduMatrix<Type>::debug;
if (BlockLduMatrix<Type>::debug >= 3) if (BlockLduMatrix<Type>::debug >= 4)
{ {
BlockLduMatrix<Type>::debug = 1; BlockLduMatrix<Type>::debug = 1;
} }

View file

@ -329,7 +329,7 @@ void Foam::lduMatrix::operator*=(scalar s)
} }
Foam::tmp<Foam::scalarField > Foam::lduMatrix::H1() const Foam::tmp<Foam::scalarField> Foam::lduMatrix::H1() const
{ {
tmp<scalarField > tH1 tmp<scalarField > tH1
( (

View file

@ -66,14 +66,9 @@ class BlockCoeffMaxNorm
//- Control data dictionary //- Control data dictionary
dictionary dict_; dictionary dict_;
protected: protected:
// Protected data types
// Protected data
// Protected Member Functions // Protected Member Functions
//- Return dictionary //- Return dictionary
@ -82,6 +77,7 @@ protected:
return dict_; return dict_;
} }
public: public:
//- Runtime type information //- Runtime type information

View file

@ -179,27 +179,25 @@ void Foam::pamgPolicy::calcChild()
} }
// Collect solo equations // Collect solo equations
label nSolo = 0;
forAll (zeroCluster, eqnI) forAll (zeroCluster, eqnI)
{ {
if (zeroCluster[eqnI]) if (zeroCluster[eqnI])
{ {
// Found solo equation // Found solo equation
nSolo++; nSolo_++;
child_[eqnI] = nCoarseEqns_; child_[eqnI] = nCoarseEqns_;
} }
} }
if (nSolo > 0) if (nSolo_ > 0)
{ {
// Found solo equations // Found solo equations
nCoarseEqns_++; nCoarseEqns_++;
if (lduMatrix::debug >= 2) if (lduMatrix::debug >= 2)
{ {
Pout << "Found " << nSolo << " weakly connected equations." Pout<< "Found " << nSolo_ << " weakly connected equations."
<< endl; << endl;
} }
} }
@ -334,6 +332,7 @@ Foam::pamgPolicy::pamgPolicy
amgPolicy(groupSize, minCoarseEqns), amgPolicy(groupSize, minCoarseEqns),
matrix_(matrix), matrix_(matrix),
child_(), child_(),
nSolo_(0),
nCoarseEqns_(0), nCoarseEqns_(0),
coarsen_(false) coarsen_(false)
{ {
@ -395,6 +394,9 @@ Foam::autoPtr<Foam::amgMatrix> Foam::pamgPolicy::restrictMatrix
# endif # endif
// Does the matrix have solo equations
bool soloEqns = nSolo_ > 0;
// Storage for block neighbours and coefficients // Storage for block neighbours and coefficients
// Guess initial maximum number of neighbours in block // Guess initial maximum number of neighbours in block
@ -409,6 +411,9 @@ Foam::autoPtr<Foam::amgMatrix> Foam::pamgPolicy::restrictMatrix
scalarList blockCoeffsData(maxNnbrs*nCoarseEqns_, 0.0); scalarList blockCoeffsData(maxNnbrs*nCoarseEqns_, 0.0);
// Create face-restriction addressing // Create face-restriction addressing
// Note: value of coeffRestrictAddr for off-diagonal coefficients
// touching solo cells will be invalid
// HJ, 7/Apr/2015
labelList coeffRestrictAddr(nFineCoeffs); labelList coeffRestrictAddr(nFineCoeffs);
// Initial neighbour array (not in upper-triangle order) // Initial neighbour array (not in upper-triangle order)
@ -418,17 +423,24 @@ Foam::autoPtr<Foam::amgMatrix> Foam::pamgPolicy::restrictMatrix
label nCoarseCoeffs = 0; label nCoarseCoeffs = 0;
// Loop through all fine coeffs // Loop through all fine coeffs
forAll (upperAddr, fineCoeffi) forAll (upperAddr, fineCoeffI)
{ {
label rmUpperAddr = child_[upperAddr[fineCoeffi]]; label rmUpperAddr = child_[upperAddr[fineCoeffI]];
label rmLowerAddr = child_[lowerAddr[fineCoeffi]]; label rmLowerAddr = child_[lowerAddr[fineCoeffI]];
// If the coefficient touches block zero and solo equations are
// present, skip it
if (soloEqns && (rmUpperAddr == 0 || rmLowerAddr == 0))
{
continue;
}
if (rmUpperAddr == rmLowerAddr) if (rmUpperAddr == rmLowerAddr)
{ {
// For each fine coeff inside of a coarse cluster keep the address // For each fine coeff inside of a coarse cluster keep the address
// of the cluster corresponding to the coeff in the // of the cluster corresponding to the coeff in the
// coeffRestrictAddr as a negative index // coeffRestrictAddr as a negative index
coeffRestrictAddr[fineCoeffi] = -(rmUpperAddr + 1); coeffRestrictAddr[fineCoeffI] = -(rmUpperAddr + 1);
} }
else else
{ {
@ -455,7 +467,7 @@ Foam::autoPtr<Foam::amgMatrix> Foam::pamgPolicy::restrictMatrix
if (initCoarseNeighb[ccCoeffs[i]] == cNei) if (initCoarseNeighb[ccCoeffs[i]] == cNei)
{ {
nbrFound = true; nbrFound = true;
coeffRestrictAddr[fineCoeffi] = ccCoeffs[i]; coeffRestrictAddr[fineCoeffI] = ccCoeffs[i];
break; break;
} }
} }
@ -485,7 +497,7 @@ Foam::autoPtr<Foam::amgMatrix> Foam::pamgPolicy::restrictMatrix
ccCoeffs[ccnCoeffs] = nCoarseCoeffs; ccCoeffs[ccnCoeffs] = nCoarseCoeffs;
initCoarseNeighb[nCoarseCoeffs] = cNei; initCoarseNeighb[nCoarseCoeffs] = cNei;
coeffRestrictAddr[fineCoeffi] = nCoarseCoeffs; coeffRestrictAddr[fineCoeffI] = nCoarseCoeffs;
ccnCoeffs++; ccnCoeffs++;
// New coarse coeff created // New coarse coeff created
@ -518,12 +530,22 @@ Foam::autoPtr<Foam::amgMatrix> Foam::pamgPolicy::restrictMatrix
} }
} }
forAll(coeffRestrictAddr, fineCoeffi) forAll (coeffRestrictAddr, fineCoeffI)
{ {
if (coeffRestrictAddr[fineCoeffi] >= 0) label rmUpperAddr = child_[upperAddr[fineCoeffI]];
label rmLowerAddr = child_[lowerAddr[fineCoeffI]];
// If the coefficient touches block zero and solo equations are
// present, skip it
if (soloEqns && (rmUpperAddr == 0 || rmLowerAddr == 0))
{ {
coeffRestrictAddr[fineCoeffi] = continue;
coarseCoeffMap[coeffRestrictAddr[fineCoeffi]]; }
if (coeffRestrictAddr[fineCoeffI] >= 0)
{
coeffRestrictAddr[fineCoeffI] =
coarseCoeffMap[coeffRestrictAddr[fineCoeffI]];
} }
} }
@ -696,8 +718,18 @@ Foam::autoPtr<Foam::amgMatrix> Foam::pamgPolicy::restrictMatrix
scalarField& coarseUpper = coarseMatrix.upper(); scalarField& coarseUpper = coarseMatrix.upper();
scalarField& coarseLower = coarseMatrix.lower(); scalarField& coarseLower = coarseMatrix.lower();
forAll(coeffRestrictAddr, fineCoeffI) forAll (coeffRestrictAddr, fineCoeffI)
{ {
label rmUpperAddr = child_[upperAddr[fineCoeffI]];
label rmLowerAddr = child_[lowerAddr[fineCoeffI]];
// If the coefficient touches block zero and solo equations are
// present, skip it
if (soloEqns && (rmUpperAddr == 0 || rmLowerAddr == 0))
{
continue;
}
label cCoeff = coeffRestrictAddr[fineCoeffI]; label cCoeff = coeffRestrictAddr[fineCoeffI];
if (cCoeff >= 0) if (cCoeff >= 0)
@ -721,8 +753,18 @@ Foam::autoPtr<Foam::amgMatrix> Foam::pamgPolicy::restrictMatrix
// Coarse matrix upper coefficients // Coarse matrix upper coefficients
scalarField& coarseUpper = coarseMatrix.upper(); scalarField& coarseUpper = coarseMatrix.upper();
forAll(coeffRestrictAddr, fineCoeffI) forAll (coeffRestrictAddr, fineCoeffI)
{ {
label rmUpperAddr = child_[upperAddr[fineCoeffI]];
label rmLowerAddr = child_[lowerAddr[fineCoeffI]];
// If the coefficient touches block zero and solo equations are
// present, skip it
if (soloEqns && (rmUpperAddr == 0 || rmLowerAddr == 0))
{
continue;
}
label cCoeff = coeffRestrictAddr[fineCoeffI]; label cCoeff = coeffRestrictAddr[fineCoeffI];
if (cCoeff >= 0) if (cCoeff >= 0)

View file

@ -59,9 +59,12 @@ class pamgPolicy
//- Reference to matrix //- Reference to matrix
const lduMatrix& matrix_; const lduMatrix& matrix_;
//- Child array //- Child array: for each fine equation give coarse cluster index
labelField child_; labelField child_;
//- Number of solo cells
label nSolo_;
//- Number of coarse equations //- Number of coarse equations
label nCoarseEqns_; label nCoarseEqns_;

View file

@ -263,7 +263,9 @@ void Foam::fineAmgLevel::scaleX
// Scale x // Scale x
if if
( (
scalingVector[0]*scalingVector[1] <= 0 mag(scalingVector[0]) > GREAT
|| mag(scalingVector[1]) > GREAT
|| scalingVector[0]*scalingVector[1] <= 0
|| mag(scalingVector[0]) < mag(scalingVector[1]) || mag(scalingVector[0]) < mag(scalingVector[1])
) )
{ {

View file

@ -236,7 +236,10 @@ Foam::lduSolverPerformance Foam::deflationSolver::solve
if if
( (
nDirs < maxDirs_ nDirs < maxDirs_
&& R[qI][qI] > 1e-3*Foam::max(R[0][0], R[1][1]) && (
R[qI][qI] > GREAT
|| R[qI][qI] > 1e-3*Foam::max(R[0][0], R[1][1])
)
) )
{ {
Z.set(nDirs, new scalarField(Q[qI])); Z.set(nDirs, new scalarField(Q[qI]));

View file

@ -110,11 +110,11 @@ void Foam::gradientEnthalpyFvPatchScalarField::updateCoeffs()
) )
{ {
gradient() = thermo.Cp(Tw, patchi)*Tw.snGrad() gradient() = thermo.Cp(Tw, patchi)*Tw.snGrad()
+ patch().deltaCoeffs()* + patch().deltaCoeffs()*
( (
thermo.h(Tw, patchi) thermo.h(Tw, patchi)
- thermo.h(Tw, patch().faceCells()) - thermo.h(Tw, patch().faceCells())
); );
} }
else if else if
( (

View file

@ -119,11 +119,11 @@ void Foam::mixedEnthalpyFvPatchScalarField::updateCoeffs()
{ {
refValue() = thermo.h(Tw.refValue(), patchi); refValue() = thermo.h(Tw.refValue(), patchi);
refGrad() = thermo.Cp(Tw, patchi)*Tw.refGrad() refGrad() = thermo.Cp(Tw, patchi)*Tw.refGrad()
+ patch().deltaCoeffs()* + patch().deltaCoeffs()*
( (
thermo.h(Tw, patchi) thermo.h(Tw, patchi)
- thermo.h(Tw, patch().faceCells()) - thermo.h(Tw, patch().faceCells())
); );
} }
else if else if
( (
@ -135,11 +135,11 @@ void Foam::mixedEnthalpyFvPatchScalarField::updateCoeffs()
{ {
refValue() = thermo.hs(Tw.refValue(), patchi); refValue() = thermo.hs(Tw.refValue(), patchi);
refGrad() = thermo.Cp(Tw, patchi)*Tw.refGrad() refGrad() = thermo.Cp(Tw, patchi)*Tw.refGrad()
+ patch().deltaCoeffs()* + patch().deltaCoeffs()*
( (
thermo.hs(Tw, patchi) thermo.hs(Tw, patchi)
- thermo.hs(Tw, patch().faceCells()) - thermo.hs(Tw, patch().faceCells())
); );
} }
mixedFvPatchScalarField::updateCoeffs(); mixedFvPatchScalarField::updateCoeffs();

View file

@ -68,13 +68,21 @@ solvers
} }
blockSolver blockSolver
{} {
convergence 1e-6;
}
SIMPLE SIMPLE
{ {
nNonOrthoCorrectors 0; nNonOrthoCorrectors 0;
} }
fieldBounds
{
U 500;
p -5e4 5e4;
}
relaxationFactors relaxationFactors
{ {
U 0.95; U 0.95;

View file

@ -82,7 +82,9 @@ solvers
} }
blockSolver blockSolver
{} {
convergence 1e-6;
}
relaxationFactors relaxationFactors
{ {
@ -91,6 +93,12 @@ relaxationFactors
epsilon 0.9; epsilon 0.9;
} }
fieldBounds
{
U 500;
p -5e4 5e4;
}
SIMPLE SIMPLE
{ {
nNonOrthoCorrectors 0; nNonOrthoCorrectors 0;

View file

@ -69,10 +69,18 @@ solvers
blockSolver blockSolver
{ {
convergence 1e-6;
pRefCell 0; pRefCell 0;
pRefValue 0; pRefValue 0;
} }
fieldBounds
{
U 500;
p -5e4 5e4;
}
relaxationFactors relaxationFactors
{ {
U 0.999; U 0.999;

View file

@ -16,7 +16,7 @@ FoamFile
ddtSchemes ddtSchemes
{ {
default CrankNicholson 0.9; default CrankNicolson 0.9;
} }
gradSchemes gradSchemes