Merge branch 'nextRelease' of ssh://git.code.sf.net/p/foam-extend/foam-extend-4.0 into nextRelease
This commit is contained in:
commit
64ef3b387f
105 changed files with 12018 additions and 3570 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -93,6 +93,7 @@ PlyParser_FoamFileParser_parsetab.py
|
||||||
*.tar
|
*.tar
|
||||||
*.tgz
|
*.tgz
|
||||||
*.gtgz
|
*.gtgz
|
||||||
|
*.xz
|
||||||
|
|
||||||
# ignore the persistent .build tag in the main directory
|
# ignore the persistent .build tag in the main directory
|
||||||
/.build
|
/.build
|
||||||
|
|
3
ThirdParty/AllClean.stage1
vendored
3
ThirdParty/AllClean.stage1
vendored
|
@ -98,6 +98,7 @@ uninstallPackage cmake-2.8.11 $1
|
||||||
uninstallPackage cmake-2.8.12 $1
|
uninstallPackage cmake-2.8.12 $1
|
||||||
uninstallPackage cmake-3.2.2 $1
|
uninstallPackage cmake-3.2.2 $1
|
||||||
uninstallPackage cmake-3.3.2 $1
|
uninstallPackage cmake-3.3.2 $1
|
||||||
|
uninstallPackage cmake-3.11.4 $1
|
||||||
|
|
||||||
|
|
||||||
echo
|
echo
|
||||||
|
@ -107,5 +108,3 @@ echo ========================================
|
||||||
echo
|
echo
|
||||||
|
|
||||||
# ----------------------------------------------------------------- end-of-file
|
# ----------------------------------------------------------------- end-of-file
|
||||||
|
|
||||||
|
|
||||||
|
|
3
ThirdParty/AllClean.stage2
vendored
3
ThirdParty/AllClean.stage2
vendored
|
@ -56,6 +56,7 @@ uninstallPackage openmpi-1.4.3 $1
|
||||||
uninstallPackage openmpi-1.5 $1
|
uninstallPackage openmpi-1.5 $1
|
||||||
uninstallPackage openmpi-1.6.5 $1
|
uninstallPackage openmpi-1.6.5 $1
|
||||||
uninstallPackage openmpi-1.8.4 $1
|
uninstallPackage openmpi-1.8.4 $1
|
||||||
|
uninstallPackage openmpi-3.1.0 $1
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo ========================================
|
echo ========================================
|
||||||
|
@ -64,5 +65,3 @@ echo ========================================
|
||||||
echo
|
echo
|
||||||
|
|
||||||
# ----------------------------------------------------------------- end-of-file
|
# ----------------------------------------------------------------- end-of-file
|
||||||
|
|
||||||
|
|
||||||
|
|
9
ThirdParty/AllMake.stage1
vendored
9
ThirdParty/AllMake.stage1
vendored
|
@ -182,11 +182,16 @@ echo
|
||||||
( rpm_make -p cmake-3.3.2 -s cmake-3.3.2.spec -u http://www.cmake.org/files/v3.3/cmake-3.3.2.tar.gz )
|
( rpm_make -p cmake-3.3.2 -s cmake-3.3.2.spec -u http://www.cmake.org/files/v3.3/cmake-3.3.2.tar.gz )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# cmake 3.11.4
|
||||||
|
#
|
||||||
|
[ ! -z "$WM_THIRD_PARTY_USE_CMAKE_3114" ] && {
|
||||||
|
echo "Building cmake 3.11.4"
|
||||||
|
( rpm_make -p cmake-3.11.4 -s cmake-3.11.4.spec -u http://www.cmake.org/files/v3.11/cmake-3.11.4.tar.gz )
|
||||||
|
}
|
||||||
|
|
||||||
echo ========================================
|
echo ========================================
|
||||||
echo Done ThirdParty AllMake: Stage1
|
echo Done ThirdParty AllMake: Stage1
|
||||||
echo ========================================
|
echo ========================================
|
||||||
echo
|
echo
|
||||||
|
|
||||||
# ----------------------------------------------------------------- end-of-file
|
# ----------------------------------------------------------------- end-of-file
|
||||||
|
|
||||||
|
|
||||||
|
|
19
ThirdParty/AllMake.stage2
vendored
19
ThirdParty/AllMake.stage2
vendored
|
@ -31,10 +31,10 @@
|
||||||
# Communication libraries
|
# Communication libraries
|
||||||
#
|
#
|
||||||
# Once this stage is built, you would normally re-initialize your
|
# Once this stage is built, you would normally re-initialize your
|
||||||
# foam-extend environment in order redirect foam-extend toward the
|
# foam-extend environment in order redirect foam-extend toward the
|
||||||
# appropriate communication library
|
# appropriate communication library
|
||||||
#
|
#
|
||||||
# NOTE: This stage is optional. Use it only if you want to override
|
# NOTE: This stage is optional. Use it only if you want to override
|
||||||
# your system communication libraries
|
# your system communication libraries
|
||||||
#
|
#
|
||||||
# Requirements:
|
# Requirements:
|
||||||
|
@ -45,7 +45,7 @@
|
||||||
#
|
#
|
||||||
# Author:
|
# Author:
|
||||||
# Martin Beaudoin, Hydro-Quebec, (2015)
|
# Martin Beaudoin, Hydro-Quebec, (2015)
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# run from third-party directory only
|
# run from third-party directory only
|
||||||
cd ${0%/*} || exit 1
|
cd ${0%/*} || exit 1
|
||||||
|
@ -104,6 +104,15 @@ then
|
||||||
( rpm_make -p openmpi-1.8.8 -s openmpi-1.8.8.spec -u https://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.8.tar.gz \
|
( rpm_make -p openmpi-1.8.8 -s openmpi-1.8.8.spec -u https://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.8.tar.gz \
|
||||||
-f --define '_configureAdditionalArgs "$WM_THIRD_PARTY_USE_OPENMPI_188_ConfigureAdditionalArgs"')
|
-f --define '_configureAdditionalArgs "$WM_THIRD_PARTY_USE_OPENMPI_188_ConfigureAdditionalArgs"')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# openmpi 3.1.1
|
||||||
|
#
|
||||||
|
[ ! -z "$WM_THIRD_PARTY_USE_OPENMPI_311" ] && {
|
||||||
|
echo "Building openmpi 3.1.1"
|
||||||
|
( rpm_make -p openmpi-3.1.1 -s openmpi-3.1.1.spec -u https://www.open-mpi.org/software/ompi/v3.1/downloads/openmpi-3.1.1.tar.gz \
|
||||||
|
-f --define '_configureAdditionalArgs "$WM_THIRD_PARTY_USE_OPENMPI_311_ConfigureAdditionalArgs"')
|
||||||
|
}
|
||||||
|
|
||||||
# mvipich2-2.2
|
# mvipich2-2.2
|
||||||
#
|
#
|
||||||
[ ! -z "$WM_THIRD_PARTY_USE_MVAPICH2_22" ] && {
|
[ ! -z "$WM_THIRD_PARTY_USE_MVAPICH2_22" ] && {
|
||||||
|
@ -121,5 +130,3 @@ echo ========================================
|
||||||
echo
|
echo
|
||||||
|
|
||||||
# ----------------------------------------------------------------- end-of-file
|
# ----------------------------------------------------------------- end-of-file
|
||||||
|
|
||||||
|
|
||||||
|
|
26
ThirdParty/AllMake.stage3
vendored
26
ThirdParty/AllMake.stage3
vendored
|
@ -108,6 +108,13 @@ then
|
||||||
echo "Building Mesquite 2.1.2"
|
echo "Building Mesquite 2.1.2"
|
||||||
( rpm_make -p mesquite-2.1.2 -s mesquite-2.1.2.spec -u http://downloads.sourceforge.net/project/foam-extend/ThirdParty/mesquite-2.1.2.tar.gz )
|
( rpm_make -p mesquite-2.1.2 -s mesquite-2.1.2.spec -u http://downloads.sourceforge.net/project/foam-extend/ThirdParty/mesquite-2.1.2.tar.gz )
|
||||||
}
|
}
|
||||||
|
# Mesquite 2.3.0
|
||||||
|
#
|
||||||
|
[ ! -z "$WM_THIRD_PARTY_USE_MESQUITE_230" ] && {
|
||||||
|
echo "Building Mesquite 2.3.0"
|
||||||
|
( rpm_make -p mesquite-2.3.0 -s mesquite-2.3.0.spec -u https://software.sandia.gov/mesquite/mesquite-2.3.0.tar.gz )
|
||||||
|
# ( rpm_make -p mesquite-2.3.0 -s mesquite-2.3.0.spec -u http://downloads.sourceforge.net/project/foam-extend/ThirdParty/mesquite-2.3.0.tar.gz )
|
||||||
|
}
|
||||||
else
|
else
|
||||||
echo "Using system installed Mesquite"
|
echo "Using system installed Mesquite"
|
||||||
echo ""
|
echo ""
|
||||||
|
@ -183,6 +190,18 @@ then
|
||||||
echo "Building PyFoam 0.6.4"
|
echo "Building PyFoam 0.6.4"
|
||||||
( rpm_make -p PyFoam-0.6.4 -s PyFoam-0.6.4.spec -u http://openfoamwiki.net/images/3/3b/PyFoam-0.6.4.tar.gz -n PyFoam-0.6.4-1.noarch -a noarch)
|
( rpm_make -p PyFoam-0.6.4 -s PyFoam-0.6.4.spec -u http://openfoamwiki.net/images/3/3b/PyFoam-0.6.4.tar.gz -n PyFoam-0.6.4-1.noarch -a noarch)
|
||||||
}
|
}
|
||||||
|
# PyFoam 0.6.6
|
||||||
|
#
|
||||||
|
[ ! -z "$WM_THIRD_PARTY_USE_PYFOAM_066" ] && {
|
||||||
|
echo "Building PyFoam 0.6.6"
|
||||||
|
( rpm_make -p PyFoam-0.6.6 -s PyFoam-0.6.6.spec -u https://openfoamwiki.net/images/a/af/PyFoam-0.6.6.tar.gz -n PyFoam-0.6.6-1.noarch -a noarch)
|
||||||
|
}
|
||||||
|
# PyFoam 0.6.9
|
||||||
|
#
|
||||||
|
[ ! -z "$WM_THIRD_PARTY_USE_PYFOAM_069" ] && {
|
||||||
|
echo "Building PyFoam 0.6.9"
|
||||||
|
( rpm_make -p PyFoam-0.6.9 -s PyFoam-0.6.9.spec -u https://files.pythonhosted.org/packages/78/f5/8f65b66c8ac0e5415f785809e182dd0f0dc562a42094e1a86bd22c7d7ece/PyFoam-0.6.9.tar.gz -n PyFoam-0.6.9-1.noarch -a noarch)
|
||||||
|
}
|
||||||
else
|
else
|
||||||
echo "Using system installed PyFoam"
|
echo "Using system installed PyFoam"
|
||||||
echo ""
|
echo ""
|
||||||
|
@ -191,6 +210,13 @@ fi
|
||||||
# hwloc
|
# hwloc
|
||||||
if [ -z "$HWLOC_SYSTEM" ]
|
if [ -z "$HWLOC_SYSTEM" ]
|
||||||
then
|
then
|
||||||
|
# hwloc 2.0.1
|
||||||
|
#
|
||||||
|
[ ! -z "$WM_THIRD_PARTY_USE_HWLOC_201" ] && {
|
||||||
|
echo "Building hwloc 2.0.1"
|
||||||
|
( rpm_make -p hwloc-2.0.1 -s hwloc-2.0.1.spec -u http://www.open-mpi.org/software/hwloc/v2.0/downloads/hwloc-2.0.1.tar.gz )
|
||||||
|
# ( rpm_make -p hwloc-2.0.1 -s hwloc-2.0.1.spec -u http://downloads.sourceforge.net/project/foam-extend/ThirdParty/hwloc-2.0.1.tar.gz )
|
||||||
|
}
|
||||||
# hwloc 1.10.1
|
# hwloc 1.10.1
|
||||||
#
|
#
|
||||||
[ ! -z "$WM_THIRD_PARTY_USE_HWLOC_1101" ] && {
|
[ ! -z "$WM_THIRD_PARTY_USE_HWLOC_1101" ] && {
|
||||||
|
|
16
ThirdParty/AllMake.stage4
vendored
16
ThirdParty/AllMake.stage4
vendored
|
@ -71,6 +71,12 @@ then
|
||||||
echo "Building Qt 5.8.0"
|
echo "Building Qt 5.8.0"
|
||||||
( rpm_make -p qt-everywhere-opensource-src-5.8.0 -s qt-everywhere-opensource-src-5.8.0.spec -u http://download.qt.io/archive/qt/5.8/5.8.0/single/qt-everywhere-opensource-src-5.8.0.tar.gz )
|
( rpm_make -p qt-everywhere-opensource-src-5.8.0 -s qt-everywhere-opensource-src-5.8.0.spec -u http://download.qt.io/archive/qt/5.8/5.8.0/single/qt-everywhere-opensource-src-5.8.0.tar.gz )
|
||||||
}
|
}
|
||||||
|
# Qt 5.11.1
|
||||||
|
#
|
||||||
|
[ ! -z "$WM_THIRD_PARTY_USE_QT_5111" ] && {
|
||||||
|
echo "Building Qt 5.11.1"
|
||||||
|
( rpm_make -p qt-everywhere-src-5.11.1 -s qt-everywhere-src-5.11.1.spec -u http://download.qt.io/archive/qt/5.11/5.11.1/single/qt-everywhere-src-5.11.1.tar.xz )
|
||||||
|
}
|
||||||
else
|
else
|
||||||
echo "Using system installed QT"
|
echo "Using system installed QT"
|
||||||
echo ""
|
echo ""
|
||||||
|
@ -124,6 +130,14 @@ then
|
||||||
-f --define='_qmakePath $QT_BIN_DIR/qmake'
|
-f --define='_qmakePath $QT_BIN_DIR/qmake'
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
# ParaView 5.5.2
|
||||||
|
#
|
||||||
|
[ ! -z "$WM_THIRD_PARTY_USE_PARAVIEW_552" ] && {
|
||||||
|
echo "Building ParaView 5.5.2"
|
||||||
|
( rpm_make -p ParaView-5.5.2 -s ParaView-5.5.2.spec -u http://www.paraview.org/files/v5.5/ParaView-v5.5.2.tar.gz \
|
||||||
|
-f --define='_qmakePath $QT_BIN_DIR/qmake'
|
||||||
|
)
|
||||||
|
}
|
||||||
else
|
else
|
||||||
echo "WARNING: "
|
echo "WARNING: "
|
||||||
echo "WARNING: Skipping the installation of ParaView-4.x.x."
|
echo "WARNING: Skipping the installation of ParaView-4.x.x."
|
||||||
|
@ -172,5 +186,3 @@ echo ========================================
|
||||||
echo
|
echo
|
||||||
|
|
||||||
# ----------------------------------------------------------------- end-of-file
|
# ----------------------------------------------------------------- end-of-file
|
||||||
|
|
||||||
|
|
||||||
|
|
122
ThirdParty/rpmBuild/SOURCES/ParaView-5.5.2.patch
vendored
Normal file
122
ThirdParty/rpmBuild/SOURCES/ParaView-5.5.2.patch
vendored
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
# From https://gitlab.kitware.com/bob.obara/paraview/commit/931c779dde8460fe32aa8a3d19956b175b96e4f9.patch
|
||||||
|
diff --git a/Plugins/SLACTools/pqSLACDataLoadManager.cxx b/Plugins/SLACTools/pqSLACDataLoadManager.cxx
|
||||||
|
index 3ba019c26b177f2cd93d19f01a0b3a280aaf6ac2..ce38396f6844e7628d4d225d165f2ac4f6598f19 100644
|
||||||
|
--- a/Plugins/SLACTools/pqSLACDataLoadManager.cxx
|
||||||
|
+++ b/Plugins/SLACTools/pqSLACDataLoadManager.cxx
|
||||||
|
@@ -34,6 +34,7 @@
|
||||||
|
#include "vtkSMProperty.h"
|
||||||
|
#include "vtkSMSourceProxy.h"
|
||||||
|
|
||||||
|
+#include <QAction>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QtDebug>
|
||||||
|
|
||||||
|
diff --git a/Qt/ApplicationComponents/pqColorMapEditor.cxx b/Qt/ApplicationComponents/pqColorMapEditor.cxx
|
||||||
|
index 0395185e0ab17a544233e9add78cc926ae19f2cd..88b56745eb0d58e5a6b2f2d2cacd62e66c230901 100644
|
||||||
|
--- a/Qt/ApplicationComponents/pqColorMapEditor.cxx
|
||||||
|
+++ b/Qt/ApplicationComponents/pqColorMapEditor.cxx
|
||||||
|
@@ -59,6 +59,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QKeyEvent>
|
||||||
|
#include <QPointer>
|
||||||
|
+#include <QStyle>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
class pqColorMapEditor::pqInternals
|
||||||
|
diff --git a/Qt/ApplicationComponents/pqDoubleRangeSliderPropertyWidget.cxx b/Qt/ApplicationComponents/pqDoubleRangeSliderPropertyWidget.cxx
|
||||||
|
index 908e4598e025fab059a7b6b4097ceddf9cffef6a..820361a2b34abc0af6e4f317d7f77c6a954f7129 100644
|
||||||
|
--- a/Qt/ApplicationComponents/pqDoubleRangeSliderPropertyWidget.cxx
|
||||||
|
+++ b/Qt/ApplicationComponents/pqDoubleRangeSliderPropertyWidget.cxx
|
||||||
|
@@ -43,6 +43,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#include "vtkSMUncheckedPropertyHelper.h"
|
||||||
|
|
||||||
|
#include <QGridLayout>
|
||||||
|
+#include <QStyle>
|
||||||
|
|
||||||
|
class pqDoubleRangeSliderPropertyWidget::pqInternals
|
||||||
|
{
|
||||||
|
diff --git a/Qt/ApplicationComponents/pqStandardViewFrameActionsImplementation.cxx b/Qt/ApplicationComponents/pqStandardViewFrameActionsImplementation.cxx
|
||||||
|
index c297dc3d9e7acab31d5fe326a6207fb326893e73..501633f63a1facae26371e9ea75eccdab582a6cc 100644
|
||||||
|
--- a/Qt/ApplicationComponents/pqStandardViewFrameActionsImplementation.cxx
|
||||||
|
+++ b/Qt/ApplicationComponents/pqStandardViewFrameActionsImplementation.cxx
|
||||||
|
@@ -69,6 +69,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QSet>
|
||||||
|
#include <QShortcut>
|
||||||
|
+#include <QStyle>
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
pqStandardViewFrameActionsImplementation::pqStandardViewFrameActionsImplementation(
|
||||||
|
diff --git a/Qt/ApplicationComponents/pqTimeInspectorWidget.cxx b/Qt/ApplicationComponents/pqTimeInspectorWidget.cxx
|
||||||
|
index 6774c2e48e61e6e8278da02075a47b0ecabcd396..e85e614f042143700f938cc855ef486f9f8be2d7 100644
|
||||||
|
--- a/Qt/ApplicationComponents/pqTimeInspectorWidget.cxx
|
||||||
|
+++ b/Qt/ApplicationComponents/pqTimeInspectorWidget.cxx
|
||||||
|
@@ -49,6 +49,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#include "vtkSMPropertyHelper.h"
|
||||||
|
#include "vtkSMSourceProxy.h"
|
||||||
|
|
||||||
|
+#include <QHeaderView>
|
||||||
|
#include <QLineF>
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QVariant>
|
||||||
|
diff --git a/Qt/ApplicationComponents/pqTransferFunctionWidgetPropertyDialog.cxx b/Qt/ApplicationComponents/pqTransferFunctionWidgetPropertyDialog.cxx
|
||||||
|
index 55d31464474eff2f965d959f99dd2db0b5c185bf..93cd995d92e1bbe361857bb9e88d710463da9914 100644
|
||||||
|
--- a/Qt/ApplicationComponents/pqTransferFunctionWidgetPropertyDialog.cxx
|
||||||
|
+++ b/Qt/ApplicationComponents/pqTransferFunctionWidgetPropertyDialog.cxx
|
||||||
|
@@ -36,6 +36,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#include "vtkPiecewiseFunction.h"
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
|
+#include <QDoubleValidator>
|
||||||
|
+
|
||||||
|
class pqTransferFunctionWidgetPropertyDialog::pqInternals
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
diff --git a/Qt/ApplicationComponents/pqViewResolutionPropertyWidget.cxx b/Qt/ApplicationComponents/pqViewResolutionPropertyWidget.cxx
|
||||||
|
index 6d2865431ef930a13a9fa0796474dbfb126fc4ac..8d2c4b61cd1038836feb610437f6539dcc6e00bd 100644
|
||||||
|
--- a/Qt/ApplicationComponents/pqViewResolutionPropertyWidget.cxx
|
||||||
|
+++ b/Qt/ApplicationComponents/pqViewResolutionPropertyWidget.cxx
|
||||||
|
@@ -39,6 +39,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#include "vtkSMProxy.h"
|
||||||
|
|
||||||
|
#include <QIntValidator>
|
||||||
|
+#include <QStyle>
|
||||||
|
|
||||||
|
class pqViewResolutionPropertyWidget::pqInternals
|
||||||
|
{
|
||||||
|
diff --git a/Qt/Components/pqChangeInputDialog.cxx b/Qt/Components/pqChangeInputDialog.cxx
|
||||||
|
index 8a67b10095ee037ad3ee1179b342c72d62d11db9..86db3de01c7dccb0727148e709616d9f4c7debe6 100644
|
||||||
|
--- a/Qt/Components/pqChangeInputDialog.cxx
|
||||||
|
+++ b/Qt/Components/pqChangeInputDialog.cxx
|
||||||
|
@@ -45,6 +45,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#include "vtkSMProxy.h"
|
||||||
|
#include "vtkSmartPointer.h"
|
||||||
|
|
||||||
|
+#include <QHeaderView>
|
||||||
|
#include <QItemSelectionModel>
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QRadioButton>
|
||||||
|
diff --git a/Qt/Components/pqCinemaTrackSelection.cxx b/Qt/Components/pqCinemaTrackSelection.cxx
|
||||||
|
index 3d6d9dde19f3860c3f0af54f088e4f3b28d1f7b9..eea2e37680126ced46921749c4e70b1295680032 100644
|
||||||
|
--- a/Qt/Components/pqCinemaTrackSelection.cxx
|
||||||
|
+++ b/Qt/Components/pqCinemaTrackSelection.cxx
|
||||||
|
@@ -30,6 +30,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
========================================================================*/
|
||||||
|
#include <QDebug>
|
||||||
|
+#include <QHeaderView>
|
||||||
|
|
||||||
|
#include "vtkPVArrayInformation.h"
|
||||||
|
#include "vtkPVDataInformation.h"
|
||||||
|
diff --git a/Qt/Python/pqPythonShell.cxx b/Qt/Python/pqPythonShell.cxx
|
||||||
|
index 3d01fd0a96deda60a5c946820b10c54992a6c9fb..bc1a0149360a1d4ae2caa8622ac76f2176608109 100644
|
||||||
|
--- a/Qt/Python/pqPythonShell.cxx
|
||||||
|
+++ b/Qt/Python/pqPythonShell.cxx
|
||||||
|
@@ -52,6 +52,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#include "vtkStringOutputWindow.h"
|
||||||
|
#include "vtkWeakPointer.h"
|
||||||
|
|
||||||
|
+#include <QAbstractItemView>
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QCursor>
|
||||||
|
#include <QFile>
|
295
ThirdParty/rpmBuild/SPECS/ParaView-5.5.2.spec
vendored
Normal file
295
ThirdParty/rpmBuild/SPECS/ParaView-5.5.2.spec
vendored
Normal file
|
@ -0,0 +1,295 @@
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# ========= |
|
||||||
|
# \\ / 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-5.5.2
|
||||||
|
#
|
||||||
|
# Description
|
||||||
|
# RPM spec file for creating a relocatable RPM
|
||||||
|
#
|
||||||
|
# Authors:
|
||||||
|
# Martin Beaudoin, (2018)
|
||||||
|
# Andreas Feymark, Chalmers University of Technology, (2013)
|
||||||
|
# Pascal Beckstein, HZDR, (2018)
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# 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}
|
||||||
|
|
||||||
|
# Turning off the Fascist build policy
|
||||||
|
# Useful for debugging the install section
|
||||||
|
%define _unpackaged_files_terminate_build 0
|
||||||
|
|
||||||
|
# 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 5.5.2
|
||||||
|
|
||||||
|
%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/v5.5/
|
||||||
|
Source: %url/%{name}-v%{version}.tar.gz
|
||||||
|
Prefix: %{_prefix}
|
||||||
|
Group: Development/Tools
|
||||||
|
Patch0: ParaView-5.5.2.patch
|
||||||
|
|
||||||
|
%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}
|
||||||
|
|
||||||
|
%patch0 -p1
|
||||||
|
|
||||||
|
%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 BUILD_SHARED_LIBS:BOOL=ON
|
||||||
|
addCMakeVariable CMAKE_BUILD_TYPE:STRING=Release
|
||||||
|
addCMakeVariable BUILD_TESTING:BOOL=OFF
|
||||||
|
|
||||||
|
# We build with Python. This is ust too useful
|
||||||
|
addCMakeVariable PARAVIEW_ENABLE_PYTHON:BOOL=ON
|
||||||
|
|
||||||
|
# include development files in "make install"
|
||||||
|
addCMakeVariable PARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON
|
||||||
|
|
||||||
|
%ifos darwin
|
||||||
|
# Additional installation rules for Mac OSX
|
||||||
|
addCMakeVariable PARAVIEW_EXTRA_INSTALL_RULES_FILE:FILEPATH=%{_topdir}/BUILD/%{name}-v%{version}-source/Applications/ParaView-4.4.0_extra_install_Darwin.cmake
|
||||||
|
|
||||||
|
# We activate the new Unix-style installation for Mac OS X
|
||||||
|
addCMakeVariable PARAVIEW_DO_UNIX_STYLE_INSTALLS:BOOL=ON
|
||||||
|
|
||||||
|
# Recent version of Mac OSX (Yosemite) cannot compile ParaView with the gcc compiler
|
||||||
|
# Using clang instead
|
||||||
|
CC=clang
|
||||||
|
CXX=clang++
|
||||||
|
%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.8.0 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
|
||||||
|
|
||||||
|
%ifos darwin
|
||||||
|
# Cleaning up some strange install side effect from option
|
||||||
|
# PARAVIEW_DO_UNIX_STYLE_INSTALLS
|
||||||
|
# Need to revisit this section eventually.
|
||||||
|
if [ -d "$RPM_BUILD_ROOT/$RPM_BUILD_ROOT" ]; then
|
||||||
|
mv $RPM_BUILD_ROOT/$RPM_BUILD_ROOT/%{_installPrefix}/bin/* $RPM_BUILD_ROOT/%{_installPrefix}/bin
|
||||||
|
fi
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# 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-5.5
|
||||||
|
|
||||||
|
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-5.5_plugins
|
||||||
|
|
||||||
|
[ -d \$PARAVIEW_LIB_DIR/paraview-5.5 ] && _foamAddLib \$PARAVIEW_LIB_DIR/paraview-5.5
|
||||||
|
|
||||||
|
# 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-5.5
|
||||||
|
|
||||||
|
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-5.5_plugins
|
||||||
|
|
||||||
|
if ( -e \$PARAVIEW_BIN_DIR ) then
|
||||||
|
_foamAddPath \$PARAVIEW_BIN_DIR
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ( -e \$PARAVIEW_LIB_DIR/paraview-5.5 ) then
|
||||||
|
_foamAddLib \$PARAVIEW_LIB_DIR/paraview-5.5
|
||||||
|
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}
|
||||||
|
|
||||||
|
|
205
ThirdParty/rpmBuild/SPECS/PyFoam-0.6.6.spec
vendored
Normal file
205
ThirdParty/rpmBuild/SPECS/PyFoam-0.6.6.spec
vendored
Normal file
|
@ -0,0 +1,205 @@
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# ========= |
|
||||||
|
# \\ / 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 PyFoam-0.6.6
|
||||||
|
#
|
||||||
|
# Description
|
||||||
|
# RPM spec file for PyFoam version 0.6.6
|
||||||
|
#
|
||||||
|
# Author:
|
||||||
|
# Martin Beaudoin (2018)
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# 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 PyFoam
|
||||||
|
%define release 1
|
||||||
|
%define version 0.6.6
|
||||||
|
|
||||||
|
%define buildroot %{_topdir}/BUILD/%{name}-%{version}-root
|
||||||
|
|
||||||
|
BuildRoot: %{buildroot}
|
||||||
|
Summary: PyFoam
|
||||||
|
License: Unkown
|
||||||
|
Name: %{name}
|
||||||
|
Version: %{version}
|
||||||
|
Release: %{release}
|
||||||
|
BuildArch: noarch
|
||||||
|
URL: https://openfoamwiki.net/images/a/af/PyFoam-0.6.6.tar.gz
|
||||||
|
Source: %url/%{name}-%{version}.tar.gz
|
||||||
|
Prefix: %{_prefix}
|
||||||
|
Group: Development/Tools
|
||||||
|
|
||||||
|
%define _installPrefix %{_prefix}/packages/%{name}-%{version}/platforms/noarch
|
||||||
|
|
||||||
|
%description
|
||||||
|
%{summary}
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -q -n PyFoam-%{version}
|
||||||
|
|
||||||
|
%build
|
||||||
|
# Make the shebang line portable
|
||||||
|
python setup.py build --executable "/usr/bin/env python"
|
||||||
|
|
||||||
|
%install
|
||||||
|
%define pythonVersion $(python -V 2>&1 | awk -F ' ' {'print $2'} | awk -F \. {'print $1 "." $2'})
|
||||||
|
|
||||||
|
# Temporary settings for the installation
|
||||||
|
mkdir -p $RPM_BUILD_ROOT/%{_installPrefix}/lib/python%{pythonVersion}/site-packages
|
||||||
|
export PYTHONPATH=$RPM_BUILD_ROOT/%{_installPrefix}/lib/python%{pythonVersion}/site-packages:$PYTHONPATH
|
||||||
|
python setup.py install --prefix=$RPM_BUILD_ROOT/%{_installPrefix}
|
||||||
|
|
||||||
|
|
||||||
|
# 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 PYFOAM_DIR=\$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/noarch
|
||||||
|
export PYTHONPATH=\$PYFOAM_DIR/lib/python%{pythonVersion}/site-packages:\$PYTHONPATH
|
||||||
|
|
||||||
|
# Enable access to the package applications if present
|
||||||
|
[ -d \$PYFOAM_DIR/bin ] && _foamAddPath \$PYFOAM_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 PYFOAM_DIR \$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/noarch
|
||||||
|
|
||||||
|
if ! \$?PYTHONPATH then
|
||||||
|
setenv PYTHONPATH \$PYFOAM_DIR/lib/python%{pythonVersion}/site-packages
|
||||||
|
else
|
||||||
|
setenv PYTHONPATH \$PYFOAM_DIR/lib/python%{pythonVersion}/site-packages:\$PYTHONPATH
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
if ( -e \$PYFOAM_DIR/bin ) then
|
||||||
|
_foamAddPath \$PYFOAM_DIR/bin
|
||||||
|
endif
|
||||||
|
|
||||||
|
if \$?PYFOAM_SITE_DIR then
|
||||||
|
if ( -e \$PYFOAM_SITE_DIR/bin ) then
|
||||||
|
_foamAddPath \$PYFOAM_SITE_DIR/bin
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
DOT_CSH_EOF
|
||||||
|
|
||||||
|
cat << DOT_HARDCODED_SH_EOF > $RPM_BUILD_ROOT/%{_installPrefix}/etc/%{name}-%{version}_hardcoded.sh
|
||||||
|
# In this version of the configuration script, the paths are hardcoded,
|
||||||
|
# which makes it easier to load PyFoam without the foam-extend environment
|
||||||
|
# variables
|
||||||
|
#
|
||||||
|
# Load %{name}-%{version} libraries and binaries if available
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
export PYFOAM_DIR=$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/noarch
|
||||||
|
export PYTHONPATH=\$PYFOAM_DIR/lib/python%{pythonVersion}/site-packages:\$PYTHONPATH
|
||||||
|
|
||||||
|
# Enable access to the package applications if present
|
||||||
|
[ -d \$PYFOAM_DIR/bin ] && export PATH=\$PYFOAM_DIR/bin:\$PATH
|
||||||
|
|
||||||
|
DOT_HARDCODED_SH_EOF
|
||||||
|
|
||||||
|
#
|
||||||
|
# Generate package specific .csh file for foam-extend
|
||||||
|
#
|
||||||
|
cat << DOT_HARDCODED_CSH_EOF > $RPM_BUILD_ROOT/%{_installPrefix}/etc/%{name}-%{version}_hardcoded.csh
|
||||||
|
# In this version of the configuration script, the paths are hardcoded,
|
||||||
|
# which makes it easier to load PyFoam without the foam-extend environment
|
||||||
|
# variables
|
||||||
|
#
|
||||||
|
# Load %{name}-%{version} libraries and binaries if available
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
setenv PYFOAM_DIR $WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/noarch
|
||||||
|
|
||||||
|
if ! \$?PYTHONPATH then
|
||||||
|
setenv PYTHONPATH \$PYFOAM_DIR/lib/python%{pythonVersion}/site-packages
|
||||||
|
else
|
||||||
|
setenv PYTHONPATH \$PYFOAM_DIR/lib/python%{pythonVersion}/site-packages:\$PYTHONPATH
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
if ( -e \$PYFOAM_DIR/bin ) then
|
||||||
|
_foamAddPath \$PYFOAM_DIR/bin
|
||||||
|
endif
|
||||||
|
|
||||||
|
if \$?PYFOAM_SITE_DIR then
|
||||||
|
if ( -e \$PYFOAM_SITE_DIR/bin ) then
|
||||||
|
_foamAddPath \$PYFOAM_SITE_DIR/bin
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
DOT_HARDCODED_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}
|
205
ThirdParty/rpmBuild/SPECS/PyFoam-0.6.9.spec
vendored
Normal file
205
ThirdParty/rpmBuild/SPECS/PyFoam-0.6.9.spec
vendored
Normal file
|
@ -0,0 +1,205 @@
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# ========= |
|
||||||
|
# \\ / 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 PyFoam-0.6.9
|
||||||
|
#
|
||||||
|
# Description
|
||||||
|
# RPM spec file for PyFoam version 0.6.9
|
||||||
|
#
|
||||||
|
# Author:
|
||||||
|
# Martin Beaudoin (2018)
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# 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 PyFoam
|
||||||
|
%define release 1
|
||||||
|
%define version 0.6.9
|
||||||
|
|
||||||
|
%define buildroot %{_topdir}/BUILD/%{name}-%{version}-root
|
||||||
|
|
||||||
|
BuildRoot: %{buildroot}
|
||||||
|
Summary: PyFoam
|
||||||
|
License: Unkown
|
||||||
|
Name: %{name}
|
||||||
|
Version: %{version}
|
||||||
|
Release: %{release}
|
||||||
|
BuildArch: noarch
|
||||||
|
URL: https://files.pythonhosted.org/packages/78/f5/8f65b66c8ac0e5415f785809e182dd0f0dc562a42094e1a86bd22c7d7ece/PyFoam-0.6.9.tar.gz
|
||||||
|
Source: %url/%{name}-%{version}.tar.gz
|
||||||
|
Prefix: %{_prefix}
|
||||||
|
Group: Development/Tools
|
||||||
|
|
||||||
|
%define _installPrefix %{_prefix}/packages/%{name}-%{version}/platforms/noarch
|
||||||
|
|
||||||
|
%description
|
||||||
|
%{summary}
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -q -n PyFoam-%{version}
|
||||||
|
|
||||||
|
%build
|
||||||
|
# Make the shebang line portable
|
||||||
|
python setup.py build --executable "/usr/bin/env python"
|
||||||
|
|
||||||
|
%install
|
||||||
|
%define pythonVersion $(python -V 2>&1 | awk -F ' ' {'print $2'} | awk -F \. {'print $1 "." $2'})
|
||||||
|
|
||||||
|
# Temporary settings for the installation
|
||||||
|
mkdir -p $RPM_BUILD_ROOT/%{_installPrefix}/lib/python%{pythonVersion}/site-packages
|
||||||
|
export PYTHONPATH=$RPM_BUILD_ROOT/%{_installPrefix}/lib/python%{pythonVersion}/site-packages:$PYTHONPATH
|
||||||
|
python setup.py install --prefix=$RPM_BUILD_ROOT/%{_installPrefix}
|
||||||
|
|
||||||
|
|
||||||
|
# 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 PYFOAM_DIR=\$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/noarch
|
||||||
|
export PYTHONPATH=\$PYFOAM_DIR/lib/python%{pythonVersion}/site-packages:\$PYTHONPATH
|
||||||
|
|
||||||
|
# Enable access to the package applications if present
|
||||||
|
[ -d \$PYFOAM_DIR/bin ] && _foamAddPath \$PYFOAM_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 PYFOAM_DIR \$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/noarch
|
||||||
|
|
||||||
|
if ! \$?PYTHONPATH then
|
||||||
|
setenv PYTHONPATH \$PYFOAM_DIR/lib/python%{pythonVersion}/site-packages
|
||||||
|
else
|
||||||
|
setenv PYTHONPATH \$PYFOAM_DIR/lib/python%{pythonVersion}/site-packages:\$PYTHONPATH
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
if ( -e \$PYFOAM_DIR/bin ) then
|
||||||
|
_foamAddPath \$PYFOAM_DIR/bin
|
||||||
|
endif
|
||||||
|
|
||||||
|
if \$?PYFOAM_SITE_DIR then
|
||||||
|
if ( -e \$PYFOAM_SITE_DIR/bin ) then
|
||||||
|
_foamAddPath \$PYFOAM_SITE_DIR/bin
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
DOT_CSH_EOF
|
||||||
|
|
||||||
|
cat << DOT_HARDCODED_SH_EOF > $RPM_BUILD_ROOT/%{_installPrefix}/etc/%{name}-%{version}_hardcoded.sh
|
||||||
|
# In this version of the configuration script, the paths are hardcoded,
|
||||||
|
# which makes it easier to load PyFoam without the foam-extend environment
|
||||||
|
# variables
|
||||||
|
#
|
||||||
|
# Load %{name}-%{version} libraries and binaries if available
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
export PYFOAM_DIR=$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/noarch
|
||||||
|
export PYTHONPATH=\$PYFOAM_DIR/lib/python%{pythonVersion}/site-packages:\$PYTHONPATH
|
||||||
|
|
||||||
|
# Enable access to the package applications if present
|
||||||
|
[ -d \$PYFOAM_DIR/bin ] && export PATH=\$PYFOAM_DIR/bin:\$PATH
|
||||||
|
|
||||||
|
DOT_HARDCODED_SH_EOF
|
||||||
|
|
||||||
|
#
|
||||||
|
# Generate package specific .csh file for foam-extend
|
||||||
|
#
|
||||||
|
cat << DOT_HARDCODED_CSH_EOF > $RPM_BUILD_ROOT/%{_installPrefix}/etc/%{name}-%{version}_hardcoded.csh
|
||||||
|
# In this version of the configuration script, the paths are hardcoded,
|
||||||
|
# which makes it easier to load PyFoam without the foam-extend environment
|
||||||
|
# variables
|
||||||
|
#
|
||||||
|
# Load %{name}-%{version} libraries and binaries if available
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
setenv PYFOAM_DIR $WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/noarch
|
||||||
|
|
||||||
|
if ! \$?PYTHONPATH then
|
||||||
|
setenv PYTHONPATH \$PYFOAM_DIR/lib/python%{pythonVersion}/site-packages
|
||||||
|
else
|
||||||
|
setenv PYTHONPATH \$PYFOAM_DIR/lib/python%{pythonVersion}/site-packages:\$PYTHONPATH
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
if ( -e \$PYFOAM_DIR/bin ) then
|
||||||
|
_foamAddPath \$PYFOAM_DIR/bin
|
||||||
|
endif
|
||||||
|
|
||||||
|
if \$?PYFOAM_SITE_DIR then
|
||||||
|
if ( -e \$PYFOAM_SITE_DIR/bin ) then
|
||||||
|
_foamAddPath \$PYFOAM_SITE_DIR/bin
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
DOT_HARDCODED_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}
|
166
ThirdParty/rpmBuild/SPECS/cmake-3.11.4.spec
vendored
Normal file
166
ThirdParty/rpmBuild/SPECS/cmake-3.11.4.spec
vendored
Normal file
|
@ -0,0 +1,166 @@
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# ========= |
|
||||||
|
# \\ / 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 cmake-3.11.4
|
||||||
|
#
|
||||||
|
# Description
|
||||||
|
# RPM spec file for creating a relocatable RPM
|
||||||
|
#
|
||||||
|
# Author:
|
||||||
|
# Martin Beaudoin, (2018)
|
||||||
|
# Pascal Beckstein, HZDR, (2018)
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# 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 cmake
|
||||||
|
%define release %{_WM_OPTIONS}
|
||||||
|
%define version 3.11.4
|
||||||
|
|
||||||
|
%define buildroot %{_topdir}/BUILD/%{name}-%{version}-root
|
||||||
|
|
||||||
|
BuildRoot: %{buildroot}
|
||||||
|
Summary: cmake
|
||||||
|
License: Unkown
|
||||||
|
Name: %{name}
|
||||||
|
Version: %{version}
|
||||||
|
Release: %{release}
|
||||||
|
URL: http://www.cmake.org/files/v3.3/
|
||||||
|
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
|
||||||
|
# For Mac OSX:
|
||||||
|
# The configuration of cmake will be using the environment variable MACOSX_DEPLOYMENT_TARGET.
|
||||||
|
# This variable was initialized using 'sw_vers -productVersion' in etc/bashrc.
|
||||||
|
# We need to get rid of the revision number from this string. eg turn "10.7.5" into "10.7"
|
||||||
|
v=( ${MACOSX_DEPLOYMENT_TARGET//./ } )
|
||||||
|
export MACOSX_DEPLOYMENT_TARGET="${v[0]}.${v[1]}"
|
||||||
|
echo "Resetting MACOSX_DEPLOYMENT_TARGET to ${MACOSX_DEPLOYMENT_TARGET}"
|
||||||
|
|
||||||
|
# Recent version of Mac OSX (Yosemite) cannot compile cmake when gcc is the compiler
|
||||||
|
# Using clang instead
|
||||||
|
CC=clang
|
||||||
|
CXX=clang++
|
||||||
|
|
||||||
|
%endif
|
||||||
|
|
||||||
|
./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 CMAKE_DIR=\$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
|
||||||
|
export CMAKE_BIN_DIR=\$CMAKE_DIR/bin
|
||||||
|
|
||||||
|
# Enable access to the runtime package applications
|
||||||
|
[ -d \$CMAKE_BIN_DIR ] && _foamAddPath \$CMAKE_BIN_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 CMAKE_DIR \$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
|
||||||
|
setenv CMAKE_BIN_DIR \$CMAKE_DIR/bin
|
||||||
|
|
||||||
|
if ( -e \$CMAKE_BIN_DIR ) then
|
||||||
|
_foamAddPath \$CMAKE_BIN_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}
|
149
ThirdParty/rpmBuild/SPECS/hwloc-2.0.1.spec
vendored
Normal file
149
ThirdParty/rpmBuild/SPECS/hwloc-2.0.1.spec
vendored
Normal file
|
@ -0,0 +1,149 @@
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# ========= |
|
||||||
|
# \\ / 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 hwloc-2.0.1
|
||||||
|
#
|
||||||
|
# Description
|
||||||
|
# RPM spec file for creating a relocatable RPM
|
||||||
|
#
|
||||||
|
# Author:
|
||||||
|
# Martin Beaudoin (2018)
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# 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 hwloc
|
||||||
|
%define release %{_WM_OPTIONS}
|
||||||
|
%define version 2.0.1
|
||||||
|
|
||||||
|
%define buildroot %{_topdir}/BUILD/%{name}-%{version}-root
|
||||||
|
|
||||||
|
BuildRoot: %{buildroot}
|
||||||
|
Summary: hwloc
|
||||||
|
License: the New BSD license
|
||||||
|
Name: %{name}
|
||||||
|
Version: %{version}
|
||||||
|
Release: %{release}
|
||||||
|
URL: http://www.open-mpi.org/software/hwloc/v2.0/downloads/hwloc-2.0.1.tar.gz
|
||||||
|
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"
|
||||||
|
|
||||||
|
./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 HWLOC_DIR=\$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
|
||||||
|
export HWLOC_BIN_DIR=\$HWLOC_DIR/bin
|
||||||
|
|
||||||
|
# Enable access to the runtime package applications
|
||||||
|
[ -d \$HWLOC_BIN_DIR ] && _foamAddPath \$HWLOC_BIN_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 HWLOC_DIR \$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
|
||||||
|
setenv HWLOC_BIN_DIR \$HWLOC_DIR/bin
|
||||||
|
|
||||||
|
if ( -e \$HWLOC_BIN_DIR ) then
|
||||||
|
_foamAddPath \$HWLOC_BIN_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}
|
175
ThirdParty/rpmBuild/SPECS/mesquite-2.3.0.spec
vendored
Normal file
175
ThirdParty/rpmBuild/SPECS/mesquite-2.3.0.spec
vendored
Normal file
|
@ -0,0 +1,175 @@
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# ========= |
|
||||||
|
# \\ / 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 mesquite-2.3.0
|
||||||
|
#
|
||||||
|
# Description
|
||||||
|
# RPM spec file for creating a relocatable RPM
|
||||||
|
#
|
||||||
|
# Author:
|
||||||
|
# Martin Beaudoin (2018)
|
||||||
|
#
|
||||||
|
# Contributor:
|
||||||
|
# Philippose Rajan : patch0 for gcc 4.6.x
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# 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 mesquite
|
||||||
|
%define release %{_WM_OPTIONS}
|
||||||
|
%define version 2.3.0
|
||||||
|
|
||||||
|
%define buildroot %{_topdir}/BUILD/%{name}-%{version}-root
|
||||||
|
|
||||||
|
BuildRoot: %{buildroot}
|
||||||
|
Summary: mesquite
|
||||||
|
License: Unkown
|
||||||
|
Name: %{name}
|
||||||
|
Version: %{version}
|
||||||
|
Release: %{release}
|
||||||
|
URL: https://software.sandia.gov/mesquite
|
||||||
|
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_FC" ] && export FC="$WM_FC"
|
||||||
|
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
|
||||||
|
[ -n "$WM_CFLAGS" ] && export CFLAGS="$WM_CFLAGS"
|
||||||
|
[ -n "$WM_FCFLAGS" ] && export FCFLAGS="$WM_FCFLAGS"
|
||||||
|
[ -n "$WM_CXXFLAGS" ] && export CXXFLAGS="$WM_CXXFLAGS"
|
||||||
|
[ -n "$WM_LDFLAGS" ] && export LDFLAGS="$WM_LDFLAGS"
|
||||||
|
|
||||||
|
./configure \
|
||||||
|
--prefix=%{_installPrefix} \
|
||||||
|
--libdir=%{_installPrefix}/lib \
|
||||||
|
--enable-release \
|
||||||
|
--disable-debug-assertions \
|
||||||
|
--enable-shared \
|
||||||
|
--without-cppunit \
|
||||||
|
--enable-trap-fpe \
|
||||||
|
--disable-function-timers
|
||||||
|
|
||||||
|
# Remove the file include/Mesquite_all_headers.hpp
|
||||||
|
# This file will be regenerated during the compilation process
|
||||||
|
[ -e include/Mesquite_all_headers.hpp ] && rm -f include/Mesquite_all_headers.hpp
|
||||||
|
|
||||||
|
[ -z "$WM_NCOMPPROCS" ] && WM_NCOMPPROCS=1
|
||||||
|
make -j $WM_NCOMPPROCS OPTFLAGS="-O3 -mtune=native -fPIC"
|
||||||
|
|
||||||
|
%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 MESQUITE_DIR=\$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
|
||||||
|
export MESQUITE_BIN_DIR=\$MESQUITE_DIR/bin
|
||||||
|
export MESQUITE_LIB_DIR=\$MESQUITE_DIR/lib
|
||||||
|
export MESQUITE_INCLUDE_DIR=\$MESQUITE_DIR/include
|
||||||
|
|
||||||
|
# Enable access to the package runtime applications and libraries
|
||||||
|
[ -d \$MESQUITE_BIN_DIR ] && _foamAddPath \$MESQUITE_BIN_DIR
|
||||||
|
[ -d \$MESQUITE_LIB_DIR ] && _foamAddLib \$MESQUITE_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 MESQUITE_DIR \$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
|
||||||
|
setenv MESQUITE_BIN_DIR \$MESQUITE_DIR/bin
|
||||||
|
setenv MESQUITE_LIB_DIR \$MESQUITE_DIR/lib
|
||||||
|
setenv MESQUITE_INCLUDE_DIR \$MESQUITE_DIR/include
|
||||||
|
|
||||||
|
if ( -e \$MESQUITE_BIN_DIR ) then
|
||||||
|
_foamAddPath \$MESQUITE_BIN_DIR
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ( -e \$MESQUITE_LIB_DIR ) then
|
||||||
|
_foamAddLib \$MESQUITE_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}
|
264
ThirdParty/rpmBuild/SPECS/openmpi-3.1.0.spec
vendored
Normal file
264
ThirdParty/rpmBuild/SPECS/openmpi-3.1.0.spec
vendored
Normal file
|
@ -0,0 +1,264 @@
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# ========= |
|
||||||
|
# \\ / 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 openmpi-3.1.0
|
||||||
|
#
|
||||||
|
# Description
|
||||||
|
# RPM spec file for creating a relocatable RPM
|
||||||
|
#
|
||||||
|
# Author:
|
||||||
|
# Martin Beaudoin, (2018)
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# 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 openmpi
|
||||||
|
%define release %{_WM_OPTIONS}
|
||||||
|
%define version 3.1.0
|
||||||
|
|
||||||
|
%define buildroot %{_topdir}/BUILD/%{name}-%{version}-root
|
||||||
|
|
||||||
|
BuildRoot: %{buildroot}
|
||||||
|
Summary: openmpi
|
||||||
|
License: Unkown
|
||||||
|
Name: %{name}
|
||||||
|
Version: %{version}
|
||||||
|
Release: %{release}
|
||||||
|
URL: http://www.open-mpi.org/software/ompi/v1.8/downloads
|
||||||
|
Source: %url/%{name}-%{version}.tar.gz
|
||||||
|
Prefix: %{_prefix}
|
||||||
|
Group: Development/Tools
|
||||||
|
|
||||||
|
|
||||||
|
%define _installPrefix %{_prefix}/packages/%{name}-%{version}/platforms/%{_WM_OPTIONS}
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Here, we define default compiling options for openmpi
|
||||||
|
#
|
||||||
|
# One can override the option on the commande line : --define='MACRO EXPR'
|
||||||
|
#
|
||||||
|
%{!?_configureAdditionalArgs: %define _configureAdditionalArgs Undefined}
|
||||||
|
|
||||||
|
|
||||||
|
%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"
|
||||||
|
|
||||||
|
set +x
|
||||||
|
echo ""
|
||||||
|
echo "Compilation options:"
|
||||||
|
echo " _configureAdditionalArgs : %{_configureAdditionalArgs}"
|
||||||
|
echo ""
|
||||||
|
set -x
|
||||||
|
|
||||||
|
unset mpiWith
|
||||||
|
# Enable GridEngine if it appears to be in use
|
||||||
|
# If you don't want any integration with SGE, simply unset the SGE
|
||||||
|
# environment variable
|
||||||
|
if [ -n "$SGE_ROOT" ]
|
||||||
|
then
|
||||||
|
mpiWith="$mpiWith --with-sge"
|
||||||
|
else
|
||||||
|
mpiWith="$mpiWith --without-sge"
|
||||||
|
mpiWith="$mpiWith --enable-mca-no-build=ras-gridengine,pls-gridengine"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Infiniband support
|
||||||
|
# Adjust according to your local paths
|
||||||
|
# if [ -d /usr/local/ofed -a -d /usr/local/ofed/lib64 ]
|
||||||
|
# then
|
||||||
|
# mpiWith="$mpiWith --with-openib=/usr/local/ofed"
|
||||||
|
# mpiWith="$mpiWith --with-openib-libdir=/usr/local/ofed/lib64"
|
||||||
|
# fi
|
||||||
|
|
||||||
|
./configure \
|
||||||
|
--prefix=%{_installPrefix} \
|
||||||
|
--exec_prefix=%{_installPrefix} \
|
||||||
|
--enable-mpirun-prefix-by-default \
|
||||||
|
--enable-orterun-prefix-by-default \
|
||||||
|
--enable-shared \
|
||||||
|
--enable-mpi-cxx \
|
||||||
|
--disable-static \
|
||||||
|
--disable-mpi-fortran \
|
||||||
|
--without-slurm \
|
||||||
|
`echo %{?_configureAdditionalArgs}`
|
||||||
|
|
||||||
|
[ -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
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
export OPENMPI_DIR=\$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
|
||||||
|
export OPENMPI_BIN_DIR=\$OPENMPI_DIR/bin
|
||||||
|
export OPENMPI_LIB_DIR=\$OPENMPI_DIR/lib
|
||||||
|
|
||||||
|
# Enable access to the package runtime applications and libraries
|
||||||
|
[ -d \$OPENMPI_BIN_DIR ] && _foamAddPath \$OPENMPI_BIN_DIR
|
||||||
|
[ -d \$OPENMPI_LIB_DIR ] && _foamAddLib \$OPENMPI_LIB_DIR
|
||||||
|
|
||||||
|
export MPI_HOME=\$OPENMPI_DIR
|
||||||
|
export MPI_ARCH_PATH=\$MPI_HOME
|
||||||
|
export OPAL_PREFIX=\$MPI_ARCH_PATH
|
||||||
|
|
||||||
|
# We initialize the rest of the environment using mpicc --showme:
|
||||||
|
export OPENMPI_INCLUDE_DIR="\`mpicc --showme:incdirs\`"
|
||||||
|
export OPENMPI_COMPILE_FLAGS="\`mpicc --showme:compile\`"
|
||||||
|
export OPENMPI_LINK_FLAGS="\`mpicc --showme:link\`"
|
||||||
|
|
||||||
|
# Set the foam-extend compilation flags
|
||||||
|
export PINC=\$OPENMPI_COMPILE_FLAGS
|
||||||
|
export PLIBS=\$OPENMPI_LINK_FLAGS
|
||||||
|
|
||||||
|
|
||||||
|
if [ "\$FOAM_VERBOSE" -a "\$PS1" ]
|
||||||
|
then
|
||||||
|
echo " Environment variables defined for OpenMPI:"
|
||||||
|
echo " OPENMPI_BIN_DIR : \$OPENMPI_BIN_DIR"
|
||||||
|
echo " OPENMPI_LIB_DIR : \$OPENMPI_LIB_DIR"
|
||||||
|
echo " OPENMPI_INCLUDE_DIR : \$OPENMPI_INCLUDE_DIR"
|
||||||
|
echo " OPENMPI_COMPILE_FLAGS : \$OPENMPI_COMPILE_FLAGS"
|
||||||
|
echo " OPENMPI_LINK_FLAGS : \$OPENMPI_LINK_FLAGS"
|
||||||
|
echo ""
|
||||||
|
echo " MPI_HOME : \$MPI_HOME"
|
||||||
|
echo " MPI_ARCH_PATH : \$MPI_ARCH_PATH"
|
||||||
|
echo " MPIRUN_OPTIONS : \$MPIRUN_OPTIONS"
|
||||||
|
echo " OPAL_PREFIX : \$OPAL_PREFIX"
|
||||||
|
echo " PINC : \$PINC"
|
||||||
|
echo " PLIBS : \$PLIBS"
|
||||||
|
fi
|
||||||
|
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
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
setenv OPENMPI_DIR \$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
|
||||||
|
setenv OPENMPI_BIN_DIR \$OPENMPI_DIR/bin
|
||||||
|
setenv OPENMPI_LIB_DIR \$OPENMPI_DIR/lib
|
||||||
|
|
||||||
|
# Enable access to the package runtime applications and libraries
|
||||||
|
if ( -e \$OPENMPI_BIN_DIR ) then
|
||||||
|
_foamAddPath \$OPENMPI_BIN_DIR
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ( -e \$OPENMPI_LIB_DIR ) then
|
||||||
|
_foamAddLib \$OPENMPI_LIB_DIR
|
||||||
|
endif
|
||||||
|
|
||||||
|
setenv MPI_HOME \$OPENMPI_DIR
|
||||||
|
setenv MPI_ARCH_PATH \$MPI_HOME
|
||||||
|
setenv OPAL_PREFIX \$MPI_ARCH_PATH
|
||||||
|
|
||||||
|
# We initialize the rest of the environment using mpicc --showme:
|
||||||
|
setenv OPENMPI_INCLUDE_DIR "\`mpicc --showme:incdirs\`"
|
||||||
|
setenv OPENMPI_COMPILE_FLAGS "\`mpicc --showme:compile\`"
|
||||||
|
setenv OPENMPI_LINK_FLAGS "\`mpicc --showme:link\`"
|
||||||
|
|
||||||
|
# Set the foam-extend compilation flags
|
||||||
|
setenv PINC "\$OPENMPI_COMPILE_FLAGS"
|
||||||
|
setenv PLIBS "\$OPENMPI_LINK_FLAGS"
|
||||||
|
|
||||||
|
|
||||||
|
if (\$?FOAM_VERBOSE && \$?prompt) then
|
||||||
|
echo " Environment variables defined for OpenMPI:"
|
||||||
|
echo " OPENMPI_BIN_DIR : \$OPENMPI_BIN_DIR"
|
||||||
|
echo " OPENMPI_LIB_DIR : \$OPENMPI_LIB_DIR"
|
||||||
|
echo " OPENMPI_INCLUDE_DIR : \$OPENMPI_INCLUDE_DIR"
|
||||||
|
echo " OPENMPI_COMPILE_FLAGS : \$OPENMPI_COMPILE_FLAGS"
|
||||||
|
echo " OPENMPI_LINK_FLAGS : \$OPENMPI_LINK_FLAGS"
|
||||||
|
echo ""
|
||||||
|
echo " MPI_HOME : \$MPI_HOME"
|
||||||
|
echo " MPI_ARCH_PATH : \$MPI_ARCH_PATH"
|
||||||
|
echo " MPIRUN_OPTIONS : \$MPIRUN_OPTIONS"
|
||||||
|
echo " OPAL_PREFIX : \$OPAL_PREFIX"
|
||||||
|
echo " PINC : \$PINC"
|
||||||
|
echo " PLIBS : \$PLIBS"
|
||||||
|
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}
|
264
ThirdParty/rpmBuild/SPECS/openmpi-3.1.1.spec
vendored
Normal file
264
ThirdParty/rpmBuild/SPECS/openmpi-3.1.1.spec
vendored
Normal file
|
@ -0,0 +1,264 @@
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# ========= |
|
||||||
|
# \\ / 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 openmpi-3.1.1
|
||||||
|
#
|
||||||
|
# Description
|
||||||
|
# RPM spec file for creating a relocatable RPM
|
||||||
|
#
|
||||||
|
# Author:
|
||||||
|
# Martin Beaudoin, (2018)
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# 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 openmpi
|
||||||
|
%define release %{_WM_OPTIONS}
|
||||||
|
%define version 3.1.1
|
||||||
|
|
||||||
|
%define buildroot %{_topdir}/BUILD/%{name}-%{version}-root
|
||||||
|
|
||||||
|
BuildRoot: %{buildroot}
|
||||||
|
Summary: openmpi
|
||||||
|
License: Unkown
|
||||||
|
Name: %{name}
|
||||||
|
Version: %{version}
|
||||||
|
Release: %{release}
|
||||||
|
URL: http://www.open-mpi.org/software/ompi/v1.8/downloads
|
||||||
|
Source: %url/%{name}-%{version}.tar.gz
|
||||||
|
Prefix: %{_prefix}
|
||||||
|
Group: Development/Tools
|
||||||
|
|
||||||
|
|
||||||
|
%define _installPrefix %{_prefix}/packages/%{name}-%{version}/platforms/%{_WM_OPTIONS}
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Here, we define default compiling options for openmpi
|
||||||
|
#
|
||||||
|
# One can override the option on the commande line : --define='MACRO EXPR'
|
||||||
|
#
|
||||||
|
%{!?_configureAdditionalArgs: %define _configureAdditionalArgs Undefined}
|
||||||
|
|
||||||
|
|
||||||
|
%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"
|
||||||
|
|
||||||
|
set +x
|
||||||
|
echo ""
|
||||||
|
echo "Compilation options:"
|
||||||
|
echo " _configureAdditionalArgs : %{_configureAdditionalArgs}"
|
||||||
|
echo ""
|
||||||
|
set -x
|
||||||
|
|
||||||
|
unset mpiWith
|
||||||
|
# Enable GridEngine if it appears to be in use
|
||||||
|
# If you don't want any integration with SGE, simply unset the SGE
|
||||||
|
# environment variable
|
||||||
|
if [ -n "$SGE_ROOT" ]
|
||||||
|
then
|
||||||
|
mpiWith="$mpiWith --with-sge"
|
||||||
|
else
|
||||||
|
mpiWith="$mpiWith --without-sge"
|
||||||
|
mpiWith="$mpiWith --enable-mca-no-build=ras-gridengine,pls-gridengine"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Infiniband support
|
||||||
|
# Adjust according to your local paths
|
||||||
|
# if [ -d /usr/local/ofed -a -d /usr/local/ofed/lib64 ]
|
||||||
|
# then
|
||||||
|
# mpiWith="$mpiWith --with-openib=/usr/local/ofed"
|
||||||
|
# mpiWith="$mpiWith --with-openib-libdir=/usr/local/ofed/lib64"
|
||||||
|
# fi
|
||||||
|
|
||||||
|
./configure \
|
||||||
|
--prefix=%{_installPrefix} \
|
||||||
|
--exec_prefix=%{_installPrefix} \
|
||||||
|
--enable-mpirun-prefix-by-default \
|
||||||
|
--enable-orterun-prefix-by-default \
|
||||||
|
--enable-shared \
|
||||||
|
--enable-mpi-cxx \
|
||||||
|
--disable-static \
|
||||||
|
--disable-mpi-fortran \
|
||||||
|
--without-slurm \
|
||||||
|
`echo %{?_configureAdditionalArgs}`
|
||||||
|
|
||||||
|
[ -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
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
export OPENMPI_DIR=\$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
|
||||||
|
export OPENMPI_BIN_DIR=\$OPENMPI_DIR/bin
|
||||||
|
export OPENMPI_LIB_DIR=\$OPENMPI_DIR/lib
|
||||||
|
|
||||||
|
# Enable access to the package runtime applications and libraries
|
||||||
|
[ -d \$OPENMPI_BIN_DIR ] && _foamAddPath \$OPENMPI_BIN_DIR
|
||||||
|
[ -d \$OPENMPI_LIB_DIR ] && _foamAddLib \$OPENMPI_LIB_DIR
|
||||||
|
|
||||||
|
export MPI_HOME=\$OPENMPI_DIR
|
||||||
|
export MPI_ARCH_PATH=\$MPI_HOME
|
||||||
|
export OPAL_PREFIX=\$MPI_ARCH_PATH
|
||||||
|
|
||||||
|
# We initialize the rest of the environment using mpicc --showme:
|
||||||
|
export OPENMPI_INCLUDE_DIR="\`mpicc --showme:incdirs\`"
|
||||||
|
export OPENMPI_COMPILE_FLAGS="\`mpicc --showme:compile\`"
|
||||||
|
export OPENMPI_LINK_FLAGS="\`mpicc --showme:link\`"
|
||||||
|
|
||||||
|
# Set the foam-extend compilation flags
|
||||||
|
export PINC=\$OPENMPI_COMPILE_FLAGS
|
||||||
|
export PLIBS=\$OPENMPI_LINK_FLAGS
|
||||||
|
|
||||||
|
|
||||||
|
if [ "\$FOAM_VERBOSE" -a "\$PS1" ]
|
||||||
|
then
|
||||||
|
echo " Environment variables defined for OpenMPI:"
|
||||||
|
echo " OPENMPI_BIN_DIR : \$OPENMPI_BIN_DIR"
|
||||||
|
echo " OPENMPI_LIB_DIR : \$OPENMPI_LIB_DIR"
|
||||||
|
echo " OPENMPI_INCLUDE_DIR : \$OPENMPI_INCLUDE_DIR"
|
||||||
|
echo " OPENMPI_COMPILE_FLAGS : \$OPENMPI_COMPILE_FLAGS"
|
||||||
|
echo " OPENMPI_LINK_FLAGS : \$OPENMPI_LINK_FLAGS"
|
||||||
|
echo ""
|
||||||
|
echo " MPI_HOME : \$MPI_HOME"
|
||||||
|
echo " MPI_ARCH_PATH : \$MPI_ARCH_PATH"
|
||||||
|
echo " MPIRUN_OPTIONS : \$MPIRUN_OPTIONS"
|
||||||
|
echo " OPAL_PREFIX : \$OPAL_PREFIX"
|
||||||
|
echo " PINC : \$PINC"
|
||||||
|
echo " PLIBS : \$PLIBS"
|
||||||
|
fi
|
||||||
|
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
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
setenv OPENMPI_DIR \$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
|
||||||
|
setenv OPENMPI_BIN_DIR \$OPENMPI_DIR/bin
|
||||||
|
setenv OPENMPI_LIB_DIR \$OPENMPI_DIR/lib
|
||||||
|
|
||||||
|
# Enable access to the package runtime applications and libraries
|
||||||
|
if ( -e \$OPENMPI_BIN_DIR ) then
|
||||||
|
_foamAddPath \$OPENMPI_BIN_DIR
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ( -e \$OPENMPI_LIB_DIR ) then
|
||||||
|
_foamAddLib \$OPENMPI_LIB_DIR
|
||||||
|
endif
|
||||||
|
|
||||||
|
setenv MPI_HOME \$OPENMPI_DIR
|
||||||
|
setenv MPI_ARCH_PATH \$MPI_HOME
|
||||||
|
setenv OPAL_PREFIX \$MPI_ARCH_PATH
|
||||||
|
|
||||||
|
# We initialize the rest of the environment using mpicc --showme:
|
||||||
|
setenv OPENMPI_INCLUDE_DIR "\`mpicc --showme:incdirs\`"
|
||||||
|
setenv OPENMPI_COMPILE_FLAGS "\`mpicc --showme:compile\`"
|
||||||
|
setenv OPENMPI_LINK_FLAGS "\`mpicc --showme:link\`"
|
||||||
|
|
||||||
|
# Set the foam-extend compilation flags
|
||||||
|
setenv PINC "\$OPENMPI_COMPILE_FLAGS"
|
||||||
|
setenv PLIBS "\$OPENMPI_LINK_FLAGS"
|
||||||
|
|
||||||
|
|
||||||
|
if (\$?FOAM_VERBOSE && \$?prompt) then
|
||||||
|
echo " Environment variables defined for OpenMPI:"
|
||||||
|
echo " OPENMPI_BIN_DIR : \$OPENMPI_BIN_DIR"
|
||||||
|
echo " OPENMPI_LIB_DIR : \$OPENMPI_LIB_DIR"
|
||||||
|
echo " OPENMPI_INCLUDE_DIR : \$OPENMPI_INCLUDE_DIR"
|
||||||
|
echo " OPENMPI_COMPILE_FLAGS : \$OPENMPI_COMPILE_FLAGS"
|
||||||
|
echo " OPENMPI_LINK_FLAGS : \$OPENMPI_LINK_FLAGS"
|
||||||
|
echo ""
|
||||||
|
echo " MPI_HOME : \$MPI_HOME"
|
||||||
|
echo " MPI_ARCH_PATH : \$MPI_ARCH_PATH"
|
||||||
|
echo " MPIRUN_OPTIONS : \$MPIRUN_OPTIONS"
|
||||||
|
echo " OPAL_PREFIX : \$OPAL_PREFIX"
|
||||||
|
echo " PINC : \$PINC"
|
||||||
|
echo " PLIBS : \$PLIBS"
|
||||||
|
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}
|
198
ThirdParty/rpmBuild/SPECS/qt-everywhere-src-5.11.1.spec
vendored
Normal file
198
ThirdParty/rpmBuild/SPECS/qt-everywhere-src-5.11.1.spec
vendored
Normal file
|
@ -0,0 +1,198 @@
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# ========= |
|
||||||
|
# \\ / 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-src-5.11.1
|
||||||
|
#
|
||||||
|
# Description
|
||||||
|
# RPM spec file for creating a relocatable RPM
|
||||||
|
#
|
||||||
|
# Author:
|
||||||
|
# Martin Beaudoin, (2018)
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# 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-src
|
||||||
|
%define release %{_WM_OPTIONS}
|
||||||
|
%define version 5.11.1
|
||||||
|
|
||||||
|
%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-src
|
||||||
|
License: Unkown
|
||||||
|
Name: %{name}
|
||||||
|
Version: %{version}
|
||||||
|
Release: %{release}
|
||||||
|
URL: http://download.qt.io/archive/qt/5.11/5.11.1/single
|
||||||
|
Source: %url/%{name}-%{version}.tar.xz
|
||||||
|
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"
|
||||||
|
|
||||||
|
# The configure options are taken from the QT5 configuration
|
||||||
|
# of the ParaView-Superbuild
|
||||||
|
./configure \
|
||||||
|
-opensource \
|
||||||
|
-confirm-license \
|
||||||
|
-release \
|
||||||
|
-skip qtconnectivity \
|
||||||
|
-skip qtgamepad \
|
||||||
|
-skip qtlocation \
|
||||||
|
-skip qtmultimedia \
|
||||||
|
-skip qtsensors \
|
||||||
|
-skip qtserialport \
|
||||||
|
-skip qtwayland \
|
||||||
|
-skip qtwebchannel \
|
||||||
|
-skip qtwebengine \
|
||||||
|
-skip qtwebsockets \
|
||||||
|
-nomake examples \
|
||||||
|
-nomake tests \
|
||||||
|
-no-dbus \
|
||||||
|
-qt-libjpeg \
|
||||||
|
-qt-pcre \
|
||||||
|
-system-zlib \
|
||||||
|
-no-openssl \
|
||||||
|
-skip qtsvg \
|
||||||
|
-qt-xcb \
|
||||||
|
-system-libpng \
|
||||||
|
-fontconfig \
|
||||||
|
-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
|
||||||
|
# On a computer with limited memory, say less than 4 GB, you may need to compile
|
||||||
|
# with only one parallel job to avoid running out of memory.
|
||||||
|
# So make sure to adjust $WM_NCOMPPROCS accordingly
|
||||||
|
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}
|
64
ThirdParty/tools/makeThirdPartyFunctionsForRPM
vendored
64
ThirdParty/tools/makeThirdPartyFunctionsForRPM
vendored
|
@ -121,9 +121,15 @@ rpm_make()
|
||||||
packageTarBall=`basename $_PACKAGE_URL`
|
packageTarBall=`basename $_PACKAGE_URL`
|
||||||
|
|
||||||
if [ ! -e "SOURCES/$packageTarBall" ]; then
|
if [ ! -e "SOURCES/$packageTarBall" ]; then
|
||||||
echo "Download $packageTarBall from : $_PACKAGE_URL"
|
echo "Download $packageTarBall from : $_PACKAGE_URL"
|
||||||
#( cd SOURCES; wget --no-check-certificate $_PACKAGE_URL )
|
#( cd SOURCES; wget --no-check-certificate $_PACKAGE_URL )
|
||||||
( cd SOURCES; curl -L -k -O $_PACKAGE_URL )
|
|
||||||
|
( cd SOURCES; curl --connect-timeout 60 \
|
||||||
|
--max-time 3600 \
|
||||||
|
--retry 6 \
|
||||||
|
--retry-delay 10 \
|
||||||
|
--retry-max-time 60 \
|
||||||
|
-L -k -O $_PACKAGE_URL )
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -284,22 +290,42 @@ uninstallPackage()
|
||||||
pkg="$1";
|
pkg="$1";
|
||||||
|
|
||||||
echo "Removing ${pkg}"
|
echo "Removing ${pkg}"
|
||||||
[ -f $WM_THIRD_PARTY_DIR/rpmBuild/RPMS/$architecture/${pkg}*.rpm ] && \
|
if [[ -f $WM_THIRD_PARTY_DIR/rpmBuild/RPMS/$architecture/${pkg}-$WM_OPTIONS.$architecture.rpm ]]; then
|
||||||
rm -f $WM_THIRD_PARTY_DIR/rpmBuild/RPMS/$architecture/${pkg}*.rpm || \
|
rm -f $WM_THIRD_PARTY_DIR/rpmBuild/RPMS/$architecture/${pkg}-$WM_OPTIONS.$architecture.rpm
|
||||||
echo "Not found: $WM_THIRD_PARTY_DIR/rpmBuild/RPMS/$architecture/${pkg}*.rpm"
|
else
|
||||||
[ -f $WM_THIRD_PARTY_DIR/rpmBuild/SOURCES/${pkg}.tar.gz ] && \
|
echo "Not found: $WM_THIRD_PARTY_DIR/rpmBuild/RPMS/$architecture/${pkg}*.rpm"
|
||||||
rm -f $WM_THIRD_PARTY_DIR/rpmBuild/SOURCES/${pkg}.tar.gz || \
|
fi
|
||||||
echo "Not found: $WM_THIRD_PARTY_DIR/rpmBuild/SOURCES/${pkg}.tar.gz"
|
|
||||||
[ -f $WM_THIRD_PARTY_DIR/rpmBuild/TGZS/$architecture/${pkg}.tgz ] && \
|
if [[ -f $WM_THIRD_PARTY_DIR/rpmBuild/SOURCES/${pkg}.tar.gz ]]; then
|
||||||
rm -f $WM_THIRD_PARTY_DIR/rpmBuild/TGZS/$architecture/${pkg}.tgz || \
|
rm -f $WM_THIRD_PARTY_DIR/rpmBuild/SOURCES/${pkg}.tar.gz
|
||||||
echo "Not found: $WM_THIRD_PARTY_DIR/rpmBuild/TGZS/$architecture/${pkg}.tgz"
|
else
|
||||||
[ -d $WM_THIRD_PARTY_DIR/rpmBuild/BUILD/${pkg}* ] && \
|
echo "Not found: $WM_THIRD_PARTY_DIR/rpmBuild/SOURCES/${pkg}.tar.gz"
|
||||||
rm -rf $WM_THIRD_PARTY_DIR/rpmBuild/BUILD/${pkg}* || \
|
fi
|
||||||
echo "Not found: $WM_THIRD_PARTY_DIR/rpmBuild/BUILD/${pkg}*"
|
|
||||||
if [ "$2" = "alsoPackage" ]; then
|
if [[ -f $WM_THIRD_PARTY_DIR/rpmBuild/TGZS/$architecture/${pkg}.tgz ]]; then
|
||||||
[ -d $WM_THIRD_PARTY_DIR/packages/$pkg ] && \
|
rm -f $WM_THIRD_PARTY_DIR/rpmBuild/TGZS/$architecture/${pkg}.tgz
|
||||||
rm -rf $WM_THIRD_PARTY_DIR/packages/$pkg || \
|
else
|
||||||
echo "Not found: $WM_THIRD_PARTY_DIR/packages/$pkg"
|
echo "Not found: $WM_THIRD_PARTY_DIR/rpmBuild/TGZS/$architecture/${pkg}.tgz"
|
||||||
|
fi
|
||||||
|
|
||||||
|
foundDir=false
|
||||||
|
for dir_ in $WM_THIRD_PARTY_DIR/rpmBuild/BUILD/${pkg}*
|
||||||
|
do
|
||||||
|
if [[ -d "$dir_" ]]; then
|
||||||
|
rm -rf $WM_THIRD_PARTY_DIR/rpmBuild/BUILD/${pkg}*
|
||||||
|
foundDir=true
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ "$foundDir" = false ] ; then
|
||||||
|
echo "Not found: $WM_THIRD_PARTY_DIR/rpmBuild/BUILD/${pkg}*"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$2" = "alsoPackage" ]]; then
|
||||||
|
if [[ -d $WM_THIRD_PARTY_DIR/packages/$pkg ]]; then
|
||||||
|
rm -rf $WM_THIRD_PARTY_DIR/packages/$pkg
|
||||||
|
else
|
||||||
|
echo "Not found: $WM_THIRD_PARTY_DIR/packages/$pkg"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo "Add option alsoPackage to remove the installed files."
|
echo "Add option alsoPackage to remove the installed files."
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -11,6 +11,7 @@ EXE_INC = \
|
||||||
EXE_LIBS = \
|
EXE_LIBS = \
|
||||||
-lincompressibleRASModels \
|
-lincompressibleRASModels \
|
||||||
-lincompressibleTransportModels \
|
-lincompressibleTransportModels \
|
||||||
|
-lincompressibleTurbulenceModel \
|
||||||
-lfiniteVolume \
|
-lfiniteVolume \
|
||||||
-loversetMesh \
|
-loversetMesh \
|
||||||
-llduSolvers
|
-llduSolvers
|
||||||
|
|
|
@ -11,6 +11,7 @@ EXE_INC = \
|
||||||
EXE_LIBS = \
|
EXE_LIBS = \
|
||||||
-lincompressibleRASModels \
|
-lincompressibleRASModels \
|
||||||
-lincompressibleTransportModels \
|
-lincompressibleTransportModels \
|
||||||
|
-lincompressibleTurbulenceModel \
|
||||||
-lfiniteVolume \
|
-lfiniteVolume \
|
||||||
-loversetMesh \
|
-loversetMesh \
|
||||||
-llduSolvers
|
-llduSolvers
|
||||||
|
|
|
@ -65,13 +65,24 @@ ADD_PARAVIEW_PLUGIN(
|
||||||
if(NOT FOAM_FOUND)
|
if(NOT FOAM_FOUND)
|
||||||
# Config when compiling FOAM library with wmake
|
# Config when compiling FOAM library with wmake
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES(
|
if(${CMAKE_VERSION} VERSION_LESS "2.8.12")
|
||||||
PVFoamReader_SM
|
TARGET_LINK_LIBRARIES(
|
||||||
foam
|
PVFoamReader_SM
|
||||||
finiteVolume
|
foam
|
||||||
vtkPVFoam
|
finiteVolume
|
||||||
pqCore
|
vtkPVFoam
|
||||||
)
|
pqCore
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
TARGET_LINK_LIBRARIES(
|
||||||
|
PVFoamReader_SM
|
||||||
|
PUBLIC foam
|
||||||
|
finiteVolume
|
||||||
|
vtkPVFoam
|
||||||
|
pqCore
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
else()
|
else()
|
||||||
# Config when compiling FOAM library with cmake
|
# Config when compiling FOAM library with cmake
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,7 @@ runParallel ()
|
||||||
fi
|
fi
|
||||||
cat system/fvSchemes > $LOG_NAME
|
cat system/fvSchemes > $LOG_NAME
|
||||||
cat system/fvSolution >> $LOG_NAME
|
cat system/fvSolution >> $LOG_NAME
|
||||||
( $mpirunProg -np $1 $APP_RUN -parallel < /dev/null > $LOG_NAME 2>&1 )
|
( $mpirunProg $MPIRUN_OPTIONS -np $1 $APP_RUN -parallel < /dev/null > $LOG_NAME 2>&1 )
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
12
etc/bashrc
12
etc/bashrc
|
@ -96,23 +96,23 @@ export WM_THIRD_PARTY_DIR=$WM_PROJECT_DIR/ThirdParty
|
||||||
|
|
||||||
#
|
#
|
||||||
# For AllMake.stage2
|
# For AllMake.stage2
|
||||||
export WM_THIRD_PARTY_USE_OPENMPI_188=1
|
export WM_THIRD_PARTY_USE_OPENMPI_311=1
|
||||||
|
|
||||||
#
|
#
|
||||||
# For AllMake.stage3
|
# For AllMake.stage3
|
||||||
export WM_THIRD_PARTY_USE_METIS_510=1
|
export WM_THIRD_PARTY_USE_METIS_510=1
|
||||||
export WM_THIRD_PARTY_USE_PARMGRIDGEN_10=1
|
export WM_THIRD_PARTY_USE_PARMGRIDGEN_10=1
|
||||||
export WM_THIRD_PARTY_USE_LIBCCMIO_261=1
|
export WM_THIRD_PARTY_USE_LIBCCMIO_261=1
|
||||||
export WM_THIRD_PARTY_USE_MESQUITE_212=1
|
export WM_THIRD_PARTY_USE_MESQUITE_230=1
|
||||||
export WM_THIRD_PARTY_USE_SCOTCH_604=1
|
export WM_THIRD_PARTY_USE_SCOTCH_604=1
|
||||||
export WM_THIRD_PARTY_USE_PARMETIS_403=1
|
export WM_THIRD_PARTY_USE_PARMETIS_403=1
|
||||||
export WM_THIRD_PARTY_USE_PYFOAM_064=1
|
export WM_THIRD_PARTY_USE_PYFOAM_069=1
|
||||||
export WM_THIRD_PARTY_USE_HWLOC_1101=1
|
export WM_THIRD_PARTY_USE_HWLOC_201=1
|
||||||
|
|
||||||
#
|
#
|
||||||
# For AllMake.stage4
|
# For AllMake.stage4
|
||||||
#export WM_THIRD_PARTY_USE_QT_486=1
|
#export WM_THIRD_PARTY_USE_QT_5111=1
|
||||||
#export WM_THIRD_PARTY_USE_PARAVIEW_440=1
|
#export WM_THIRD_PARTY_USE_PARAVIEW_552=1
|
||||||
|
|
||||||
|
|
||||||
# Source files, possibly with some verbosity
|
# Source files, possibly with some verbosity
|
||||||
|
|
13
etc/cshrc
13
etc/cshrc
|
@ -82,23 +82,23 @@ setenv WM_THIRD_PARTY_DIR $WM_PROJECT_DIR/ThirdParty
|
||||||
|
|
||||||
#
|
#
|
||||||
# For AllMake.stage2
|
# For AllMake.stage2
|
||||||
setenv WM_THIRD_PARTY_USE_OPENMPI_188 1
|
setenv WM_THIRD_PARTY_USE_OPENMPI_311 1
|
||||||
|
|
||||||
#
|
#
|
||||||
# For AllMake.stage3
|
# For AllMake.stage3
|
||||||
setenv WM_THIRD_PARTY_USE_METIS_510 1
|
setenv WM_THIRD_PARTY_USE_METIS_510 1
|
||||||
setenv WM_THIRD_PARTY_USE_PARMGRIDGEN_10 1
|
setenv WM_THIRD_PARTY_USE_PARMGRIDGEN_10 1
|
||||||
setenv WM_THIRD_PARTY_USE_LIBCCMIO_261 1
|
setenv WM_THIRD_PARTY_USE_LIBCCMIO_261 1
|
||||||
setenv WM_THIRD_PARTY_USE_MESQUITE_212 1
|
setenv WM_THIRD_PARTY_USE_MESQUITE_230 1
|
||||||
setenv WM_THIRD_PARTY_USE_SCOTCH_604 1
|
setenv WM_THIRD_PARTY_USE_SCOTCH_604 1
|
||||||
setenv WM_THIRD_PARTY_USE_PARMETIS_403 1
|
setenv WM_THIRD_PARTY_USE_PARMETIS_403 1
|
||||||
setenv WM_THIRD_PARTY_USE_PYFOAM_064 1
|
setenv WM_THIRD_PARTY_USE_PYFOAM_069 1
|
||||||
setenv WM_THIRD_PARTY_USE_HWLOC_1101 1
|
setenv WM_THIRD_PARTY_USE_HWLOC_201 1
|
||||||
|
|
||||||
#
|
#
|
||||||
# For AllMake.stage4
|
# For AllMake.stage4
|
||||||
#setenv WM_THIRD_PARTY_USE_QT_486 1
|
#setenv WM_THIRD_PARTY_USE_QT_5111 1
|
||||||
#setenv WM_THIRD_PARTY_USE_PARAVIEW_440 1
|
#setenv WM_THIRD_PARTY_USE_PARAVIEW_552 1
|
||||||
|
|
||||||
|
|
||||||
# Source files, possibly with some verbosity
|
# Source files, possibly with some verbosity
|
||||||
|
@ -424,4 +424,3 @@ unset cleanEnv cleanProg colonPath foamInstall foamOldDirs
|
||||||
unalias _foamSource
|
unalias _foamSource
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,10 @@
|
||||||
#setenv OPENMPI_COMPILE_FLAGS "`$OPENMPI_BIN_DIR/mpicc --showme:compile`"
|
#setenv OPENMPI_COMPILE_FLAGS "`$OPENMPI_BIN_DIR/mpicc --showme:compile`"
|
||||||
#setenv OPENMPI_LINK_FLAGS "`$OPENMPI_BIN_DIR/mpicc --showme:link`"
|
#setenv OPENMPI_LINK_FLAGS "`$OPENMPI_BIN_DIR/mpicc --showme:link`"
|
||||||
|
|
||||||
|
# MPI runtime options
|
||||||
|
#setenv MPI_BUFFER_SIZE 100000000
|
||||||
|
#setenv MPIRUN_OPTIONS -oversubscribe # OpenMPI version 3.1
|
||||||
|
|
||||||
# Specify system installed ThirdParty packages/libraries
|
# Specify system installed ThirdParty packages/libraries
|
||||||
# NB: The packages installed under $WM_THIRD_PARTY_DIR
|
# NB: The packages installed under $WM_THIRD_PARTY_DIR
|
||||||
# will always override these values.
|
# will always override these values.
|
||||||
|
@ -199,11 +203,13 @@
|
||||||
#setenv WM_THIRD_PARTY_USE_M4_1416 1
|
#setenv WM_THIRD_PARTY_USE_M4_1416 1
|
||||||
#setenv WM_THIRD_PARTY_USE_BISON_27 1
|
#setenv WM_THIRD_PARTY_USE_BISON_27 1
|
||||||
#setenv WM_THIRD_PARTY_USE_FLEX_2535 1
|
#setenv WM_THIRD_PARTY_USE_FLEX_2535 1
|
||||||
setenv WM_THIRD_PARTY_USE_CMAKE_322 1
|
#setenv WM_THIRD_PARTY_USE_CMAKE_322 1
|
||||||
|
setenv WM_THIRD_PARTY_USE_CMAKE_3114 1
|
||||||
|
|
||||||
#
|
#
|
||||||
# For AllMake.stage2
|
# For AllMake.stage2
|
||||||
setenv WM_THIRD_PARTY_USE_OPENMPI_188 1
|
setenv WM_THIRD_PARTY_USE_OPENMPI_311 1
|
||||||
|
#setenv WM_THIRD_PARTY_USE_OPENMPI_188 1
|
||||||
#setenv WM_THIRD_PARTY_USE_OPENMPI_188_ConfigureAdditionalArgs '--enable-mpi-cxx --with-verbs'
|
#setenv WM_THIRD_PARTY_USE_OPENMPI_188_ConfigureAdditionalArgs '--enable-mpi-cxx --with-verbs'
|
||||||
#setenv WM_THIRD_PARTY_USE_OPENMPI_165 1
|
#setenv WM_THIRD_PARTY_USE_OPENMPI_165 1
|
||||||
#setenv WM_THIRD_PARTY_USE_OPENMPI_165_ConfigureAdditionalArgs '--enable-mpi-cxx --with-openib'
|
#setenv WM_THIRD_PARTY_USE_OPENMPI_165_ConfigureAdditionalArgs '--enable-mpi-cxx --with-openib'
|
||||||
|
@ -219,19 +225,20 @@ setenv WM_THIRD_PARTY_USE_OPENMPI_188 1
|
||||||
setenv WM_THIRD_PARTY_USE_METIS_510 1
|
setenv WM_THIRD_PARTY_USE_METIS_510 1
|
||||||
setenv WM_THIRD_PARTY_USE_PARMGRIDGEN_10 1
|
setenv WM_THIRD_PARTY_USE_PARMGRIDGEN_10 1
|
||||||
setenv WM_THIRD_PARTY_USE_LIBCCMIO_261 1
|
setenv WM_THIRD_PARTY_USE_LIBCCMIO_261 1
|
||||||
setenv WM_THIRD_PARTY_USE_MESQUITE_212 1
|
setenv WM_THIRD_PARTY_USE_MESQUITE_230 1
|
||||||
setenv WM_THIRD_PARTY_USE_SCOTCH_604 1
|
setenv WM_THIRD_PARTY_USE_SCOTCH_604 1
|
||||||
#setenv WM_THIRD_PARTY_USE_SCOTCH_600 1
|
#setenv WM_THIRD_PARTY_USE_SCOTCH_600 1
|
||||||
setenv WM_THIRD_PARTY_USE_PARMETIS_403 1
|
setenv WM_THIRD_PARTY_USE_PARMETIS_403 1
|
||||||
#setenv WM_THIRD_PARTY_USE_ZOLTAN_36 1
|
#setenv WM_THIRD_PARTY_USE_ZOLTAN_36 1
|
||||||
setenv WM_THIRD_PARTY_USE_PYFOAM_064 1
|
setenv WM_THIRD_PARTY_USE_PYFOAM_069 1
|
||||||
setenv WM_THIRD_PARTY_USE_HWLOC_1101 1
|
setenv WM_THIRD_PARTY_USE_HWLOC_201 1
|
||||||
|
#setenv WM_THIRD_PARTY_USE_HWLOC_1101 1
|
||||||
#setenv WM_THIRD_PARTY_USE_HWLOC_172 1
|
#setenv WM_THIRD_PARTY_USE_HWLOC_172 1
|
||||||
|
|
||||||
#
|
#
|
||||||
# For AllMake.stage4
|
# For AllMake.stage4
|
||||||
setenv WM_THIRD_PARTY_USE_QT_486 1
|
setenv WM_THIRD_PARTY_USE_QT_511 1
|
||||||
setenv WM_THIRD_PARTY_USE_PARAVIEW_440 1
|
setenv WM_THIRD_PARTY_USE_PARAVIEW_552 1
|
||||||
#setenv WM_THIRD_PARTY_USE_PARAVIEW_431 1
|
#setenv WM_THIRD_PARTY_USE_PARAVIEW_431 1
|
||||||
#setenv WM_THIRD_PARTY_USE_PARAVIEW_410 1
|
#setenv WM_THIRD_PARTY_USE_PARAVIEW_410 1
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,10 @@ export FOAM_VERBOSE=1
|
||||||
#export OPENMPI_COMPILE_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:compile`"
|
#export OPENMPI_COMPILE_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:compile`"
|
||||||
#export OPENMPI_LINK_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:link`"
|
#export OPENMPI_LINK_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:link`"
|
||||||
|
|
||||||
|
# MPI runtime options
|
||||||
|
#export MPI_BUFFER_SIZE=100000000
|
||||||
|
#export MPIRUN_OPTIONS=-oversubscribe # OpenMPI version 3.1
|
||||||
|
|
||||||
# Specify system installed ThirdParty packages/libraries
|
# Specify system installed ThirdParty packages/libraries
|
||||||
# NB: The packages installed under $WM_THIRD_PARTY_DIR
|
# NB: The packages installed under $WM_THIRD_PARTY_DIR
|
||||||
# will always override these values.
|
# will always override these values.
|
||||||
|
@ -211,12 +215,14 @@ export FOAM_VERBOSE=1
|
||||||
#export WM_THIRD_PARTY_USE_M4_1416=1
|
#export WM_THIRD_PARTY_USE_M4_1416=1
|
||||||
#export WM_THIRD_PARTY_USE_BISON_27=1
|
#export WM_THIRD_PARTY_USE_BISON_27=1
|
||||||
#export WM_THIRD_PARTY_USE_FLEX_2535=1
|
#export WM_THIRD_PARTY_USE_FLEX_2535=1
|
||||||
|
#export WM_THIRD_PARTY_USE_CMAKE_322=1
|
||||||
#export WM_THIRD_PARTY_USE_CMAKE_332=1
|
#export WM_THIRD_PARTY_USE_CMAKE_332=1
|
||||||
export WM_THIRD_PARTY_USE_CMAKE_322=1
|
export WM_THIRD_PARTY_USE_CMAKE_3114=1
|
||||||
|
|
||||||
#
|
#
|
||||||
# For AllMake.stage2
|
# For AllMake.stage2
|
||||||
export WM_THIRD_PARTY_USE_OPENMPI_188=1
|
export WM_THIRD_PARTY_USE_OPENMPI_311=1
|
||||||
|
#export WM_THIRD_PARTY_USE_OPENMPI_188=1
|
||||||
#export WM_THIRD_PARTY_USE_OPENMPI_188_ConfigureAdditionalArgs='--enable-mpi-cxx --with-verbs'
|
#export WM_THIRD_PARTY_USE_OPENMPI_188_ConfigureAdditionalArgs='--enable-mpi-cxx --with-verbs'
|
||||||
#export WM_THIRD_PARTY_USE_OPENMPI_165=1
|
#export WM_THIRD_PARTY_USE_OPENMPI_165=1
|
||||||
#export WM_THIRD_PARTY_USE_OPENMPI_165_ConfigureAdditionalArgs='--enable-mpi-cxx --with-openib'
|
#export WM_THIRD_PARTY_USE_OPENMPI_165_ConfigureAdditionalArgs='--enable-mpi-cxx --with-openib'
|
||||||
|
@ -232,19 +238,20 @@ export WM_THIRD_PARTY_USE_OPENMPI_188=1
|
||||||
export WM_THIRD_PARTY_USE_METIS_510=1
|
export WM_THIRD_PARTY_USE_METIS_510=1
|
||||||
export WM_THIRD_PARTY_USE_PARMGRIDGEN_10=1
|
export WM_THIRD_PARTY_USE_PARMGRIDGEN_10=1
|
||||||
export WM_THIRD_PARTY_USE_LIBCCMIO_261=1
|
export WM_THIRD_PARTY_USE_LIBCCMIO_261=1
|
||||||
export WM_THIRD_PARTY_USE_MESQUITE_212=1
|
export WM_THIRD_PARTY_USE_MESQUITE_230=1
|
||||||
export WM_THIRD_PARTY_USE_SCOTCH_604=1
|
export WM_THIRD_PARTY_USE_SCOTCH_604=1
|
||||||
#export WM_THIRD_PARTY_USE_SCOTCH_600=1
|
#export WM_THIRD_PARTY_USE_SCOTCH_600=1
|
||||||
export WM_THIRD_PARTY_USE_PARMETIS_403=1
|
export WM_THIRD_PARTY_USE_PARMETIS_403=1
|
||||||
#export WM_THIRD_PARTY_USE_ZOLTAN_36=1
|
#export WM_THIRD_PARTY_USE_ZOLTAN_36=1
|
||||||
export WM_THIRD_PARTY_USE_PYFOAM_064=1
|
export WM_THIRD_PARTY_USE_PYFOAM_069=1
|
||||||
export WM_THIRD_PARTY_USE_HWLOC_1101=1
|
export WM_THIRD_PARTY_USE_HWLOC_201=1
|
||||||
|
#export WM_THIRD_PARTY_USE_HWLOC_1101=1
|
||||||
#export WM_THIRD_PARTY_USE_HWLOC_172=1
|
#export WM_THIRD_PARTY_USE_HWLOC_172=1
|
||||||
|
|
||||||
#
|
#
|
||||||
# For AllMake.stage4
|
# For AllMake.stage4
|
||||||
#export WM_THIRD_PARTY_USE_QT_580=1
|
#export WM_THIRD_PARTY_USE_QT_5111=1
|
||||||
#export WM_THIRD_PARTY_USE_PARAVIEW_541=1
|
#export WM_THIRD_PARTY_USE_PARAVIEW_552=1
|
||||||
export WM_THIRD_PARTY_USE_QT_486=1
|
export WM_THIRD_PARTY_USE_QT_486=1
|
||||||
export WM_THIRD_PARTY_USE_PARAVIEW_440=1
|
export WM_THIRD_PARTY_USE_PARAVIEW_440=1
|
||||||
#export WM_THIRD_PARTY_USE_PARAVIEW_431=1
|
#export WM_THIRD_PARTY_USE_PARAVIEW_431=1
|
||||||
|
|
|
@ -224,18 +224,19 @@ export PARAVIEW_BIN_DIR=$PARAVIEW_DIR/bin
|
||||||
#export WM_THIRD_PARTY_USE_METIS_510=1
|
#export WM_THIRD_PARTY_USE_METIS_510=1
|
||||||
#export WM_THIRD_PARTY_USE_PARMGRIDGEN_10=1
|
#export WM_THIRD_PARTY_USE_PARMGRIDGEN_10=1
|
||||||
#export WM_THIRD_PARTY_USE_LIBCCMIO_261=1
|
#export WM_THIRD_PARTY_USE_LIBCCMIO_261=1
|
||||||
#export WM_THIRD_PARTY_USE_MESQUITE_212=1
|
#export WM_THIRD_PARTY_USE_MESQUITE_230=1
|
||||||
#export WM_THIRD_PARTY_USE_SCOTCH_604=1
|
#export WM_THIRD_PARTY_USE_SCOTCH_604=1
|
||||||
##export WM_THIRD_PARTY_USE_SCOTCH_600=1
|
##export WM_THIRD_PARTY_USE_SCOTCH_600=1
|
||||||
#export WM_THIRD_PARTY_USE_PARMETIS_403=1
|
#export WM_THIRD_PARTY_USE_PARMETIS_403=1
|
||||||
##export WM_THIRD_PARTY_USE_ZOLTAN_36=1
|
##export WM_THIRD_PARTY_USE_ZOLTAN_36=1
|
||||||
#export WM_THIRD_PARTY_USE_PYFOAM_064=1
|
#export WM_THIRD_PARTY_USE_PYFOAM_069=1
|
||||||
|
#export WM_THIRD_PARTY_USE_HWLOC_201=1
|
||||||
#export WM_THIRD_PARTY_USE_HWLOC_1101=1
|
#export WM_THIRD_PARTY_USE_HWLOC_1101=1
|
||||||
#export WM_THIRD_PARTY_USE_HWLOC_172=1
|
#export WM_THIRD_PARTY_USE_HWLOC_172=1
|
||||||
|
|
||||||
#
|
#
|
||||||
# For AllMake.stage4
|
# For AllMake.stage4
|
||||||
#export WM_THIRD_PARTY_USE_QT_486=1
|
#export WM_THIRD_PARTY_USE_QT_5111=1
|
||||||
#export WM_THIRD_PARTY_USE_PARAVIEW_431=1
|
#export WM_THIRD_PARTY_USE_PARAVIEW_431=1
|
||||||
#export WM_THIRD_PARTY_USE_PARAVIEW_410=1
|
#export WM_THIRD_PARTY_USE_PARAVIEW_410=1
|
||||||
|
|
||||||
|
|
|
@ -167,7 +167,15 @@ set mpi_version=unknown
|
||||||
|
|
||||||
switch ("$WM_MPLIB")
|
switch ("$WM_MPLIB")
|
||||||
case OPENMPI:
|
case OPENMPI:
|
||||||
if ($?WM_THIRD_PARTY_USE_OPENMPI_188 != 0 && -d $WM_THIRD_PARTY_DIR/packages/openmpi-1.8.8/platforms/$WM_OPTIONS ) then
|
if ($?WM_THIRD_PARTY_USE_OPENMPI_311 != 0 && -d $WM_THIRD_PARTY_DIR/packages/openmpi-3.1.1/platforms/$WM_OPTIONS ) then
|
||||||
|
set mpi_version=openmpi-3.1.1
|
||||||
|
|
||||||
|
if ($?FOAM_VERBOSE && $?prompt) then
|
||||||
|
echo "Using openmpi-3.1.1 from the ThirdParty package: $WM_THIRD_PARTY_DIR/packages/$mpi_version"
|
||||||
|
endif
|
||||||
|
_foamSource $WM_THIRD_PARTY_DIR/packages/$mpi_version/platforms/$WM_OPTIONS/etc/$mpi_version.csh
|
||||||
|
|
||||||
|
else if ($?WM_THIRD_PARTY_USE_OPENMPI_188 != 0 && -d $WM_THIRD_PARTY_DIR/packages/openmpi-1.8.8/platforms/$WM_OPTIONS ) then
|
||||||
set mpi_version=openmpi-1.8.8
|
set mpi_version=openmpi-1.8.8
|
||||||
|
|
||||||
if ($?FOAM_VERBOSE && $?prompt) then
|
if ($?FOAM_VERBOSE && $?prompt) then
|
||||||
|
@ -514,6 +522,9 @@ endif
|
||||||
if ( $?MESQUITE_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_MESQUITE_212 != 0 && -e $WM_THIRD_PARTY_DIR/packages/mesquite-2.1.2/platforms/$WM_OPTIONS ) then
|
if ( $?MESQUITE_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_MESQUITE_212 != 0 && -e $WM_THIRD_PARTY_DIR/packages/mesquite-2.1.2/platforms/$WM_OPTIONS ) then
|
||||||
_foamSource $WM_THIRD_PARTY_DIR/packages/mesquite-2.1.2/platforms/$WM_OPTIONS/etc/mesquite-2.1.2.csh
|
_foamSource $WM_THIRD_PARTY_DIR/packages/mesquite-2.1.2/platforms/$WM_OPTIONS/etc/mesquite-2.1.2.csh
|
||||||
endif
|
endif
|
||||||
|
if ( $?MESQUITE_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_MESQUITE_230 != 0 && -e $WM_THIRD_PARTY_DIR/packages/mesquite-2.3.0/platforms/$WM_OPTIONS ) then
|
||||||
|
_foamSource $WM_THIRD_PARTY_DIR/packages/mesquite-2.3.0/platforms/$WM_OPTIONS/etc/mesquite-2.3.0.csh
|
||||||
|
endif
|
||||||
|
|
||||||
# Metis library if available
|
# Metis library if available
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -559,6 +570,9 @@ endif
|
||||||
|
|
||||||
# cmake
|
# cmake
|
||||||
# ~~~~~
|
# ~~~~~
|
||||||
|
if ( $?CMAKE_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_CMAKE_3114 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/cmake-3.11.4/platforms/$WM_OPTIONS ) then
|
||||||
|
_foamSource $WM_THIRD_PARTY_DIR/packages/cmake-3.11.4/platforms/$WM_OPTIONS/etc/cmake-3.11.4.csh
|
||||||
|
endif
|
||||||
if ( $?CMAKE_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_CMAKE_332 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/cmake-3.3.2/platforms/$WM_OPTIONS ) then
|
if ( $?CMAKE_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_CMAKE_332 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/cmake-3.3.2/platforms/$WM_OPTIONS ) then
|
||||||
_foamSource $WM_THIRD_PARTY_DIR/packages/cmake-3.3.2/platforms/$WM_OPTIONS/etc/cmake-3.3.2.csh
|
_foamSource $WM_THIRD_PARTY_DIR/packages/cmake-3.3.2/platforms/$WM_OPTIONS/etc/cmake-3.3.2.csh
|
||||||
endif
|
endif
|
||||||
|
@ -607,9 +621,18 @@ endif
|
||||||
if ( $?PYFOAM_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_PYFOAM_064 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/PyFoam-0.6.4/platforms/noarch ) then
|
if ( $?PYFOAM_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_PYFOAM_064 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/PyFoam-0.6.4/platforms/noarch ) then
|
||||||
_foamSource $WM_THIRD_PARTY_DIR/packages/PyFoam-0.6.4/platforms/noarch/etc/PyFoam-0.6.4.csh
|
_foamSource $WM_THIRD_PARTY_DIR/packages/PyFoam-0.6.4/platforms/noarch/etc/PyFoam-0.6.4.csh
|
||||||
endif
|
endif
|
||||||
|
if ( $?PYFOAM_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_PYFOAM_066 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/PyFoam-0.6.6/platforms/noarch ) then
|
||||||
|
_foamSource $WM_THIRD_PARTY_DIR/packages/PyFoam-0.6.6/platforms/noarch/etc/PyFoam-0.6.6.csh
|
||||||
|
endif
|
||||||
|
if ( $?PYFOAM_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_PYFOAM_069 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/PyFoam-0.6.9/platforms/noarch ) then
|
||||||
|
_foamSource $WM_THIRD_PARTY_DIR/packages/PyFoam-0.6.9/platforms/noarch/etc/PyFoam-0.6.9.csh
|
||||||
|
endif
|
||||||
|
|
||||||
# hwloc
|
# hwloc
|
||||||
# ~~~~~
|
# ~~~~~
|
||||||
|
if ( $?HWLOC_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_HWLOC_201 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/hwloc-2.0.1/platforms/$WM_OPTIONS ) then
|
||||||
|
_foamSource $WM_THIRD_PARTY_DIR/packages/hwloc-2.0.1/platforms/$WM_OPTIONS/etc/hwloc-2.0.1.csh
|
||||||
|
endif
|
||||||
if ( $?HWLOC_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_HWLOC_1101 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/hwloc-1.10.1/platforms/$WM_OPTIONS ) then
|
if ( $?HWLOC_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_HWLOC_1101 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/hwloc-1.10.1/platforms/$WM_OPTIONS ) then
|
||||||
_foamSource $WM_THIRD_PARTY_DIR/packages/hwloc-1.10.1/platforms/$WM_OPTIONS/etc/hwloc-1.10.1.csh
|
_foamSource $WM_THIRD_PARTY_DIR/packages/hwloc-1.10.1/platforms/$WM_OPTIONS/etc/hwloc-1.10.1.csh
|
||||||
endif
|
endif
|
||||||
|
@ -619,6 +642,9 @@ endif
|
||||||
|
|
||||||
# QT
|
# QT
|
||||||
# ~~~~~
|
# ~~~~~
|
||||||
|
if ( $?QT_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_QT_5111 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/qt-everywhere-src-5.11.1/platforms/$WM_OPTIONS )then
|
||||||
|
_foamSource $WM_THIRD_PARTY_DIR/packages/qt-everywhere-src-5.11.1/platforms/$WM_OPTIONS/etc/qt-everywhere-src-5.11.1.csh
|
||||||
|
endif
|
||||||
if ( $?QT_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_QT_580 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/qt-everywhere-opensource-src-5.8.0/platforms/$WM_OPTIONS )then
|
if ( $?QT_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_QT_580 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/qt-everywhere-opensource-src-5.8.0/platforms/$WM_OPTIONS )then
|
||||||
_foamSource $WM_THIRD_PARTY_DIR/packages/qt-everywhere-opensource-src-5.8.0/platforms/$WM_OPTIONS/etc/qt-everywhere-opensource-src-5.8.0.csh
|
_foamSource $WM_THIRD_PARTY_DIR/packages/qt-everywhere-opensource-src-5.8.0/platforms/$WM_OPTIONS/etc/qt-everywhere-opensource-src-5.8.0.csh
|
||||||
endif
|
endif
|
||||||
|
@ -628,6 +654,9 @@ endif
|
||||||
|
|
||||||
# PARAVIEW
|
# PARAVIEW
|
||||||
# ~~~~~
|
# ~~~~~
|
||||||
|
if ( $?PARAVIEW_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_PARAVIEW_552 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/ParaView-5.5.2/platforms/$WM_OPTIONS ) then
|
||||||
|
_foamSource $WM_THIRD_PARTY_DIR/packages/ParaView-5.5.2/platforms/$WM_OPTIONS/etc/ParaView-5.5.2.csh
|
||||||
|
endif
|
||||||
if ( $?PARAVIEW_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_PARAVIEW_541 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/ParaView-5.4.1/platforms/$WM_OPTIONS ) then
|
if ( $?PARAVIEW_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_PARAVIEW_541 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/ParaView-5.4.1/platforms/$WM_OPTIONS ) then
|
||||||
_foamSource $WM_THIRD_PARTY_DIR/packages/ParaView-5.4.1/platforms/$WM_OPTIONS/etc/ParaView-5.4.1.csh
|
_foamSource $WM_THIRD_PARTY_DIR/packages/ParaView-5.4.1/platforms/$WM_OPTIONS/etc/ParaView-5.4.1.csh
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -213,7 +213,16 @@ unset MPI_ARCH_PATH
|
||||||
mpi_version=unknown
|
mpi_version=unknown
|
||||||
case "$WM_MPLIB" in
|
case "$WM_MPLIB" in
|
||||||
OPENMPI)
|
OPENMPI)
|
||||||
if [ ! -z $WM_THIRD_PARTY_USE_OPENMPI_188 ] && [ -e $WM_THIRD_PARTY_DIR/packages/openmpi-1.8.8/platforms/$WM_OPTIONS ]
|
if [ ! -z $WM_THIRD_PARTY_USE_OPENMPI_311 ] && [ -e $WM_THIRD_PARTY_DIR/packages/openmpi-3.1.1/platforms/$WM_OPTIONS ]
|
||||||
|
then
|
||||||
|
mpi_version=openmpi-3.1.1
|
||||||
|
if [ "$FOAM_VERBOSE" -a "$PS1" ]
|
||||||
|
then
|
||||||
|
echo "Using openmpi-3.1.1 from the ThirdParty package: $WM_THIRD_PARTY_DIR/packages/$mpi_version"
|
||||||
|
fi
|
||||||
|
_foamSource $WM_THIRD_PARTY_DIR/packages/$mpi_version/platforms/$WM_OPTIONS/etc/$mpi_version.sh
|
||||||
|
|
||||||
|
elif [ ! -z $WM_THIRD_PARTY_USE_OPENMPI_188 ] && [ -e $WM_THIRD_PARTY_DIR/packages/openmpi-1.8.8/platforms/$WM_OPTIONS ]
|
||||||
then
|
then
|
||||||
mpi_version=openmpi-1.8.8
|
mpi_version=openmpi-1.8.8
|
||||||
if [ "$FOAM_VERBOSE" -a "$PS1" ]
|
if [ "$FOAM_VERBOSE" -a "$PS1" ]
|
||||||
|
@ -613,6 +622,10 @@ export MPI_BUFFER_SIZE
|
||||||
_foamSource $WM_THIRD_PARTY_DIR/packages/mesquite-2.1.2/platforms/$WM_OPTIONS/etc/mesquite-2.1.2.sh
|
_foamSource $WM_THIRD_PARTY_DIR/packages/mesquite-2.1.2/platforms/$WM_OPTIONS/etc/mesquite-2.1.2.sh
|
||||||
}
|
}
|
||||||
[ "$FOAM_VERBOSE" -a "$PS1" ] && echo " MESQUITE_DIR is initialized to: $MESQUITE_DIR"
|
[ "$FOAM_VERBOSE" -a "$PS1" ] && echo " MESQUITE_DIR is initialized to: $MESQUITE_DIR"
|
||||||
|
[ -z "$MESQUITE_SYSTEM" ] && [ ! -z $WM_THIRD_PARTY_USE_MESQUITE_230 ] && [ -e $WM_THIRD_PARTY_DIR/packages/mesquite-2.3.0/platforms/$WM_OPTIONS ] && {
|
||||||
|
_foamSource $WM_THIRD_PARTY_DIR/packages/mesquite-2.3.0/platforms/$WM_OPTIONS/etc/mesquite-2.3.0.sh
|
||||||
|
}
|
||||||
|
[ "$FOAM_VERBOSE" -a "$PS1" ] && echo " MESQUITE_DIR is initialized to: $MESQUITE_DIR"
|
||||||
|
|
||||||
|
|
||||||
# Load Metis library
|
# Load Metis library
|
||||||
|
@ -662,6 +675,9 @@ export MPI_BUFFER_SIZE
|
||||||
|
|
||||||
# Load cmake
|
# Load cmake
|
||||||
# ~~~~~~~~~~
|
# ~~~~~~~~~~
|
||||||
|
[ -z "$CMAKE_SYSTEM" ] && [ ! -z $WM_THIRD_PARTY_USE_CMAKE_3114 ] && [ -e $WM_THIRD_PARTY_DIR/packages/cmake-3.11.4/platforms/$WM_OPTIONS ] && {
|
||||||
|
_foamSource $WM_THIRD_PARTY_DIR/packages/cmake-3.11.4/platforms/$WM_OPTIONS/etc/cmake-3.11.4.sh
|
||||||
|
}
|
||||||
[ -z "$CMAKE_SYSTEM" ] && [ ! -z $WM_THIRD_PARTY_USE_CMAKE_332 ] && [ -e $WM_THIRD_PARTY_DIR/packages/cmake-3.3.2/platforms/$WM_OPTIONS ] && {
|
[ -z "$CMAKE_SYSTEM" ] && [ ! -z $WM_THIRD_PARTY_USE_CMAKE_332 ] && [ -e $WM_THIRD_PARTY_DIR/packages/cmake-3.3.2/platforms/$WM_OPTIONS ] && {
|
||||||
_foamSource $WM_THIRD_PARTY_DIR/packages/cmake-3.3.2/platforms/$WM_OPTIONS/etc/cmake-3.3.2.sh
|
_foamSource $WM_THIRD_PARTY_DIR/packages/cmake-3.3.2/platforms/$WM_OPTIONS/etc/cmake-3.3.2.sh
|
||||||
}
|
}
|
||||||
|
@ -718,6 +734,12 @@ export MPI_BUFFER_SIZE
|
||||||
[ -z "$PYFOAM_SYSTEM" ] && [ ! -z $WM_THIRD_PARTY_USE_PYFOAM_064 ] && [ -e $WM_THIRD_PARTY_DIR/packages/PyFoam-0.6.4/platforms/noarch ] && {
|
[ -z "$PYFOAM_SYSTEM" ] && [ ! -z $WM_THIRD_PARTY_USE_PYFOAM_064 ] && [ -e $WM_THIRD_PARTY_DIR/packages/PyFoam-0.6.4/platforms/noarch ] && {
|
||||||
_foamSource $WM_THIRD_PARTY_DIR/packages/PyFoam-0.6.4/platforms/noarch/etc/PyFoam-0.6.4.sh
|
_foamSource $WM_THIRD_PARTY_DIR/packages/PyFoam-0.6.4/platforms/noarch/etc/PyFoam-0.6.4.sh
|
||||||
}
|
}
|
||||||
|
[ -z "$PYFOAM_SYSTEM" ] && [ ! -z $WM_THIRD_PARTY_USE_PYFOAM_066 ] && [ -e $WM_THIRD_PARTY_DIR/packages/PyFoam-0.6.6/platforms/noarch ] && {
|
||||||
|
_foamSource $WM_THIRD_PARTY_DIR/packages/PyFoam-0.6.6/platforms/noarch/etc/PyFoam-0.6.6.sh
|
||||||
|
}
|
||||||
|
[ -z "$PYFOAM_SYSTEM" ] && [ ! -z $WM_THIRD_PARTY_USE_PYFOAM_069 ] && [ -e $WM_THIRD_PARTY_DIR/packages/PyFoam-0.6.9/platforms/noarch ] && {
|
||||||
|
_foamSource $WM_THIRD_PARTY_DIR/packages/PyFoam-0.6.9/platforms/noarch/etc/PyFoam-0.6.9.sh
|
||||||
|
}
|
||||||
[ "$FOAM_VERBOSE" -a "$PS1" ] && echo " PYFOAM_DIR is initialized to: $PYFOAM_DIR"
|
[ "$FOAM_VERBOSE" -a "$PS1" ] && echo " PYFOAM_DIR is initialized to: $PYFOAM_DIR"
|
||||||
|
|
||||||
# Make sure that there is a special directory for special PyFoam-scripts
|
# Make sure that there is a special directory for special PyFoam-scripts
|
||||||
|
@ -731,6 +753,9 @@ fi
|
||||||
|
|
||||||
# Load hwloc
|
# Load hwloc
|
||||||
# ~~~~~~~~~~~
|
# ~~~~~~~~~~~
|
||||||
|
[ -z "$HWLOC_SYSTEM" ] && [ ! -z $WM_THIRD_PARTY_USE_HWLOC_201 ] && [ -e $WM_THIRD_PARTY_DIR/packages/hwloc-2.0.1/platforms/$WM_OPTIONS ] && {
|
||||||
|
_foamSource $WM_THIRD_PARTY_DIR/packages/hwloc-2.0.1/platforms/$WM_OPTIONS/etc/hwloc-2.0.1.sh
|
||||||
|
}
|
||||||
[ -z "$HWLOC_SYSTEM" ] && [ ! -z $WM_THIRD_PARTY_USE_HWLOC_1101 ] && [ -e $WM_THIRD_PARTY_DIR/packages/hwloc-1.10.1/platforms/$WM_OPTIONS ] && {
|
[ -z "$HWLOC_SYSTEM" ] && [ ! -z $WM_THIRD_PARTY_USE_HWLOC_1101 ] && [ -e $WM_THIRD_PARTY_DIR/packages/hwloc-1.10.1/platforms/$WM_OPTIONS ] && {
|
||||||
_foamSource $WM_THIRD_PARTY_DIR/packages/hwloc-1.10.1/platforms/$WM_OPTIONS/etc/hwloc-1.10.1.sh
|
_foamSource $WM_THIRD_PARTY_DIR/packages/hwloc-1.10.1/platforms/$WM_OPTIONS/etc/hwloc-1.10.1.sh
|
||||||
}
|
}
|
||||||
|
@ -741,6 +766,10 @@ fi
|
||||||
|
|
||||||
# Load QT
|
# Load QT
|
||||||
# ~~~~~~~
|
# ~~~~~~~
|
||||||
|
[ ! -z "$QT_THIRD_PARTY" ] && [ ! -z $WM_THIRD_PARTY_USE_QT_5111 ] && [ -e $WM_THIRD_PARTY_DIR/packages/qt-everywhere-src-5.11.1/platforms/$WM_OPTIONS ] && {
|
||||||
|
_foamSource $WM_THIRD_PARTY_DIR/packages/qt-everywhere-src-5.11.1/platforms/$WM_OPTIONS/etc/qt-everywhere-src-5.11.1.sh
|
||||||
|
}
|
||||||
|
# ~~~~~~~
|
||||||
[ ! -z "$QT_THIRD_PARTY" ] && [ ! -z $WM_THIRD_PARTY_USE_QT_580 ] && [ -e $WM_THIRD_PARTY_DIR/packages/qt-everywhere-opensource-src-5.8.0/platforms/$WM_OPTIONS ] && {
|
[ ! -z "$QT_THIRD_PARTY" ] && [ ! -z $WM_THIRD_PARTY_USE_QT_580 ] && [ -e $WM_THIRD_PARTY_DIR/packages/qt-everywhere-opensource-src-5.8.0/platforms/$WM_OPTIONS ] && {
|
||||||
_foamSource $WM_THIRD_PARTY_DIR/packages/qt-everywhere-opensource-src-5.8.0/platforms/$WM_OPTIONS/etc/qt-everywhere-opensource-src-5.8.0.sh
|
_foamSource $WM_THIRD_PARTY_DIR/packages/qt-everywhere-opensource-src-5.8.0/platforms/$WM_OPTIONS/etc/qt-everywhere-opensource-src-5.8.0.sh
|
||||||
}
|
}
|
||||||
|
@ -752,6 +781,9 @@ fi
|
||||||
|
|
||||||
# Load ParaView
|
# Load ParaView
|
||||||
# ~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~
|
||||||
|
[ -z "$PARAVIEW_SYSTEM" ] && [ ! -z $WM_THIRD_PARTY_USE_PARAVIEW_552 ] && [ -e $WM_THIRD_PARTY_DIR/packages/ParaView-5.5.2/platforms/$WM_OPTIONS ] && {
|
||||||
|
_foamSource $WM_THIRD_PARTY_DIR/packages/ParaView-5.5.2/platforms/$WM_OPTIONS/etc/ParaView-5.5.2.sh
|
||||||
|
}
|
||||||
[ -z "$PARAVIEW_SYSTEM" ] && [ ! -z $WM_THIRD_PARTY_USE_PARAVIEW_541 ] && [ -e $WM_THIRD_PARTY_DIR/packages/ParaView-5.4.1/platforms/$WM_OPTIONS ] && {
|
[ -z "$PARAVIEW_SYSTEM" ] && [ ! -z $WM_THIRD_PARTY_USE_PARAVIEW_541 ] && [ -e $WM_THIRD_PARTY_DIR/packages/ParaView-5.4.1/platforms/$WM_OPTIONS ] && {
|
||||||
_foamSource $WM_THIRD_PARTY_DIR/packages/ParaView-5.4.1/platforms/$WM_OPTIONS/etc/ParaView-5.4.1.sh
|
_foamSource $WM_THIRD_PARTY_DIR/packages/ParaView-5.4.1/platforms/$WM_OPTIONS/etc/ParaView-5.4.1.sh
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,9 @@ wmake libso lduSolvers
|
||||||
|
|
||||||
wmake libso tetFiniteElement
|
wmake libso tetFiniteElement
|
||||||
|
|
||||||
|
# We can now compile this library from decompositionMethods
|
||||||
|
wmake libso decompositionMethods/decomposeReconstruct
|
||||||
|
|
||||||
# Make dynamicMesh tools
|
# Make dynamicMesh tools
|
||||||
dynamicMesh/AllwmakeLnInclude
|
dynamicMesh/AllwmakeLnInclude
|
||||||
dynamicMesh/Allwmake
|
dynamicMesh/Allwmake
|
||||||
|
|
|
@ -131,7 +131,7 @@ void Foam::periodicOscillation::stabilise
|
||||||
x -= (x & dir_)*dir_;
|
x -= (x & dir_)*dir_;
|
||||||
|
|
||||||
// ... then add the correct displacement
|
// ... then add the correct displacement
|
||||||
x += dir_*sin(omega_*t + phi_);
|
x += dir_*a_*sin(omega_*t + phi_);
|
||||||
|
|
||||||
|
|
||||||
// Set the velocity according to periodic oscillation
|
// Set the velocity according to periodic oscillation
|
||||||
|
@ -140,7 +140,7 @@ void Foam::periodicOscillation::stabilise
|
||||||
u -= (u & dir_)*dir_;
|
u -= (u & dir_)*dir_;
|
||||||
|
|
||||||
// ... then add the correct velocity
|
// ... then add the correct velocity
|
||||||
u += dir_*cos(omega_*t + phi_);
|
u += dir_*a_*omega_*cos(omega_*t + phi_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
cd ${0%/*} || exit 1 # run from this directory
|
cd ${0%/*} || exit 1 # run from this directory
|
||||||
set -x
|
set -x
|
||||||
|
|
||||||
wmake libso decomposeReconstruct
|
# We need to recompile this library later, when all the dependencies are ready
|
||||||
|
#wmake libso decomposeReconstruct
|
||||||
|
|
||||||
wmakeLnInclude decompositionMethods
|
wmakeLnInclude decompositionMethods
|
||||||
|
|
||||||
|
|
|
@ -37,8 +37,10 @@ $(slidingInterface)/decoupleSlidingInterface.C
|
||||||
repatchCoverage = $(polyMeshModifiers)/repatchCoverage
|
repatchCoverage = $(polyMeshModifiers)/repatchCoverage
|
||||||
$(repatchCoverage)/repatchCoverage.C
|
$(repatchCoverage)/repatchCoverage.C
|
||||||
|
|
||||||
polyhedralRefinement = $(polyMeshModifiers)/polyhedralRefinement
|
refinement = $(polyMeshModifiers)/refinement
|
||||||
$(polyhedralRefinement)/polyhedralRefinement.C
|
$(refinement)/refinement/refinement.C
|
||||||
|
$(refinement)/polyhedralRefinement/polyhedralRefinement.C
|
||||||
|
$(refinement)/prismatic2DRefinement/prismatic2DRefinement.C
|
||||||
|
|
||||||
polyTopoChange/polyTopoChange/polyTopoChange.C
|
polyTopoChange/polyTopoChange/polyTopoChange.C
|
||||||
polyTopoChange/polyTopoChange/actions/topoAction/topoActions.C
|
polyTopoChange/polyTopoChange/actions/topoAction/topoActions.C
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,245 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::polyhedralRefinement
|
||||||
|
|
||||||
|
Description
|
||||||
|
Isotropic refinement of polyhedral cells using the mesh modifier engine
|
||||||
|
|
||||||
|
Each polyhedral cell is split by the following procedure:
|
||||||
|
1. Adding points at the edge centre, face centre and cell centre,
|
||||||
|
2. Adding cells n cells where n is the number of points of the cell,
|
||||||
|
3. Splitting each face into multiple faces going from:
|
||||||
|
existing corner point -> new edge centre point -> new face centre
|
||||||
|
point -> other new edge centre point (sharing the same corner point)
|
||||||
|
4. Adding internal faces going from:
|
||||||
|
new edge centre point -> new face centre point -> new cell centre
|
||||||
|
point -> other new face centre point (sharing the same edge)
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
polyhedralRefinement.C
|
||||||
|
|
||||||
|
Author
|
||||||
|
Vuko Vukcevic, Wikki Ltd. All rights reserved.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef polyhedralRefinement_H
|
||||||
|
#define polyhedralRefinement_H
|
||||||
|
|
||||||
|
#include "refinement.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class polyhedralRefinement Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class polyhedralRefinement
|
||||||
|
:
|
||||||
|
public refinement
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
|
||||||
|
// Private Member Functions
|
||||||
|
|
||||||
|
// Helper functions
|
||||||
|
|
||||||
|
//- Get least cell level such that the face has at least three
|
||||||
|
// points smaller than the level
|
||||||
|
label getAnchorLevel(const label faceI) const;
|
||||||
|
|
||||||
|
|
||||||
|
// Local topology modification functions (operate on cells/faces)
|
||||||
|
|
||||||
|
//- Create all internal faces of split cellI into n cells where n is the
|
||||||
|
// number of cell points
|
||||||
|
void createInternalFaces
|
||||||
|
(
|
||||||
|
const labelListList& cellAnchorPoints,
|
||||||
|
const labelListList& cellAddedCells,
|
||||||
|
const labelList& cellMidPoint,
|
||||||
|
const labelList& faceMidPoint,
|
||||||
|
const labelList& faceAnchorLevel,
|
||||||
|
const labelList& edgeMidPoint,
|
||||||
|
const label cellI,
|
||||||
|
polyTopoChange& ref
|
||||||
|
) const;
|
||||||
|
|
||||||
|
|
||||||
|
// Topological change helper functions
|
||||||
|
|
||||||
|
//- Get cell added to point of cellI (if any)
|
||||||
|
label getAnchorCell
|
||||||
|
(
|
||||||
|
const labelListList& cellAnchorPoints,
|
||||||
|
const labelListList& cellAddedCells,
|
||||||
|
const label cellI,
|
||||||
|
const label faceI,
|
||||||
|
const label pointI
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Set new owner and neighbour (in unspecified order) of pointI
|
||||||
|
// on faceI
|
||||||
|
void setNewFaceNeighbours
|
||||||
|
(
|
||||||
|
const labelListList& cellAnchorPoints,
|
||||||
|
const labelListList& cellAddedCells,
|
||||||
|
const label faceI,
|
||||||
|
const label pointI,
|
||||||
|
|
||||||
|
label& own,
|
||||||
|
label& nei
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Find index of point with wantedLevel, starting from fp
|
||||||
|
label findLevel
|
||||||
|
(
|
||||||
|
const face& f,
|
||||||
|
const label startFp,
|
||||||
|
const bool searchForward,
|
||||||
|
const label wantedLevel
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Store in maps correspondence from midpoint to anchors and
|
||||||
|
// faces. Used when creating internal faces
|
||||||
|
label storeMidPointInfo
|
||||||
|
(
|
||||||
|
const labelListList& cellAnchorPoints,
|
||||||
|
const labelListList& cellAddedCells,
|
||||||
|
const labelList& cellMidPoint,
|
||||||
|
const labelList& edgeMidPoint,
|
||||||
|
const label cellI,
|
||||||
|
const label faceI,
|
||||||
|
const bool faceOrder,
|
||||||
|
const label midPointI,
|
||||||
|
const label anchorPointI,
|
||||||
|
const label faceMidPointI,
|
||||||
|
|
||||||
|
Map<edge>& midPointToAnchors,
|
||||||
|
Map<edge>& midPointToFaceMids,
|
||||||
|
polyTopoChange& ref
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- If p0 and p1 are existing vertices check if edge is split and insert
|
||||||
|
// splitPoint. Used with storing mid point
|
||||||
|
void insertEdgeSplit
|
||||||
|
(
|
||||||
|
const labelList& edgeMidPoint,
|
||||||
|
const label p0,
|
||||||
|
const label p1,
|
||||||
|
dynamicLabelList& verts
|
||||||
|
) const;
|
||||||
|
|
||||||
|
|
||||||
|
// Copy control
|
||||||
|
|
||||||
|
//- Disallow default bitwise copy construct
|
||||||
|
polyhedralRefinement(const polyhedralRefinement&);
|
||||||
|
|
||||||
|
//- Disallow default bitwise assignment
|
||||||
|
void operator=(const polyhedralRefinement&);
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
// Protected Pure Virtual Member Functions
|
||||||
|
|
||||||
|
// Global topology modification functions (operate on whole polyMesh)
|
||||||
|
|
||||||
|
//- Set refinement instruction
|
||||||
|
virtual void setRefinementInstruction
|
||||||
|
(
|
||||||
|
polyTopoChange& ref
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Set unrefinement instruction
|
||||||
|
virtual void setUnrefinementInstruction
|
||||||
|
(
|
||||||
|
polyTopoChange& ref
|
||||||
|
) const;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("polyhedralRefinement");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from dictionary
|
||||||
|
polyhedralRefinement
|
||||||
|
(
|
||||||
|
const word& name,
|
||||||
|
const dictionary& dict,
|
||||||
|
const label index,
|
||||||
|
const polyTopoChanger& mme
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
|
||||||
|
virtual ~polyhedralRefinement();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
// Edit
|
||||||
|
|
||||||
|
//- Set cells to refine given a list of refinement
|
||||||
|
// candidates. Refinement candidates are extended within the
|
||||||
|
// function due to possible 4:1 conflicts and specified number of
|
||||||
|
// buffer layers.
|
||||||
|
// Note: must be called BEFORE setSplitPointsToUnrefine
|
||||||
|
virtual void setCellsToRefine
|
||||||
|
(
|
||||||
|
const labelList& refinementCellCandidates
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Set split points to unrefine given a list of all mesh points
|
||||||
|
// that are candidates for unrefinement. Split points are
|
||||||
|
// determined as a subset of unrefinement candidates, avoiding
|
||||||
|
// splitting points of cells that are going to be refined at the
|
||||||
|
// same time and ensuring consistent unrefinement.
|
||||||
|
// Note: must be called AFTER setCellsToRefine
|
||||||
|
virtual void setSplitPointsToUnrefine
|
||||||
|
(
|
||||||
|
const labelList& unrefinementPointCandidates
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,255 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.0
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::prismatic2DRefinement
|
||||||
|
|
||||||
|
Description
|
||||||
|
Isotropic refinement of prismatic cells in 2D using the mesh modifier
|
||||||
|
engine. Used for 2D cases instead of polyhedralRefinement which carries
|
||||||
|
unnecessary overhead in terms of number of cells since it splits the cell in
|
||||||
|
all directions.
|
||||||
|
|
||||||
|
Each prismatic cell is split by the following procedure:
|
||||||
|
1. Adding points at the face centres and edge centres of all faces found on
|
||||||
|
an special patch: empty or wedge.
|
||||||
|
2. Adding n cells per existing cell where n is the number of corner points
|
||||||
|
at the face on special patch (empty or wedge).
|
||||||
|
3. Splitting each of the faces on special patch (empty or wedge) into
|
||||||
|
multiple faces going from: existing corner point -> new edge centre point
|
||||||
|
-> new face centre point -> other new edge centre point (sharing the same
|
||||||
|
corner point)
|
||||||
|
4. Spliiting each of the faces not on an special patch (empty or wedge) into
|
||||||
|
two faces going from: existing corner point -> existing corner point on
|
||||||
|
the other side -> new edge centre point on the other side -> new edge
|
||||||
|
centre point on my side
|
||||||
|
4. Adding internal faces going from:
|
||||||
|
new edge centre point -> new face centre point -> new other face
|
||||||
|
centre point on the other side -> new other edge mid point on the other
|
||||||
|
side
|
||||||
|
|
||||||
|
It is an error to try and run this on anything except a 2D mesh.
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
prismatic2DRefinement.C
|
||||||
|
|
||||||
|
Author
|
||||||
|
Vuko Vukcevic, Wikki Ltd. All rights reserved.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef prismatic2DRefinement_H
|
||||||
|
#define prismatic2DRefinement_H
|
||||||
|
|
||||||
|
#include "refinement.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class prismatic2DRefinement Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class prismatic2DRefinement
|
||||||
|
:
|
||||||
|
public refinement
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
|
||||||
|
// Private Member Functions
|
||||||
|
|
||||||
|
// Helper functions
|
||||||
|
|
||||||
|
//- Get least cell level such that the face has at least nPoints
|
||||||
|
// points smaller than the level
|
||||||
|
label getAnchorLevel
|
||||||
|
(
|
||||||
|
const label faceI,
|
||||||
|
const label nPoints
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Append given face into a dynamic list containing split faces
|
||||||
|
// that will be split into two faces (third parameter). Additionaly
|
||||||
|
// append information on which of the two edges of the face are on
|
||||||
|
// special patch into a dynamic list (fourth parameter)
|
||||||
|
void appendFaceSplitInfo
|
||||||
|
(
|
||||||
|
const label& faceI,
|
||||||
|
const boolList& edgeOnEmptyPatch,
|
||||||
|
const labelList& edgeMidPoint,
|
||||||
|
DynamicList<label>& splitFacesIntoTwo,
|
||||||
|
DynamicList<Pair<label> >& splitFacesEmptyEdges
|
||||||
|
) const;
|
||||||
|
|
||||||
|
|
||||||
|
// Topological change helper functions
|
||||||
|
|
||||||
|
//- Set new owner and neighbour given anchor pointI, faceI and the
|
||||||
|
// necessary mapping
|
||||||
|
void setNewFaceNeighbours
|
||||||
|
(
|
||||||
|
const HashTable
|
||||||
|
<
|
||||||
|
label,
|
||||||
|
Pair<label>,
|
||||||
|
Hash<FixedList<label, 2> >
|
||||||
|
>& pointCellToAddedCellMap,
|
||||||
|
const labelListList& cellAddedCells,
|
||||||
|
const label& faceI,
|
||||||
|
const label& pointI,
|
||||||
|
|
||||||
|
label& own,
|
||||||
|
label& nei
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Get index of point with minimum point level of a face across two
|
||||||
|
// connected edges starting from a local point index.
|
||||||
|
// Example: starting from point with level 1 in the upper left
|
||||||
|
// corner, finds point index of the point with level 0 which is on
|
||||||
|
// the same face, connected with edge to original point
|
||||||
|
// 1------1
|
||||||
|
// |
|
||||||
|
// |
|
||||||
|
// 0
|
||||||
|
// Note: passing face edges and mesh edges as parameters to avoid
|
||||||
|
// fetching them from mesh due to lazy evaluation
|
||||||
|
label findMinEdgeConnectedLevel
|
||||||
|
(
|
||||||
|
const label& fpI,
|
||||||
|
const label& faceI,
|
||||||
|
const face& f,
|
||||||
|
const labelList& fEdges,
|
||||||
|
const edgeList& meshEdges
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Store two face mids when adding internal faces
|
||||||
|
void addFaceMids
|
||||||
|
(
|
||||||
|
const labelList& faceMidPoint,
|
||||||
|
const boolList& faceOnEmptyPatch,
|
||||||
|
const label& faceI,
|
||||||
|
const label& cellI,
|
||||||
|
face& newFace
|
||||||
|
) const;
|
||||||
|
|
||||||
|
|
||||||
|
// Debug functions
|
||||||
|
|
||||||
|
//- Check orientation of a split face
|
||||||
|
void checkNewFaceOrientation
|
||||||
|
(
|
||||||
|
polyTopoChange& ref,
|
||||||
|
const label& faceI,
|
||||||
|
const face& newFace
|
||||||
|
) const;
|
||||||
|
|
||||||
|
|
||||||
|
// Copy control
|
||||||
|
|
||||||
|
//- Disallow default bitwise copy construct
|
||||||
|
prismatic2DRefinement(const prismatic2DRefinement&);
|
||||||
|
|
||||||
|
//- Disallow default bitwise assignment
|
||||||
|
void operator=(const prismatic2DRefinement&);
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
// Protected Pure Virtual Member Functions
|
||||||
|
|
||||||
|
// Global topology modification functions (operate on whole polyMesh)
|
||||||
|
|
||||||
|
//- Set refinement instruction
|
||||||
|
virtual void setRefinementInstruction
|
||||||
|
(
|
||||||
|
polyTopoChange& ref
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Set unrefinement instruction
|
||||||
|
virtual void setUnrefinementInstruction
|
||||||
|
(
|
||||||
|
polyTopoChange& ref
|
||||||
|
) const;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("prismatic2DRefinement");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from dictionary
|
||||||
|
prismatic2DRefinement
|
||||||
|
(
|
||||||
|
const word& name,
|
||||||
|
const dictionary& dict,
|
||||||
|
const label index,
|
||||||
|
const polyTopoChanger& mme
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
|
||||||
|
virtual ~prismatic2DRefinement();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
// Edit
|
||||||
|
|
||||||
|
//- Set cells to refine given a list of refinement
|
||||||
|
// candidates. Refinement candidates are extended within the
|
||||||
|
// function due to possible 4:1 conflicts and specified number of
|
||||||
|
// buffer layers.
|
||||||
|
// Note: must be called BEFORE setSplitPointsToUnrefine
|
||||||
|
virtual void setCellsToRefine
|
||||||
|
(
|
||||||
|
const labelList& refinementCellCandidates
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Set split points to unrefine given a list of all mesh points
|
||||||
|
// that are candidates for unrefinement. Split points are
|
||||||
|
// determined as a subset of unrefinement candidates, avoiding
|
||||||
|
// splitting points of cells that are going to be refined at the
|
||||||
|
// same time and ensuring consistent unrefinement.
|
||||||
|
// Note: must be called AFTER setCellsToRefine
|
||||||
|
void setSplitPointsToUnrefine
|
||||||
|
(
|
||||||
|
const labelList& unrefinementPointCandidates
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
File diff suppressed because it is too large
Load diff
|
@ -22,23 +22,28 @@ 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::polyhedralRefinement
|
Foam::refinement
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Isotropic refinement of polyhedral cells using the mesh modifier engine
|
Abstract base class for adaptive mesh refinement using the mesh modifier
|
||||||
|
engine. The class provides common interface and functionalities for 3D
|
||||||
|
polyhedral refinement and 2D prismatic refinement.
|
||||||
|
|
||||||
Each polyhedral cell is split by the following procedure:
|
The common interface includes (pure virtuals) following member functions:
|
||||||
1. Adding points at the edge centre, face centre and cell centre,
|
- setCellsToRefine
|
||||||
2. Adding cells n cells where n is the number of points of the cell,
|
- setSplitPointsToUnrefine
|
||||||
3. Splitting each face into multiple faces going from:
|
- calcLevel0EdgeLength
|
||||||
existing corner point -> new edge centre point -> new face centre
|
|
||||||
point -> other new edge centre point (sharing the same corner point)
|
With a lot of ordinary protected member functions which are used by both
|
||||||
4. Adding internal faces going from:
|
derived classes.
|
||||||
new edge centre point -> new face centre point -> new cell centre
|
|
||||||
point -> other new face centre point (sharing the same edge)
|
Note: I've written it this way in order to avoid unnecesasry code
|
||||||
|
duplication, but I'm 99% sure that if someone else wants to write additional
|
||||||
|
refinement strategy (e.g. directional refinement) as derived class, the
|
||||||
|
interface will need to change.
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
polyhedralRefinement.C
|
refinement.C
|
||||||
|
|
||||||
Author
|
Author
|
||||||
Vuko Vukcevic, Wikki Ltd. All rights reserved.
|
Vuko Vukcevic, Wikki Ltd. All rights reserved.
|
||||||
|
@ -49,8 +54,8 @@ Notes
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifndef polyhedralRefinement_H
|
#ifndef refinement_H
|
||||||
#define polyhedralRefinement_H
|
#define refinement_H
|
||||||
|
|
||||||
#include "polyMeshModifier.H"
|
#include "polyMeshModifier.H"
|
||||||
#include "labelIOList.H"
|
#include "labelIOList.H"
|
||||||
|
@ -62,16 +67,16 @@ namespace Foam
|
||||||
{
|
{
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
/*---------------------------------------------------------------------------*\
|
||||||
Class polyhedralRefinement Declaration
|
Class refinement Declaration
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
class polyhedralRefinement
|
class refinement
|
||||||
:
|
:
|
||||||
public polyMeshModifier
|
public polyMeshModifier
|
||||||
{
|
{
|
||||||
public:
|
protected:
|
||||||
|
|
||||||
// Public enumeration for refinement status
|
// Protected enumeration for refinement status
|
||||||
enum refinementStatus
|
enum refinementStatus
|
||||||
{
|
{
|
||||||
UNREFINED = -1,
|
UNREFINED = -1,
|
||||||
|
@ -80,9 +85,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
private:
|
// Protected data
|
||||||
|
|
||||||
// Private data
|
|
||||||
|
|
||||||
//- Reference to polyMesh for easy access in helper functions
|
//- Reference to polyMesh for easy access in helper functions
|
||||||
const polyMesh& mesh_;
|
const polyMesh& mesh_;
|
||||||
|
@ -112,9 +115,6 @@ private:
|
||||||
// c) REFINED = +1 = cell is refined
|
// c) REFINED = +1 = cell is refined
|
||||||
mutable labelList refinementLevelIndicator_;
|
mutable labelList refinementLevelIndicator_;
|
||||||
|
|
||||||
//- Typical edge length between unrefined points
|
|
||||||
scalar level0EdgeLength_;
|
|
||||||
|
|
||||||
//- Face remover engine
|
//- Face remover engine
|
||||||
mutable removeFaces faceRemover_;
|
mutable removeFaces faceRemover_;
|
||||||
|
|
||||||
|
@ -132,21 +132,30 @@ private:
|
||||||
|
|
||||||
//- Number of buffer layers for unrefinement, controlling how far
|
//- Number of buffer layers for unrefinement, controlling how far
|
||||||
// the unrefinement region needs to be from current refinement
|
// the unrefinement region needs to be from current refinement
|
||||||
// region. Therefore, this should always be at least
|
// region
|
||||||
// nRefinementBufferLayers + 2 to avoid level inconsistencies
|
|
||||||
label nUnrefinementBufferLayers_;
|
label nUnrefinementBufferLayers_;
|
||||||
|
|
||||||
|
|
||||||
// Private Member Functions
|
// Protected Pure Virtual Member Functions
|
||||||
|
|
||||||
// Helper functions
|
// Global topology modification functions (operate on whole polyMesh)
|
||||||
|
|
||||||
//- Get least cell level such that the face has at least three
|
//- Set refinement instruction
|
||||||
// points smaller than the level
|
virtual void setRefinementInstruction
|
||||||
label getAnchorLevel(const label faceI) const;
|
(
|
||||||
|
polyTopoChange& ref
|
||||||
|
) const = 0;
|
||||||
|
|
||||||
//- Calculate level0EdgeLength_ (constructor helper)
|
//- Set unrefinement instruction
|
||||||
void calcLevel0EdgeLength();
|
virtual void setUnrefinementInstruction
|
||||||
|
(
|
||||||
|
polyTopoChange& ref
|
||||||
|
) const = 0;
|
||||||
|
|
||||||
|
|
||||||
|
// Protected Member Functions
|
||||||
|
|
||||||
|
// Useful helper functions used by derived classes
|
||||||
|
|
||||||
//- Set file instance for cellLevel_ and pointLevel_
|
//- Set file instance for cellLevel_ and pointLevel_
|
||||||
void setInstance(const fileName& inst) const;
|
void setInstance(const fileName& inst) const;
|
||||||
|
@ -158,31 +167,6 @@ private:
|
||||||
void extendMarkedCellsAcrossPoints(boolList& markedCell) const;
|
void extendMarkedCellsAcrossPoints(boolList& markedCell) const;
|
||||||
|
|
||||||
|
|
||||||
// Global topology modification functions (operate on whole polyMesh)
|
|
||||||
// and directly use local topology modification functions below
|
|
||||||
|
|
||||||
//- Refine polyhedral cells. All cellsToRefine_ cells will be split
|
|
||||||
// into n cells where n is the number of points per cell.
|
|
||||||
// Guarantees that the 0th element is the original cell label.
|
|
||||||
// Mapping:
|
|
||||||
// -split cells: n new ones get added from original
|
|
||||||
// -split faces: original gets modified; n - 1 new ones get added
|
|
||||||
// from original
|
|
||||||
// -added internal faces: added from original cell face (if
|
|
||||||
// that was internal) or created out-of-nothing (so will not
|
|
||||||
// get mapped!). Note: could make this inflate from point but
|
|
||||||
// that will allocate interpolation.
|
|
||||||
// -points added to split edge: added from edge start()
|
|
||||||
// -midpoints added: added from cellPoints[0].
|
|
||||||
void setPolyhedralRefinement(polyTopoChange& ref) const;
|
|
||||||
|
|
||||||
//- Remove some of the previously performed refinement. Uses
|
|
||||||
// splitPointLabels_ to determine the unrefinement.
|
|
||||||
// All n pointCells of a split point will be combined into
|
|
||||||
// the lowest numbered cell of those n.
|
|
||||||
void setPolyhedralUnrefinement(polyTopoChange& ref) const;
|
|
||||||
|
|
||||||
|
|
||||||
// Local topology modification functions (operate on cells/faces)
|
// Local topology modification functions (operate on cells/faces)
|
||||||
|
|
||||||
//- Adds a face on top of existing faceI. Reverses if nessecary
|
//- Adds a face on top of existing faceI. Reverses if nessecary
|
||||||
|
@ -217,46 +201,9 @@ private:
|
||||||
const label nei
|
const label nei
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Create all internal faces of split cellI into n cells where n is the
|
|
||||||
// number of cell points
|
|
||||||
void createInternalFaces
|
|
||||||
(
|
|
||||||
const labelListList& cellAnchorPoints,
|
|
||||||
const labelListList& cellAddedCells,
|
|
||||||
const labelList& cellMidPoint,
|
|
||||||
const labelList& faceMidPoint,
|
|
||||||
const labelList& faceAnchorLevel,
|
|
||||||
const labelList& edgeMidPoint,
|
|
||||||
const label cellI,
|
|
||||||
polyTopoChange& ref
|
|
||||||
) const;
|
|
||||||
|
|
||||||
|
|
||||||
// Topological change helper functions
|
// Topological change helper functions
|
||||||
|
|
||||||
//- Get cell added to point of cellI (if any)
|
|
||||||
label getAnchorCell
|
|
||||||
(
|
|
||||||
const labelListList& cellAnchorPoints,
|
|
||||||
const labelListList& cellAddedCells,
|
|
||||||
const label cellI,
|
|
||||||
const label faceI,
|
|
||||||
const label pointI
|
|
||||||
) const;
|
|
||||||
|
|
||||||
//- Set new owner and neighbour (in unspecified order) of pointI
|
|
||||||
// on faceI
|
|
||||||
void setNewFaceNeighbours
|
|
||||||
(
|
|
||||||
const labelListList& cellAnchorPoints,
|
|
||||||
const labelListList& cellAddedCells,
|
|
||||||
const label faceI,
|
|
||||||
const label pointI,
|
|
||||||
|
|
||||||
label& own,
|
|
||||||
label& nei
|
|
||||||
) const;
|
|
||||||
|
|
||||||
//- Store vertices from startFp up to face split point.
|
//- Store vertices from startFp up to face split point.
|
||||||
// Used when splitting face into n faces where n is the number of
|
// Used when splitting face into n faces where n is the number of
|
||||||
// points in a face (or number of edges)
|
// points in a face (or number of edges)
|
||||||
|
@ -292,45 +239,6 @@ private:
|
||||||
const label anchorLevel
|
const label anchorLevel
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
//- Find index of point with wantedLevel, starting from fp
|
|
||||||
label findLevel
|
|
||||||
(
|
|
||||||
const face& f,
|
|
||||||
const label startFp,
|
|
||||||
const bool searchForward,
|
|
||||||
const label wantedLevel
|
|
||||||
) const;
|
|
||||||
|
|
||||||
//- Store in maps correspondence from midpoint to anchors and
|
|
||||||
// faces. Used when creating internal faces
|
|
||||||
label storeMidPointInfo
|
|
||||||
(
|
|
||||||
const labelListList& cellAnchorPoints,
|
|
||||||
const labelListList& cellAddedCells,
|
|
||||||
const labelList& cellMidPoint,
|
|
||||||
const labelList& edgeMidPoint,
|
|
||||||
const label cellI,
|
|
||||||
const label faceI,
|
|
||||||
const bool faceOrder,
|
|
||||||
const label midPointI,
|
|
||||||
const label anchorPointI,
|
|
||||||
const label faceMidPointI,
|
|
||||||
|
|
||||||
Map<edge>& midPointToAnchors,
|
|
||||||
Map<edge>& midPointToFaceMids,
|
|
||||||
polyTopoChange& ref
|
|
||||||
) const;
|
|
||||||
|
|
||||||
//- If p0 and p1 are existing vertices check if edge is split and insert
|
|
||||||
// splitPoint. Used with storing mid point
|
|
||||||
void insertEdgeSplit
|
|
||||||
(
|
|
||||||
const labelList& edgeMidPoint,
|
|
||||||
const label p0,
|
|
||||||
const label p1,
|
|
||||||
dynamicLabelList& verts
|
|
||||||
) const;
|
|
||||||
|
|
||||||
|
|
||||||
// Debug functions
|
// Debug functions
|
||||||
|
|
||||||
|
@ -379,22 +287,22 @@ private:
|
||||||
// Copy control
|
// Copy control
|
||||||
|
|
||||||
//- Disallow default bitwise copy construct
|
//- Disallow default bitwise copy construct
|
||||||
polyhedralRefinement(const polyhedralRefinement&);
|
refinement(const refinement&);
|
||||||
|
|
||||||
//- Disallow default bitwise assignment
|
//- Disallow default bitwise assignment
|
||||||
void operator=(const polyhedralRefinement&);
|
void operator=(const refinement&);
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
TypeName("polyhedralRefinement");
|
TypeName("refinement");
|
||||||
|
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from dictionary
|
//- Construct from dictionary
|
||||||
polyhedralRefinement
|
refinement
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const dictionary& dict,
|
const dictionary& dict,
|
||||||
|
@ -405,7 +313,7 @@ public:
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
|
|
||||||
virtual ~polyhedralRefinement();
|
virtual ~refinement();
|
||||||
|
|
||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
||||||
|
@ -422,12 +330,6 @@ public:
|
||||||
return pointLevel_;
|
return pointLevel_;
|
||||||
}
|
}
|
||||||
|
|
||||||
//- Typical edge length between unrefined points
|
|
||||||
scalar level0EdgeLength() const
|
|
||||||
{
|
|
||||||
return level0EdgeLength_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Edit
|
// Edit
|
||||||
|
|
||||||
|
@ -436,7 +338,10 @@ public:
|
||||||
// function due to possible 4:1 conflicts and specified number of
|
// function due to possible 4:1 conflicts and specified number of
|
||||||
// buffer layers.
|
// buffer layers.
|
||||||
// Note: must be called BEFORE setSplitPointsToUnrefine
|
// Note: must be called BEFORE setSplitPointsToUnrefine
|
||||||
void setCellsToRefine(const labelList& refinementCellCandidates);
|
virtual void setCellsToRefine
|
||||||
|
(
|
||||||
|
const labelList& refinementCellCandidates
|
||||||
|
) = 0;
|
||||||
|
|
||||||
//- Set split points to unrefine given a list of all mesh points
|
//- Set split points to unrefine given a list of all mesh points
|
||||||
// that are candidates for unrefinement. Split points are
|
// that are candidates for unrefinement. Split points are
|
||||||
|
@ -444,10 +349,10 @@ public:
|
||||||
// splitting points of cells that are going to be refined at the
|
// splitting points of cells that are going to be refined at the
|
||||||
// same time and ensuring consistent unrefinement.
|
// same time and ensuring consistent unrefinement.
|
||||||
// Note: must be called AFTER setCellsToRefine
|
// Note: must be called AFTER setCellsToRefine
|
||||||
void setSplitPointsToUnrefine
|
virtual void setSplitPointsToUnrefine
|
||||||
(
|
(
|
||||||
const labelList& unrefinementPointCandidates
|
const labelList& unrefinementPointCandidates
|
||||||
);
|
) = 0;
|
||||||
|
|
||||||
|
|
||||||
// Inherited interface from polyMeshModifier
|
// Inherited interface from polyMeshModifier
|
|
@ -18,6 +18,7 @@ dynamicPolyRefinementFvMesh/refinementSelection/fieldBoundsRefinement/fieldBound
|
||||||
dynamicPolyRefinementFvMesh/refinementSelection/minCellVolumeRefinement/minCellVolumeRefinement.C
|
dynamicPolyRefinementFvMesh/refinementSelection/minCellVolumeRefinement/minCellVolumeRefinement.C
|
||||||
dynamicPolyRefinementFvMesh/refinementSelection/minCellSizeRefinement/minCellSizeRefinement.C
|
dynamicPolyRefinementFvMesh/refinementSelection/minCellSizeRefinement/minCellSizeRefinement.C
|
||||||
dynamicPolyRefinementFvMesh/refinementSelection/minPatchDistanceRefinement/minPatchDistanceRefinement.C
|
dynamicPolyRefinementFvMesh/refinementSelection/minPatchDistanceRefinement/minPatchDistanceRefinement.C
|
||||||
|
dynamicPolyRefinementFvMesh/refinementSelection/protectedInitialRefinement/protectedInitialRefinement.C
|
||||||
dynamicPolyRefinementFvMesh/refinementSelection/compositeRefinementSelection/compositeRefinementSelection.C
|
dynamicPolyRefinementFvMesh/refinementSelection/compositeRefinementSelection/compositeRefinementSelection.C
|
||||||
|
|
||||||
LIB = $(FOAM_LIBBIN)/libtopoChangerFvMesh
|
LIB = $(FOAM_LIBBIN)/libtopoChangerFvMesh
|
||||||
|
|
|
@ -26,6 +26,7 @@ License
|
||||||
#include "dynamicPolyRefinementFvMesh.H"
|
#include "dynamicPolyRefinementFvMesh.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
#include "refinementSelection.H"
|
#include "refinementSelection.H"
|
||||||
|
#include "prismatic2DRefinement.H"
|
||||||
#include "polyhedralRefinement.H"
|
#include "polyhedralRefinement.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
@ -110,28 +111,90 @@ Foam::dynamicPolyRefinementFvMesh::dynamicPolyRefinementFvMesh
|
||||||
),
|
),
|
||||||
curTimeIndex_(-1),
|
curTimeIndex_(-1),
|
||||||
|
|
||||||
refinementSelectionPtr_(refinementSelection::New(*this, refinementDict_))
|
// Note: initialize refinement selection algorithm after the refinement
|
||||||
|
// polyMeshModifier has been set. It is possible that the selection
|
||||||
|
// algorithm needs cellLevel and pointLevel (see e.g.
|
||||||
|
// protectedInitialRefinement)
|
||||||
|
refinementSelectionPtr_()
|
||||||
{
|
{
|
||||||
// Add the topology modifier engine
|
// Only one topo changer engine
|
||||||
Info<< "Adding polyhedralRefinement topology modifier" << endl;
|
|
||||||
|
|
||||||
topoChanger_.setSize(1);
|
topoChanger_.setSize(1);
|
||||||
topoChanger_.set
|
|
||||||
(
|
// Get number of valid geometric dimensions
|
||||||
0,
|
const label nGeometricDirs = this->nGeometricD();
|
||||||
new polyhedralRefinement
|
|
||||||
(
|
switch(nGeometricDirs)
|
||||||
"polyhedralRefinement",
|
{
|
||||||
refinementDict_,
|
case 3:
|
||||||
0,
|
// Add the polyhedralRefinement engine for 3D isotropic refinement
|
||||||
topoChanger_
|
Info<< "3D case detected. "
|
||||||
)
|
<< "Adding polyhedralRefinement topology modifier" << endl;
|
||||||
);
|
topoChanger_.set
|
||||||
|
(
|
||||||
|
0,
|
||||||
|
new polyhedralRefinement
|
||||||
|
(
|
||||||
|
"polyhedralRefinement",
|
||||||
|
refinementDict_,
|
||||||
|
0,
|
||||||
|
topoChanger_
|
||||||
|
)
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
// Add the prismatic2DRefinement engine for 2D isotropic refinement
|
||||||
|
Info<< "2D case detected. "
|
||||||
|
<< "Adding prismatic2DRefinement topology modifier" << endl;
|
||||||
|
topoChanger_.set
|
||||||
|
(
|
||||||
|
0,
|
||||||
|
new prismatic2DRefinement
|
||||||
|
(
|
||||||
|
"prismatic2DRefinement",
|
||||||
|
refinementDict_,
|
||||||
|
0,
|
||||||
|
topoChanger_
|
||||||
|
)
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
FatalErrorIn
|
||||||
|
(
|
||||||
|
"dynamicPolyRefinementFvMesh::dynamicPolyRefinementFvMesh"
|
||||||
|
"\n("
|
||||||
|
"\n const IOobject& io,"
|
||||||
|
"\n const word subDictName"
|
||||||
|
"\n)"
|
||||||
|
) << "1D case detected. No valid refinement strategy is"
|
||||||
|
<< " available for 1D cases."
|
||||||
|
<< abort(FatalError);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
FatalErrorIn
|
||||||
|
(
|
||||||
|
"dynamicPolyRefinementFvMesh::dynamicPolyRefinementFvMesh"
|
||||||
|
"\n("
|
||||||
|
"\n const IOobject& io,"
|
||||||
|
"\n const word subDictName"
|
||||||
|
"\n)"
|
||||||
|
) << "Invalid number of geometric meshes detected: "
|
||||||
|
<< nGeometricDirs
|
||||||
|
<< nl << "It appears that this mesh is neither 1D, 2D or 3D."
|
||||||
|
<< nl << " the mesh."
|
||||||
|
<< abort(FatalError);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// Write mesh and modifiers
|
// Write mesh and modifiers
|
||||||
topoChanger_.writeOpt() = IOobject::AUTO_WRITE;
|
topoChanger_.writeOpt() = IOobject::AUTO_WRITE;
|
||||||
topoChanger_.write();
|
topoChanger_.write();
|
||||||
write();
|
write();
|
||||||
|
|
||||||
|
// Initialize refinement selection algorithm after modifiers
|
||||||
|
refinementSelectionPtr_ = refinementSelection::New(*this, refinementDict_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -185,9 +248,8 @@ bool Foam::dynamicPolyRefinementFvMesh::update()
|
||||||
// time step
|
// time step
|
||||||
curTimeIndex_ = time().timeIndex();
|
curTimeIndex_ = time().timeIndex();
|
||||||
|
|
||||||
// Get reference to polyhedralRefinement polyMeshModifier
|
// Get reference to base class refinement polyMeshModifier
|
||||||
polyhedralRefinement& polyRefModifier =
|
refinement& refModifier = refCast<refinement>(topoChanger_[0]);
|
||||||
refCast<polyhedralRefinement>(topoChanger_[0]);
|
|
||||||
|
|
||||||
// Create empty list for refinement candidates
|
// Create empty list for refinement candidates
|
||||||
labelList refCandidates;
|
labelList refCandidates;
|
||||||
|
@ -208,9 +270,9 @@ bool Foam::dynamicPolyRefinementFvMesh::update()
|
||||||
Info<< "Skipping refinement for this time-step..." << endl;
|
Info<< "Skipping refinement for this time-step..." << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set cells to refine. Note: polyhedralRefinement ensures that face and
|
// Set cells to refine. Note: refinement needs to make sure that face
|
||||||
// point consistent refinement is performed
|
// and point consistent refinement is performed
|
||||||
polyRefModifier.setCellsToRefine(refCandidates);
|
refModifier.setCellsToRefine(refCandidates);
|
||||||
|
|
||||||
// Create empty list for unrefinement candidates
|
// Create empty list for unrefinement candidates
|
||||||
labelList unrefCandidates;
|
labelList unrefCandidates;
|
||||||
|
@ -233,10 +295,10 @@ bool Foam::dynamicPolyRefinementFvMesh::update()
|
||||||
|
|
||||||
// Set split points to unrefine around.
|
// Set split points to unrefine around.
|
||||||
// Notes:
|
// Notes:
|
||||||
// 1. polyhedralRefinement ensures that only a consistent set of split
|
// 1. refinement needs to make sure that only a consistent set of split
|
||||||
// points is used for unrefinement
|
// points is used for unrefinement
|
||||||
// 2. Must be called after polyhedralRefinement::setCellsToRefine
|
// 2. Must be called after refinement::setCellsToRefine
|
||||||
polyRefModifier.setSplitPointsToUnrefine(unrefCandidates);
|
refModifier.setSplitPointsToUnrefine(unrefCandidates);
|
||||||
|
|
||||||
// Activate the polyhedral refinement engine if there are some cells to
|
// Activate the polyhedral refinement engine if there are some cells to
|
||||||
// refine or there are some split points to unrefine around
|
// refine or there are some split points to unrefine around
|
||||||
|
@ -249,11 +311,11 @@ bool Foam::dynamicPolyRefinementFvMesh::update()
|
||||||
|
|
||||||
if (enableTopoChange)
|
if (enableTopoChange)
|
||||||
{
|
{
|
||||||
polyRefModifier.enable();
|
refModifier.enable();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
polyRefModifier.disable();
|
refModifier.disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Perform refinement and unrefinement in one go
|
// Perform refinement and unrefinement in one go
|
||||||
|
|
|
@ -25,7 +25,11 @@ Class
|
||||||
Foam::dynamicPolyRefinementFvMesh
|
Foam::dynamicPolyRefinementFvMesh
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Adaptive mesh refinement for arbitrary polyhedral cells.
|
Adaptive mesh refinement for isotropic refinement of arbitrary polyhedral
|
||||||
|
cells in 3D and arbitrary prismatic cells in 2D.
|
||||||
|
Automatically switches between:
|
||||||
|
- 3D refinement uses polyhedralRefinement engine
|
||||||
|
- 2D refinement uses prismatic2DRefinement engine
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
dynamicPolyRefinementFvMesh.C
|
dynamicPolyRefinementFvMesh.C
|
||||||
|
@ -35,6 +39,7 @@ Author
|
||||||
|
|
||||||
Notes
|
Notes
|
||||||
Generalisation and refactorisation of dynamicRefineMesh for polyhedral cells
|
Generalisation and refactorisation of dynamicRefineMesh for polyhedral cells
|
||||||
|
in 3D and prismatic cells in 2D.
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,228 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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/>.
|
||||||
|
|
||||||
|
Author
|
||||||
|
Vuko Vukcevic, Wikki Ltd. All rights reserved.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "protectedInitialRefinement.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
#include "zeroGradientFvPatchFields.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
defineTypeNameAndDebug(protectedInitialRefinement, 0);
|
||||||
|
addToRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
refinementSelection,
|
||||||
|
protectedInitialRefinement,
|
||||||
|
dictionary
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::tmp<Foam::volScalarField>
|
||||||
|
Foam::protectedInitialRefinement::cellLevelAsField() const
|
||||||
|
{
|
||||||
|
// Get cell level
|
||||||
|
const labelIOList& cLevel = mesh().lookupObject<labelIOList>("cellLevel");
|
||||||
|
|
||||||
|
// Create cell level field as volScalarField
|
||||||
|
tmp<volScalarField> tCellLevelField
|
||||||
|
(
|
||||||
|
new volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"cellLevel",
|
||||||
|
mesh().time().timeName(),
|
||||||
|
mesh(),
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::NO_WRITE
|
||||||
|
),
|
||||||
|
mesh(),
|
||||||
|
dimensionedScalar("zero", dimless, 0.0),
|
||||||
|
zeroGradientFvPatchScalarField::typeName
|
||||||
|
)
|
||||||
|
);
|
||||||
|
volScalarField& cellLevelField = tCellLevelField();
|
||||||
|
scalarField& cellLevelFieldIn = cellLevelField.internalField();
|
||||||
|
|
||||||
|
// Set the field
|
||||||
|
forAll (cLevel, cellI)
|
||||||
|
{
|
||||||
|
cellLevelFieldIn[cellI] = cLevel[cellI];
|
||||||
|
}
|
||||||
|
cellLevelField.correctBoundaryConditions();
|
||||||
|
|
||||||
|
return tCellLevelField;
|
||||||
|
}
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::protectedInitialRefinement::protectedInitialRefinement
|
||||||
|
(
|
||||||
|
const fvMesh& mesh,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
refinementSelection(mesh, dict),
|
||||||
|
initialCellLevel_
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"initialCellLevel",
|
||||||
|
mesh.time().timeName(),
|
||||||
|
mesh,
|
||||||
|
IOobject::READ_IF_PRESENT,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
cellLevelAsField()()
|
||||||
|
)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor* * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::protectedInitialRefinement::~protectedInitialRefinement()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * Public Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::Xfer<Foam::labelList>
|
||||||
|
Foam::protectedInitialRefinement::refinementCellCandidates() const
|
||||||
|
{
|
||||||
|
// All cells are candidates for refinement
|
||||||
|
labelList refinementCandidates(mesh().nCells());
|
||||||
|
forAll (refinementCandidates, cellI)
|
||||||
|
{
|
||||||
|
refinementCandidates[cellI] = cellI;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print out some information
|
||||||
|
Info<< "Selection algorithm " << type() << " selected "
|
||||||
|
<< returnReduce(refinementCandidates.size(), sumOp<label>())
|
||||||
|
<< " (all) cells as refinement candidates."
|
||||||
|
<< endl;
|
||||||
|
|
||||||
|
// Return the list in the Xfer container to prevent copying
|
||||||
|
return refinementCandidates.xfer();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::Xfer<Foam::labelList>
|
||||||
|
Foam::protectedInitialRefinement::unrefinementPointCandidates() const
|
||||||
|
{
|
||||||
|
// Create mark-up field for points that are found on initially refined cells
|
||||||
|
// Note: this can be done more intelligently by either cacheing until load
|
||||||
|
// balancing actually occurs or holding pointLevel as data member and
|
||||||
|
// updating it on load balancing. The overall overhead compared to AMR and
|
||||||
|
// DLB is really small, so there's no need to worry about this yet.
|
||||||
|
// VV, 10/July/2018
|
||||||
|
boolList pointsOnRefinedCells(mesh().nPoints(), false);
|
||||||
|
|
||||||
|
// Get initial cell level and mesh data
|
||||||
|
const scalarField& initialCellLevelIn = initialCellLevel_.internalField();
|
||||||
|
const labelListList& meshCellPoints = mesh().cellPoints();
|
||||||
|
|
||||||
|
// Loop through all cells and count number of protected points
|
||||||
|
label nProtectedPoints = 0;
|
||||||
|
|
||||||
|
// Get current cell level
|
||||||
|
const labelIOList& curCellLevel =
|
||||||
|
mesh().lookupObject<labelIOList>("cellLevel");
|
||||||
|
|
||||||
|
forAll (initialCellLevelIn, cellI)
|
||||||
|
{
|
||||||
|
const scalar& cl = initialCellLevelIn[cellI];
|
||||||
|
const scalar curcl = curCellLevel[cellI];
|
||||||
|
|
||||||
|
if ((cl > SMALL) && equal(cl, curcl))
|
||||||
|
{
|
||||||
|
// Cell has been refined during meshing and the original level is
|
||||||
|
// equal to the current level, mark all of its points
|
||||||
|
const labelList& curCellPoints = meshCellPoints[cellI];
|
||||||
|
|
||||||
|
forAll (curCellPoints, i)
|
||||||
|
{
|
||||||
|
// Get marker for this point
|
||||||
|
bool& ptOnRefCell = pointsOnRefinedCells[curCellPoints[i]];
|
||||||
|
|
||||||
|
if (!ptOnRefCell)
|
||||||
|
{
|
||||||
|
// This points has not been marked yet, mark it and
|
||||||
|
// increment the counter for protected points
|
||||||
|
ptOnRefCell = true;
|
||||||
|
++nProtectedPoints;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (cl > (curcl + SMALL))
|
||||||
|
{
|
||||||
|
FatalErrorIn
|
||||||
|
(
|
||||||
|
"Xfer<labelList>\n"
|
||||||
|
"protectedInitialRefinement::unrefinementPointCandidates()"
|
||||||
|
" const"
|
||||||
|
) << "Detected a cell with initial refinement level greater"
|
||||||
|
<< " than current refinement level." << nl
|
||||||
|
<< "cellI: " << cellI << nl
|
||||||
|
<< "current level: " << curcl << nl
|
||||||
|
<< "initial level: " << cl << nl
|
||||||
|
<< "This should not happen."
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create the list for unrefinement candidates
|
||||||
|
labelList unrefinementCandidates(mesh().nPoints() - nProtectedPoints);
|
||||||
|
label nUnrefPoints = 0;
|
||||||
|
|
||||||
|
forAll (pointsOnRefinedCells, pointI)
|
||||||
|
{
|
||||||
|
if (!pointsOnRefinedCells[pointI])
|
||||||
|
{
|
||||||
|
// This point is an unrefinement candidate, set it and increment
|
||||||
|
unrefinementCandidates[nUnrefPoints++] = pointI;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print out some information
|
||||||
|
Info<< "Selection algorithm " << type() << " selected "
|
||||||
|
<< returnReduce(unrefinementCandidates.size(), sumOp<label>())
|
||||||
|
<< " points as unrefinement candidates."
|
||||||
|
<< endl;
|
||||||
|
|
||||||
|
// Return the list in the Xfer container to prevent copying
|
||||||
|
return unrefinementCandidates.xfer();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,127 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::protectedInitialRefinement
|
||||||
|
|
||||||
|
Description
|
||||||
|
This refinement strategy is just a protection to avoid unrefining cells that
|
||||||
|
are refined during the snappyHexMesh meshing process. It's intended use is
|
||||||
|
alongside some other refinement strategy as a part of a composite scheme.
|
||||||
|
Therefore: refinementCellCandidates returns all cells as refinement
|
||||||
|
candidates, while unrefinementPointCandidates returns all points that don't
|
||||||
|
touch any of the initially refined cells.
|
||||||
|
|
||||||
|
Since snappyHexMesh writes down cellLevel and pointLevel, cells refined in
|
||||||
|
during meshing could be unrefined, but this is not what we would like to
|
||||||
|
achieve (after all, if we have included refinement regions in meshing, then
|
||||||
|
we probably had a good reason for it).
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
protectedInitialRefinement.C
|
||||||
|
|
||||||
|
Author
|
||||||
|
Vuko Vukcevic, Wikki Ltd. All rights reserved.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef protectedInitialRefinement_H
|
||||||
|
#define protectedInitialRefinement_H
|
||||||
|
|
||||||
|
#include "refinementSelection.H"
|
||||||
|
#include "volFields.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class protectedInitialRefinement Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class protectedInitialRefinement
|
||||||
|
:
|
||||||
|
public refinementSelection
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Initial cellLevel as volScalarField in order to simplify data
|
||||||
|
// transfer for dynamic load balancing
|
||||||
|
volScalarField initialCellLevel_;
|
||||||
|
|
||||||
|
|
||||||
|
// Private Member Functions
|
||||||
|
|
||||||
|
// Copy control
|
||||||
|
|
||||||
|
//- Disallow default bitwise copy construct
|
||||||
|
protectedInitialRefinement(const protectedInitialRefinement&);
|
||||||
|
|
||||||
|
//- Disallow default bitwise assignment
|
||||||
|
void operator=(const protectedInitialRefinement&);
|
||||||
|
|
||||||
|
|
||||||
|
// Constructor helper
|
||||||
|
|
||||||
|
//- Create and return volScalarField from cellLevel
|
||||||
|
tmp<volScalarField> cellLevelAsField() const;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("protectedInitialRefinement");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from components
|
||||||
|
protectedInitialRefinement(const fvMesh& mesh, const dictionary& dict);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~protectedInitialRefinement();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
// Selection of refinement/unrefinement candidates
|
||||||
|
|
||||||
|
//- Return transferable list of cells to refine
|
||||||
|
virtual Xfer<labelList> refinementCellCandidates() const;
|
||||||
|
|
||||||
|
//- Return transferable list of split points to unrefine
|
||||||
|
virtual Xfer<labelList> unrefinementPointCandidates() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -144,7 +144,7 @@ public:
|
||||||
//- Return reference to the fluctuation scale to allow adjustment
|
//- Return reference to the fluctuation scale to allow adjustment
|
||||||
graph& timeData()
|
graph& timeData()
|
||||||
{
|
{
|
||||||
return timeDataPtr_;
|
return timeDataPtr_();
|
||||||
}
|
}
|
||||||
|
|
||||||
const engineTime& engineDB() const
|
const engineTime& engineDB() const
|
||||||
|
|
|
@ -306,6 +306,7 @@ list(APPEND SOURCES
|
||||||
${interpolation}/interpolationCellPointFace/makeInterpolationCellPointFace.C
|
${interpolation}/interpolationCellPointFace/makeInterpolationCellPointFace.C
|
||||||
${interpolation}/interpolationCellPointWallModified/cellPointWeightWallModified/cellPointWeightWallModified.C
|
${interpolation}/interpolationCellPointWallModified/cellPointWeightWallModified/cellPointWeightWallModified.C
|
||||||
${interpolation}/interpolationCellPointWallModified/makeInterpolationCellPointWallModified.C
|
${interpolation}/interpolationCellPointWallModified/makeInterpolationCellPointWallModified.C
|
||||||
|
${interpolation}/interpolationPointMVC/interpolationPointMVC.C
|
||||||
)
|
)
|
||||||
|
|
||||||
set(volPointInterpolation interpolation/volPointInterpolation)
|
set(volPointInterpolation interpolation/volPointInterpolation)
|
||||||
|
|
|
@ -239,6 +239,8 @@ $(interpolation)/interpolationCellPoint/makeInterpolationCellPoint.C
|
||||||
$(interpolation)/interpolationCellPointFace/makeInterpolationCellPointFace.C
|
$(interpolation)/interpolationCellPointFace/makeInterpolationCellPointFace.C
|
||||||
$(interpolation)/interpolationCellPointWallModified/cellPointWeightWallModified/cellPointWeightWallModified.C
|
$(interpolation)/interpolationCellPointWallModified/cellPointWeightWallModified/cellPointWeightWallModified.C
|
||||||
$(interpolation)/interpolationCellPointWallModified/makeInterpolationCellPointWallModified.C
|
$(interpolation)/interpolationCellPointWallModified/makeInterpolationCellPointWallModified.C
|
||||||
|
$(interpolation)/interpolationPointMVC/pointMVCWeight.C
|
||||||
|
$(interpolation)/interpolationPointMVC/makeInterpolationPointMVC.C
|
||||||
|
|
||||||
volPointInterpolation = interpolation/volPointInterpolation
|
volPointInterpolation = interpolation/volPointInterpolation
|
||||||
$(volPointInterpolation)/pointPatchInterpolation/pointPatchInterpolation.C
|
$(volPointInterpolation)/pointPatchInterpolation/pointPatchInterpolation.C
|
||||||
|
|
|
@ -212,27 +212,27 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
//- Return inlet-outlet treatment switch
|
//- Return inlet-outlet treatment switch
|
||||||
bool inletOutlet() const
|
Switch inletOutlet() const
|
||||||
{
|
{
|
||||||
return inletOutlet_;
|
return inletOutlet_;
|
||||||
}
|
}
|
||||||
|
|
||||||
//- Return reference to inlet-outlet treatment switch
|
//- Return reference to inlet-outlet treatment switch
|
||||||
// to allow adjustment
|
// to allow adjustment
|
||||||
bool& inletOutlet()
|
Switch& inletOutlet()
|
||||||
{
|
{
|
||||||
return inletOutlet_;
|
return inletOutlet_;
|
||||||
}
|
}
|
||||||
|
|
||||||
//- Return supercritical outlet treatment switch
|
//- Return supercritical outlet treatment switch
|
||||||
bool correctSupercritical() const
|
Switch correctSupercritical() const
|
||||||
{
|
{
|
||||||
return correctSupercritical_;
|
return correctSupercritical_;
|
||||||
}
|
}
|
||||||
|
|
||||||
//- Return reference to supercritical treatment switch
|
//- Return reference to supercritical treatment switch
|
||||||
// to allow adjustment
|
// to allow adjustment
|
||||||
bool& correctSupercritical()
|
Switch& correctSupercritical()
|
||||||
{
|
{
|
||||||
return correctSupercritical_;
|
return correctSupercritical_;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "interpolationPointMVC.H"
|
||||||
|
#include "volPointInterpolation.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
Foam::interpolationPointMVC<Type>::interpolationPointMVC
|
||||||
|
(
|
||||||
|
const GeometricField<Type, fvPatchField, volMesh>& psi
|
||||||
|
)
|
||||||
|
:
|
||||||
|
interpolation<Type>(psi),
|
||||||
|
psip_(volPointInterpolation::New(psi.mesh()).interpolate(psi))
|
||||||
|
/*
|
||||||
|
psip_
|
||||||
|
(
|
||||||
|
volPointInterpolation::New(psi.mesh()).interpolate
|
||||||
|
(
|
||||||
|
psi,
|
||||||
|
"volPointInterpolate(" + psi.name() + ')',
|
||||||
|
true // use cache
|
||||||
|
)
|
||||||
|
)
|
||||||
|
*/
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,112 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::interpolationPointMVC
|
||||||
|
|
||||||
|
Description
|
||||||
|
Given cell centre values interpolates to vertices and uses these to
|
||||||
|
do a Mean Value Coordinates interpolation.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef interpolationPointMVC_H
|
||||||
|
#define interpolationPointMVC_H
|
||||||
|
|
||||||
|
#include "interpolation.H"
|
||||||
|
#include "pointMVCWeight.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class interpolationPointMVC Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
class interpolationPointMVC
|
||||||
|
:
|
||||||
|
public interpolation<Type>
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
|
||||||
|
// Protected data
|
||||||
|
|
||||||
|
//- Interpolated volfield
|
||||||
|
const GeometricField<Type, pointPatchField, pointMesh> psip_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("pointMVC");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from components
|
||||||
|
interpolationPointMVC
|
||||||
|
(
|
||||||
|
const GeometricField<Type, fvPatchField, volMesh>& psi
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Inherit interpolate from interpolation
|
||||||
|
using interpolation<Type>::interpolate;
|
||||||
|
|
||||||
|
//- Interpolate field for the given cellPointWeight
|
||||||
|
inline Type interpolate(const pointMVCWeight& cpw) const;
|
||||||
|
|
||||||
|
//- Interpolate field to the given point in the given cell
|
||||||
|
inline Type interpolate
|
||||||
|
(
|
||||||
|
const vector& position,
|
||||||
|
const label celli,
|
||||||
|
const label facei = -1
|
||||||
|
) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#include "interpolationPointMVCI.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#ifdef NoRepository
|
||||||
|
#include "interpolationPointMVC.C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
inline Type Foam::interpolationPointMVC<Type>::interpolate
|
||||||
|
(
|
||||||
|
const pointMVCWeight& cpw
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return cpw.interpolate(psip_);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
inline Type Foam::interpolationPointMVC<Type>::interpolate
|
||||||
|
(
|
||||||
|
const vector& position,
|
||||||
|
const label celli,
|
||||||
|
const label facei
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return interpolate
|
||||||
|
(
|
||||||
|
pointMVCWeight(this->pMesh_, position, celli, facei)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,35 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "interpolationPointMVC.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
makeInterpolation(interpolationPointMVC);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,324 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "pointMVCWeight.H"
|
||||||
|
#include "polyMesh.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::debug::debugSwitch
|
||||||
|
Foam::pointMVCWeight::debug
|
||||||
|
(
|
||||||
|
"pointMVCWeight",
|
||||||
|
0
|
||||||
|
);
|
||||||
|
Foam::scalar Foam::pointMVCWeight::tol(SMALL);
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
|
void Foam::pointMVCWeight::calcWeights
|
||||||
|
(
|
||||||
|
const Map<label>& toLocal,
|
||||||
|
const face& f,
|
||||||
|
const DynamicList<point>& u,
|
||||||
|
const scalarField& dist,
|
||||||
|
scalarField& weights
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
weights.setSize(toLocal.size());
|
||||||
|
weights = 0.0;
|
||||||
|
|
||||||
|
scalarField theta(f.size());
|
||||||
|
|
||||||
|
// recompute theta, the theta computed previously are not robust
|
||||||
|
forAll(f, j)
|
||||||
|
{
|
||||||
|
label jPlus1 = f.fcIndex(j);
|
||||||
|
scalar l = mag(u[j] - u[jPlus1]);
|
||||||
|
theta[j] = 2.0*Foam::asin(l/2.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
scalar sumWeight = 0;
|
||||||
|
forAll(f, j)
|
||||||
|
{
|
||||||
|
label pid = toLocal[f[j]];
|
||||||
|
label jMin1 = f.rcIndex(j);
|
||||||
|
weights[pid] =
|
||||||
|
1.0
|
||||||
|
/ dist[pid]
|
||||||
|
* (Foam::tan(theta[jMin1]/2.0) + Foam::tan(theta[j]/2.0));
|
||||||
|
sumWeight += weights[pid];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sumWeight >= tol)
|
||||||
|
{
|
||||||
|
weights /= sumWeight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::pointMVCWeight::calcWeights
|
||||||
|
(
|
||||||
|
const polyMesh& mesh,
|
||||||
|
const labelList& toGlobal,
|
||||||
|
const Map<label>& toLocal,
|
||||||
|
const vector& position,
|
||||||
|
const vectorField& uVec,
|
||||||
|
const scalarField& dist,
|
||||||
|
scalarField& weights
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
// Loop over all triangles of all polygons of cell to compute weights
|
||||||
|
DynamicList<scalar> alpha(100);
|
||||||
|
DynamicList<scalar> theta(100);
|
||||||
|
DynamicList<point> u(100);
|
||||||
|
|
||||||
|
const Foam::cell& cFaces = mesh.cells()[cellIndex_];
|
||||||
|
|
||||||
|
forAll(cFaces, iter)
|
||||||
|
{
|
||||||
|
label facei = cFaces[iter];
|
||||||
|
const face& f = mesh.faces()[facei];
|
||||||
|
|
||||||
|
//Pout<< "face:" << facei << " at:"
|
||||||
|
// << pointField(mesh.points(), f)
|
||||||
|
// << endl;
|
||||||
|
|
||||||
|
// Collect the uVec for the face
|
||||||
|
forAll(f, j)
|
||||||
|
{
|
||||||
|
u(j) = uVec[toLocal[f[j]]];
|
||||||
|
}
|
||||||
|
|
||||||
|
vector v(point::zero);
|
||||||
|
forAll(f, j)
|
||||||
|
{
|
||||||
|
label jPlus1 = f.fcIndex(j);
|
||||||
|
//Pout<< " uj:" << u[j] << " ujPlus1:" << u[jPlus1] << endl;
|
||||||
|
|
||||||
|
vector temp = u[j] ^ u[jPlus1];
|
||||||
|
|
||||||
|
scalar magTemp = mag(temp);
|
||||||
|
|
||||||
|
if (magTemp < VSMALL)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
temp /= magTemp;
|
||||||
|
|
||||||
|
//Pout<< " uj:" << u[j] << " ujPlus1:" << u[jPlus1]
|
||||||
|
// << " temp:" << temp << endl;
|
||||||
|
|
||||||
|
scalar l = min(mag(u[j] - u[jPlus1]), 2.0);
|
||||||
|
scalar angle = 2.0*Foam::asin(l/2.0);
|
||||||
|
|
||||||
|
//Pout<< " j:" << j << " l:" << l << " angle:" << angle << endl;
|
||||||
|
|
||||||
|
v += 0.5*angle*temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
scalar vNorm = mag(v);
|
||||||
|
v /= vNorm;
|
||||||
|
|
||||||
|
if ((v & u[0]) < 0)
|
||||||
|
{
|
||||||
|
v = -v;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Pout<< " v:" << v << endl;
|
||||||
|
|
||||||
|
// angles between edges
|
||||||
|
forAll(f, j)
|
||||||
|
{
|
||||||
|
label jPlus1 = f.fcIndex(j);
|
||||||
|
//Pout<< " uj:" << u[j] << " ujPlus1:" << u[jPlus1] << endl;
|
||||||
|
|
||||||
|
vector n0 = u[j]^v;
|
||||||
|
n0 /= mag(n0);
|
||||||
|
vector n1 = u[jPlus1]^v;
|
||||||
|
n1 /= mag(n1);
|
||||||
|
|
||||||
|
scalar l = min(mag(n0 - n1), 2.0);
|
||||||
|
//Pout<< " l:" << l << endl;
|
||||||
|
alpha(j) = 2.0*Foam::asin(l/2.0);
|
||||||
|
|
||||||
|
vector temp = n0^n1;
|
||||||
|
if ((temp&v) < 0.0)
|
||||||
|
{
|
||||||
|
alpha[j] = -alpha[j];
|
||||||
|
}
|
||||||
|
|
||||||
|
l = min(mag(u[j] - v), 2.0);
|
||||||
|
//Pout<< " l:" << l << endl;
|
||||||
|
theta(j) = 2.0*Foam::asin(l/2.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool outlierFlag = false;
|
||||||
|
forAll(f, j)
|
||||||
|
{
|
||||||
|
if (mag(theta[j]) < tol)
|
||||||
|
{
|
||||||
|
outlierFlag = true;
|
||||||
|
|
||||||
|
label pid = toLocal[f[j]];
|
||||||
|
weights[pid] += vNorm / dist[pid];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (outlierFlag)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
scalar sum = 0.0;
|
||||||
|
forAll(f, j)
|
||||||
|
{
|
||||||
|
label jMin1 = f.rcIndex(j);
|
||||||
|
sum +=
|
||||||
|
1.0
|
||||||
|
/ Foam::tan(theta[j])
|
||||||
|
* (Foam::tan(alpha[j]/2.0) + Foam::tan(alpha[jMin1]/2.0));
|
||||||
|
}
|
||||||
|
|
||||||
|
// The special case when x lies on the polygon, handle it using 2D mvc.
|
||||||
|
// In the 2D case, alpha = theta
|
||||||
|
if (mag(sum) < tol)
|
||||||
|
{
|
||||||
|
// Calculate weights using face vertices only
|
||||||
|
calcWeights(toLocal, f, u, dist, weights);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Normal 3D case
|
||||||
|
forAll(f, j)
|
||||||
|
{
|
||||||
|
label pid = toLocal[f[j]];
|
||||||
|
label jMin1 = f.rcIndex(j);
|
||||||
|
weights[pid] +=
|
||||||
|
vNorm
|
||||||
|
/ sum
|
||||||
|
/ dist[pid]
|
||||||
|
/ Foam::sin(theta[j])
|
||||||
|
* (Foam::tan(alpha[j]/2.0) + Foam::tan(alpha[jMin1]/2.0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// normalise weights
|
||||||
|
scalar sumWeight = sum(weights);
|
||||||
|
|
||||||
|
if (mag(sumWeight) < tol)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
weights /= sumWeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::pointMVCWeight::pointMVCWeight
|
||||||
|
(
|
||||||
|
const polyMesh& mesh,
|
||||||
|
const vector& position,
|
||||||
|
const label cellIndex,
|
||||||
|
const label faceIndex
|
||||||
|
)
|
||||||
|
:
|
||||||
|
cellIndex_((cellIndex != -1) ? cellIndex : mesh.faceOwner()[faceIndex])
|
||||||
|
{
|
||||||
|
// Addressing - face vertices to local points and vice versa
|
||||||
|
const labelList& toGlobal = mesh.cellPoints()[cellIndex_];
|
||||||
|
Map<label> toLocal(2*toGlobal.size());
|
||||||
|
forAll(toGlobal, i)
|
||||||
|
{
|
||||||
|
toLocal.insert(toGlobal[i], i);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Initialise weights
|
||||||
|
weights_.setSize(toGlobal.size());
|
||||||
|
weights_ = 0.0;
|
||||||
|
|
||||||
|
|
||||||
|
// Point-to-vertex vectors and distances
|
||||||
|
vectorField uVec(toGlobal.size());
|
||||||
|
scalarField dist(toGlobal.size());
|
||||||
|
|
||||||
|
forAll(toGlobal, pid)
|
||||||
|
{
|
||||||
|
const point& pt = mesh.points()[toGlobal[pid]];
|
||||||
|
|
||||||
|
uVec[pid] = pt-position;
|
||||||
|
dist[pid] = mag(uVec[pid]);
|
||||||
|
|
||||||
|
// Special case: point is close to vertex
|
||||||
|
if (dist[pid] < tol)
|
||||||
|
{
|
||||||
|
weights_[pid] = 1.0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Project onto unit sphere
|
||||||
|
uVec /= dist;
|
||||||
|
|
||||||
|
|
||||||
|
if (faceIndex < 0)
|
||||||
|
{
|
||||||
|
// Face data not supplied
|
||||||
|
calcWeights
|
||||||
|
(
|
||||||
|
mesh,
|
||||||
|
toGlobal,
|
||||||
|
toLocal,
|
||||||
|
position,
|
||||||
|
uVec,
|
||||||
|
dist,
|
||||||
|
|
||||||
|
weights_
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DynamicList<point> u(100);
|
||||||
|
const face& f = mesh.faces()[faceIndex];
|
||||||
|
// Collect the uVec for the face
|
||||||
|
forAll(f, j)
|
||||||
|
{
|
||||||
|
u(j) = uVec[toLocal[f[j]]];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate weights for face only
|
||||||
|
calcWeights(toLocal, f, u, dist, weights_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,162 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::pointMVCWeight
|
||||||
|
|
||||||
|
Description
|
||||||
|
Container to calculate weights for interpolating directly from vertices
|
||||||
|
of cell using Mean Value Coordinates.
|
||||||
|
|
||||||
|
Based on (VTK's vtkMeanValueCoordinatesInterpolator's) implementation
|
||||||
|
of "Spherical Barycentric Coordinates"
|
||||||
|
2006 paper Eurographics Symposium on Geometry Processing
|
||||||
|
by Torsten Langer, Alexander Belyaev and Hans-Peter Seide
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
pointMVCWeight.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef pointMVCWeight_H
|
||||||
|
#define pointMVCWeight_H
|
||||||
|
|
||||||
|
#include "scalarField.H"
|
||||||
|
#include "vectorField.H"
|
||||||
|
#include "Map.H"
|
||||||
|
#include "DynamicList.H"
|
||||||
|
#include "point.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
class polyMesh;
|
||||||
|
class pointMesh;
|
||||||
|
template<class T> class pointPatchField;
|
||||||
|
template<class Type, template<class> class PatchField, class GeoMesh>
|
||||||
|
class GeometricField;
|
||||||
|
class face;
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class pointMVCWeight Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class pointMVCWeight
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
|
||||||
|
// Protected data
|
||||||
|
|
||||||
|
//- Cell index
|
||||||
|
const label cellIndex_;
|
||||||
|
|
||||||
|
//- Weights applied to cell vertices
|
||||||
|
scalarField weights_;
|
||||||
|
|
||||||
|
|
||||||
|
// Protected Member Functions
|
||||||
|
|
||||||
|
//- Calculate weights from single face's vertices only
|
||||||
|
void calcWeights
|
||||||
|
(
|
||||||
|
const Map<label>& toLocal,
|
||||||
|
const face& f,
|
||||||
|
const DynamicList<point>& u,
|
||||||
|
const scalarField& dist,
|
||||||
|
scalarField& weights
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Calculate weights from all cell's vertices
|
||||||
|
void calcWeights
|
||||||
|
(
|
||||||
|
const polyMesh& mesh,
|
||||||
|
const labelList& toGlobal,
|
||||||
|
const Map<label>& toLocal,
|
||||||
|
const vector& position,
|
||||||
|
const vectorField& uVec,
|
||||||
|
const scalarField& dist,
|
||||||
|
scalarField& weights
|
||||||
|
) const;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Debug switch
|
||||||
|
static debug::debugSwitch debug;
|
||||||
|
|
||||||
|
//- Tolerance used in calculating barycentric co-ordinates
|
||||||
|
// (applied to normalised values)
|
||||||
|
static scalar tol;
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from components
|
||||||
|
pointMVCWeight
|
||||||
|
(
|
||||||
|
const polyMesh& mesh,
|
||||||
|
const vector& position,
|
||||||
|
const label celli,
|
||||||
|
const label facei = -1
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Cell index
|
||||||
|
inline label cell() const
|
||||||
|
{
|
||||||
|
return cellIndex_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Interpolation weights (in order of cellPoints)
|
||||||
|
inline const scalarField& weights() const
|
||||||
|
{
|
||||||
|
return weights_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Interpolate field
|
||||||
|
template<class Type>
|
||||||
|
inline Type interpolate
|
||||||
|
(
|
||||||
|
const GeometricField<Type, pointPatchField, pointMesh>& psip
|
||||||
|
) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#include "pointMVCWeightI.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,48 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "pointFields.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
inline Type Foam::pointMVCWeight::interpolate
|
||||||
|
(
|
||||||
|
const GeometricField<Type, pointPatchField, pointMesh>& psip
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
const labelList& vertices = psip.mesh()().cellPoints()[cellIndex_];
|
||||||
|
|
||||||
|
Type t = pTraits<Type>::zero;
|
||||||
|
forAll(vertices, i)
|
||||||
|
{
|
||||||
|
t += psip[vertices[i]]*weights_[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -88,7 +88,7 @@ inline To& dynamicCast(From& r)
|
||||||
{
|
{
|
||||||
return dynamic_cast<To&>(r);
|
return dynamic_cast<To&>(r);
|
||||||
}
|
}
|
||||||
catch (std::bad_cast)
|
catch (std::bad_cast& e)
|
||||||
{
|
{
|
||||||
FatalErrorIn("dynamicCast<To>(From&)")
|
FatalErrorIn("dynamicCast<To>(From&)")
|
||||||
<< "Attempt to cast type " << typeid(r).name()
|
<< "Attempt to cast type " << typeid(r).name()
|
||||||
|
@ -109,7 +109,7 @@ inline To& refCast(From& r)
|
||||||
{
|
{
|
||||||
return dynamic_cast<To&>(r);
|
return dynamic_cast<To&>(r);
|
||||||
}
|
}
|
||||||
catch (std::bad_cast)
|
catch (std::bad_cast& e)
|
||||||
{
|
{
|
||||||
FatalErrorIn("refCast<To>(From&)")
|
FatalErrorIn("refCast<To>(From&)")
|
||||||
<< "Attempt to cast type " << r.type()
|
<< "Attempt to cast type " << r.type()
|
||||||
|
|
|
@ -69,6 +69,10 @@ bool read(const char*, uint64_t&);
|
||||||
Istream& operator>>(Istream&, uint64_t&);
|
Istream& operator>>(Istream&, uint64_t&);
|
||||||
Ostream& operator<<(Ostream&, const uint64_t);
|
Ostream& operator<<(Ostream&, const uint64_t);
|
||||||
|
|
||||||
|
#if WM_ARCH_OPTION == 64 && darwin && __clang__
|
||||||
|
Ostream& operator<<(Ostream&, const uintptr_t);
|
||||||
|
#endif
|
||||||
|
|
||||||
//- Template specialization for pTraits<uint64_t>
|
//- Template specialization for pTraits<uint64_t>
|
||||||
template<>
|
template<>
|
||||||
class pTraits<uint64_t>
|
class pTraits<uint64_t>
|
||||||
|
|
|
@ -98,5 +98,13 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const uint64_t i)
|
||||||
return os;
|
return os;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if WM_ARCH_OPTION == 64 && darwin && __clang__
|
||||||
|
Foam::Ostream& Foam::operator<<(Ostream& os, const uintptr_t i)
|
||||||
|
{
|
||||||
|
os.write(label(i));
|
||||||
|
os.check("Ostream& operator<<(Ostream&, const uintptr_t)");
|
||||||
|
return os;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -4,7 +4,8 @@ oversetFringe/oversetFringe/oversetFringe.C
|
||||||
oversetFringe/oversetFringe/newOversetFringe.C
|
oversetFringe/oversetFringe/newOversetFringe.C
|
||||||
oversetFringe/manualFringe/manualFringe.C
|
oversetFringe/manualFringe/manualFringe.C
|
||||||
oversetFringe/faceCellsFringe/faceCellsFringe.C
|
oversetFringe/faceCellsFringe/faceCellsFringe.C
|
||||||
oversetFringe/overlapFringe/overlapFringe.C
|
oversetFringe/overlapFringe/overlapFringe/overlapFringe.C
|
||||||
|
oversetFringe/overlapFringe/adaptiveOverlapFringe/adaptiveOverlapFringe.C
|
||||||
oversetFringe/compositeFringe/compositeFringe.C
|
oversetFringe/compositeFringe/compositeFringe.C
|
||||||
|
|
||||||
oversetFringe/overlapFringe/donorSuitability/donorSuitability/donorSuitability.C
|
oversetFringe/overlapFringe/donorSuitability/donorSuitability/donorSuitability.C
|
||||||
|
|
|
@ -115,6 +115,10 @@ private:
|
||||||
// Note that the processor number is the same for all extended
|
// Note that the processor number is the same for all extended
|
||||||
// donors
|
// donors
|
||||||
|
|
||||||
|
//- Whether donor (or acceptor) is within bounding box of acceptor
|
||||||
|
// (or donor)
|
||||||
|
bool withinBB_;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -148,7 +152,8 @@ public:
|
||||||
donorProcNo_(-1),
|
donorProcNo_(-1),
|
||||||
donorPoint_(vector::zero),
|
donorPoint_(vector::zero),
|
||||||
extendedDonorCells_(),
|
extendedDonorCells_(),
|
||||||
extendedDonorPoints_()
|
extendedDonorPoints_(),
|
||||||
|
withinBB_(false)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//- Construct from Istream
|
//- Construct from Istream
|
||||||
|
@ -161,7 +166,8 @@ public:
|
||||||
donorProcNo_(readLabel(is)),
|
donorProcNo_(readLabel(is)),
|
||||||
donorPoint_(is),
|
donorPoint_(is),
|
||||||
extendedDonorCells_(is),
|
extendedDonorCells_(is),
|
||||||
extendedDonorPoints_(is)
|
extendedDonorPoints_(is),
|
||||||
|
withinBB_(is)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//- Copy constructor - default
|
//- Copy constructor - default
|
||||||
|
@ -275,19 +281,34 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//- Return whether the donor is within bounding box
|
||||||
|
bool withinBB() const
|
||||||
|
{
|
||||||
|
return withinBB_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Edit
|
// Edit
|
||||||
|
|
||||||
|
//- Set withinBB
|
||||||
|
void setWithinBB(const bool withinBB)
|
||||||
|
{
|
||||||
|
withinBB_ = withinBB;
|
||||||
|
}
|
||||||
|
|
||||||
//- Set hit: donor found
|
//- Set hit: donor found
|
||||||
void setDonor
|
void setDonor
|
||||||
(
|
(
|
||||||
const label& donorCell,
|
const label& donorCell,
|
||||||
const label& donorProcNo,
|
const label& donorProcNo,
|
||||||
const point& donorPoint
|
const point& donorPoint,
|
||||||
|
const bool withinBB
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
donorCell_ = donorCell;
|
donorCell_ = donorCell;
|
||||||
donorProcNo_ = donorProcNo;
|
donorProcNo_ = donorProcNo;
|
||||||
donorPoint_ = donorPoint;
|
donorPoint_ = donorPoint;
|
||||||
|
withinBB_ = withinBB;
|
||||||
}
|
}
|
||||||
|
|
||||||
//- Set extended donors by going through neighbours of currently set
|
//- Set extended donors by going through neighbours of currently set
|
||||||
|
@ -355,6 +376,8 @@ public:
|
||||||
|
|
||||||
extendedDonorCells_ = rd.extendedDonorCells_;
|
extendedDonorCells_ = rd.extendedDonorCells_;
|
||||||
extendedDonorPoints_ = rd.extendedDonorPoints_;
|
extendedDonorPoints_ = rd.extendedDonorPoints_;
|
||||||
|
|
||||||
|
withinBB_ = rd.withinBB_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -371,7 +394,8 @@ public:
|
||||||
&& a.acceptorProcNo_ == b.acceptorProcNo_
|
&& a.acceptorProcNo_ == b.acceptorProcNo_
|
||||||
&& a.acceptorPoint_ == b.acceptorPoint_
|
&& a.acceptorPoint_ == b.acceptorPoint_
|
||||||
&& a.donorCell_ == b.donorCell_
|
&& a.donorCell_ == b.donorCell_
|
||||||
&& a.donorProcNo_ == b.donorProcNo_;
|
&& a.donorProcNo_ == b.donorProcNo_
|
||||||
|
&& a.withinBB_ == b.withinBB_;
|
||||||
|
|
||||||
// Note: do not check whether extended neighbours are the same, we
|
// Note: do not check whether extended neighbours are the same, we
|
||||||
// assume they will be if donor data is the same
|
// assume they will be if donor data is the same
|
||||||
|
@ -399,8 +423,8 @@ public:
|
||||||
>> rd.donorProcNo_
|
>> rd.donorProcNo_
|
||||||
>> rd.donorPoint_
|
>> rd.donorPoint_
|
||||||
>> rd.extendedDonorCells_
|
>> rd.extendedDonorCells_
|
||||||
>> rd.extendedDonorPoints_;
|
>> rd.extendedDonorPoints_
|
||||||
|
>> rd.withinBB_;
|
||||||
return is;
|
return is;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -414,8 +438,8 @@ public:
|
||||||
<< rd.donorProcNo_ << token::SPACE
|
<< rd.donorProcNo_ << token::SPACE
|
||||||
<< rd.donorPoint_ << token::SPACE
|
<< rd.donorPoint_ << token::SPACE
|
||||||
<< rd.extendedDonorCells_ << token::SPACE
|
<< rd.extendedDonorCells_ << token::SPACE
|
||||||
<< rd.extendedDonorPoints_;
|
<< rd.extendedDonorPoints_ << token::SPACE
|
||||||
|
<< rd.withinBB_;
|
||||||
return os;
|
return os;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -42,5 +42,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// regionIndex.write();
|
// Write region index
|
||||||
|
regionIndex.write();
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,239 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 4.1
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
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/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
adaptiveOverlapFringe
|
||||||
|
|
||||||
|
Description
|
||||||
|
Adaptive overlap fringe algorithm with fall-back mechanism
|
||||||
|
|
||||||
|
Holds and manages following data:
|
||||||
|
|
||||||
|
- fringeHolesPtr_: holds fringe holes which are basically discarded
|
||||||
|
acceptors from previous iterations
|
||||||
|
- acceptorsPtr_: holds current set of acceptors to consider
|
||||||
|
- finalDonorAcceptorsPtr_: final set of donor/acceptors which will be used
|
||||||
|
for the overset interpolation
|
||||||
|
- donorSuitability_: run-time selectable Donor Suitability Function
|
||||||
|
- initPatchNames_: optional list of patches that we use to start the
|
||||||
|
acceptor search from
|
||||||
|
- minGlobalFraction_: minimum allowable global fraction of suitable pairs
|
||||||
|
- cumulativeDonorAcceptorsPtr_: list of suitable donor/acceptor pairs
|
||||||
|
- fringeIter_: iteration counter
|
||||||
|
|
||||||
|
Member function updateIteration controls the iterative process:
|
||||||
|
- Checks whether given donor/acceptors are suitable and filters them,
|
||||||
|
- If the user-specified criterion controlled by minGlobalFraction_ is not
|
||||||
|
reached (i.e. suitable overlap has not been found), then we loop through
|
||||||
|
unsuitable acceptors and mark their neighbours (excluding existing
|
||||||
|
acceptors and holes) as candidate acceptors for the next iteration,
|
||||||
|
- Unsuitable acceptors become fringe holes.
|
||||||
|
|
||||||
|
Authors
|
||||||
|
Josip Katavic, FMENA Zagreb. All rights reserved.
|
||||||
|
Vuko Vukcevic, FMENA Zagreb. All rights reserved.
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
adaptiveOverlapFringe.C
|
||||||
|
|
||||||
|
Notes
|
||||||
|
Based on original overlapFringe assembly algorithm.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef adaptiveOverlapFringe_H
|
||||||
|
#define adaptiveOverlapFringe_H
|
||||||
|
|
||||||
|
#include "overlapFringe.H"
|
||||||
|
#include "donorSuitability.H"
|
||||||
|
#include "optimisationSwitch.H"
|
||||||
|
#include "volFields.H"
|
||||||
|
#include "FIFOStack.H"
|
||||||
|
#include "iterationData.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class adaptiveOverlapFringe Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class adaptiveOverlapFringe
|
||||||
|
:
|
||||||
|
public oversetFringe
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Fringe hole cells
|
||||||
|
mutable labelList* fringeHolesPtr_;
|
||||||
|
|
||||||
|
//- Acceptor cells
|
||||||
|
mutable labelList* acceptorsPtr_;
|
||||||
|
|
||||||
|
//- Final donor/acceptor pairs for this region (fringe)
|
||||||
|
mutable donorAcceptorList* finalDonorAcceptorsPtr_;
|
||||||
|
|
||||||
|
//- Iteration history - filtered donor/acceptor pairs, fringe holes and
|
||||||
|
// average donor/acceptor suitability fraction
|
||||||
|
mutable FIFOStack<iterationData> iterationDataHistory_;
|
||||||
|
|
||||||
|
|
||||||
|
// Optional initialization data
|
||||||
|
|
||||||
|
//- Name of the cell set defining initial holes (empty by default).
|
||||||
|
// Useful when the resolution of the background mesh is much
|
||||||
|
// coarser than the front mesh and no hole is found
|
||||||
|
const word holesSetName_;
|
||||||
|
|
||||||
|
//- Optional list of patches to start the iterative fringe assembly
|
||||||
|
// process (empty list by default). Useful when we actually have
|
||||||
|
// a hole as a patch in the background mesh
|
||||||
|
const wordList initPatchNames_;
|
||||||
|
|
||||||
|
|
||||||
|
// Data for iteration control
|
||||||
|
|
||||||
|
//- Run-time selectable donor/acceptor suitability handler
|
||||||
|
autoPtr<donorSuitability::donorSuitability> donorSuitability_;
|
||||||
|
|
||||||
|
//- Iteration counter
|
||||||
|
mutable label fringeIter_;
|
||||||
|
|
||||||
|
//- User defined number of iterations - by default 4 iterations will
|
||||||
|
// be made
|
||||||
|
const label specifiedIterationsNumber_;
|
||||||
|
|
||||||
|
//- Relative iteration counter
|
||||||
|
mutable label relativeCounter_;
|
||||||
|
|
||||||
|
//- Additional iteration switch
|
||||||
|
const Switch additionalIterations_;
|
||||||
|
|
||||||
|
//- Penalty coefficient for orhpan donors, i.e. orhpan donors
|
||||||
|
// suitability
|
||||||
|
const scalar orphanSuitability_;
|
||||||
|
|
||||||
|
// Suitable donor/acceptor pairs
|
||||||
|
mutable donorAcceptorDynamicList suitableDAPairs_;
|
||||||
|
|
||||||
|
//- Suitable pairs cumulative suitability
|
||||||
|
mutable scalar suitablePairsSuit_;
|
||||||
|
|
||||||
|
|
||||||
|
// Private Member Functions
|
||||||
|
|
||||||
|
// Copy control
|
||||||
|
|
||||||
|
//- Disallow default bitwise copy construct
|
||||||
|
adaptiveOverlapFringe(const adaptiveOverlapFringe&);
|
||||||
|
|
||||||
|
//- Disallow default bitwise assignment
|
||||||
|
void operator=(const adaptiveOverlapFringe&);
|
||||||
|
|
||||||
|
|
||||||
|
// Addressing manipulation functions
|
||||||
|
|
||||||
|
//- Calculate hole-acceptor addressing
|
||||||
|
void calcAddressing() const;
|
||||||
|
|
||||||
|
//- Clear hole-acceptor addressing
|
||||||
|
void clearAddressing() const;
|
||||||
|
|
||||||
|
|
||||||
|
// Private Static Functions
|
||||||
|
|
||||||
|
//- Sort function - third parameter for max_element function
|
||||||
|
static bool sortBySuitabilityValue
|
||||||
|
(
|
||||||
|
const iterationData& lhsObject,
|
||||||
|
const iterationData& rhsObject
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("adaptiveOverlap");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from dictionary
|
||||||
|
adaptiveOverlapFringe
|
||||||
|
(
|
||||||
|
const fvMesh& mesh,
|
||||||
|
const oversetRegion& region,
|
||||||
|
const dictionary& dict
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~adaptiveOverlapFringe();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Update iteration.
|
||||||
|
virtual bool updateIteration
|
||||||
|
(
|
||||||
|
donorAcceptorList& donorAcceptorRegionData
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Return list of hole cells
|
||||||
|
// Fringe hole cells are collected in addition to geometric hole
|
||||||
|
// cells, which fall outside of all donor regions
|
||||||
|
virtual const labelList& fringeHoles() const;
|
||||||
|
|
||||||
|
//- Return list of acceptor cells
|
||||||
|
virtual const labelList& candidateAcceptors() const;
|
||||||
|
|
||||||
|
//- Return list of final donor acceptor pairs. Note: caller may
|
||||||
|
// invalidate finalDonorAcceptorsPtr_ for optimisation purposes
|
||||||
|
virtual donorAcceptorList& finalDonorAcceptors() const;
|
||||||
|
|
||||||
|
//- Update the fringe
|
||||||
|
virtual void update() const;
|
||||||
|
|
||||||
|
//- Loop through all iteration data objects from iterationDataHistory_
|
||||||
|
// data member and calculate slope, i.e. suitability fraction values
|
||||||
|
// trend using linear least squares method.
|
||||||
|
void suitabilityFractionSlope
|
||||||
|
(
|
||||||
|
FIFOStack<iterationData>,
|
||||||
|
scalar& alpha,
|
||||||
|
scalar& beta
|
||||||
|
) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,148 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright held by original author
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||||
|
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::iterationData
|
||||||
|
|
||||||
|
Description
|
||||||
|
Representation of the data type needed to track the history of the
|
||||||
|
iterative process in which the most appropriate donor/acceptor pairs are
|
||||||
|
sought.
|
||||||
|
|
||||||
|
Holds and manages following data:
|
||||||
|
|
||||||
|
- fringeHoles_: list of fringe holes from one iteration. In the first
|
||||||
|
iteration fringe holes are hole cells generated from the hole cutting
|
||||||
|
process. In the following iterations fringeHoles_ represents holes
|
||||||
|
from the hole cutting process and discarded acceptors from previous
|
||||||
|
iterations.
|
||||||
|
- donorAcceptorPairs_: donorAcceptorList which holds donor/acceptor pairs
|
||||||
|
from one iteration. This list is not filtered.
|
||||||
|
- suitability_: average suitability fraction from one iteration. If this
|
||||||
|
value is higher, donor/acceptor pairs are more suitable.
|
||||||
|
- iteration_: iteration number which is needed for calculating slope using
|
||||||
|
least square method.
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
iterationData.C
|
||||||
|
|
||||||
|
Author
|
||||||
|
Josip Katavic, FMENA Zagreb. All rights reserved.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef iterationData_H
|
||||||
|
#define iterationData_H
|
||||||
|
|
||||||
|
#include "donorAcceptorList.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class iterationData Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class iterationData
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Pre-final donor/acceptor pairs
|
||||||
|
const donorAcceptorList donorAcceptorPairs_;
|
||||||
|
|
||||||
|
//- List of fringe holes
|
||||||
|
const labelList fringeHoles_;
|
||||||
|
|
||||||
|
//- Average suitability fraction for all donor/acceptor pairs
|
||||||
|
const scalar suitability_;
|
||||||
|
|
||||||
|
//- Iteration number
|
||||||
|
const label iteration_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from Foam::adaptiveOverlap::updateIteration data by
|
||||||
|
// transfering the ownership from parameters to data members
|
||||||
|
iterationData
|
||||||
|
(
|
||||||
|
const Xfer<donorAcceptorList>& donorAcceptorPairs,
|
||||||
|
const Xfer<labelList>& fringeHoles,
|
||||||
|
const scalar averageSuitability,
|
||||||
|
const label iteration
|
||||||
|
)
|
||||||
|
:
|
||||||
|
donorAcceptorPairs_(donorAcceptorPairs),
|
||||||
|
fringeHoles_(fringeHoles),
|
||||||
|
suitability_(averageSuitability),
|
||||||
|
iteration_(iteration)
|
||||||
|
{}
|
||||||
|
|
||||||
|
// Note: There is no need for 'the big three' implementation because
|
||||||
|
// this class does not hold pointers as data members, so use implicit
|
||||||
|
// copy constructor, assignment operator and destructor.
|
||||||
|
|
||||||
|
|
||||||
|
// Access
|
||||||
|
|
||||||
|
//- Return reference to donor/acceptor pairs
|
||||||
|
const donorAcceptorList& donorAcceptorPairs() const
|
||||||
|
{
|
||||||
|
return donorAcceptorPairs_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return reference to fringe holes
|
||||||
|
const labelList& fringeHoles() const
|
||||||
|
{
|
||||||
|
return fringeHoles_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return reference to suitability fraction
|
||||||
|
const scalar& suitability() const
|
||||||
|
{
|
||||||
|
return suitability_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return reference to iteration number
|
||||||
|
const label& iteration() const
|
||||||
|
{
|
||||||
|
return iteration_;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -24,7 +24,7 @@ License
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "cellBoundingBoxDiagonal.H"
|
#include "cellBoundingBoxDiagonal.H"
|
||||||
#include "overlapFringe.H"
|
#include "oversetFringe.H"
|
||||||
#include "oversetRegion.H"
|
#include "oversetRegion.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
@ -50,14 +50,14 @@ addToRunTimeSelectionTable
|
||||||
|
|
||||||
Foam::donorSuitability::cellBoundingBoxDiagonal::cellBoundingBoxDiagonal
|
Foam::donorSuitability::cellBoundingBoxDiagonal::cellBoundingBoxDiagonal
|
||||||
(
|
(
|
||||||
const overlapFringe& overlapFringeAlgorithm,
|
const oversetFringe& oversetFringeAlgorithm,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
donorSuitability(overlapFringeAlgorithm, dict)
|
donorSuitability(oversetFringeAlgorithm, dict)
|
||||||
{
|
{
|
||||||
// Get reference to fvMesh
|
// Get reference to fvMesh
|
||||||
const fvMesh& mesh = overlapFringeAlgorithm.mesh();
|
const fvMesh& mesh = oversetFringeAlgorithm.mesh();
|
||||||
|
|
||||||
// Get necessary mesh data
|
// Get necessary mesh data
|
||||||
const cellList& cells = mesh.cells();
|
const cellList& cells = mesh.cells();
|
||||||
|
|
|
@ -73,7 +73,7 @@ public:
|
||||||
//- Construct from components
|
//- Construct from components
|
||||||
cellBoundingBoxDiagonal
|
cellBoundingBoxDiagonal
|
||||||
(
|
(
|
||||||
const overlapFringe& overlapFringeAlgorithm,
|
const oversetFringe& oversetFringeAlgorithm,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ License
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "cellVolumes.H"
|
#include "cellVolumes.H"
|
||||||
#include "overlapFringe.H"
|
#include "oversetFringe.H"
|
||||||
#include "oversetRegion.H"
|
#include "oversetRegion.H"
|
||||||
#include "volFields.H"
|
#include "volFields.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
@ -51,14 +51,14 @@ addToRunTimeSelectionTable
|
||||||
|
|
||||||
Foam::donorSuitability::cellVolumes::cellVolumes
|
Foam::donorSuitability::cellVolumes::cellVolumes
|
||||||
(
|
(
|
||||||
const overlapFringe& overlapFringeAlgorithm,
|
const oversetFringe& oversetFringeAlgorithm,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
donorSuitability(overlapFringeAlgorithm, dict)
|
donorSuitability(oversetFringeAlgorithm, dict)
|
||||||
{
|
{
|
||||||
// Get local donor suitability function using cell volumes
|
// Get local donor suitability function using cell volumes
|
||||||
const scalarField& localDsf = overlapFringeAlgorithm.mesh().V().field();
|
const scalarField& localDsf = oversetFringeAlgorithm.mesh().V().field();
|
||||||
|
|
||||||
// Combine donor suitability function data across processors for parallel
|
// Combine donor suitability function data across processors for parallel
|
||||||
// run
|
// run
|
||||||
|
|
|
@ -70,7 +70,7 @@ public:
|
||||||
//- Construct from components
|
//- Construct from components
|
||||||
cellVolumes
|
cellVolumes
|
||||||
(
|
(
|
||||||
const overlapFringe& overlapFringeAlgorithm,
|
const oversetFringe& oversetFringeAlgorithm,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ License
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "donorSuitability.H"
|
#include "donorSuitability.H"
|
||||||
#include "overlapFringe.H"
|
#include "oversetFringe.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
@ -43,11 +43,11 @@ defineRunTimeSelectionTable(donorSuitability, dictionary);
|
||||||
|
|
||||||
Foam::donorSuitability::donorSuitability::donorSuitability
|
Foam::donorSuitability::donorSuitability::donorSuitability
|
||||||
(
|
(
|
||||||
const overlapFringe& overlapFringeAlgorithm,
|
const oversetFringe& oversetFringeAlgorithm,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
overlapFringe_(overlapFringeAlgorithm),
|
oversetFringe_(oversetFringeAlgorithm),
|
||||||
coeffDict_
|
coeffDict_
|
||||||
(
|
(
|
||||||
dict.subDict("donorSuitability")
|
dict.subDict("donorSuitability")
|
||||||
|
@ -100,20 +100,4 @@ void Foam::donorSuitability::donorSuitability::combineDonorSuitabilityFunction
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
const Foam::overlapFringe&
|
|
||||||
Foam::donorSuitability::donorSuitability::overlapFringeAlgorithm() const
|
|
||||||
{
|
|
||||||
return overlapFringe_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const Foam::dictionary&
|
|
||||||
Foam::donorSuitability::donorSuitability::coeffDict() const
|
|
||||||
{
|
|
||||||
return coeffDict_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -26,7 +26,7 @@ Class
|
||||||
|
|
||||||
Description
|
Description
|
||||||
An abstract base class for donor suitability algorithms. This class is
|
An abstract base class for donor suitability algorithms. This class is
|
||||||
used by overlapFringe algorithm to optimise overlap given donor suitability
|
used by oversetFringe algorithm to optimise overlap given donor suitability
|
||||||
function.
|
function.
|
||||||
|
|
||||||
Donor suitability criteria is given in isDonorSuitable member function. The
|
Donor suitability criteria is given in isDonorSuitable member function. The
|
||||||
|
@ -43,6 +43,9 @@ SourceFiles
|
||||||
Author
|
Author
|
||||||
Vuko Vukcevic, FMENA Zagreb. All rights reserved.
|
Vuko Vukcevic, FMENA Zagreb. All rights reserved.
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Josip Katavic, FMENA Zagreb. All rights reserved.
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifndef donorSuitability_H
|
#ifndef donorSuitability_H
|
||||||
|
@ -61,7 +64,7 @@ namespace Foam
|
||||||
{
|
{
|
||||||
|
|
||||||
// Forward declaration of classes
|
// Forward declaration of classes
|
||||||
class overlapFringe;
|
class oversetFringe;
|
||||||
|
|
||||||
namespace donorSuitability
|
namespace donorSuitability
|
||||||
{
|
{
|
||||||
|
@ -74,8 +77,8 @@ class donorSuitability
|
||||||
{
|
{
|
||||||
// Private data
|
// Private data
|
||||||
|
|
||||||
//- Reference to overlapFringe algorithm
|
//- Reference to oversetFringe algorithm
|
||||||
const overlapFringe& overlapFringe_;
|
const oversetFringe& oversetFringe_;
|
||||||
|
|
||||||
//- Subdictionary for acceptor set specification
|
//- Subdictionary for acceptor set specification
|
||||||
const dictionary coeffDict_;
|
const dictionary coeffDict_;
|
||||||
|
@ -141,10 +144,10 @@ public:
|
||||||
donorSuitability,
|
donorSuitability,
|
||||||
dictionary,
|
dictionary,
|
||||||
(
|
(
|
||||||
const overlapFringe& overlapFringeAlgorithm,
|
const oversetFringe& oversetFringeAlgorithm,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
),
|
),
|
||||||
(overlapFringeAlgorithm, dict)
|
(oversetFringeAlgorithm, dict)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
@ -153,7 +156,7 @@ public:
|
||||||
//- Construct from components
|
//- Construct from components
|
||||||
donorSuitability
|
donorSuitability
|
||||||
(
|
(
|
||||||
const overlapFringe& overlapFringeAlgorithm,
|
const oversetFringe& oversetFringeAlgorithm,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -163,13 +166,13 @@ public:
|
||||||
//- Return an autoPtr to the selected donorSuitability
|
//- Return an autoPtr to the selected donorSuitability
|
||||||
static autoPtr<donorSuitability> New
|
static autoPtr<donorSuitability> New
|
||||||
(
|
(
|
||||||
const overlapFringe& overlapFringeAlgorithm,
|
const oversetFringe& oversetFringeAlgorithm,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
//- Destructor
|
//- Destructor
|
||||||
// Note: the destructor is pure virtual to make this class abstract
|
// Note: the destructor is pure virtual to make this class abstract
|
||||||
virtual ~donorSuitability() = 0;
|
virtual ~donorSuitability() = 0;
|
||||||
|
|
||||||
|
|
||||||
|
@ -177,23 +180,54 @@ public:
|
||||||
|
|
||||||
// Access
|
// Access
|
||||||
|
|
||||||
//- Return a const reference to overlapFringe algorithm
|
//- Return a const reference to oversetFringe algorithm
|
||||||
const overlapFringe& overlapFringeAlgorithm() const;
|
inline const oversetFringe& oversetFringeAlgorithm() const
|
||||||
|
{
|
||||||
|
return oversetFringe_;
|
||||||
|
}
|
||||||
|
|
||||||
//- Return coefficient dictionary
|
//- Return coefficient dictionary
|
||||||
const dictionary& coeffDict() const;
|
inline const dictionary& coeffDict() const
|
||||||
|
{
|
||||||
|
return coeffDict_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return threshold
|
||||||
|
inline const scalar& threshold() const
|
||||||
|
{
|
||||||
|
return threshold_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Overlap minimisation via Donor Suitability Function
|
// Overlap minimisation via Donor Suitability Function
|
||||||
|
|
||||||
//- Is this donor/acceptor pair suitable
|
//- Donor/acceptor pair suitability fraction.
|
||||||
bool isDonorSuitable
|
// Subtract smaller DSF from the greater. Divide difference with
|
||||||
|
// greater DSF to get relative difference. Return relative
|
||||||
|
// difference (a value which is always between 0 and 1. Higher
|
||||||
|
// value means better suitability).
|
||||||
|
scalar suitabilityFraction
|
||||||
(
|
(
|
||||||
const donorAcceptor& daPair
|
const donorAcceptor& daPair
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
// Note: do not check whether a donor is valid (has been found)
|
// Check whether the donor is valid for this pair
|
||||||
// for this acceptor.
|
if (!daPair.donorFound())
|
||||||
|
{
|
||||||
|
FatalErrorIn
|
||||||
|
(
|
||||||
|
"scalar donorSuitability::suitabilityFraction"
|
||||||
|
"\n("
|
||||||
|
"\n const donorAcceptor& daPair"
|
||||||
|
"\n) const"
|
||||||
|
) << "Acceptor: " << daPair.acceptorCell()
|
||||||
|
<< " on processor: " << daPair.acceptorProcNo()
|
||||||
|
<< " did not find donor candidate."
|
||||||
|
<< nl
|
||||||
|
<< "Please review your fringe assembly settings"
|
||||||
|
<< " (or try using adaptiveOverlap fringe algorithm)."
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
// Get donor suitability function in acceptor/donor pair
|
// Get donor suitability function in acceptor/donor pair
|
||||||
const scalar& dsfAcceptor =
|
const scalar& dsfAcceptor =
|
||||||
|
@ -205,21 +239,24 @@ public:
|
||||||
// need to take the absolute value
|
// need to take the absolute value
|
||||||
if (dsfAcceptor > dsfDonor)
|
if (dsfAcceptor > dsfDonor)
|
||||||
{
|
{
|
||||||
return
|
return (1 - (dsfAcceptor - dsfDonor)/(dsfAcceptor + SMALL));
|
||||||
(
|
|
||||||
(dsfAcceptor - dsfDonor)/
|
|
||||||
(dsfAcceptor + SMALL)
|
|
||||||
) < threshold_;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return
|
return (1 - (dsfDonor - dsfAcceptor)/(dsfDonor + SMALL));
|
||||||
(
|
|
||||||
(dsfDonor - dsfAcceptor)/
|
|
||||||
(dsfDonor + SMALL)
|
|
||||||
) < threshold_;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//- Is this donor/acceptor pair suitable?
|
||||||
|
// if sutabilityFraction > threshold
|
||||||
|
bool isDonorSuitable
|
||||||
|
(
|
||||||
|
const donorAcceptor& daPair
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return (suitabilityFraction(daPair)) > threshold_;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ License
|
||||||
Foam::autoPtr<Foam::donorSuitability::donorSuitability>
|
Foam::autoPtr<Foam::donorSuitability::donorSuitability>
|
||||||
Foam::donorSuitability::donorSuitability::New
|
Foam::donorSuitability::donorSuitability::New
|
||||||
(
|
(
|
||||||
const overlapFringe& overlapFringeAlgorithm,
|
const oversetFringe& oversetFringeAlgorithm,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@ -48,7 +48,7 @@ Foam::donorSuitability::donorSuitability::New
|
||||||
(
|
(
|
||||||
"donorSuitability::donorSuitability::New\n"
|
"donorSuitability::donorSuitability::New\n"
|
||||||
"(\n"
|
"(\n"
|
||||||
" const overlapFringe& overlapFringeAlgorithm,\n"
|
" const oversetFringe& oversetFringeAlgorithm,\n"
|
||||||
" const dictionary& dict\n"
|
" const dictionary& dict\n"
|
||||||
")"
|
")"
|
||||||
) << "Unknown donorSuitability type " << donorSuitabilityTypeName
|
) << "Unknown donorSuitability type " << donorSuitabilityTypeName
|
||||||
|
@ -58,7 +58,7 @@ Foam::donorSuitability::donorSuitability::New
|
||||||
<< exit(FatalError);
|
<< exit(FatalError);
|
||||||
}
|
}
|
||||||
|
|
||||||
return autoPtr<donorSuitability>(cstrIter()(overlapFringeAlgorithm, dict));
|
return autoPtr<donorSuitability>(cstrIter()(oversetFringeAlgorithm, dict));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ License
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "faceArea.H"
|
#include "faceArea.H"
|
||||||
#include "overlapFringe.H"
|
#include "oversetFringe.H"
|
||||||
#include "oversetRegion.H"
|
#include "oversetRegion.H"
|
||||||
#include "surfaceFields.H"
|
#include "surfaceFields.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
@ -51,14 +51,14 @@ addToRunTimeSelectionTable
|
||||||
|
|
||||||
Foam::donorSuitability::faceArea::faceArea
|
Foam::donorSuitability::faceArea::faceArea
|
||||||
(
|
(
|
||||||
const overlapFringe& overlapFringeAlgorithm,
|
const oversetFringe& oversetFringeAlgorithm,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
donorSuitability(overlapFringeAlgorithm, dict)
|
donorSuitability(oversetFringeAlgorithm, dict)
|
||||||
{
|
{
|
||||||
// Get fvMesh reference
|
// Get fvMesh reference
|
||||||
const fvMesh& mesh = overlapFringeAlgorithm.mesh();
|
const fvMesh& mesh = oversetFringeAlgorithm.mesh();
|
||||||
|
|
||||||
// Get local donor suitability function using minium face area of a cell
|
// Get local donor suitability function using minium face area of a cell
|
||||||
scalarField localDsf(mesh.nCells(), GREAT);
|
scalarField localDsf(mesh.nCells(), GREAT);
|
||||||
|
|
|
@ -70,7 +70,7 @@ public:
|
||||||
//- Construct from components
|
//- Construct from components
|
||||||
faceArea
|
faceArea
|
||||||
(
|
(
|
||||||
const overlapFringe& overlapFringeAlgorithm,
|
const oversetFringe& oversetFringeAlgorithm,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ License
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "noSuitability.H"
|
#include "noSuitability.H"
|
||||||
#include "overlapFringe.H"
|
#include "oversetFringe.H"
|
||||||
#include "oversetRegion.H"
|
#include "oversetRegion.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
@ -45,18 +45,18 @@ addToRunTimeSelectionTable(donorSuitability, noSuitability, dictionary);
|
||||||
|
|
||||||
Foam::donorSuitability::noSuitability::noSuitability
|
Foam::donorSuitability::noSuitability::noSuitability
|
||||||
(
|
(
|
||||||
const overlapFringe& overlapFringeAlgorithm,
|
const oversetFringe& oversetFringeAlgorithm,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
donorSuitability(overlapFringeAlgorithm, dict)
|
donorSuitability(oversetFringeAlgorithm, dict)
|
||||||
{
|
{
|
||||||
// Need to initialise donor suitability function
|
// Need to initialise donor suitability function
|
||||||
const scalarField localDsf(overlapFringeAlgorithm.mesh().nCells(), 0);
|
const scalarField localDsf(oversetFringeAlgorithm.mesh().nCells(), 0);
|
||||||
this->combineDonorSuitabilityFunction(localDsf);
|
this->combineDonorSuitabilityFunction(localDsf);
|
||||||
|
|
||||||
// Set threshold to dummy large value
|
// Set threshold to SMALL such that all the pairs become suitable
|
||||||
this->threshold() = GREAT;
|
this->threshold() = SMALL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ public:
|
||||||
//- Construct from components
|
//- Construct from components
|
||||||
noSuitability
|
noSuitability
|
||||||
(
|
(
|
||||||
const overlapFringe& overlapFringeAlgorithm,
|
const oversetFringe& oversetFringeAlgorithm,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ License
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "patchDistance.H"
|
#include "patchDistance.H"
|
||||||
#include "overlapFringe.H"
|
#include "oversetFringe.H"
|
||||||
#include "oversetRegion.H"
|
#include "oversetRegion.H"
|
||||||
#include "patchWave.H"
|
#include "patchWave.H"
|
||||||
#include "polyPatchID.H"
|
#include "polyPatchID.H"
|
||||||
|
@ -52,14 +52,14 @@ addToRunTimeSelectionTable
|
||||||
|
|
||||||
Foam::donorSuitability::patchDistance::patchDistance
|
Foam::donorSuitability::patchDistance::patchDistance
|
||||||
(
|
(
|
||||||
const overlapFringe& overlapFringeAlgorithm,
|
const oversetFringe& oversetFringeAlgorithm,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
donorSuitability(overlapFringeAlgorithm, dict)
|
donorSuitability(oversetFringeAlgorithm, dict)
|
||||||
{
|
{
|
||||||
// Get reference to fvMesh
|
// Get reference to fvMesh
|
||||||
const fvMesh& mesh = overlapFringeAlgorithm.mesh();
|
const fvMesh& mesh = oversetFringeAlgorithm.mesh();
|
||||||
|
|
||||||
// Get distance patch names for master and donor regions
|
// Get distance patch names for master and donor regions
|
||||||
wordList masterRegionPatchNames =
|
wordList masterRegionPatchNames =
|
||||||
|
|
|
@ -71,7 +71,7 @@ public:
|
||||||
//- Construct from components
|
//- Construct from components
|
||||||
patchDistance
|
patchDistance
|
||||||
(
|
(
|
||||||
const overlapFringe& overlapFringeAlgorithm,
|
const oversetFringe& oversetFringeAlgorithm,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,92 @@ namespace Foam
|
||||||
addToRunTimeSelectionTable(oversetFringe, overlapFringe, dictionary);
|
addToRunTimeSelectionTable(oversetFringe, overlapFringe, dictionary);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
void Foam::overlapFringe::evaluateNonOversetBoundaries
|
||||||
|
(
|
||||||
|
volScalarField::GeometricBoundaryField& psib
|
||||||
|
)
|
||||||
|
{
|
||||||
|
// Code practically copy/pasted from GeometricBoundaryField::evaluateCoupled
|
||||||
|
// GeometricBoundaryField should be redesigned to accomodate for such needs
|
||||||
|
if
|
||||||
|
(
|
||||||
|
Pstream::defaultComms() == Pstream::blocking
|
||||||
|
|| Pstream::defaultComms() == Pstream::nonBlocking
|
||||||
|
)
|
||||||
|
{
|
||||||
|
forAll(psib, patchI)
|
||||||
|
{
|
||||||
|
// Get fvPatchField
|
||||||
|
fvPatchScalarField& psip = psib[patchI];
|
||||||
|
|
||||||
|
if (psip.coupled() && !isA<oversetFvPatchScalarField>(psip))
|
||||||
|
{
|
||||||
|
psip.initEvaluate(Pstream::defaultComms());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Block for any outstanding requests
|
||||||
|
if (Pstream::defaultComms() == Pstream::nonBlocking)
|
||||||
|
{
|
||||||
|
IPstream::waitRequests();
|
||||||
|
OPstream::waitRequests();
|
||||||
|
}
|
||||||
|
|
||||||
|
forAll(psib, patchI)
|
||||||
|
{
|
||||||
|
// Get fvPatchField
|
||||||
|
fvPatchScalarField& psip = psib[patchI];
|
||||||
|
|
||||||
|
if (psip.coupled() && !isA<oversetFvPatchScalarField>(psip))
|
||||||
|
{
|
||||||
|
psip.evaluate(Pstream::defaultComms());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (Pstream::defaultComms() == Pstream::scheduled)
|
||||||
|
{
|
||||||
|
// Get the mesh by looking at first fvPatchField
|
||||||
|
const lduSchedule& patchSchedule =
|
||||||
|
psib[0].dimensionedInternalField().mesh().globalData().
|
||||||
|
patchSchedule();
|
||||||
|
|
||||||
|
forAll(patchSchedule, patchEvalI)
|
||||||
|
{
|
||||||
|
if (patchSchedule[patchEvalI].init)
|
||||||
|
{
|
||||||
|
// Get fvPatchField
|
||||||
|
fvPatchScalarField psip = psib[patchSchedule[patchEvalI].patch];
|
||||||
|
|
||||||
|
if (psip.coupled() && !isA<oversetFvPatchScalarField>(psip))
|
||||||
|
{
|
||||||
|
psip.initEvaluate(Pstream::scheduled);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Get fvPatchField
|
||||||
|
fvPatchScalarField psip = psib[patchSchedule[patchEvalI].patch];
|
||||||
|
|
||||||
|
if (psip.coupled() && !isA<oversetFvPatchScalarField>(psip))
|
||||||
|
{
|
||||||
|
psip.evaluate(Pstream::scheduled);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FatalErrorIn("overlapFringe::evaluateNonOversetBoundaries()")
|
||||||
|
<< "Unsuported communications type "
|
||||||
|
<< Pstream::commsTypeNames[Pstream::defaultCommsType()]
|
||||||
|
<< exit(FatalError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
void Foam::overlapFringe::calcAddressing() const
|
void Foam::overlapFringe::calcAddressing() const
|
||||||
|
@ -56,8 +142,8 @@ void Foam::overlapFringe::calcAddressing() const
|
||||||
// Algorithm:
|
// Algorithm:
|
||||||
// - Create indicator field for correct data exchange accross processor
|
// - Create indicator field for correct data exchange accross processor
|
||||||
// boundaries
|
// boundaries
|
||||||
// - Get holes from overset region and mark immediate neighbours of
|
// - Get holes from overset region (and optionally from specified set)
|
||||||
// holes as acceptors
|
// and mark immediate neighbours of holes as acceptors
|
||||||
// - Loop through (optionally) user specified patches for
|
// - Loop through (optionally) user specified patches for
|
||||||
// initialising the overlap fringe assembly, marking face cells
|
// initialising the overlap fringe assembly, marking face cells
|
||||||
|
|
||||||
|
@ -102,9 +188,26 @@ void Foam::overlapFringe::calcAddressing() const
|
||||||
// holes)
|
// holes)
|
||||||
boolList eligibleAcceptors(mesh.nCells(), true);
|
boolList eligibleAcceptors(mesh.nCells(), true);
|
||||||
|
|
||||||
forAll (cutHoles, hI)
|
// Read user specified holes into allHoles list. Note: if the cell set
|
||||||
|
// is not found, the list will be empty
|
||||||
|
labelList allHoles
|
||||||
|
(
|
||||||
|
cellSet
|
||||||
|
(
|
||||||
|
mesh,
|
||||||
|
holesSetName_,
|
||||||
|
IOobject::READ_IF_PRESENT,
|
||||||
|
IOobject::NO_WRITE
|
||||||
|
).toc()
|
||||||
|
);
|
||||||
|
|
||||||
|
// Extend allHoles with cutHoles
|
||||||
|
allHoles.append(cutHoles);
|
||||||
|
|
||||||
|
// Mark all holes
|
||||||
|
forAll (allHoles, hI)
|
||||||
{
|
{
|
||||||
const label& holeCellI = cutHoles[hI];
|
const label& holeCellI = allHoles[hI];
|
||||||
|
|
||||||
// Mask eligible acceptors
|
// Mask eligible acceptors
|
||||||
eligibleAcceptors[holeCellI] = false;
|
eligibleAcceptors[holeCellI] = false;
|
||||||
|
@ -113,6 +216,7 @@ void Foam::overlapFringe::calcAddressing() const
|
||||||
processorIndicatorIn[holeCellI] = 1.0;
|
processorIndicatorIn[holeCellI] = 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Dynamic list for storing acceptors.
|
// Dynamic list for storing acceptors.
|
||||||
// Note 1: capacity set to number of cells (trading off memory for
|
// Note 1: capacity set to number of cells (trading off memory for
|
||||||
// efficiency)
|
// efficiency)
|
||||||
|
@ -120,11 +224,11 @@ void Foam::overlapFringe::calcAddressing() const
|
||||||
// mask
|
// mask
|
||||||
dynamicLabelList candidateAcceptors(mesh.nCells());
|
dynamicLabelList candidateAcceptors(mesh.nCells());
|
||||||
|
|
||||||
// Loop through cut holes and find acceptor candidates
|
// Loop through all holes and find acceptor candidates
|
||||||
forAll (cutHoles, hI)
|
forAll (allHoles, hI)
|
||||||
{
|
{
|
||||||
// Get neighbours of this hole cell
|
// Get neighbours of this hole cell
|
||||||
const labelList& hNbrs = cc[cutHoles[hI]];
|
const labelList& hNbrs = cc[allHoles[hI]];
|
||||||
|
|
||||||
// Loop through neighbours of this hole cell
|
// Loop through neighbours of this hole cell
|
||||||
forAll (hNbrs, nbrI)
|
forAll (hNbrs, nbrI)
|
||||||
|
@ -152,6 +256,7 @@ void Foam::overlapFringe::calcAddressing() const
|
||||||
// Get reference to region cell zone
|
// Get reference to region cell zone
|
||||||
const cellZone& rcz = region().zone();
|
const cellZone& rcz = region().zone();
|
||||||
|
|
||||||
|
|
||||||
// Loop through patches and mark face cells as eligible acceptors
|
// Loop through patches and mark face cells as eligible acceptors
|
||||||
forAll (initPatchNames_, nameI)
|
forAll (initPatchNames_, nameI)
|
||||||
{
|
{
|
||||||
|
@ -242,6 +347,23 @@ void Foam::overlapFringe::calcAddressing() const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Issue an error if no acceptors have been found for initial guess
|
||||||
|
if (returnReduce(candidateAcceptors.size(), sumOp<label>()) == 0)
|
||||||
|
{
|
||||||
|
FatalErrorIn
|
||||||
|
(
|
||||||
|
"void adaptiveOverlapFringe::calcAddressing() const"
|
||||||
|
) << "Did not find any acceptors to begin with."
|
||||||
|
<< "Check definition of adaptiveOverlap in oversetMeshDict"
|
||||||
|
<< " for region: " << this->region().name() << nl
|
||||||
|
<< "More specifically, check definition of:" << nl
|
||||||
|
<< "1. holePatches (mandatory entry)" << nl
|
||||||
|
<< "2. holes (optional entry)" << nl
|
||||||
|
<< "3. initPatchNames (optional entry)"
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Now we have a decent first guess for acceptors that will be used as
|
// Now we have a decent first guess for acceptors that will be used as
|
||||||
// an initial condition for the iterative overlap assembly
|
// an initial condition for the iterative overlap assembly
|
||||||
// process.
|
// process.
|
||||||
|
@ -261,87 +383,6 @@ void Foam::overlapFringe::clearAddressing() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Foam::overlapFringe::evaluateNonOversetBoundaries
|
|
||||||
(
|
|
||||||
volScalarField::GeometricBoundaryField& psib
|
|
||||||
) const
|
|
||||||
{
|
|
||||||
// Code practically copy/pasted from GeometricBoundaryField::evaluateCoupled
|
|
||||||
// GeometricBoundaryField should be redesigned to accomodate for such needs
|
|
||||||
if
|
|
||||||
(
|
|
||||||
Pstream::defaultComms() == Pstream::blocking
|
|
||||||
|| Pstream::defaultComms() == Pstream::nonBlocking
|
|
||||||
)
|
|
||||||
{
|
|
||||||
forAll(psib, patchI)
|
|
||||||
{
|
|
||||||
// Get fvPatchField
|
|
||||||
fvPatchScalarField& psip = psib[patchI];
|
|
||||||
|
|
||||||
if (psip.coupled() && !isA<oversetFvPatchScalarField>(psip))
|
|
||||||
{
|
|
||||||
psip.initEvaluate(Pstream::defaultComms());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Block for any outstanding requests
|
|
||||||
if (Pstream::defaultComms() == Pstream::nonBlocking)
|
|
||||||
{
|
|
||||||
IPstream::waitRequests();
|
|
||||||
OPstream::waitRequests();
|
|
||||||
}
|
|
||||||
|
|
||||||
forAll(psib, patchI)
|
|
||||||
{
|
|
||||||
// Get fvPatchField
|
|
||||||
fvPatchScalarField& psip = psib[patchI];
|
|
||||||
|
|
||||||
if (psip.coupled() && !isA<oversetFvPatchScalarField>(psip))
|
|
||||||
{
|
|
||||||
psip.evaluate(Pstream::defaultComms());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (Pstream::defaultComms() == Pstream::scheduled)
|
|
||||||
{
|
|
||||||
const lduSchedule& patchSchedule =
|
|
||||||
region().mesh().globalData().patchSchedule();
|
|
||||||
|
|
||||||
forAll(patchSchedule, patchEvalI)
|
|
||||||
{
|
|
||||||
if (patchSchedule[patchEvalI].init)
|
|
||||||
{
|
|
||||||
// Get fvPatchField
|
|
||||||
fvPatchScalarField psip = psib[patchSchedule[patchEvalI].patch];
|
|
||||||
|
|
||||||
if (psip.coupled() && !isA<oversetFvPatchScalarField>(psip))
|
|
||||||
{
|
|
||||||
psip.initEvaluate(Pstream::scheduled);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Get fvPatchField
|
|
||||||
fvPatchScalarField psip = psib[patchSchedule[patchEvalI].patch];
|
|
||||||
|
|
||||||
if (psip.coupled() && !isA<oversetFvPatchScalarField>(psip))
|
|
||||||
{
|
|
||||||
psip.evaluate(Pstream::scheduled);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
FatalErrorIn("overlapFringe::evaluateNonOversetBoundaries()")
|
|
||||||
<< "Unsuported communications type "
|
|
||||||
<< Pstream::commsTypeNames[Pstream::defaultCommsType()]
|
|
||||||
<< exit(FatalError);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// Construct from dictionary
|
// Construct from dictionary
|
||||||
|
@ -357,14 +398,16 @@ Foam::overlapFringe::overlapFringe
|
||||||
acceptorsPtr_(NULL),
|
acceptorsPtr_(NULL),
|
||||||
finalDonorAcceptorsPtr_(NULL),
|
finalDonorAcceptorsPtr_(NULL),
|
||||||
|
|
||||||
donorSuitability_
|
holesSetName_(dict.lookupOrDefault<word>("holes", word())),
|
||||||
(
|
|
||||||
donorSuitability::donorSuitability::New(*this, dict)
|
|
||||||
),
|
|
||||||
initPatchNames_
|
initPatchNames_
|
||||||
(
|
(
|
||||||
dict.lookupOrDefault<wordList>("initPatchNames", wordList())
|
dict.lookupOrDefault<wordList>("initPatchNames", wordList())
|
||||||
),
|
),
|
||||||
|
|
||||||
|
donorSuitability_
|
||||||
|
(
|
||||||
|
donorSuitability::donorSuitability::New(*this, dict)
|
||||||
|
),
|
||||||
minGlobalFraction_
|
minGlobalFraction_
|
||||||
(
|
(
|
||||||
readScalar(dict.lookup("suitablePairFraction"))
|
readScalar(dict.lookup("suitablePairFraction"))
|
||||||
|
@ -803,6 +846,15 @@ bool Foam::overlapFringe::updateIteration
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (returnReduce(newAcceptors.empty(), andOp<bool>()))
|
||||||
|
{
|
||||||
|
FatalErrorIn("overlapFringe::updateIteration()")
|
||||||
|
<< "Did not find any new candidate acceptors."
|
||||||
|
<< nl
|
||||||
|
<< "Please review your overlap fringe assembly settings."
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
// Transfer back cumulative fringe holes into the fringeHolesPtr_
|
// Transfer back cumulative fringe holes into the fringeHolesPtr_
|
||||||
fringeHolesPtr_->transfer(cumFringeHoles);
|
fringeHolesPtr_->transfer(cumFringeHoles);
|
||||||
|
|
||||||
|
@ -817,7 +869,6 @@ bool Foam::overlapFringe::updateIteration
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const Foam::labelList& Foam::overlapFringe::fringeHoles() const
|
const Foam::labelList& Foam::overlapFringe::fringeHoles() const
|
||||||
{
|
{
|
||||||
if (!fringeHolesPtr_)
|
if (!fringeHolesPtr_)
|
|
@ -39,9 +39,6 @@ Description
|
||||||
acceptor search from
|
acceptor search from
|
||||||
- minGlobalFraction_: minimum allowable global fraction of suitable pairs
|
- minGlobalFraction_: minimum allowable global fraction of suitable pairs
|
||||||
- cumulativeDonorAcceptorsPtr_: list of suitable donor/acceptor pairs
|
- cumulativeDonorAcceptorsPtr_: list of suitable donor/acceptor pairs
|
||||||
- cacheFringe_: switch to control whether to cache the fringe for next
|
|
||||||
mesh updates (start from latest suitable set of acceptors, rather than
|
|
||||||
from the beginning)
|
|
||||||
- fringeIter_: iteration counter
|
- fringeIter_: iteration counter
|
||||||
|
|
||||||
Member function updateIteration controls the iterative process:
|
Member function updateIteration controls the iterative process:
|
||||||
|
@ -94,15 +91,24 @@ class overlapFringe
|
||||||
mutable donorAcceptorList* finalDonorAcceptorsPtr_;
|
mutable donorAcceptorList* finalDonorAcceptorsPtr_;
|
||||||
|
|
||||||
|
|
||||||
|
// Optional initialization data
|
||||||
|
|
||||||
|
//- Name of the cell set defining initial holes (empty by default).
|
||||||
|
// Useful when the resolution of the background mesh is much
|
||||||
|
// coarser than the front mesh and no hole is found
|
||||||
|
const word holesSetName_;
|
||||||
|
|
||||||
|
//- Optional list of patches to start the iterative fringe assembly
|
||||||
|
// process (empty list by default). Useful when we actually have
|
||||||
|
// a hole as a patch in the background mesh
|
||||||
|
const wordList initPatchNames_;
|
||||||
|
|
||||||
|
|
||||||
// Data for iteration control
|
// Data for iteration control
|
||||||
|
|
||||||
//- Run-time selectable donor/acceptor suitability handler
|
//- Run-time selectable donor/acceptor suitability handler
|
||||||
autoPtr<donorSuitability::donorSuitability> donorSuitability_;
|
autoPtr<donorSuitability::donorSuitability> donorSuitability_;
|
||||||
|
|
||||||
//- List of patches to start the iterative fringe assembly process
|
|
||||||
// (empty list by default)
|
|
||||||
const wordList initPatchNames_;
|
|
||||||
|
|
||||||
//- Minimum global fraction of suitable donors. Iteration process
|
//- Minimum global fraction of suitable donors. Iteration process
|
||||||
// stops if the calculated fraction is greater than the minimum
|
// stops if the calculated fraction is greater than the minimum
|
||||||
// allowable fraction
|
// allowable fraction
|
||||||
|
@ -120,25 +126,23 @@ class overlapFringe
|
||||||
|
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
//- Disallow default bitwise copy construct
|
// Copy control
|
||||||
overlapFringe(const overlapFringe&);
|
|
||||||
|
|
||||||
//- Disallow default bitwise assignment
|
//- Disallow default bitwise copy construct
|
||||||
void operator=(const overlapFringe&);
|
overlapFringe(const overlapFringe&);
|
||||||
|
|
||||||
|
//- Disallow default bitwise assignment
|
||||||
|
void operator=(const overlapFringe&);
|
||||||
|
|
||||||
|
|
||||||
//- Calculate hole-acceptor addressing
|
// Addressing calculation functions
|
||||||
void calcAddressing() const;
|
|
||||||
|
|
||||||
//- Clear hole-acceptor addressing
|
//- Calculate hole-acceptor addressing
|
||||||
void clearAddressing() const;
|
void calcAddressing() const;
|
||||||
|
|
||||||
|
//- Clear hole-acceptor addressing
|
||||||
|
void clearAddressing() const;
|
||||||
|
|
||||||
//- Helper function used to evaluate coupled boundaries, excluding
|
|
||||||
// overset patch
|
|
||||||
void evaluateNonOversetBoundaries
|
|
||||||
(
|
|
||||||
volScalarField::GeometricBoundaryField& psib
|
|
||||||
) const;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -146,6 +150,16 @@ public:
|
||||||
TypeName("overlap");
|
TypeName("overlap");
|
||||||
|
|
||||||
|
|
||||||
|
// Static Member Functions
|
||||||
|
|
||||||
|
//- Helper function used to evaluate coupled boundaries, excluding
|
||||||
|
// overset patch
|
||||||
|
static void evaluateNonOversetBoundaries
|
||||||
|
(
|
||||||
|
volScalarField::GeometricBoundaryField& psib
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from dictionary
|
//- Construct from dictionary
|
||||||
|
@ -157,9 +171,8 @@ public:
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// Destructor
|
//- Destructor
|
||||||
|
virtual ~overlapFringe();
|
||||||
virtual ~overlapFringe();
|
|
||||||
|
|
||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
|
@ -35,7 +35,7 @@ SourceFiles
|
||||||
#ifndef oversetFvPatchField_H
|
#ifndef oversetFvPatchField_H
|
||||||
#define oversetFvPatchField_H
|
#define oversetFvPatchField_H
|
||||||
|
|
||||||
#include "coupledFvPatchField.H"
|
#include "coupledFvPatchFields.H"
|
||||||
#include "oversetLduInterfaceField.H"
|
#include "oversetLduInterfaceField.H"
|
||||||
#include "oversetFvPatch.H"
|
#include "oversetFvPatch.H"
|
||||||
#include "oversetMesh.H"
|
#include "oversetMesh.H"
|
||||||
|
|
|
@ -197,10 +197,11 @@ void Foam::oversetRegion::calcDonorAcceptorCells() const
|
||||||
// - cellSearch (depends on eligible donors).
|
// - cellSearch (depends on eligible donors).
|
||||||
if (!regionFoundSuitableOverlap)
|
if (!regionFoundSuitableOverlap)
|
||||||
{
|
{
|
||||||
deleteDemandDrivenData(curRegion.holeCellsPtr_);
|
|
||||||
deleteDemandDrivenData(curRegion.eligibleDonorCellsPtr_);
|
|
||||||
deleteDemandDrivenData(curRegion.cellSearchPtr_);
|
deleteDemandDrivenData(curRegion.cellSearchPtr_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
deleteDemandDrivenData(curRegion.holeCellsPtr_);
|
||||||
|
deleteDemandDrivenData(curRegion.eligibleDonorCellsPtr_);
|
||||||
}
|
}
|
||||||
} while (!foundGlobalOverlap);
|
} while (!foundGlobalOverlap);
|
||||||
|
|
||||||
|
@ -1164,14 +1165,17 @@ bool Foam::oversetRegion::updateDonorAcceptors() const
|
||||||
// Get index obtained by octree
|
// Get index obtained by octree
|
||||||
const label donorCandidateIndex = pih.index();
|
const label donorCandidateIndex = pih.index();
|
||||||
|
|
||||||
|
// Whether acceptor is within donor's bounding box
|
||||||
|
const bool withinBB = mesh_.pointInCellBB
|
||||||
|
(
|
||||||
|
curP,
|
||||||
|
curDonors[donorCandidateIndex]
|
||||||
|
);
|
||||||
|
|
||||||
if
|
if
|
||||||
(
|
(
|
||||||
!daPair.donorFound()
|
!daPair.donorFound()
|
||||||
|| mesh_.pointInCellBB
|
|| withinBB
|
||||||
(
|
|
||||||
curP,
|
|
||||||
curDonors[donorCandidateIndex]
|
|
||||||
)
|
|
||||||
|| (
|
|| (
|
||||||
mag(cc[curDonors[donorCandidateIndex]] - curP)
|
mag(cc[curDonors[donorCandidateIndex]] - curP)
|
||||||
< mag(daPair.donorPoint() - curP)
|
< mag(daPair.donorPoint() - curP)
|
||||||
|
@ -1183,7 +1187,8 @@ bool Foam::oversetRegion::updateDonorAcceptors() const
|
||||||
(
|
(
|
||||||
curDonors[donorCandidateIndex],
|
curDonors[donorCandidateIndex],
|
||||||
Pstream::myProcNo(),
|
Pstream::myProcNo(),
|
||||||
cc[curDonors[donorCandidateIndex]]
|
cc[curDonors[donorCandidateIndex]],
|
||||||
|
withinBB
|
||||||
);
|
);
|
||||||
|
|
||||||
// Set extended donors
|
// Set extended donors
|
||||||
|
@ -1352,10 +1357,18 @@ bool Foam::oversetRegion::updateDonorAcceptors() const
|
||||||
{
|
{
|
||||||
// This acceptor has been previously visited, meaning we have to
|
// This acceptor has been previously visited, meaning we have to
|
||||||
// make a choice whether to update it or not. At this point, the
|
// make a choice whether to update it or not. At this point, the
|
||||||
// choice will be based on least distance from acceptor cell centre
|
// choice will be based on:
|
||||||
// to donor cell centre. Run-time selectable Donor Suitability
|
// a) If this donor is within bounding box and the original one is
|
||||||
// Functions will be applied in oversetFringe
|
// not, prefer the new donor
|
||||||
if (curDA.distance() < curDACombined.distance())
|
// b) Otherwise prefert on e with least distance from acceptor cell
|
||||||
|
// centre to donor cell centre.
|
||||||
|
// Run-time selectable Donor Suitability Function will be applied
|
||||||
|
// in oversetFringe
|
||||||
|
if
|
||||||
|
(
|
||||||
|
(curDA.withinBB() && !curDACombined.withinBB())
|
||||||
|
|| (curDA.distance() < curDACombined.distance())
|
||||||
|
)
|
||||||
{
|
{
|
||||||
// This is a better candidate for the same acceptor, set donor
|
// This is a better candidate for the same acceptor, set donor
|
||||||
// accordingly
|
// accordingly
|
||||||
|
@ -1363,12 +1376,35 @@ bool Foam::oversetRegion::updateDonorAcceptors() const
|
||||||
(
|
(
|
||||||
curDA.donorCell(),
|
curDA.donorCell(),
|
||||||
curDA.donorProcNo(),
|
curDA.donorProcNo(),
|
||||||
curDA.donorPoint()
|
curDA.donorPoint(),
|
||||||
|
curDA.withinBB()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update withinBB flag if the donor is within bounding box of acceptor
|
||||||
|
// (previously we checked whether the acceptor is within bounding box of
|
||||||
|
// donor)
|
||||||
|
forAll (combinedDonorAcceptorList, daI)
|
||||||
|
{
|
||||||
|
donorAcceptor& curDA = combinedDonorAcceptorList[daI];
|
||||||
|
|
||||||
|
// If the acceptor is not within bounding box of donor, set the flag
|
||||||
|
// other way around
|
||||||
|
if (!curDA.withinBB())
|
||||||
|
{
|
||||||
|
curDA.setWithinBB
|
||||||
|
(
|
||||||
|
mesh_.pointInCellBB
|
||||||
|
(
|
||||||
|
curDA.donorPoint(),
|
||||||
|
curDA.acceptorCell()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Check whether all acceptors have been visited. Used for testing/debugging
|
// Check whether all acceptors have been visited. Used for testing/debugging
|
||||||
// parallel comms
|
// parallel comms
|
||||||
if (oversetMesh::debug)
|
if (oversetMesh::debug)
|
||||||
|
|
|
@ -551,23 +551,23 @@ Foam::tmp<Foam::vectorField> Foam::tractionBoundaryGradient::snGrad
|
||||||
"((threeK*rho)*alpha)"
|
"((threeK*rho)*alpha)"
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!incremental)
|
if (incremental)
|
||||||
{
|
{
|
||||||
const fvPatchScalarField& DT =
|
const fvPatchScalarField& DT =
|
||||||
patch.lookupPatchField<volScalarField, scalar>("DT");
|
patch.lookupPatchField<volScalarField, scalar>("DT");
|
||||||
|
|
||||||
gradient += n*threeKalpha*DT;
|
gradient += n*threeKalpha*DT;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const fvPatchScalarField& T =
|
const fvPatchScalarField& T =
|
||||||
patch.lookupPatchField<volScalarField, scalar>("T");
|
patch.lookupPatchField<volScalarField, scalar>("T");
|
||||||
|
|
||||||
const scalarField T0 =
|
const scalarField T0 =
|
||||||
thermo.T0()().boundaryField()[patch.index()];
|
thermo.T0()().boundaryField()[patch.index()];
|
||||||
|
|
||||||
gradient += n*threeKalpha*(T - T0);
|
gradient += n*threeKalpha*(T - T0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Higher order non-linear terms
|
// Higher order non-linear terms
|
||||||
|
|
|
@ -21,7 +21,9 @@ surfaceFile "multipleOrifices.stl";
|
||||||
|
|
||||||
maxCellSize 5.0;
|
maxCellSize 5.0;
|
||||||
|
|
||||||
//boundaryCellSize 2.0;
|
boundaryCellSize 2.0;
|
||||||
|
|
||||||
|
minCellSize 1.0;
|
||||||
|
|
||||||
localRefinement
|
localRefinement
|
||||||
{
|
{
|
||||||
|
@ -40,15 +42,15 @@ localRefinement
|
||||||
cellSize 0.3;
|
cellSize 0.3;
|
||||||
}
|
}
|
||||||
|
|
||||||
"tubes.*"
|
// "tubes.*"
|
||||||
{
|
// {
|
||||||
cellSize 0.4;
|
// cellSize 0.6;
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
boundaryLayers
|
boundaryLayers
|
||||||
{
|
{
|
||||||
nLayers 1;
|
nLayers 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
renameBoundary
|
renameBoundary
|
||||||
|
|
|
@ -40,7 +40,7 @@ regions
|
||||||
donorSuitability
|
donorSuitability
|
||||||
{
|
{
|
||||||
type cellVolumes;
|
type cellVolumes;
|
||||||
threshold 0.99;
|
threshold 0.2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ regions
|
||||||
donorSuitability
|
donorSuitability
|
||||||
{
|
{
|
||||||
type cellVolumes;
|
type cellVolumes;
|
||||||
threshold 0.99;
|
threshold 0.2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,10 +49,10 @@ regions
|
||||||
|
|
||||||
donorSuitability
|
donorSuitability
|
||||||
{
|
{
|
||||||
// Donor/acceptor pair must have cell volumes that differ not
|
// Donor/acceptor pair must have cell volumes that are at least
|
||||||
// more than 60% of the larger cell
|
// 40% within each other
|
||||||
type cellVolumes;
|
type cellVolumes;
|
||||||
threshold 0.6;
|
threshold 0.4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,10 +79,10 @@ regions
|
||||||
|
|
||||||
donorSuitability
|
donorSuitability
|
||||||
{
|
{
|
||||||
// Donor/acceptor pair must have cell volumes that differ not
|
// Donor/acceptor pair must have cell volumes that are at least
|
||||||
// more than 60% of the larger cell
|
// 50% within each other
|
||||||
type cellVolumes;
|
type cellVolumes;
|
||||||
threshold 0.6;
|
threshold 0.5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -109,8 +109,8 @@ regions
|
||||||
|
|
||||||
donorSuitability
|
donorSuitability
|
||||||
{
|
{
|
||||||
// Donor/acceptor pair must have cell volumes that differ not
|
// Donor/acceptor pair must have cell volumes that are at least
|
||||||
// more than 40% of the larger cell
|
// 40% within each other
|
||||||
type cellVolumes;
|
type cellVolumes;
|
||||||
threshold 0.4;
|
threshold 0.4;
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ boundaryField
|
||||||
|
|
||||||
airfoil
|
airfoil
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -12,6 +12,7 @@ cleanCase
|
||||||
\rm -rf surfaces
|
\rm -rf surfaces
|
||||||
\rm -f *raw
|
\rm -f *raw
|
||||||
\rm -rf logs nohup.out
|
\rm -rf logs nohup.out
|
||||||
|
\rm -rf postProcessing
|
||||||
|
|
||||||
mkdir constant/polyMesh
|
mkdir constant/polyMesh
|
||||||
cp -r save 0
|
cp -r save 0
|
||||||
|
|
|
@ -46,4 +46,4 @@ runApplication $application2
|
||||||
# Perform sampling
|
# Perform sampling
|
||||||
runApplication sample -latestTime
|
runApplication sample -latestTime
|
||||||
timeStep=$(grep "^endTime" system/controlDict | awk '{ print $2 }' | sed 's/;//g')
|
timeStep=$(grep "^endTime" system/controlDict | awk '{ print $2 }' | sed 's/;//g')
|
||||||
cp -v surfaces/$timeStep/p_solidWall.raw .
|
cp -v postProcessing/surfaces/$timeStep/p_solidWall.raw .
|
||||||
|
|
|
@ -35,25 +35,26 @@ regions
|
||||||
|
|
||||||
fringe
|
fringe
|
||||||
{
|
{
|
||||||
type overlap;
|
type adaptiveOverlap;
|
||||||
|
|
||||||
// Optional list of patches to start the fringe minimisation from
|
// Optional list of patches to start the fringe minimisation from
|
||||||
initPatchNames ();
|
initPatchNames ();
|
||||||
|
|
||||||
// Fraction of minimum allowable suitable pairs respecting the
|
// Number of iterations for adaptive overlap search
|
||||||
// chosen donor suitability criteria
|
specifiedIterationsNumber 12; // 5 by default
|
||||||
suitablePairFraction 0.8;
|
|
||||||
|
|
||||||
// Whether to start fringe assembly from the previous set of
|
// Whether to try additional iterations
|
||||||
// acceptors (for moving mesh cases)
|
additionalIterations yes; // yes by default
|
||||||
cacheFringe no;
|
|
||||||
|
// Orphan suitability
|
||||||
|
orphanSuitability 0; // 1 by default
|
||||||
|
|
||||||
donorSuitability
|
donorSuitability
|
||||||
{
|
{
|
||||||
// Donor/acceptor pair must have cell volumes that differ not
|
// Donor/acceptor pair must have cell volumes that differ not
|
||||||
// more than 60% of the larger cell
|
// more than 20% of the larger cell
|
||||||
type cellVolumes;
|
type cellVolumes;
|
||||||
threshold 0.6;
|
threshold 0.2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,23 +66,24 @@ regions
|
||||||
|
|
||||||
fringe
|
fringe
|
||||||
{
|
{
|
||||||
type overlap;
|
type adaptiveOverlap;
|
||||||
|
|
||||||
// Optional list of patches to start the fringe minimisation from
|
// Optional list of patches to start the fringe minimisation from
|
||||||
initPatchNames (OversetMiddle);
|
initPatchNames (OversetMiddle);
|
||||||
|
|
||||||
// Fraction of minimum allowable suitable pairs respecting the
|
// Number of iterations for adaptive overlap search
|
||||||
// chosen donor suitability criteria
|
specifiedIterationsNumber 5; // 5 by default
|
||||||
suitablePairFraction 0.9;
|
|
||||||
|
|
||||||
// Whether to start fringe assembly from the previous set of
|
// Whether to try additional iterations
|
||||||
// acceptors (for moving mesh cases)
|
additionalIterations yes; // yes by default
|
||||||
cacheFringe no;
|
|
||||||
|
// Orphan suitability
|
||||||
|
orphanSuitability 0; // 1 by default
|
||||||
|
|
||||||
donorSuitability
|
donorSuitability
|
||||||
{
|
{
|
||||||
// Donor/acceptor pair must have cell volumes that differ not
|
// Donor/acceptor pair must have cell volumes that are at least
|
||||||
// more than 60% of the larger cell
|
// 60% within each other
|
||||||
type cellVolumes;
|
type cellVolumes;
|
||||||
threshold 0.6;
|
threshold 0.6;
|
||||||
}
|
}
|
||||||
|
@ -95,23 +97,24 @@ regions
|
||||||
|
|
||||||
fringe
|
fringe
|
||||||
{
|
{
|
||||||
type overlap;
|
type adaptiveOverlap;
|
||||||
|
|
||||||
// Optional list of patches to start the fringe minimisation from
|
// Optional list of patches to start the fringe minimisation from
|
||||||
initPatchNames (OversetFront);
|
initPatchNames (OversetFront);
|
||||||
|
|
||||||
// Fraction of minimum allowable suitable pairs respecting the
|
// Number of iterations for adaptive overlap search
|
||||||
// chosen donor suitability criteria
|
specifiedIterationsNumber 5; // 5 by default
|
||||||
suitablePairFraction 0.8;
|
|
||||||
|
|
||||||
// Whether to start fringe assembly from the previous set of
|
// Whether to try additional iterations
|
||||||
// acceptors (for moving mesh cases)
|
additionalIterations yes; // yes by default
|
||||||
cacheFringe no;
|
|
||||||
|
// Orphan suitability
|
||||||
|
orphanSuitability 0; // 1 by default
|
||||||
|
|
||||||
donorSuitability
|
donorSuitability
|
||||||
{
|
{
|
||||||
// Donor/acceptor pair must have cell volumes that differ not
|
// Donor/acceptor pair must have cell volumes that are at least
|
||||||
// more than 40% of the larger cell
|
// 40% within each other
|
||||||
type cellVolumes;
|
type cellVolumes;
|
||||||
threshold 0.4;
|
threshold 0.4;
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ boundaryField
|
||||||
|
|
||||||
airfoil
|
airfoil
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -62,7 +62,7 @@ boundaryField
|
||||||
|
|
||||||
airfoil
|
airfoil
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -12,6 +12,7 @@ cleanCase
|
||||||
\rm -rf surfaces
|
\rm -rf surfaces
|
||||||
\rm -f *raw
|
\rm -f *raw
|
||||||
\rm -rf logs nohup.out
|
\rm -rf logs nohup.out
|
||||||
|
\rm -rf postProcessing
|
||||||
|
|
||||||
mkdir constant/polyMesh
|
mkdir constant/polyMesh
|
||||||
cp -r save 0
|
cp -r save 0
|
||||||
|
|
|
@ -10,14 +10,14 @@ application2="simpleOversetFoam"
|
||||||
\cp -r ../oversetMeshes/backgroundMesh/constant/polyMesh constant/.
|
\cp -r ../oversetMeshes/backgroundMesh/constant/polyMesh constant/.
|
||||||
|
|
||||||
# Merge meshes and clean up
|
# Merge meshes and clean up
|
||||||
runApplication mergeMeshes .. explicitOverset . ../oversetMeshes/middleMesh
|
runApplication mergeMeshes .. implicitConservativeOverset . ../oversetMeshes/middleMesh
|
||||||
\rm -rf constant/polyMesh
|
\rm -rf constant/polyMesh
|
||||||
\mv 1/polyMesh constant
|
\mv 1/polyMesh constant
|
||||||
rm -rf 1
|
rm -rf 1
|
||||||
\rm -f constant/polyMesh/pointZones constant/polyMesh/pointZones.gz constant/polyMesh/faceZones constant/polyMesh/faceZones.gz constant/polyMesh/cellZones constant/polyMesh/cellZones.gz
|
\rm -f constant/polyMesh/pointZones constant/polyMesh/pointZones.gz constant/polyMesh/faceZones constant/polyMesh/faceZones.gz constant/polyMesh/cellZones constant/polyMesh/cellZones.gz
|
||||||
\mv log.mergeMeshes log.mergeMeshes-backgroundMiddle
|
\mv log.mergeMeshes log.mergeMeshes-backgroundMiddle
|
||||||
|
|
||||||
runApplication mergeMeshes .. explicitOverset . ../oversetMeshes/frontMesh
|
runApplication mergeMeshes .. implicitConservativeOverset . ../oversetMeshes/frontMesh
|
||||||
\rm -rf constant/polyMesh
|
\rm -rf constant/polyMesh
|
||||||
\mv 1/polyMesh constant
|
\mv 1/polyMesh constant
|
||||||
rm -rf 1
|
rm -rf 1
|
||||||
|
@ -46,4 +46,4 @@ runApplication $application2
|
||||||
# Perform sampling
|
# Perform sampling
|
||||||
runApplication sample -latestTime
|
runApplication sample -latestTime
|
||||||
timeStep=$(grep "^endTime" system/controlDict | awk '{ print $2 }' | sed 's/;//g')
|
timeStep=$(grep "^endTime" system/controlDict | awk '{ print $2 }' | sed 's/;//g')
|
||||||
cp -v surfaces/$timeStep/p_solidWall.raw .
|
cp -v postProcessing/surfaces/$timeStep/p_solidWall.raw .
|
||||||
|
|
|
@ -35,25 +35,26 @@ regions
|
||||||
|
|
||||||
fringe
|
fringe
|
||||||
{
|
{
|
||||||
type overlap;
|
type adaptiveOverlap;
|
||||||
|
|
||||||
// Optional list of patches to start the fringe minimisation from
|
// Optional list of patches to start the fringe minimisation from
|
||||||
initPatchNames ();
|
initPatchNames ();
|
||||||
|
|
||||||
// Fraction of minimum allowable suitable pairs respecting the
|
// Number of iterations for adaptive overlap search
|
||||||
// chosen donor suitability criteria
|
specifiedIterationsNumber 12; // 5 by default
|
||||||
suitablePairFraction 0.8;
|
|
||||||
|
|
||||||
// Whether to start fringe assembly from the previous set of
|
// Whether to try additional iterations
|
||||||
// acceptors (for moving mesh cases)
|
additionalIterations yes; // yes by default
|
||||||
cacheFringe no;
|
|
||||||
|
// Orphan suitability
|
||||||
|
orphanSuitability 0; // 1 by default
|
||||||
|
|
||||||
donorSuitability
|
donorSuitability
|
||||||
{
|
{
|
||||||
// Donor/acceptor pair must have cell volumes that differ not
|
// Donor/acceptor pair must have cell volumes that differ not
|
||||||
// more than 60% of the larger cell
|
// more than 20% of the larger cell
|
||||||
type cellVolumes;
|
type cellVolumes;
|
||||||
threshold 0.6;
|
threshold 0.2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,23 +66,24 @@ regions
|
||||||
|
|
||||||
fringe
|
fringe
|
||||||
{
|
{
|
||||||
type overlap;
|
type adaptiveOverlap;
|
||||||
|
|
||||||
// Optional list of patches to start the fringe minimisation from
|
// Optional list of patches to start the fringe minimisation from
|
||||||
initPatchNames (OversetMiddle);
|
initPatchNames (OversetMiddle);
|
||||||
|
|
||||||
// Fraction of minimum allowable suitable pairs respecting the
|
// Number of iterations for adaptive overlap search
|
||||||
// chosen donor suitability criteria
|
specifiedIterationsNumber 5; // 5 by default
|
||||||
suitablePairFraction 0.9;
|
|
||||||
|
|
||||||
// Whether to start fringe assembly from the previous set of
|
// Whether to try additional iterations
|
||||||
// acceptors (for moving mesh cases)
|
additionalIterations yes; // yes by default
|
||||||
cacheFringe no;
|
|
||||||
|
// Orphan suitability
|
||||||
|
orphanSuitability 0; // 1 by default
|
||||||
|
|
||||||
donorSuitability
|
donorSuitability
|
||||||
{
|
{
|
||||||
// Donor/acceptor pair must have cell volumes that differ not
|
// Donor/acceptor pair must have cell volumes that are at least
|
||||||
// more than 60% of the larger cell
|
// 60% within each other
|
||||||
type cellVolumes;
|
type cellVolumes;
|
||||||
threshold 0.6;
|
threshold 0.6;
|
||||||
}
|
}
|
||||||
|
@ -95,23 +97,24 @@ regions
|
||||||
|
|
||||||
fringe
|
fringe
|
||||||
{
|
{
|
||||||
type overlap;
|
type adaptiveOverlap;
|
||||||
|
|
||||||
// Optional list of patches to start the fringe minimisation from
|
// Optional list of patches to start the fringe minimisation from
|
||||||
initPatchNames (OversetFront);
|
initPatchNames (OversetFront);
|
||||||
|
|
||||||
// Fraction of minimum allowable suitable pairs respecting the
|
// Number of iterations for adaptive overlap search
|
||||||
// chosen donor suitability criteria
|
specifiedIterationsNumber 5; // 5 by default
|
||||||
suitablePairFraction 0.8;
|
|
||||||
|
|
||||||
// Whether to start fringe assembly from the previous set of
|
// Whether to try additional iterations
|
||||||
// acceptors (for moving mesh cases)
|
additionalIterations yes; // yes by default
|
||||||
cacheFringe no;
|
|
||||||
|
// Orphan suitability
|
||||||
|
orphanSuitability 0; // 1 by default
|
||||||
|
|
||||||
donorSuitability
|
donorSuitability
|
||||||
{
|
{
|
||||||
// Donor/acceptor pair must have cell volumes that differ not
|
// Donor/acceptor pair must have cell volumes that are at least
|
||||||
// more than 40% of the larger cell
|
// 40% within each other
|
||||||
type cellVolumes;
|
type cellVolumes;
|
||||||
threshold 0.4;
|
threshold 0.4;
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ boundaryField
|
||||||
|
|
||||||
airfoil
|
airfoil
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -62,7 +62,7 @@ boundaryField
|
||||||
|
|
||||||
airfoil
|
airfoil
|
||||||
{
|
{
|
||||||
type nutWallFunction;
|
type nutkWallFunction;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
|
|
@ -12,6 +12,7 @@ cleanCase
|
||||||
\rm -rf surfaces
|
\rm -rf surfaces
|
||||||
\rm -f *raw
|
\rm -f *raw
|
||||||
\rm -rf logs nohup.out
|
\rm -rf logs nohup.out
|
||||||
|
\rm -rf postProcessing
|
||||||
|
|
||||||
mkdir constant/polyMesh
|
mkdir constant/polyMesh
|
||||||
cp -r save 0
|
cp -r save 0
|
||||||
|
|
|
@ -10,14 +10,14 @@ application2="simpleOversetFoam"
|
||||||
\cp -r ../oversetMeshes/backgroundMesh/constant/polyMesh constant/.
|
\cp -r ../oversetMeshes/backgroundMesh/constant/polyMesh constant/.
|
||||||
|
|
||||||
# Merge meshes and clean up
|
# Merge meshes and clean up
|
||||||
runApplication mergeMeshes .. explicitOverset . ../oversetMeshes/middleMesh
|
runApplication mergeMeshes .. implicitNonConservativeOverset . ../oversetMeshes/middleMesh
|
||||||
\rm -rf constant/polyMesh
|
\rm -rf constant/polyMesh
|
||||||
\mv 1/polyMesh constant
|
\mv 1/polyMesh constant
|
||||||
rm -rf 1
|
rm -rf 1
|
||||||
\rm -f constant/polyMesh/pointZones constant/polyMesh/pointZones.gz constant/polyMesh/faceZones constant/polyMesh/faceZones.gz constant/polyMesh/cellZones constant/polyMesh/cellZones.gz
|
\rm -f constant/polyMesh/pointZones constant/polyMesh/pointZones.gz constant/polyMesh/faceZones constant/polyMesh/faceZones.gz constant/polyMesh/cellZones constant/polyMesh/cellZones.gz
|
||||||
\mv log.mergeMeshes log.mergeMeshes-backgroundMiddle
|
\mv log.mergeMeshes log.mergeMeshes-backgroundMiddle
|
||||||
|
|
||||||
runApplication mergeMeshes .. explicitOverset . ../oversetMeshes/frontMesh
|
runApplication mergeMeshes .. implicitNonConservativeOverset . ../oversetMeshes/frontMesh
|
||||||
\rm -rf constant/polyMesh
|
\rm -rf constant/polyMesh
|
||||||
\mv 1/polyMesh constant
|
\mv 1/polyMesh constant
|
||||||
rm -rf 1
|
rm -rf 1
|
||||||
|
@ -46,4 +46,4 @@ runApplication $application2
|
||||||
# Perform sampling
|
# Perform sampling
|
||||||
runApplication sample -latestTime
|
runApplication sample -latestTime
|
||||||
timeStep=$(grep "^endTime" system/controlDict | awk '{ print $2 }' | sed 's/;//g')
|
timeStep=$(grep "^endTime" system/controlDict | awk '{ print $2 }' | sed 's/;//g')
|
||||||
cp -v surfaces/$timeStep/p_solidWall.raw .
|
cp -v postProcessing/surfaces/$timeStep/p_solidWall.raw .
|
||||||
|
|
|
@ -35,25 +35,26 @@ regions
|
||||||
|
|
||||||
fringe
|
fringe
|
||||||
{
|
{
|
||||||
type overlap;
|
type adaptiveOverlap;
|
||||||
|
|
||||||
// Optional list of patches to start the fringe minimisation from
|
// Optional list of patches to start the fringe minimisation from
|
||||||
initPatchNames ();
|
initPatchNames ();
|
||||||
|
|
||||||
// Fraction of minimum allowable suitable pairs respecting the
|
// Number of iterations for adaptive overlap search
|
||||||
// chosen donor suitability criteria
|
specifiedIterationsNumber 12; // 5 by default
|
||||||
suitablePairFraction 0.8;
|
|
||||||
|
|
||||||
// Whether to start fringe assembly from the previous set of
|
// Whether to try additional iterations
|
||||||
// acceptors (for moving mesh cases)
|
additionalIterations yes; // yes by default
|
||||||
cacheFringe no;
|
|
||||||
|
// Orphan suitability
|
||||||
|
orphanSuitability 0; // 1 by default
|
||||||
|
|
||||||
donorSuitability
|
donorSuitability
|
||||||
{
|
{
|
||||||
// Donor/acceptor pair must have cell volumes that differ not
|
// Donor/acceptor pair must have cell volumes that differ not
|
||||||
// more than 60% of the larger cell
|
// more than 20% of the larger cell
|
||||||
type cellVolumes;
|
type cellVolumes;
|
||||||
threshold 0.6;
|
threshold 0.2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,23 +66,24 @@ regions
|
||||||
|
|
||||||
fringe
|
fringe
|
||||||
{
|
{
|
||||||
type overlap;
|
type adaptiveOverlap;
|
||||||
|
|
||||||
// Optional list of patches to start the fringe minimisation from
|
// Optional list of patches to start the fringe minimisation from
|
||||||
initPatchNames (OversetMiddle);
|
initPatchNames (OversetMiddle);
|
||||||
|
|
||||||
// Fraction of minimum allowable suitable pairs respecting the
|
// Number of iterations for adaptive overlap search
|
||||||
// chosen donor suitability criteria
|
specifiedIterationsNumber 5; // 5 by default
|
||||||
suitablePairFraction 0.9;
|
|
||||||
|
|
||||||
// Whether to start fringe assembly from the previous set of
|
// Whether to try additional iterations
|
||||||
// acceptors (for moving mesh cases)
|
additionalIterations yes; // yes by default
|
||||||
cacheFringe no;
|
|
||||||
|
// Orphan suitability
|
||||||
|
orphanSuitability 0; // 1 by default
|
||||||
|
|
||||||
donorSuitability
|
donorSuitability
|
||||||
{
|
{
|
||||||
// Donor/acceptor pair must have cell volumes that differ not
|
// Donor/acceptor pair must have cell volumes that are at least
|
||||||
// more than 60% of the larger cell
|
// 60% within each other
|
||||||
type cellVolumes;
|
type cellVolumes;
|
||||||
threshold 0.6;
|
threshold 0.6;
|
||||||
}
|
}
|
||||||
|
@ -95,23 +97,24 @@ regions
|
||||||
|
|
||||||
fringe
|
fringe
|
||||||
{
|
{
|
||||||
type overlap;
|
type adaptiveOverlap;
|
||||||
|
|
||||||
// Optional list of patches to start the fringe minimisation from
|
// Optional list of patches to start the fringe minimisation from
|
||||||
initPatchNames (OversetFront);
|
initPatchNames (OversetFront);
|
||||||
|
|
||||||
// Fraction of minimum allowable suitable pairs respecting the
|
// Number of iterations for adaptive overlap search
|
||||||
// chosen donor suitability criteria
|
specifiedIterationsNumber 5; // 5 by default
|
||||||
suitablePairFraction 0.8;
|
|
||||||
|
|
||||||
// Whether to start fringe assembly from the previous set of
|
// Whether to try additional iterations
|
||||||
// acceptors (for moving mesh cases)
|
additionalIterations yes; // yes by default
|
||||||
cacheFringe no;
|
|
||||||
|
// Orphan suitability
|
||||||
|
orphanSuitability 0; // 1 by default
|
||||||
|
|
||||||
donorSuitability
|
donorSuitability
|
||||||
{
|
{
|
||||||
// Donor/acceptor pair must have cell volumes that differ not
|
// Donor/acceptor pair must have cell volumes that are at least
|
||||||
// more than 40% of the larger cell
|
// 40% within each other
|
||||||
type cellVolumes;
|
type cellVolumes;
|
||||||
threshold 0.4;
|
threshold 0.4;
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Reference in a new issue