Merge branch 'development' into bugfix/cumulativeBugFix
This commit is contained in:
commit
c8949a5f9e
299 changed files with 9724 additions and 3294 deletions
|
@ -1,8 +1,8 @@
|
|||
# -*- mode: org; -*-
|
||||
#
|
||||
#+TITLE: *Cumulative List of Contributors for foam-extend-3.0*
|
||||
#+TITLE: *Cumulative List of Contributors for foam-extend
|
||||
#+AUTHOR: Hrvoje Jasak.
|
||||
#+DATE: 10 January 2014
|
||||
#+DATE: 9 February 2017
|
||||
#+LINK: http://foam-extend.org
|
||||
#+OPTIONS: author:nil
|
||||
|
||||
|
@ -91,4 +91,7 @@ Contents:
|
|||
Alexander Vakhrushev
|
||||
Vuko Vukcevic
|
||||
Niklas Wikstrom
|
||||
|
||||
Celio Fernandes
|
||||
Luis Ferras
|
||||
Manoel de Araujo
|
||||
J.Miguel Nobrega
|
||||
|
|
11
ThirdParty/AllMake.stage2
vendored
11
ThirdParty/AllMake.stage2
vendored
|
@ -40,8 +40,8 @@
|
|||
# Requirements:
|
||||
# 1: Your foam-extend environment must be properly initialized
|
||||
# 2: AllMake.stage1 if you are overriding your system compiler
|
||||
# 3: The file etc/prefs.sh should be used for setting the variables enabling
|
||||
# the compilation of the various packages
|
||||
# 3: The file etc/prefs.sh should be used for setting the variables
|
||||
# enabling the compilation of the various packages
|
||||
#
|
||||
# Author:
|
||||
# Martin Beaudoin, Hydro-Quebec, (2015)
|
||||
|
@ -104,6 +104,13 @@ then
|
|||
( rpm_make -p openmpi-1.8.8 -s openmpi-1.8.8.spec -u http://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"')
|
||||
}
|
||||
# mvipich2-2.2
|
||||
#
|
||||
[ ! -z "$WM_THIRD_PARTY_USE_MVAPICH2_22" ] && {
|
||||
echo "Building mvapich2 2.2"
|
||||
( rpm_make -p mvapich2-2.2 -s mvapich2-2.2.spec -u http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.2.tar.gz \
|
||||
-f --define '_configureAdditionalArgs "$WM_THIRD_PARTY_USE_MVAPICH2_22_ConfigureAdditionalArgs"')
|
||||
}
|
||||
else
|
||||
echo "Using system installed OpenMPI"
|
||||
echo ""
|
||||
|
|
268
ThirdParty/rpmBuild/SPECS/mvapich2-2.2.spec
vendored
Normal file
268
ThirdParty/rpmBuild/SPECS/mvapich2-2.2.spec
vendored
Normal file
|
@ -0,0 +1,268 @@
|
|||
#------------------------------------------------------------------------------
|
||||
# ========= |
|
||||
# \\ / 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 mvapich2-2.2
|
||||
#
|
||||
# Description
|
||||
# RPM spec file for creating a relocatable RPM
|
||||
#
|
||||
# Author:
|
||||
# Martin Beaudoin, Hydro-Quebec, (2015)
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# We grab the value of WM_THIRD_PARTY and WM_OPTIONS from the environment variable
|
||||
%{expand:%%define _WM_THIRD_PARTY_DIR %(echo $WM_THIRD_PARTY_DIR)}
|
||||
%{expand:%%define _WM_OPTIONS %(echo $WM_OPTIONS)}
|
||||
|
||||
# Disable the generation of debuginfo packages
|
||||
%define debug_package %{nil}
|
||||
|
||||
# The topdir needs to point to the $WM_THIRD_PARTY/rpmbuild directory
|
||||
%define _topdir %{_WM_THIRD_PARTY_DIR}/rpmBuild
|
||||
%define _tmppath %{_topdir}/tmp
|
||||
|
||||
# Will install the package directly $WM_THIRD_PARTY_DIR
|
||||
# Some comments about package relocation:
|
||||
# By using this prefix for the Prefix: parameter in 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 mvapich2
|
||||
%define release %{_WM_OPTIONS}
|
||||
%define version 2.2
|
||||
|
||||
%define buildroot %{_topdir}/BUILD/%{name}-%{version}-root
|
||||
|
||||
BuildRoot: %{buildroot}
|
||||
Summary: mvapich2
|
||||
License: BSD
|
||||
Name: %{name}
|
||||
Version: %{version}
|
||||
Release: %{release}
|
||||
URL: http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/
|
||||
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 mvapich2
|
||||
#
|
||||
# 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
|
||||
|
||||
# NOTE. Option --disable-mcast disables Infiniband when libs are not present
|
||||
|
||||
./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-f77 \
|
||||
--disable-mpi-f90 \
|
||||
--without-slurm \
|
||||
--enable-mpi-profile $mpiWith \
|
||||
--disable-vt \
|
||||
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 MVAPICH2_DIR=\$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
|
||||
export MVAPICH2_BIN_DIR=\$MVAPICH2_DIR/bin
|
||||
export MVAPICH2_LIB_DIR=\$MVAPICH2_DIR/lib
|
||||
|
||||
# Enable access to the package runtime applications and libraries
|
||||
[ -d \$MVAPICH2_BIN_DIR ] && _foamAddPath \$MVAPICH2_BIN_DIR
|
||||
[ -d \$MVAPICH2_LIB_DIR ] && _foamAddLib \$MVAPICH2_LIB_DIR
|
||||
|
||||
export MPI_HOME=\$MVAPICH2_DIR
|
||||
export MPI_ARCH_PATH=\$MPI_HOME
|
||||
export OPAL_PREFIX=\$MPI_ARCH_PATH
|
||||
|
||||
# We initialize the rest of the environment using mpicc --showme:
|
||||
# This does not work with MVAPICH2
|
||||
#export MVAPICH2_INCLUDE_DIR="\`mpicc --showme:incdirs\`"
|
||||
#export MVAPICH2_COMPILE_FLAGS="\`mpicc --showme:compile\`"
|
||||
#export MVAPICH2_LINK_FLAGS="\`mpicc --showme:link\`"
|
||||
|
||||
# Set the foam-extend compilation flags
|
||||
export PINC=\$MVAPICH2_COMPILE_FLAGS
|
||||
export PLIBS=\$MVAPICH2_LINK_FLAGS
|
||||
|
||||
|
||||
if [ "\$FOAM_VERBOSE" -a "\$PS1" ]
|
||||
then
|
||||
echo " Environment variables defined for OpenMPI:"
|
||||
echo " MVAPICH2_BIN_DIR : \$MVAPICH2_BIN_DIR"
|
||||
echo " MVAPICH2_LIB_DIR : \$MVAPICH2_LIB_DIR"
|
||||
echo " MVAPICH2_INCLUDE_DIR : \$MVAPICH2_INCLUDE_DIR"
|
||||
echo " MVAPICH2_COMPILE_FLAGS : \$MVAPICH2_COMPILE_FLAGS"
|
||||
echo " MVAPICH2_LINK_FLAGS : \$MVAPICH2_LINK_FLAGS"
|
||||
echo ""
|
||||
echo " MPI_HOME : \$MPI_HOME"
|
||||
echo " MPI_ARCH_PATH : \$MPI_ARCH_PATH"
|
||||
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 MVAPICH2_DIR \$WM_THIRD_PARTY_DIR/packages/%{name}-%{version}/platforms/\$WM_OPTIONS
|
||||
setenv MVAPICH2_BIN_DIR \$MVAPICH2_DIR/bin
|
||||
setenv MVAPICH2_LIB_DIR \$MVAPICH2_DIR/lib
|
||||
|
||||
# Enable access to the package runtime applications and libraries
|
||||
if ( -e \$MVAPICH2_BIN_DIR ) then
|
||||
_foamAddPath \$MVAPICH2_BIN_DIR
|
||||
endif
|
||||
|
||||
if ( -e \$MVAPICH2_LIB_DIR ) then
|
||||
_foamAddLib \$MVAPICH2_LIB_DIR
|
||||
endif
|
||||
|
||||
setenv MPI_HOME \$MVAPICH2_DIR
|
||||
setenv MPI_ARCH_PATH \$MPI_HOME
|
||||
setenv OPAL_PREFIX \$MPI_ARCH_PATH
|
||||
|
||||
# We initialize the rest of the environment using mpicc --showme:
|
||||
setenv MVAPICH2_INCLUDE_DIR "\`mpicc --showme:incdirs\`"
|
||||
setenv MVAPICH2_COMPILE_FLAGS "\`mpicc --showme:compile\`"
|
||||
setenv MVAPICH2_LINK_FLAGS "\`mpicc --showme:link\`"
|
||||
|
||||
# Set the foam-extend compilation flags
|
||||
setenv PINC "\$MVAPICH2_COMPILE_FLAGS"
|
||||
setenv PLIBS "\$MVAPICH2_LINK_FLAGS"
|
||||
|
||||
|
||||
if (\$?FOAM_VERBOSE && \$?prompt) then
|
||||
echo " Environment variables defined for OpenMPI:"
|
||||
echo " MVAPICH2_BIN_DIR : \$MVAPICH2_BIN_DIR"
|
||||
echo " MVAPICH2_LIB_DIR : \$MVAPICH2_LIB_DIR"
|
||||
echo " MVAPICH2_INCLUDE_DIR : \$MVAPICH2_INCLUDE_DIR"
|
||||
echo " MVAPICH2_COMPILE_FLAGS : \$MVAPICH2_COMPILE_FLAGS"
|
||||
echo " MVAPICH2_LINK_FLAGS : \$MVAPICH2_LINK_FLAGS"
|
||||
echo ""
|
||||
echo " MPI_HOME : \$MPI_HOME"
|
||||
echo " MPI_ARCH_PATH : \$MPI_ARCH_PATH"
|
||||
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}
|
2
ThirdParty/rpmBuild/SPECS/openmpi-1.8.8.spec
vendored
2
ThirdParty/rpmBuild/SPECS/openmpi-1.8.8.spec
vendored
|
@ -138,7 +138,7 @@ Group: Development/Tools
|
|||
--enable-orterun-prefix-by-default \
|
||||
--enable-shared \
|
||||
--enable-mpi-cxx \
|
||||
--disable-static \
|
||||
--disable-static \
|
||||
--disable-mpi-f77 \
|
||||
--disable-mpi-f90 \
|
||||
--without-slurm \
|
||||
|
|
|
@ -82,6 +82,7 @@ rpm_make()
|
|||
echo "Package name : $_PACKAGE"
|
||||
echo "Package URL : $_PACKAGE_URL"
|
||||
echo "RPM spec file name: $_SPECFILE"
|
||||
echo "RPM file name : $_RPMFILENAME"
|
||||
echo "Additional flags : $_ADDITIONALFLAGS"
|
||||
|
||||
# Shift options
|
||||
|
|
|
@ -13,7 +13,7 @@ tmp<fv::convectionScheme<scalar> > mvConvection
|
|||
label inertIndex = -1;
|
||||
volScalarField Yt("Yt", 0.0*Y[0]);
|
||||
|
||||
for (label i=0; i<Y.size(); i++)
|
||||
for (label i = 0; i < Y.size(); i++)
|
||||
{
|
||||
if (Y[i].name() != inertSpecie)
|
||||
{
|
||||
|
|
|
@ -3,6 +3,9 @@ rho = thermo.rho();
|
|||
volScalarField rUA = 1.0/UEqn().A();
|
||||
U = rUA*UEqn().H();
|
||||
|
||||
// Update boundary velocity for consistency with the flux
|
||||
mrfZones.correctBoundaryVelocity(U);
|
||||
|
||||
if (pimple.nCorrPISO() <= 1)
|
||||
{
|
||||
UEqn.clear();
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
U = rUA*UEqn.H();
|
||||
|
||||
// Calculate phi for boundary conditions
|
||||
phi = rhof*fvc::interpolate(U) & mesh.Sf();
|
||||
phi = rhof*(fvc::interpolate(U) & mesh.Sf());
|
||||
|
||||
surfaceScalarField phid2 = rhoReff/rhof*phi;
|
||||
|
||||
|
|
|
@ -12,6 +12,9 @@
|
|||
{
|
||||
U = rUA*UEqn.H();
|
||||
|
||||
// Update boundary velocity for consistency with the flux
|
||||
mrfZones.correctBoundaryVelocity(U);
|
||||
|
||||
// Calculate phi for boundary conditions
|
||||
phi = rhof*fvc::interpolate(U) & mesh.Sf();
|
||||
|
||||
|
|
|
@ -12,6 +12,9 @@
|
|||
{
|
||||
U = rUA*UEqn.H();
|
||||
|
||||
// Update boundary velocity for consistency with the flux
|
||||
mrfZones.correctBoundaryVelocity(U);
|
||||
|
||||
// Calculate phi for boundary conditions
|
||||
phi = rhof*fvc::interpolate(U) & mesh.Sf();
|
||||
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
#!/bin/sh
|
||||
cd ${0%/*} || exit 1 # run from this directory
|
||||
set -x
|
||||
|
||||
wmake libso conjugateHeatTransfer
|
||||
|
||||
wmake blockCoupledScalarTransportFoam
|
||||
wmake conjugateHeatFoam
|
||||
wmake conjugateHeatSimpleFoam
|
||||
wmake pUCoupledFoam
|
||||
wmake MRFPorousFoam
|
||||
|
||||
# ----------------------------------------------------------------- end-of-file
|
|
@ -81,16 +81,39 @@ int main(int argc, char *argv[])
|
|||
# include "couplingTerms.H"
|
||||
|
||||
// Solve the block matrix
|
||||
maxResidual = cmptMax(UpEqn.solve().initialResidual());
|
||||
residual = UpEqn.solve();
|
||||
maxResidual = cmptMax(residual.initialResidual());
|
||||
|
||||
// Retrieve solution
|
||||
UpEqn.retrieveSolution(0, U.internalField());
|
||||
UpEqn.retrieveSolution(3, p.internalField());
|
||||
// Check for divergence
|
||||
if (mag(residual.finalResidual() - residual.initialResidual()) > 1)
|
||||
{
|
||||
Info<< "DIVERGENCE: rescue step" << endl;
|
||||
|
||||
U.correctBoundaryConditions();
|
||||
p.correctBoundaryConditions();
|
||||
// Solving potential flow equation and correcting velocities
|
||||
phi = (fvc::interpolate(U) & mesh.Sf());
|
||||
|
||||
phi = (fvc::interpolate(U) & mesh.Sf()) + tpEqn().flux() + tpresSource;
|
||||
solve
|
||||
(
|
||||
tpEqn
|
||||
==
|
||||
- fvc::div(U)
|
||||
);
|
||||
|
||||
phi += tpEqn().flux() + tpresSource;
|
||||
|
||||
U = fvc::reconstruct(phi);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Retrieve solution
|
||||
UpEqn.retrieveSolution(0, U.internalField());
|
||||
UpEqn.retrieveSolution(3, p.internalField());
|
||||
|
||||
U.correctBoundaryConditions();
|
||||
p.correctBoundaryConditions();
|
||||
|
||||
phi = (fvc::interpolate(U) & mesh.Sf()) + tpEqn().flux() + tpresSource;
|
||||
}
|
||||
|
||||
// Make flux relative in rotating zones
|
||||
mrfZones.relativeFlux(phi);
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
fvc::div(phi)
|
||||
);
|
||||
|
||||
// Update boundary velocity for consistency with the flux
|
||||
mrfZones.correctBoundaryVelocity(U);
|
||||
|
||||
// Momentum equation
|
||||
fvVectorMatrix UEqn
|
||||
(
|
||||
|
@ -49,9 +52,7 @@
|
|||
trAU().rename("rAU");
|
||||
}
|
||||
|
||||
// Insert the additional components. Note this will destroy the H and A
|
||||
|
||||
UEqn += fvm::SuSp(-divPhi, U) + divPhi*U;
|
||||
// Under-relax momentum. Note this will destroy the H and A
|
||||
UEqn.relax();
|
||||
|
||||
// Insert momentum equation
|
||||
|
@ -67,28 +68,38 @@
|
|||
|
||||
const scalarField& V = mesh.V().field();
|
||||
|
||||
// Note: this insertion should only happen in porous cell zones
|
||||
// A rewrite of the porousZones class interface is needed.
|
||||
// Note: insertion should only happen in porous cell zones
|
||||
// HJ, 14/Mar/2016
|
||||
forAll (TUIn, cellI)
|
||||
|
||||
register label cellI;
|
||||
|
||||
forAll (pZones, pZoneI)
|
||||
{
|
||||
const scalar& cellV = V[cellI];
|
||||
const labelList& curZoneCells = pZones[pZoneI].zone();
|
||||
|
||||
const tensor& cellTU = TUIn[cellI];
|
||||
// Loop over all cells in the zone
|
||||
forAll (curZoneCells, zcI)
|
||||
{
|
||||
cellI = curZoneCells[zcI];
|
||||
|
||||
CoeffField<vector4>::squareType& cellDD = DD[cellI];
|
||||
const scalar& cellV = V[cellI];
|
||||
|
||||
cellDD(0, 0) += cellV*cellTU.xx();
|
||||
cellDD(0, 1) += cellV*cellTU.xy();
|
||||
cellDD(0, 2) += cellV*cellTU.xz();
|
||||
const tensor& cellTU = TUIn[cellI];
|
||||
|
||||
cellDD(1, 0) += cellV*cellTU.yx();
|
||||
cellDD(1, 1) += cellV*cellTU.yy();
|
||||
cellDD(2, 2) += cellV*cellTU.yz();
|
||||
CoeffField<vector4>::squareType& cellDD = DD[cellI];
|
||||
|
||||
cellDD(2, 0) += cellV*cellTU.zx();
|
||||
cellDD(2, 1) += cellV*cellTU.zy();
|
||||
cellDD(2, 2) += cellV*cellTU.zz();
|
||||
cellDD(0, 0) += cellV*cellTU.xx();
|
||||
cellDD(0, 1) += cellV*cellTU.xy();
|
||||
cellDD(0, 2) += cellV*cellTU.xz();
|
||||
|
||||
cellDD(1, 0) += cellV*cellTU.yx();
|
||||
cellDD(1, 1) += cellV*cellTU.yy();
|
||||
cellDD(2, 2) += cellV*cellTU.yz();
|
||||
|
||||
cellDD(2, 0) += cellV*cellTU.zx();
|
||||
cellDD(2, 1) += cellV*cellTU.zy();
|
||||
cellDD(2, 2) += cellV*cellTU.zz();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// initialize values for convergence checks
|
||||
// initialize values for convergence checks
|
||||
BlockSolverPerformance<vector4> residual;
|
||||
|
||||
scalar maxResidual = 0;
|
||||
scalar convergenceCriterion = 0;
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
EXE_INC = \
|
||||
-I../conjugateHeatTransfer/lnInclude \
|
||||
-I$(LIB_SRC)/turbulenceModels \
|
||||
-I$(LIB_SRC)/turbulenceModels/incompressible/RAS/RASModel \
|
||||
-I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
|
||||
|
@ -7,8 +6,9 @@ EXE_INC = \
|
|||
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
|
||||
-I$(LIB_SRC)/coupledMatrix/lnInclude \
|
||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude
|
||||
-I$(LIB_SRC)/conjugateHeatTransfer/lnInclude
|
||||
|
||||
EXE_LIBS = \
|
||||
-lincompressibleTurbulenceModel \
|
||||
|
|
|
@ -14,15 +14,12 @@
|
|||
+ fvm::div(phi, T)
|
||||
)
|
||||
- fvm::laplacian(kappaEff, T)
|
||||
==
|
||||
==
|
||||
radiation->Ru()
|
||||
- fvm::Sp(4.0*radiation->Rp()*pow3(T), T)
|
||||
+ 3.0*radiation->Rp()*pow4(T)
|
||||
);
|
||||
|
||||
//Done automatically in 1.6.1-ext
|
||||
//TFluidEqn->boundaryManipulate(T.boundaryField());
|
||||
|
||||
fvScalarMatrix* TSolidEqn = new fvScalarMatrix
|
||||
(
|
||||
fvm::ddt(rhoCpsolid, Tsolid)
|
||||
|
@ -30,10 +27,6 @@
|
|||
+ fvm::SuSp(-solidThermo.S()/Tsolid, Tsolid)
|
||||
);
|
||||
|
||||
//Done automatically in 1.6.1-ext
|
||||
//TSolidEqn->boundaryManipulate(Tsolid.boundaryField());
|
||||
|
||||
|
||||
// Add fluid equation
|
||||
TEqns.set(0, TFluidEqn);
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
EXE_INC = \
|
||||
-I../conjugateHeatTransfer/lnInclude \
|
||||
-I$(LIB_SRC)/turbulenceModels \
|
||||
-I$(LIB_SRC)/turbulenceModels/incompressible/RAS/RASModel \
|
||||
-I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
|
||||
|
@ -7,8 +6,9 @@ EXE_INC = \
|
|||
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
|
||||
-I$(LIB_SRC)/coupledMatrix/lnInclude \
|
||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude
|
||||
-I$(LIB_SRC)/conjugateHeatTransfer/lnInclude
|
||||
|
||||
EXE_LIBS = \
|
||||
-lincompressibleTurbulenceModel \
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
+ fvm::SuSp(-fvc::div(phi), T)
|
||||
)
|
||||
- fvm::laplacian(kappaEff, T)
|
||||
==
|
||||
==
|
||||
radiation->Ru()
|
||||
- fvm::Sp(4.0*radiation->Rp()*pow3(T), T)
|
||||
+ 3.0*radiation->Rp()*pow4(T)
|
||||
|
|
|
@ -14,9 +14,7 @@
|
|||
|
||||
rAU = 1.0/UEqn.A();
|
||||
|
||||
// Insert the additional components. Note this will destroy the H and A
|
||||
|
||||
UEqn += fvm::SuSp(-divPhi, U) + divPhi*U;
|
||||
// Under-relax momentum. Note this will destroy the H and A
|
||||
UEqn.relax();
|
||||
|
||||
UpEqn.insertEquation(0, UEqn);
|
||||
|
|
|
@ -1,69 +1,71 @@
|
|||
Info << "Reading field p\n" << endl;
|
||||
volScalarField p
|
||||
(
|
||||
IOobject
|
||||
Info << "Reading field p\n" << endl;
|
||||
volScalarField p
|
||||
(
|
||||
"p",
|
||||
runTime.timeName(),
|
||||
IOobject
|
||||
(
|
||||
"p",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
mesh
|
||||
);
|
||||
|
||||
Info << "Reading field U\n" << endl;
|
||||
volVectorField U
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"U",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
mesh
|
||||
);
|
||||
|
||||
# include "createPhi.H"
|
||||
|
||||
singlePhaseTransportModel laminarTransport(U, phi);
|
||||
|
||||
autoPtr<incompressible::RASModel> turbulence
|
||||
(
|
||||
incompressible::RASModel::New(U, phi, laminarTransport)
|
||||
);
|
||||
|
||||
// Block vector field for velocity (first entry) and pressure (second
|
||||
// entry).
|
||||
Info << "Creating field Up\n" << endl;
|
||||
volVector4Field Up
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"Up",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
mesh,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
mesh
|
||||
);
|
||||
dimensionedVector4("zero", dimless, vector4::zero)
|
||||
);
|
||||
|
||||
Info << "Reading field U\n" << endl;
|
||||
volVectorField U
|
||||
(
|
||||
IOobject
|
||||
Info<< "Creating field rAU\n" << endl;
|
||||
volScalarField rAU
|
||||
(
|
||||
"U",
|
||||
runTime.timeName(),
|
||||
IOobject
|
||||
(
|
||||
"rAU",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
mesh,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
mesh
|
||||
);
|
||||
runTime.deltaT()
|
||||
);
|
||||
|
||||
#include "createPhi.H"
|
||||
|
||||
singlePhaseTransportModel laminarTransport(U, phi);
|
||||
autoPtr<incompressible::RASModel> turbulence
|
||||
(
|
||||
incompressible::RASModel::New(U, phi, laminarTransport)
|
||||
);
|
||||
|
||||
// Block vector field for velocity (first entry) and pressure (second
|
||||
// entry).
|
||||
Info << "Creating field Up\n" << endl;
|
||||
volVector4Field Up
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"Up",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
mesh,
|
||||
dimensionedVector4("zero", dimless, vector4::zero)
|
||||
);
|
||||
|
||||
Info<< "Creating field rAU\n" << endl;
|
||||
volScalarField rAU
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"rAU",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
mesh,
|
||||
runTime.deltaT()
|
||||
);
|
||||
|
||||
mesh.schemesDict().setFluxRequired(p.name());
|
||||
mesh.schemesDict().setFluxRequired(p.name());
|
||||
mesh.schemesDict().setFluxRequired("pcorr");
|
||||
|
|
|
@ -61,54 +61,14 @@ int main(int argc, char *argv[])
|
|||
|
||||
// Pressure-velocity SIMPLE corrector
|
||||
{
|
||||
// Momentum predictor
|
||||
|
||||
tmp<fvVectorMatrix> UEqn
|
||||
(
|
||||
fvm::div(phi, U)
|
||||
+ turbulence->divDevReff()
|
||||
);
|
||||
mrfZones.addCoriolis(UEqn());
|
||||
|
||||
UEqn().relax();
|
||||
|
||||
solve(UEqn() == -fvc::grad(p));
|
||||
|
||||
volScalarField rAU = 1.0/UEqn().A();
|
||||
U = rAU*UEqn().H();
|
||||
UEqn.clear();
|
||||
|
||||
phi = fvc::interpolate(U, "interpolate(HbyA)") & mesh.Sf();
|
||||
mrfZones.relativeFlux(phi);
|
||||
adjustPhi(phi, U, p);
|
||||
|
||||
// Non-orthogonal pressure corrector loop
|
||||
while (simple.correctNonOrthogonal())
|
||||
{
|
||||
fvScalarMatrix pEqn
|
||||
(
|
||||
fvm::laplacian(rAU, p) == fvc::div(phi)
|
||||
);
|
||||
|
||||
pEqn.setReference(pRefCell, pRefValue);
|
||||
pEqn.solve();
|
||||
|
||||
if (simple.finalNonOrthogonalIter())
|
||||
{
|
||||
phi -= pEqn.flux();
|
||||
}
|
||||
}
|
||||
|
||||
# include "continuityErrs.H"
|
||||
|
||||
// Explicitly relax pressure for momentum corrector
|
||||
p.relax();
|
||||
|
||||
// Momentum corrector
|
||||
U -= rAU*fvc::grad(p);
|
||||
U.correctBoundaryConditions();
|
||||
# include "UEqn.H"
|
||||
# include "pEqn.H"
|
||||
}
|
||||
|
||||
// Calculate relative velocity
|
||||
Urel == U;
|
||||
mrfZones.relativeVelocity(Urel);
|
||||
|
||||
turbulence->correct();
|
||||
|
||||
runTime.write();
|
||||
|
|
19
applications/solvers/incompressible/MRFSimpleFoam/UEqn.H
Normal file
19
applications/solvers/incompressible/MRFSimpleFoam/UEqn.H
Normal file
|
@ -0,0 +1,19 @@
|
|||
// Solve the momentum equation
|
||||
|
||||
tmp<fvVectorMatrix> HUEqn
|
||||
(
|
||||
fvm::div(phi, U)
|
||||
+ turbulence->divDevReff()
|
||||
);
|
||||
mrfZones.addCoriolis(HUEqn());
|
||||
|
||||
// Get under-relaxation factor
|
||||
const scalar UUrf = mesh.solutionDict().equationRelaxationFactor(U.name());
|
||||
|
||||
// Momentum solution
|
||||
solve
|
||||
(
|
||||
relax(HUEqn(), UUrf)
|
||||
==
|
||||
-fvc::grad(p)
|
||||
);
|
|
@ -44,3 +44,19 @@
|
|||
|
||||
MRFZones mrfZones(mesh);
|
||||
mrfZones.correctBoundaryVelocity(U);
|
||||
|
||||
// Create Urel as a permanent field to make it available for on-the-fly
|
||||
// post-processing operations
|
||||
volVectorField Urel
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"Urel",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
U
|
||||
);
|
||||
mrfZones.relativeVelocity(Urel);
|
||||
|
|
54
applications/solvers/incompressible/MRFSimpleFoam/pEqn.H
Normal file
54
applications/solvers/incompressible/MRFSimpleFoam/pEqn.H
Normal file
|
@ -0,0 +1,54 @@
|
|||
{
|
||||
p.boundaryField().updateCoeffs();
|
||||
|
||||
// Prepare clean 1/Ap without contribution from under-relaxation
|
||||
// HJ, 26/Oct/2015
|
||||
volScalarField rAU
|
||||
(
|
||||
"(1|A(U))",
|
||||
1/HUEqn().A()
|
||||
);
|
||||
|
||||
// Update boundary velocity for consistency with the flux
|
||||
// This is needed for a ramped MRF
|
||||
mrfZones.correctBoundaryVelocity(U);
|
||||
|
||||
// Store velocity under-relaxation point before using U for
|
||||
// the flux precursor
|
||||
U.storePrevIter();
|
||||
|
||||
U = rAU*HUEqn().H();
|
||||
HUEqn.clear();
|
||||
|
||||
phi = fvc::interpolate(U) & mesh.Sf();
|
||||
mrfZones.relativeFlux(phi);
|
||||
adjustPhi(phi, U, p);
|
||||
|
||||
// Non-orthogonal pressure corrector loop
|
||||
while (simple.correctNonOrthogonal())
|
||||
{
|
||||
fvScalarMatrix pEqn
|
||||
(
|
||||
fvm::laplacian(rAU, p) == fvc::div(phi)
|
||||
);
|
||||
|
||||
pEqn.setReference(pRefCell, pRefValue);
|
||||
pEqn.solve();
|
||||
|
||||
if (simple.finalNonOrthogonalIter())
|
||||
{
|
||||
phi -= pEqn.flux();
|
||||
}
|
||||
}
|
||||
|
||||
# include "continuityErrs.H"
|
||||
|
||||
// Explicitly relax pressure for momentum corrector
|
||||
p.relax();
|
||||
|
||||
// Momentum corrector
|
||||
// Note: since under-relaxation does not change aU, H/a in U can be
|
||||
// re-used. HJ, 22/Jan/2016
|
||||
U = UUrf*(U - rAU*fvc::grad(p)) + (1 - UUrf)*U.prevIter();
|
||||
U.correctBoundaryConditions();
|
||||
}
|
|
@ -1,8 +1,9 @@
|
|||
{
|
||||
p.boundaryField().updateCoeffs();
|
||||
|
||||
// Prepare clean 1/Ap without contribution from under-relaxation
|
||||
// HJ, 26/Oct/2015
|
||||
volScalarField rUA
|
||||
volScalarField rAU
|
||||
(
|
||||
"(1|A(U))",
|
||||
1/HUEqn().A()
|
||||
|
@ -12,8 +13,9 @@
|
|||
// the flux precursor
|
||||
U.storePrevIter();
|
||||
|
||||
U = rUA*HUEqn().H();
|
||||
U = rAU*HUEqn().H();
|
||||
HUEqn.clear();
|
||||
|
||||
phi = fvc::interpolate(U) & mesh.Sf();
|
||||
adjustPhi(phi, U, p);
|
||||
|
||||
|
@ -22,7 +24,7 @@
|
|||
{
|
||||
fvScalarMatrix pEqn
|
||||
(
|
||||
fvm::laplacian(rUA, p) == fvc::div(phi)
|
||||
fvm::laplacian(rAU, p) == fvc::div(phi)
|
||||
);
|
||||
|
||||
pEqn.setReference(pRefCell, pRefValue);
|
||||
|
@ -43,6 +45,6 @@
|
|||
// Momentum corrector
|
||||
// Note: since under-relaxation does not change aU, H/a in U can be
|
||||
// re-used. HJ, 22/Jan/2016
|
||||
U = UUrf*(U - rUA*fvc::grad(p)) + (1 - UUrf)*U.prevIter();
|
||||
U = UUrf*(U - rAU*fvc::grad(p)) + (1 - UUrf)*U.prevIter();
|
||||
U.correctBoundaryConditions();
|
||||
|
||||
}
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
|
||||
U = rUA*UEqn.H();
|
||||
|
||||
// Update boundary velocity for consistency with the flux
|
||||
mrfZones.correctBoundaryVelocity(U);
|
||||
|
||||
surfaceScalarField phiU
|
||||
(
|
||||
"phiU",
|
||||
|
|
|
@ -314,6 +314,26 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
}
|
||||
|
||||
if (args.optionFound("addEmptyPatch"))
|
||||
{
|
||||
word emptyPatchName(args.optionLookup("addEmptyPatch")());
|
||||
dictionary emptyPatchDict;
|
||||
emptyPatchDict.add("type", "empty");
|
||||
emptyPatchDict.add("edgeLabels", labelList());
|
||||
emptyPatchDict.add("ngbPolyPatchIndex", -1);
|
||||
|
||||
faPatchLst.append
|
||||
(
|
||||
faPatch::New
|
||||
(
|
||||
emptyPatchName,
|
||||
emptyPatchDict,
|
||||
faPatchLst.size(),
|
||||
areaMesh.boundary()
|
||||
).ptr()
|
||||
);
|
||||
}
|
||||
|
||||
Info << "Add faPatches ... ";
|
||||
areaMesh.addFaPatches(List<faPatch*>(faPatchLst));
|
||||
Info << "Done" << endl;
|
||||
|
|
|
@ -119,12 +119,12 @@ int main(int argc, char *argv[])
|
|||
<< exit(FatalError);
|
||||
}
|
||||
|
||||
Foam::word regionName = polyMesh::defaultRegion;
|
||||
word regionName = polyMesh::defaultRegion;
|
||||
|
||||
if (args.optionReadIfPresent("region", regionName))
|
||||
{
|
||||
Info<< "Selecting region " << regionName << " for time = "
|
||||
<< runTime.timeName() << Foam::nl << Foam::endl;
|
||||
<< runTime.timeName() << nl << endl;
|
||||
}
|
||||
|
||||
// Set all times on processor meshes equal to reconstructed mesh
|
||||
|
|
|
@ -46,7 +46,6 @@ int main(int argc, char *argv[])
|
|||
FatalError.exit();
|
||||
}
|
||||
|
||||
|
||||
dimensionedScalar rhoRef
|
||||
(
|
||||
"rhoRef",
|
||||
|
|
|
@ -53,6 +53,21 @@ for i in range(1,len(t)):
|
|||
my[i] += mvy[i]
|
||||
mz[i] += mvz[i]
|
||||
|
||||
# write clean data file
|
||||
outForces=open('forces.dat','w')
|
||||
|
||||
for data in zip(t,fx,fy,fz):
|
||||
outForces.write(' '.join([str(d) for d in data])+'\n')
|
||||
|
||||
outForces.close()
|
||||
|
||||
outMoments=open('moments.dat','w')
|
||||
|
||||
for data in zip(t,mx,my,mz):
|
||||
outMoments.write(' '.join([str(d) for d in data])+'\n')
|
||||
|
||||
outMoments.close()
|
||||
|
||||
# plot forces
|
||||
import pylab
|
||||
pylab.xlabel('iteration')
|
||||
|
|
|
@ -62,6 +62,7 @@ for line in lines:
|
|||
tepsilon.append(iepsilon)
|
||||
epsilon.append(float(matchepsilon.group(2)))
|
||||
|
||||
# write clean data file
|
||||
outfile=open('residual.dat','w')
|
||||
|
||||
if iomega > 0:
|
||||
|
|
|
@ -91,11 +91,11 @@ export WM_THIRD_PARTY_DIR=$WM_PROJECT_DIR/ThirdParty
|
|||
# Use 'set' and 'unset' to adjust for your environent
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
# For AllMake.stage1
|
||||
export WM_THIRD_PARTY_USE_CMAKE_322=1
|
||||
#export WM_THIRD_PARTY_USE_CMAKE_322=1
|
||||
|
||||
#
|
||||
# For AllMake.stage2
|
||||
export WM_THIRD_PARTY_USE_OPENMPI_165=1
|
||||
export WM_THIRD_PARTY_USE_OPENMPI_188=1
|
||||
|
||||
#
|
||||
# For AllMake.stage3
|
||||
|
|
|
@ -943,7 +943,7 @@ Tolerances
|
|||
slidingEdgeEndCutoffTol 0.0001;
|
||||
slidingEdgeCoPlanarTol 0.8;
|
||||
|
||||
GGIAreaErrorTol 1e-8;
|
||||
GGIAreaErrorTol 1e-8;
|
||||
}
|
||||
|
||||
DimensionedConstants
|
||||
|
|
|
@ -77,11 +77,11 @@ setenv WM_THIRD_PARTY_DIR $WM_PROJECT_DIR/ThirdParty
|
|||
# This can be overriden in prefs.sh
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
# For AllMake.stage1
|
||||
setenv WM_THIRD_PARTY_USE_CMAKE_322 1
|
||||
#setenv WM_THIRD_PARTY_USE_CMAKE_322 1
|
||||
|
||||
#
|
||||
# For AllMake.stage2
|
||||
setenv WM_THIRD_PARTY_USE_OPENMPI_165 1
|
||||
setenv WM_THIRD_PARTY_USE_OPENMPI_188 1
|
||||
|
||||
#
|
||||
# For AllMake.stage3
|
||||
|
@ -152,7 +152,7 @@ if ( ! $?WM_PRECISION_OPTION ) setenv WM_PRECISION_OPTION DP
|
|||
|
||||
# WM_COMPILE_OPTION = Opt | Debug | Prof
|
||||
if ( ! $?WM_COMPILE_OPTION ) setenv WM_COMPILE_OPTION Opt
|
||||
#setenv WM_COMPILE_OPTION Opt
|
||||
setenv WM_COMPILE_OPTION Opt
|
||||
#setenv WM_COMPILE_OPTION Debug
|
||||
|
||||
# WM_MPLIB = SYSTEMOPENMPI | OPENMPI | MPICH | MPICH-GM | HPMPI | GAMMA | MPI | QSMPI | MVAPICH2
|
||||
|
|
|
@ -210,6 +210,9 @@ setenv WM_THIRD_PARTY_USE_OPENMPI_188 1
|
|||
#setenv WM_THIRD_PARTY_USE_OPENMPI_15 1
|
||||
#setenv WM_THIRD_PARTY_USE_OPENMPI_143 1
|
||||
#setenv WM_THIRD_PARTY_USE_OPENMPI_141 1
|
||||
#setenv WM_THIRD_PARTY_USE_MVAPICH2_22 1
|
||||
#setenv WM_THIRD_PARTY_USE_MVAPICH2_22_ConfigureAdditionalArgs '--disable-mcast'
|
||||
|
||||
|
||||
#
|
||||
# For AllMake.stage3
|
||||
|
|
|
@ -220,6 +220,9 @@ export WM_THIRD_PARTY_USE_OPENMPI_188=1
|
|||
#export WM_THIRD_PARTY_USE_OPENMPI_15=1
|
||||
#export WM_THIRD_PARTY_USE_OPENMPI_143=1
|
||||
#export WM_THIRD_PARTY_USE_OPENMPI_141=1
|
||||
#export WM_THIRD_PARTY_USE_MVAPICH2_22=1
|
||||
#export WM_THIRD_PARTY_USE_MVAPICH2_22_ConfigureAdditionalArgs='--disable-mcast'
|
||||
|
||||
|
||||
#
|
||||
# For AllMake.stage3
|
||||
|
|
|
@ -173,7 +173,7 @@ case OPENMPI:
|
|||
if ($?FOAM_VERBOSE && $?prompt) then
|
||||
echo "Using openmpi-1.8.8 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
|
||||
_foamSource $WM_THIRD_PARTY_DIR/packages/$mpi_version/platforms/$WM_OPTIONS/etc/$mpi_version.csh
|
||||
|
||||
else if ($?WM_THIRD_PARTY_USE_OPENMPI_165 != 0 && -d $WM_THIRD_PARTY_DIR/packages/openmpi-1.6.5/platforms/$WM_OPTIONS ) then
|
||||
set mpi_version=openmpi-1.6.5
|
||||
|
@ -181,7 +181,7 @@ case OPENMPI:
|
|||
if ($?FOAM_VERBOSE && $?prompt) then
|
||||
echo "Using openmpi-1.6.5 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
|
||||
_foamSource $WM_THIRD_PARTY_DIR/packages/$mpi_version/platforms/$WM_OPTIONS/etc/$mpi_version.csh
|
||||
|
||||
else if ($?WM_THIRD_PARTY_USE_OPENMPI_143 != 0 && -d $WM_THIRD_PARTY_DIR/packages/openmpi-1.4.3/platforms/$WM_OPTIONS ) then
|
||||
set mpi_version=openmpi-1.4.3
|
||||
|
@ -189,7 +189,7 @@ case OPENMPI:
|
|||
if ($?FOAM_VERBOSE && $?prompt) then
|
||||
echo "Using openmpi-1.4.3 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
|
||||
_foamSource $WM_THIRD_PARTY_DIR/packages/$mpi_version/platforms/$WM_OPTIONS/etc/$mpi_version.csh
|
||||
|
||||
else if ($?WM_THIRD_PARTY_USE_OPENMPI_143 != 0 && -d $WM_THIRD_PARTY_DIR/packages/openmpi-1.5/platforms/$WM_OPTIONS ) then
|
||||
set mpi_version=openmpi-1.5
|
||||
|
@ -197,7 +197,7 @@ case OPENMPI:
|
|||
if ($?FOAM_VERBOSE && $?prompt) then
|
||||
echo "Using openmpi-1.5 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
|
||||
_foamSource $WM_THIRD_PARTY_DIR/packages/$mpi_version/platforms/$WM_OPTIONS/etc/$mpi_version.csh
|
||||
endif
|
||||
|
||||
unset mpi_version
|
||||
|
@ -576,8 +576,8 @@ endif
|
|||
|
||||
# zoltan
|
||||
# ~~~~~
|
||||
if ( $?ZOLTAN_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_ZOLTAN_36 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/zoltan-3.6/platforms/$WM_OPTIONS ) then
|
||||
_foamSource $WM_THIRD_PARTY_DIR/packages/zoltan-3.6/platforms/$WM_OPTIONS/etc/zoltan-3.6.csh
|
||||
if ( $?ZOLTAN_SYSTEM == 0 && $?WM_THIRD_PARTY_USE_ZOLTAN_35 != 0 && -e "$WM_THIRD_PARTY_DIR"/packages/zoltan-3.5/platforms/$WM_OPTIONS ) then
|
||||
_foamSource $WM_THIRD_PARTY_DIR/packages/zoltan-3.5/platforms/$WM_OPTIONS/etc/zoltan-3.5.csh
|
||||
endif
|
||||
|
||||
# Python
|
||||
|
|
|
@ -220,7 +220,7 @@ OPENMPI)
|
|||
then
|
||||
echo "Using openmpi-1.8.8 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
|
||||
_foamSource $WM_THIRD_PARTY_DIR/packages/$mpi_version/platforms/$WM_OPTIONS/etc/$mpi_version.sh
|
||||
|
||||
elif [ ! -z $WM_THIRD_PARTY_USE_OPENMPI_165 ] && [ -e $WM_THIRD_PARTY_DIR/packages/openmpi-1.6.5/platforms/$WM_OPTIONS ]
|
||||
then
|
||||
|
@ -229,7 +229,7 @@ OPENMPI)
|
|||
then
|
||||
echo "Using openmpi-1.6.5 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
|
||||
_foamSource $WM_THIRD_PARTY_DIR/packages/$mpi_version/platforms/$WM_OPTIONS/etc/$mpi_version.sh
|
||||
|
||||
elif [ ! -z $WM_THIRD_PARTY_USE_OPENMPI_143 ] && [ -e $WM_THIRD_PARTY_DIR/packages/openmpi-1.4.3/platforms/$WM_OPTIONS ]
|
||||
then
|
||||
|
@ -238,7 +238,7 @@ OPENMPI)
|
|||
then
|
||||
echo "Using openmpi-1.4.3 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
|
||||
_foamSource $WM_THIRD_PARTY_DIR/packages/$mpi_version/platforms/$WM_OPTIONS/etc/$mpi_version.sh
|
||||
|
||||
elif [ ! -z $WM_THIRD_PARTY_USE_OPENMPI_15 ] && [ -e $WM_THIRD_PARTY_DIR/packages/openmpi-1.5/platforms/$WM_OPTIONS ]
|
||||
then
|
||||
|
@ -247,7 +247,7 @@ OPENMPI)
|
|||
then
|
||||
echo "Using openmpi-1.5 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
|
||||
_foamSource $WM_THIRD_PARTY_DIR/packages/$mpi_version/platforms/$WM_OPTIONS/etc/$mpi_version.sh
|
||||
fi
|
||||
|
||||
# On Windows set mpi_version from value defined in bashrc.mingw:
|
||||
|
@ -375,22 +375,16 @@ SYSTEMOPENMPI)
|
|||
unset mpi_version
|
||||
;;
|
||||
|
||||
|
||||
MVAPICH2)
|
||||
mpi_version=mvapich2
|
||||
|
||||
if [ -n "${MVAPICH2_BIN_DIR}" ] && [ -d "${MVAPICH2_BIN_DIR}" ]
|
||||
then
|
||||
_foamAddPath $MVAPICH2_BIN_DIR
|
||||
else
|
||||
MVAPICH2_BIN_DIR=$(dirname `which mpicc`)
|
||||
fi
|
||||
|
||||
if which mpicc >/dev/null
|
||||
then
|
||||
mpicc -v 2>/dev/null | grep -q "mpicc for MVAPICH2" ||
|
||||
echo "Warning: `which mpicc` does not appear to be for MVAPICH2"
|
||||
else
|
||||
echo "Warning: mpicc not available"
|
||||
mpi_version=mvapich2-2.2
|
||||
if [ ! -z $WM_THIRD_PARTY_USE_MVAPICH2_20 ] && [ -e $WM_THIRD_PARTY_DIR/packages/mvapich2-2.2/platforms/$WM_OPTIONS ]
|
||||
then
|
||||
if [ "$FOAM_VERBOSE" -a "$PS1" ]
|
||||
then
|
||||
echo "Using mvapich2 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
|
||||
fi
|
||||
|
||||
export MPI_HOME=`dirname $MVAPICH2_BIN_DIR`
|
||||
|
|
|
@ -59,6 +59,8 @@ thermophysicalModels/Allwmake
|
|||
transportModels/Allwmake
|
||||
turbulenceModels/Allwmake
|
||||
lagrangian/Allwmake
|
||||
wmake libso conjugateHeatTransfer
|
||||
|
||||
postProcessing/Allwmake
|
||||
conversion/Allwmake
|
||||
|
||||
|
|
|
@ -598,7 +598,7 @@ void Foam::sixDOFqODE::relaxAcceleration
|
|||
const scalar maxRelFactor
|
||||
)
|
||||
{
|
||||
if (minRelFactor - maxRelFactor < SMALL)
|
||||
if (mag(minRelFactor - maxRelFactor) < SMALL)
|
||||
{
|
||||
// Fixed relaxation
|
||||
relaxFactorT_ = minRelFactor;
|
||||
|
|
|
@ -47,7 +47,7 @@ namespace Foam
|
|||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class chtRcTemperatureFvPatchScalarField Declaration
|
||||
Class chtRcTemperatureFvPatchScalarField Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class chtRcTemperatureFvPatchScalarField
|
||||
|
@ -60,7 +60,7 @@ class chtRcTemperatureFvPatchScalarField
|
|||
word kName_;
|
||||
|
||||
//- Take radiation into account for this patch
|
||||
bool radiation_;
|
||||
Switch radiation_;
|
||||
|
||||
|
||||
public:
|
||||
|
@ -86,7 +86,8 @@ public:
|
|||
const dictionary&
|
||||
);
|
||||
|
||||
//- Construct by mapping given chtRcTemperatureFvPatchScalarField onto a new patch
|
||||
//- Construct by mapping given chtRcTemperatureFvPatchScalarField
|
||||
// onto a new patch
|
||||
chtRcTemperatureFvPatchScalarField
|
||||
(
|
||||
const chtRcTemperatureFvPatchScalarField&,
|
||||
|
@ -128,8 +129,26 @@ public:
|
|||
|
||||
// Access functions
|
||||
|
||||
//- Return kName
|
||||
const word& kName() const
|
||||
{
|
||||
return kName_;
|
||||
}
|
||||
|
||||
//- Return access to kName
|
||||
word& kName()
|
||||
{
|
||||
return kName_;
|
||||
}
|
||||
|
||||
//- Return radiation
|
||||
bool radiation() const
|
||||
const Switch& radiation() const
|
||||
{
|
||||
return radiation_;
|
||||
}
|
||||
|
||||
//- Return access to radiation
|
||||
Switch& radiation()
|
||||
{
|
||||
return radiation_;
|
||||
}
|
||||
|
@ -158,7 +177,6 @@ public:
|
|||
|
||||
//- Write
|
||||
virtual void write(Ostream&) const;
|
||||
|
||||
};
|
||||
|
||||
|
|
@ -36,14 +36,10 @@ Author
|
|||
#include "radiationConstants.H"
|
||||
#include "VectorN.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
chtRcThermalDiffusivityFvPatchScalarField::chtRcThermalDiffusivityFvPatchScalarField
|
||||
Foam::chtRcThermalDiffusivityFvPatchScalarField::
|
||||
chtRcThermalDiffusivityFvPatchScalarField
|
||||
(
|
||||
const fvPatch& p,
|
||||
const DimensionedField<scalar, volMesh>& iF
|
||||
|
@ -53,7 +49,8 @@ chtRcThermalDiffusivityFvPatchScalarField::chtRcThermalDiffusivityFvPatchScalarF
|
|||
{}
|
||||
|
||||
|
||||
chtRcThermalDiffusivityFvPatchScalarField::chtRcThermalDiffusivityFvPatchScalarField
|
||||
Foam::chtRcThermalDiffusivityFvPatchScalarField::
|
||||
chtRcThermalDiffusivityFvPatchScalarField
|
||||
(
|
||||
const fvPatch& p,
|
||||
const DimensionedField<scalar, volMesh>& iF,
|
||||
|
@ -64,7 +61,8 @@ chtRcThermalDiffusivityFvPatchScalarField::chtRcThermalDiffusivityFvPatchScalarF
|
|||
{}
|
||||
|
||||
|
||||
chtRcThermalDiffusivityFvPatchScalarField::chtRcThermalDiffusivityFvPatchScalarField
|
||||
Foam::chtRcThermalDiffusivityFvPatchScalarField::
|
||||
chtRcThermalDiffusivityFvPatchScalarField
|
||||
(
|
||||
const chtRcThermalDiffusivityFvPatchScalarField& ptf,
|
||||
const fvPatch& p,
|
||||
|
@ -76,7 +74,8 @@ chtRcThermalDiffusivityFvPatchScalarField::chtRcThermalDiffusivityFvPatchScalarF
|
|||
{}
|
||||
|
||||
|
||||
chtRcThermalDiffusivityFvPatchScalarField::chtRcThermalDiffusivityFvPatchScalarField
|
||||
Foam::chtRcThermalDiffusivityFvPatchScalarField::
|
||||
chtRcThermalDiffusivityFvPatchScalarField
|
||||
(
|
||||
const chtRcThermalDiffusivityFvPatchScalarField& ptf,
|
||||
const DimensionedField<scalar, volMesh>& iF
|
||||
|
@ -88,7 +87,7 @@ chtRcThermalDiffusivityFvPatchScalarField::chtRcThermalDiffusivityFvPatchScalarF
|
|||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
void chtRcThermalDiffusivityFvPatchScalarField::evaluate
|
||||
void Foam::chtRcThermalDiffusivityFvPatchScalarField::evaluate
|
||||
(
|
||||
const Pstream::commsTypes
|
||||
)
|
||||
|
@ -97,7 +96,7 @@ void chtRcThermalDiffusivityFvPatchScalarField::evaluate
|
|||
}
|
||||
|
||||
|
||||
void chtRcThermalDiffusivityFvPatchScalarField::updateCoeffs()
|
||||
void Foam::chtRcThermalDiffusivityFvPatchScalarField::updateCoeffs()
|
||||
{
|
||||
if (updated())
|
||||
{
|
||||
|
@ -109,16 +108,18 @@ void chtRcThermalDiffusivityFvPatchScalarField::updateCoeffs()
|
|||
|
||||
|
||||
void
|
||||
chtRcThermalDiffusivityFvPatchScalarField::calcThermalDiffusivity
|
||||
Foam::chtRcThermalDiffusivityFvPatchScalarField::calcThermalDiffusivity
|
||||
(
|
||||
chtRegionCoupleBase& owner,
|
||||
const chtRegionCoupleBase& neighbour
|
||||
) const
|
||||
{
|
||||
if(debug)
|
||||
if (debug)
|
||||
{
|
||||
Info << "In chtRcThermalDiffusivityFvPatchScalarField::calcThermalDiffusivity on "
|
||||
<< this->dimensionedInternalField().name()
|
||||
InfoIn
|
||||
(
|
||||
"chtRcThermalDiffusivityFvPatchScalarField::calcThermalDiffusivity"
|
||||
) << "for field " << this->dimensionedInternalField().name()
|
||||
<< " in " << this->patch().boundaryMesh().mesh().name()
|
||||
<< endl;
|
||||
}
|
||||
|
@ -158,19 +159,19 @@ chtRcThermalDiffusivityFvPatchScalarField::calcThermalDiffusivity
|
|||
const scalarField& lfNei = neighbour.originalPatchField();
|
||||
scalarField lTcNei = TwOwn.shadowPatchField().patchInternalField();
|
||||
|
||||
forAll(lData, facei)
|
||||
forAll (lData, facei)
|
||||
{
|
||||
lData[facei][0] = lTcNei[facei];
|
||||
lData[facei][1] = lfNei[facei];
|
||||
}
|
||||
|
||||
if(TwOwn.shadowPatchField().radiation())
|
||||
if (TwOwn.shadowPatchField().radiation())
|
||||
{
|
||||
const scalarField& lQrNei =
|
||||
owner.lookupShadowPatchField<volScalarField, scalar>("Qr");
|
||||
const scalarField& lTwNei = TwOwn.shadowPatchField();
|
||||
|
||||
forAll(lData, facei)
|
||||
forAll (lData, facei)
|
||||
{
|
||||
lData[facei][2] = lTwNei[facei];
|
||||
lData[facei][3] = lQrNei[facei];
|
||||
|
@ -180,15 +181,15 @@ chtRcThermalDiffusivityFvPatchScalarField::calcThermalDiffusivity
|
|||
const Field<VectorN<scalar, 4> > iData =
|
||||
owner.regionCouplePatch().interpolate(lData);
|
||||
|
||||
forAll(iData, facei)
|
||||
forAll (iData, facei)
|
||||
{
|
||||
TcNei[facei] = iData[facei][0];
|
||||
fNei[facei] = iData[facei][1];
|
||||
}
|
||||
|
||||
if(TwOwn.shadowPatchField().radiation())
|
||||
if (TwOwn.shadowPatchField().radiation())
|
||||
{
|
||||
forAll(iData, facei)
|
||||
forAll (iData, facei)
|
||||
{
|
||||
Qr[facei] += iData[facei][3];
|
||||
fourQro[facei] +=
|
||||
|
@ -205,46 +206,35 @@ chtRcThermalDiffusivityFvPatchScalarField::calcThermalDiffusivity
|
|||
const scalarField kOwn = fOwn/(1.0 - p.weights())/mld.magDelta(p.index());
|
||||
const scalarField kNei = fNei/p.weights()/mld.magDelta(p.index());
|
||||
|
||||
//Info << "kOwn = " << kOwn << endl;
|
||||
//Info << "kNei = " << kNei << endl;
|
||||
//Info << "TcOwn = " << TcOwn << endl;
|
||||
//Info << "TcNei = " << TcNei << endl;
|
||||
//Info << "DeltaT = " << TcNei - TcOwn << endl;
|
||||
|
||||
//Info << "Qr = " << Qr << endl;
|
||||
//Info << "kOwn + kNei = " << (kOwn + kNei) << endl;
|
||||
|
||||
//Info << "k = " << k << endl;
|
||||
|
||||
k = kOwn*(TwOwn*(kNei*(TcNei - TcOwn) + Qr + fourQro) - TcOwn*fourQro);
|
||||
k /= stabilise((fourQro + TwOwn*(kOwn + kNei))*(TcNei - TcOwn), SMALL);
|
||||
k /= p.deltaCoeffs();
|
||||
|
||||
//Info << "k = " << k << endl;
|
||||
|
||||
forAll(k, facei)
|
||||
forAll (k, facei)
|
||||
{
|
||||
k[facei] = max(min(k[facei], 100*kHarm[facei]), 0.01*kHarm[facei]);
|
||||
}
|
||||
|
||||
//Info << "k = " << k << endl;
|
||||
|
||||
owner.fvPatchScalarField::updateCoeffs();
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
chtRcThermalDiffusivityFvPatchScalarField::calcTemperature
|
||||
Foam::chtRcThermalDiffusivityFvPatchScalarField::calcTemperature
|
||||
(
|
||||
chtRcTemperatureFvPatchScalarField& TwOwn,
|
||||
const chtRcTemperatureFvPatchScalarField& neighbour,
|
||||
const chtRegionCoupleBase& ownerK
|
||||
) const
|
||||
{
|
||||
if(debug)
|
||||
if (debug)
|
||||
{
|
||||
Info << "In chtRcThermalDiffusivityFvPatchScalarField::calcTemperature on "
|
||||
<< this->dimensionedInternalField().name()
|
||||
InfoIn
|
||||
(
|
||||
"chtRcThermalDiffusivityFvPatchScalarField::calcTemperature"
|
||||
) << "for field " << this->dimensionedInternalField().name()
|
||||
<< " in " << this->patch().boundaryMesh().mesh().name()
|
||||
<< endl;
|
||||
}
|
||||
|
@ -280,19 +270,19 @@ chtRcThermalDiffusivityFvPatchScalarField::calcTemperature
|
|||
scalarField lTcNei =
|
||||
TwOwn.shadowPatchField().patchInternalField();
|
||||
|
||||
forAll(lData, facei)
|
||||
forAll (lData, facei)
|
||||
{
|
||||
lData[facei][0] = lTcNei[facei];
|
||||
lData[facei][1] = lfNei[facei];
|
||||
}
|
||||
|
||||
if(TwOwn.shadowPatchField().radiation())
|
||||
if (TwOwn.shadowPatchField().radiation())
|
||||
{
|
||||
const scalarField& lTwNei = TwOwn.shadowPatchField();
|
||||
const scalarField& lQrNei =
|
||||
TwOwn.lookupShadowPatchField<volScalarField, scalar>("Qr");
|
||||
|
||||
forAll(lData, facei)
|
||||
forAll (lData, facei)
|
||||
{
|
||||
lData[facei][2] = lTwNei[facei];
|
||||
lData[facei][3] = lQrNei[facei];
|
||||
|
@ -302,15 +292,15 @@ chtRcThermalDiffusivityFvPatchScalarField::calcTemperature
|
|||
const Field<VectorN<scalar, 4> > iData =
|
||||
TwOwn.regionCouplePatch().interpolate(lData);
|
||||
|
||||
forAll(iData, facei)
|
||||
forAll (iData, facei)
|
||||
{
|
||||
TcNei[facei] = iData[facei][0];
|
||||
fNei[facei] = iData[facei][1];
|
||||
}
|
||||
|
||||
if(TwOwn.shadowPatchField().radiation())
|
||||
if (TwOwn.shadowPatchField().radiation())
|
||||
{
|
||||
forAll(iData, facei)
|
||||
forAll (iData, facei)
|
||||
{
|
||||
fourQro[facei] +=
|
||||
4.0*radiation::sigmaSB.value()*pow4(iData[facei][2]);
|
||||
|
@ -322,29 +312,15 @@ chtRcThermalDiffusivityFvPatchScalarField::calcTemperature
|
|||
const scalarField kOwn = fOwn/(1.0 - p.weights())/mld.magDelta(p.index());
|
||||
const scalarField kNei = fNei/p.weights()/mld.magDelta(p.index());
|
||||
|
||||
//Info << "kOwn = " << kOwn << endl;
|
||||
//Info << "kNei = " << kNei << endl;
|
||||
//Info << "TcOwn = " << TcOwn << endl;
|
||||
//Info << "TcNei = " << TcNei << endl;
|
||||
//Info << "Qr = " << Qr << " Sum = " << sum(Qr*p.magSf()) << endl;
|
||||
|
||||
TwOwn *=
|
||||
(fourQro + Qr + kOwn*TcOwn + kNei*TcNei)
|
||||
/(TwOwn*(kOwn + kNei) + fourQro);
|
||||
|
||||
//Info << "TwOwn = " << TwOwn << endl;
|
||||
|
||||
//scalarField q1 = (TwOwn - TcOwn)*kOwn;
|
||||
//Info << "q1 = " << q1 << " Sum = " << sum(q1*p.magSf()) << endl;
|
||||
|
||||
//scalarField q2 = (TcNei - TcOwn)*ownerK*p.deltaCoeffs();
|
||||
//Info << "q2 = " << q2 << " Sum = " << sum(q2*p.magSf()) << endl;
|
||||
|
||||
TwOwn.fvPatchScalarField::updateCoeffs();
|
||||
}
|
||||
|
||||
|
||||
void chtRcThermalDiffusivityFvPatchScalarField::write(Ostream& os) const
|
||||
void Foam::chtRcThermalDiffusivityFvPatchScalarField::write(Ostream& os) const
|
||||
{
|
||||
fvPatchScalarField::write(os);
|
||||
os.writeKeyword("remoteField")
|
||||
|
@ -353,19 +329,18 @@ void chtRcThermalDiffusivityFvPatchScalarField::write(Ostream& os) const
|
|||
}
|
||||
|
||||
|
||||
//- Specify data associated with VectorN<scalar, 4> type is contiguous
|
||||
template<>
|
||||
inline bool contiguous<VectorN<scalar, 4> >() {return true;}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
makePatchTypeField
|
||||
(
|
||||
fvPatchScalarField,
|
||||
chtRcThermalDiffusivityFvPatchScalarField
|
||||
);
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
makePatchTypeField
|
||||
(
|
||||
fvPatchScalarField,
|
||||
chtRcThermalDiffusivityFvPatchScalarField
|
||||
);
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
|
||||
// ************************************************************************* //
|
|
@ -25,10 +25,12 @@ Class
|
|||
chtRcThermalDiffusivityFvPatchScalarField
|
||||
|
||||
Description
|
||||
Region couple patch field taking radiation into account
|
||||
Diffusivity for the region couple patch field taking radiation into account
|
||||
Master side
|
||||
|
||||
Author
|
||||
Henrik Rusche, Wikki GmbH. All rights reserved
|
||||
Cleaned up by Hrvoje Jasak
|
||||
|
||||
SourceFiles
|
||||
chtRcThermalDiffusivityFvPatchScalarField.C
|
||||
|
@ -46,16 +48,13 @@ namespace Foam
|
|||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class chtRcThermalDiffusivityFvPatchScalarField Declaration
|
||||
Class chtRcThermalDiffusivityFvPatchScalarField Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class chtRcThermalDiffusivityFvPatchScalarField
|
||||
:
|
||||
public chtRegionCoupleBase
|
||||
{
|
||||
// Private data
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
|
@ -79,7 +78,8 @@ public:
|
|||
const dictionary&
|
||||
);
|
||||
|
||||
//- Construct by mapping given chtRcThermalDiffusivityFvPatchScalarField onto a new patch
|
||||
//- Construct by mapping given
|
||||
// chtRcThermalDiffusivityFvPatchScalarField onto a new patch
|
||||
chtRcThermalDiffusivityFvPatchScalarField
|
||||
(
|
||||
const chtRcThermalDiffusivityFvPatchScalarField&,
|
||||
|
@ -119,9 +119,6 @@ public:
|
|||
|
||||
// Member functions
|
||||
|
||||
// Access
|
||||
|
||||
|
||||
// Evaluation functions
|
||||
|
||||
//- Evaluate the patch field
|
||||
|
@ -148,7 +145,6 @@ public:
|
|||
|
||||
//- Write
|
||||
virtual void write(Ostream&) const;
|
||||
|
||||
};
|
||||
|
||||
|
|
@ -31,14 +31,10 @@ Author
|
|||
#include "fvPatchFieldMapper.H"
|
||||
#include "volFields.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
chtRcThermalDiffusivitySlaveFvPatchScalarField::chtRcThermalDiffusivitySlaveFvPatchScalarField
|
||||
Foam::chtRcThermalDiffusivitySlaveFvPatchScalarField::
|
||||
chtRcThermalDiffusivitySlaveFvPatchScalarField
|
||||
(
|
||||
const fvPatch& p,
|
||||
const DimensionedField<scalar, volMesh>& iF
|
||||
|
@ -48,7 +44,8 @@ chtRcThermalDiffusivitySlaveFvPatchScalarField::chtRcThermalDiffusivitySlaveFvPa
|
|||
{}
|
||||
|
||||
|
||||
chtRcThermalDiffusivitySlaveFvPatchScalarField::chtRcThermalDiffusivitySlaveFvPatchScalarField
|
||||
Foam::chtRcThermalDiffusivitySlaveFvPatchScalarField::
|
||||
chtRcThermalDiffusivitySlaveFvPatchScalarField
|
||||
(
|
||||
const fvPatch& p,
|
||||
const DimensionedField<scalar, volMesh>& iF,
|
||||
|
@ -59,7 +56,19 @@ chtRcThermalDiffusivitySlaveFvPatchScalarField::chtRcThermalDiffusivitySlaveFvPa
|
|||
{}
|
||||
|
||||
|
||||
chtRcThermalDiffusivitySlaveFvPatchScalarField::chtRcThermalDiffusivitySlaveFvPatchScalarField
|
||||
Foam::chtRcThermalDiffusivitySlaveFvPatchScalarField::
|
||||
chtRcThermalDiffusivitySlaveFvPatchScalarField
|
||||
(
|
||||
const chtRcThermalDiffusivitySlaveFvPatchScalarField& ptf,
|
||||
const DimensionedField<scalar, volMesh>& iF
|
||||
)
|
||||
:
|
||||
chtRegionCoupleBase(ptf, iF)
|
||||
{}
|
||||
|
||||
|
||||
Foam::chtRcThermalDiffusivitySlaveFvPatchScalarField::
|
||||
chtRcThermalDiffusivitySlaveFvPatchScalarField
|
||||
(
|
||||
const chtRcThermalDiffusivitySlaveFvPatchScalarField& ptf,
|
||||
const fvPatch& p,
|
||||
|
@ -71,20 +80,10 @@ chtRcThermalDiffusivitySlaveFvPatchScalarField::chtRcThermalDiffusivitySlaveFvPa
|
|||
{}
|
||||
|
||||
|
||||
chtRcThermalDiffusivitySlaveFvPatchScalarField::chtRcThermalDiffusivitySlaveFvPatchScalarField
|
||||
(
|
||||
const chtRcThermalDiffusivitySlaveFvPatchScalarField& ptf,
|
||||
const DimensionedField<scalar, volMesh>& iF
|
||||
)
|
||||
:
|
||||
chtRegionCoupleBase(ptf, iF)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
const chtRegionCoupleBase&
|
||||
chtRcThermalDiffusivitySlaveFvPatchScalarField::shadowPatchField() const
|
||||
const Foam::chtRegionCoupleBase&
|
||||
Foam::chtRcThermalDiffusivitySlaveFvPatchScalarField::shadowPatchField() const
|
||||
{
|
||||
return dynamic_cast<const chtRegionCoupleBase&>
|
||||
(
|
||||
|
@ -93,7 +92,7 @@ chtRcThermalDiffusivitySlaveFvPatchScalarField::shadowPatchField() const
|
|||
}
|
||||
|
||||
|
||||
void chtRcThermalDiffusivitySlaveFvPatchScalarField::evaluate
|
||||
void Foam::chtRcThermalDiffusivitySlaveFvPatchScalarField::evaluate
|
||||
(
|
||||
const Pstream::commsTypes
|
||||
)
|
||||
|
@ -102,7 +101,7 @@ void chtRcThermalDiffusivitySlaveFvPatchScalarField::evaluate
|
|||
}
|
||||
|
||||
|
||||
void chtRcThermalDiffusivitySlaveFvPatchScalarField::updateCoeffs()
|
||||
void Foam::chtRcThermalDiffusivitySlaveFvPatchScalarField::updateCoeffs()
|
||||
{
|
||||
if (updated())
|
||||
{
|
||||
|
@ -115,12 +114,16 @@ void chtRcThermalDiffusivitySlaveFvPatchScalarField::updateCoeffs()
|
|||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
makePatchTypeField
|
||||
(
|
||||
fvPatchScalarField,
|
||||
chtRcThermalDiffusivitySlaveFvPatchScalarField
|
||||
);
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
makePatchTypeField
|
||||
(
|
||||
fvPatchScalarField,
|
||||
chtRcThermalDiffusivitySlaveFvPatchScalarField
|
||||
);
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
|
||||
// ************************************************************************* //
|
|
@ -25,10 +25,12 @@ Class
|
|||
chtRcThermalDiffusivitySlaveFvPatchScalarField
|
||||
|
||||
Description
|
||||
Region couple patch field taking radiation into account
|
||||
Diffusivity for the region couple patch field taking radiation into account
|
||||
Slave side
|
||||
|
||||
Author
|
||||
Henrik Rusche, Wikki GmbH. All rights reserved
|
||||
Cleaned up by Hrvoje Jasak
|
||||
|
||||
SourceFiles
|
||||
chtRcThermalDiffusivitySlaveFvPatchScalarField.C
|
||||
|
@ -49,15 +51,13 @@ class chtThermalDiffusivityRegionCoupleFvPatchScalarField;
|
|||
class chtTemperatureRegionCoupleFvPatchScalarField;
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class chtRcThermalDiffusivitySlaveFvPatchScalarField Declaration
|
||||
Class chtRcThermalDiffusivitySlaveFvPatchScalarField Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class chtRcThermalDiffusivitySlaveFvPatchScalarField
|
||||
:
|
||||
public chtRegionCoupleBase
|
||||
{
|
||||
// Private data
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
|
@ -81,7 +81,8 @@ public:
|
|||
const dictionary&
|
||||
);
|
||||
|
||||
//- Construct by mapping given chtRcThermalDiffusivitySlaveFvPatchScalarField onto a new patch
|
||||
//- Construct by mapping given
|
||||
// chtRcThermalDiffusivitySlaveFvPatchScalarField onto a new patch
|
||||
chtRcThermalDiffusivitySlaveFvPatchScalarField
|
||||
(
|
||||
const chtRcThermalDiffusivitySlaveFvPatchScalarField&,
|
Some files were not shown because too many files have changed in this diff Show more
Reference in a new issue