Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop

This commit is contained in:
sergio
2016-12-19 15:42:01 -08:00
44 changed files with 631 additions and 268 deletions

View File

@ -1111,6 +1111,11 @@ int main(int argc, char *argv[])
cellProcAddressing.writeOpt() = IOobject::NO_WRITE; cellProcAddressing.writeOpt() = IOobject::NO_WRITE;
} }
} }
else
{
cellProcAddressing.writeOpt() = IOobject::NO_WRITE;
}
if (faceProcAddressing.headerOk()) if (faceProcAddressing.headerOk())
{ {
if (faceProcAddressing.size() == mesh.nFaces()) if (faceProcAddressing.size() == mesh.nFaces())
@ -1146,6 +1151,11 @@ int main(int argc, char *argv[])
faceProcAddressing.writeOpt() = IOobject::NO_WRITE; faceProcAddressing.writeOpt() = IOobject::NO_WRITE;
} }
} }
else
{
faceProcAddressing.writeOpt() = IOobject::NO_WRITE;
}
if (pointProcAddressing.headerOk()) if (pointProcAddressing.headerOk())
{ {
if (pointProcAddressing.size() == mesh.nPoints()) if (pointProcAddressing.size() == mesh.nPoints())
@ -1160,20 +1170,30 @@ int main(int argc, char *argv[])
} }
else else
{ {
Info<< "Not writing consistent processor point decomposition" Info<< "Not writing inconsistent processor point decomposition"
<< " map " << pointProcAddressing.filePath() << endl; << " map " << pointProcAddressing.filePath() << endl;
pointProcAddressing.writeOpt() = IOobject::NO_WRITE; pointProcAddressing.writeOpt() = IOobject::NO_WRITE;
} }
} }
else
{
pointProcAddressing.writeOpt() = IOobject::NO_WRITE;
}
if (boundaryProcAddressing.headerOk()) if (boundaryProcAddressing.headerOk())
{ {
if (boundaryProcAddressing.size() != mesh.boundaryMesh().size()) if (boundaryProcAddressing.size() != mesh.boundaryMesh().size())
{ {
Info<< "Not writing consistent processor patch decomposition" Info<< "Not writing inconsistent processor patch decomposition"
<< " map " << boundaryProcAddressing.filePath() << endl; << " map " << boundaryProcAddressing.filePath() << endl;
boundaryProcAddressing.writeOpt() = IOobject::NO_WRITE; boundaryProcAddressing.writeOpt() = IOobject::NO_WRITE;
} }
} }
else
{
boundaryProcAddressing.writeOpt() = IOobject::NO_WRITE;
}

View File

@ -16,7 +16,7 @@ FoamFile
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Write maps from renumbered back to original mesh // Write maps from renumbered back to original mesh
writeMaps true; writeMaps false;
// Optional entry: sort cells on coupled boundaries to last for use with // Optional entry: sort cells on coupled boundaries to last for use with
// e.g. nonBlockingGaussSeidel. // e.g. nonBlockingGaussSeidel.

View File

@ -2532,14 +2532,40 @@ int main(int argc, char *argv[])
bool haveAddressing = false; bool haveAddressing = false;
if (haveMesh[Pstream::myProcNo()]) if (haveMesh[Pstream::myProcNo()])
{ {
haveAddressing = IOobject // Read faces (just to know their size)
faceCompactIOList faces
( (
"faceProcAddressing", IOobject
facesInstance, (
meshSubDir, "faces",
runTime, facesInstance,
IOobject::READ_IF_PRESENT meshSubDir,
).typeHeaderOk<labelIOList>(true); runTime,
IOobject::MUST_READ
)
);
// Check faceProcAddressing
labelIOList faceProcAddressing
(
IOobject
(
"faceProcAddressing",
facesInstance,
meshSubDir,
runTime,
IOobject::READ_IF_PRESENT
),
labelList(0)
);
if
(
faceProcAddressing.headerOk()
&& faceProcAddressing.size() == faces.size()
)
{
haveAddressing = true;
}
} }
else else
{ {

View File

@ -1,5 +1,5 @@
#!/bin/sh #!/bin/sh
#---------------------------------*- sh -*------------------------------------- #------------------------------------------------------------------------------
# ========= | # ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration | # \\ / O peration |
@ -26,7 +26,7 @@
# foamConfigurePaths # foamConfigurePaths
# #
# Description # Description
# Adjust hardcoded installation paths and versions # Adjust hardcoded versions and installation paths (for bash, POSIX shell).
# #
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
usage() { usage() {
@ -35,47 +35,93 @@ usage() {
cat<<USAGE cat<<USAGE
usage: ${0##*/} usage: ${0##*/}
-foamInstall dir specify installation directory (e.g. /opt) -foamInstall dir specify installation directory (eg, /opt)
-projectName name specify project name (e.g. openfoam220) -foamVersion ver specify project version (eg, 1612)
-projectVersion ver specify project version (e.g. 2.2.0) -projectName name specify project directory name (eg, openfoam1612)
-archOption 32|64 specify architecture option -archOption 32|64 specify 'WM_ARCH_OPTION' architecture option
-label 32|64 specify label size -int32 | -int64 specify 'WM_LABEL_SIZE'
-SP | -DP specify 'WM_PRECISION_OPTION'
-system name specify 'system' compiler to be used -system name specify 'system' compiler to be used
-thirdParty name specify 'ThirdParty' compiler to be used -third name specify 'ThirdParty' compiler to be used
-boost ver specify 'boost_version'
-boost-path dir specify 'BOOST_ARCH_PATH'
-cgal ver specify 'cgal_version'
-cgal-path dir specify 'CGAL_ARCH_PATH'
-clang ver specify 'clang_version' for ThirdParty Clang
-cmake ver specify 'cmake_version'
-fftw ver specify 'fffw_version'
-fftw-path dir specify 'FFTW_ARCH_PATH'
-metis ver specify 'METIS_VERSION'
-metis-path dir specify 'METIS_ARCH_PATH'
-paraview ver specify 'ParaView_VERSION' (eg, 5.0.1)
-paraview-path dir specify 'ParaView_DIR' (eg, /opt/paraviewopenfoam3120)
-openmpi ver specify ThirdParty openmpi version for 'FOAM_MPI'
-openmpi-system activate system openmpi
-openmpi-third activate ThirdParty openmpi (using default version)
-scotch ver specify 'SCOTCH_VERSION' (eg, scotch_6.0.4)
-scotch-path dir specify 'SCOTCH_ARCH_PATH' (eg, /opt/OpenFOAM-scotch_6.0.4)
-vtk ver specify 'vtk_version' (eg, VTK-7.1.0)
-mesa ver specify 'mesa_version' (eg, mesa-13.0.1)
-sigfpe | -no-sigfpe activate/deactivate FOAM_SIGFPE handling
gmp-VERSION for ThirdParty gcc (gmp-system for system library)
mpfr-VERSION for ThirdParty gcc (mpfr-system for system library)
mpc-VERSION for ThirdParty gcc (mpc-system for system library)
-boost ver specify boost_version * Adjust hardcoded versions and installation paths (for bash, POSIX shell).
-boostArchPath dir specify BOOST_ARCH_PATH
-cgal ver specify cgal_version
-cgalArchPath dir specify CGAL_ARCH_PATH
-clang ver specify clang_version for ThirdParty Clang
-cmake ver specify cmake_version
-fftw ver specify fffw_version
-fftwArchPath dir specify FFTW_ARCH_PATH
-metis ver specify METIS_VERSION
-metisArchPath dir specify METIS_ARCH_PATH
-paraview ver specify ParaView_VERSION (e.g. 3.12.0)
-paraviewInstall dir specify ParaView_DIR (e.g. /opt/paraviewopenfoam3120)
-scotch ver specify SCOTCH_VERSION (e.g. 6.0.0)
-scotchArchPath dir specify SCOTCH_ARCH_PATH (e.g. /opt/OpenFOAM-scotch-6.0.0/)
* Adjust hardcoded installation paths and versions Equivalent options:
-foamInstall --foamInstall
-foamVersion --projectVersion
-projectName --projectName
-archOption --archOption
-third -ThirdParty
-paraview --paraviewVersion | -paraviewVersion
-paraview-path --paraviewInstall | -paraviewInstall
-scotch --scotchVersion | -scotchVersion
-scotch-path --scotchArchPath | -scotchArchPath
USAGE USAGE
exit 1 exit 1
} }
# Check that it appears to be an OpenFOAM installation
[ -f etc/bashrc -a -d etc/config.sh ] || \
usage "Please run from top-level directory of installation"
# Report error and exit # Report error and exit
die() die()
{ {
exec 1>&2 exec 1>&2
echo echo
echo "Error: see '${0##*/} -help' for usage" echo "Error encountered:"
while [ "$#" -ge 1 ]; do echo " $1"; shift; done while [ "$#" -ge 1 ]; do echo " $1"; shift; done
echo echo
echo "See '${0##*/} -help' for usage"
echo
exit 1 exit 1
} }
# Check if argument matches the expected input. Respects case.
# Uses sed for consistency with the replacement routines.
#
# _matches <arg> <matcher> [... <matcherN>]
#
_matches()
{
local input="$1"
shift
local result
for regexp
do
result=$(echo "$input" | sed -n -e "/^$regexp"'$/p')
test -n "$result" && return 0 # successful match
done
return 1
}
# Function to do replacement on file. Checks if any replacement has been done. # Function to do replacement on file. Checks if any replacement has been done.
# _inlineSed <file> <regexp> <replacement> <msg> # _inlineSed <file> <regexp> <replacement> <msg>
_inlineSed() _inlineSed()
@ -96,7 +142,7 @@ _inlineSed()
return 1 return 1
} }
echo "Okay: $msg in $file" echo " $msg ($file)"
return 0 return 0
} }
@ -122,16 +168,13 @@ replace()
$file \ $file \
"$key=.*" \ "$key=.*" \
"$key=$val" \ "$key=$val" \
"Replacing $key setting by '$val'" "Replaced $key setting by '$val'"
done done
} }
[ -f etc/bashrc ] || usage "Please run from top-level directory of installation"
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
unset adjusted unset adjusted optMpi
# Parse options # Parse options
while [ "$#" -gt 0 ] while [ "$#" -gt 0 ]
do do
@ -139,6 +182,9 @@ do
-h | -help | --help) -h | -help | --help)
usage usage
;; ;;
'')
# Discard empty arguments
;;
-foamInstall | --foamInstall) -foamInstall | --foamInstall)
# Replace FOAM_INST_DIR=... # Replace FOAM_INST_DIR=...
@ -148,7 +194,7 @@ do
etc/bashrc \ etc/bashrc \
'\(.*BASH_SOURCE.*\)' \ '\(.*BASH_SOURCE.*\)' \
'##\1' \ '##\1' \
"Removing default FOAM_INST_DIR setting" "Removed default FOAM_INST_DIR setting"
_inlineSed \ _inlineSed \
etc/bashrc \ etc/bashrc \
'^ *FOAM_INST_DIR=.*' \ '^ *FOAM_INST_DIR=.*' \
@ -167,13 +213,13 @@ do
etc/bashrc \ etc/bashrc \
'WM_PROJECT_DIR=.*' \ 'WM_PROJECT_DIR=.*' \
'WM_PROJECT_DIR=$WM_PROJECT_INST_DIR/'"$projectName" \ 'WM_PROJECT_DIR=$WM_PROJECT_INST_DIR/'"$projectName" \
"Replacing WM_PROJECT_DIR setting by $projectName" "Replaced WM_PROJECT_DIR setting by $projectName"
adjusted=true adjusted=true
shift shift
;; ;;
-projectVersion | --projectVersion) -foamVersion | --projectVersion)
# Replace WM_PROJECT_VERSION=... # Replace WM_PROJECT_VERSION=...
[ "$#" -ge 2 ] || die "'$1' option requires an argument" [ "$#" -ge 2 ] || die "'$1' option requires an argument"
replace etc/bashrc WM_PROJECT_VERSION "$2" replace etc/bashrc WM_PROJECT_VERSION "$2"
@ -184,24 +230,32 @@ do
-archOption | --archOption) -archOption | --archOption)
# Replace WM_ARCH_OPTION=... # Replace WM_ARCH_OPTION=...
[ "$#" -ge 2 ] || die "'$1' option requires an argument" [ "$#" -ge 2 ] || die "'$1' option requires an argument"
archOption="$2" _matches "$2" 32 64 || die "'$1' option has bad value: '$2'"
current="$(sed -ne '/^[^#]/s/^.* WM_ARCH_OPTION=//p' etc/bashrc)"
if [ "$archOption" = "$current" ] optionValue="$2"
if [ "$optionValue" = "$(sed -ne '/^[^#]/s/^.* WM_ARCH_OPTION=//p' etc/bashrc)" ]
then then
echo "WM_ARCH_OPTION already set to $archOption" echo "WM_ARCH_OPTION already set to $optionValue"
: ${adjusted:=false}
else else
replace etc/bashrc WM_ARCH_OPTION "$2" replace etc/bashrc WM_ARCH_OPTION "$optionValue"
adjusted=true
fi fi
adjusted=true
shift shift
;; ;;
-label) -int32 | -int64)
# Replace WM_LABEL_SIZE=... # Replace WM_LABEL_SIZE=...
[ "$#" -ge 2 ] || die "'$1' option requires an argument" optionValue="${1#-int}"
replace etc/bashrc WM_LABEL_SIZE "$2" replace etc/bashrc WM_LABEL_SIZE "$optionValue"
adjusted=true
;;
-SP | -DP)
# Replace WM_PRECISION_OPTION=...
optionValue="${1#-}"
replace etc/bashrc WM_PRECISION_OPTION "$optionValue"
adjusted=true adjusted=true
shift
;; ;;
-system) -system)
@ -212,7 +266,7 @@ do
shift shift
;; ;;
-third[Pp]arty) -third | -ThirdParty)
# Replace WM_COMPILER_TYPE=... and WM_COMPILER=... # Replace WM_COMPILER_TYPE=... and WM_COMPILER=...
[ "$#" -ge 2 ] || die "'$1' option requires an argument" [ "$#" -ge 2 ] || die "'$1' option requires an argument"
replace etc/bashrc WM_COMPILER_TYPE ThirdParty WM_COMPILER "$2" replace etc/bashrc WM_COMPILER_TYPE ThirdParty WM_COMPILER "$2"
@ -220,7 +274,6 @@ do
shift shift
;; ;;
-boost) -boost)
# Replace boost_version=... # Replace boost_version=...
[ "$#" -ge 2 ] || die "'$1' option requires an argument" [ "$#" -ge 2 ] || die "'$1' option requires an argument"
@ -229,7 +282,7 @@ do
shift shift
;; ;;
-boostArchPath) -boost-path)
# Replace BOOST_ARCH_PATH=... # Replace BOOST_ARCH_PATH=...
[ "$#" -ge 2 ] || die "'$1' option requires an argument" [ "$#" -ge 2 ] || die "'$1' option requires an argument"
replace etc/config.sh/CGAL BOOST_ARCH_PATH "$2" replace etc/config.sh/CGAL BOOST_ARCH_PATH "$2"
@ -245,7 +298,7 @@ do
shift shift
;; ;;
-cgalArchPath) -cgal-path)
# Replace CGAL_ARCH_PATH=... # Replace CGAL_ARCH_PATH=...
[ "$#" -ge 2 ] || die "'$1' option requires an argument" [ "$#" -ge 2 ] || die "'$1' option requires an argument"
replace etc/config.sh/CGAL CGAL_ARCH_PATH "$2" replace etc/config.sh/CGAL CGAL_ARCH_PATH "$2"
@ -261,7 +314,7 @@ do
shift shift
;; ;;
-fftwArchPath) -fftw-path)
# Replace FFTW_ARCH_PATH=... # Replace FFTW_ARCH_PATH=...
[ "$#" -ge 2 ] || die "'$1' option requires an argument" [ "$#" -ge 2 ] || die "'$1' option requires an argument"
replace etc/config.sh/FFTW FFTW_ARCH_PATH "$2" replace etc/config.sh/FFTW FFTW_ARCH_PATH "$2"
@ -285,15 +338,50 @@ do
shift shift
;; ;;
-openmpi)
# Replace FOAM_MPI=openmpi-<digits>.. and set to use third-party
# The edit is slightly fragile, but works
expected="openmpi-[1-9][.0-9]*"
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
optMpi="$2"
_matches "$optMpi" "$expected" || die "'$1' option has bad value: '$optMpi'"
_inlineSed etc/config.sh/mpi \
"FOAM_MPI=$expected" \
"FOAM_MPI=$optMpi" \
"Replaced 'FOAM_MPI=$expected' setting by 'FOAM_MPI=$optMpi'"
replace etc/bashrc WM_MPLIB OPENMPI
adjusted=true
shift
;;
-openmpi-system)
# Explicitly set WM_MPLIB=SYSTEMOPENMPI
replace etc/bashrc WM_MPLIB SYSTEMOPENMPI
optMpi=system
adjusted=true
;;
-openmpi-third)
# Explicitly set WM_MPLIB=OPENMPI, using default setting for openmpi
replace etc/bashrc WM_MPLIB OPENMPI
optMpi=third
adjusted=true
;;
-paraview | -paraviewVersion | --paraviewVersion) -paraview | -paraviewVersion | --paraviewVersion)
# Replace ParaView_VERSION=... # Replace ParaView_VERSION=...
expected="[5-9][.0-9]*"
[ "$#" -ge 2 ] || die "'$1' option requires an argument" [ "$#" -ge 2 ] || die "'$1' option requires an argument"
_matches "$2" "$expected" || die "'$1' option has bad value: '$2'"
replace etc/config.sh/paraview ParaView_VERSION "$2" replace etc/config.sh/paraview ParaView_VERSION "$2"
adjusted=true adjusted=true
shift shift
;; ;;
-paraviewInstall | --paraviewInstall) -paraview-path | -paraviewInstall | --paraviewInstall)
# Replace ParaView_DIR=... # Replace ParaView_DIR=...
[ "$#" -ge 2 ] || die "'$1' option requires an argument" [ "$#" -ge 2 ] || die "'$1' option requires an argument"
replace etc/config.sh/paraview ParaView_DIR "$2" replace etc/config.sh/paraview ParaView_DIR "$2"
@ -309,7 +397,7 @@ do
shift shift
;; ;;
-metisArchPath) -metis-path)
# Replace METIS_ARCH_PATH=... # Replace METIS_ARCH_PATH=...
[ "$#" -ge 2 ] || die "'$1' option requires an argument" [ "$#" -ge 2 ] || die "'$1' option requires an argument"
replace etc/config.sh/metis METIS_ARCH_PATH "$2" replace etc/config.sh/metis METIS_ARCH_PATH "$2"
@ -325,7 +413,7 @@ do
shift shift
;; ;;
-scotchArchPath | --scotchArchPath) -scotch-path | -scotchArchPath | --scotchArchPath)
# Replace SCOTCH_ARCH_PATH=... # Replace SCOTCH_ARCH_PATH=...
[ "$#" -ge 2 ] || die "'$1' option requires an argument" [ "$#" -ge 2 ] || die "'$1' option requires an argument"
replace etc/config.sh/scotch SCOTCH_ARCH_PATH "$2" replace etc/config.sh/scotch SCOTCH_ARCH_PATH "$2"
@ -333,6 +421,56 @@ do
shift shift
;; ;;
-vtk)
# Replace vtk_version=...
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
replace etc/config.sh/vtk vtk_version "$2"
adjusted=true
shift
;;
-mesa)
# Replace mesa_version=...
[ "$#" -ge 2 ] || die "'$1' option requires an argument"
replace etc/config.sh/vtk mesa_version "$2"
adjusted=true
shift
;;
gmp-[4-9]* | gmp-system)
# gcc-related package
replace etc/config.sh/compiler gmp_version "$1"
adjusted=true
;;
mpfr-[2-9]* | mpfr-system)
# gcc-related package
replace etc/config.sh/compiler mpfr_version "$1"
adjusted=true
;;
mpc-[0-9]* | mpc-system)
# gcc-related package
replace etc/config.sh/compiler mpc_version "$1"
adjusted=true
;;
-sigfpe)
# Enable FOAM_SIGFPE handling
_inlineSed etc/bashrc \
"[a-z][a-z]* FOAM_SIGFPE.*" \
"export FOAM_SIGFPE=" \
"Activate FOAM_SIGFPE handling"
;;
-no-sigfpe)
# Disable FOAM_SIGFPE handling
_inlineSed etc/bashrc \
"[a-z][a-z]* FOAM_SIGFPE.*" \
"unset FOAM_SIGFPE" \
"Deactivate FOAM_SIGFPE handling"
;;
*) *)
die "unknown option/argument: '$1'" die "unknown option/argument: '$1'"
;; ;;
@ -340,12 +478,13 @@ do
shift shift
done done
[ -n "$adjusted" ] || die "Please specify at least one configure option" if [ "$adjusted" = false ]
then
# Set WM_MPLIB=SYSTEMOPENMPI always echo "Nothing adjusted"
replace etc/bashrc WM_MPLIB SYSTEMOPENMPI exit 0
elif [ -z "$adjusted" ]
## Set WM_COMPILER_TYPE=system always then
# replace etc/bashrc WM_COMPILER_TYPE system die "Please specify at least one configure option"
fi
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------

View File

@ -170,6 +170,7 @@ _foamSource $WM_PROJECT_DIR/etc/config.sh/aliases
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/mpi` _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/mpi`
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/paraview` _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/paraview`
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/vtk`
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/ensight` _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/ensight`
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/gperftools` _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/gperftools`

View File

@ -124,6 +124,7 @@ unsetenv ParaView_INCLUDE_DIR
unsetenv ParaView_MAJOR unsetenv ParaView_MAJOR
unsetenv ParaView_VERSION unsetenv ParaView_VERSION
unsetenv PV_PLUGIN_PATH unsetenv PV_PLUGIN_PATH
unsetenv VTK_DIR
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# unset other ThirdParty environment variables # unset other ThirdParty environment variables
@ -136,6 +137,7 @@ unsetenv FFTW_ARCH_PATH
unsetenv GPERFTOOLS_ARCH_PATH unsetenv GPERFTOOLS_ARCH_PATH
unsetenv GMP_ARCH_PATH unsetenv GMP_ARCH_PATH
unsetenv MPFR_ARCH_PATH unsetenv MPFR_ARCH_PATH
unsetenv MESA_ARCH_PATH
unsetenv METIS_ARCH_PATH unsetenv METIS_ARCH_PATH
unsetenv SCOTCH_ARCH_PATH unsetenv SCOTCH_ARCH_PATH

67
etc/config.csh/vtk Normal file
View File

@ -0,0 +1,67 @@
#----------------------------------*-sh-*--------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2016 OpenCFD Ltd.
# \\/ 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 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# etc/config.csh/vtk
#
# Description
# Setup file for VTK (and MESA)
# Sourced from OpenFOAM-<VERSION>/etc/cshrc
#
# The library path is not adjusted with the paths specified here do not exist
#
# Note
# When building OpenFOAM, any changes made here MUST be made in the
# equivalent config.sh version too, since that is the one which will
# be used during the build process.
#
#------------------------------------------------------------------------------
set vtk_version=VTK-7.1.0
set mesa_version=mesa-13.0.1
setenv VTK_DIR $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$vtk_version
setenv MESA_ARCH_PATH $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$mesa_version
#------------------------------------------------------------------------------
if ($?FOAM_VERBOSE && $?prompt) then
echo "Using vtk ($vtk_version) -> $VTK_DIR"
echo "Using mesa ($mesa_version) -> $MESA_ARCH_PATH"
endif
# Set paths if binaries are present
if ( -r $VTK_DIR ) then
_foamAddLib $VTK_DIR/lib$WM_COMPILER_LIB_ARCH
else
unset VTK_DIR
endif
if ( -r $MESA_ARCH_PATH ) then
_foamAddLib $MESA_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH
else
unset MESA_ARCH_PATH
endif
unset vtk_version mesa_version
#------------------------------------------------------------------------------

View File

@ -119,7 +119,7 @@ then
export ParaView_DIR=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$pvName export ParaView_DIR=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$pvName
# Set paths if binaries or source are present # Set paths if binaries are present
if [ -r $ParaView_DIR ] if [ -r $ParaView_DIR ]
then then
pvLibDir=$ParaView_DIR/lib/$pvMajor pvLibDir=$ParaView_DIR/lib/$pvMajor

View File

@ -120,6 +120,7 @@ unset ParaView_INCLUDE_DIR
unset ParaView_MAJOR unset ParaView_MAJOR
unset ParaView_VERSION unset ParaView_VERSION
unset PV_PLUGIN_PATH unset PV_PLUGIN_PATH
unset VTK_DIR
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# unset other ThirdParty environment variables # unset other ThirdParty environment variables
@ -132,6 +133,7 @@ unset FFTW_ARCH_PATH
unset GPERFTOOLS_ARCH_PATH unset GPERFTOOLS_ARCH_PATH
unset GMP_ARCH_PATH unset GMP_ARCH_PATH
unset MPFR_ARCH_PATH unset MPFR_ARCH_PATH
unset MESA_ARCH_PATH
unset METIS_ARCH_PATH unset METIS_ARCH_PATH
unset SCOTCH_ARCH_PATH unset SCOTCH_ARCH_PATH

72
etc/config.sh/vtk Normal file
View File

@ -0,0 +1,72 @@
#----------------------------------*-sh-*--------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2016 OpenCFD Ltd.
# \\/ 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 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# File
# etc/config.sh/vtk
#
# Description
# Setup file for VTK (and MESA)
# Sourced from OpenFOAM-<VERSION>/etc/bashrc
#
# The library path is not adjusted with the paths specified here do not exist
#
# Note
# When _foamAddLib is unset
# - the vtk_version, mesa_version variables are retained.
#------------------------------------------------------------------------------
vtk_version=VTK-7.1.0
mesa_version=mesa-13.0.1
export VTK_DIR=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$vtk_version
export MESA_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$mesa_version
#------------------------------------------------------------------------------
if [ "$FOAM_VERBOSE" -a "$PS1" ]
then
echo "Using vtk ($vtk_version) -> $VTK_DIR" 1>&2
echo "Using mesa ($mesa_version) -> $MESA_ARCH_PATH" 1>&2
fi
if type _foamAddLib > /dev/null 2>&1 # normal sourcing
then
# Set paths if binaries are present
if [ -r $VTK_DIR ]
then
_foamAddLib $VTK_DIR/lib$WM_COMPILER_LIB_ARCH
else
unset VTK_DIR
fi
if [ -r $MESA_ARCH_PATH ]
then
_foamAddLib $MESA_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH
else
unset MESA_ARCH_PATH
fi
unset vtk_version mesa_version
fi
#------------------------------------------------------------------------------

View File

@ -215,6 +215,7 @@ _foamSource $WM_PROJECT_DIR/etc/config.csh/aliases
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/mpi` _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/mpi`
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/paraview` _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/paraview`
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/vtk`
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/ensight` _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/ensight`
##_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/ADIOS` ##_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/ADIOS`

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -29,11 +29,30 @@ Description
#include "IOobject.H" #include "IOobject.H"
#include "objectRegistry.H" #include "objectRegistry.H"
#include "endian.H"
#include "label.H"
#include "scalar.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
bool Foam::IOobject::writeHeader(Ostream& os, const word& type) const bool Foam::IOobject::writeHeader(Ostream& os, const word& type) const
{ {
static std::string archHint;
// Hint about machine endian, OpenFOAM label and scalar sizes
if (archHint.empty())
{
#ifdef WM_LITTLE_ENDIAN
archHint.append("LSB;");
#elif defined (WM_BIG_ENDIAN)
archHint.append("MSB;");
#endif
archHint.append("label=");
archHint.append(std::to_string(8*sizeof(label)));
archHint.append(";scalar=");
archHint.append(std::to_string(8*sizeof(scalar)));
}
if (!os.good()) if (!os.good())
{ {
InfoInFunction InfoInFunction
@ -47,6 +66,7 @@ bool Foam::IOobject::writeHeader(Ostream& os, const word& type) const
<< "FoamFile\n{\n" << "FoamFile\n{\n"
<< " version " << os.version() << ";\n" << " version " << os.version() << ";\n"
<< " format " << os.format() << ";\n" << " format " << os.format() << ";\n"
<< " arch " << archHint << ";\n"
<< " class " << type << ";\n"; << " class " << type << ";\n";
if (note().size()) if (note().size())

View File

@ -23,11 +23,14 @@ License
Class Class
Foam::combustionModels::eddyDissipationDiffusionModel Foam::combustionModels::eddyDissipationDiffusionModel
Group
grpCombustionModels
Description Description
Eddy dissipation model based on the principle of mixed is burnt. Eddy dissipation model based on the principle of mixed is burnt.
The time scale is determined by the minimum between the turbulent The time scale is determined by the minimum of the turbulence
and diffusive time scales. and diffusion time scales.
SourceFiles SourceFiles

View File

@ -42,7 +42,7 @@ Usage
DESModelRegions1 DESModelRegions1
{ {
type DESModelRegions; type DESModelRegions;
libs ("libutilityFunctionObjects.so"); libs ("libfieldFunctionObjects.so");
... ...
} }
\endverbatim \endverbatim

View File

@ -36,7 +36,7 @@ Usage
PecletNo1 PecletNo1
{ {
type PecletNo; type PecletNo;
libs ("libutilityFunctionObjects.so"); libs ("libfieldFunctionObjects.so");
... ...
} }
\endverbatim \endverbatim

View File

@ -46,7 +46,7 @@ Usage
Q1 Q1
{ {
type Q; type Q;
libs ("libutilityFunctionObjects.so"); libs ("libfieldFunctionObjects.so");
... ...
} }
\endverbatim \endverbatim

View File

@ -57,11 +57,11 @@ bool Foam::functionObjects::components::calcComponents()
typedef GeometricField<Type, fvPatchField, volMesh> VolFieldType; typedef GeometricField<Type, fvPatchField, volMesh> VolFieldType;
typedef GeometricField<Type, fvsPatchField, surfaceMesh> SurfaceFieldType; typedef GeometricField<Type, fvsPatchField, surfaceMesh> SurfaceFieldType;
if (foundObject<VolFieldType>(fieldName_)) if (foundObject<VolFieldType>(fieldName_, false))
{ {
return calcFieldComponents<VolFieldType>(); return calcFieldComponents<VolFieldType>();
} }
else if (foundObject<SurfaceFieldType>(fieldName_)) else if (foundObject<SurfaceFieldType>(fieldName_, false))
{ {
return calcFieldComponents<SurfaceFieldType>(); return calcFieldComponents<SurfaceFieldType>();
} }

View File

@ -30,7 +30,7 @@ License
template<class FieldType> template<class FieldType>
bool Foam::functionObjects::div::calcDiv() bool Foam::functionObjects::div::calcDiv()
{ {
if (foundObject<FieldType>(fieldName_)) if (foundObject<FieldType>(fieldName_, false))
{ {
return store return store
( (

View File

@ -77,7 +77,7 @@ protected:
void setResultName(const word& typeName, const word& defaultArg); void setResultName(const word& typeName, const word& defaultArg);
template<class Type> template<class Type>
bool foundObject(const word& name); bool foundObject(const word& name, const bool verbose = true) const;
private: private:

View File

@ -30,8 +30,9 @@ License
template<class Type> template<class Type>
bool Foam::functionObjects::fieldExpression::foundObject bool Foam::functionObjects::fieldExpression::foundObject
( (
const word& name const word& name,
) const bool verbose
) const
{ {
if (fvMeshFunctionObject::foundObject<Type>(name)) if (fvMeshFunctionObject::foundObject<Type>(name))
{ {
@ -39,10 +40,13 @@ bool Foam::functionObjects::fieldExpression::foundObject
} }
else else
{ {
Warning if (verbose)
<< " functionObjects::" << type() << " " << this->name() {
<< " cannot find required object " << name << " of type " Warning
<< Type::typeName << endl; << " functionObjects::" << type() << " " << this->name()
<< " cannot find required object " << name << " of type "
<< Type::typeName << endl;
}
return false; return false;
} }

View File

@ -33,7 +33,7 @@ bool Foam::functionObjects::grad::calcGrad()
typedef GeometricField<Type, fvPatchField, volMesh> VolFieldType; typedef GeometricField<Type, fvPatchField, volMesh> VolFieldType;
typedef GeometricField<Type, fvsPatchField, surfaceMesh> SurfaceFieldType; typedef GeometricField<Type, fvsPatchField, surfaceMesh> SurfaceFieldType;
if (foundObject<VolFieldType>(fieldName_)) if (foundObject<VolFieldType>(fieldName_, false))
{ {
return store return store
( (
@ -42,7 +42,7 @@ bool Foam::functionObjects::grad::calcGrad()
mesh_.changing() && mesh_.cache(resultName_) mesh_.changing() && mesh_.cache(resultName_)
); );
} }
else if (foundObject<SurfaceFieldType>(fieldName_)) else if (foundObject<SurfaceFieldType>(fieldName_, false))
{ {
return store return store
( (

View File

@ -36,7 +36,7 @@ bool Foam::functionObjects::mag::calcMag()
typedef GeometricField<Type, fvsPatchField, surfaceMesh> SurfaceFieldType; typedef GeometricField<Type, fvsPatchField, surfaceMesh> SurfaceFieldType;
typedef DimensionedField<Type, surfGeoMesh> SurfFieldType; typedef DimensionedField<Type, surfGeoMesh> SurfFieldType;
if (foundObject<VolFieldType>(fieldName_)) if (foundObject<VolFieldType>(fieldName_, false))
{ {
return store return store
( (
@ -44,7 +44,7 @@ bool Foam::functionObjects::mag::calcMag()
Foam::mag(lookupObject<VolFieldType>(fieldName_)) Foam::mag(lookupObject<VolFieldType>(fieldName_))
); );
} }
else if (foundObject<SurfaceFieldType>(fieldName_)) else if (foundObject<SurfaceFieldType>(fieldName_, false))
{ {
return store return store
( (
@ -52,7 +52,7 @@ bool Foam::functionObjects::mag::calcMag()
Foam::mag(lookupObject<SurfaceFieldType>(fieldName_)) Foam::mag(lookupObject<SurfaceFieldType>(fieldName_))
); );
} }
else if (foundObject<SurfFieldType>(fieldName_)) else if (foundObject<SurfFieldType>(fieldName_, false))
{ {
return store return store
( (

View File

@ -36,7 +36,7 @@ bool Foam::functionObjects::magSqr::calcMagSqr()
typedef GeometricField<Type, fvsPatchField, surfaceMesh> SurfaceFieldType; typedef GeometricField<Type, fvsPatchField, surfaceMesh> SurfaceFieldType;
typedef DimensionedField<Type, surfGeoMesh> SurfFieldType; typedef DimensionedField<Type, surfGeoMesh> SurfFieldType;
if (foundObject<VolFieldType>(fieldName_)) if (foundObject<VolFieldType>(fieldName_, false))
{ {
return store return store
( (
@ -44,7 +44,7 @@ bool Foam::functionObjects::magSqr::calcMagSqr()
Foam::magSqr(lookupObject<VolFieldType>(fieldName_)) Foam::magSqr(lookupObject<VolFieldType>(fieldName_))
); );
} }
else if (foundObject<SurfaceFieldType>(fieldName_)) else if (foundObject<SurfaceFieldType>(fieldName_, false))
{ {
return store return store
( (
@ -52,7 +52,7 @@ bool Foam::functionObjects::magSqr::calcMagSqr()
Foam::magSqr(lookupObject<SurfaceFieldType>(fieldName_)) Foam::magSqr(lookupObject<SurfaceFieldType>(fieldName_))
); );
} }
else if (foundObject<SurfFieldType>(fieldName_)) else if (foundObject<SurfFieldType>(fieldName_, false))
{ {
return store return store
( (

View File

@ -46,6 +46,7 @@ namespace functionObjects
} }
} }
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::functionObjects::particleDistribution::particleDistribution Foam::functionObjects::particleDistribution::particleDistribution
@ -56,12 +57,12 @@ Foam::functionObjects::particleDistribution::particleDistribution
) )
: :
fvMeshFunctionObject(name, runTime, dict), fvMeshFunctionObject(name, runTime, dict),
writeFile(runTime, name, typeName, dict), writeFile(runTime, name),
cloudName_("unknown-cloudName"), cloudName_("unknown-cloudName"),
fieldNames_(), nameVsBinWidth_(),
tagFieldName_("unknown-tagFieldName"), tagFieldName_("none"),
distributionBinWidth_(0), rndGen_(1234, -1),
rndGen_(1234, -1) writerPtr_(nullptr)
{ {
read(dict); read(dict);
} }
@ -80,11 +81,12 @@ bool Foam::functionObjects::particleDistribution::read(const dictionary& dict)
if (fvMeshFunctionObject::read(dict) && writeFile::read(dict)) if (fvMeshFunctionObject::read(dict) && writeFile::read(dict))
{ {
dict.lookup("cloud") >> cloudName_; dict.lookup("cloud") >> cloudName_;
dict.lookup("fields") >> fieldNames_; dict.lookup("nameVsBinWidth") >> nameVsBinWidth_;
dict.lookup("tagField") >> tagFieldName_; dict.readIfPresent("tagField", tagFieldName_);
dict.lookup("distributionBinWidth") >> distributionBinWidth_; word format(dict.lookup("setFormat"));
writerPtr_ = writer<scalar>::New(format);
Info<< type() << " " << name() << " output:" Info<< type() << " " << name() << " output:" << nl
<< " Processing cloud : " << cloudName_ << nl << " Processing cloud : " << cloudName_ << nl
<< endl; << endl;
@ -107,9 +109,12 @@ bool Foam::functionObjects::particleDistribution::write()
if (!mesh_.foundObject<cloud>(cloudName_)) if (!mesh_.foundObject<cloud>(cloudName_))
{ {
wordList cloudNames(mesh_.names<cloud>());
WarningInFunction WarningInFunction
<< "Unable to find cloud " << cloudName_ << "Unable to find cloud " << cloudName_
<< " in the mesh database" << endl; << " in the mesh database. Available clouds include:"
<< cloudNames << endl;
return false; return false;
} }
@ -152,26 +157,26 @@ bool Foam::functionObjects::particleDistribution::write()
} }
} }
bool ok = false; bool ok = false;
forAll(fieldNames_, i) forAll(nameVsBinWidth_, i)
{ {
const word fName = fieldNames_[i]; ok = false;
ok = ok || processField<scalar>(cloudObr, fName, tagAddr); ok = ok || processField<scalar>(cloudObr, i, tagAddr);
ok = ok || processField<vector>(cloudObr, fName, tagAddr); ok = ok || processField<vector>(cloudObr, i, tagAddr);
ok = ok || processField<tensor>(cloudObr, fName, tagAddr); ok = ok || processField<tensor>(cloudObr, i, tagAddr);
ok = ok || processField<sphericalTensor>(cloudObr, fName, tagAddr); ok = ok || processField<sphericalTensor>(cloudObr, i, tagAddr);
ok = ok || processField<symmTensor>(cloudObr, fName, tagAddr); ok = ok || processField<symmTensor>(cloudObr, i, tagAddr);
ok = ok || processField<tensor>(cloudObr, fName, tagAddr); ok = ok || processField<tensor>(cloudObr, i, tagAddr);
if (log && !ok) if (log && !ok)
{ {
WarningInFunction WarningInFunction
<< "Unable to find field " << fName << " in the " << "Unable to find field " << nameVsBinWidth_[i].first()
<< cloudName_ << " cloud database" << endl; << " in the " << cloudName_ << " cloud database" << endl;
} }
} }
return true; return true;
} }
@ -180,26 +185,53 @@ void Foam::functionObjects::particleDistribution::generateDistribution
( (
const word& fieldName, const word& fieldName,
const scalarField& field, const scalarField& field,
const scalar binWidth,
const label tag const label tag
) )
{ {
Ostream& os = file(); if (field.empty())
{
return;
}
word fName(fieldName);
if (tag != -1) if (tag != -1)
{ {
os << tag << token::TAB; fName = fName + '_' + Foam::name(tag);
} }
distributionModels::general distribution distributionModels::general distribution
( (
field, field,
distributionBinWidth_, binWidth,
rndGen_ rndGen_
); );
distribution.writeData(os); const Field<scalar> distX(distribution.x());
const Field<scalar> distY(distribution.y());
os << endl; pointField xBin(distX.size(), Zero);
xBin.replace(0, distX);
const coordSet coords
(
fName,
"x",
xBin,
distX
);
const wordList fieldNames(1, fName);
fileName outputPath(baseTimeDir());
mkDir(outputPath);
OFstream graphFile(outputPath/writerPtr_->getFileName(coords, fieldNames));
Log << " Writing distribution of " << fieldName
<< " to " << graphFile.name() << endl;
List<const scalarField*> yPtrs(1);
yPtrs[0] = &distY;
writerPtr_->write(coords, fieldNames, yPtrs, graphFile);
} }

View File

@ -28,7 +28,7 @@ Group
grpFieldFunctionObjects grpFieldFunctionObjects
Description Description
Generates a particle distrbution for lagrangian data. Generates a particle distribution for lagrangian data at a given time.
Usage Usage
\verbatim \verbatim
@ -38,8 +38,12 @@ Usage
libs ("libfieldFunctionObjects.so"); libs ("libfieldFunctionObjects.so");
... ...
cloud "myCloud"; cloud "myCloud";
field "d" nameVsBinWidth
distributionBinWidth 0.1; (
(d 0.1)
(U 10)
);
setFormat raw;
} }
\endverbatim \endverbatim
@ -48,8 +52,9 @@ Usage
Property | Description | Required | Default value Property | Description | Required | Default value
type | Type name: particleDistribution | yes | type | Type name: particleDistribution | yes |
cloud | Name of cloud to process | Yes | cloud | Name of cloud to process | Yes |
field | Name of cloud field to process | Yes | nameVsBinWidth | List of cloud field vs bin width | Yes |
distributionBinWidth | Width of distribution bins | yes | tagField | Name of cloud field to use to group particles | no | none
setFormat | Output format | yes |
\endtable \endtable
See also See also
@ -69,6 +74,8 @@ SourceFiles
#include "writeFile.H" #include "writeFile.H"
#include "scalarField.H" #include "scalarField.H"
#include "cachedRandom.H" #include "cachedRandom.H"
#include "Tuple2.H"
#include "writer.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -93,26 +100,27 @@ protected:
//- Cloud name //- Cloud name
word cloudName_; word cloudName_;
//- Field name //- List of field name vs. bin width
wordList fieldNames_; List<Tuple2<word, scalar>> nameVsBinWidth_;
//- Tag field name - used to filter the particles into groups //- Tag field name - used to filter the particles into groups
word tagFieldName_; word tagFieldName_;
//- Distribution bin width
scalar distributionBinWidth_;
//- Random number generator - used by distribution models //- Random number generator - used by distribution models
cachedRandom rndGen_; cachedRandom rndGen_;
//- Writer
autoPtr<writer<scalar>> writerPtr_;
// Private Member Functions
// Protected Member Functions
//- Generate the distribution //- Generate the distribution
void generateDistribution void generateDistribution
( (
const word& fieldName, const word& fieldName,
const scalarField& field, const scalarField& field,
const scalar binWidth,
const label tag = -1 const label tag = -1
); );
@ -121,7 +129,7 @@ protected:
bool processField bool processField
( (
const objectRegistry& obr, const objectRegistry& obr,
const word& fieldName, const label fieldi,
const List<DynamicList<label>>& addr const List<DynamicList<label>>& addr
); );

View File

@ -29,10 +29,13 @@ template<class Type>
bool Foam::functionObjects::particleDistribution::processField bool Foam::functionObjects::particleDistribution::processField
( (
const objectRegistry& obr, const objectRegistry& obr,
const word& fieldName, const label fieldi,
const List<DynamicList<label>>& addr const List<DynamicList<label>>& addr
) )
{ {
const word& fieldName = nameVsBinWidth_[fieldi].first();
const scalar binWidth = nameVsBinWidth_[fieldi].second();
if (obr.foundObject<IOField<Type>>(fieldName)) if (obr.foundObject<IOField<Type>>(fieldName))
{ {
const IOField<Type>& field = const IOField<Type>& field =
@ -45,7 +48,13 @@ bool Foam::functionObjects::particleDistribution::processField
const Field<Type> subField(field, addr[i]); const Field<Type> subField(field, addr[i]);
for (direction d = 0; d < pTraits<Type>::nComponents; ++d) for (direction d = 0; d < pTraits<Type>::nComponents; ++d)
{ {
generateDistribution(fieldName, subField.component(d), i); generateDistribution
(
fieldName,
subField.component(d),
binWidth,
i
);
} }
} }
} }
@ -53,7 +62,8 @@ bool Foam::functionObjects::particleDistribution::processField
{ {
for (direction d = 0; d < pTraits<Type>::nComponents; ++d) for (direction d = 0; d < pTraits<Type>::nComponents; ++d)
{ {
generateDistribution(fieldName, field.component(d)); const word fName = fieldName + pTraits<Type>::componentNames[d];
generateDistribution(fName, field.component(d), binWidth);
} }
} }

View File

@ -33,11 +33,11 @@ bool Foam::functionObjects::randomise::calcRandomised()
{ {
typedef GeometricField<Type, fvPatchField, volMesh> VolFieldType; typedef GeometricField<Type, fvPatchField, volMesh> VolFieldType;
if (foundObject<VolFieldType>(fieldName_)) if (foundObject<VolFieldType>(fieldName_, false))
{ {
const VolFieldType& field = lookupObject<VolFieldType>(fieldName_); const VolFieldType& field = lookupObject<VolFieldType>(fieldName_);
resultName_ = fieldName_ + "Random"; resultName_ = fieldName_ & "Random";
tmp<VolFieldType> rfieldt(new VolFieldType(field)); tmp<VolFieldType> rfieldt(new VolFieldType(field));
VolFieldType& rfield = rfieldt.ref(); VolFieldType& rfield = rfieldt.ref();

View File

@ -514,6 +514,8 @@ bool Foam::functionObjects::streamLineBase::read(const dictionary& dict)
dict.lookup("fields") >> fields_; dict.lookup("fields") >> fields_;
UName_ = dict.lookupOrDefault<word>("U", "U"); UName_ = dict.lookupOrDefault<word>("U", "U");
Info<< " Employing velocity field " << UName_ << endl;
if (findIndex(fields_, UName_) == -1) if (findIndex(fields_, UName_) == -1)
{ {
FatalIOErrorInFunction(dict) FatalIOErrorInFunction(dict)

View File

@ -38,7 +38,7 @@ Usage
vorticity1 vorticity1
{ {
type vorticity; type vorticity;
libs ("libutilityFunctionObjects.so"); libs ("libfieldFunctionObjects.so");
... ...
} }
\endverbatim \endverbatim

View File

@ -39,7 +39,7 @@ Usage
yPlus1 yPlus1
{ {
type yPlus; type yPlus;
libs ("libutilityFunctionObjects.so"); libs ("libfieldFunctionObjects.so");
... ...
} }
\endverbatim \endverbatim

View File

@ -1,31 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: plus |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object postProcessingDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
functions
{
cloudInfo1
{
type cloudInfo;
libs ("libcloudFunctionObjects.so");
enabled true;
writeControl timeStep;
writeInterval 1;
clouds (myCloud1);
}
}
// ************************************************************************* //

View File

@ -49,7 +49,7 @@ Usage
scalar1 scalar1
{ {
type scalarTransport; type scalarTransport;
libs ("libutilityFunctionObjects.so"); libs ("libsolverFunctionObjects.so");
resetOnStartUp no; resetOnStartUp no;
region cabin; region cabin;
@ -64,7 +64,7 @@ Usage
} }
\endverbatim \endverbatim
Example of function object specification to solve a residency time Example of function object specification to solve a residence time
in a two phase flow: in a two phase flow:
equation: equation:
\verbatim \verbatim
@ -117,13 +117,13 @@ Usage
rho | Name of density field | no | rho rho | Name of density field | no | rho
UPhi | Name of U to generate phi | no | none UPhi | Name of U to generate phi | no | none
phase | Name of the phase name | no | none phase | Name of the phase name | no | none
nut | Name of the turbulence viscocity | no | none nut | Name of the turbulence viscosity | no | none
D | Diffusion coefficient | no | auto generated D | Diffusion coefficient | no | auto generated
nCorr | Number of correctors | no | 0 nCorr | Number of correctors | no | 0
resetOnStartUp | Reset scalar to zero on start-up | no | no resetOnStartUp | Reset scalar to zero on start-up | no | no
schemesField | Name of field to specify schemes | no | fieldName schemesField | Name of field to specify schemes | no | fieldName
fvOptions | List of scalar sources | no | fvOptions | List of scalar sources | no |
bounded01 | Bounds scalar betwee 0-1 for multiphase | no |true bounded01 | Bounds scalar between 0-1 for multiphase | no |true
phasePhiCompressed |Compressed flux for VOF | no | alphaPhiUn phasePhiCompressed |Compressed flux for VOF | no | alphaPhiUn
\endtable \endtable

View File

@ -1,4 +0,0 @@
systemCall.C
systemCallFunctionObject.C
LIB = $(FOAM_LIBBIN)/libsystemCall

View File

@ -42,6 +42,8 @@ namespace distributionModels
void Foam::distributionModels::general::initialise() void Foam::distributionModels::general::initialise()
{ {
static scalar eps = ROOTVSMALL;
const label nEntries = xy_.size(); const label nEntries = xy_.size();
integral_.setSize(nEntries); integral_.setSize(nEntries);
@ -50,7 +52,7 @@ void Foam::distributionModels::general::initialise()
integral_[0] = 0.0; integral_[0] = 0.0;
for (label i = 1; i < nEntries; i++) for (label i = 1; i < nEntries; i++)
{ {
scalar k = (xy_[i][1] - xy_[i-1][1])/(xy_[i][0] - xy_[i-1][0]); scalar k = (xy_[i][1] - xy_[i-1][1])/(xy_[i][0] - xy_[i-1][0] + eps);
scalar d = xy_[i-1][1] - k*xy_[i-1][0]; scalar d = xy_[i-1][1] - k*xy_[i-1][0];
scalar y1 = xy_[i][0]*(0.5*k*xy_[i][0] + d); scalar y1 = xy_[i][0]*(0.5*k*xy_[i][0] + d);
scalar y0 = xy_[i-1][0]*(0.5*k*xy_[i-1][0] + d); scalar y0 = xy_[i-1][0]*(0.5*k*xy_[i-1][0] + d);
@ -61,12 +63,12 @@ void Foam::distributionModels::general::initialise()
scalar sumArea = integral_.last(); scalar sumArea = integral_.last();
meanValue_ = sumArea/(maxValue() - minValue()); meanValue_ = sumArea/(maxValue() - minValue() + eps);
for (label i=0; i < nEntries; i++) for (label i=0; i < nEntries; i++)
{ {
xy_[i][1] /= sumArea; xy_[i][1] /= sumArea + eps;
integral_[i] /= sumArea; integral_[i] /= sumArea + eps;
} }
} }
@ -243,9 +245,10 @@ Foam::dictionary Foam::distributionModels::general::writeDict
const word& dictName const word& dictName
) const ) const
{ {
// dictionary dict = distributionModel::writeDict(dictName); // dictionary dict = distributionModel::writeDict(dictName);
dictionary dict(dictName); dictionary dict(dictName);
dict.add("distribution", xy_); dict.add("x", x());
dict.add("y", y());
return dict; return dict;
} }
@ -253,12 +256,49 @@ Foam::dictionary Foam::distributionModels::general::writeDict
void Foam::distributionModels::general::readDict(const dictionary& dict) void Foam::distributionModels::general::readDict(const dictionary& dict)
{ {
// distributionModel::readDict(dict); // distributionModel::readDict(dict);
dict.lookup("distribution") >> xy_; List<scalar> x(dict.lookup("x"));
List<scalar> y(dict.lookup("y"));
xy_.setSize(x.size());
forAll(xy_, i)
{
xy_[i][0] = x[i];
xy_[i][1] = y[i];
}
initialise(); initialise();
} }
Foam::tmp<Foam::Field<Foam::scalar>>
Foam::distributionModels::general::x() const
{
tmp<Field<scalar>> tx(new Field<scalar>(xy_.size()));
scalarField& xi = tx.ref();
forAll(xy_, i)
{
xi[i] = xy_[i][0];
}
return tx;
}
Foam::tmp<Foam::Field<Foam::scalar>>
Foam::distributionModels::general::y() const
{
tmp<Field<scalar>> ty(new Field<scalar>(xy_.size()));
scalarField& yi = ty.ref();
forAll(xy_, i)
{
yi[i] = xy_[i][1];
}
return ty;
}
Foam::Ostream& Foam::operator<< Foam::Ostream& Foam::operator<<
( (
Ostream& os, Ostream& os,

View File

@ -38,6 +38,7 @@ SourceFiles
#include "distributionModel.H" #include "distributionModel.H"
#include "Vector.H" #include "Vector.H"
#include "VectorSpace.H" #include "VectorSpace.H"
#include "Field.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -121,6 +122,12 @@ public:
// Member Functions // Member Functions
//- Bin boundaries
virtual tmp<Field<scalar>> x() const;
//- Probabilities
virtual tmp<Field<scalar>> y() const;
//- Sample the distributionModel //- Sample the distributionModel
virtual scalar sample() const; virtual scalar sample() const;

View File

@ -589,7 +589,7 @@ void surfaceNoise::calculate()
forAll(surfPrmsf, i) forAll(surfPrmsf, i)
{ {
label freqI = i*fftWriteInterval_; label freqI = (i + 1)*fftWriteInterval_ - 1;
fOut[i] = freq1[freqI]; fOut[i] = freq1[freqI];
const word gName = "fft"; const word gName = "fft";
PrmsfAve[i] = writeSurfaceData PrmsfAve[i] = writeSurfaceData

View File

@ -147,8 +147,8 @@ Foam::tmp<Foam::scalarField> Foam::waveModel::waterLevel() const
reduce(paddleMagSf[paddlei], sumOp<scalar>()); reduce(paddleMagSf[paddlei], sumOp<scalar>());
reduce(paddleWettedMagSf[paddlei], sumOp<scalar>()); reduce(paddleWettedMagSf[paddlei], sumOp<scalar>());
level[paddlei] += level[paddlei] +=
paddleWettedMagSf[paddlei] paddleWettedMagSf[paddlei]*zSpan_
/(paddleMagSf[paddlei]*zSpan_ + ROOTVSMALL); /(paddleMagSf[paddlei] + ROOTVSMALL);
} }
return tlevel; return tlevel;

View File

@ -49,5 +49,22 @@ maxCo 0.1;
runTimeModifiable yes; runTimeModifiable yes;
functions
{
distribtion1
{
type particleDistribution;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
cloud sprayCloud;
nameVsBinWidth
(
(d 1e-5)
(U 10)
);
setFormat raw;
}
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -22,16 +22,7 @@ solvers
{ {
nAlphaCorr 1; nAlphaCorr 1;
nAlphaSubCycles 3; nAlphaSubCycles 3;
alphaOuterCorrectors yes;
cAlpha 1; cAlpha 1;
MULESCorr no;
nLimiterIter 3;
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-8;
relTol 0;
} }
pcorr pcorr
@ -53,13 +44,7 @@ solvers
p_rghFinal p_rghFinal
{ {
solver GAMG; solver GAMG;
smoother GaussSeidel; smoother DIC;
nPreSweeps 0;
nPostSweeps 2;
cacheAgglomeration on;
agglomerator faceAreaPair;
nCellsInCoarsestLevel 10;
mergeLevels 1;
tolerance 1e-7; tolerance 1e-7;
relTol 0; relTol 0;
} }

View File

@ -22,16 +22,7 @@ solvers
{ {
nAlphaCorr 1; nAlphaCorr 1;
nAlphaSubCycles 3; nAlphaSubCycles 3;
alphaOuterCorrectors yes;
cAlpha 1; cAlpha 1;
MULESCorr no;
nLimiterIter 3;
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-8;
relTol 0;
} }
pcorr pcorr
@ -53,13 +44,7 @@ solvers
p_rghFinal p_rghFinal
{ {
solver GAMG; solver GAMG;
smoother GaussSeidel; smoother DIC;
nPreSweeps 0;
nPostSweeps 2;
cacheAgglomeration on;
agglomerator faceAreaPair;
nCellsInCoarsestLevel 10;
mergeLevels 1;
tolerance 1e-7; tolerance 1e-7;
relTol 0; relTol 0;
} }

View File

@ -22,16 +22,7 @@ solvers
{ {
nAlphaCorr 1; nAlphaCorr 1;
nAlphaSubCycles 3; nAlphaSubCycles 3;
alphaOuterCorrectors yes;
cAlpha 1; cAlpha 1;
MULESCorr no;
nLimiterIter 3;
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-8;
relTol 0;
} }
pcorr pcorr
@ -53,13 +44,7 @@ solvers
p_rghFinal p_rghFinal
{ {
solver GAMG; solver GAMG;
smoother GaussSeidel; smoother DIC;
nPreSweeps 0;
nPostSweeps 2;
cacheAgglomeration on;
agglomerator faceAreaPair;
nCellsInCoarsestLevel 10;
mergeLevels 1;
tolerance 1e-7; tolerance 1e-7;
relTol 0; relTol 0;
} }

View File

@ -22,16 +22,7 @@ solvers
{ {
nAlphaCorr 1; nAlphaCorr 1;
nAlphaSubCycles 3; nAlphaSubCycles 3;
alphaOuterCorrectors yes;
cAlpha 1; cAlpha 1;
MULESCorr no;
nLimiterIter 3;
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-8;
relTol 0;
} }
pcorr pcorr
@ -53,13 +44,7 @@ solvers
p_rghFinal p_rghFinal
{ {
solver GAMG; solver GAMG;
smoother GaussSeidel; smoother DIC;
nPreSweeps 0;
nPostSweeps 2;
cacheAgglomeration on;
agglomerator faceAreaPair;
nCellsInCoarsestLevel 10;
mergeLevels 1;
tolerance 1e-7; tolerance 1e-7;
relTol 0; relTol 0;
} }

View File

@ -22,16 +22,7 @@ solvers
{ {
nAlphaCorr 1; nAlphaCorr 1;
nAlphaSubCycles 3; nAlphaSubCycles 3;
alphaOuterCorrectors yes;
cAlpha 1; cAlpha 1;
MULESCorr no;
nLimiterIter 3;
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-8;
relTol 0;
} }
pcorr pcorr
@ -53,13 +44,7 @@ solvers
p_rghFinal p_rghFinal
{ {
solver GAMG; solver GAMG;
smoother GaussSeidel; smoother DIC;
nPreSweeps 0;
nPostSweeps 2;
cacheAgglomeration on;
agglomerator faceAreaPair;
nCellsInCoarsestLevel 10;
mergeLevels 1;
tolerance 1e-7; tolerance 1e-7;
relTol 0; relTol 0;
} }