diff --git a/README.html b/README.html
index 1e96c05e6a..18c3e0747e 100644
--- a/README.html
+++ b/README.html
@@ -102,7 +102,7 @@ lang="en" xml:lang="en">
-
OpenFOAM is a free, open source computational fluid dynamcis (CFD) software
+
OpenFOAM is a free, open source computational fluid dynamics (CFD) software
package released by the OpenFOAM Foundation. It has a large user base across
most areas of engineering and science, from both commercial and academic
organisations. OpenFOAM has an extensive range of features to solve anything
diff --git a/README.org b/README.org
index c107d87870..84fd18c0cf 100644
--- a/README.org
+++ b/README.org
@@ -8,7 +8,7 @@
# Copyright (c) 2011 OpenFOAM Foundation.
* About OpenFOAM
- OpenFOAM is a free, open source computational fluid dynamcis (CFD) software
+ OpenFOAM is a free, open source computational fluid dynamics (CFD) software
package released by the OpenFOAM Foundation. It has a large user base across
most areas of engineering and science, from both commercial and academic
organisations. OpenFOAM has an extensive range of features to solve anything
diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/EEqns.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/EEqns.H
index b9a47a917d..1f12fc9a12 100644
--- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/EEqns.H
+++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/EEqns.H
@@ -27,7 +27,7 @@
- (fvc::ddt(alpha1) + fvc::div(alphaPhi1))*K1
+ (
- he1.name() == "e"
+ he1.name() == thermo1.phasePropertyName("e")
? fvc::div(alphaPhi1, p)
: -dalpha1pdt
)/rho1
@@ -49,7 +49,7 @@
- (fvc::ddt(alpha2) + fvc::div(alphaPhi2))*K2
+ (
- he2.name() == "e"
+ he2.name() == thermo2.phasePropertyName("e")
? fvc::div(alphaPhi2, p)
: -dalpha2pdt
)/rho2
diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/UEqns.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/UEqns.H
index ce5c622f9a..ae22926c4e 100644
--- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/UEqns.H
+++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/UEqns.H
@@ -1,3 +1,7 @@
+mrfZones.correctBoundaryVelocity(U1);
+mrfZones.correctBoundaryVelocity(U2);
+mrfZones.correctBoundaryVelocity(U);
+
fvVectorMatrix U1Eqn(U1, U1.dimensions()*dimVol/dimTime);
fvVectorMatrix U2Eqn(U2, U2.dimensions()*dimVol/dimTime);
diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/alphaEqn.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/alphaEqn.H
index a20f53e014..601ff0e919 100644
--- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/alphaEqn.H
+++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/alphaEqn.H
@@ -104,6 +104,35 @@ surfaceScalarField alphaPhi2("alphaPhi" + phase2Name, phi2);
{
alphaPhi1 = alphaPhic1;
}
+
+ /*
+ // Legacy semi-implicit and potentially unbounded form
+ fvScalarMatrix alpha1Eqn
+ (
+ fvm::ddt(alpha1)
+ + fvm::div(phic, alpha1, alphaScheme)
+ + fvm::div
+ (
+ -fvc::flux(-phir, alpha2, alpharScheme),
+ alpha1,
+ alpharScheme
+ )
+ ==
+ fvm::Sp(Sp, alpha1) + Su
+ );
+
+ alpha1Eqn.relax();
+ alpha1Eqn.solve();
+
+ if (nAlphaSubCycles > 1)
+ {
+ alphaPhi1 += (runTime.deltaT()/totalDeltaT)*alpha1Eqn.flux();
+ }
+ else
+ {
+ alphaPhi1 = alpha1Eqn.flux();
+ }
+ */
}
if (g0.value() > 0.0)
diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/phaseModel/phaseModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/phaseModel/phaseModel.C
index 5dff309b57..112a302188 100644
--- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/phaseModel/phaseModel.C
+++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/phaseModel/phaseModel.C
@@ -26,6 +26,7 @@ License
#include "phaseModel.H"
#include "diameterModel.H"
#include "fixedValueFvPatchFields.H"
+#include "slipFvPatchFields.H"
#include "surfaceInterpolate.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
@@ -118,7 +119,11 @@ Foam::phaseModel::phaseModel
forAll(U_.boundaryField(), i)
{
- if (isA(U_.boundaryField()[i]))
+ if
+ (
+ isA(U_.boundaryField()[i])
+ || isA(U_.boundaryField()[i])
+ )
{
phiTypes[i] = fixedValueFvPatchScalarField::typeName;
}
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/UEqns.H b/applications/solvers/multiphase/multiphaseEulerFoam/UEqns.H
index a63ff3c85a..7584d84f27 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/UEqns.H
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/UEqns.H
@@ -1,3 +1,5 @@
+#include "mrfZonesCorrectBCs.H"
+
PtrList UEqns(fluid.phases().size());
autoPtr dragCoeffs(fluid.dragCoeffs());
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/mrfZonesCorrectBCs.H b/applications/solvers/multiphase/multiphaseEulerFoam/mrfZonesCorrectBCs.H
new file mode 100644
index 0000000000..d670aa4a41
--- /dev/null
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/mrfZonesCorrectBCs.H
@@ -0,0 +1,6 @@
+ forAllIter(PtrDictionary, fluid.phases(), iter)
+ {
+ mrfZones.correctBoundaryVelocity(iter().U());
+ }
+
+ mrfZones.correctBoundaryVelocity(U);
diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/phaseModel/phaseModel/phaseModel.C b/applications/solvers/multiphase/multiphaseEulerFoam/phaseModel/phaseModel/phaseModel.C
index 543927e29b..f74ef12513 100644
--- a/applications/solvers/multiphase/multiphaseEulerFoam/phaseModel/phaseModel/phaseModel.C
+++ b/applications/solvers/multiphase/multiphaseEulerFoam/phaseModel/phaseModel/phaseModel.C
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
- \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -26,6 +26,7 @@ License
#include "phaseModel.H"
#include "diameterModel.H"
#include "fixedValueFvPatchFields.H"
+#include "slipFvPatchFields.H"
#include "surfaceInterpolate.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
@@ -152,7 +153,11 @@ Foam::phaseModel::phaseModel
forAll(U_.boundaryField(), i)
{
- if (isA(U_.boundaryField()[i]))
+ if
+ (
+ isA(U_.boundaryField()[i])
+ || isA(U_.boundaryField()[i])
+ )
{
phiTypes[i] = fixedValueFvPatchScalarField::typeName;
}
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseModel/phaseModel/phaseModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseModel/phaseModel/phaseModel.C
index aebc7ba6cb..85ee12b316 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseModel/phaseModel/phaseModel.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseModel/phaseModel/phaseModel.C
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
- \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -25,6 +25,7 @@ License
#include "phaseModel.H"
#include "fixedValueFvPatchFields.H"
+#include "slipFvPatchFields.H"
#include "surfaceInterpolate.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
@@ -114,7 +115,11 @@ Foam::phaseModel::phaseModel
forAll(U_.boundaryField(), i)
{
- if (isA(U_.boundaryField()[i]))
+ if
+ (
+ isA(U_.boundaryField()[i])
+ || isA(U_.boundaryField()[i])
+ )
{
phiTypes[i] = fixedValueFvPatchScalarField::typeName;
}
diff --git a/applications/test/Matrix/Test-Matrix.C b/applications/test/Matrix/Test-Matrix.C
index 600d0ad60f..40e79d15e9 100644
--- a/applications/test/Matrix/Test-Matrix.C
+++ b/applications/test/Matrix/Test-Matrix.C
@@ -23,7 +23,7 @@ License
\*---------------------------------------------------------------------------*/
-#include "SquareMatrix.H"
+#include "scalarMatrices.H"
#include "vector.H"
using namespace Foam;
@@ -49,15 +49,15 @@ int main(int argc, char *argv[])
Info<< max(hmm) << endl;
Info<< min(hmm) << endl;
- SquareMatrix hmm2(3, 1.0);
+ SquareMatrix hmm2(3, 3, 1.0);
hmm = hmm2;
Info<< hmm << endl;
- SquareMatrix hmm3(Sin);
+ //SquareMatrix hmm3(Sin);
- Info<< hmm3 << endl;
+ //Info<< hmm3 << endl;
SquareMatrix hmm4;
@@ -70,7 +70,65 @@ int main(int argc, char *argv[])
hmm4 = hmm5;
Info<< hmm5 << endl;
- Info<< "End\n" << endl;
+ {
+ scalarSymmetricSquareMatrix symmMatrix(3, 3, 0);
+
+ symmMatrix(0, 0) = 4;
+ symmMatrix(1, 0) = 12;
+ symmMatrix(1, 1) = 37;
+ symmMatrix(2, 0) = -16;
+ symmMatrix(2, 1) = -43;
+ symmMatrix(2, 2) = 98;
+
+ Info<< "Symmetric Square Matrix = " << symmMatrix << endl;
+
+ Info<< "Inverse = " << inv(symmMatrix) << endl;
+ Info<< "Determinant = " << det(symmMatrix) << endl;
+
+ scalarSymmetricSquareMatrix symmMatrix2(symmMatrix);
+ LUDecompose(symmMatrix2);
+
+ Info<< "Inverse = " << invDecomposed(symmMatrix2) << endl;
+ Info<< "Determinant = " << detDecomposed(symmMatrix2) << endl;
+
+ scalarDiagonalMatrix rhs(3, 0);
+ rhs[0] = 1;
+ rhs[1] = 2;
+ rhs[2] = 3;
+
+ LUsolve(symmMatrix, rhs);
+
+ Info<< "Decomposition = " << symmMatrix << endl;
+ Info<< "Solution = " << rhs << endl;
+ }
+
+ {
+ scalarSquareMatrix squareMatrix(3, 3, 0);
+
+ squareMatrix[0][0] = 4;
+ squareMatrix[0][1] = 12;
+ squareMatrix[0][2] = -16;
+ squareMatrix[1][0] = 12;
+ squareMatrix[1][1] = 37;
+ squareMatrix[1][2] = -43;
+ squareMatrix[2][0] = -16;
+ squareMatrix[2][1] = -43;
+ squareMatrix[2][2] = 98;
+
+ Info<< nl << "Square Matrix = " << squareMatrix << endl;
+
+ scalarDiagonalMatrix rhs(3, 0);
+ rhs[0] = 1;
+ rhs[1] = 2;
+ rhs[2] = 3;
+
+ LUsolve(squareMatrix, rhs);
+
+ Info<< "Decomposition = " << squareMatrix << endl;
+ Info<< "Solution = " << rhs << endl;
+ }
+
+ Info<< "\nEnd\n" << endl;
return 0;
}
diff --git a/etc/config/settings.csh b/etc/config/settings.csh
index be510764fd..2264c4ee03 100644
--- a/etc/config/settings.csh
+++ b/etc/config/settings.csh
@@ -226,7 +226,7 @@ case ThirdParty:
breaksw
case Gcc47:
case Gcc47++0x:
- set gcc_version=gcc-4.7.0
+ set gcc_version=gcc-4.7.2
set gmp_version=gmp-5.0.4
set mpfr_version=mpfr-3.1.0
set mpc_version=mpc-0.9
diff --git a/etc/config/settings.sh b/etc/config/settings.sh
index 12d6f4b900..5a77479b56 100644
--- a/etc/config/settings.sh
+++ b/etc/config/settings.sh
@@ -247,7 +247,7 @@ OpenFOAM | ThirdParty)
mpc_version=mpc-0.9
;;
Gcc47 | Gcc47++0x)
- gcc_version=gcc-4.7.0
+ gcc_version=gcc-4.7.2
gmp_version=gmp-5.0.4
mpfr_version=mpfr-3.1.0
mpc_version=mpc-0.9
diff --git a/src/OpenFOAM/db/objectRegistry/objectRegistry.H b/src/OpenFOAM/db/objectRegistry/objectRegistry.H
index 84b295c4d7..d2b4163849 100644
--- a/src/OpenFOAM/db/objectRegistry/objectRegistry.H
+++ b/src/OpenFOAM/db/objectRegistry/objectRegistry.H
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
- \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -159,6 +159,10 @@ public:
template
HashTable lookupClass(const bool strict = false) const;
+ //- Lookup and return all objects of the given Type
+ template
+ HashTable lookupClass(const bool strict = false);
+
//- Is the named Type found?
template
bool foundObject(const word& name) const;
diff --git a/src/OpenFOAM/db/objectRegistry/objectRegistryTemplates.C b/src/OpenFOAM/db/objectRegistry/objectRegistryTemplates.C
index 960605e049..483e1c2416 100644
--- a/src/OpenFOAM/db/objectRegistry/objectRegistryTemplates.C
+++ b/src/OpenFOAM/db/objectRegistry/objectRegistryTemplates.C
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
- \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -76,6 +76,34 @@ Foam::HashTable Foam::objectRegistry::lookupClass
}
+template
+Foam::HashTable Foam::objectRegistry::lookupClass
+(
+ const bool strict
+)
+{
+ HashTable objectsOfClass(size());
+
+ forAllIter(HashTable, *this, iter)
+ {
+ if
+ (
+ (strict && isType(*iter()))
+ || (!strict && isA(*iter()))
+ )
+ {
+ objectsOfClass.insert
+ (
+ iter()->name(),
+ dynamic_cast(iter())
+ );
+ }
+ }
+
+ return objectsOfClass;
+}
+
+
template
bool Foam::objectRegistry::foundObject(const word& name) const
{
diff --git a/src/OpenFOAM/matrices/DiagonalMatrix/DiagonalMatrix.H b/src/OpenFOAM/matrices/DiagonalMatrix/DiagonalMatrix.H
index 031320a457..a065b3aec3 100644
--- a/src/OpenFOAM/matrices/DiagonalMatrix/DiagonalMatrix.H
+++ b/src/OpenFOAM/matrices/DiagonalMatrix/DiagonalMatrix.H
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
- \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -76,7 +76,7 @@ public:
// Member functions
- //- Invert the diaganol matrix and return itself
+ //- Invert the diagonal matrix and return itself
DiagonalMatrix& invert();
};
diff --git a/src/OpenFOAM/matrices/Matrix/Matrix.H b/src/OpenFOAM/matrices/Matrix/Matrix.H
index dd55db770c..005982d9e0 100644
--- a/src/OpenFOAM/matrices/Matrix/Matrix.H
+++ b/src/OpenFOAM/matrices/Matrix/Matrix.H
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
- \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
+ \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -221,7 +221,6 @@ template Form operator*
const Matrix