Replace tabs by 4 spaces in bin, tutorials, src, ... & clean-up by hand
This commit is contained in:
parent
4eb1b1f016
commit
82a0e1e7df
120 changed files with 1279 additions and 1226 deletions
|
@ -75,13 +75,13 @@ runParallel ()
|
||||||
echo "$APP_NAME already run on $PWD: remove log file to run"
|
echo "$APP_NAME already run on $PWD: remove log file to run"
|
||||||
else
|
else
|
||||||
echo "Running $APP_NAME in parallel on $PWD using $1 processes"
|
echo "Running $APP_NAME in parallel on $PWD using $1 processes"
|
||||||
if [ -z "$WM_MPIRUN_PROG" ]
|
if [ -z "$WM_MPIRUN_PROG" ]
|
||||||
then
|
then
|
||||||
mpirunProg=mpirun
|
mpirunProg=mpirun
|
||||||
else
|
else
|
||||||
# Allow exceentric systems to override the hardcoded mpirun
|
# Allow exceentric systems to override the hardcoded mpirun
|
||||||
mpirunProg=$WM_MPIRUN_PROG
|
mpirunProg=$WM_MPIRUN_PROG
|
||||||
fi
|
fi
|
||||||
( $mpirunProg -np $1 $APP_RUN -parallel < /dev/null > $LOG_NAME 2>&1 )
|
( $mpirunProg -np $1 $APP_RUN -parallel < /dev/null > $LOG_NAME 2>&1 )
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
186
etc/bashrc
186
etc/bashrc
|
@ -258,102 +258,102 @@ Darwin)
|
||||||
which -s port >/dev/null
|
which -s port >/dev/null
|
||||||
if [ $? -eq "0" -a -d '/opt/local/etc/macports' ]
|
if [ $? -eq "0" -a -d '/opt/local/etc/macports' ]
|
||||||
then
|
then
|
||||||
if [ "$FOAM_VERBOSE" -a "$PS1" ]
|
if [ "$FOAM_VERBOSE" -a "$PS1" ]
|
||||||
then
|
then
|
||||||
echo "Using Macports binaries"
|
echo "Using Macports binaries"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export WM_USE_MACPORT=1
|
export WM_USE_MACPORT=1
|
||||||
export WM_BASE_COMPILER=`echo $WM_COMPILER | tr -d "[:digit:]"`
|
export WM_BASE_COMPILER=`echo $WM_COMPILER | tr -d "[:digit:]"`
|
||||||
export WM_MACPORT_MPI_VERSION=`echo $WM_COMPILER | tr "[:upper:]" "[:lower:]"`
|
export WM_MACPORT_MPI_VERSION=`echo $WM_COMPILER | tr "[:upper:]" "[:lower:]"`
|
||||||
export WM_MACPORT_VERSION=`echo $WM_MACPORT_MPI_VERSION | tr -d "[:alpha:]" | sed -e "s/\(.\)\(.\)/\1\.\2/"`
|
export WM_MACPORT_VERSION=`echo $WM_MACPORT_MPI_VERSION | tr -d "[:alpha:]" | sed -e "s/\(.\)\(.\)/\1\.\2/"`
|
||||||
|
|
||||||
if [ -z "$WM_CHOSEN_MAC_MPI" ]
|
if [ -z "$WM_CHOSEN_MAC_MPI" ]
|
||||||
then
|
then
|
||||||
if [ -e '/opt/local/bin/mpicc' ]
|
if [ -e '/opt/local/bin/mpicc' ]
|
||||||
then
|
then
|
||||||
readlink /opt/local/bin/mpicc | grep openmpi >/dev/null
|
readlink /opt/local/bin/mpicc | grep openmpi >/dev/null
|
||||||
if [ $? -eq "0" ]
|
if [ $? -eq "0" ]
|
||||||
then
|
then
|
||||||
export WM_MPLIB=MACPORTOPENMPI
|
export WM_MPLIB=MACPORTOPENMPI
|
||||||
if [ "$FOAM_VERBOSE" -a "$PS1" ]
|
if [ "$FOAM_VERBOSE" -a "$PS1" ]
|
||||||
then
|
then
|
||||||
echo "Using OpenMPI from MacPorts"
|
echo "Using OpenMPI from MacPorts"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
readlink /opt/local/bin/mpicc | grep mpich >/dev/null
|
readlink /opt/local/bin/mpicc | grep mpich >/dev/null
|
||||||
if [ $? -eq "0" ]
|
if [ $? -eq "0" ]
|
||||||
then
|
then
|
||||||
export WM_MPLIB=MACPORTMPICH
|
export WM_MPLIB=MACPORTMPICH
|
||||||
if [ "$FOAM_VERBOSE" -a "$PS1" ]
|
if [ "$FOAM_VERBOSE" -a "$PS1" ]
|
||||||
then
|
then
|
||||||
echo "Using MPICH from MacPorts"
|
echo "Using MPICH from MacPorts"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "/opt/local/bin/mpicc neither OpenMPI nor MPICH. Confused. Defaulting to OPENMPI"
|
echo "/opt/local/bin/mpicc neither OpenMPI nor MPICH. Confused. Defaulting to OPENMPI"
|
||||||
export WM_MPLIB=OPENMPI
|
export WM_MPLIB=OPENMPI
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
export WM_MPLIB=$WM_CHOSEN_MAC_MPI
|
export WM_MPLIB=$WM_CHOSEN_MAC_MPI
|
||||||
if [ "$FOAM_VERBOSE" -a "$PS1" ]
|
if [ "$FOAM_VERBOSE" -a "$PS1" ]
|
||||||
then
|
then
|
||||||
echo "User chose WM_CHOSEN_MAC_MPI=$WM_CHOSEN_MAC_MPI"
|
echo "User chose WM_CHOSEN_MAC_MPI=$WM_CHOSEN_MAC_MPI"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$WM_MPLIB" == "MACPORTOPENMPI" ]
|
if [ "$WM_MPLIB" == "MACPORTOPENMPI" ]
|
||||||
then
|
then
|
||||||
if [ ! -e "/opt/local/lib/openmpi-$WM_MACPORT_MPI_VERSION" ]
|
if [ ! -e "/opt/local/lib/openmpi-$WM_MACPORT_MPI_VERSION" ]
|
||||||
then
|
then
|
||||||
export WM_MACPORT_MPI_VERSION=mp
|
export WM_MACPORT_MPI_VERSION=mp
|
||||||
if [ ! -e "/opt/local/lib/openmpi-$WM_MACPORT_MPI_VERSION" ]
|
if [ ! -e "/opt/local/lib/openmpi-$WM_MACPORT_MPI_VERSION" ]
|
||||||
then
|
then
|
||||||
echo "Proper OpenMPI not installed. Either do 'port install openmpi-$WM_MACPORT_MPI_VERSION' or 'port install openmpi-default'"
|
echo "Proper OpenMPI not installed. Either do 'port install openmpi-$WM_MACPORT_MPI_VERSION' or 'port install openmpi-default'"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if [ "$WM_MPLIB" == "MACPORTMPICH" ]
|
if [ "$WM_MPLIB" == "MACPORTMPICH" ]
|
||||||
then
|
then
|
||||||
if [ ! -e "/opt/local/lib/mpich-$WM_MACPORT_MPI_VERSION" ]
|
if [ ! -e "/opt/local/lib/mpich-$WM_MACPORT_MPI_VERSION" ]
|
||||||
then
|
then
|
||||||
echo "MPICH wants the same version as the used compiler. Do 'port install mpich-$WM_MACPORT_MPI_VERSION'"
|
echo "MPICH wants the same version as the used compiler. Do 'port install mpich-$WM_MACPORT_MPI_VERSION'"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$WM_COMPILER" != "Gcc" ]
|
if [ "$WM_COMPILER" != "Gcc" ]
|
||||||
then
|
then
|
||||||
if [ "$WM_BASE_COMPILER" == "Gcc" ]
|
if [ "$WM_BASE_COMPILER" == "Gcc" ]
|
||||||
then
|
then
|
||||||
export WM_CC="gcc-mp-$WM_MACPORT_VERSION"
|
export WM_CC="gcc-mp-$WM_MACPORT_VERSION"
|
||||||
export WM_CXX="g++-mp-$WM_MACPORT_VERSION"
|
export WM_CXX="g++-mp-$WM_MACPORT_VERSION"
|
||||||
export WM_FC="gfortran-mp-$WM_MACPORT_VERSION"
|
export WM_FC="gfortran-mp-$WM_MACPORT_VERSION"
|
||||||
elif [ "$WM_BASE_COMPILER" == "Clang" ]
|
elif [ "$WM_BASE_COMPILER" == "Clang" ]
|
||||||
then
|
then
|
||||||
export WM_CC="clang-mp-$WM_MACPORT_VERSION"
|
export WM_CC="clang-mp-$WM_MACPORT_VERSION"
|
||||||
export WM_CXX="clang++-mp-$WM_MACPORT_VERSION"
|
export WM_CXX="clang++-mp-$WM_MACPORT_VERSION"
|
||||||
# Seems like there is no Fortran-frontend for LLVM at thistime
|
# Seems like there is no Fortran-frontend for LLVM at thistime
|
||||||
elif [ "$WM_BASE_COMPILER" == "Dragonegg" ]
|
elif [ "$WM_BASE_COMPILER" == "Dragonegg" ]
|
||||||
then
|
then
|
||||||
export WM_CC="dragonegg-$WM_MACPORT_VERSION-gcc"
|
export WM_CC="dragonegg-$WM_MACPORT_VERSION-gcc"
|
||||||
export WM_CXX="dragonegg-$WM_MACPORT_VERSION-g++"
|
export WM_CXX="dragonegg-$WM_MACPORT_VERSION-g++"
|
||||||
export WM_CXX="dragonegg-$WM_MACPORT_VERSION-gfortran"
|
export WM_CXX="dragonegg-$WM_MACPORT_VERSION-gfortran"
|
||||||
else
|
else
|
||||||
echo "Unknown base compiler $WM_BASE_COMPILER"
|
echo "Unknown base compiler $WM_BASE_COMPILER"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ruleDirBase=$WM_PROJECT_DIR/wmake/rules/$WM_ARCH
|
ruleDirBase=$WM_PROJECT_DIR/wmake/rules/$WM_ARCH
|
||||||
ruleDirTarget=$ruleDirBase$WM_BASE_COMPILER
|
ruleDirTarget=$ruleDirBase$WM_BASE_COMPILER
|
||||||
ruleDir=$ruleDirBase$WM_COMPILER
|
ruleDir=$ruleDirBase$WM_COMPILER
|
||||||
if [ ! -e $ruleDir ]
|
if [ ! -e $ruleDir ]
|
||||||
then
|
then
|
||||||
echo "Rule directory $ruleDir not existing. Linking to $ruleDirTarget"
|
echo "Rule directory $ruleDir not existing. Linking to $ruleDirTarget"
|
||||||
ln -s $ruleDirTarget $ruleDir
|
ln -s $ruleDirTarget $ruleDir
|
||||||
fi
|
fi
|
||||||
unset ruleDir ruleDirBase
|
unset ruleDir ruleDirBase
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
export WM_COMPILER=Gcc
|
export WM_COMPILER=Gcc
|
||||||
export WM_MPLIB=OPENMPI
|
export WM_MPLIB=OPENMPI
|
||||||
|
@ -446,8 +446,8 @@ fi
|
||||||
# then
|
# then
|
||||||
# if [[ `ulimit -n` == "unlimited" || `ulimit -n` < 8192 ]]
|
# if [[ `ulimit -n` == "unlimited" || `ulimit -n` < 8192 ]]
|
||||||
# then
|
# then
|
||||||
# # higher limit needed for wmkdeps
|
# # higher limit needed for wmkdeps
|
||||||
# ulimit -n 8192
|
# ulimit -n 8192
|
||||||
# fi
|
# fi
|
||||||
# fi
|
# fi
|
||||||
|
|
||||||
|
|
|
@ -194,14 +194,14 @@ unset compilerBin compilerLib compilerInstall
|
||||||
if [ -z "$WM_CC" ]
|
if [ -z "$WM_CC" ]
|
||||||
then
|
then
|
||||||
case "$WM_COMPILER" in
|
case "$WM_COMPILER" in
|
||||||
Gcc*)
|
Gcc*)
|
||||||
export WM_CC='gcc'
|
export WM_CC='gcc'
|
||||||
export WM_CXX='g++'
|
export WM_CXX='g++'
|
||||||
;;
|
;;
|
||||||
Icc)
|
Icc)
|
||||||
export WM_CC='icc'
|
export WM_CC='icc'
|
||||||
export WM_CXX='icpc'
|
export WM_CXX='icpc'
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -245,24 +245,24 @@ OPENMPI)
|
||||||
;;
|
;;
|
||||||
|
|
||||||
MACPORTOPENMPI)
|
MACPORTOPENMPI)
|
||||||
unset OPAL_PREFIX
|
unset OPAL_PREFIX
|
||||||
|
|
||||||
export FOAM_MPI=openmpi-macport-$WM_MACPORT_MPI_VERSION
|
export FOAM_MPI=openmpi-macport-$WM_MACPORT_MPI_VERSION
|
||||||
|
|
||||||
# Currently not correctly working on MacPorts
|
# Currently not correctly working on MacPorts
|
||||||
# libDir=`mpicc-openmpi-$WM_MACPORT_MPI_VERSION --showme:libdirs`
|
# libDir=`mpicc-openmpi-$WM_MACPORT_MPI_VERSION --showme:libdirs`
|
||||||
libDir=/opt/local/lib/openmpi-$WM_MACPORT_MPI_VERSION
|
libDir=/opt/local/lib/openmpi-$WM_MACPORT_MPI_VERSION
|
||||||
|
|
||||||
export FOAM_MPI_LIBBIN=$FOAM_LIBBIN/$FOAM_MPI
|
export FOAM_MPI_LIBBIN=$FOAM_LIBBIN/$FOAM_MPI
|
||||||
_foamAddLib $libDir
|
_foamAddLib $libDir
|
||||||
unset libDir
|
unset libDir
|
||||||
|
|
||||||
which mpirun >/dev/null
|
which mpirun >/dev/null
|
||||||
if [ $? -ne 0 ]
|
if [ $? -ne 0 ]
|
||||||
then
|
then
|
||||||
export WM_MPIRUN_PROG=mpirun-openmpi-$WM_MACPORT_MPI_VERSION
|
export WM_MPIRUN_PROG=mpirun-openmpi-$WM_MACPORT_MPI_VERSION
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
MACPORTMPICH)
|
MACPORTMPICH)
|
||||||
export FOAM_MPI=mpich-macports-$WM_MACPORT_MPI_VERSION
|
export FOAM_MPI=mpich-macports-$WM_MACPORT_MPI_VERSION
|
||||||
|
@ -277,7 +277,7 @@ MACPORTMPICH)
|
||||||
which mpirun >/dev/null
|
which mpirun >/dev/null
|
||||||
if [ $? -ne 0 ]
|
if [ $? -ne 0 ]
|
||||||
then
|
then
|
||||||
export WM_MPIRUN_PROG=mpirun-mpich-$WM_MACPORT_MPI_VERSION
|
export WM_MPIRUN_PROG=mpirun-mpich-$WM_MACPORT_MPI_VERSION
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
|
@ -49,10 +49,10 @@ else
|
||||||
# regular sourcing
|
# regular sourcing
|
||||||
set sourced=($_)
|
set sourced=($_)
|
||||||
if ( $#sourced == 0 ) then
|
if ( $#sourced == 0 ) then
|
||||||
echo "Seems you sourced this script (etc/tcshrc from your foam-extend-installation) from .tcshrc."
|
echo "Seems you sourced this script (etc/tcshrc from your foam-extend-installation) from .tcshrc."
|
||||||
echo "In that case tcsh has no way of telling where this script is located and is not able to set up the environment correctly"
|
echo "In that case tcsh has no way of telling where this script is located and is not able to set up the environment correctly"
|
||||||
echo "So before sourcing it set the location with 'setenv FOAM_SOURCED_FROM_ALIAS <path to the script>'"
|
echo "So before sourcing it set the location with 'setenv FOAM_SOURCED_FROM_ALIAS <path to the script>'"
|
||||||
echo "Or consider using a different shell"
|
echo "Or consider using a different shell"
|
||||||
endif
|
endif
|
||||||
set thisScript=($sourced[2])
|
set thisScript=($sourced[2])
|
||||||
|
|
||||||
|
|
|
@ -13,11 +13,11 @@ setDestination()
|
||||||
{
|
{
|
||||||
pkg=$1
|
pkg=$1
|
||||||
if [ ! -z "$EXTEND_BAZAAR_TO_SITE" ]; then
|
if [ ! -z "$EXTEND_BAZAAR_TO_SITE" ]; then
|
||||||
dst="SITE"
|
dst="SITE"
|
||||||
wrong="USER"
|
wrong="USER"
|
||||||
else
|
else
|
||||||
dst="USER"
|
dst="USER"
|
||||||
wrong="SITE"
|
wrong="SITE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# remove installation to general binaries
|
# remove installation to general binaries
|
||||||
|
|
|
@ -136,7 +136,7 @@ coupledSolverPerformance coupledFvMatrix<scalar>::solve
|
||||||
//HR 17.2.2013: Clear references to internal field without deleting the objects
|
//HR 17.2.2013: Clear references to internal field without deleting the objects
|
||||||
forAll (matrices, rowI)
|
forAll (matrices, rowI)
|
||||||
{
|
{
|
||||||
psi.set(rowI, NULL).ptr();
|
psi.set(rowI, NULL).ptr();
|
||||||
}
|
}
|
||||||
|
|
||||||
return solverPerf;
|
return solverPerf;
|
||||||
|
|
|
@ -147,7 +147,7 @@ extern "C" void bicgAinv
|
||||||
|
|
||||||
while
|
while
|
||||||
(
|
(
|
||||||
normR > (solverPerf->tol)
|
normR > (solverPerf->tol)
|
||||||
&& count < (solverPerf->maxIter)
|
&& count < (solverPerf->maxIter)
|
||||||
&& normR/normR0 >= (solverPerf->relTol)
|
&& normR/normR0 >= (solverPerf->relTol)
|
||||||
|| count < solverPerf->minIter
|
|| count < solverPerf->minIter
|
||||||
|
|
|
@ -136,7 +136,7 @@ extern "C" void bicgDiag
|
||||||
|
|
||||||
while
|
while
|
||||||
(
|
(
|
||||||
normR > (solverPerf->tol)
|
normR > (solverPerf->tol)
|
||||||
&& count < (solverPerf->maxIter)
|
&& count < (solverPerf->maxIter)
|
||||||
&& normR/normR0 >= (solverPerf->relTol)
|
&& normR/normR0 >= (solverPerf->relTol)
|
||||||
|| count < solverPerf->minIter
|
|| count < solverPerf->minIter
|
||||||
|
|
|
@ -147,7 +147,7 @@ Foam::lduSolverPerformance Foam::cudaBiCGStab::solve
|
||||||
}
|
}
|
||||||
|
|
||||||
// copy the x vector back to Openfoam
|
// copy the x vector back to Openfoam
|
||||||
thrust::copy(ces.X.begin(), ces.X.end(), x.begin());
|
thrust::copy(ces.X.begin(), ces.X.end(), x.begin());
|
||||||
|
|
||||||
// Return solver output
|
// Return solver output
|
||||||
return lduSolverPerformance
|
return lduSolverPerformance
|
||||||
|
|
|
@ -48,7 +48,7 @@ namespace Foam
|
||||||
{
|
{
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
/*---------------------------------------------------------------------------*\
|
||||||
Class cudaBiCGStab Declaration
|
Class cudaBiCGStab Declaration
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
class cudaBiCGStab
|
class cudaBiCGStab
|
||||||
|
@ -57,11 +57,11 @@ class cudaBiCGStab
|
||||||
{
|
{
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
//- Disallow default bitwise copy construct
|
//- Disallow default bitwise copy construct
|
||||||
cudaBiCGStab(const cudaBiCGStab&);
|
cudaBiCGStab(const cudaBiCGStab&);
|
||||||
|
|
||||||
//- Disallow default bitwise assignment
|
//- Disallow default bitwise assignment
|
||||||
void operator=(const cudaBiCGStab&);
|
void operator=(const cudaBiCGStab&);
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -72,33 +72,33 @@ public:
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from matrix components and solver data stream
|
//- Construct from matrix components and solver data stream
|
||||||
cudaBiCGStab
|
cudaBiCGStab
|
||||||
(
|
(
|
||||||
const word& fieldName,
|
const word& fieldName,
|
||||||
const lduMatrix& matrix,
|
const lduMatrix& matrix,
|
||||||
const FieldField<Field, scalar>& coupleBouCoeffs,
|
const FieldField<Field, scalar>& coupleBouCoeffs,
|
||||||
const FieldField<Field, scalar>& coupleIntCoeffs,
|
const FieldField<Field, scalar>& coupleIntCoeffs,
|
||||||
const lduInterfaceFieldPtrsList& interfaces,
|
const lduInterfaceFieldPtrsList& interfaces,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
|
|
||||||
virtual ~cudaBiCGStab()
|
virtual ~cudaBiCGStab()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
||||||
|
|
||||||
//- Solve the matrix with this solver
|
//- Solve the matrix with this solver
|
||||||
virtual lduSolverPerformance solve
|
virtual lduSolverPerformance solve
|
||||||
(
|
(
|
||||||
scalarField& x,
|
scalarField& x,
|
||||||
const scalarField& b,
|
const scalarField& b,
|
||||||
const direction cmpt = 0
|
const direction cmpt = 0
|
||||||
) const;
|
) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ namespace Foam
|
||||||
{
|
{
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
/*---------------------------------------------------------------------------*\
|
||||||
Class cudaCG Declaration
|
Class cudaCG Declaration
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
class cudaCG
|
class cudaCG
|
||||||
|
@ -57,11 +57,11 @@ class cudaCG
|
||||||
{
|
{
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
//- Disallow default bitwise copy construct
|
//- Disallow default bitwise copy construct
|
||||||
cudaCG(const cudaCG&);
|
cudaCG(const cudaCG&);
|
||||||
|
|
||||||
//- Disallow default bitwise assignment
|
//- Disallow default bitwise assignment
|
||||||
void operator=(const cudaCG&);
|
void operator=(const cudaCG&);
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -72,33 +72,33 @@ public:
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from matrix components and solver data stream
|
//- Construct from matrix components and solver data stream
|
||||||
cudaCG
|
cudaCG
|
||||||
(
|
(
|
||||||
const word& fieldName,
|
const word& fieldName,
|
||||||
const lduMatrix& matrix,
|
const lduMatrix& matrix,
|
||||||
const FieldField<Field, scalar>& coupleBouCoeffs,
|
const FieldField<Field, scalar>& coupleBouCoeffs,
|
||||||
const FieldField<Field, scalar>& coupleIntCoeffs,
|
const FieldField<Field, scalar>& coupleIntCoeffs,
|
||||||
const lduInterfaceFieldPtrsList& interfaces,
|
const lduInterfaceFieldPtrsList& interfaces,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
|
|
||||||
virtual ~cudaCG()
|
virtual ~cudaCG()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
||||||
|
|
||||||
//- Solve the matrix with this solver
|
//- Solve the matrix with this solver
|
||||||
virtual lduSolverPerformance solve
|
virtual lduSolverPerformance solve
|
||||||
(
|
(
|
||||||
scalarField& x,
|
scalarField& x,
|
||||||
const scalarField& b,
|
const scalarField& b,
|
||||||
const direction cmpt = 0
|
const direction cmpt = 0
|
||||||
) const;
|
) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -64,8 +64,8 @@ thrust::sequence
|
||||||
thrust::copy
|
thrust::copy
|
||||||
(
|
(
|
||||||
A.values.begin() + ces->nCells,
|
A.values.begin() + ces->nCells,
|
||||||
A.values.begin() + ces->nCells + ces->nFaces,
|
A.values.begin() + ces->nCells + ces->nFaces,
|
||||||
A.values.begin() + ces->nCells + ces->nFaces
|
A.values.begin() + ces->nCells + ces->nFaces
|
||||||
);
|
);
|
||||||
|
|
||||||
// Copy row indices of lower to columns of upper into A COO matrix
|
// Copy row indices of lower to columns of upper into A COO matrix
|
||||||
|
|
|
@ -638,7 +638,7 @@ void Foam::slidingInterface::coupleInterface(polyTopoChange& ref) const
|
||||||
if
|
if
|
||||||
(
|
(
|
||||||
cutOnMaster > edgeEndCutoffTol_()
|
cutOnMaster > edgeEndCutoffTol_()
|
||||||
&& cutOnMaster < 1.0 - edgeEndCutoffTol_()
|
&& cutOnMaster < 1.0 - edgeEndCutoffTol_()
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// Master is cut, check the slave
|
// Master is cut, check the slave
|
||||||
|
@ -678,7 +678,7 @@ void Foam::slidingInterface::coupleInterface(polyTopoChange& ref) const
|
||||||
if
|
if
|
||||||
(
|
(
|
||||||
cutOnSlave > edgeEndCutoffTol_()
|
cutOnSlave > edgeEndCutoffTol_()
|
||||||
&& cutOnSlave < 1.0 - edgeEndCutoffTol_()
|
&& cutOnSlave < 1.0 - edgeEndCutoffTol_()
|
||||||
&& slaveCut.distance() < mergeTol
|
&& slaveCut.distance() < mergeTol
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
|
|
@ -632,7 +632,7 @@ void Foam::slidingInterface::modifyMotionPoints(pointField& motionPoints) const
|
||||||
if
|
if
|
||||||
(
|
(
|
||||||
cutOnMaster > edgeEndCutoffTol_()
|
cutOnMaster > edgeEndCutoffTol_()
|
||||||
&& cutOnMaster < 1.0 - edgeEndCutoffTol_()
|
&& cutOnMaster < 1.0 - edgeEndCutoffTol_()
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// Master is cut, check the slave
|
// Master is cut, check the slave
|
||||||
|
@ -663,7 +663,7 @@ void Foam::slidingInterface::modifyMotionPoints(pointField& motionPoints) const
|
||||||
if
|
if
|
||||||
(
|
(
|
||||||
cutOnSlave > edgeEndCutoffTol_()
|
cutOnSlave > edgeEndCutoffTol_()
|
||||||
&& cutOnSlave < 1.0 - edgeEndCutoffTol_()
|
&& cutOnSlave < 1.0 - edgeEndCutoffTol_()
|
||||||
&& slaveCut.distance() < mergeTol
|
&& slaveCut.distance() < mergeTol
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
|
|
@ -116,11 +116,11 @@ bool Foam::slidingInterface::projectPoints() const
|
||||||
<< name() << " : "
|
<< name() << " : "
|
||||||
<< "Projecting slave points onto master surface using ";
|
<< "Projecting slave points onto master surface using ";
|
||||||
|
|
||||||
const Foam::debug::optimisationSwitch nSquaredProjection
|
const Foam::debug::optimisationSwitch nSquaredProjection
|
||||||
(
|
(
|
||||||
"nSquaredProjection",
|
"nSquaredProjection",
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
|
|
||||||
if (nSquaredProjection() > 0)
|
if (nSquaredProjection() > 0)
|
||||||
{
|
{
|
||||||
|
@ -1165,8 +1165,8 @@ bool Foam::slidingInterface::projectPoints() const
|
||||||
if
|
if
|
||||||
(
|
(
|
||||||
cutOnSlave > edgeEndCutoffTol_()
|
cutOnSlave > edgeEndCutoffTol_()
|
||||||
&& cutOnSlave < 1.0 - edgeEndCutoffTol_() // check edge cut
|
&& cutOnSlave < 1.0 - edgeEndCutoffTol_() // check edge cut
|
||||||
&& distInEdgePlane < edgeMergeTol_()*edgeMag // merge plane
|
&& distInEdgePlane < edgeMergeTol_()*edgeMag // merge plane
|
||||||
&& edgeLineHit.distance()
|
&& edgeLineHit.distance()
|
||||||
< min
|
< min
|
||||||
(
|
(
|
||||||
|
|
|
@ -140,16 +140,22 @@ void engineTimeVaryingUniformFixedValueFvPatchField<symmTensor>::updateCoeffs()
|
||||||
template<>
|
template<>
|
||||||
void engineTimeVaryingUniformFixedValueFvPatchField<symmTensor4thOrder>::updateCoeffs()
|
void engineTimeVaryingUniformFixedValueFvPatchField<symmTensor4thOrder>::updateCoeffs()
|
||||||
{
|
{
|
||||||
notImplemented("engineTimeVaryingUniformFixedValueFvPatchField"
|
notImplemented
|
||||||
"<symmTensor4thOrder>::updateCoeffs()");
|
(
|
||||||
|
"engineTimeVaryingUniformFixedValueFvPatchField"
|
||||||
|
"<symmTensor4thOrder>::updateCoeffs()"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
void engineTimeVaryingUniformFixedValueFvPatchField<diagTensor>::updateCoeffs()
|
void engineTimeVaryingUniformFixedValueFvPatchField<diagTensor>::updateCoeffs()
|
||||||
{
|
{
|
||||||
notImplemented("engineTimeVaryingUniformFixedValueFvPatchField"
|
notImplemented
|
||||||
"<diagTensor>::updateCoeffs()");
|
(
|
||||||
|
"engineTimeVaryingUniformFixedValueFvPatchField"
|
||||||
|
"<diagTensor>::updateCoeffs()"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -84,11 +84,7 @@ void Foam::cyclicFaPatch::calcTransforms()
|
||||||
half0Normals[edgei] = point(1, 0, 0);
|
half0Normals[edgei] = point(1, 0, 0);
|
||||||
half1Normals[edgei] = half0Normals[edgei];
|
half1Normals[edgei] = half0Normals[edgei];
|
||||||
}
|
}
|
||||||
else if
|
else if(mag(magLe - nbrMagLe)/avLe > matchTol_())
|
||||||
(
|
|
||||||
mag(magLe - nbrMagLe)/avLe
|
|
||||||
> matchTol_()
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
// Error in area matching. Find largest error
|
// Error in area matching. Find largest error
|
||||||
maxMatchError =
|
maxMatchError =
|
||||||
|
@ -176,7 +172,7 @@ void cyclicFaPatch::makeWeights(scalarField& w) const
|
||||||
if
|
if
|
||||||
(
|
(
|
||||||
mag(magL[edgei] - magL[edgei + sizeby2])/avL
|
mag(magL[edgei] - magL[edgei + sizeby2])/avL
|
||||||
> matchTol_()
|
> matchTol_()
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// Found error. Look for largest matching error
|
// Found error. Look for largest matching error
|
||||||
|
|
|
@ -40,7 +40,7 @@ Foam::debug::debugSwitch \
|
||||||
faPatchTypeField::disallowDefaultFaPatchField \
|
faPatchTypeField::disallowDefaultFaPatchField \
|
||||||
( \
|
( \
|
||||||
"disallowDefaultFaPatchField", \
|
"disallowDefaultFaPatchField", \
|
||||||
0 \
|
0 \
|
||||||
); \
|
); \
|
||||||
defineTemplateRunTimeSelectionTable(faPatchTypeField, patch); \
|
defineTemplateRunTimeSelectionTable(faPatchTypeField, patch); \
|
||||||
defineTemplateRunTimeSelectionTable(faPatchTypeField, patchMapper); \
|
defineTemplateRunTimeSelectionTable(faPatchTypeField, patchMapper); \
|
||||||
|
|
|
@ -40,10 +40,10 @@ namespace Foam
|
||||||
defineNamedTemplateTypeNameAndDebug(faePatchTypeField, 0); \
|
defineNamedTemplateTypeNameAndDebug(faePatchTypeField, 0); \
|
||||||
template<> \
|
template<> \
|
||||||
Foam::debug::debugSwitch \
|
Foam::debug::debugSwitch \
|
||||||
faePatchTypeField::disallowDefaultFaePatchField \
|
faePatchTypeField::disallowDefaultFaePatchField \
|
||||||
( \
|
( \
|
||||||
"disallowDefaultFaePatchField", \
|
"disallowDefaultFaePatchField", \
|
||||||
0 \
|
0 \
|
||||||
); \
|
); \
|
||||||
defineTemplateRunTimeSelectionTable(faePatchTypeField, patch); \
|
defineTemplateRunTimeSelectionTable(faePatchTypeField, patch); \
|
||||||
defineTemplateRunTimeSelectionTable(faePatchTypeField, patchMapper); \
|
defineTemplateRunTimeSelectionTable(faePatchTypeField, patchMapper); \
|
||||||
|
|
|
@ -513,34 +513,34 @@ Foam::genericFvPatchField<Type>::genericFvPatchField
|
||||||
}
|
}
|
||||||
|
|
||||||
for
|
for
|
||||||
(
|
(
|
||||||
HashPtrTable<symmTensor4thOrderField>::const_iterator iter =
|
HashPtrTable<symmTensor4thOrderField>::const_iterator iter =
|
||||||
ptf.symmTensor4thOrderFields_.begin();
|
ptf.symmTensor4thOrderFields_.begin();
|
||||||
iter != ptf.symmTensor4thOrderFields_.end();
|
iter != ptf.symmTensor4thOrderFields_.end();
|
||||||
++iter
|
++iter
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
symmTensor4thOrderFields_.insert
|
symmTensor4thOrderFields_.insert
|
||||||
(
|
(
|
||||||
iter.key(),
|
iter.key(),
|
||||||
new symmTensor4thOrderField(*iter(), mapper)
|
new symmTensor4thOrderField(*iter(), mapper)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
for
|
for
|
||||||
(
|
(
|
||||||
HashPtrTable<diagTensorField>::const_iterator iter =
|
HashPtrTable<diagTensorField>::const_iterator iter =
|
||||||
ptf.diagTensorFields_.begin();
|
ptf.diagTensorFields_.begin();
|
||||||
iter != ptf.diagTensorFields_.end();
|
iter != ptf.diagTensorFields_.end();
|
||||||
++iter
|
++iter
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
diagTensorFields_.insert
|
diagTensorFields_.insert
|
||||||
(
|
(
|
||||||
iter.key(),
|
iter.key(),
|
||||||
new diagTensorField(*iter(), mapper)
|
new diagTensorField(*iter(), mapper)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
for
|
for
|
||||||
(
|
(
|
||||||
|
|
|
@ -40,7 +40,7 @@ Foam::debug::debugSwitch \
|
||||||
fvPatchTypeField::disallowGenericFvPatchField \
|
fvPatchTypeField::disallowGenericFvPatchField \
|
||||||
( \
|
( \
|
||||||
"disallowGenericFvPatchField", \
|
"disallowGenericFvPatchField", \
|
||||||
0 \
|
0 \
|
||||||
); \
|
); \
|
||||||
defineTemplateRunTimeSelectionTable(fvPatchTypeField, patch); \
|
defineTemplateRunTimeSelectionTable(fvPatchTypeField, patch); \
|
||||||
defineTemplateRunTimeSelectionTable(fvPatchTypeField, patchMapper); \
|
defineTemplateRunTimeSelectionTable(fvPatchTypeField, patchMapper); \
|
||||||
|
|
|
@ -40,7 +40,7 @@ debug::debugSwitch \
|
||||||
fvPatchTypeField::disallowGenericFvPatchField \
|
fvPatchTypeField::disallowGenericFvPatchField \
|
||||||
( \
|
( \
|
||||||
"disallowGenericFvPatchField", \
|
"disallowGenericFvPatchField", \
|
||||||
0 \
|
0 \
|
||||||
); \
|
); \
|
||||||
defineTemplateRunTimeSelectionTable(fvPatchTypeField, patch); \
|
defineTemplateRunTimeSelectionTable(fvPatchTypeField, patch); \
|
||||||
defineTemplateRunTimeSelectionTable(fvPatchTypeField, patchMapper); \
|
defineTemplateRunTimeSelectionTable(fvPatchTypeField, patchMapper); \
|
||||||
|
|
|
@ -40,7 +40,7 @@ Foam::debug::debugSwitch \
|
||||||
fvsPatchTypeField::disallowDefaultFvsPatchField \
|
fvsPatchTypeField::disallowDefaultFvsPatchField \
|
||||||
( \
|
( \
|
||||||
"disallowDefaultFvsPatchField", \
|
"disallowDefaultFvsPatchField", \
|
||||||
0 \
|
0 \
|
||||||
); \
|
); \
|
||||||
defineTemplateRunTimeSelectionTable(fvsPatchTypeField, patch); \
|
defineTemplateRunTimeSelectionTable(fvsPatchTypeField, patch); \
|
||||||
defineTemplateRunTimeSelectionTable(fvsPatchTypeField, patchMapper); \
|
defineTemplateRunTimeSelectionTable(fvsPatchTypeField, patchMapper); \
|
||||||
|
|
|
@ -40,7 +40,7 @@ Foam::debug::debugSwitch \
|
||||||
fvsPatchTypeField::disallowDefaultFvsPatchField \
|
fvsPatchTypeField::disallowDefaultFvsPatchField \
|
||||||
( \
|
( \
|
||||||
"disallowDefaultFvsPatchField", \
|
"disallowDefaultFvsPatchField", \
|
||||||
0 \
|
0 \
|
||||||
); \
|
); \
|
||||||
defineTemplateRunTimeSelectionTable(fvsPatchTypeField, patch); \
|
defineTemplateRunTimeSelectionTable(fvsPatchTypeField, patch); \
|
||||||
defineTemplateRunTimeSelectionTable(fvsPatchTypeField, patchMapper); \
|
defineTemplateRunTimeSelectionTable(fvsPatchTypeField, patchMapper); \
|
||||||
|
|
|
@ -268,10 +268,10 @@ backwardD2dt2Scheme<Type>::fvmD2dt2
|
||||||
(
|
(
|
||||||
coefft0
|
coefft0
|
||||||
*backwardDdtScheme<Type>(mesh()).fvcDdt(vf.oldTime())
|
*backwardDdtScheme<Type>(mesh()).fvcDdt(vf.oldTime())
|
||||||
().internalField()
|
().internalField()
|
||||||
- coefft00
|
- coefft00
|
||||||
*backwardDdtScheme<Type>(mesh()).fvcDdt(vf.oldTime().oldTime())
|
*backwardDdtScheme<Type>(mesh()).fvcDdt(vf.oldTime().oldTime())
|
||||||
().internalField()
|
().internalField()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -257,7 +257,7 @@ makeFvDdtTypeScheme(SS, sphericalTensor) \
|
||||||
makeFvDdtTypeScheme(SS, symmTensor) \
|
makeFvDdtTypeScheme(SS, symmTensor) \
|
||||||
makeFvDdtTypeScheme(SS, symmTensor4thOrder) \
|
makeFvDdtTypeScheme(SS, symmTensor4thOrder) \
|
||||||
makeFvDdtTypeScheme(SS, diagTensor) \
|
makeFvDdtTypeScheme(SS, diagTensor) \
|
||||||
makeFvDdtTypeScheme(SS, tensor) \
|
makeFvDdtTypeScheme(SS, tensor) \
|
||||||
\
|
\
|
||||||
template<> \
|
template<> \
|
||||||
tmp<surfaceScalarField> SS<scalar>::fvcDdtPhiCorr \
|
tmp<surfaceScalarField> SS<scalar>::fvcDdtPhiCorr \
|
||||||
|
|
|
@ -234,17 +234,17 @@ skewCorrectedSnGrad<Type>::correction
|
||||||
(
|
(
|
||||||
min
|
min
|
||||||
(
|
(
|
||||||
limitCoeff_
|
limitCoeff_*
|
||||||
*mag
|
mag
|
||||||
(
|
(
|
||||||
uncorrectedSnGrad<Type>::snGrad
|
uncorrectedSnGrad<Type>::snGrad
|
||||||
(
|
(
|
||||||
vf,
|
vf,
|
||||||
this->deltaCoeffs(vf),
|
this->deltaCoeffs(vf),
|
||||||
"orthSnGrad"
|
"orthSnGrad"
|
||||||
)
|
)
|
||||||
+ ssf
|
+ ssf
|
||||||
)
|
)
|
||||||
/(
|
/(
|
||||||
(1 - limitCoeff_)*mag(ssf)
|
(1 - limitCoeff_)*mag(ssf)
|
||||||
+ dimensionedScalar("small", ssf.dimensions(), SMALL)
|
+ dimensionedScalar("small", ssf.dimensions(), SMALL)
|
||||||
|
|
|
@ -37,8 +37,11 @@ defineTypeNameAndDebug(leastSquaresVolPointInterpolation, 0);
|
||||||
|
|
||||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
void leastSquaresVolPointInterpolation::calcA(List<scalarSquareMatrix>& A) const
|
void leastSquaresVolPointInterpolation::calcA
|
||||||
{
|
(
|
||||||
|
List<scalarSquareMatrix>& A
|
||||||
|
) const
|
||||||
|
{
|
||||||
//Info << "leastSquaresVolPointInterpolation calcA" << endl;
|
//Info << "leastSquaresVolPointInterpolation calcA" << endl;
|
||||||
|
|
||||||
const fvMesh& mesh = mesh_;
|
const fvMesh& mesh = mesh_;
|
||||||
|
@ -49,262 +52,293 @@ defineTypeNameAndDebug(leastSquaresVolPointInterpolation, 0);
|
||||||
|
|
||||||
//- populate A matrix
|
//- populate A matrix
|
||||||
forAll(points, pointi)
|
forAll(points, pointi)
|
||||||
{
|
{
|
||||||
const labelList& pointCells = mesh.pointCells()[pointi];
|
const labelList& pointCells = mesh.pointCells()[pointi];
|
||||||
|
|
||||||
//- this component of matrix does not depend on coordinates
|
//- this component of matrix does not depend on coordinates
|
||||||
A[pointi][3][3] = pointCells.size();
|
A[pointi][3][3] = pointCells.size();
|
||||||
|
|
||||||
//- fill the A matrices
|
//- fill the A matrices
|
||||||
forAll(pointCells, pointCelli)
|
forAll(pointCells, pointCelli)
|
||||||
{
|
{
|
||||||
const label& celli = pointCells[pointCelli];
|
const label& celli = pointCells[pointCelli];
|
||||||
|
|
||||||
const scalar& x = mesh.C()[celli].component(vector::X);
|
const scalar& x = mesh.C()[celli].component(vector::X);
|
||||||
const scalar& y = mesh.C()[celli].component(vector::Y);
|
const scalar& y = mesh.C()[celli].component(vector::Y);
|
||||||
const scalar& z = mesh.C()[celli].component(vector::Z);
|
const scalar& z = mesh.C()[celli].component(vector::Z);
|
||||||
|
|
||||||
A[pointi][0][0] += x*x;
|
A[pointi][0][0] += x*x;
|
||||||
A[pointi][0][1] += x*y;
|
A[pointi][0][1] += x*y;
|
||||||
A[pointi][0][2] += x*z;
|
A[pointi][0][2] += x*z;
|
||||||
A[pointi][0][3] += x;
|
A[pointi][0][3] += x;
|
||||||
|
|
||||||
A[pointi][1][0] += x*y;
|
A[pointi][1][0] += x*y;
|
||||||
A[pointi][1][1] += y*y;
|
A[pointi][1][1] += y*y;
|
||||||
A[pointi][1][2] += y*z;
|
A[pointi][1][2] += y*z;
|
||||||
A[pointi][1][3] += y;
|
A[pointi][1][3] += y;
|
||||||
|
|
||||||
A[pointi][2][0] += x*z;
|
A[pointi][2][0] += x*z;
|
||||||
A[pointi][2][1] += y*z;
|
A[pointi][2][1] += y*z;
|
||||||
A[pointi][2][2] += z*z;
|
A[pointi][2][2] += z*z;
|
||||||
A[pointi][2][3] += z;
|
A[pointi][2][3] += z;
|
||||||
|
|
||||||
A[pointi][3][0] += x;
|
A[pointi][3][0] += x;
|
||||||
A[pointi][3][1] += y;
|
A[pointi][3][1] += y;
|
||||||
A[pointi][3][2] += z;
|
A[pointi][3][2] += z;
|
||||||
//A[pointi][3][3] = pointCells.size(); // set above
|
//A[pointi][3][3] = pointCells.size(); // set above
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//- for boundary points we will include the surrounding face centres
|
//- for boundary points we will include the surrounding face centres
|
||||||
forAll(mesh.boundary(), patchi)
|
forAll(mesh.boundary(), patchi)
|
||||||
{
|
{
|
||||||
const vectorField& faceCentres = mesh.boundaryMesh()[patchi].faceCentres();
|
const vectorField& faceCentres =
|
||||||
const labelListList& pointFaces = mesh.boundaryMesh()[patchi].pointFaces();
|
mesh.boundaryMesh()[patchi].faceCentres();
|
||||||
|
const labelListList& pointFaces =
|
||||||
|
mesh.boundaryMesh()[patchi].pointFaces();
|
||||||
|
|
||||||
if(mesh.boundary()[patchi].coupled()) //- for proc boundaries
|
if(mesh.boundary()[patchi].coupled()) //- for proc boundaries
|
||||||
{
|
{
|
||||||
//- for coupled patches we will use the values at the neighbourField cell centres and we will
|
//- for coupled patches we will use the values at the
|
||||||
//- not use the boundary face values
|
//- neighbourField cell centres and we will not use the boundary
|
||||||
//- neighbour cell centre are equal to the faceCell centres plus the delta vector
|
//- face values neighbour cell centre are equal to the faceCell
|
||||||
vectorField pDelta = mesh.boundary()[patchi].delta();
|
//- centres plus the delta vector
|
||||||
vectorField faceCellC(faceCentres.size(), vector::zero);
|
vectorField pDelta = mesh.boundary()[patchi].delta();
|
||||||
forAll(faceCentres, facei)
|
vectorField faceCellC(faceCentres.size(), vector::zero);
|
||||||
{
|
forAll(faceCentres, facei)
|
||||||
label celli = mesh.boundaryMesh()[patchi].faceCells()[facei];
|
{
|
||||||
faceCellC[facei] = mesh.C()[celli];
|
label celli = mesh.boundaryMesh()[patchi].faceCells()[facei];
|
||||||
}
|
faceCellC[facei] = mesh.C()[celli];
|
||||||
vectorField neiCellC = faceCellC + pDelta;
|
}
|
||||||
|
vectorField neiCellC = faceCellC + pDelta;
|
||||||
|
|
||||||
forAll(pointFaces, pointi)
|
forAll(pointFaces, pointi)
|
||||||
{
|
{
|
||||||
forAll(pointFaces[pointi], pointFacei)
|
forAll(pointFaces[pointi], pointFacei)
|
||||||
{
|
{
|
||||||
label neiCelli = pointFaces[pointi][pointFacei];
|
label neiCelli = pointFaces[pointi][pointFacei];
|
||||||
const scalar& x = neiCellC[neiCelli].component(vector::X);
|
const scalar& x = neiCellC[neiCelli].component(vector::X);
|
||||||
const scalar& y = neiCellC[neiCelli].component(vector::Y);
|
const scalar& y = neiCellC[neiCelli].component(vector::Y);
|
||||||
const scalar& z = neiCellC[neiCelli].component(vector::Z);
|
const scalar& z = neiCellC[neiCelli].component(vector::Z);
|
||||||
|
|
||||||
label globalPointi = mesh.boundaryMesh()[patchi].meshPoints()[pointi];
|
label globalPointi =
|
||||||
|
mesh.boundaryMesh()[patchi].meshPoints()[pointi];
|
||||||
|
|
||||||
A[globalPointi][0][0] += x*x;
|
A[globalPointi][0][0] += x*x;
|
||||||
A[globalPointi][0][1] += x*y;
|
A[globalPointi][0][1] += x*y;
|
||||||
A[globalPointi][0][2] += x*z;
|
A[globalPointi][0][2] += x*z;
|
||||||
A[globalPointi][0][3] += x;
|
A[globalPointi][0][3] += x;
|
||||||
|
|
||||||
A[globalPointi][1][0] += x*y;
|
A[globalPointi][1][0] += x*y;
|
||||||
A[globalPointi][1][1] += y*y;
|
A[globalPointi][1][1] += y*y;
|
||||||
A[globalPointi][1][2] += y*z;
|
A[globalPointi][1][2] += y*z;
|
||||||
A[globalPointi][1][3] += y;
|
A[globalPointi][1][3] += y;
|
||||||
|
|
||||||
A[globalPointi][2][0] += x*z;
|
A[globalPointi][2][0] += x*z;
|
||||||
A[globalPointi][2][1] += y*z;
|
A[globalPointi][2][1] += y*z;
|
||||||
A[globalPointi][2][2] += z*z;
|
A[globalPointi][2][2] += z*z;
|
||||||
A[globalPointi][2][3] += z;
|
A[globalPointi][2][3] += z;
|
||||||
|
|
||||||
A[globalPointi][3][0] += x;
|
A[globalPointi][3][0] += x;
|
||||||
A[globalPointi][3][1] += y;
|
A[globalPointi][3][1] += y;
|
||||||
A[globalPointi][3][2] += z;
|
A[globalPointi][3][2] += z;
|
||||||
A[globalPointi][3][3] += 1; // = pointCells.size();
|
A[globalPointi][3][3] += 1; // = pointCells.size();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//- each point must use at least 4 neighbouring locations otherwise A is singular
|
//- each point must use at least 4 neighbouring locations otherwise
|
||||||
//- and simpleMatrix will cannot invert it
|
//- A is singular and simpleMatrix will cannot invert it therefore
|
||||||
//- therefore empty patches values are included to make sure A is not singular
|
//- empty patches values are included to make sure A is not
|
||||||
forAll(pointFaces, pointi)
|
//- singular
|
||||||
{
|
forAll(pointFaces, pointi)
|
||||||
label globalPointi = mesh.boundaryMesh()[patchi].meshPoints()[pointi];
|
{
|
||||||
|
label globalPointi =
|
||||||
|
mesh.boundaryMesh()[patchi].meshPoints()[pointi];
|
||||||
|
|
||||||
forAll(pointFaces[pointi], pointFacei)
|
forAll(pointFaces[pointi], pointFacei)
|
||||||
{
|
{
|
||||||
//- fix: use pointFace not face philipc
|
//- fix: use pointFace not face philipc
|
||||||
label facei = pointFaces[pointi][pointFacei];
|
label facei = pointFaces[pointi][pointFacei];
|
||||||
const scalar& x = faceCentres[facei].component(vector::X);
|
const scalar& x = faceCentres[facei].component(vector::X);
|
||||||
const scalar& y = faceCentres[facei].component(vector::Y);
|
const scalar& y = faceCentres[facei].component(vector::Y);
|
||||||
const scalar& z = faceCentres[facei].component(vector::Z);
|
const scalar& z = faceCentres[facei].component(vector::Z);
|
||||||
|
|
||||||
A[globalPointi][0][0] += x*x;
|
A[globalPointi][0][0] += x*x;
|
||||||
A[globalPointi][0][1] += x*y;
|
A[globalPointi][0][1] += x*y;
|
||||||
A[globalPointi][0][2] += x*z;
|
A[globalPointi][0][2] += x*z;
|
||||||
A[globalPointi][0][3] += x;
|
A[globalPointi][0][3] += x;
|
||||||
|
|
||||||
A[globalPointi][1][0] += x*y;
|
A[globalPointi][1][0] += x*y;
|
||||||
A[globalPointi][1][1] += y*y;
|
A[globalPointi][1][1] += y*y;
|
||||||
A[globalPointi][1][2] += y*z;
|
A[globalPointi][1][2] += y*z;
|
||||||
A[globalPointi][1][3] += y;
|
A[globalPointi][1][3] += y;
|
||||||
|
|
||||||
A[globalPointi][2][0] += x*z;
|
A[globalPointi][2][0] += x*z;
|
||||||
A[globalPointi][2][1] += y*z;
|
A[globalPointi][2][1] += y*z;
|
||||||
A[globalPointi][2][2] += z*z;
|
A[globalPointi][2][2] += z*z;
|
||||||
A[globalPointi][2][3] += z;
|
A[globalPointi][2][3] += z;
|
||||||
|
|
||||||
A[globalPointi][3][0] += x;
|
A[globalPointi][3][0] += x;
|
||||||
A[globalPointi][3][1] += y;
|
A[globalPointi][3][1] += y;
|
||||||
A[globalPointi][3][2] += z;
|
A[globalPointi][3][2] += z;
|
||||||
A[globalPointi][3][3] += 1; // = pointCells.size();
|
A[globalPointi][3][3] += 1; // = pointCells.size();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} //- end of else
|
} //- end of else
|
||||||
} //- end of forAll boundary
|
} //- end of forAll boundary
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void leastSquaresVolPointInterpolation::calcB(List<Field<vector> >& B, const GeometricField<vector, fvPatchField, volMesh>& vf) const
|
void leastSquaresVolPointInterpolation::calcB
|
||||||
{
|
(
|
||||||
|
List<Field<vector> >& B,
|
||||||
|
const GeometricField<vector, fvPatchField, volMesh>& vf
|
||||||
|
) const
|
||||||
|
{
|
||||||
//Info << "leastSquaresVolPointInterpolation calcB" << endl;
|
//Info << "leastSquaresVolPointInterpolation calcB" << endl;
|
||||||
|
|
||||||
const fvMesh& mesh = mesh_;
|
const fvMesh& mesh = mesh_;
|
||||||
const pointField& points = mesh.points();
|
const pointField& points = mesh.points();
|
||||||
|
|
||||||
for (direction compi = 0; compi < 3; compi++)
|
for (direction compi = 0; compi < 3; compi++)
|
||||||
{
|
{
|
||||||
forAll(points, pointi)
|
forAll(points, pointi)
|
||||||
{
|
{
|
||||||
const labelList& pointCells = mesh.pointCells()[pointi];
|
const labelList& pointCells = mesh.pointCells()[pointi];
|
||||||
//Info << "\npointCells " << pointCells << endl;
|
//Info << "\npointCells " << pointCells << endl;
|
||||||
forAll(pointCells, pointCelli)
|
forAll(pointCells, pointCelli)
|
||||||
{
|
{
|
||||||
const label& celli = pointCells[pointCelli];
|
const label& celli = pointCells[pointCelli];
|
||||||
//Info << "celli " << celli << ", C is " << mesh.C()[celli] << ", mesh.C().size() " << mesh.C().size() << endl;
|
//Info << "celli " << celli << ", C is " << mesh.C()[celli] << ", mesh.C().size() " << mesh.C().size() << endl;
|
||||||
//Info << "mesh.C() is " << mesh.C().internalField() << endl;
|
//Info << "mesh.C() is " << mesh.C().internalField() << endl;
|
||||||
const scalar& x = mesh.C()[celli].component(vector::X);
|
const scalar& x = mesh.C()[celli].component(vector::X);
|
||||||
const scalar& y = mesh.C()[celli].component(vector::Y);
|
const scalar& y = mesh.C()[celli].component(vector::Y);
|
||||||
const scalar& z = mesh.C()[celli].component(vector::Z);
|
const scalar& z = mesh.C()[celli].component(vector::Z);
|
||||||
|
|
||||||
const scalar& phiCompi = vf.internalField()[celli].component(compi);
|
const scalar& phiCompi =
|
||||||
|
vf.internalField()[celli].component(compi);
|
||||||
|
|
||||||
B[pointi][0].component(compi) += phiCompi*x;
|
B[pointi][0].component(compi) += phiCompi*x;
|
||||||
B[pointi][1].component(compi) += phiCompi*y;
|
B[pointi][1].component(compi) += phiCompi*y;
|
||||||
B[pointi][2].component(compi) += phiCompi*z;
|
B[pointi][2].component(compi) += phiCompi*z;
|
||||||
B[pointi][3].component(compi) += phiCompi;
|
B[pointi][3].component(compi) += phiCompi;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//- for boundary points we will include the surrounding face centres
|
//- for boundary points we will include the surrounding face centres
|
||||||
forAll(mesh.boundary(), patchi)
|
forAll(mesh.boundary(), patchi)
|
||||||
{
|
{
|
||||||
const vectorField& faceCentres = mesh.boundaryMesh()[patchi].faceCentres();
|
const vectorField& faceCentres =
|
||||||
const labelListList& pointFaces = mesh.boundaryMesh()[patchi].pointFaces();
|
mesh.boundaryMesh()[patchi].faceCentres();
|
||||||
const labelList& faceCells = mesh.boundaryMesh()[patchi].faceCells();
|
const labelListList& pointFaces =
|
||||||
|
mesh.boundaryMesh()[patchi].pointFaces();
|
||||||
|
const labelList& faceCells =
|
||||||
|
mesh.boundaryMesh()[patchi].faceCells();
|
||||||
|
|
||||||
//- fix: do not calculate B for empty patches - philipc
|
//- fix: do not calculate B for empty patches - philipc
|
||||||
if(mesh.boundary()[patchi].coupled())
|
if(mesh.boundary()[patchi].coupled())
|
||||||
{
|
{
|
||||||
//- for coupled patches we will use the values at the neighbourField cell centres and we will
|
//- for coupled patches we will use the values at the
|
||||||
//- not use the boundary face values
|
//- neighbourField cell centres and we will not use the
|
||||||
//- neighbour cell centre are equal to the faceCell centres plus the delta vector
|
//- boundary face values neighbour cell centre are equal to
|
||||||
vectorField pDelta = mesh.boundary()[patchi].delta();
|
//- the faceCell centres plus the delta vector
|
||||||
vectorField faceCellC(faceCentres.size(), vector::zero);
|
vectorField pDelta = mesh.boundary()[patchi].delta();
|
||||||
forAll(faceCentres, facei)
|
vectorField faceCellC(faceCentres.size(), vector::zero);
|
||||||
{
|
forAll(faceCentres, facei)
|
||||||
label celli = mesh.boundaryMesh()[patchi].faceCells()[facei];
|
{
|
||||||
faceCellC[facei] = mesh.C()[celli];
|
label celli =
|
||||||
}
|
mesh.boundaryMesh()[patchi].faceCells()[facei];
|
||||||
vectorField neiCellC = faceCellC + pDelta;
|
faceCellC[facei] = mesh.C()[celli];
|
||||||
|
}
|
||||||
|
vectorField neiCellC = faceCellC + pDelta;
|
||||||
|
|
||||||
vectorField phiNeiField = vf.boundaryField()[patchi].patchNeighbourField();
|
vectorField phiNeiField =
|
||||||
|
vf.boundaryField()[patchi].patchNeighbourField();
|
||||||
|
|
||||||
forAll(pointFaces, pointi)
|
forAll(pointFaces, pointi)
|
||||||
{
|
{
|
||||||
forAll(pointFaces[pointi], pointFacei)
|
forAll(pointFaces[pointi], pointFacei)
|
||||||
{
|
{
|
||||||
label neiCelli = pointFaces[pointi][pointFacei];
|
label neiCelli = pointFaces[pointi][pointFacei];
|
||||||
const scalar& x = neiCellC[neiCelli].component(vector::X);
|
const scalar& x =
|
||||||
const scalar& y = neiCellC[neiCelli].component(vector::Y);
|
neiCellC[neiCelli].component(vector::X);
|
||||||
const scalar& z = neiCellC[neiCelli].component(vector::Z);
|
const scalar& y =
|
||||||
|
neiCellC[neiCelli].component(vector::Y);
|
||||||
|
const scalar& z =
|
||||||
|
neiCellC[neiCelli].component(vector::Z);
|
||||||
|
|
||||||
label globalPointi = mesh.boundaryMesh()[patchi].meshPoints()[pointi];
|
label globalPointi =
|
||||||
|
mesh.boundaryMesh()[patchi].meshPoints()[pointi];
|
||||||
|
|
||||||
//- this is the value of phi at the cell centre in the neighbour (i.e. across the interface)
|
//- this is the value of phi at the cell centre in the
|
||||||
scalar phiCompi = phiNeiField[neiCelli].component(compi);
|
//- neighbour (i.e. across the interface)
|
||||||
|
scalar phiCompi =
|
||||||
|
phiNeiField[neiCelli].component(compi);
|
||||||
|
|
||||||
B[globalPointi][0].component(compi) += phiCompi*x;
|
B[globalPointi][0].component(compi) += phiCompi*x;
|
||||||
B[globalPointi][1].component(compi) += phiCompi*y;
|
B[globalPointi][1].component(compi) += phiCompi*y;
|
||||||
B[globalPointi][2].component(compi) += phiCompi*z;
|
B[globalPointi][2].component(compi) += phiCompi*z;
|
||||||
B[globalPointi][3].component(compi) += phiCompi;
|
B[globalPointi][3].component(compi) += phiCompi;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//- each point must use at least 4 neighbouring locations otherwise A is singular
|
//- each point must use at least 4 neighbouring locations
|
||||||
//- and simpleMatrix will cannot invert it
|
//- otherwise A is singular and simpleMatrix will cannot
|
||||||
//- therefore empty patches values are included to make sure A is not singular
|
//- make sure A is not singular invert it therefore empty
|
||||||
forAll(pointFaces, pointi)
|
//- patches values are included to
|
||||||
{
|
forAll(pointFaces, pointi)
|
||||||
forAll(pointFaces[pointi], pointFacei)
|
{
|
||||||
{
|
forAll(pointFaces[pointi], pointFacei)
|
||||||
//- fix: use pointFace not face philipc
|
{
|
||||||
label facei = pointFaces[pointi][pointFacei];
|
//- fix: use pointFace not face philipc
|
||||||
const scalar& x = faceCentres[facei].component(vector::X);
|
label facei = pointFaces[pointi][pointFacei];
|
||||||
const scalar& y = faceCentres[facei].component(vector::Y);
|
const scalar& x =
|
||||||
const scalar& z = faceCentres[facei].component(vector::Z);
|
faceCentres[facei].component(vector::X);
|
||||||
|
const scalar& y =
|
||||||
|
faceCentres[facei].component(vector::Y);
|
||||||
|
const scalar& z =
|
||||||
|
faceCentres[facei].component(vector::Z);
|
||||||
|
|
||||||
label globalPointi = mesh.boundaryMesh()[patchi].meshPoints()[pointi];
|
label globalPointi =
|
||||||
|
mesh.boundaryMesh()[patchi].meshPoints()[pointi];
|
||||||
|
|
||||||
scalar phiCompi = 0.0;
|
scalar phiCompi = 0.0;
|
||||||
if(mesh.boundary()[patchi].type() == "empty")
|
if(mesh.boundary()[patchi].type() == "empty")
|
||||||
{
|
{
|
||||||
//- use faceCell value for empty because empty patches do not store any values
|
//- use faceCell value for empty because empty
|
||||||
const label& ci = faceCells[facei];
|
//- patches do not store any values
|
||||||
phiCompi = vf.internalField()[ci].component(compi);
|
const label& ci = faceCells[facei];
|
||||||
}
|
phiCompi =
|
||||||
else
|
vf.internalField()[ci].component(compi);
|
||||||
{
|
}
|
||||||
phiCompi = vf.boundaryField()[patchi][facei].component(compi);
|
else
|
||||||
}
|
{
|
||||||
|
phiCompi =
|
||||||
|
vf.boundaryField()[patchi][facei].component(compi);
|
||||||
|
}
|
||||||
|
|
||||||
B[globalPointi][0].component(compi) += phiCompi*x;
|
B[globalPointi][0].component(compi) += phiCompi*x;
|
||||||
B[globalPointi][1].component(compi) += phiCompi*y;
|
B[globalPointi][1].component(compi) += phiCompi*y;
|
||||||
B[globalPointi][2].component(compi) += phiCompi*z;
|
B[globalPointi][2].component(compi) += phiCompi*z;
|
||||||
B[globalPointi][3].component(compi) += phiCompi;
|
B[globalPointi][3].component(compi) += phiCompi;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} //- end of forAll boundary
|
} //- end of forAll boundary
|
||||||
} //- end of for all components
|
} //- end of for all components
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void leastSquaresVolPointInterpolation::interpolate
|
void leastSquaresVolPointInterpolation::interpolate
|
||||||
(
|
(
|
||||||
const GeometricField<vector, fvPatchField, volMesh>& vf,
|
const GeometricField<vector, fvPatchField, volMesh>& vf,
|
||||||
GeometricField<vector, pointPatchField, pointMesh>& pf //Field<vector>& pf
|
GeometricField<vector, pointPatchField, pointMesh>& pf //Field<vector>& pf
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
//Info << "Interpolating cell to point using leastSquaresVolPointInterpolation" << endl;
|
//Info << "Interpolating cell to point using leastSquaresVolPointInterpolation" << endl;
|
||||||
|
|
||||||
const fvMesh& mesh = mesh_;
|
const fvMesh& mesh = mesh_;
|
||||||
|
@ -312,10 +346,10 @@ defineTypeNameAndDebug(leastSquaresVolPointInterpolation, 0);
|
||||||
|
|
||||||
//- first check that point field is the correct size
|
//- first check that point field is the correct size
|
||||||
if(pf.size() != points.size())
|
if(pf.size() != points.size())
|
||||||
{
|
{
|
||||||
FatalError << "pointfield should be equal to the number of points in the fvMesh"
|
FatalError << "pointfield should be equal to the number of points in the fvMesh"
|
||||||
<< abort(FatalError);
|
<< abort(FatalError);
|
||||||
}
|
}
|
||||||
|
|
||||||
//- calculate A and B vector
|
//- calculate A and B vector
|
||||||
List<scalarSquareMatrix> A(mesh.points().size(), scalarSquareMatrix(4, 0.0));
|
List<scalarSquareMatrix> A(mesh.points().size(), scalarSquareMatrix(4, 0.0));
|
||||||
|
@ -326,52 +360,55 @@ defineTypeNameAndDebug(leastSquaresVolPointInterpolation, 0);
|
||||||
|
|
||||||
//- solve equations for each component of each point
|
//- solve equations for each component of each point
|
||||||
forAll(points, pointi)
|
forAll(points, pointi)
|
||||||
{
|
{
|
||||||
Field<vector>& source = B[pointi];
|
Field<vector>& source = B[pointi];
|
||||||
simpleMatrix<vector> leastSquaresMatrix(A[pointi], source);
|
simpleMatrix<vector> leastSquaresMatrix(A[pointi], source);
|
||||||
//Info << "solving equation for point " << pointi << endl;
|
//Info << "solving equation for point " << pointi << endl;
|
||||||
//Info << "A[pointi] is " << A[pointi] << ", source is " << source << endl;
|
//Info << "A[pointi] is " << A[pointi] << ", source is " << source << endl;
|
||||||
//- solve using Gauss elimination or LU decomposition with pivoting
|
//- solve using Gauss elimination or LU decomposition with pivoting
|
||||||
//Field<vector> leastSquaresSol = leastSquaresMatrix.solve();
|
//Field<vector> leastSquaresSol = leastSquaresMatrix.solve();
|
||||||
Field<vector> leastSquaresSol = leastSquaresMatrix.LUsolve();
|
Field<vector> leastSquaresSol = leastSquaresMatrix.LUsolve();
|
||||||
|
|
||||||
const scalar& x = mesh.points()[pointi].component(vector::X);
|
const scalar& x = mesh.points()[pointi].component(vector::X);
|
||||||
const scalar& y = mesh.points()[pointi].component(vector::Y);
|
const scalar& y = mesh.points()[pointi].component(vector::Y);
|
||||||
const scalar& z = mesh.points()[pointi].component(vector::Z);
|
const scalar& z = mesh.points()[pointi].component(vector::Z);
|
||||||
|
|
||||||
//- calculate phi at vertex
|
//- calculate phi at vertex
|
||||||
for (direction compi = 0; compi < 3; compi++)
|
for (direction compi = 0; compi < 3; compi++)
|
||||||
{
|
{
|
||||||
const scalar& a = leastSquaresSol[0].component(compi);
|
const scalar& a = leastSquaresSol[0].component(compi);
|
||||||
const scalar& b = leastSquaresSol[1].component(compi);
|
const scalar& b = leastSquaresSol[1].component(compi);
|
||||||
const scalar& c = leastSquaresSol[2].component(compi);
|
const scalar& c = leastSquaresSol[2].component(compi);
|
||||||
const scalar& d = leastSquaresSol[3].component(compi);
|
const scalar& d = leastSquaresSol[3].component(compi);
|
||||||
|
|
||||||
pf[pointi].component(compi) = a*x + b*y + c*z + d;
|
pf[pointi].component(compi) = a*x + b*y + c*z + d;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//- proc patches are synchronised
|
//- proc patches are synchronised
|
||||||
pf.correctBoundaryConditions();
|
pf.correctBoundaryConditions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
leastSquaresVolPointInterpolation::leastSquaresVolPointInterpolation(const fvMesh& vm)
|
leastSquaresVolPointInterpolation::leastSquaresVolPointInterpolation
|
||||||
:
|
(
|
||||||
|
const fvMesh& vm
|
||||||
|
)
|
||||||
|
:
|
||||||
MeshObject<fvMesh, leastSquaresVolPointInterpolation>(vm),
|
MeshObject<fvMesh, leastSquaresVolPointInterpolation>(vm),
|
||||||
mesh_(vm) //,
|
mesh_(vm) //,
|
||||||
//A_(vm.points().size(), scalarSquareMatrix(4, 0.0)),
|
//A_(vm.points().size(), scalarSquareMatrix(4, 0.0)),
|
||||||
//B_(vm.points().size(), Field<vector>(4, vector::zero))
|
//B_(vm.points().size(), Field<vector>(4, vector::zero))
|
||||||
{
|
{
|
||||||
//calcA();
|
//calcA();
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
leastSquaresVolPointInterpolation::~leastSquaresVolPointInterpolation()
|
leastSquaresVolPointInterpolation::~leastSquaresVolPointInterpolation()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
|
@ -86,10 +86,17 @@ class leastSquaresVolPointInterpolation
|
||||||
void calcA(List<scalarSquareMatrix>& A) const;
|
void calcA(List<scalarSquareMatrix>& A) const;
|
||||||
|
|
||||||
//- calc B source for each point
|
//- calc B source for each point
|
||||||
void calcB(List<Field<vector> >& B, const GeometricField<vector, fvPatchField, volMesh>&) const;
|
void calcB
|
||||||
|
(
|
||||||
|
List<Field<vector> >& B,
|
||||||
|
const GeometricField<vector, fvPatchField, volMesh>&
|
||||||
|
) const;
|
||||||
|
|
||||||
//- Disallow default bitwise copy construct
|
//- Disallow default bitwise copy construct
|
||||||
leastSquaresVolPointInterpolation(const leastSquaresVolPointInterpolation&);
|
leastSquaresVolPointInterpolation
|
||||||
|
(
|
||||||
|
const leastSquaresVolPointInterpolation&
|
||||||
|
);
|
||||||
|
|
||||||
//- Disallow default bitwise assignment
|
//- Disallow default bitwise assignment
|
||||||
void operator=(const leastSquaresVolPointInterpolation&);
|
void operator=(const leastSquaresVolPointInterpolation&);
|
||||||
|
@ -121,13 +128,13 @@ public:
|
||||||
|
|
||||||
virtual bool movePoints() const
|
virtual bool movePoints() const
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool updateMesh(const mapPolyMesh&) const
|
virtual bool updateMesh(const mapPolyMesh&) const
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Interpolation functions
|
// Interpolation functions
|
||||||
|
@ -137,7 +144,7 @@ public:
|
||||||
void interpolate
|
void interpolate
|
||||||
(
|
(
|
||||||
const GeometricField<vector, fvPatchField, volMesh>& vf,
|
const GeometricField<vector, fvPatchField, volMesh>& vf,
|
||||||
GeometricField<vector, pointPatchField, pointMesh>& pf
|
GeometricField<vector, pointPatchField, pointMesh>& pf
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -34,7 +34,7 @@ License
|
||||||
void Foam::Time::readDict()
|
void Foam::Time::readDict()
|
||||||
{
|
{
|
||||||
if (debug)
|
if (debug)
|
||||||
Info << "Time::readDict(): reading " << controlDict_.name() << endl;
|
Info << "Time::readDict(): reading " << controlDict_.name() << endl;
|
||||||
|
|
||||||
if (!deltaTchanged_)
|
if (!deltaTchanged_)
|
||||||
{
|
{
|
||||||
|
|
|
@ -340,87 +340,87 @@ GenericPointPatchField
|
||||||
tensorFields_.insert(iter().keyword(), fPtr);
|
tensorFields_.insert(iter().keyword(), fPtr);
|
||||||
}
|
}
|
||||||
else if
|
else if
|
||||||
(
|
(
|
||||||
fieldToken.compoundToken().type()
|
fieldToken.compoundToken().type()
|
||||||
== token::Compound<List<symmTensor4thOrder> >::typeName
|
== token::Compound<List<symmTensor4thOrder> >::typeName
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
symmTensor4thOrderField* fPtr = new symmTensor4thOrderField;
|
symmTensor4thOrderField* fPtr = new symmTensor4thOrderField;
|
||||||
fPtr->transfer
|
fPtr->transfer
|
||||||
(
|
(
|
||||||
dynamicCast
|
dynamicCast
|
||||||
<
|
<
|
||||||
token::Compound<List<symmTensor4thOrder> >
|
token::Compound<List<symmTensor4thOrder> >
|
||||||
>
|
>
|
||||||
(
|
(
|
||||||
fieldToken.transferCompoundToken()
|
fieldToken.transferCompoundToken()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (fPtr->size() != this->size())
|
if (fPtr->size() != this->size())
|
||||||
{
|
{
|
||||||
FatalIOErrorIn
|
FatalIOErrorIn
|
||||||
(
|
(
|
||||||
"GenericPointPatchField<Type>::"
|
"GenericPointPatchField<Type>::"
|
||||||
"GenericPointPatchField"
|
"GenericPointPatchField"
|
||||||
"(const pointPatch&, const Field<Type>&, "
|
"(const pointPatch&, const Field<Type>&, "
|
||||||
"const dictionary&)",
|
"const dictionary&)",
|
||||||
dict
|
dict
|
||||||
) << "\n size of field " << iter().keyword()
|
) << "\n size of field " << iter().keyword()
|
||||||
<< " (" << fPtr->size() << ')'
|
<< " (" << fPtr->size() << ')'
|
||||||
<< " is not the same size as the patch ("
|
<< " is not the same size as the patch ("
|
||||||
<< this->size() << ')'
|
<< this->size() << ')'
|
||||||
<< "\n on patch " << this->patch().name()
|
<< "\n on patch " << this->patch().name()
|
||||||
<< " of field "
|
<< " of field "
|
||||||
<< this->dimensionedInternalField().name()
|
<< this->dimensionedInternalField().name()
|
||||||
<< " in file "
|
<< " in file "
|
||||||
<< this->dimensionedInternalField().objectPath()
|
<< this->dimensionedInternalField().objectPath()
|
||||||
<< exit(FatalIOError);
|
<< exit(FatalIOError);
|
||||||
}
|
}
|
||||||
|
|
||||||
symmTensor4thOrderFields_.insert(iter().keyword(), fPtr);
|
symmTensor4thOrderFields_.insert(iter().keyword(), fPtr);
|
||||||
}
|
}
|
||||||
else if
|
else if
|
||||||
(
|
(
|
||||||
fieldToken.compoundToken().type()
|
fieldToken.compoundToken().type()
|
||||||
== token::Compound<List<diagTensor> >::typeName
|
== token::Compound<List<diagTensor> >::typeName
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
diagTensorField* fPtr = new diagTensorField;
|
diagTensorField* fPtr = new diagTensorField;
|
||||||
fPtr->transfer
|
fPtr->transfer
|
||||||
(
|
(
|
||||||
dynamicCast
|
dynamicCast
|
||||||
<
|
<
|
||||||
token::Compound<List<diagTensor> >
|
token::Compound<List<diagTensor> >
|
||||||
>
|
>
|
||||||
(
|
(
|
||||||
fieldToken.transferCompoundToken()
|
fieldToken.transferCompoundToken()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (fPtr->size() != this->size())
|
if (fPtr->size() != this->size())
|
||||||
{
|
{
|
||||||
FatalIOErrorIn
|
FatalIOErrorIn
|
||||||
(
|
(
|
||||||
"GenericPointPatchField<Type>::"
|
"GenericPointPatchField<Type>::"
|
||||||
"GenericPointPatchField"
|
"GenericPointPatchField"
|
||||||
"(const pointPatch&, const Field<Type>&, "
|
"(const pointPatch&, const Field<Type>&, "
|
||||||
"const dictionary&)",
|
"const dictionary&)",
|
||||||
dict
|
dict
|
||||||
) << "\n size of field " << iter().keyword()
|
) << "\n size of field " << iter().keyword()
|
||||||
<< " (" << fPtr->size() << ')'
|
<< " (" << fPtr->size() << ')'
|
||||||
<< " is not the same size as the patch ("
|
<< " is not the same size as the patch ("
|
||||||
<< this->size() << ')'
|
<< this->size() << ')'
|
||||||
<< "\n on patch " << this->patch().name()
|
<< "\n on patch " << this->patch().name()
|
||||||
<< " of field "
|
<< " of field "
|
||||||
<< this->dimensionedInternalField().name()
|
<< this->dimensionedInternalField().name()
|
||||||
<< " in file "
|
<< " in file "
|
||||||
<< this->dimensionedInternalField().objectPath()
|
<< this->dimensionedInternalField().objectPath()
|
||||||
<< exit(FatalIOError);
|
<< exit(FatalIOError);
|
||||||
}
|
}
|
||||||
|
|
||||||
diagTensorFields_.insert(iter().keyword(), fPtr);
|
diagTensorFields_.insert(iter().keyword(), fPtr);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FatalIOErrorIn
|
FatalIOErrorIn
|
||||||
|
@ -531,34 +531,34 @@ GenericPointPatchField
|
||||||
}
|
}
|
||||||
|
|
||||||
for
|
for
|
||||||
(
|
(
|
||||||
HashPtrTable<symmTensor4thOrderField>::const_iterator iter =
|
HashPtrTable<symmTensor4thOrderField>::const_iterator iter =
|
||||||
ptf.symmTensor4thOrderFields_.begin();
|
ptf.symmTensor4thOrderFields_.begin();
|
||||||
iter != ptf.symmTensor4thOrderFields_.end();
|
iter != ptf.symmTensor4thOrderFields_.end();
|
||||||
++iter
|
++iter
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
symmTensor4thOrderFields_.insert
|
symmTensor4thOrderFields_.insert
|
||||||
(
|
(
|
||||||
iter.key(),
|
iter.key(),
|
||||||
new symmTensor4thOrderField(*iter(), mapper)
|
new symmTensor4thOrderField(*iter(), mapper)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
for
|
for
|
||||||
(
|
(
|
||||||
HashPtrTable<diagTensorField>::const_iterator iter =
|
HashPtrTable<diagTensorField>::const_iterator iter =
|
||||||
ptf.diagTensorFields_.begin();
|
ptf.diagTensorFields_.begin();
|
||||||
iter != ptf.diagTensorFields_.end();
|
iter != ptf.diagTensorFields_.end();
|
||||||
++iter
|
++iter
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
diagTensorFields_.insert
|
diagTensorFields_.insert
|
||||||
(
|
(
|
||||||
iter.key(),
|
iter.key(),
|
||||||
new diagTensorField(*iter(), mapper)
|
new diagTensorField(*iter(), mapper)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -311,7 +311,7 @@ public:
|
||||||
// cellSet -appDict cellSetDict.rotorOnly
|
// cellSet -appDict cellSetDict.rotorOnly
|
||||||
//
|
//
|
||||||
#define AppSpecificDictionary(DefaultAppDict) \
|
#define AppSpecificDictionary(DefaultAppDict) \
|
||||||
argList::appDictName_ = (DefaultAppDict); \
|
argList::appDictName_ = (DefaultAppDict); \
|
||||||
argList::validOptions.insert("appDict", argList::appDictName_);
|
argList::validOptions.insert("appDict", argList::appDictName_);
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
|
@ -185,7 +185,7 @@ GGIInterpolation<MasterPatch, SlavePatch>::polygonIntersection
|
||||||
if
|
if
|
||||||
(
|
(
|
||||||
mag(intersectionArea/clippingArea) < areaErrorTol_()
|
mag(intersectionArea/clippingArea) < areaErrorTol_()
|
||||||
|| mag(intersectionArea/subjectArea) < areaErrorTol_()
|
|| mag(intersectionArea/subjectArea) < areaErrorTol_()
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
WarningIn
|
WarningIn
|
||||||
|
|
|
@ -59,9 +59,9 @@ void Foam::pointMesh::mapFields(const mapPolyMesh& mpm) const
|
||||||
MapGeometricFields
|
MapGeometricFields
|
||||||
<
|
<
|
||||||
symmTensor4thOrder,
|
symmTensor4thOrder,
|
||||||
pointPatchField,
|
pointPatchField,
|
||||||
pointMeshMapper,
|
pointMeshMapper,
|
||||||
pointMesh
|
pointMesh
|
||||||
>(m);
|
>(m);
|
||||||
|
|
||||||
MapGeometricFields<diagTensor, pointPatchField, pointMeshMapper, pointMesh>
|
MapGeometricFields<diagTensor, pointPatchField, pointMeshMapper, pointMesh>
|
||||||
|
|
|
@ -45,9 +45,9 @@ namespace Foam
|
||||||
{
|
{
|
||||||
defineTypeNameAndDebugWithDescription
|
defineTypeNameAndDebugWithDescription
|
||||||
(
|
(
|
||||||
ggiPolyPatch,
|
ggiPolyPatch,
|
||||||
0,
|
0,
|
||||||
"If value > 1, write uncovered GGI patch facets to VTK file"
|
"If value > 1, write uncovered GGI patch facets to VTK file"
|
||||||
);
|
);
|
||||||
|
|
||||||
addToRunTimeSelectionTable(polyPatch, ggiPolyPatch, word);
|
addToRunTimeSelectionTable(polyPatch, ggiPolyPatch, word);
|
||||||
|
|
|
@ -43,7 +43,7 @@ namespace Foam
|
||||||
polyPatch::disallowGenericPolyPatch
|
polyPatch::disallowGenericPolyPatch
|
||||||
(
|
(
|
||||||
"disallowGenericPolyPatch",
|
"disallowGenericPolyPatch",
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
|
|
||||||
defineRunTimeSelectionTable(polyPatch, word);
|
defineRunTimeSelectionTable(polyPatch, word);
|
||||||
|
|
|
@ -132,11 +132,11 @@ public:
|
||||||
inline SymmTensor4thOrder
|
inline SymmTensor4thOrder
|
||||||
(
|
(
|
||||||
const Cmpt txxxx, const Cmpt txxyy, const Cmpt txxzz,
|
const Cmpt txxxx, const Cmpt txxyy, const Cmpt txxzz,
|
||||||
const Cmpt tyyyy, const Cmpt tyyzz,
|
const Cmpt tyyyy, const Cmpt tyyzz,
|
||||||
const Cmpt tzzzz,
|
const Cmpt tzzzz,
|
||||||
const Cmpt txyxy,
|
const Cmpt txyxy,
|
||||||
const Cmpt tyzyz,
|
const Cmpt tyzyz,
|
||||||
const Cmpt tzxzx
|
const Cmpt tzxzx
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct from Istream
|
//- Construct from Istream
|
||||||
|
|
|
@ -56,7 +56,7 @@ inline SymmTensor4thOrder<Cmpt>::SymmTensor4thOrder
|
||||||
(
|
(
|
||||||
const Cmpt txxxx, const Cmpt txxyy, const Cmpt txxzz,
|
const Cmpt txxxx, const Cmpt txxyy, const Cmpt txxzz,
|
||||||
const Cmpt tyyyy, const Cmpt tyyzz,
|
const Cmpt tyyyy, const Cmpt tyyzz,
|
||||||
const Cmpt tzzzz,
|
const Cmpt tzzzz,
|
||||||
const Cmpt txyxy,
|
const Cmpt txyxy,
|
||||||
const Cmpt tyzyz,
|
const Cmpt tyzyz,
|
||||||
const Cmpt tzxzx
|
const Cmpt tzxzx
|
||||||
|
|
|
@ -302,20 +302,23 @@ inline SymmTensor4thOrder<Cmpt> transform
|
||||||
template<class Cmpt>
|
template<class Cmpt>
|
||||||
inline DiagTensor<Cmpt> transform
|
inline DiagTensor<Cmpt> transform
|
||||||
(
|
(
|
||||||
const tensor& tt,
|
const tensor& tt,
|
||||||
const DiagTensor<Cmpt>& st
|
const DiagTensor<Cmpt>& st
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
notImplemented("transform.H\n"
|
notImplemented
|
||||||
"template<>\n"
|
(
|
||||||
"inline DiagTensor<Cmpt> transform\n"
|
"transform.H\n"
|
||||||
"(\n"
|
"template<>\n"
|
||||||
"const tensor& tt,\n"
|
"inline DiagTensor<Cmpt> transform\n"
|
||||||
"const DiagTensor<Cmpt>& st\n"
|
"(\n"
|
||||||
")\n"
|
"const tensor& tt,\n"
|
||||||
"not implemented");
|
"const DiagTensor<Cmpt>& st\n"
|
||||||
|
")\n"
|
||||||
|
"not implemented"
|
||||||
|
);
|
||||||
|
|
||||||
return st;
|
return st;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -376,9 +379,9 @@ template<>
|
||||||
inline symmTensor4thOrder transformMask<symmTensor4thOrder>(const tensor& t)
|
inline symmTensor4thOrder transformMask<symmTensor4thOrder>(const tensor& t)
|
||||||
{
|
{
|
||||||
notImplemented("transform.H\n"
|
notImplemented("transform.H\n"
|
||||||
"template<>\n"
|
"template<>\n"
|
||||||
"inline symmTensor4thOrder transformMask<symmTensor4thOrder>(const tensor& t)\n"
|
"inline symmTensor4thOrder transformMask<symmTensor4thOrder>(const tensor& t)\n"
|
||||||
"not implemented");
|
"not implemented");
|
||||||
|
|
||||||
return symmTensor4thOrder::zero;
|
return symmTensor4thOrder::zero;
|
||||||
}
|
}
|
||||||
|
|
|
@ -258,7 +258,7 @@ void immersedBoundaryOmegaWallFunctionFvPatchScalarField::updateCoeffs()
|
||||||
{
|
{
|
||||||
// Calculate tauW from log-law using k and U at sampling point
|
// Calculate tauW from log-law using k and U at sampling point
|
||||||
|
|
||||||
tauW = UtanOld[ibCellI]*Cmu25*sqrt(k[ibCellI])*kappa_
|
tauW = UtanOld[ibCellI]*Cmu25*sqrt(k[ibCellI])*kappa_
|
||||||
/log(E_*yPlusSample);
|
/log(E_*yPlusSample);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -288,11 +288,11 @@ void immersedBoundaryOmegaWallFunctionFvPatchScalarField::updateCoeffs()
|
||||||
sqr((nutw + nuLam)*magGradUw[ibCellI])/
|
sqr((nutw + nuLam)*magGradUw[ibCellI])/
|
||||||
(Cmu25*sqrt(k[ibCellI])*kappa_*y[ibCellI]);
|
(Cmu25*sqrt(k[ibCellI])*kappa_*y[ibCellI]);
|
||||||
|
|
||||||
// Compute k at the IB cell
|
// Compute k at the IB cell
|
||||||
kNew[ibCellI] = tauW/Cmu50; // equilibrium boundary layer
|
kNew[ibCellI] = tauW/Cmu50; // equilibrium boundary layer
|
||||||
// kNew[ibCellI] = k[ibCellI]; // zero-Gradient (less stable)
|
// kNew[ibCellI] = k[ibCellI]; // zero-Gradient (less stable)
|
||||||
|
|
||||||
// Compute omega at the IB cell
|
// Compute omega at the IB cell
|
||||||
omegaNew[ibCellI] = sqrt(kNew[ibCellI])/(Cmu25*kappa_*y[ibCellI]);
|
omegaNew[ibCellI] = sqrt(kNew[ibCellI])/(Cmu25*kappa_*y[ibCellI]);
|
||||||
|
|
||||||
// Log-Law for tangential velocity - uTau = Cmu25*sqrt(kNew)
|
// Log-Law for tangential velocity - uTau = Cmu25*sqrt(kNew)
|
||||||
|
@ -312,7 +312,7 @@ void immersedBoundaryOmegaWallFunctionFvPatchScalarField::updateCoeffs()
|
||||||
// quadratic fit
|
// quadratic fit
|
||||||
kNew[ibCellI] = k[ibCellI]*sqr(yPlusIB/yPlusLam);
|
kNew[ibCellI] = k[ibCellI]*sqr(yPlusIB/yPlusLam);
|
||||||
|
|
||||||
// Compute omega at the IB cell
|
// Compute omega at the IB cell
|
||||||
omegaNew[ibCellI] = 6.0*nu[ibCellI]/(beta1_*sqr(y[ibCellI]));
|
omegaNew[ibCellI] = 6.0*nu[ibCellI]/(beta1_*sqr(y[ibCellI]));
|
||||||
|
|
||||||
// Laminar sub-layer for tangential velocity: uPlus = yPlus
|
// Laminar sub-layer for tangential velocity: uPlus = yPlus
|
||||||
|
|
|
@ -549,7 +549,7 @@ public:
|
||||||
template<> \
|
template<> \
|
||||||
const Foam::word KinematicParcel<Type>::typeName(#Type); \
|
const Foam::word KinematicParcel<Type>::typeName(#Type); \
|
||||||
template<> \
|
template<> \
|
||||||
Foam::debug::debugSwitch \
|
Foam::debug::debugSwitch \
|
||||||
KinematicParcel<Type>::debug \
|
KinematicParcel<Type>::debug \
|
||||||
( \
|
( \
|
||||||
std::string(#Type), DebugSwitch \
|
std::string(#Type), DebugSwitch \
|
||||||
|
|
|
@ -299,7 +299,7 @@ Foam::iterativePenaltyFriction::iterativePenaltyFriction
|
||||||
|
|
||||||
// traction to cause slipping
|
// traction to cause slipping
|
||||||
//scalar slipTrac =
|
//scalar slipTrac =
|
||||||
//frictionLawPtr_->slipTraction(magSlavePressure[faceI]);
|
// frictionLawPtr_->slipTraction(magSlavePressure[faceI]);
|
||||||
vector& slaveTrac = slaveTraction_[faceI];
|
vector& slaveTrac = slaveTraction_[faceI];
|
||||||
|
|
||||||
// if mag(slaveTrac) is greater than slipTrac and
|
// if mag(slaveTrac) is greater than slipTrac and
|
||||||
|
|
|
@ -18,51 +18,53 @@ internalField uniform 100;
|
||||||
|
|
||||||
boundaryField
|
boundaryField
|
||||||
{
|
{
|
||||||
inlet
|
inlet
|
||||||
{
|
{
|
||||||
type fixedValue;
|
type fixedValue;
|
||||||
value uniform 500;
|
value uniform 500;
|
||||||
}
|
}
|
||||||
outlet
|
outlet
|
||||||
{
|
{
|
||||||
type fixedValue;
|
type fixedValue;
|
||||||
value uniform 100;
|
value uniform 100;
|
||||||
}
|
}
|
||||||
wallProlongation
|
wallProlongation
|
||||||
{
|
{
|
||||||
type zeroGradient;
|
type zeroGradient;
|
||||||
}
|
}
|
||||||
wallDiffuser
|
wallDiffuser
|
||||||
{
|
{
|
||||||
type zeroGradient;
|
type zeroGradient;
|
||||||
}
|
}
|
||||||
statSwirlWallB_C
|
statSwirlWallB_C
|
||||||
{
|
{
|
||||||
type zeroGradient;
|
type zeroGradient;
|
||||||
}
|
}
|
||||||
rotSwirlWallA_BB
|
rotSwirlWallA_BB
|
||||||
{
|
{
|
||||||
type zeroGradient;
|
type zeroGradient;
|
||||||
}
|
}
|
||||||
B_UPSTREAM
|
B_UPSTREAM
|
||||||
{
|
{
|
||||||
type mixingPlane;
|
type mixingPlane;
|
||||||
}
|
}
|
||||||
B_DOWNSTREAM
|
B_DOWNSTREAM
|
||||||
{
|
{
|
||||||
type mixingPlane;
|
type mixingPlane;
|
||||||
}
|
}
|
||||||
sideWallA_BB_cyclic1
|
sideWallA_BB_cyclic1
|
||||||
{
|
{
|
||||||
type cyclicGgi;
|
type cyclicGgi;
|
||||||
}
|
}
|
||||||
sideWallA_BB_cyclic2
|
sideWallA_BB_cyclic2
|
||||||
{
|
{
|
||||||
type cyclicGgi;
|
type cyclicGgi;
|
||||||
}
|
}
|
||||||
defaultFaces
|
defaultFaces
|
||||||
{
|
{
|
||||||
type empty;
|
type empty;
|
||||||
}
|
}
|
||||||
} // ************************************************************************* //
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
|
|
||||||
|
|
|
@ -383,9 +383,9 @@ boundary
|
||||||
zone B_UPSTREAMZone;
|
zone B_UPSTREAMZone;
|
||||||
ribbonPatch
|
ribbonPatch
|
||||||
{
|
{
|
||||||
discretisation bothPatches;
|
discretisation bothPatches;
|
||||||
stackAxis R;
|
stackAxis R;
|
||||||
sweepAxis Theta;
|
sweepAxis Theta;
|
||||||
}
|
}
|
||||||
|
|
||||||
coordinateSystem
|
coordinateSystem
|
||||||
|
|
|
@ -64,15 +64,15 @@ boundary
|
||||||
|
|
||||||
frontBack
|
frontBack
|
||||||
{
|
{
|
||||||
type cyclic;
|
type cyclic;
|
||||||
faces
|
faces
|
||||||
(
|
(
|
||||||
(0 6 7 1)
|
(0 6 7 1)
|
||||||
(1 7 8 2)
|
(1 7 8 2)
|
||||||
|
|
||||||
(9 3 4 10)
|
(9 3 4 10)
|
||||||
(10 4 5 11)
|
(10 4 5 11)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -64,9 +64,9 @@ boundary
|
||||||
|
|
||||||
flow
|
flow
|
||||||
{
|
{
|
||||||
type cyclic;
|
type cyclic;
|
||||||
faces
|
faces
|
||||||
(
|
(
|
||||||
|
|
||||||
(0 6 7 1)
|
(0 6 7 1)
|
||||||
(1 7 8 2)
|
(1 7 8 2)
|
||||||
|
|
|
@ -8,13 +8,13 @@
|
||||||
FoamFile
|
FoamFile
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii; ;
|
format ascii;
|
||||||
class dictionary; ;
|
class dictionary;
|
||||||
object decomposeParDict; ;
|
object decomposeParDict;
|
||||||
}
|
}
|
||||||
numberOfSubdomains 4;
|
numberOfSubdomains 4;
|
||||||
|
|
||||||
method metis; //metis; //simple;
|
method metis; //metis; //simple;
|
||||||
|
|
||||||
globalFaceZones
|
globalFaceZones
|
||||||
(
|
(
|
||||||
|
@ -38,6 +38,6 @@ simpleCoeffs
|
||||||
distributed no;
|
distributed no;
|
||||||
|
|
||||||
roots
|
roots
|
||||||
(
|
(
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -8,13 +8,13 @@
|
||||||
FoamFile
|
FoamFile
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii; ;
|
format ascii;
|
||||||
class dictionary; ;
|
class dictionary;
|
||||||
object decomposeParDict; ;
|
object decomposeParDict;
|
||||||
}
|
}
|
||||||
numberOfSubdomains 4;
|
numberOfSubdomains 4;
|
||||||
|
|
||||||
method manual; //metis; //simple;
|
method manual; //metis; //simple;
|
||||||
|
|
||||||
globalFaceZones (
|
globalFaceZones (
|
||||||
ggi1DomAZone
|
ggi1DomAZone
|
||||||
|
@ -35,6 +35,6 @@ simpleCoeffs
|
||||||
distributed no;
|
distributed no;
|
||||||
|
|
||||||
roots
|
roots
|
||||||
(
|
(
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ divSchemes
|
||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
div(phi,U) Gauss linearUpwind Gauss; //upwind;
|
div(phi,U) Gauss linearUpwind Gauss; //upwind;
|
||||||
div((nuEff*dev(grad(U).T()))) Gauss linear;
|
div((nuEff*dev(grad(U).T()))) Gauss linear;
|
||||||
div(phi,epsilon) Gauss upwind;
|
div(phi,epsilon) Gauss upwind;
|
||||||
div(phi,k) Gauss upwind;
|
div(phi,k) Gauss upwind;
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ laplacianSchemes
|
||||||
laplacian((1|A(U)),p) Gauss linear corrected;
|
laplacian((1|A(U)),p) Gauss linear corrected;
|
||||||
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
||||||
laplacian(DkEff,k) Gauss linear corrected;
|
laplacian(DkEff,k) Gauss linear corrected;
|
||||||
laplacian(1,p) Gauss linear corrected;
|
laplacian(1,p) Gauss linear corrected;
|
||||||
}
|
}
|
||||||
|
|
||||||
interpolationSchemes
|
interpolationSchemes
|
||||||
|
|
|
@ -16,21 +16,21 @@ FoamFile
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
application ;
|
application ;
|
||||||
deltaT 1;
|
deltaT 1;
|
||||||
endTime 50;
|
endTime 50;
|
||||||
graphFormat raw;
|
graphFormat raw;
|
||||||
purgeWrite 0;
|
purgeWrite 0;
|
||||||
runTimeModifiable yes;
|
runTimeModifiable yes;
|
||||||
startFrom startTime;
|
startFrom startTime;
|
||||||
startTime 0;
|
startTime 0;
|
||||||
stopAt endTime;
|
stopAt endTime;
|
||||||
timeFormat general;
|
timeFormat general;
|
||||||
timePrecision 6;
|
timePrecision 6;
|
||||||
writeCompression uncompressed;
|
writeCompression uncompressed;
|
||||||
writeControl timeStep;
|
writeControl timeStep;
|
||||||
writeFormat ascii;
|
writeFormat ascii;
|
||||||
writeInterval 20;
|
writeInterval 20;
|
||||||
writePrecision 6;
|
writePrecision 6;
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
|
@ -8,18 +8,18 @@
|
||||||
|
|
||||||
FoamFile
|
FoamFile
|
||||||
{
|
{
|
||||||
version 2;
|
version 2;
|
||||||
format ascii;
|
format ascii;
|
||||||
class dictionary;
|
class dictionary;
|
||||||
location "system";
|
location "system";
|
||||||
object meshDict;
|
object meshDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
maxCellSize 0.01;
|
maxCellSize 0.01;
|
||||||
|
|
||||||
surfaceFile "geom.fms";
|
surfaceFile "geom.fms";
|
||||||
|
|
||||||
boundaryLayers
|
boundaryLayers
|
||||||
{
|
{
|
||||||
|
|
|
@ -48,8 +48,8 @@ boundaryLayers
|
||||||
|
|
||||||
renameBoundary
|
renameBoundary
|
||||||
{
|
{
|
||||||
defaultName fixedWalls;
|
defaultName fixedWalls;
|
||||||
defaultType wall;
|
defaultType wall;
|
||||||
|
|
||||||
newPatchNames
|
newPatchNames
|
||||||
{
|
{
|
||||||
|
|
|
@ -64,7 +64,7 @@ boundaryLayers
|
||||||
allowDiscontinuity 0;
|
allowDiscontinuity 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
"fixedWalls.*"
|
"fixedWalls.*"
|
||||||
{
|
{
|
||||||
nLayers 4;
|
nLayers 4;
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ boundaryLayers
|
||||||
allowDiscontinuity 0;
|
allowDiscontinuity 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
"tubes.*"
|
"tubes.*"
|
||||||
{
|
{
|
||||||
nLayers 4;
|
nLayers 4;
|
||||||
|
|
||||||
|
@ -90,8 +90,8 @@ boundaryLayers
|
||||||
|
|
||||||
renameBoundary
|
renameBoundary
|
||||||
{
|
{
|
||||||
defaultName fixedWalls;
|
defaultName fixedWalls;
|
||||||
defaultType wall;
|
defaultType wall;
|
||||||
|
|
||||||
newPatchNames
|
newPatchNames
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,21 +16,21 @@ FoamFile
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
application ;
|
application ;
|
||||||
deltaT 0.001;
|
deltaT 0.001;
|
||||||
endTime 2;
|
endTime 2;
|
||||||
graphFormat raw;
|
graphFormat raw;
|
||||||
purgeWrite 0;
|
purgeWrite 0;
|
||||||
runTimeModifiable yes;
|
runTimeModifiable yes;
|
||||||
startFrom latestTime;
|
startFrom latestTime;
|
||||||
startTime 0;
|
startTime 0;
|
||||||
stopAt endTime;
|
stopAt endTime;
|
||||||
timeFormat general;
|
timeFormat general;
|
||||||
timePrecision 6;
|
timePrecision 6;
|
||||||
writeCompression compressed;
|
writeCompression compressed;
|
||||||
writeControl timeStep;
|
writeControl timeStep;
|
||||||
writeFormat binary;
|
writeFormat binary;
|
||||||
writeInterval 100;
|
writeInterval 100;
|
||||||
writePrecision 6;
|
writePrecision 6;
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
|
@ -17,21 +17,21 @@ FoamFile
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
maxCellSize 0.1;
|
maxCellSize 0.1;
|
||||||
|
|
||||||
surfaceFile "sBend.fms";
|
surfaceFile "sBend.fms";
|
||||||
|
|
||||||
boundaryLayers
|
boundaryLayers
|
||||||
{
|
{
|
||||||
nLayers 1;
|
nLayers 1;
|
||||||
|
|
||||||
patchBoundaryLayers
|
patchBoundaryLayers
|
||||||
{
|
{
|
||||||
|
|
||||||
walls
|
walls
|
||||||
{
|
{
|
||||||
nLayers 3;
|
nLayers 3;
|
||||||
thicknessRatio 1.2;
|
thicknessRatio 1.2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,12 +41,12 @@ localRefinement
|
||||||
|
|
||||||
refFine
|
refFine
|
||||||
{
|
{
|
||||||
cellSize 0.025;
|
cellSize 0.025;
|
||||||
}
|
}
|
||||||
|
|
||||||
walls
|
walls
|
||||||
{
|
{
|
||||||
cellSize 0.05;
|
cellSize 0.05;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,36 +17,36 @@ FoamFile
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
application ;
|
application ;
|
||||||
|
|
||||||
deltaT 0.05;
|
deltaT 0.05;
|
||||||
|
|
||||||
endTime 10;
|
endTime 10;
|
||||||
|
|
||||||
graphFormat raw;
|
graphFormat raw;
|
||||||
|
|
||||||
purgeWrite 0;
|
purgeWrite 0;
|
||||||
|
|
||||||
runTimeModifiable yes;
|
runTimeModifiable yes;
|
||||||
|
|
||||||
startFrom latestTime;
|
startFrom latestTime;
|
||||||
|
|
||||||
startTime 0;
|
startTime 0;
|
||||||
|
|
||||||
stopAt endTime;
|
stopAt endTime;
|
||||||
|
|
||||||
timeFormat general;
|
timeFormat general;
|
||||||
|
|
||||||
timePrecision 6;
|
timePrecision 6;
|
||||||
|
|
||||||
writeCompression uncompressed;
|
writeCompression uncompressed;
|
||||||
|
|
||||||
writeControl timeStep;
|
writeControl timeStep;
|
||||||
|
|
||||||
writeFormat ascii;
|
writeFormat ascii;
|
||||||
|
|
||||||
writeInterval 20;
|
writeInterval 20;
|
||||||
|
|
||||||
writePrecision 6;
|
writePrecision 6;
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
|
@ -54,7 +54,7 @@ boundaryLayers
|
||||||
allowDiscontinuity 0;
|
allowDiscontinuity 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
"fixedWalls.*"
|
"fixedWalls.*"
|
||||||
{
|
{
|
||||||
nLayers 4;
|
nLayers 4;
|
||||||
|
|
||||||
|
@ -69,15 +69,15 @@ boundaryLayers
|
||||||
|
|
||||||
renameBoundary
|
renameBoundary
|
||||||
{
|
{
|
||||||
defaultName fixedWalls;
|
defaultName fixedWalls;
|
||||||
defaultType wall;
|
defaultType wall;
|
||||||
|
|
||||||
newPatchNames
|
newPatchNames
|
||||||
{
|
{
|
||||||
"orificeRegion.*"
|
"orificeRegion.*"
|
||||||
{
|
{
|
||||||
newName orificeRegion;
|
newName orificeRegion;
|
||||||
newType wall;
|
newType wall;
|
||||||
}
|
}
|
||||||
|
|
||||||
"inlet.*"
|
"inlet.*"
|
||||||
|
|
|
@ -17,28 +17,28 @@ FoamFile
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
boundaryCellSize 1.5;
|
boundaryCellSize 1.5;
|
||||||
keepCellsIntersectingBoundary 1;
|
keepCellsIntersectingBoundary 1;
|
||||||
maxCellSize 3;
|
maxCellSize 3;
|
||||||
minCellSize 0.375;
|
minCellSize 0.375;
|
||||||
removeGluedMesh 0;
|
removeGluedMesh 0;
|
||||||
surfaceFile "socket.fms";
|
surfaceFile "socket.fms";
|
||||||
|
|
||||||
boundaryLayers
|
boundaryLayers
|
||||||
{
|
{
|
||||||
maxFirstLayerThickness 0.5;
|
maxFirstLayerThickness 0.5;
|
||||||
nLayers 3;
|
nLayers 3;
|
||||||
thicknessRatio 1.2;
|
thicknessRatio 1.2;
|
||||||
|
|
||||||
patchBoundaryLayers
|
patchBoundaryLayers
|
||||||
{
|
{
|
||||||
|
|
||||||
patch7
|
patch7
|
||||||
{
|
{
|
||||||
allowDiscontinuity 0;
|
allowDiscontinuity 0;
|
||||||
maxFirstLayerThickness 0.5;
|
maxFirstLayerThickness 0.5;
|
||||||
nLayers 4;
|
nLayers 4;
|
||||||
thicknessRatio 1.1;
|
thicknessRatio 1.1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,17 +48,17 @@ localRefinement
|
||||||
|
|
||||||
patch15
|
patch15
|
||||||
{
|
{
|
||||||
additionalRefinementLevels 1;
|
additionalRefinementLevels 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
subset1
|
subset1
|
||||||
{
|
{
|
||||||
cellSize 1.5;
|
cellSize 1.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
subset2
|
subset2
|
||||||
{
|
{
|
||||||
cellSize 1.5;
|
cellSize 1.5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,16 +24,16 @@ boundaryField
|
||||||
bottomLoading
|
bottomLoading
|
||||||
{
|
{
|
||||||
type timeVaryingFixedDisplacement;
|
type timeVaryingFixedDisplacement;
|
||||||
fileName "$FOAM_CASE/constant/timeVsBottomDisp";
|
fileName "$FOAM_CASE/constant/timeVsBottomDisp";
|
||||||
outOfBounds clamp;
|
outOfBounds clamp;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
topLoading
|
topLoading
|
||||||
{
|
{
|
||||||
type timeVaryingFixedDisplacement;
|
type timeVaryingFixedDisplacement;
|
||||||
fileName "$FOAM_CASE/constant/timeVsTopDisp";
|
fileName "$FOAM_CASE/constant/timeVsTopDisp";
|
||||||
outOfBounds clamp;
|
outOfBounds clamp;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,16 +24,16 @@ boundaryField
|
||||||
bottomLoading
|
bottomLoading
|
||||||
{
|
{
|
||||||
type timeVaryingFixedDisplacement;
|
type timeVaryingFixedDisplacement;
|
||||||
fileName "$FOAM_CASE/constant/timeVsBottomDisp";
|
fileName "$FOAM_CASE/constant/timeVsBottomDisp";
|
||||||
outOfBounds clamp;
|
outOfBounds clamp;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
topLoading
|
topLoading
|
||||||
{
|
{
|
||||||
type timeVaryingFixedDisplacement;
|
type timeVaryingFixedDisplacement;
|
||||||
fileName "$FOAM_CASE/constant/timeVsTopDisp";
|
fileName "$FOAM_CASE/constant/timeVsTopDisp";
|
||||||
outOfBounds clamp;
|
outOfBounds clamp;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
(
|
(
|
||||||
( 0 (0 0 0) )
|
( 0 (0 0 0) )
|
||||||
( 100 (0 -1e-4 0) )
|
( 100 (0 -1e-4 0) )
|
||||||
)
|
)
|
|
@ -1,4 +1,4 @@
|
||||||
(
|
(
|
||||||
( 0 (0 0 0) )
|
( 0 (0 0 0) )
|
||||||
( 100 (0 1e-4 0) )
|
( 100 (0 1e-4 0) )
|
||||||
)
|
)
|
|
@ -40,8 +40,8 @@ solidMechanics
|
||||||
infoFrequency 100;
|
infoFrequency 100;
|
||||||
aitkenRelaxation yes;
|
aitkenRelaxation yes;
|
||||||
crackLimitingBoxes 1(
|
crackLimitingBoxes 1(
|
||||||
(0 -1e-5 0)(0.06 1e-5 1)
|
(0 -1e-5 0)(0.06 1e-5 1)
|
||||||
);
|
);
|
||||||
crackPropagationFromSpecifiedPatches no;
|
crackPropagationFromSpecifiedPatches no;
|
||||||
crackPropagationPatches 1(crack);
|
crackPropagationPatches 1(crack);
|
||||||
dynamicTimeStep no;
|
dynamicTimeStep no;
|
||||||
|
|
|
@ -24,7 +24,7 @@ regions
|
||||||
(
|
(
|
||||||
boxToCell
|
boxToCell
|
||||||
{
|
{
|
||||||
box (0 0 0) (1 1 1);
|
box (0 0 0) (1 1 1);
|
||||||
|
|
||||||
fieldValues
|
fieldValues
|
||||||
(
|
(
|
||||||
|
@ -33,7 +33,7 @@ regions
|
||||||
}
|
}
|
||||||
boxToCell
|
boxToCell
|
||||||
{
|
{
|
||||||
box (0.03 -1 -1) (0.06 1 1);
|
box (0.03 -1 -1) (0.06 1 1);
|
||||||
|
|
||||||
fieldValues
|
fieldValues
|
||||||
(
|
(
|
||||||
|
|
|
@ -24,16 +24,16 @@ boundaryField
|
||||||
bottomLoading
|
bottomLoading
|
||||||
{
|
{
|
||||||
type timeVaryingFixedDisplacement;
|
type timeVaryingFixedDisplacement;
|
||||||
fileName "$FOAM_CASE/constant/timeVsBottomDisp";
|
fileName "$FOAM_CASE/constant/timeVsBottomDisp";
|
||||||
outOfBounds clamp;
|
outOfBounds clamp;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
topLoading
|
topLoading
|
||||||
{
|
{
|
||||||
type timeVaryingFixedDisplacement;
|
type timeVaryingFixedDisplacement;
|
||||||
fileName "$FOAM_CASE/constant/timeVsTopDisp";
|
fileName "$FOAM_CASE/constant/timeVsTopDisp";
|
||||||
outOfBounds clamp;
|
outOfBounds clamp;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,16 +24,16 @@ boundaryField
|
||||||
bottomLoading
|
bottomLoading
|
||||||
{
|
{
|
||||||
type timeVaryingFixedDisplacement;
|
type timeVaryingFixedDisplacement;
|
||||||
fileName "$FOAM_CASE/constant/timeVsBottomDisp";
|
fileName "$FOAM_CASE/constant/timeVsBottomDisp";
|
||||||
outOfBounds clamp;
|
outOfBounds clamp;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
topLoading
|
topLoading
|
||||||
{
|
{
|
||||||
type timeVaryingFixedDisplacement;
|
type timeVaryingFixedDisplacement;
|
||||||
fileName "$FOAM_CASE/constant/timeVsTopDisp";
|
fileName "$FOAM_CASE/constant/timeVsTopDisp";
|
||||||
outOfBounds clamp;
|
outOfBounds clamp;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
(
|
(
|
||||||
( 0 (0 0 0) )
|
( 0 (0 0 0) )
|
||||||
( 100 (0 -1e-4 0) )
|
( 100 (0 -1e-4 0) )
|
||||||
)
|
)
|
|
@ -1,4 +1,4 @@
|
||||||
(
|
(
|
||||||
( 0 (0 0 0) )
|
( 0 (0 0 0) )
|
||||||
( 100 (0 1e-4 0) )
|
( 100 (0 1e-4 0) )
|
||||||
)
|
)
|
|
@ -40,8 +40,8 @@ solidMechanics
|
||||||
infoFrequency 100;
|
infoFrequency 100;
|
||||||
aitkenRelaxation yes;
|
aitkenRelaxation yes;
|
||||||
crackLimitingBoxes 1(
|
crackLimitingBoxes 1(
|
||||||
(0 -1e-5 0)(0.06 1e-5 1)
|
(0 -1e-5 0)(0.06 1e-5 1)
|
||||||
);
|
);
|
||||||
crackPropagationFromSpecifiedPatches no;
|
crackPropagationFromSpecifiedPatches no;
|
||||||
crackPropagationPatches 1(crack);
|
crackPropagationPatches 1(crack);
|
||||||
dynamicTimeStep no;
|
dynamicTimeStep no;
|
||||||
|
|
|
@ -24,7 +24,7 @@ regions
|
||||||
(
|
(
|
||||||
boxToCell
|
boxToCell
|
||||||
{
|
{
|
||||||
box (0 0 0) (1 1 1);
|
box (0 0 0) (1 1 1);
|
||||||
|
|
||||||
fieldValues
|
fieldValues
|
||||||
(
|
(
|
||||||
|
@ -33,7 +33,7 @@ regions
|
||||||
}
|
}
|
||||||
boxToCell
|
boxToCell
|
||||||
{
|
{
|
||||||
box (0.03 -1 -1) (0.06 1 1);
|
box (0.03 -1 -1) (0.06 1 1);
|
||||||
|
|
||||||
fieldValues
|
fieldValues
|
||||||
(
|
(
|
||||||
|
|
|
@ -30,8 +30,8 @@ boundaryField
|
||||||
top
|
top
|
||||||
{
|
{
|
||||||
type timeVaryingFixedDisplacement;
|
type timeVaryingFixedDisplacement;
|
||||||
fileName "$FOAM_CASE/constant/timeVsTopDisp";
|
fileName "$FOAM_CASE/constant/timeVsTopDisp";
|
||||||
outOfBounds clamp;
|
outOfBounds clamp;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,8 +30,8 @@ boundaryField
|
||||||
top
|
top
|
||||||
{
|
{
|
||||||
type timeVaryingFixedDisplacement;
|
type timeVaryingFixedDisplacement;
|
||||||
fileName "$FOAM_CASE/constant/timeVsTopDisp";
|
fileName "$FOAM_CASE/constant/timeVsTopDisp";
|
||||||
outOfBounds clamp;
|
outOfBounds clamp;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
(
|
(
|
||||||
( 0 (0 0 0) )
|
( 0 (0 0 0) )
|
||||||
( 100 (0 0 0) )
|
( 100 (0 0 0) )
|
||||||
)
|
)
|
|
@ -1,5 +1,5 @@
|
||||||
(
|
(
|
||||||
( 0 (0 0 0) )
|
( 0 (0 0 0) )
|
||||||
( 10 (0 -1e-5 0) )
|
( 10 (0 -1e-5 0) )
|
||||||
( 100 (1e-4 -1e-5 0) )
|
( 100 (1e-4 -1e-5 0) )
|
||||||
)
|
)
|
|
@ -40,8 +40,8 @@ solidMechanics
|
||||||
infoFrequency 100;
|
infoFrequency 100;
|
||||||
aitkenRelaxation yes;
|
aitkenRelaxation yes;
|
||||||
crackLimitingBoxes 1(
|
crackLimitingBoxes 1(
|
||||||
(0 -1e-5 0)(0.06 1e-5 1)
|
(0 -1e-5 0)(0.06 1e-5 1)
|
||||||
);
|
);
|
||||||
crackPropagationFromSpecifiedPatches no;
|
crackPropagationFromSpecifiedPatches no;
|
||||||
crackPropagationPatches 1(crack);
|
crackPropagationPatches 1(crack);
|
||||||
dynamicTimeStep no;
|
dynamicTimeStep no;
|
||||||
|
|
|
@ -24,7 +24,7 @@ regions
|
||||||
(
|
(
|
||||||
boxToCell
|
boxToCell
|
||||||
{
|
{
|
||||||
box (0 0 0) (1 1 1);
|
box (0 0 0) (1 1 1);
|
||||||
|
|
||||||
fieldValues
|
fieldValues
|
||||||
(
|
(
|
||||||
|
|
|
@ -24,16 +24,16 @@ boundaryField
|
||||||
bottomLoading
|
bottomLoading
|
||||||
{
|
{
|
||||||
type timeVaryingFixedDisplacement;
|
type timeVaryingFixedDisplacement;
|
||||||
fileName "$FOAM_CASE/constant/timeVsBottomDisp";
|
fileName "$FOAM_CASE/constant/timeVsBottomDisp";
|
||||||
outOfBounds clamp;
|
outOfBounds clamp;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
topLoading
|
topLoading
|
||||||
{
|
{
|
||||||
type timeVaryingFixedDisplacement;
|
type timeVaryingFixedDisplacement;
|
||||||
fileName "$FOAM_CASE/constant/timeVsTopDisp";
|
fileName "$FOAM_CASE/constant/timeVsTopDisp";
|
||||||
outOfBounds clamp;
|
outOfBounds clamp;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,16 +24,16 @@ boundaryField
|
||||||
bottomLoading
|
bottomLoading
|
||||||
{
|
{
|
||||||
type timeVaryingFixedDisplacement;
|
type timeVaryingFixedDisplacement;
|
||||||
fileName "$FOAM_CASE/constant/timeVsBottomDisp";
|
fileName "$FOAM_CASE/constant/timeVsBottomDisp";
|
||||||
outOfBounds clamp;
|
outOfBounds clamp;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
topLoading
|
topLoading
|
||||||
{
|
{
|
||||||
type timeVaryingFixedDisplacement;
|
type timeVaryingFixedDisplacement;
|
||||||
fileName "$FOAM_CASE/constant/timeVsTopDisp";
|
fileName "$FOAM_CASE/constant/timeVsTopDisp";
|
||||||
outOfBounds clamp;
|
outOfBounds clamp;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
(
|
(
|
||||||
( 0 (0 0 0) )
|
( 0 (0 0 0) )
|
||||||
( 100 (-1e-4 -1e-4 0) )
|
( 100 (-1e-4 -1e-4 0) )
|
||||||
)
|
)
|
|
@ -1,4 +1,4 @@
|
||||||
(
|
(
|
||||||
( 0 (0 0 0) )
|
( 0 (0 0 0) )
|
||||||
( 100 (1e-4 1e-4 0) )
|
( 100 (1e-4 1e-4 0) )
|
||||||
)
|
)
|
|
@ -40,8 +40,8 @@ solidMechanics
|
||||||
infoFrequency 100;
|
infoFrequency 100;
|
||||||
aitkenRelaxation yes;
|
aitkenRelaxation yes;
|
||||||
crackLimitingBoxes 1(
|
crackLimitingBoxes 1(
|
||||||
(0 -1e-5 0)(0.06 1e-5 1)
|
(0 -1e-5 0)(0.06 1e-5 1)
|
||||||
);
|
);
|
||||||
crackPropagationFromSpecifiedPatches no;
|
crackPropagationFromSpecifiedPatches no;
|
||||||
crackPropagationPatches 1(crack);
|
crackPropagationPatches 1(crack);
|
||||||
dynamicTimeStep no;
|
dynamicTimeStep no;
|
||||||
|
|
|
@ -25,7 +25,7 @@ regions
|
||||||
(
|
(
|
||||||
boxToCell
|
boxToCell
|
||||||
{
|
{
|
||||||
box (0 0 0) (1 1 1);
|
box (0 0 0) (1 1 1);
|
||||||
|
|
||||||
fieldValues
|
fieldValues
|
||||||
(
|
(
|
||||||
|
@ -34,7 +34,7 @@ regions
|
||||||
}
|
}
|
||||||
boxToCell
|
boxToCell
|
||||||
{
|
{
|
||||||
box (0 -0.002 -1) (1 0.002 1);
|
box (0 -0.002 -1) (1 0.002 1);
|
||||||
|
|
||||||
fieldValues
|
fieldValues
|
||||||
(
|
(
|
||||||
|
|
|
@ -32,53 +32,54 @@ boundaryField
|
||||||
bottomBrickUp
|
bottomBrickUp
|
||||||
{
|
{
|
||||||
type solidContact;
|
type solidContact;
|
||||||
master yes;
|
master yes;
|
||||||
contactActive yes;
|
contactActive yes;
|
||||||
rigidMaster no;
|
rigidMaster no;
|
||||||
shadowPatch topBrickDown;
|
shadowPatch topBrickDown;
|
||||||
interpolationMethod ggi;
|
interpolationMethod ggi;
|
||||||
//interpolationMethod patchToPatch;
|
//interpolationMethod patchToPatch;
|
||||||
projectionAlgo visible;
|
projectionAlgo visible;
|
||||||
projectionDir contactSphere;
|
projectionDir contactSphere;
|
||||||
correctionFrequency 10;
|
correctionFrequency 10;
|
||||||
normalContactModel standardPenalty;;
|
normalContactModel standardPenalty;;
|
||||||
standardPenaltyNormalModelDict
|
standardPenaltyNormalModelDict
|
||||||
{
|
{
|
||||||
penaltyScale 1;
|
penaltyScale 1;
|
||||||
relaxationFactor 0.01;
|
relaxationFactor 0.01;
|
||||||
infoFrequency 10;
|
infoFrequency 10;
|
||||||
limitPenetration no;
|
limitPenetration no;
|
||||||
penetrationLimit -0.03;
|
penetrationLimit -0.03;
|
||||||
limitPressure no;
|
limitPressure no;
|
||||||
pressureLimit 1e9;
|
pressureLimit 1e9;
|
||||||
correctMissedVertices yes;
|
correctMissedVertices yes;
|
||||||
distanceMethod point;
|
distanceMethod point;
|
||||||
oscillationCorrection yes;
|
oscillationCorrection yes;
|
||||||
smoothingSteps 1;
|
smoothingSteps 1;
|
||||||
}
|
}
|
||||||
frictionContactModel standardPenalty;
|
frictionContactModel standardPenalty;
|
||||||
standardPenaltyFrictionModelDict
|
standardPenaltyFrictionModelDict
|
||||||
{
|
{
|
||||||
penaltyScale 0.5;
|
penaltyScale 0.5;
|
||||||
relaxationFactor 0.1;
|
relaxationFactor 0.1;
|
||||||
infoFrequency 10;
|
infoFrequency 10;
|
||||||
oscillationCorrection yes;
|
oscillationCorrection yes;
|
||||||
smoothingSteps 1;
|
smoothingSteps 1;
|
||||||
frictionLaw coulomb;
|
frictionLaw coulomb;
|
||||||
frictionLawDict
|
frictionLawDict
|
||||||
{
|
{
|
||||||
frictionCoeff 0.3;
|
frictionCoeff 0.3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
value uniform (0 0 0);
|
|
||||||
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
topBrickDown
|
topBrickDown
|
||||||
{
|
{
|
||||||
type solidContact;
|
type solidContact;
|
||||||
master no;
|
master no;
|
||||||
contactActive yes;
|
contactActive yes;
|
||||||
shadowPatch bottomBrickUp;
|
shadowPatch bottomBrickUp;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,7 +114,7 @@ boundaryField
|
||||||
topBrickRight
|
topBrickRight
|
||||||
{
|
{
|
||||||
type solidTraction;
|
type solidTraction;
|
||||||
traction uniform ( 0 0 0 );
|
traction uniform ( 0 0 0 );
|
||||||
pressure uniform 0;
|
pressure uniform 0;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
(
|
(
|
||||||
(0 (0 -1e-4 0))
|
(0 (0 -1e-4 0))
|
||||||
(100 (4e-2 -1e-4 0))
|
(100 (4e-2 -1e-4 0))
|
||||||
)
|
)
|
|
@ -22,42 +22,42 @@ internalField uniform (0 0 0);
|
||||||
boundaryField
|
boundaryField
|
||||||
{
|
{
|
||||||
left
|
left
|
||||||
{
|
{
|
||||||
type fixedDisplacement;
|
type fixedDisplacement;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
right
|
right
|
||||||
{
|
{
|
||||||
type solidTraction;
|
type solidTraction;
|
||||||
nonLinear totalLagrangian;
|
nonLinear totalLagrangian;
|
||||||
traction uniform (0 -1e8 0);
|
traction uniform (0 -1e8 0);
|
||||||
pressure uniform 0;
|
pressure uniform 0;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
top
|
top
|
||||||
{
|
{
|
||||||
type solidTraction;
|
type solidTraction;
|
||||||
nonLinear totalLagrangian;
|
nonLinear totalLagrangian;
|
||||||
traction uniform (0 0 0);
|
traction uniform (0 0 0);
|
||||||
pressure uniform 0;
|
pressure uniform 0;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bottom
|
bottom
|
||||||
{
|
{
|
||||||
type solidTraction;
|
type solidTraction;
|
||||||
nonLinear totalLagrangian;
|
nonLinear totalLagrangian;
|
||||||
traction uniform (0 0 0);
|
traction uniform (0 0 0);
|
||||||
pressure uniform 0;
|
pressure uniform 0;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
frontAndBack
|
frontAndBack
|
||||||
{
|
{
|
||||||
type empty;
|
type empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
(
|
(
|
||||||
( 0 (0 0 0) )
|
( 0 (0 0 0) )
|
||||||
( 64 (0 0.4 0))
|
( 64 (0 0.4 0))
|
||||||
)
|
)
|
|
@ -1,4 +1,4 @@
|
||||||
(
|
(
|
||||||
( 0 (0 0 0) )
|
( 0 (0 0 0) )
|
||||||
( 64 (0 0.4 0))
|
( 64 (0 0.4 0))
|
||||||
)
|
)
|
|
@ -1,4 +1,4 @@
|
||||||
(
|
(
|
||||||
( 0 0 )
|
( 0 0 )
|
||||||
( 90 90 )
|
( 90 90 )
|
||||||
)
|
)
|
|
@ -1,4 +1,4 @@
|
||||||
(
|
(
|
||||||
( 0 0 )
|
( 0 0 )
|
||||||
( 90 90 )
|
( 90 90 )
|
||||||
)
|
)
|
|
@ -18,14 +18,14 @@ FoamFile
|
||||||
dimensions [0 0 0 0 0 0 0];
|
dimensions [0 0 0 0 0 0 0];
|
||||||
|
|
||||||
// internalField uniform ( 0.7071 0.7071 0
|
// internalField uniform ( 0.7071 0.7071 0
|
||||||
// -0.7071 0.7071 0
|
// -0.7071 0.7071 0
|
||||||
// 0 0 1 );
|
// 0 0 1 );
|
||||||
// internalField uniform ( 0 1 0
|
// internalField uniform ( 0 1 0
|
||||||
// -1 0 0
|
// -1 0 0
|
||||||
// 0 0 1 );
|
// 0 0 1 );
|
||||||
internalField uniform ( 1 0 0
|
internalField uniform ( 1 0 0
|
||||||
0 1 0
|
0 1 0
|
||||||
0 0 1 );
|
0 0 1 );
|
||||||
|
|
||||||
boundaryField
|
boundaryField
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
(
|
(
|
||||||
(0 0)
|
(0 0)
|
||||||
(9.9 0)
|
(9.9 0)
|
||||||
(9.99 1)
|
(9.99 1)
|
||||||
(360 1)
|
(360 1)
|
||||||
)
|
)
|
|
@ -18,8 +18,8 @@ FoamFile
|
||||||
dimensions [0 0 0 0 0 0 0];
|
dimensions [0 0 0 0 0 0 0];
|
||||||
|
|
||||||
internalField uniform ( 1 0 0
|
internalField uniform ( 1 0 0
|
||||||
0 1 0
|
0 1 0
|
||||||
0 0 1 );
|
0 0 1 );
|
||||||
|
|
||||||
boundaryField
|
boundaryField
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,8 +18,8 @@ FoamFile
|
||||||
dimensions [0 0 0 0 0 0 0];
|
dimensions [0 0 0 0 0 0 0];
|
||||||
|
|
||||||
internalField uniform ( 1 0 0
|
internalField uniform ( 1 0 0
|
||||||
0 1 0
|
0 1 0
|
||||||
0 0 1 );
|
0 0 1 );
|
||||||
|
|
||||||
boundaryField
|
boundaryField
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,23 +18,23 @@ convertToMeters 1;
|
||||||
|
|
||||||
vertices
|
vertices
|
||||||
(
|
(
|
||||||
(0 0 0) //0
|
(0 0 0) //0
|
||||||
(1 0 0) //1
|
(1 0 0) //1
|
||||||
(0 0.5 0) //2
|
(0 0.5 0) //2
|
||||||
(1 0.5 0) //3
|
(1 0.5 0) //3
|
||||||
(0 0.51 0) //4
|
(0 0.51 0) //4
|
||||||
(1 0.51 0) //5
|
(1 0.51 0) //5
|
||||||
(0 1 0) //6
|
(0 1 0) //6
|
||||||
(1 1 0) //7
|
(1 1 0) //7
|
||||||
|
|
||||||
(0 0 0.1) //8
|
(0 0 0.1) //8
|
||||||
(1 0 0.1) //9
|
(1 0 0.1) //9
|
||||||
(0 0.5 0.1) //10
|
(0 0.5 0.1) //10
|
||||||
(1 0.5 0.1) //11
|
(1 0.5 0.1) //11
|
||||||
(0 0.51 0.1) //12
|
(0 0.51 0.1) //12
|
||||||
(1 0.51 0.1) //13
|
(1 0.51 0.1) //13
|
||||||
(0 1 0.1) //14
|
(0 1 0.1) //14
|
||||||
(1 1 0.1) //15
|
(1 1 0.1) //15
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -55,38 +55,38 @@ patches
|
||||||
(
|
(
|
||||||
( 0 1 3 2)
|
( 0 1 3 2)
|
||||||
( 2 3 5 4)
|
( 2 3 5 4)
|
||||||
( 4 5 7 6)
|
( 4 5 7 6)
|
||||||
)
|
)
|
||||||
|
|
||||||
empty back
|
empty back
|
||||||
(
|
(
|
||||||
( 8 9 11 10)
|
( 8 9 11 10)
|
||||||
(10 11 13 12)
|
(10 11 13 12)
|
||||||
(12 13 15 14)
|
(12 13 15 14)
|
||||||
)
|
)
|
||||||
|
|
||||||
patch left
|
patch left
|
||||||
(
|
(
|
||||||
( 0 2 10 8)
|
( 0 2 10 8)
|
||||||
( 2 4 12 10)
|
( 2 4 12 10)
|
||||||
( 4 6 14 12)
|
( 4 6 14 12)
|
||||||
)
|
)
|
||||||
|
|
||||||
patch bottom
|
patch bottom
|
||||||
(
|
(
|
||||||
( 0 1 9 8)
|
( 0 1 9 8)
|
||||||
)
|
)
|
||||||
|
|
||||||
patch right
|
patch right
|
||||||
(
|
(
|
||||||
( 1 3 11 9)
|
( 1 3 11 9)
|
||||||
( 3 5 13 11)
|
( 3 5 13 11)
|
||||||
( 5 7 15 13)
|
( 5 7 15 13)
|
||||||
)
|
)
|
||||||
|
|
||||||
patch top
|
patch top
|
||||||
(
|
(
|
||||||
( 6 7 15 14)
|
( 6 7 15 14)
|
||||||
)
|
)
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
|
@ -33,18 +33,18 @@ rheology
|
||||||
|
|
||||||
composite
|
composite
|
||||||
{
|
{
|
||||||
type orthotropicLinearElastic;
|
type orthotropicLinearElastic;
|
||||||
rho rho [1 -3 0 0 0 0 0] 7854;
|
rho rho [1 -3 0 0 0 0 0] 7854;
|
||||||
Ex Ex [1 -1 -2 0 0 0 0] 200e+9;
|
Ex Ex [1 -1 -2 0 0 0 0] 200e+9;
|
||||||
Ey Ey [1 -1 -2 0 0 0 0] 200e+9;
|
Ey Ey [1 -1 -2 0 0 0 0] 200e+9;
|
||||||
Ez Ez [1 -1 -2 0 0 0 0] 200e+9;
|
Ez Ez [1 -1 -2 0 0 0 0] 200e+9;
|
||||||
nuxy nuxy [0 0 0 0 0 0 0] 0.3;
|
nuxy nuxy [0 0 0 0 0 0 0] 0.3;
|
||||||
nuyz nuyz [0 0 0 0 0 0 0] 0.3;
|
nuyz nuyz [0 0 0 0 0 0 0] 0.3;
|
||||||
nuzx nuzx [0 0 0 0 0 0 0] 0.3;
|
nuzx nuzx [0 0 0 0 0 0 0] 0.3;
|
||||||
Gxy Gxy [1 -1 -2 0 0 0 0] 76.923076923e9;
|
Gxy Gxy [1 -1 -2 0 0 0 0] 76.923076923e9;
|
||||||
Gyz Gyz [1 -1 -2 0 0 0 0] 76.923076923e9;
|
Gyz Gyz [1 -1 -2 0 0 0 0] 76.923076923e9;
|
||||||
Gzx Gzx [1 -1 -2 0 0 0 0] 76.923076923e9;
|
Gzx Gzx [1 -1 -2 0 0 0 0] 76.923076923e9;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
(
|
(
|
||||||
(0 (0 0 0))
|
(0 (0 0 0))
|
||||||
(10 (0 0.01 0))
|
(10 (0 0.01 0))
|
||||||
)
|
)
|
|
@ -18,8 +18,8 @@ FoamFile
|
||||||
dimensions [0 0 0 0 0 0 0];
|
dimensions [0 0 0 0 0 0 0];
|
||||||
|
|
||||||
internalField uniform ( 1 0 0
|
internalField uniform ( 1 0 0
|
||||||
0 1 0
|
0 1 0
|
||||||
0 0 1 );
|
0 0 1 );
|
||||||
|
|
||||||
boundaryField
|
boundaryField
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,8 +18,8 @@ FoamFile
|
||||||
dimensions [0 0 0 0 0 0 0];
|
dimensions [0 0 0 0 0 0 0];
|
||||||
|
|
||||||
internalField uniform ( 1 0 0
|
internalField uniform ( 1 0 0
|
||||||
0 1 0
|
0 1 0
|
||||||
0 0 1 );
|
0 0 1 );
|
||||||
|
|
||||||
boundaryField
|
boundaryField
|
||||||
{
|
{
|
||||||
|
|
|
@ -33,18 +33,18 @@ rheology
|
||||||
|
|
||||||
composite
|
composite
|
||||||
{
|
{
|
||||||
type orthotropicLinearElastic;
|
type orthotropicLinearElastic;
|
||||||
rho rho [1 -3 0 0 0 0 0] 7854;
|
rho rho [1 -3 0 0 0 0 0] 7854;
|
||||||
Ex Ex [1 -1 -2 0 0 0 0] 200e+9;
|
Ex Ex [1 -1 -2 0 0 0 0] 200e+9;
|
||||||
Ey Ey [1 -1 -2 0 0 0 0] 200e+9;
|
Ey Ey [1 -1 -2 0 0 0 0] 200e+9;
|
||||||
Ez Ez [1 -1 -2 0 0 0 0] 200e+9;
|
Ez Ez [1 -1 -2 0 0 0 0] 200e+9;
|
||||||
nuxy nuxy [0 0 0 0 0 0 0] 0.3;
|
nuxy nuxy [0 0 0 0 0 0 0] 0.3;
|
||||||
nuyz nuyz [0 0 0 0 0 0 0] 0.3;
|
nuyz nuyz [0 0 0 0 0 0 0] 0.3;
|
||||||
nuzx nuzx [0 0 0 0 0 0 0] 0.3;
|
nuzx nuzx [0 0 0 0 0 0 0] 0.3;
|
||||||
Gxy Gxy [1 -1 -2 0 0 0 0] 76.923076923e9;
|
Gxy Gxy [1 -1 -2 0 0 0 0] 76.923076923e9;
|
||||||
Gyz Gyz [1 -1 -2 0 0 0 0] 76.923076923e9;
|
Gyz Gyz [1 -1 -2 0 0 0 0] 76.923076923e9;
|
||||||
Gzx Gzx [1 -1 -2 0 0 0 0] 76.923076923e9;
|
Gzx Gzx [1 -1 -2 0 0 0 0] 76.923076923e9;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
(
|
(
|
||||||
(0 (0 0 0))
|
(0 (0 0 0))
|
||||||
(10 (0 0.01 0))
|
(10 (0 0.01 0))
|
||||||
)
|
)
|
Some files were not shown because too many files have changed in this diff Show more
Reference in a new issue