Removing trailing whitespace, tabs and DOS CR & Fixing some indentation

This commit is contained in:
Henrik Rusche 2016-06-20 16:50:07 +02:00
parent d838b666f6
commit a224c64812
110 changed files with 1957 additions and 2039 deletions

View file

@ -104,9 +104,9 @@ function(GetGitBranchName var)
foreach(branch ${listOfGitBranches}) foreach(branch ${listOfGitBranches})
string(REGEX MATCH "\\* .*$" matchString ${branch}) string(REGEX MATCH "\\* .*$" matchString ${branch})
string(LENGTH "${matchString}" lengthMatchString) string(LENGTH "${matchString}" lengthMatchString)
if(lengthMatchString GREATER 0) if(lengthMatchString GREATER 0)
# We have match. Cleanup and set retValue # We have match. Cleanup and set retValue
string(REPLACE "* " "" retValue ${matchString}) string(REPLACE "* " "" retValue ${matchString})
endif() endif()
endforeach() endforeach()
@ -122,7 +122,7 @@ function(GetGitRevNumber var)
set( retValue "unknown") set( retValue "unknown")
execute_process( execute_process(
COMMAND git rev-parse --short=12 HEAD COMMAND git rev-parse --short=12 HEAD
WORKING_DIRECTORY ${FOAM_ROOT} WORKING_DIRECTORY ${FOAM_ROOT}
OUTPUT_VARIABLE git_rev_number OUTPUT_VARIABLE git_rev_number
) )
@ -259,11 +259,11 @@ elseif(GIT_FOUND)
if(NOT GIT_ECODE) if(NOT GIT_ECODE)
# We have a valid git repository. # We have a valid git repository.
# Grab the branch and revision info. Add to the build name # Grab the branch and revision info. Add to the build name
GetGitBranchName(GIT_BRANCH_NAME) GetGitBranchName(GIT_BRANCH_NAME)
message("Git branch: ${GIT_BRANCH_NAME}") message("Git branch: ${GIT_BRANCH_NAME}")
GetGitRevNumber(GIT_REV_NUMBER) GetGitRevNumber(GIT_REV_NUMBER)
message("Git revision: ${GIT_REV_NUMBER}") message("Git revision: ${GIT_REV_NUMBER}")
SET(BUILDNAME "${BUILDNAME}-git-branch=${GIT_BRANCH_NAME}") SET(BUILDNAME "${BUILDNAME}-git-branch=${GIT_BRANCH_NAME}")
@ -301,8 +301,8 @@ elseif(GIT_FOUND)
SET(BUILDNAME "${BUILDNAME}-hg-rev=${GIT_REV_NUMBER}") SET(BUILDNAME "${BUILDNAME}-hg-rev=${GIT_REV_NUMBER}")
else() else()
# Not a git or mercurial repository: no branch nor revision information available # Not a git or mercurial repository: no branch nor revision information available
SET(BUILDNAME "${BUILDNAME}-git-branch=unknown") SET(BUILDNAME "${BUILDNAME}-git-branch=unknown")
SET(BUILDNAME "${BUILDNAME}-git-rev=unknown") SET(BUILDNAME "${BUILDNAME}-git-rev=unknown")
endif() endif()
endif() endif()
else() else()
@ -379,18 +379,18 @@ IF(BUILD_TESTING)
IF(RUN_FROM_ONE_TIMESTEP) IF(RUN_FROM_ONE_TIMESTEP)
# Modify the cases controlDict file in order to run for only one time step # Modify the cases controlDict file in order to run for only one time step
MESSAGE("${testRunTimeDirectory}: Modifying the controlDict files for running only one time step in directory: ${TEST_CASE_DIR}") MESSAGE("${testRunTimeDirectory}: Modifying the controlDict files for running only one time step in directory: ${TEST_CASE_DIR}")
if(CMAKE_HOST_WIN32) if(CMAKE_HOST_WIN32)
# Need to supply a bash shell to run the script under Windows # Need to supply a bash shell to run the script under Windows
EXECUTE_PROCESS( EXECUTE_PROCESS(
COMMAND bash -c "$ENV{FOAM_TEST_HARNESS_DIR}/scripts/prepareCasesForOneTimeStep.sh ${TEST_CASE_DIR}" COMMAND bash -c "$ENV{FOAM_TEST_HARNESS_DIR}/scripts/prepareCasesForOneTimeStep.sh ${TEST_CASE_DIR}"
WORKING_DIRECTORY . WORKING_DIRECTORY .
) )
else() else()
EXECUTE_PROCESS( EXECUTE_PROCESS(
COMMAND $ENV{FOAM_TEST_HARNESS_DIR}/scripts/prepareCasesForOneTimeStep.sh ${TEST_CASE_DIR} COMMAND $ENV{FOAM_TEST_HARNESS_DIR}/scripts/prepareCasesForOneTimeStep.sh ${TEST_CASE_DIR}
WORKING_DIRECTORY . WORKING_DIRECTORY .
) )
endif() endif()
ENDIF(RUN_FROM_ONE_TIMESTEP) ENDIF(RUN_FROM_ONE_TIMESTEP)
ENDIF(BUILD_TESTING) ENDIF(BUILD_TESTING)

View file

@ -38,8 +38,8 @@ Features
--> classes = externalMedia/IAPWS_Waterproperties --> classes = externalMedia/IAPWS_Waterproperties
/*************************************Solver**************************************************/ /*************************************Solver**************************************************/
1. Changed pressure equation of rhoPisoFoam. Orginal pressure equation assumes perfect gas 1. Changed pressure equation of rhoPisoFoam. Orginal pressure equation assumes perfect gas
(linear relationship between pressure and density) (linear relationship between pressure and density)
--> new solver = realFluidPisoFoam --> new solver = realFluidPisoFoam
@ -58,6 +58,3 @@ Features
git commit: "add branch ReadMe file" git commit: "add branch ReadMe file"
--> added this file --> added this file

View file

@ -1,10 +1,10 @@
_____________________________________ _____________________________________
*RELEASE NOTES FOR FOAM-EXTEND-3.2* *RELEASE NOTES FOR FOAM-EXTEND-3.2*
_____________________________________ _____________________________________
August 2015 August 2015
Table of Contents Table of Contents

View file

@ -113,14 +113,14 @@ void Foam::fluidSolidInterface::calcFluidToSolidInterpolator() const
} }
std::shared_ptr<RBFFunctionInterface> rbfFunction; std::shared_ptr<RBFFunctionInterface> rbfFunction;
rbfFunction = std::shared_ptr<RBFFunctionInterface>( new TPSFunction() ); rbfFunction = std::shared_ptr<RBFFunctionInterface>(new TPSFunction());
// std::shared_ptr<RBFInterpolation> rbf; // std::shared_ptr<RBFInterpolation> rbf;
fluidToSolidPtr_ = fluidToSolidPtr_ =
std::shared_ptr<RBFInterpolation> std::shared_ptr<RBFInterpolation>
( (
new RBFInterpolation( rbfFunction ) new RBFInterpolation(rbfFunction)
// new RBFInterpolation( rbfFunctionPtr_ ) // new RBFInterpolation(rbfFunctionPtr_)
); );
vectorField solidZoneFaceCentres = vectorField solidZoneFaceCentres =
@ -146,7 +146,7 @@ void Foam::fluidSolidInterface::calcFluidToSolidInterpolator() const
solidX(faceI, 2) = solidZoneFaceCentres[faceI].z(); solidX(faceI, 2) = solidZoneFaceCentres[faceI].z();
} }
fluidToSolidPtr_->compute( fluidX, solidX ); fluidToSolidPtr_->compute(fluidX, solidX);
Info << "Checking fluid-to-solid interpolator" << endl; Info << "Checking fluid-to-solid interpolator" << endl;
{ {
@ -186,39 +186,39 @@ void Foam::fluidSolidInterface::calcFluidToSolidInterpolator() const
solidMesh().boundaryMesh()[solidPatchIndex_].faceCentres() solidMesh().boundaryMesh()[solidPatchIndex_].faceCentres()
); );
matrix fluidX(fluidZoneFaceCentres.size(), 3); matrix fluidX(fluidZoneFaceCentres.size(), 3);
// matrix solidX(solidPatchFaceCentres.size(), 3); // matrix solidX(solidPatchFaceCentres.size(), 3);
matrix fluidXsolid(solidPatchFaceCentres.size(), 3); matrix fluidXsolid(solidPatchFaceCentres.size(), 3);
forAll(fluidZoneFaceCentres, faceI) forAll(fluidZoneFaceCentres, faceI)
{ {
fluidX(faceI, 0) = fluidZoneFaceCentres[faceI].x(); fluidX(faceI, 0) = fluidZoneFaceCentres[faceI].x();
fluidX(faceI, 1) = fluidZoneFaceCentres[faceI].y(); fluidX(faceI, 1) = fluidZoneFaceCentres[faceI].y();
fluidX(faceI, 2) = fluidZoneFaceCentres[faceI].z(); fluidX(faceI, 2) = fluidZoneFaceCentres[faceI].z();
} }
// forAll(solidPatchFaceCentres, faceI) // forAll(solidPatchFaceCentres, faceI)
// { // {
// solidX(faceI, 0) = solidPatchFaceCentres[faceI].x(); // solidX(faceI, 0) = solidPatchFaceCentres[faceI].x();
// solidX(faceI, 1) = solidPatchFaceCentres[faceI].y(); // solidX(faceI, 1) = solidPatchFaceCentres[faceI].y();
// solidX(faceI, 2) = solidPatchFaceCentres[faceI].z(); // solidX(faceI, 2) = solidPatchFaceCentres[faceI].z();
// } // }
// fluidToSolidPtr_->compute( fluidX, solidX ); // fluidToSolidPtr_->compute(fluidX, solidX);
fluidToSolidPtr_->interpolate( fluidX, fluidXsolid ); fluidToSolidPtr_->interpolate(fluidX, fluidXsolid);
vectorField fluidPatchFaceCentresAtSolid vectorField fluidPatchFaceCentresAtSolid
( (
solidPatchFaceCentres.size(), solidPatchFaceCentres.size(),
vector::zero vector::zero
); );
forAll(fluidPatchFaceCentresAtSolid, faceI) forAll(fluidPatchFaceCentresAtSolid, faceI)
{ {
fluidPatchFaceCentresAtSolid[faceI].x() = fluidXsolid(faceI, 0); fluidPatchFaceCentresAtSolid[faceI].x() = fluidXsolid(faceI, 0);
fluidPatchFaceCentresAtSolid[faceI].y() = fluidXsolid(faceI, 1); fluidPatchFaceCentresAtSolid[faceI].y() = fluidXsolid(faceI, 1);
fluidPatchFaceCentresAtSolid[faceI].z() = fluidXsolid(faceI, 2); fluidPatchFaceCentresAtSolid[faceI].z() = fluidXsolid(faceI, 2);
} }
scalar maxDist = gMax scalar maxDist = gMax
( (
@ -515,14 +515,14 @@ void Foam::fluidSolidInterface::calcSolidToFluidInterpolator() const
} }
std::shared_ptr<RBFFunctionInterface> rbfFunction; std::shared_ptr<RBFFunctionInterface> rbfFunction;
rbfFunction = std::shared_ptr<RBFFunctionInterface>( new TPSFunction() ); rbfFunction = std::shared_ptr<RBFFunctionInterface>(new TPSFunction());
// std::shared_ptr<RBFInterpolation> rbf; // std::shared_ptr<RBFInterpolation> rbf;
solidToFluidPtr_ = solidToFluidPtr_ =
std::shared_ptr<RBFInterpolation> std::shared_ptr<RBFInterpolation>
( (
new RBFInterpolation( rbfFunction ) new RBFInterpolation(rbfFunction)
// new RBFInterpolation( rbfFunctionPtr_ ) // new RBFInterpolation(rbfFunctionPtr_)
); );
vectorField solidZonePoints = vectorField solidZonePoints =
@ -548,7 +548,7 @@ void Foam::fluidSolidInterface::calcSolidToFluidInterpolator() const
solidX(faceI, 2) = solidZonePoints[faceI].z(); solidX(faceI, 2) = solidZonePoints[faceI].z();
} }
solidToFluidPtr_->compute( solidX, fluidX ); solidToFluidPtr_->compute(solidX, fluidX);
Info << "Checking solid-to-fluid interpolator" << endl; Info << "Checking solid-to-fluid interpolator" << endl;
{ {
@ -564,14 +564,14 @@ void Foam::fluidSolidInterface::calcSolidToFluidInterpolator() const
solidPoints(faceI, 2) = solidZonePoints[faceI].z(); solidPoints(faceI, 2) = solidZonePoints[faceI].z();
} }
solidToFluidPtr_->interpolate( solidPoints, fluidPoints ); solidToFluidPtr_->interpolate(solidPoints, fluidPoints);
forAll(fluidZonePoints, faceI) forAll(fluidZonePoints, faceI)
{ {
fluidZonePointsInterp[faceI].x() = fluidPoints(faceI, 0); fluidZonePointsInterp[faceI].x() = fluidPoints(faceI, 0);
fluidZonePointsInterp[faceI].y() = fluidPoints(faceI, 1); fluidZonePointsInterp[faceI].y() = fluidPoints(faceI, 1);
fluidZonePointsInterp[faceI].z() = fluidPoints(faceI, 2); fluidZonePointsInterp[faceI].z() = fluidPoints(faceI, 2);
} }
scalar maxDist = gMax scalar maxDist = gMax
( (
@ -2026,24 +2026,24 @@ void Foam::fluidSolidInterface::updateForce()
{ {
Info << "... using RBF interpolation" << endl; Info << "... using RBF interpolation" << endl;
matrix fluidForce(fluidZoneTotalTraction.size(), 3); matrix fluidForce(fluidZoneTotalTraction.size(), 3);
matrix solidForce(solidZoneTotalTraction.size(), 3); matrix solidForce(solidZoneTotalTraction.size(), 3);
forAll(fluidZoneTotalTraction, faceI) forAll(fluidZoneTotalTraction, faceI)
{ {
fluidForce(faceI, 0) = fluidZoneTotalTraction[faceI].x(); fluidForce(faceI, 0) = fluidZoneTotalTraction[faceI].x();
fluidForce(faceI, 1) = fluidZoneTotalTraction[faceI].y(); fluidForce(faceI, 1) = fluidZoneTotalTraction[faceI].y();
fluidForce(faceI, 2) = fluidZoneTotalTraction[faceI].z(); fluidForce(faceI, 2) = fluidZoneTotalTraction[faceI].z();
} }
fluidToSolid()->interpolate( fluidForce, solidForce ); fluidToSolid()->interpolate(fluidForce, solidForce);
forAll(solidZoneTotalTraction, faceI) forAll(solidZoneTotalTraction, faceI)
{ {
solidZoneTotalTraction[faceI].x() = -solidForce(faceI, 0); solidZoneTotalTraction[faceI].x() = -solidForce(faceI, 0);
solidZoneTotalTraction[faceI].y() = -solidForce(faceI, 1); solidZoneTotalTraction[faceI].y() = -solidForce(faceI, 1);
solidZoneTotalTraction[faceI].z() = -solidForce(faceI, 2); solidZoneTotalTraction[faceI].z() = -solidForce(faceI, 2);
} }
} }
else else
{ {
@ -2723,41 +2723,41 @@ Foam::scalar Foam::fluidSolidInterface::updateResidual()
{ {
Info << "Displacement interpolation using RBF interpolation" << endl; Info << "Displacement interpolation using RBF interpolation" << endl;
matrix fluidDispl(solidZonePointsDispl().size(), 3); matrix fluidDispl(solidZonePointsDispl().size(), 3);
matrix solidDispl(solidZonePointsDisplAtSolid.size(), 3); matrix solidDispl(solidZonePointsDisplAtSolid.size(), 3);
forAll(solidZonePointsDisplAtSolid, pointI) forAll(solidZonePointsDisplAtSolid, pointI)
{ {
solidDispl(pointI, 0) = solidZonePointsDisplAtSolid[pointI].x(); solidDispl(pointI, 0) = solidZonePointsDisplAtSolid[pointI].x();
solidDispl(pointI, 1) = solidZonePointsDisplAtSolid[pointI].y(); solidDispl(pointI, 1) = solidZonePointsDisplAtSolid[pointI].y();
solidDispl(pointI, 2) = solidZonePointsDisplAtSolid[pointI].z(); solidDispl(pointI, 2) = solidZonePointsDisplAtSolid[pointI].z();
} }
solidToFluid()->interpolate( solidDispl, fluidDispl ); solidToFluid()->interpolate(solidDispl, fluidDispl);
forAll(solidZonePointsDispl(), pointI) forAll(solidZonePointsDispl(), pointI)
{ {
solidZonePointsDispl()[pointI].x() = fluidDispl(pointI, 0); solidZonePointsDispl()[pointI].x() = fluidDispl(pointI, 0);
solidZonePointsDispl()[pointI].y() = fluidDispl(pointI, 1); solidZonePointsDispl()[pointI].y() = fluidDispl(pointI, 1);
solidZonePointsDispl()[pointI].z() = fluidDispl(pointI, 2); solidZonePointsDispl()[pointI].z() = fluidDispl(pointI, 2);
} }
// Total displacement // Total displacement
forAll(solidZonePointsTotDisplAtSolid, pointI) forAll(solidZonePointsTotDisplAtSolid, pointI)
{ {
solidDispl(pointI, 0) = solidZonePointsTotDisplAtSolid[pointI].x(); solidDispl(pointI, 0) = solidZonePointsTotDisplAtSolid[pointI].x();
solidDispl(pointI, 1) = solidZonePointsTotDisplAtSolid[pointI].y(); solidDispl(pointI, 1) = solidZonePointsTotDisplAtSolid[pointI].y();
solidDispl(pointI, 2) = solidZonePointsTotDisplAtSolid[pointI].z(); solidDispl(pointI, 2) = solidZonePointsTotDisplAtSolid[pointI].z();
} }
solidToFluid()->interpolate( solidDispl, fluidDispl ); solidToFluid()->interpolate(solidDispl, fluidDispl);
forAll(solidZonePointsTotDispl, pointI) forAll(solidZonePointsTotDispl, pointI)
{ {
solidZonePointsTotDispl[pointI].x() = fluidDispl(pointI, 0); solidZonePointsTotDispl[pointI].x() = fluidDispl(pointI, 0);
solidZonePointsTotDispl[pointI].y() = fluidDispl(pointI, 1); solidZonePointsTotDispl[pointI].y() = fluidDispl(pointI, 1);
solidZonePointsTotDispl[pointI].z() = fluidDispl(pointI, 2); solidZonePointsTotDispl[pointI].z() = fluidDispl(pointI, 2);
} }
} }
else else
{ {

View file

@ -376,7 +376,7 @@ gradientBoundaryCoeffs() const
vectorField nGradU = vectorField nGradU =
2 2
*( *(
*this *this
- (patchInternalField() + dUP) - (patchInternalField() + dUP)
)*this->patch().deltaCoeffs() )*this->patch().deltaCoeffs()
- nGradUP; - nGradUP;

View file

@ -339,7 +339,7 @@ gradientBoundaryCoeffs() const
vectorField nGradU = vectorField nGradU =
2 2
*( *(
*this *this
- (patchInternalField() + dUP) - (patchInternalField() + dUP)
)*this->patch().deltaCoeffs() )*this->patch().deltaCoeffs()
- nGradUP; - nGradUP;

View file

@ -326,7 +326,7 @@ gradientBoundaryCoeffs() const
// vectorField nGradU = // vectorField nGradU =
// 2 // 2
// *( // *(
// *this // *this
// - (patchInternalField() + dUP) // - (patchInternalField() + dUP)
// )*this->patch().deltaCoeffs() // )*this->patch().deltaCoeffs()
// - nGradUP; // - nGradUP;

View file

@ -20,7 +20,7 @@ forAll(p_.boundaryField(), patchI)
(n&U_.boundaryField()[patchI]) (n&U_.boundaryField()[patchI])
/rUA.boundaryField()[patchI] /rUA.boundaryField()[patchI]
- phi_.boundaryField()[patchI] - phi_.boundaryField()[patchI]
/mesh.magSf().boundaryField()[patchI] /mesh.magSf().boundaryField()[patchI]
/rUA.boundaryField()[patchI] /rUA.boundaryField()[patchI]
+ nGradUn_ + nGradUn_
/mesh.deltaCoeffs().boundaryField()[patchI] /mesh.deltaCoeffs().boundaryField()[patchI]
@ -28,7 +28,7 @@ forAll(p_.boundaryField(), patchI)
phi_.boundaryField()[patchI] += phi_.boundaryField()[patchI] +=
pInterface.gradient() pInterface.gradient()
*rUA.boundaryField()[patchI] *rUA.boundaryField()[patchI]
*mesh.magSf().boundaryField()[patchI]; *mesh.magSf().boundaryField()[patchI];
} }
} }

View file

@ -17,36 +17,34 @@
*mesh.deltaCoeffs().boundaryField()[fsi.fluidPatchIndex()]; *mesh.deltaCoeffs().boundaryField()[fsi.fluidPatchIndex()];
Info << "nGradUn, max: " << gMax(nGradUn_) << ", min: " Info << "nGradUn, max: " << gMax(nGradUn_) << ", min: "
<< gMin(nGradUn_) << ", avg: " << gAverage(nGradUn_) << endl; << gMin(nGradUn_) << ", avg: " << gAverage(nGradUn_) << endl;
// bool secondOrderCorrection = true; // bool secondOrderCorrection = true;
// if (secondOrderCorrection) // if (secondOrderCorrection)
// { // {
// // Correct normal component of phiU // // Correct normal component of phiU
// // befor gradient calculation // // befor gradient calculation
// forAll(phiU.boundaryField(), patchI) // forAll(phiU.boundaryField(), patchI)
// { // {
// vectorField n = // vectorField n =
// mesh().Sf().boundaryField()[patchI] // mesh().Sf().boundaryField()[patchI]
// /mesh().magSf().boundaryField()[patchI]; // /mesh().magSf().boundaryField()[patchI];
// phiU.boundaryField()[patchI] += // phiU.boundaryField()[patchI] +=
// n // n
// *( // *(
// ( // (
// phi_.boundaryField()[patchI] // phi_.boundaryField()[patchI]
// /mesh().magSf().boundaryField()[patchI] // /mesh().magSf().boundaryField()[patchI]
// ) // )
// - (n&phiU.boundaryField()[patchI]) // - (n&phiU.boundaryField()[patchI])
// ); // );
// } // }
// // Calc gradient // // Calc gradient
// tensorField gradPhiUp = // tensorField gradPhiUp =
// fvc::grad(phiU)().boundaryField()[aPatchID()] // fvc::grad(phiU)().boundaryField()[aPatchID()].patchInternalField();
// .patchInternalField(); // nGradUn() = 2*nGradUn() - (nA&(gradPhiUp&nA));
// }
// nGradUn() = 2*nGradUn() - (nA&(gradPhiUp&nA));
// }
} }

View file

@ -199,8 +199,8 @@ public:
//- If the rheologyLaw needs plasticity procedures //- If the rheologyLaw needs plasticity procedures
virtual bool plasticityModelNeeded() const virtual bool plasticityModelNeeded() const
{ {
return true; return true;
}; };
//- Return modulus of plasticity //- Return modulus of plasticity
virtual tmp<volScalarField> Ep() const; virtual tmp<volScalarField> Ep() const;

View file

@ -81,147 +81,156 @@ Foam::orthotropicLinearElastic::orthotropicLinearElastic
A44_( 2*Gxy_ ), A44_( 2*Gxy_ ),
A55_( 2*Gyz_ ), A55_( 2*Gyz_ ),
A66_( 2*Gzx_ ), A66_( 2*Gzx_ ),
C_( C_
IOobject
(
"rheologyLawStoredC",
mesh().time().timeName(),
mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh(),
dimensionedSymmTensor4thOrder("zero", dimForce/dimArea,
symmTensor4thOrder(A11_.value(), A12_.value(), A31_.value(),
A22_.value(), A23_.value(),
A33_.value(),
A44_.value(),
A55_.value(),
A66_.value())
),
zeroGradientFvPatchSymmTensor4thOrderField::typeName
),
matDir_(
IOobject
(
"materialDirections",
mesh().time().timeName(),
mesh(),
IOobject::MUST_READ,
IOobject::NO_WRITE
),
mesh()
)
{
//- check material properties lie within physical constraints
//- ref Abaqus analysis user's manual orthotropic material
Info << "\tChecking physical constraints on the orthotropic material properties" << endl;
//- E and G should be greater than zero
if(Ex_.value() < 0.0 || Ey_.value() < 0.0 || Ez_.value() < 0.0
|| Gxy_.value() < 0.0 || Gyz_.value() < 0.0 || Gzx_.value() < 0.0)
{
FatalError << "Ex, Ey, Ez, Gxy, Gyz, Gzx should all be greater than zero!"
<< exit(FatalError);
}
//- restriction on Poisson's ratio
if(mag(nuxy_.value()) >= sqrt(Ex_.value()/Ey_.value())
|| mag(nuyz_.value()) >= sqrt(Ey_.value()/Ez_.value())
|| mag(nuzx_.value()) >= sqrt(Ez_.value()/Ex_.value()))
{
FatalError << "mag(nuij) should be less sqrt(Ei/Ej)"
<< exit(FatalError);
}
if( dimensionedScalar(1 - nuxy_*nuyx_ - nuyz_*nuzy_ - nuzx_*nuxz_ - 2*nuyx_*nuzy_*nuxz_).value() <= 0 )
{
FatalError << "(1 - nuxy*nuyx - nuyz*nuzy - nuzx*nuxz - 2*nuyx*nuzy*nuxz) should be greater than zero!"
<< exit(FatalError);
}
Info << "\tRotating local material properties to global coordinate system" << endl;
//- rotate tensors
volTensorField R
( (
IOobject IOobject
( (
"R", "rheologyLawStoredC",
mesh().time().timeName(), mesh().time().timeName(),
mesh(), mesh(),
IOobject::NO_READ, IOobject::NO_READ,
IOobject::NO_WRITE IOobject::NO_WRITE
), ),
mesh(), mesh(),
dimensionedTensor("zero", dimless, tensor::zero), dimensionedSymmTensor4thOrder("zero", dimForce/dimArea,
zeroGradientFvPatchTensorField::typeName symmTensor4thOrder
); (
A11_.value(), A12_.value(), A31_.value(),
A22_.value(), A23_.value(),
A33_.value(),
A44_.value(),
A55_.value(),
A66_.value())
),
zeroGradientFvPatchSymmTensor4thOrderField::typeName
),
matDir_
(
IOobject
(
"materialDirections",
mesh().time().timeName(),
mesh(),
IOobject::MUST_READ,
IOobject::NO_WRITE
),
mesh()
)
{
//- check material properties lie within physical constraints
//- ref Abaqus analysis user's manual orthotropic material
Info << "\tChecking physical constraints on the orthotropic material properties" << endl;
//- make sure matDir_ are unit directions //- E and G should be greater than zero
forAll(matDir_, celli) if
(
Ex_.value() < 0.0 || Ey_.value() < 0.0 || Ez_.value() < 0.0
|| Gxy_.value() < 0.0 || Gyz_.value() < 0.0 || Gzx_.value() < 0.0
)
{ {
{ FatalError << "Ex, Ey, Ez, Gxy, Gyz, Gzx should all be greater than zero!"
scalar magVec = << exit(FatalError);
mag(vector(matDir_[celli][0], matDir_[celli][1], matDir_[celli][2]));
matDir_[celli][0] /= magVec;
matDir_[celli][1] /= magVec;
matDir_[celli][2] /= magVec;
}
{
scalar magVec =
mag(vector(matDir_[celli][3], matDir_[celli][4], matDir_[celli][5]));
matDir_[celli][3] /= magVec;
matDir_[celli][4] /= magVec;
matDir_[celli][5] /= magVec;
}
{
scalar magVec =
mag(vector(matDir_[celli][6], matDir_[celli][7], matDir_[celli][8]));
matDir_[celli][6] /= magVec;
matDir_[celli][7] /= magVec;
matDir_[celli][8] /= magVec;
}
} }
//- global axes //- restriction on Poisson's ratio
vector e0(1,0,0); if
vector e1(0,1,0); (
vector e2(0,0,1); mag(nuxy_.value()) >= sqrt(Ex_.value()/Ey_.value())
|| mag(nuyz_.value()) >= sqrt(Ey_.value()/Ez_.value())
forAll(R, celli) || mag(nuzx_.value()) >= sqrt(Ez_.value()/Ex_.value())
)
{ {
// R_ij = xold_i & xnew_i; FatalError << "mag(nuij) should be less sqrt(Ei/Ej)"
{ << exit(FatalError);
vector mD(matDir_[celli][0], matDir_[celli][1], matDir_[celli][2]);
R[celli][0] = e0 & mD;
R[celli][1] = e1 & mD;
R[celli][2] = e2 & mD;
}
{
vector mD(matDir_[celli][3], matDir_[celli][4], matDir_[celli][5]);
R[celli][3] = e0 & mD;
R[celli][4] = e1 & mD;
R[celli][5] = e2 & mD;
}
{
vector mD(matDir_[celli][6], matDir_[celli][7], matDir_[celli][8]);
R[celli][6] = e0 & mD;
R[celli][7] = e1 & mD;
R[celli][8] = e2 & mD;
}
} }
//Info << "R is " << R.internalField() << endl; if( dimensionedScalar(1 - nuxy_*nuyx_ - nuyz_*nuzy_ - nuzx_*nuxz_ - 2*nuyx_*nuzy_*nuxz_).value() <= 0 )
R.correctBoundaryConditions(); {
//R.write(); FatalError << "(1 - nuxy*nuyx - nuyz*nuzy - nuzx*nuxz - 2*nuyx*nuzy*nuxz) should be greater than zero!"
<< exit(FatalError);
}
//- rotate C to global corrdinate system Info << "\tRotating local material properties to global coordinate system" << endl;
//Info << "C_ local is " << C_.internalField() << endl; //- rotate tensors
C_.correctBoundaryConditions(); volTensorField R
C_ = transform(R, C_); (
C_.correctBoundaryConditions(); IOobject
//Info << "C_ global is " << C_.internalField() << endl; (
"R",
mesh().time().timeName(),
mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh(),
dimensionedTensor("zero", dimless, tensor::zero),
zeroGradientFvPatchTensorField::typeName
);
//- make sure matDir_ are unit directions
forAll(matDir_, celli)
{
{
scalar magVec =
mag(vector(matDir_[celli][0], matDir_[celli][1], matDir_[celli][2]));
matDir_[celli][0] /= magVec;
matDir_[celli][1] /= magVec;
matDir_[celli][2] /= magVec;
}
{
scalar magVec =
mag(vector(matDir_[celli][3], matDir_[celli][4], matDir_[celli][5]));
matDir_[celli][3] /= magVec;
matDir_[celli][4] /= magVec;
matDir_[celli][5] /= magVec;
}
{
scalar magVec =
mag(vector(matDir_[celli][6], matDir_[celli][7], matDir_[celli][8]));
matDir_[celli][6] /= magVec;
matDir_[celli][7] /= magVec;
matDir_[celli][8] /= magVec;
}
}
//- global axes
vector e0(1,0,0);
vector e1(0,1,0);
vector e2(0,0,1);
forAll(R, celli)
{
// R_ij = xold_i & xnew_i;
{
vector mD(matDir_[celli][0], matDir_[celli][1], matDir_[celli][2]);
R[celli][0] = e0 & mD;
R[celli][1] = e1 & mD;
R[celli][2] = e2 & mD;
}
{
vector mD(matDir_[celli][3], matDir_[celli][4], matDir_[celli][5]);
R[celli][3] = e0 & mD;
R[celli][4] = e1 & mD;
R[celli][5] = e2 & mD;
}
{
vector mD(matDir_[celli][6], matDir_[celli][7], matDir_[celli][8]);
R[celli][6] = e0 & mD;
R[celli][7] = e1 & mD;
R[celli][8] = e2 & mD;
}
}
//Info << "R is " << R.internalField() << endl;
R.correctBoundaryConditions();
//R.write();
//- rotate C to global corrdinate system
//Info << "C_ local is " << C_.internalField() << endl;
C_.correctBoundaryConditions();
C_ = transform(R, C_);
C_.correctBoundaryConditions();
//Info << "C_ global is " << C_.internalField() << endl;
} }
@ -362,7 +371,7 @@ Foam::scalar Foam::orthotropicLinearElastic::sigmaY
const label cellID const label cellID
) const ) const
{ {
return GREAT; return GREAT;
} }
Foam::scalar Foam::orthotropicLinearElastic::dSigmaY Foam::scalar Foam::orthotropicLinearElastic::dSigmaY
@ -371,13 +380,13 @@ Foam::scalar Foam::orthotropicLinearElastic::dSigmaY
const label cellID const label cellID
) const ) const
{ {
return 0; return 0;
} }
//Foam::tmp<Foam::volTensorField> Foam::orthotropicLinearElastic::K() const //Foam::tmp<Foam::volTensorField> Foam::orthotropicLinearElastic::K() const
Foam::tmp<Foam::volDiagTensorField> Foam::orthotropicLinearElastic::K() const Foam::tmp<Foam::volDiagTensorField> Foam::orthotropicLinearElastic::K() const
{ {
tmp<volDiagTensorField> tresult tmp<volDiagTensorField> tresult
( (
new volDiagTensorField new volDiagTensorField
( (
@ -395,34 +404,34 @@ Foam::tmp<Foam::volDiagTensorField> Foam::orthotropicLinearElastic::K() const
) )
); );
volDiagTensorField& K = tresult(); volDiagTensorField& K = tresult();
forAll(K, celli) forAll(K, celli)
{ {
K[celli].xx() = C_[celli].xxxx(); K[celli].xx() = C_[celli].xxxx();
K[celli].yy() = C_[celli].yyyy(); K[celli].yy() = C_[celli].yyyy();
K[celli].zz() = C_[celli].zzzz(); K[celli].zz() = C_[celli].zzzz();
} }
tresult().correctBoundaryConditions(); tresult().correctBoundaryConditions();
return tresult; return tresult;
} }
Foam::tmp<Foam::volSymmTensor4thOrderField> Foam::orthotropicLinearElastic::C() const Foam::tmp<Foam::volSymmTensor4thOrderField> Foam::orthotropicLinearElastic::C() const
{ {
tmp<volSymmTensor4thOrderField> tresult tmp<volSymmTensor4thOrderField> tresult
( (
new volSymmTensor4thOrderField new volSymmTensor4thOrderField
( (
C_ C_
) )
); );
volSymmTensor4thOrderField& result = tresult(); volSymmTensor4thOrderField& result = tresult();
result.correctBoundaryConditions(); result.correctBoundaryConditions();
return tresult; return tresult;
} }
// ************************************************************************* // // ************************************************************************* //

View file

@ -59,66 +59,67 @@ Foam::dirichletNeumannFriction::dirichletNeumannFriction
const label slaveFaceZoneID const label slaveFaceZoneID
) )
: :
frictionContactModel(name, patch, dict, masterPatchID, slavePatchID, masterFaceZoneID, slaveFaceZoneID), frictionContactModel(name, patch, dict, masterPatchID, slavePatchID, masterFaceZoneID, slaveFaceZoneID),
frictionContactModelDict_(dict.subDict(name+"FrictionModelDict")), frictionContactModelDict_(dict.subDict(name+"FrictionModelDict")),
frictionLawPtr_(NULL), frictionLawPtr_(NULL),
mesh_(patch.boundaryMesh().mesh()), mesh_(patch.boundaryMesh().mesh()),
slaveDisp_(mesh().boundaryMesh()[slavePatchID].size(), vector::zero), slaveDisp_(mesh().boundaryMesh()[slavePatchID].size(), vector::zero),
slaveTraction_(mesh().boundaryMesh()[slavePatchID].size(), vector::zero), slaveTraction_(mesh().boundaryMesh()[slavePatchID].size(), vector::zero),
slaveValueFrac_(mesh_.boundaryMesh()[slavePatchID].size(), symmTensor::zero), slaveValueFrac_(mesh_.boundaryMesh()[slavePatchID].size(), symmTensor::zero),
//oldSlaveValueFrac_(mesh_.boundaryMesh()[slavePatchID].size(), symmTensor::zero), //oldSlaveValueFrac_(mesh_.boundaryMesh()[slavePatchID].size(), symmTensor::zero),
relaxationFactor_(readScalar(frictionContactModelDict_.lookup("relaxationFactor"))), relaxationFactor_(readScalar(frictionContactModelDict_.lookup("relaxationFactor"))),
contactIterNum_(0), contactIterNum_(0),
infoFreq_(readInt(frictionContactModelDict_.lookup("infoFrequency"))), infoFreq_(readInt(frictionContactModelDict_.lookup("infoFrequency"))),
oscillationCorr_(frictionContactModelDict_.lookup("oscillationCorrection")), oscillationCorr_(frictionContactModelDict_.lookup("oscillationCorrection")),
oscillationCorrFac_(readScalar(frictionContactModelDict_.lookup("oscillationCorrectionFactor"))), oscillationCorrFac_(readScalar(frictionContactModelDict_.lookup("oscillationCorrectionFactor"))),
contactFilePtr_(NULL) contactFilePtr_(NULL)
{ {
// create friction law // create friction law
frictionLawPtr_ = frictionLaw::New( frictionLawPtr_ = frictionLaw::New
frictionContactModelDict_.lookup("frictionLaw"), (
frictionContactModelDict_ frictionContactModelDict_.lookup("frictionLaw"),
).ptr(); frictionContactModelDict_
).ptr();
// master proc open contact info file // master proc open contact info file
if(Pstream::master()) if(Pstream::master())
{ {
word masterName = mesh_.boundary()[masterPatchID].name(); word masterName = mesh_.boundary()[masterPatchID].name();
word slaveName = mesh_.boundary()[slavePatchID].name(); word slaveName = mesh_.boundary()[slavePatchID].name();
contactFilePtr_ = new OFstream(fileName("frictionContact_"+masterName+"_"+slaveName+".txt")); contactFilePtr_ = new OFstream(fileName("frictionContact_"+masterName+"_"+slaveName+".txt"));
OFstream& contactFile = *contactFilePtr_; OFstream& contactFile = *contactFilePtr_;
int width = 20; int width = 20;
contactFile << "time"; contactFile << "time";
contactFile.width(width); contactFile.width(width);
contactFile << "iterNum"; contactFile << "iterNum";
contactFile.width(width); contactFile.width(width);
contactFile << "relaxationFactor"; contactFile << "relaxationFactor";
contactFile.width(width); contactFile.width(width);
contactFile << "slipFaces"; contactFile << "slipFaces";
contactFile.width(width); contactFile.width(width);
contactFile << "stickFaces"; contactFile << "stickFaces";
contactFile.width(width); contactFile.width(width);
contactFile << "maxMagSlaveTraction" << endl; contactFile << "maxMagSlaveTraction" << endl;
} }
} }
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void Foam::dirichletNeumannFriction::correct void Foam::dirichletNeumannFriction::correct
( (
const vectorField& slavePressure, const vectorField& slavePressure,
const PrimitivePatch<face, List, pointField>& masterFaceZonePatch, const PrimitivePatch<face, List, pointField>& masterFaceZonePatch,
const PrimitivePatch<face, List, pointField>& slaveFaceZonePatch, const PrimitivePatch<face, List, pointField>& slaveFaceZonePatch,
const intersection::algorithm alg, const intersection::algorithm alg,
const intersection::direction dir, const intersection::direction dir,
const word interpolationMethod, const word interpolationMethod,
const word fieldName, const word fieldName,
const Switch orthotropic, const Switch orthotropic,
const word nonLinear, const word nonLinear,
const vectorField& slaveFaceNormals const vectorField& slaveFaceNormals
) )
{ {
const fvMesh& mesh = mesh_; const fvMesh& mesh = mesh_;
const label slavePatchIndex = slavePatchID(); const label slavePatchIndex = slavePatchID();
const label masterPatchIndex = masterPatchID(); const label masterPatchIndex = masterPatchID();
@ -145,30 +146,30 @@ Foam::dirichletNeumannFriction::dirichletNeumannFriction
vectorField slaveDU = dispField.boundaryField()[slavePatchIndex]; vectorField slaveDU = dispField.boundaryField()[slavePatchIndex];
if(fieldName == "U") if(fieldName == "U")
{ {
// lookup old U // lookup old U
const volVectorField& dispOldField = const volVectorField& dispOldField =
mesh.objectRegistry::lookupObject<volVectorField>(fieldName+"_0"); mesh.objectRegistry::lookupObject<volVectorField>(fieldName+"_0");
// subtract old U // subtract old U
masterDU -= dispOldField.boundaryField()[masterPatchIndex]; masterDU -= dispOldField.boundaryField()[masterPatchIndex];
slaveDU -= dispOldField.boundaryField()[slavePatchIndex]; slaveDU -= dispOldField.boundaryField()[slavePatchIndex];
} }
else if(fieldName != "DU") else if(fieldName != "DU")
{ {
FatalError << "iterativePenaltyFunction::correct()\n" FatalError << "iterativePenaltyFunction::correct()\n"
" The displacement field must be called U or DU" " The displacement field must be called U or DU"
<< exit(FatalError); << exit(FatalError);
} }
// put local masterDU into globalMasterDU // put local masterDU into globalMasterDU
const label masterPatchStart const label masterPatchStart =
= mesh.boundaryMesh()[masterPatchIndex].start(); mesh.boundaryMesh()[masterPatchIndex].start();
forAll(masterDU, i) forAll(masterDU, i)
{ {
globalMasterDU[mesh.faceZones()[masterFaceZoneID()].whichFace(masterPatchStart + i)] = globalMasterDU[mesh.faceZones()[masterFaceZoneID()].whichFace(masterPatchStart + i)] =
masterDU[i]; masterDU[i];
} }
//- exchange parallel data //- exchange parallel data
reduce(globalMasterDU, sumOp<vectorField>()); // sum because each face is only on one proc reduce(globalMasterDU, sumOp<vectorField>()); // sum because each face is only on one proc
@ -177,82 +178,83 @@ Foam::dirichletNeumannFriction::dirichletNeumannFriction
// interpolate DU from master to slave using inverse distance or ggi // interpolate DU from master to slave using inverse distance or ggi
if(interpolationMethod == "patchToPatch") if(interpolationMethod == "patchToPatch")
{ {
PatchToPatchInterpolation< PatchToPatchInterpolation
PrimitivePatch<face, List, pointField>, PrimitivePatch<face, List, pointField> <
> masterToSlavePatchToPatchInterpolator PrimitivePatch<face, List, pointField>, PrimitivePatch<face, List, pointField>
( > masterToSlavePatchToPatchInterpolator
masterFaceZonePatch, // from zone (
slaveFaceZonePatch, // to zone masterFaceZonePatch, // from zone
alg, slaveFaceZonePatch, // to zone
dir alg,
); dir
globalMasterDUInterpToSlave = );
masterToSlavePatchToPatchInterpolator.faceInterpolate<vector> globalMasterDUInterpToSlave =
( masterToSlavePatchToPatchInterpolator.faceInterpolate<vector>
globalMasterDU (
); globalMasterDU
} );
}
else if(interpolationMethod == "ggi") else if(interpolationMethod == "ggi")
{ {
GGIInterpolation< GGIInterpolation
PrimitivePatch< face, List, pointField >, PrimitivePatch< face, List, pointField > <
> masterToSlaveGgiInterpolator PrimitivePatch< face, List, pointField >, PrimitivePatch< face, List, pointField >
( > masterToSlaveGgiInterpolator
masterFaceZonePatch, // master zone (
slaveFaceZonePatch, // slave zone masterFaceZonePatch, // master zone
tensorField(0), slaveFaceZonePatch, // slave zone
tensorField(0), tensorField(0),
vectorField(0), tensorField(0),
0.0, vectorField(0),
0.0, 0.0,
true, 0.0,
ggiInterpolation::AABB true,
); ggiInterpolation::AABB
globalMasterDUInterpToSlave = );
masterToSlaveGgiInterpolator.masterToSlave globalMasterDUInterpToSlave =
( masterToSlaveGgiInterpolator.masterToSlave
globalMasterDU (
); globalMasterDU
} );
}
else else
{ {
FatalError << "iterativePenaltyFunction::correct()\n" FatalError << "iterativePenaltyFunction::correct()\n"
"interpolationMethod " << interpolationMethod << " not known\n" "interpolationMethod " << interpolationMethod << " not known\n"
"interpolationMethod must be patchToPatch or ggi" "interpolationMethod must be patchToPatch or ggi"
<< exit(FatalError); << exit(FatalError);
} }
// now put global back into local // now put global back into local
const label slavePatchStart const label slavePatchStart =
= mesh.boundaryMesh()[slavePatchIndex].start(); mesh.boundaryMesh()[slavePatchIndex].start();
forAll(masterDUInterpToSlave, i) forAll(masterDUInterpToSlave, i)
{ {
masterDUInterpToSlave[i] = masterDUInterpToSlave[i] =
globalMasterDUInterpToSlave globalMasterDUInterpToSlave
[ [
mesh.faceZones()[slaveFaceZoneID()].whichFace(slavePatchStart + i) mesh.faceZones()[slaveFaceZoneID()].whichFace(slavePatchStart + i)
]; ];
} }
// Now masterDUInterpToSlave should have masterDU interpolated to the slave // Now masterDUInterpToSlave should have masterDU interpolated to the slave
// calculate current slave shear traction // calculate current slave shear traction
const fvPatch& slavePatch = mesh.boundary()[slavePatchIndex]; const fvPatch& slavePatch = mesh.boundary()[slavePatchIndex];
const fvPatchField<tensor>& gradField = const fvPatchField<tensor>& gradField =
slavePatch.lookupPatchField<volTensorField, tensor>("grad("+fieldName+")"); slavePatch.lookupPatchField<volTensorField, tensor>("grad("+fieldName+")");
vectorField slaveShearTraction = vectorField slaveShearTraction =
(I - sqr(slaveFaceNormals)) (I - sqr(slaveFaceNormals))
& & tractionBoundaryGradient().traction
tractionBoundaryGradient().traction (
( gradField,
gradField, fieldName,
fieldName, slavePatch,
slavePatch, orthotropic,
orthotropic, nonLinear
nonLinear );
);
// calculate slave shear displacement increments // calculate slave shear displacement increments
@ -280,123 +282,122 @@ Foam::dirichletNeumannFriction::dirichletNeumannFriction
// so we make it a sticking face // so we make it a sticking face
const scalar maxMagSlavePressure = gMax(magSlavePressure); const scalar maxMagSlavePressure = gMax(magSlavePressure);
forAll(magSlavePressure, faceI) forAll(magSlavePressure, faceI)
{ {
// there can only be a frictional tangential force when there is // there can only be a frictional tangential force when there is
// a positive pressure // a positive pressure
// if(magSlavePressure[faceI] > SMALL) // if(magSlavePressure[faceI] > SMALL)
if(magSlavePressure[faceI] > 1e-3*maxMagSlavePressure) if(magSlavePressure[faceI] > 1e-3*maxMagSlavePressure)
{ {
//scalar slipTrac = frictionCoeff_*magSlavePressure[faceI]; //scalar slipTrac = frictionCoeff_*magSlavePressure[faceI];
scalar slipTrac = frictionLawPtr_->slipTraction(magSlavePressure[faceI]); scalar slipTrac = frictionLawPtr_->slipTraction(magSlavePressure[faceI]);
// slipping faces // slipping faces
if(mag(slaveShearTraction[faceI]) > (0.99*slipTrac) ) if(mag(slaveShearTraction[faceI]) > (0.99*slipTrac) )
{ {
// direction of shear traction // direction of shear traction
vector tracDir = slaveShearTraction[faceI] / mag(slaveShearTraction[faceI]); vector tracDir = slaveShearTraction[faceI] / mag(slaveShearTraction[faceI]);
// slip is the difference between the master tangential DU and slave tangential DU // slip is the difference between the master tangential DU and slave tangential DU
vector slip = vector slip =
(I - sqr(slaveFaceNormals[faceI])) & (I - sqr(slaveFaceNormals[faceI]))
( slaveDU[faceI] - masterDUInterpToSlave[faceI]); & ( slaveDU[faceI] - masterDUInterpToSlave[faceI]);
// if the slip and dir are in the same direction then we will make this a // if the slip and dir are in the same direction then we will make this a
// sticking face // sticking face
if((tracDir & slip) > SMALL) if((tracDir & slip) > SMALL)
{ {
//Info << "face " << faceI << " flipping direction" << endl; //Info << "face " << faceI << " flipping direction" << endl;
numStickFaces++; numStickFaces++;
stickSlip[faceI] = 2; stickSlip[faceI] = 2;
// increment the slave shear displacement // increment the slave shear displacement
// we add an increment of shear disp to the slave faces until there is no // we add an increment of shear disp to the slave faces until there is no
// more slip // more slip
slaveDisp_[faceI] = slaveDisp_[faceI] = -1*relaxationFactor_*slip;
-1*relaxationFactor_ * slip;
// slaveDisp_[faceI] is the correction to the disp so we // slaveDisp_[faceI] is the correction to the disp so we
// add on the original disp // add on the original disp
slaveDisp_[faceI] += oldSlaveDisp[faceI]; slaveDisp_[faceI] += oldSlaveDisp[faceI];
// remove normal component // remove normal component
slaveDisp_[faceI] = (I-sqr(slaveFaceNormals[faceI])) & slaveDisp_[faceI]; slaveDisp_[faceI] = (I-sqr(slaveFaceNormals[faceI])) & slaveDisp_[faceI];
// set slave valueFraction // set slave valueFraction
slaveValueFrac_[faceI] = slaveValueFrac_[faceI] =
relaxationFactor_*(I - sqr(slaveFaceNormals[faceI])) relaxationFactor_*(I - sqr(slaveFaceNormals[faceI]))
+ (1.0 - relaxationFactor_)*slaveValueFrac_[faceI]; + (1.0 - relaxationFactor_)*slaveValueFrac_[faceI];
// update traction as it is passed to the master // update traction as it is passed to the master
slaveTraction_[faceI] = slaveTraction_[faceI] =
relaxationFactor_*slaveShearTraction[faceI] relaxationFactor_*slaveShearTraction[faceI]
+ (1-relaxationFactor_)*slaveTraction_[faceI]; + (1-relaxationFactor_)*slaveTraction_[faceI];
} }
// else we will limit the shear traction to slipTrac // else we will limit the shear traction to slipTrac
else else
{ {
numSlipFaces++; numSlipFaces++;
stickSlip[faceI] = 1; stickSlip[faceI] = 1;
// limit shear traction // limit shear traction
slaveTraction_[faceI] = slaveTraction_[faceI] =
relaxationFactor_*slipTrac*tracDir relaxationFactor_*slipTrac*tracDir
+ (1-relaxationFactor_)*slaveTraction_[faceI]; + (1-relaxationFactor_)*slaveTraction_[faceI];
// update slave disp although it is not used for this face // update slave disp although it is not used for this face
// while slipping // while slipping
slaveDisp_[faceI] = (I-sqr(slaveFaceNormals[faceI])) & oldSlaveDisp[faceI]; slaveDisp_[faceI] = (I-sqr(slaveFaceNormals[faceI])) & oldSlaveDisp[faceI];
// relax the slave valueFraction to zero // relax the slave valueFraction to zero
//slaveValueFrac_[faceI] = (1.0 - relaxationFactor_)*slaveValueFrac_[faceI]; //slaveValueFrac_[faceI] = (1.0 - relaxationFactor_)*slaveValueFrac_[faceI];
slaveValueFrac_[faceI] = symmTensor::zero; slaveValueFrac_[faceI] = symmTensor::zero;
} }
} }
// sticking faces // sticking faces
else else
{ {
numStickFaces++; numStickFaces++;
stickSlip[faceI] = 2; stickSlip[faceI] = 2;
// slip is the difference of the tangential DU between the master and slave // slip is the difference of the tangential DU between the master and slave
vector slip = vector slip =
(I - sqr(slaveFaceNormals[faceI])) & (I - sqr(slaveFaceNormals[faceI]))
(slaveDU[faceI] - masterDUInterpToSlave[faceI]); & (slaveDU[faceI] - masterDUInterpToSlave[faceI]);
// increment the slave shear displacement // increment the slave shear displacement
// we add an increment of shear disp to the slave faces until there is no // we add an increment of shear disp to the slave faces until there is no
// more slip // more slip
slaveDisp_[faceI] = -1*relaxationFactor_*slip; slaveDisp_[faceI] = -1*relaxationFactor_*slip;
// slaveDisp_[faceI] is the correction to the disp so we // slaveDisp_[faceI] is the correction to the disp so we
// add on the original disp // add on the original disp
slaveDisp_[faceI] += oldSlaveDisp[faceI]; slaveDisp_[faceI] += oldSlaveDisp[faceI];
// remove normal component // remove normal component
slaveDisp_[faceI] = (I-sqr(slaveFaceNormals[faceI])) & slaveDisp_[faceI]; slaveDisp_[faceI] = (I-sqr(slaveFaceNormals[faceI])) & slaveDisp_[faceI];
// set slave valueFraction // set slave valueFraction
slaveValueFrac_[faceI] = slaveValueFrac_[faceI] =
relaxationFactor_*(I - sqr(slaveFaceNormals[faceI])) relaxationFactor_*(I - sqr(slaveFaceNormals[faceI]))
+ (1.0 - relaxationFactor_)*slaveValueFrac_[faceI]; + (1.0 - relaxationFactor_)*slaveValueFrac_[faceI];
// update traction as it is passed to the master // update traction as it is passed to the master
slaveTraction_[faceI] = slaveTraction_[faceI] =
relaxationFactor_*slaveShearTraction[faceI] relaxationFactor_*slaveShearTraction[faceI]
+ (1-relaxationFactor_)*slaveTraction_[faceI]; + (1-relaxationFactor_)*slaveTraction_[faceI];
} }
} }
// no friction if pressure is negative or zero // no friction if pressure is negative or zero
else else
{ {
stickSlip[faceI] = 0; stickSlip[faceI] = 0;
// relax to zero // relax to zero
slaveTraction_[faceI] = (1.0 - relaxationFactor_)*slaveTraction_[faceI]; slaveTraction_[faceI] = (1.0 - relaxationFactor_)*slaveTraction_[faceI];
slaveValueFrac_[faceI] = (1.0 - relaxationFactor_)*slaveValueFrac_[faceI]; slaveValueFrac_[faceI] = (1.0 - relaxationFactor_)*slaveValueFrac_[faceI];
} }
} }
// correct oscillations // correct oscillations
if(oscillationCorr_) if(oscillationCorr_)
{ {
correctOscillations(slaveFaceZonePatch); correctOscillations(slaveFaceZonePatch);
} }
// get global values // get global values
// in parallel, the log is poluted with warnings that // in parallel, the log is poluted with warnings that
@ -412,28 +413,28 @@ Foam::dirichletNeumannFriction::dirichletNeumannFriction
// master writes to contact info file // master writes to contact info file
if(Pstream::master() && (contactIterNum_ % infoFreq_ == 0)) if(Pstream::master() && (contactIterNum_ % infoFreq_ == 0))
{ {
OFstream& contactFile = *contactFilePtr_; OFstream& contactFile = *contactFilePtr_;
int width = 20; int width = 20;
contactFile << mesh.time().value(); contactFile << mesh.time().value();
contactFile.width(width); contactFile.width(width);
contactFile << contactIterNum_; contactFile << contactIterNum_;
contactFile.width(width); contactFile.width(width);
contactFile << relaxationFactor_; contactFile << relaxationFactor_;
contactFile.width(width); contactFile.width(width);
contactFile << numSlipFaces; contactFile << numSlipFaces;
contactFile.width(width); contactFile.width(width);
contactFile << numStickFaces; contactFile << numStickFaces;
contactFile.width(width); contactFile.width(width);
contactFile << maxMagMasterTraction << endl; contactFile << maxMagMasterTraction << endl;
} }
} }
void Foam::dirichletNeumannFriction::correctOscillations void Foam::dirichletNeumannFriction::correctOscillations
( (
const PrimitivePatch<face, List, pointField>& slaveFaceZonePatch const PrimitivePatch<face, List, pointField>& slaveFaceZonePatch
) )
{ {
// oscillations sometimes appear in contact shear displacements/tractions // oscillations sometimes appear in contact shear displacements/tractions
// so we will try to limit them here // so we will try to limit them here
// we will weight the current face slaveDisp/Traction with the average of the // we will weight the current face slaveDisp/Traction with the average of the
@ -451,17 +452,17 @@ Foam::dirichletNeumannFriction::dirichletNeumannFriction
vectorField globalSlaveDisp(slaveFaceZonePatch.size(), vector::zero); vectorField globalSlaveDisp(slaveFaceZonePatch.size(), vector::zero);
// symmTensorField globalSlaveValueFrac(slaveFaceZonePatch.size(), symmTensor::zero); // symmTensorField globalSlaveValueFrac(slaveFaceZonePatch.size(), symmTensor::zero);
scalarField globalStickSlip(slaveFaceZonePatch.size(), 0.0); scalarField globalStickSlip(slaveFaceZonePatch.size(), 0.0);
const label slavePatchStart const label slavePatchStart =
= mesh.boundaryMesh()[slavePatchIndex].start(); mesh.boundaryMesh()[slavePatchIndex].start();
forAll(slaveTraction_, i) forAll(slaveTraction_, i)
{ {
// globalSlaveTraction[mesh.faceZones()[slaveFaceZoneID()].whichFace(slavePatchStart + i)] = // globalSlaveTraction[mesh.faceZones()[slaveFaceZoneID()].whichFace(slavePatchStart + i)] =
// slaveTraction_[i]; // slaveTraction_[i];
globalSlaveDisp[mesh.faceZones()[slaveFaceZoneID()].whichFace(slavePatchStart + i)] = globalSlaveDisp[mesh.faceZones()[slaveFaceZoneID()].whichFace(slavePatchStart + i)] =
slaveDisp_[i]; slaveDisp_[i];
globalStickSlip[mesh.faceZones()[slaveFaceZoneID()].whichFace(slavePatchStart + i)] = globalStickSlip[mesh.faceZones()[slaveFaceZoneID()].whichFace(slavePatchStart + i)] =
stickSlip[i]; stickSlip[i];
} }
// sum because each face is only on one proc // sum because each face is only on one proc
//reduce(globalSlaveTraction, sumOp<vectorField>()); //reduce(globalSlaveTraction, sumOp<vectorField>());
reduce(globalSlaveDisp, sumOp<vectorField>()); reduce(globalSlaveDisp, sumOp<vectorField>());
@ -469,78 +470,78 @@ Foam::dirichletNeumannFriction::dirichletNeumannFriction
// smooth mag of slaveTraction with face face disps // smooth mag of slaveTraction with face face disps
forAll(faceFaces, facei) forAll(faceFaces, facei)
{ {
// only smooth sticking faces // only smooth sticking faces
//if(mag(globalSlaveValueFrac[facei]) > SMALL) //if(mag(globalSlaveValueFrac[facei]) > SMALL)
if(mag(globalStickSlip[facei] - 2.0) < SMALL) if(mag(globalStickSlip[facei] - 2.0) < SMALL)
{ {
//vector avTrac = vector::zero; //vector avTrac = vector::zero;
vector avDisp = vector::zero; vector avDisp = vector::zero;
int numNei = 0; int numNei = 0;
forAll(faceFaces[facei], ffi) forAll(faceFaces[facei], ffi)
{ {
label faceFace = faceFaces[facei][ffi]; label faceFace = faceFaces[facei][ffi];
// only include other sticking faces // only include other sticking faces
if( mag(globalStickSlip[faceFace] - 2.0) < SMALL ) if( mag(globalStickSlip[faceFace] - 2.0) < SMALL )
{ {
avDisp += globalSlaveDisp[faceFace]; avDisp += globalSlaveDisp[faceFace];
numNei++; numNei++;
} }
} }
// avTracMag /= numNei; // avTracMag /= numNei;
//avTrac /= numNei; //avTrac /= numNei;
// if(numNei > 0) // if(numNei > 0)
if(numNei > 1) if(numNei > 1)
{ {
avDisp /= numNei; avDisp /= numNei;
} }
else else
{ {
avDisp = globalSlaveDisp[facei]; avDisp = globalSlaveDisp[facei];
} }
// if(numFaceFaces == 1) // if(numFaceFaces == 1)
// { // {
// // for corner/end faces, decrease the weight of the neighbours // // for corner/end faces, decrease the weight of the neighbours
// avTracMag += globalSlaveTraction[facei]; // avTracMag += globalSlaveTraction[facei];
// avTracMag /= 2; // avTracMag /= 2;
// } // }
// weighted-average with face-faces // weighted-average with face-faces
// globalSlaveTraction[facei] = // globalSlaveTraction[facei] =
// oscillationCorrFac_*globalSlaveTraction[facei] + (1.0-oscillationCorrFac_)*avTrac; // oscillationCorrFac_*globalSlaveTraction[facei] + (1.0-oscillationCorrFac_)*avTrac;
globalSlaveDisp[facei] = globalSlaveDisp[facei] =
oscillationCorrFac_*globalSlaveDisp[facei] + (1.0-oscillationCorrFac_)*avDisp; oscillationCorrFac_*globalSlaveDisp[facei] + (1.0-oscillationCorrFac_)*avDisp;
} }
} }
// convert global back to local // convert global back to local
forAll(slaveTraction_, facei) forAll(slaveTraction_, facei)
{ {
// slaveTraction_[facei] = // slaveTraction_[facei] =
// globalSlaveTraction // globalSlaveTraction
// [ // [
// mesh.faceZones()[slaveFaceZoneID()].whichFace(slavePatchStart + facei) // mesh.faceZones()[slaveFaceZoneID()].whichFace(slavePatchStart + facei)
// ]; // ];
slaveDisp_[facei] = slaveDisp_[facei] =
globalSlaveDisp globalSlaveDisp
[ [
mesh.faceZones()[slaveFaceZoneID()].whichFace(slavePatchStart + facei) mesh.faceZones()[slaveFaceZoneID()].whichFace(slavePatchStart + facei)
]; ];
} }
//Pout << "\tdone" << endl; //Pout << "\tdone" << endl;
} }
void Foam::dirichletNeumannFriction::writeDict(Ostream& os) const void Foam::dirichletNeumannFriction::writeDict(Ostream& os) const
{ {
word keyword(name()+"FrictionModelDict"); word keyword(name()+"FrictionModelDict");
os.writeKeyword(keyword) os.writeKeyword(keyword)
<< frictionContactModelDict_; << frictionContactModelDict_;
} }
// ************************************************************************* // // ************************************************************************* //

View file

@ -24,40 +24,40 @@ fvMesh solidMesh
// if (isA<symmetryPolyPatch>(solidMesh.boundaryMesh()[patchI])) // if (isA<symmetryPolyPatch>(solidMesh.boundaryMesh()[patchI]))
// { // {
// const labelList& meshPoints = // const labelList& meshPoints =
// solidMesh.boundaryMesh()[patchI].meshPoints(); // solidMesh.boundaryMesh()[patchI].meshPoints();
// vector avgN = // vector avgN =
// gAverage(solidMesh.boundaryMesh()[patchI].pointNormals()); // gAverage(solidMesh.boundaryMesh()[patchI].pointNormals());
// vector i(1, 0, 0); // vector i(1, 0, 0);
// vector j(0, 1, 0); // vector j(0, 1, 0);
// vector k(0, 0, 1); // vector k(0, 0, 1);
// if (mag(avgN&i) > 0.95) // if (mag(avgN&i) > 0.95)
// { // {
// forAll(meshPoints, pI) // forAll(meshPoints, pI)
// { // {
// newPoints[meshPoints[pI]].x() = 0; // newPoints[meshPoints[pI]].x() = 0;
// } // }
// } // }
// else if (mag(avgN&j) > 0.95) // else if (mag(avgN&j) > 0.95)
// { // {
// forAll(meshPoints, pI) // forAll(meshPoints, pI)
// { // {
// newPoints[meshPoints[pI]].y() = 0; // newPoints[meshPoints[pI]].y() = 0;
// } // }
// } // }
// else if (mag(avgN&k) > 0.95) // else if (mag(avgN&k) > 0.95)
// { // {
// forAll(meshPoints, pI) // forAll(meshPoints, pI)
// { // {
// newPoints[meshPoints[pI]].z() = 0; // newPoints[meshPoints[pI]].z() = 0;
// } // }
// } // }
// avgN = gAverage(solidMesh.boundaryMesh()[patchI].pointNormals()); // avgN = gAverage(solidMesh.boundaryMesh()[patchI].pointNormals());
// Pout << "avgN = " << avgN << endl; // Pout << "avgN = " << avgN << endl;
// } // }
// } // }

View file

@ -24,40 +24,40 @@ fvMesh solidMesh
// if (isA<symmetryPolyPatch>(solidMesh.boundaryMesh()[patchI])) // if (isA<symmetryPolyPatch>(solidMesh.boundaryMesh()[patchI]))
// { // {
// const labelList& meshPoints = // const labelList& meshPoints =
// solidMesh.boundaryMesh()[patchI].meshPoints(); // solidMesh.boundaryMesh()[patchI].meshPoints();
// vector avgN = // vector avgN =
// gAverage(solidMesh.boundaryMesh()[patchI].pointNormals()); // gAverage(solidMesh.boundaryMesh()[patchI].pointNormals());
// vector i(1, 0, 0); // vector i(1, 0, 0);
// vector j(0, 1, 0); // vector j(0, 1, 0);
// vector k(0, 0, 1); // vector k(0, 0, 1);
// if (mag(avgN&i) > 0.95) // if (mag(avgN&i) > 0.95)
// { // {
// forAll(meshPoints, pI) // forAll(meshPoints, pI)
// { // {
// newPoints[meshPoints[pI]].x() = 0; // newPoints[meshPoints[pI]].x() = 0;
// } // }
// } // }
// else if (mag(avgN&j) > 0.95) // else if (mag(avgN&j) > 0.95)
// { // {
// forAll(meshPoints, pI) // forAll(meshPoints, pI)
// { // {
// newPoints[meshPoints[pI]].y() = 0; // newPoints[meshPoints[pI]].y() = 0;
// } // }
// } // }
// else if (mag(avgN&k) > 0.95) // else if (mag(avgN&k) > 0.95)
// { // {
// forAll(meshPoints, pI) // forAll(meshPoints, pI)
// { // {
// newPoints[meshPoints[pI]].z() = 0; // newPoints[meshPoints[pI]].z() = 0;
// } // }
// } // }
// avgN = gAverage(solidMesh.boundaryMesh()[patchI].pointNormals()); // avgN = gAverage(solidMesh.boundaryMesh()[patchI].pointNormals());
// Pout << "avgN = " << avgN << endl; // Pout << "avgN = " << avgN << endl;
// } // }
// } // }

View file

@ -22,40 +22,40 @@ fvMesh solidMesh
// if (isA<symmetryPolyPatch>(solidMesh.boundaryMesh()[patchI])) // if (isA<symmetryPolyPatch>(solidMesh.boundaryMesh()[patchI]))
// { // {
// const labelList& meshPoints = // const labelList& meshPoints =
// solidMesh.boundaryMesh()[patchI].meshPoints(); // solidMesh.boundaryMesh()[patchI].meshPoints();
// vector avgN = // vector avgN =
// gAverage(solidMesh.boundaryMesh()[patchI].pointNormals()); // gAverage(solidMesh.boundaryMesh()[patchI].pointNormals());
// vector i(1, 0, 0); // vector i(1, 0, 0);
// vector j(0, 1, 0); // vector j(0, 1, 0);
// vector k(0, 0, 1); // vector k(0, 0, 1);
// if (mag(avgN&i) > 0.95) // if (mag(avgN&i) > 0.95)
// { // {
// forAll(meshPoints, pI) // forAll(meshPoints, pI)
// { // {
// newPoints[meshPoints[pI]].x() = 0; // newPoints[meshPoints[pI]].x() = 0;
// } // }
// } // }
// else if (mag(avgN&j) > 0.95) // else if (mag(avgN&j) > 0.95)
// { // {
// forAll(meshPoints, pI) // forAll(meshPoints, pI)
// { // {
// newPoints[meshPoints[pI]].y() = 0; // newPoints[meshPoints[pI]].y() = 0;
// } // }
// } // }
// else if (mag(avgN&k) > 0.95) // else if (mag(avgN&k) > 0.95)
// { // {
// forAll(meshPoints, pI) // forAll(meshPoints, pI)
// { // {
// newPoints[meshPoints[pI]].z() = 0; // newPoints[meshPoints[pI]].z() = 0;
// } // }
// } // }
// avgN = gAverage(solidMesh.boundaryMesh()[patchI].pointNormals()); // avgN = gAverage(solidMesh.boundaryMesh()[patchI].pointNormals());
// Pout << "avgN = " << avgN << endl; // Pout << "avgN = " << avgN << endl;
// } // }
// } // }

View file

@ -100,7 +100,7 @@ int main(int argc, char *argv[])
# include "UEqn.H" # include "UEqn.H"
// --- PISO loop // --- PISO loop
while (piso.correct()) while (piso.correct())
{ {
# include "ftEqn.H" # include "ftEqn.H"
# include "bEqn.H" # include "bEqn.H"

View file

@ -11,4 +11,4 @@ EXE_LIBS = \
-lspecie \ -lspecie \
-lcompressibleTurbulenceModel \ -lcompressibleTurbulenceModel \
-lcompressibleRASModels \ -lcompressibleRASModels \
-lcompressibleLESModels -lcompressibleLESModels

View file

@ -77,7 +77,7 @@
IOobject::MUST_READ, IOobject::MUST_READ,
IOobject::AUTO_WRITE IOobject::AUTO_WRITE
), ),
mesh mesh
); );
i == h - 0.5*(magSqr(Urot) - magSqr(Urel)); i == h - 0.5*(magSqr(Urot) - magSqr(Urel));

View file

@ -1,30 +1,30 @@
{ {
// Create relative velocity // Create relative velocity
Urel == U; Urel == U;
mrfZones.relativeVelocity(Urel); mrfZones.relativeVelocity(Urel);
// Create rotational velocity (= omega x r) // Create rotational velocity (= omega x r)
Urot == U - Urel; Urot == U - Urel;
fvScalarMatrix iEqn fvScalarMatrix iEqn
( (
fvm::ddt(rho, i) fvm::ddt(rho, i)
+ fvm::div(phi, i) + fvm::div(phi, i)
- fvm::laplacian(turbulence->alphaEff(), i) - fvm::laplacian(turbulence->alphaEff(), i)
== ==
// Viscous heating: note sign (devRhoReff has a minus in it) // Viscous heating: note sign (devRhoReff has a minus in it)
- (turbulence->devRhoReff() && fvc::grad(U)) - (turbulence->devRhoReff() && fvc::grad(U))
); );
iEqn.relax(); iEqn.relax();
iEqn.solve(); iEqn.solve();
// From rothalpy, calculate enthalpy after solution of rothalpy equation // From rothalpy, calculate enthalpy after solution of rothalpy equation
h = i + 0.5*(magSqr(Urot) - magSqr(Urel)); h = i + 0.5*(magSqr(Urot) - magSqr(Urel));
h.correctBoundaryConditions(); h.correctBoundaryConditions();
// Update thermo for new h // Update thermo for new h
thermo.correct(); thermo.correct();
psis = thermo.psi()/thermo.Cp()*thermo.Cv(); psis = thermo.psi()/thermo.Cp()*thermo.Cv();
} }

View file

@ -1,3 +1,3 @@
icoDyMIbFoam.C icoDyMIbFoam.C
EXE = $(FOAM_APPBIN)/icoDyMIbFoam EXE = $(FOAM_APPBIN)/icoDyMIbFoam

View file

@ -13,7 +13,7 @@ https://wiki.archlinux.org/index.php/Raspberry_Pi
* Install required packages: * Install required packages:
pacman -S git gcc cmake bison flex make openmpi --needed base-devel pacman -S git gcc cmake bison flex make openmpi --needed base-devel
* Create the foam-extend installation directory: * Create the foam-extend installation directory:
@ -51,13 +51,13 @@ cat <<'EOF' >> patch.txt
--- etc/prefs.sh-EXAMPLE 2015-11-23 22:54:50.341631348 -0500 --- etc/prefs.sh-EXAMPLE 2015-11-23 22:54:50.341631348 -0500
+++ etc/prefs.sh 2015-12-05 13:31:02.967676779 -0500 +++ etc/prefs.sh 2015-12-05 13:31:02.967676779 -0500
@@ -36,7 +36,7 @@ @@ -36,7 +36,7 @@
# Specify system compiler # Specify system compiler
# ~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~
-#compilerInstall=System -#compilerInstall=System
+compilerInstall=System +compilerInstall=System
#compilerInstall=FOAM #compilerInstall=FOAM
# Specify system openmpi # Specify system openmpi
@@ -46,14 +46,14 @@ @@ -46,14 +46,14 @@
# The other openmpi related variables will be initialized using # The other openmpi related variables will be initialized using
@ -79,7 +79,7 @@ cat <<'EOF' >> patch.txt
+export OPENMPI_INCLUDE_DIR="`$OPENMPI_BIN_DIR/mpicc --showme:incdirs`" +export OPENMPI_INCLUDE_DIR="`$OPENMPI_BIN_DIR/mpicc --showme:incdirs`"
+export OPENMPI_COMPILE_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:compile`" +export OPENMPI_COMPILE_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:compile`"
+export OPENMPI_LINK_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:link`" +export OPENMPI_LINK_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:link`"
# Specify system installed ThirdParty packages/libraries # Specify system installed ThirdParty packages/libraries
# NB: The packages installed under $WM_THIRD_PARTY_DIR # NB: The packages installed under $WM_THIRD_PARTY_DIR
@@ -201,7 +201,6 @@ @@ -201,7 +201,6 @@
@ -97,12 +97,12 @@ cat <<'EOF' >> patch.txt
-export WM_THIRD_PARTY_USE_CMAKE_322=1 -export WM_THIRD_PARTY_USE_CMAKE_322=1
+#export WM_THIRD_PARTY_USE_CMAKE_322=1 +#export WM_THIRD_PARTY_USE_CMAKE_322=1
+unset WM_THIRD_PARTY_USE_CMAKE_322 +unset WM_THIRD_PARTY_USE_CMAKE_322
# #
# For AllMake.stage2 # For AllMake.stage2
EOF EOF
# Patch the file prefs.sh # Patch the file prefs.sh
patch -p0 < patch.txt patch -p0 < patch.txt
# Cleanup # Cleanup
@ -128,7 +128,7 @@ services on your Raspberry Pi, you might even ran out of memory completely. So
it is recommended not to compile foam-extend in parallel unless you keep an eye it is recommended not to compile foam-extend in parallel unless you keep an eye
regularly on the compilation process and adjust your environment variable regularly on the compilation process and adjust your environment variable
WM_NCOMPPROCS accordingly so you can compile some libraries/applications in WM_NCOMPPROCS accordingly so you can compile some libraries/applications in
parallel and some others using just 1 core. parallel and some others using just 1 core.
export WM_NCOMPPROCS=1 # or maybe 2 export WM_NCOMPPROCS=1 # or maybe 2

View file

@ -54,14 +54,14 @@ cat <<'EOF' >> patch.txt
--- etc/prefs.sh-EXAMPLE 2015-11-26 05:01:05.676022832 +0000 --- etc/prefs.sh-EXAMPLE 2015-11-26 05:01:05.676022832 +0000
+++ etc/prefs.sh 2015-12-05 17:27:58.100579669 +0000 +++ etc/prefs.sh 2015-12-05 17:27:58.100579669 +0000
@@ -36,8 +36,9 @@ @@ -36,8 +36,9 @@
# Specify system compiler # Specify system compiler
# ~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~
-#compilerInstall=System -#compilerInstall=System
+compilerInstall=System +compilerInstall=System
#compilerInstall=FOAM #compilerInstall=FOAM
+#WM_COMPILER=Gcc49 +#WM_COMPILER=Gcc49
# Specify system openmpi # Specify system openmpi
# ~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~
@@ -46,14 +47,14 @@ @@ -46,14 +47,14 @@
@ -84,7 +84,7 @@ cat <<'EOF' >> patch.txt
+export OPENMPI_INCLUDE_DIR="`$OPENMPI_BIN_DIR/mpicc --showme:incdirs`" +export OPENMPI_INCLUDE_DIR="`$OPENMPI_BIN_DIR/mpicc --showme:incdirs`"
+export OPENMPI_COMPILE_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:compile`" +export OPENMPI_COMPILE_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:compile`"
+export OPENMPI_LINK_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:link`" +export OPENMPI_LINK_FLAGS="`$OPENMPI_BIN_DIR/mpicc --showme:link`"
# Specify system installed ThirdParty packages/libraries # Specify system installed ThirdParty packages/libraries
# NB: The packages installed under $WM_THIRD_PARTY_DIR # NB: The packages installed under $WM_THIRD_PARTY_DIR
@@ -201,7 +202,6 @@ @@ -201,7 +202,6 @@
@ -102,12 +102,12 @@ cat <<'EOF' >> patch.txt
-export WM_THIRD_PARTY_USE_CMAKE_322=1 -export WM_THIRD_PARTY_USE_CMAKE_322=1
+#export WM_THIRD_PARTY_USE_CMAKE_322=1 +#export WM_THIRD_PARTY_USE_CMAKE_322=1
+unset WM_THIRD_PARTY_USE_CMAKE_322 +unset WM_THIRD_PARTY_USE_CMAKE_322
# #
# For AllMake.stage2 # For AllMake.stage2
EOF EOF
# Patch the file prefs.sh # Patch the file prefs.sh
patch -p0 < patch.txt patch -p0 < patch.txt
# Cleanup # Cleanup
@ -133,7 +133,7 @@ services on your Raspberry Pi, you might even ran out of memory completely. So
it is recommended not to compile foam-extend in parallel unless you keep an eye it is recommended not to compile foam-extend in parallel unless you keep an eye
regularly on the compilation process and adjust your environment variable regularly on the compilation process and adjust your environment variable
WM_NCOMPPROCS accordingly so you can compile some libraries/applications in WM_NCOMPPROCS accordingly so you can compile some libraries/applications in
parallel and some others using just 1 core. parallel and some others using just 1 core.
export WM_NCOMPPROCS=1 # or maybe 2 export WM_NCOMPPROCS=1 # or maybe 2

View file

@ -49,7 +49,7 @@ INSTRUCTIONS ON HOW TO INSTALL AND RUN THE WINDOWS VERSION OF FOAM-EXTEND
http://www.open-mpi.org/software/ompi/v1.6/downloads/OpenMPI_v1.6.1-1_win64.exe http://www.open-mpi.org/software/ompi/v1.6/downloads/OpenMPI_v1.6.1-1_win64.exe
http://www.paraview.org/download http://www.paraview.org/download
It is strongly recommended to install these in directories with no white spaces. It is strongly recommended to install these in directories with no white spaces.
Once installed, create new environment variables called MPI_ROOTDIR and PARAVIEW_HOME Once installed, create new environment variables called MPI_ROOTDIR and PARAVIEW_HOME
to point to the installation directory where you installed them. This can be done by to point to the installation directory where you installed them. This can be done by
editing the user-editable settings in the environment configuration: editing the user-editable settings in the environment configuration:
call <PATH_TO_FOAM>\etc\foamWindowsEnvironment.bat call <PATH_TO_FOAM>\etc\foamWindowsEnvironment.bat

View file

@ -170,7 +170,7 @@
# You can override your identifier using this environment variable # You can override your identifier using this environment variable
#setenv CDASH_SUBMIT_LOCAL_HOST_ID choose_your_CDash_system_identifer #setenv CDASH_SUBMIT_LOCAL_HOST_ID choose_your_CDash_system_identifer
# Buildname suffix for the FOAM CDash test harness on foam-extend # Buildname suffix for the FOAM CDash test harness on foam-extend
# By default, the git branch name and git revision number will be # By default, the git branch name and git revision number will be
# appended to the CDash build name. # appended to the CDash build name.
# Otherwise, for users not using git, or wanting to provide additionnal # Otherwise, for users not using git, or wanting to provide additionnal

View file

@ -180,7 +180,7 @@ export FOAM_VERBOSE=1
# You can override your identifier using this environment variable # You can override your identifier using this environment variable
#export CDASH_SUBMIT_LOCAL_HOST_ID=choose_your_CDash_system_identifer #export CDASH_SUBMIT_LOCAL_HOST_ID=choose_your_CDash_system_identifer
# Buildname suffix for the FOAM CDash test harness on foam-extend # Buildname suffix for the FOAM CDash test harness on foam-extend
# By default, the git branch name and git revision number will be # By default, the git branch name and git revision number will be
# appended to the CDash build name. # appended to the CDash build name.
# Otherwise, for users not using git, or wanting to provide additionnal # Otherwise, for users not using git, or wanting to provide additionnal

View file

@ -179,7 +179,7 @@ export PARAVIEW_BIN_DIR=$PARAVIEW_DIR/bin
# You can override your identifier using this environment variable # You can override your identifier using this environment variable
#export CDASH_SUBMIT_LOCAL_HOST_ID=choose_your_CDash_system_identifer #export CDASH_SUBMIT_LOCAL_HOST_ID=choose_your_CDash_system_identifer
# Buildname suffix for the FOAM CDash test harness on foam-extend # Buildname suffix for the FOAM CDash test harness on foam-extend
# By default, the git branch name and git revision number will be # By default, the git branch name and git revision number will be
# appended to the CDash build name. # appended to the CDash build name.
# Otherwise, for users not using git, or wanting to provide additionnal # Otherwise, for users not using git, or wanting to provide additionnal

View file

@ -218,7 +218,7 @@ public:
cellVolume[nei], cellVolume[nei],
phiMaxIn[nei] - phi_[nei], phiMaxIn[nei] - phi_[nei],
phiMinIn[nei] - phi_[nei], phiMinIn[nei] - phi_[nei],
(deltaRRight & gradPhiIn[nei]) (deltaRRight & gradPhiIn[nei])
); );
} }

View file

@ -66,7 +66,7 @@ public:
//- Construct from mesh //- Construct from mesh
numericFluxBase(const fvMesh& mesh) numericFluxBase(const fvMesh& mesh)
: :
basicNumericFlux(mesh) basicNumericFlux(mesh)
{} {}

View file

@ -420,7 +420,7 @@ void Foam::decompositionMethod::fixCyclics
) << "Fixed " << nFixedCyclics << " disconnected cyclic faces"; ) << "Fixed " << nFixedCyclics << " disconnected cyclic faces";
} }
} }
while (nFixedCyclics > 0); while (nFixedCyclics > 0);
} }

View file

@ -114,7 +114,7 @@ public:
//- Return the solid-body motion transformation septernion //- Return the solid-body motion transformation septernion
virtual septernion transformation() const; virtual septernion transformation() const;
//- Return the solid-body motion velocity //- Return the solid-body motion velocity
virtual septernion velocity() const; virtual septernion velocity() const;
//- Update properties from given dictionary //- Update properties from given dictionary

View file

@ -125,7 +125,7 @@ public:
//- Return the solid-body motion transformation septernion //- Return the solid-body motion transformation septernion
virtual septernion transformation() const; virtual septernion transformation() const;
//- Return the solid-body motion velocity //- Return the solid-body motion velocity
virtual septernion velocity() const; virtual septernion velocity() const;
//- Update properties from given dictionary //- Update properties from given dictionary

View file

@ -148,7 +148,7 @@ public:
//- Return the solid-body motion transformation septernion //- Return the solid-body motion transformation septernion
virtual septernion transformation() const; virtual septernion transformation() const;
//- Return the solid-body motion velocity //- Return the solid-body motion velocity
virtual septernion velocity() const; virtual septernion velocity() const;
//- Update properties from given dictionary //- Update properties from given dictionary

View file

@ -131,7 +131,7 @@ public:
//- Return the solid-body motion transformation septernion //- Return the solid-body motion transformation septernion
virtual septernion transformation() const; virtual septernion transformation() const;
//- Return the solid-body motion velocity //- Return the solid-body motion velocity
virtual septernion velocity() const; virtual septernion velocity() const;
//- Update properties from given dictionary //- Update properties from given dictionary

View file

@ -106,8 +106,8 @@ public:
//- Return the solid-body motion transformation septernion //- Return the solid-body motion transformation septernion
virtual septernion transformation() const; virtual septernion transformation() const;
//- Return the solid-body motion velocity //- Return the solid-body motion velocity
virtual septernion velocity() const; virtual septernion velocity() const;
//- Update properties from given dictionary //- Update properties from given dictionary

View file

@ -128,11 +128,11 @@ public:
// Access // Access
//- Return reference to GGI patch //- Return reference to GGI patch
const ggiFvPatch& ggiPatch() const const ggiFvPatch& ggiPatch() const
{ {
return ggiPatch_; return ggiPatch_;
} }
//- Return shadow patch field //- Return shadow patch field
const ggiFvPatchField<Type>& shadowPatchField() const; const ggiFvPatchField<Type>& shadowPatchField() const;

View file

@ -124,28 +124,27 @@ void jumpGgiFvPatchField<Type>::initInterfaceMatrixUpdate
scalarField sField(sfc.size()); scalarField sField(sfc.size());
if if
( (
reinterpret_cast<const void*>(&psiInternal) reinterpret_cast<const void*>(&psiInternal)
== reinterpret_cast<const void*>(&this->internalField()) == reinterpret_cast<const void*>(&this->internalField())
) )
{ {
const scalarField jf = jump()().component(cmpt); const scalarField jf = jump()().component(cmpt);
forAll (sField, i) forAll (sField, i)
{ {
sField[i] = psiInternal[sfc[i]] + jf[i]; sField[i] = psiInternal[sfc[i]] + jf[i];
} }
} }
else else
{ {
forAll (sField, i)
forAll (sField, i) {
{
sField[i] = psiInternal[sfc[i]]; sField[i] = psiInternal[sfc[i]];
} }
} }
scalarField pnf = this->ggiPatch().interpolate(sField); scalarField pnf = this->ggiPatch().interpolate(sField);
// Multiply the field by coefficients and add into the result // Multiply the field by coefficients and add into the result
const unallocLabelList& fc = this->ggiPatch().faceCells(); const unallocLabelList& fc = this->ggiPatch().faceCells();

View file

@ -88,27 +88,27 @@ bool Foam::dlLibraryTable::open(const fileName& functionLibName)
// Capitan) with System Integrity Protection (SIP) enabled, let's try // Capitan) with System Integrity Protection (SIP) enabled, let's try
// building a full path using well-known environment variables. This is // building a full path using well-known environment variables. This is
// the last resort, unless you provide the full pathname yourself. // the last resort, unless you provide the full pathname yourself.
if (!functionLibPtr) if (!functionLibPtr)
{ {
fileName l_LIBBIN_Name = fileName l_LIBBIN_Name =
getEnv("FOAM_LIBBIN")/osxFileName; getEnv("FOAM_LIBBIN")/osxFileName;
functionLibPtr = functionLibPtr =
dlopen(l_LIBBIN_Name.c_str(), RTLD_LAZY|RTLD_GLOBAL); dlopen(l_LIBBIN_Name.c_str(), RTLD_LAZY|RTLD_GLOBAL);
} }
if (!functionLibPtr) if (!functionLibPtr)
{ {
fileName l_SITE_LIBBIN_Name = fileName l_SITE_LIBBIN_Name =
getEnv("FOAM_SITE_LIBBIN")/osxFileName; getEnv("FOAM_SITE_LIBBIN")/osxFileName;
functionLibPtr = functionLibPtr =
dlopen(l_SITE_LIBBIN_Name.c_str(), RTLD_LAZY|RTLD_GLOBAL); dlopen(l_SITE_LIBBIN_Name.c_str(), RTLD_LAZY|RTLD_GLOBAL);
} }
if (!functionLibPtr) if (!functionLibPtr)
{ {
fileName l_USER_LIBBIN_Name = fileName l_USER_LIBBIN_Name =
getEnv("FOAM_USER_LIBBIN")/osxFileName; getEnv("FOAM_USER_LIBBIN")/osxFileName;
functionLibPtr = functionLibPtr =
dlopen(l_USER_LIBBIN_Name.c_str(), RTLD_LAZY|RTLD_GLOBAL); dlopen(l_USER_LIBBIN_Name.c_str(), RTLD_LAZY|RTLD_GLOBAL);
} }
#elif defined mingw #elif defined mingw
if(!functionLibPtr && functionLibName.ext()=="so") { if(!functionLibPtr && functionLibName.ext()=="so") {
fileName lName=functionLibName.lessExt()+".dll"; fileName lName=functionLibName.lessExt()+".dll";

View file

@ -318,7 +318,7 @@ void GGIInterpolation<MasterPatch, SlavePatch>::findNeighboursAABB
) )
// forAll (masterPatch_, faceMi) // forAll (masterPatch_, faceMi)
{ {
masterPatchBB[faceMi - pmStart] = boundBox masterPatchBB[faceMi - pmStart] = boundBox
( (
masterPatch_[faceMi].points(masterPatch_.points()), masterPatch_[faceMi].points(masterPatch_.points()),
false false

View file

@ -997,7 +997,7 @@ Foam::BlockMatrixAgglomeration<Type>::restrictMatrix() const
// of block coefficients must be done by a FIELD (not interface) // of block coefficients must be done by a FIELD (not interface)
// via a new set of virtual functions // via a new set of virtual functions
// HJ, 16/Mar/2016 // HJ, 16/Mar/2016
// Note: in the scalar AMG, agglomeration is done by the interface // Note: in the scalar AMG, agglomeration is done by the interface
// (always scalar) but in the block matrix it is done by a // (always scalar) but in the block matrix it is done by a
// templated block interface field // templated block interface field

View file

@ -21,7 +21,7 @@ License
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with foam-extend. If not, see <http://www.gnu.org/licenses/>. along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
ClassMixing ClassMixing
Foam::MixingPlaneBlockLduInterfaceField Foam::MixingPlaneBlockLduInterfaceField
Description Description

View file

@ -314,7 +314,7 @@ bool Foam::BlockLduMatrix<Type>::symmetric() const
// pattern, but asymmetric because the diagonal or upper coefficients are // pattern, but asymmetric because the diagonal or upper coefficients are
// square and asymmetric within the coefficients. // square and asymmetric within the coefficients.
// In such cases, the symmetric check in this function will falsely claim // In such cases, the symmetric check in this function will falsely claim
// the matrix is symmetries whereas in its flattened nature it is not // the matrix is symmetries whereas in its flattened nature it is not
// For the moment, symmetric check is used to see if the lower() is // For the moment, symmetric check is used to see if the lower() is
// allocated or not. // allocated or not.
// Please reconsider, especially related to matrix structure in // Please reconsider, especially related to matrix structure in

View file

@ -136,7 +136,7 @@ void Foam::ggiAMGInterface::initFastReduce() const
// Now local zone indices contain the index of a local face that will // Now local zone indices contain the index of a local face that will
// provide the data. For faces that are not local, the index will be -1 // provide the data. For faces that are not local, the index will be -1
// Find out where my zone data is going to // Find out where my zone data is going to
// Make a sending sub-map // Make a sending sub-map

View file

@ -134,7 +134,7 @@ Foam::List<Foam::labelPair> Foam::mapDistribute::schedule
// const labelPair& twoProcs = comms[i]; // const labelPair& twoProcs = comms[i];
// label sendProc = twoProcs[0]; // label sendProc = twoProcs[0];
// label recvProc = twoProcs[1]; // label recvProc = twoProcs[1];
// if (recvProc == Pstream::myProcNo()) // if (recvProc == Pstream::myProcNo())
// { // {
// Pout<< " receive from " << sendProc << endl; // Pout<< " receive from " << sendProc << endl;

View file

@ -458,7 +458,7 @@ void Foam::ggiPolyPatch::calcSendReceive() const
// Now local zone indices contain the index of a local face that will // Now local zone indices contain the index of a local face that will
// provide the data. For faces that are not local, the index will be -1 // provide the data. For faces that are not local, the index will be -1
// Find out where my zone data is going to // Find out where my zone data is going to
// Make a sending sub-map // Make a sending sub-map

View file

@ -640,8 +640,8 @@ inline Tensor<Cmpt> scaleRow(const Tensor<Cmpt>& t, const Vector<Cmpt>& v)
{ {
return Tensor<Cmpt> return Tensor<Cmpt>
( (
t.xx()*v.x(), t.xy()*v.y(), t.xz()*v.z(), t.xx()*v.x(), t.xy()*v.y(), t.xz()*v.z(),
t.yx()*v.x(), t.yy()*v.y(), t.yz()*v.z(), t.yx()*v.x(), t.yy()*v.y(), t.yz()*v.z(),
t.zx()*v.x(), t.zy()*v.y(), t.zz()*v.z() t.zx()*v.x(), t.zy()*v.y(), t.zz()*v.z()
); );
} }

View file

@ -2582,7 +2582,7 @@ Foam::immersedBoundaryFvPatch::triFacesInMesh() const
triFacesInMesh_.clear(); triFacesInMesh_.clear();
triFacesInMesh_.setCapacity(triCf.size()/2); triFacesInMesh_.setCapacity(triCf.size()/2);
// Find tri faces with centre inside the processor mesh // Find tri faces with centre inside the processor mesh
forAll(triCf, fI) forAll(triCf, fI)
{ {

View file

@ -562,7 +562,7 @@ public:
// Helper functions // Helper functions
//- Renumber Field to corespond to triangular faces contained //- Renumber Field to corespond to triangular faces contained
// inside the mesh // inside the mesh
template<class Type> template<class Type>

View file

@ -321,14 +321,14 @@ Foam::immersedBoundaryFvPatch::toSamplingPoints
template<class Type> template<class Type>
const Foam::tmp<Foam::Field<Type> > const Foam::tmp<Foam::Field<Type> >
Foam::immersedBoundaryFvPatch::renumberField Foam::immersedBoundaryFvPatch::renumberField
( (
const Field<Type>& f const Field<Type>& f
) const ) const
{ {
const dynamicLabelList& triFInM = this->triFacesInMesh(); const dynamicLabelList& triFInM = this->triFacesInMesh();
tmp<Field<Type> > trf(new Field<Type>(triFInM.size())); tmp<Field<Type> > trf(new Field<Type>(triFInM.size()));
Field<Type>& rf = trf(); Field<Type>& rf = trf();

View file

@ -324,7 +324,7 @@ void immersedBoundaryOmegaWallFunctionFvPatchScalarField::updateCoeffs()
// 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]));
// Bugfix - set zeroGradient bc for large omega values at ib boundary // Bugfix - set zeroGradient bc for large omega values at ib boundary
// to avoid k unboundedness (IG 30/OCT/2015), not // to avoid k unboundedness (IG 30/OCT/2015), not
// sure if this is a good criteria // sure if this is a good criteria
if(omegaNew[ibCellI] > 10.0) if(omegaNew[ibCellI] > 10.0)

View file

@ -212,19 +212,19 @@ immersedBoundaryVelocityWallFunctionFvPatchVectorField::wallTangentialValue() co
const immersedBoundaryFvPatch& ibFvP = const immersedBoundaryFvPatch& ibFvP =
immersedBoundaryFvPatchVectorField::ibPatch(); immersedBoundaryFvPatchVectorField::ibPatch();
if if
( (
wallTangentialValue_.empty() wallTangentialValue_.empty()
|| (ibFvP.movingIb() || ibFvP.boundaryMesh().mesh().moving()) || (ibFvP.movingIb() || ibFvP.boundaryMesh().mesh().moving())
) )
{ {
wallTangentialValue_.setSize wallTangentialValue_.setSize
( (
this->ibPatch().ibCells().size(), this->ibPatch().ibCells().size(),
0 0
); );
} }
return wallTangentialValue_; return wallTangentialValue_;
} }
@ -236,9 +236,9 @@ immersedBoundaryVelocityWallFunctionFvPatchVectorField::tauWall() const
const immersedBoundaryFvPatch& ibFvP = const immersedBoundaryFvPatch& ibFvP =
immersedBoundaryFvPatchVectorField::ibPatch(); immersedBoundaryFvPatchVectorField::ibPatch();
if if
( (
tauWall_.empty() tauWall_.empty()
|| (ibFvP.movingIb() || ibFvP.boundaryMesh().mesh().moving()) || (ibFvP.movingIb() || ibFvP.boundaryMesh().mesh().moving())
) )
{ {
@ -248,7 +248,7 @@ immersedBoundaryVelocityWallFunctionFvPatchVectorField::tauWall() const
vector::zero vector::zero
); );
} }
return tauWall_; return tauWall_;
} }
@ -260,9 +260,9 @@ immersedBoundaryVelocityWallFunctionFvPatchVectorField::wallMask() const
const immersedBoundaryFvPatch& ibFvP = const immersedBoundaryFvPatch& ibFvP =
immersedBoundaryFvPatchVectorField::ibPatch(); immersedBoundaryFvPatchVectorField::ibPatch();
if if
( (
wallMask_.empty() wallMask_.empty()
|| (ibFvP.movingIb() || ibFvP.boundaryMesh().mesh().moving()) || (ibFvP.movingIb() || ibFvP.boundaryMesh().mesh().moving())
) )
{ {
@ -272,7 +272,7 @@ immersedBoundaryVelocityWallFunctionFvPatchVectorField::wallMask() const
false false
); );
} }
return wallMask_; return wallMask_;
} }

View file

@ -179,9 +179,9 @@ Foam::Field<Type>& immersedBoundaryWallFunctionFvPatchField<Type>::wallValue() c
const immersedBoundaryFvPatch& ibFvP = const immersedBoundaryFvPatch& ibFvP =
immersedBoundaryFvPatchField<Type>::ibPatch(); immersedBoundaryFvPatchField<Type>::ibPatch();
if if
( (
wallValue_.empty() wallValue_.empty()
|| (ibFvP.movingIb() || ibFvP.boundaryMesh().mesh().moving()) || (ibFvP.movingIb() || ibFvP.boundaryMesh().mesh().moving())
) )
{ {
@ -191,7 +191,7 @@ Foam::Field<Type>& immersedBoundaryWallFunctionFvPatchField<Type>::wallValue() c
pTraits<Type>::zero pTraits<Type>::zero
); );
} }
return wallValue_; return wallValue_;
} }
@ -207,9 +207,9 @@ Foam::boolList& immersedBoundaryWallFunctionFvPatchField<Type>::wallMask() const
const immersedBoundaryFvPatch& ibFvP = const immersedBoundaryFvPatch& ibFvP =
immersedBoundaryFvPatchField<Type>::ibPatch(); immersedBoundaryFvPatchField<Type>::ibPatch();
if if
( (
wallMask_.empty() wallMask_.empty()
|| (ibFvP.movingIb() || ibFvP.boundaryMesh().mesh().moving()) || (ibFvP.movingIb() || ibFvP.boundaryMesh().mesh().moving())
) )
{ {
@ -219,7 +219,7 @@ Foam::boolList& immersedBoundaryWallFunctionFvPatchField<Type>::wallMask() const
false false
); );
} }
return wallMask_; return wallMask_;
} }

View file

@ -1,240 +1,240 @@
/*---------------------------------------------------------------------------*\ /*---------------------------------------------------------------------------*\
========= | ========= |
\\ / F ield | foam-extend: Open Source CFD \\ / F ield | foam-extend: Open Source CFD
\\ / O peration | Version: 3.2 \\ / O peration | Version: 3.2
\\ / A nd | Web: http://www.foam-extend.org \\ / A nd | Web: http://www.foam-extend.org
\\/ M anipulation | For copyright notice see file Copyright \\/ M anipulation | For copyright notice see file Copyright
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of foam-extend. This file is part of foam-extend.
foam-extend is free software: you can redistribute it and/or modify it foam-extend is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your Free Software Foundation, either version 3 of the License, or (at your
option) any later version. option) any later version.
foam-extend is distributed in the hope that it will be useful, but foam-extend is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details. General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with foam-extend. If not, see <http://www.gnu.org/licenses/>. along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
Class Class
Foam::octreeDataTriSurface Foam::octreeDataTriSurface
Description Description
Encapsulates data for octree searches on triSurface. Encapsulates data for octree searches on triSurface.
SourceFiles SourceFiles
octreeDataTriSurface.C octreeDataTriSurface.C
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#ifndef octreeDataTriSurface_H #ifndef octreeDataTriSurface_H
#define octreeDataTriSurface_H #define octreeDataTriSurface_H
#include "treeBoundBoxList.H" #include "treeBoundBoxList.H"
#include "labelList.H" #include "labelList.H"
#include "point.H" #include "point.H"
#include "triSurface.H" #include "triSurface.H"
#include "linePointRef.H" #include "linePointRef.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam namespace Foam
{ {
// Forward declaration of classes // Forward declaration of classes
template<class Type> class octree; template<class Type> class octree;
/*---------------------------------------------------------------------------*\ /*---------------------------------------------------------------------------*\
Class octreeDataTriSurface Declaration Class octreeDataTriSurface Declaration
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
class octreeDataTriSurface class octreeDataTriSurface
{ {
// Static data // Static data
//- tolerance on linear dimensions //- tolerance on linear dimensions
static scalar tol; static scalar tol;
// Private data // Private data
const triSurface& surface_; const triSurface& surface_;
const treeBoundBoxList allBb_; const treeBoundBoxList allBb_;
// Extra data to speed up distance searches. // Extra data to speed up distance searches.
// Triangles expressed as base + spanning vectors // Triangles expressed as base + spanning vectors
pointField base_; pointField base_;
pointField E0_; pointField E0_;
pointField E1_; pointField E1_;
scalarList a_; scalarList a_;
scalarList b_; scalarList b_;
scalarList c_; scalarList c_;
// Private Static Functions // Private Static Functions
//- fast triangle nearest point calculation. Returns point in E0, E1 //- fast triangle nearest point calculation. Returns point in E0, E1
// coordinate system: base + s*E0 + t*E1 // coordinate system: base + s*E0 + t*E1
static void nearestCoords static void nearestCoords
( (
const point& base, const point& base,
const point& E0, const point& E0,
const point& E1, const point& E1,
const scalar a, const scalar a,
const scalar b, const scalar b,
const scalar c, const scalar c,
const point& P, const point& P,
scalar& s, scalar& s,
scalar& t scalar& t
); );
//- Calculate bounding boxes for triangles //- Calculate bounding boxes for triangles
static treeBoundBoxList calcBb(const triSurface&); static treeBoundBoxList calcBb(const triSurface&);
// Private Member Functions // Private Member Functions
//- nearest point in xyz coord system //- nearest point in xyz coord system
point nearestPoint(const label index, const point& P) const; point nearestPoint(const label index, const point& P) const;
public: public:
// Declare name of the class and its debug switch // Declare name of the class and its debug switch
ClassName("octreeDataTriSurface"); ClassName("octreeDataTriSurface");
// Constructors // Constructors
//- Construct from triSurface. Holds reference. Bounding box //- Construct from triSurface. Holds reference. Bounding box
// calculated from triangle points. // calculated from triangle points.
octreeDataTriSurface(const triSurface&); octreeDataTriSurface(const triSurface&);
//- Construct from triSurface and bounding box. //- Construct from triSurface and bounding box.
// Holds references. // Holds references.
octreeDataTriSurface(const triSurface&, const treeBoundBoxList&); octreeDataTriSurface(const triSurface&, const treeBoundBoxList&);
// Member Functions // Member Functions
// Access // Access
const triSurface& surface() const const triSurface& surface() const
{ {
return surface_; return surface_;
} }
const treeBoundBoxList& allBb() const const treeBoundBoxList& allBb() const
{ {
return allBb_; return allBb_;
} }
label size() const label size() const
{ {
return allBb_.size(); return allBb_.size();
} }
// Search // Search
//- Get type of sample //- Get type of sample
label getSampleType label getSampleType
( (
const octree<octreeDataTriSurface>&, const octree<octreeDataTriSurface>&,
const point& const point&
) const; ) const;
//- Does (bb of) shape at index overlap bb //- Does (bb of) shape at index overlap bb
bool overlaps bool overlaps
( (
const label index, const label index,
const treeBoundBox& sampleBb const treeBoundBox& sampleBb
) const; ) const;
//- Does shape at index contain sample //- Does shape at index contain sample
bool contains bool contains
( (
const label index, const label index,
const point& sample const point& sample
) const; ) const;
//- Segment (from start to end) intersection with shape //- Segment (from start to end) intersection with shape
// at index. If intersects returns true and sets intersectionPoint // at index. If intersects returns true and sets intersectionPoint
bool intersects bool intersects
( (
const label index, const label index,
const point& start, const point& start,
const point& end, const point& end,
point& intersectionPoint point& intersectionPoint
) const; ) const;
//- Sets newTightest to bounding box (and returns true) if //- Sets newTightest to bounding box (and returns true) if
// nearer to sample than tightest bounding box. Otherwise // nearer to sample than tightest bounding box. Otherwise
// returns false. // returns false.
bool findTightest bool findTightest
( (
const label index, const label index,
const point& sample, const point& sample,
treeBoundBox& tightest treeBoundBox& tightest
) const; ) const;
//- Given index get unit normal and calculate (numerical) sign //- Given index get unit normal and calculate (numerical) sign
// of sample. // of sample.
// Used to determine accuracy of calcNearest or inside/outside. // Used to determine accuracy of calcNearest or inside/outside.
scalar calcSign scalar calcSign
( (
const label index, const label index,
const point& sample, const point& sample,
vector& n vector& n
) const; ) const;
//- Calculates nearest (to sample) point in shape. //- Calculates nearest (to sample) point in shape.
// Returns point and mag(nearest - sample) // Returns point and mag(nearest - sample)
scalar calcNearest scalar calcNearest
( (
const label index, const label index,
const point& sample, const point& sample,
point& nearest point& nearest
) const; ) const;
//- Calculates nearest (to line segment) point in shape. //- Calculates nearest (to line segment) point in shape.
// Returns distance and both point. // Returns distance and both point.
scalar calcNearest scalar calcNearest
( (
const label index, const label index,
const linePointRef& ln, const linePointRef& ln,
point& linePt, // nearest point on line point& linePt, // nearest point on line
point& shapePt // nearest point on shape point& shapePt // nearest point on shape
) const; ) const;
// Write // Write
// Write shape at index // Write shape at index
void write(Ostream& os, const label index) const; void write(Ostream& os, const label index) const;
// IOstream Operators // IOstream Operators
friend Istream& operator>>(Istream&, octreeDataTriSurface&); friend Istream& operator>>(Istream&, octreeDataTriSurface&);
friend Ostream& operator<<(Ostream&, const octreeDataTriSurface&); friend Ostream& operator<<(Ostream&, const octreeDataTriSurface&);
}; };
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam } // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#include "octreeDataTriSurfaceTreeLeaf.H" #include "octreeDataTriSurfaceTreeLeaf.H"
#endif #endif
// ************************************************************************* // // ************************************************************************* //

View file

@ -1,83 +1,83 @@
/*---------------------------------------------------------------------------*\ /*---------------------------------------------------------------------------*\
========= | ========= |
\\ / F ield | foam-extend: Open Source CFD \\ / F ield | foam-extend: Open Source CFD
\\ / O peration | Version: 3.2 \\ / O peration | Version: 3.2
\\ / A nd | Web: http://www.foam-extend.org \\ / A nd | Web: http://www.foam-extend.org
\\/ M anipulation | For copyright notice see file Copyright \\/ M anipulation | For copyright notice see file Copyright
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of foam-extend. This file is part of foam-extend.
foam-extend is free software: you can redistribute it and/or modify it foam-extend is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your Free Software Foundation, either version 3 of the License, or (at your
option) any later version. option) any later version.
foam-extend is distributed in the hope that it will be useful, but foam-extend is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details. General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with foam-extend. If not, see <http://www.gnu.org/licenses/>. along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
Description Description
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "octreeDataTriSurface.H" #include "octreeDataTriSurface.H"
#include "octreeDataTriSurfaceTreeLeaf.H" #include "octreeDataTriSurfaceTreeLeaf.H"
// * * * * * * * * * * * * * Template Specialisations * * * * * * * * * * * // // * * * * * * * * * * * * * Template Specialisations * * * * * * * * * * * //
template<> template<>
bool Foam::treeLeaf<Foam::octreeDataTriSurface>::findNearest bool Foam::treeLeaf<Foam::octreeDataTriSurface>::findNearest
( (
const octreeDataTriSurface& shapes, const octreeDataTriSurface& shapes,
const point& sample, const point& sample,
treeBoundBox& tightest, treeBoundBox& tightest,
label& tightestI, label& tightestI,
scalar& tightestDist scalar& tightestDist
) const ) const
{ {
// Some aliases // Some aliases
const treeBoundBoxList& allBb = shapes.allBb(); const treeBoundBoxList& allBb = shapes.allBb();
point& min = tightest.min(); point& min = tightest.min();
point& max = tightest.max(); point& max = tightest.max();
point nearest; point nearest;
bool changed = false; bool changed = false;
forAll(indices_, i) forAll(indices_, i)
{ {
label faceI = indices_[i]; label faceI = indices_[i];
// Quick rejection test. // Quick rejection test.
if (tightest.overlaps(allBb[faceI])) if (tightest.overlaps(allBb[faceI]))
{ {
// Full calculation // Full calculation
scalar dist = shapes.calcNearest(faceI, sample, nearest); scalar dist = shapes.calcNearest(faceI, sample, nearest);
if (dist < tightestDist) if (dist < tightestDist)
{ {
// Update bb (centered around sample, span is dist) // Update bb (centered around sample, span is dist)
min.x() = sample.x() - dist; min.x() = sample.x() - dist;
min.y() = sample.y() - dist; min.y() = sample.y() - dist;
min.z() = sample.z() - dist; min.z() = sample.z() - dist;
max.x() = sample.x() + dist; max.x() = sample.x() + dist;
max.y() = sample.y() + dist; max.y() = sample.y() + dist;
max.z() = sample.z() + dist; max.z() = sample.z() + dist;
tightestI = faceI; tightestI = faceI;
tightestDist = dist; tightestDist = dist;
changed = true; changed = true;
} }
} }
} }
return changed; return changed;
} }
// ************************************************************************* // // ************************************************************************* //

View file

@ -588,7 +588,7 @@ Foam::scalar Foam::drhodh(SteamState S)
else else
{ {
Info<<"IAPWS-IF97.C error, outside the regions 1-4"<<endl; Info<<"IAPWS-IF97.C error, outside the regions 1-4"<<endl;
// Keep compiler happy // Keep compiler happy
drhodh = 0; drhodh = 0;
} }

View file

@ -98,7 +98,7 @@ Foam::aungierRedlichKwong::aungierRedlichKwong(const dictionary& dict)
daSave(0.0), daSave(0.0),
d2aSave(0.0), d2aSave(0.0),
TSave(0.0) TSave(0.0)
{ {
is.check("aungierRedlichKwong::aungierRedlichKwong(Istream& is)"); is.check("aungierRedlichKwong::aungierRedlichKwong(Istream& is)");
} }

View file

@ -67,7 +67,7 @@ class aungierRedlichKwong
// private data // private data
//CL: data at critical point //CL: data at critical point
scalar pcrit_; scalar pcrit_;
scalar Tcrit_; scalar Tcrit_;
scalar rhocrit_; scalar rhocrit_;
scalar azentricFactor_; scalar azentricFactor_;

View file

@ -341,7 +341,7 @@ inline scalar aungierRedlichKwong::d2vdT2
scalar dpdv2=this->dpdv(rho, T)*this->dpdv(rho, T); scalar dpdv2=this->dpdv(rho, T)*this->dpdv(rho, T);
scalar dpdv3=dpdv2*this->dpdv(rho, T); scalar dpdv3=dpdv2*this->dpdv(rho, T);
return return
-( -(
dpdT2*this->d2pdv2(rho, T) dpdT2*this->d2pdv2(rho, T)
+ dpdv2*this->d2pdT2(rho, T) + dpdv2*this->d2pdT2(rho, T)

View file

@ -27,7 +27,7 @@ Description
Author Author
Christian Lucas Christian Lucas
Institut für Thermodynamik Institut für Thermodynamik
Technische Universität Braunschweig Technische Universität Braunschweig
Germany Germany
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
@ -44,7 +44,7 @@ Foam::pengRobinson::pengRobinson(Istream& is)
Tcrit_(readScalar(is)), Tcrit_(readScalar(is)),
azentricFactor_(readScalar(is)), azentricFactor_(readScalar(is)),
a0_(0.457235*pow(this->RR(), 2)*pow(Tcrit_, 2)/pcrit_), a0_(0.457235*pow(this->RR(), 2)*pow(Tcrit_, 2)/pcrit_),
b_(0.077796*this->RR()*Tcrit_/pcrit_), b_(0.077796*this->RR()*Tcrit_/pcrit_),
n_(0.37464 + 1.54226*azentricFactor_ - 0.26992*pow(azentricFactor_, 2)), n_(0.37464 + 1.54226*azentricFactor_ - 0.26992*pow(azentricFactor_, 2)),
b2_(b_*b_), b2_(b_*b_),
b3_(b2_*b_), b3_(b2_*b_),
@ -117,7 +117,7 @@ void Foam::pengRobinson::write(Ostream& os) const
Foam::Ostream& Foam::operator<<(Ostream& os, const pengRobinson& pr) Foam::Ostream& Foam::operator<<(Ostream& os, const pengRobinson& pr)
{ {
os << static_cast<const specie&>(pr)<< token::SPACE os << static_cast<const specie&>(pr)<< token::SPACE
<< pr.pcrit_ << tab<< pr.Tcrit_<< tab << pr.azentricFactor_; << pr.pcrit_ << tab<< pr.Tcrit_<< tab << pr.azentricFactor_;
os.check("Ostream& operator<<(Ostream& os, const pengRobinson& st)"); os.check("Ostream& operator<<(Ostream& os, const pengRobinson& st)");

View file

@ -41,7 +41,7 @@ SourceFiles
Author Author
Christian Lucas Christian Lucas
Institut für Thermodynamik Institut für Thermodynamik
Technische Universität Braunschweig Technische Universität Braunschweig
Germany Germany
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
@ -69,7 +69,7 @@ class pengRobinson
// private data // private data
//CL: data at critical point //CL: data at critical point
scalar pcrit_; scalar pcrit_;
scalar Tcrit_; scalar Tcrit_;
scalar azentricFactor_; scalar azentricFactor_;
//-Peng Robinson factors //-Peng Robinson factors
@ -111,8 +111,8 @@ public:
//- Construct from components //- Construct from components
inline pengRobinson inline pengRobinson
( (
const specie& sp const specie& sp
); );
//- Construct from Istream //- Construct from Istream
pengRobinson(Istream&); pengRobinson(Istream&);

View file

@ -68,8 +68,8 @@ inline pengRobinson::pengRobinson(const word& name, const pengRobinson& pr)
rhoMin_(pr.rhoMin_), rhoMin_(pr.rhoMin_),
rhoMax_(pr.rhoMax_), rhoMax_(pr.rhoMax_),
rhostd_(pr.rhostd_), rhostd_(pr.rhostd_),
aSave(0.0), aSave(0.0),
daSave(0.0), daSave(0.0),
d2aSave(0.0), d2aSave(0.0),
TSave(0.0) TSave(0.0)
{} {}
@ -199,7 +199,7 @@ inline scalar pengRobinson::n() const
inline scalar pengRobinson::p(const scalar rho, const scalar T) const inline scalar pengRobinson::p(const scalar rho, const scalar T) const
{ {
scalar Vm = this->W()/rho; scalar Vm = this->W()/rho;
scalar Vm2 = Vm*Vm; scalar Vm2 = Vm*Vm;
return this->RR()*T/(Vm - b_) - a(T)/(Vm2 + 2*b_*Vm - b2_); return this->RR()*T/(Vm - b_) - a(T)/(Vm2 + 2*b_*Vm - b2_);
} }
@ -336,7 +336,7 @@ inline scalar pengRobinson::d2vdT2
scalar dpdv2=this->dpdv(rho, T)*this->dpdv(rho, T); scalar dpdv2=this->dpdv(rho, T)*this->dpdv(rho, T);
scalar dpdv3=dpdv2*this->dpdv(rho, T); scalar dpdv3=dpdv2*this->dpdv(rho, T);
return return
-( -(
dpdT2*this->d2pdv2(rho, T) dpdT2*this->d2pdv2(rho, T)
+ dpdv2*this->d2pdT2(rho, T) + dpdv2*this->d2pdT2(rho, T)
@ -357,7 +357,7 @@ inline scalar pengRobinson::d2pdvdT
scalar Vm2 = Vm*Vm; scalar Vm2 = Vm*Vm;
scalar Vm3 = Vm2*Vm; scalar Vm3 = Vm2*Vm;
scalar Vm4 = Vm3*Vm; scalar Vm4 = Vm3*Vm;
return return
( (
2*dadT(T)*(b3_ - b2_*Vm - b_*Vm2 + Vm3) 2*dadT(T)*(b3_ - b2_*Vm - b_*Vm2 + Vm3)

View file

@ -78,7 +78,7 @@ Foam::redlichKwong::redlichKwong(const dictionary& dict)
rhoMax_(dict.subDict("equationOfState").lookupOrDefault("rhoMax",1500)), rhoMax_(dict.subDict("equationOfState").lookupOrDefault("rhoMax",1500)),
// Starting GUESS for the density by ideal gas law // Starting GUESS for the density by ideal gas law
rhostd_(this->rho(this->Pstd(), this->Tstd(), this->Pstd()/(this->Tstd()*this->R()))) rhostd_(this->rho(this->Pstd(), this->Tstd(), this->Pstd()/(this->Tstd()*this->R())))
{ {
is.check("redlichKwong::redlichKwong(Istream& is)"); is.check("redlichKwong::redlichKwong(Istream& is)");
} }

View file

@ -62,7 +62,7 @@ class redlichKwong
// private data // private data
//CL: data at critical point //CL: data at critical point
scalar pcrit_; scalar pcrit_;
scalar Tcrit_; scalar Tcrit_;
//CL: Redlich Kwong factors //CL: Redlich Kwong factors
scalar a_; scalar a_;

View file

@ -126,7 +126,7 @@ inline scalar redlichKwong::p(const scalar rho, const scalar T) const
} }
//Real deviative dp/dv at constant temperature //Real deviative dp/dv at constant temperature
//(molar values) //(molar values)
inline scalar redlichKwong::dpdv(const scalar rho, const scalar T) const inline scalar redlichKwong::dpdv(const scalar rho, const scalar T) const
{ {
@ -233,7 +233,7 @@ inline scalar redlichKwong::d2vdT2(const scalar rho, const scalar T) const
scalar dpdv2=this->dpdv(rho, T)*this->dpdv(rho, T); scalar dpdv2=this->dpdv(rho, T)*this->dpdv(rho, T);
scalar dpdv3=dpdv2*this->dpdv(rho, T); scalar dpdv3=dpdv2*this->dpdv(rho, T);
return return
-( -(
dpdT2*this->d2pdv2(rho, T) dpdT2*this->d2pdv2(rho, T)
+ dpdv2*this->d2pdT2(rho, T) + dpdv2*this->d2pdT2(rho, T)
@ -250,7 +250,7 @@ inline scalar redlichKwong::d2pdvdT(const scalar rho, const scalar T) const
scalar Vm2 = Vm*Vm; scalar Vm2 = Vm*Vm;
scalar Vm3 = Vm2*Vm; scalar Vm3 = Vm2*Vm;
scalar T15_ = pow(T, 1.5); scalar T15_ = pow(T, 1.5);
return return
-( -(
0.5* 0.5*

View file

@ -67,7 +67,7 @@ class soaveRedlichKwong
// private data // private data
//CL: data at critical point //CL: data at critical point
scalar pcrit_; scalar pcrit_;
scalar Tcrit_; scalar Tcrit_;
scalar azentricFactor_; scalar azentricFactor_;
//-Soave Redlich Kwong //-Soave Redlich Kwong

View file

@ -310,7 +310,7 @@ inline scalar soaveRedlichKwong::d2vdT2
scalar dpdv2=this->dpdv(rho, T)*this->dpdv(rho, T); scalar dpdv2=this->dpdv(rho, T)*this->dpdv(rho, T);
scalar dpdv3=dpdv2*this->dpdv(rho, T); scalar dpdv3=dpdv2*this->dpdv(rho, T);
return return
-( -(
dpdT2*this->d2pdv2(rho, T) dpdT2*this->d2pdv2(rho, T)
+ dpdv2*this->d2pdT2(rho, T) + dpdv2*this->d2pdT2(rho, T)

View file

@ -24,7 +24,7 @@ License
Author Author
Christian Lucas Christian Lucas
Institut für Thermodynamik Institut für Thermodynamik
Technische Universität Braunschweig Technische Universität Braunschweig
Germany Germany
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
@ -46,9 +46,9 @@ Foam::constantHeatCapacity<equationOfState>::constantHeatCapacity(Istream& is)
integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd())), integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd())),
integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd())), integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd())),
// cp @ STD (needed to limit cp for stability // cp @ STD (needed to limit cp for stability
cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd())) cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd()))
{ {
is.check("constantHeatCapacity::constantHeatCapacity(Istream& is)"); is.check("constantHeatCapacity::constantHeatCapacity(Istream& is)");
} }

View file

@ -31,8 +31,8 @@ Description
templated into the equationOfState templated into the equationOfState
-> uses the equation of state to calculate all real Gas properties like Enthalpy, Entropy ... -> uses the equation of state to calculate all real Gas properties like Enthalpy, Entropy ...
-> can not be used with the perfectGas equation of state -> can not be used with the perfectGas equation of state
Equations for the real gas correction: Have a look at thermodnamics books e.g. Thermodynamics: Equations for the real gas correction: Have a look at thermodnamics books e.g. Thermodynamics:
An Engineering Approch, 5 Edition, Chapter 12 An Engineering Approch, 5 Edition, Chapter 12
SourceFiles SourceFiles
@ -42,7 +42,7 @@ SourceFiles
Author Author
Christian Lucas Christian Lucas
Institut für Thermodynamik Institut für Thermodynamik
Technische Universität Braunschweig Technische Universität Braunschweig
Germany Germany
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
@ -112,11 +112,11 @@ class constantHeatCapacity
scalar Cp0_; scalar Cp0_;
//CL: molar values //CL: molar values
scalar cp0_; scalar cp0_;
scalar e0_std; scalar e0_std;
scalar s0_std; scalar s0_std;
scalar integral_p_dv_std; scalar integral_p_dv_std;
scalar integral_dpdT_dv_std; scalar integral_dpdT_dv_std;
scalar cp_std; scalar cp_std;
// Private member functions // Private member functions
@ -126,7 +126,7 @@ class constantHeatCapacity
( (
const equationOfState& st, const equationOfState& st,
const scalar cp0_ const scalar cp0_
); );
//- Construct from components //- Construct from components
//CL: used for the operator* //CL: used for the operator*
@ -159,10 +159,10 @@ public:
inline static autoPtr<constantHeatCapacity> New(Istream& is); inline static autoPtr<constantHeatCapacity> New(Istream& is);
// Member Functions // Member Functions
//- perfect Gas Enthalpy [J/kmol] //- perfect Gas Enthalpy [J/kmol]
inline scalar h0(const scalar T) const; inline scalar h0(const scalar T) const;
//- perfect Gas Entropy [J/(kmol K)] //- perfect Gas Entropy [J/(kmol K)]
inline scalar s0(const scalar T) const; inline scalar s0(const scalar T) const;
@ -179,7 +179,7 @@ public:
inline scalar cp(const scalar rho, const scalar T) const; inline scalar cp(const scalar rho, const scalar T) const;
//- non Limited Heat capacity at constant pressure [J/(kmol K)] //- non Limited Heat capacity at constant pressure [J/(kmol K)]
inline scalar cp_nonLimited(const scalar rho, const scalar T) const; inline scalar cp_nonLimited(const scalar rho, const scalar T) const;
//- Heat capacity at constant pressure [J/(kmol K)] //- Heat capacity at constant pressure [J/(kmol K)]
inline scalar cv(const scalar rho, const scalar T) const; inline scalar cv(const scalar rho, const scalar T) const;
@ -189,7 +189,7 @@ public:
//- Entropy [J/(kmol K)] //- Entropy [J/(kmol K)]
inline scalar s(const scalar rho,const scalar T) const; inline scalar s(const scalar rho,const scalar T) const;
//- Internal Energy [J/kmol] //- Internal Energy [J/kmol]
inline scalar e(const scalar rho, const scalar T) const; inline scalar e(const scalar rho, const scalar T) const;

View file

@ -24,7 +24,7 @@ License
Author Author
Christian Lucas Christian Lucas
Institut für Thermodynamik Institut für Thermodynamik
Technische Universität Braunschweig Technische Universität Braunschweig
Germany Germany
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
@ -46,7 +46,7 @@ inline Foam::constantHeatCapacity<equationOfState>::constantHeatCapacity
s0_std(s0(this->Tstd)), s0_std(s0(this->Tstd)),
integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd)), integral_p_dv_std(this->integral_p_dv(this->rhostd(),this->Tstd)),
integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd)), integral_dpdT_dv_std(this->integral_dpdT_dv(this->rhostd(),this->Tstd)),
cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd)) cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd))
{} {}
@ -70,7 +70,7 @@ inline Foam::constantHeatCapacity<equationOfState>::constantHeatCapacity
s0_std(s0_std_), s0_std(s0_std_),
integral_p_dv_std(integral_p_dv_std_), integral_p_dv_std(integral_p_dv_std_),
integral_dpdT_dv_std(integral_dpdT_dv_std_), integral_dpdT_dv_std(integral_dpdT_dv_std_),
cp_std(cp_std_) cp_std(cp_std_)
{} {}
@ -116,7 +116,7 @@ Foam::constantHeatCapacity<equationOfState>::New(Istream& is)
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
//used to calculate the internal energy //used to calculate the internal energy
//perfect gas enthalpy //perfect gas enthalpy
template<class equationOfState> template<class equationOfState>
inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::h0 inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::h0
( (
@ -128,7 +128,7 @@ inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::h0
//used to calculate the internal energy //used to calculate the internal energy
//perfect gas internal energy //perfect gas internal energy
template<class equationOfState> template<class equationOfState>
inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::e0 inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::e0
( (
@ -137,10 +137,10 @@ inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::e0
{ {
return this->h0(T) - this->RR()*T; return this->h0(T) - this->RR()*T;
} }
// used to calculate the entropy // used to calculate the entropy
// perfect gas entropy // perfect gas entropy
template<class equationOfState> template<class equationOfState>
inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::s0 inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::s0
( (
@ -180,14 +180,14 @@ template<class equationOfState>
inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::cp inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::cp
( (
const scalar rho, const scalar rho,
const scalar T const scalar T
) const ) const
{ {
// Problem --> dpdv(rho,T) is =0 at some points within the vapour dome. To increase stability, (dp/dv) has to be limited // Problem --> dpdv(rho,T) is =0 at some points within the vapour dome. To increase stability, (dp/dv) has to be limited
// cp can be negative within the vapor dome. To avoid this nonphysical result, the absolute value is used. // cp can be negative within the vapor dome. To avoid this nonphysical result, the absolute value is used.
// within the vapourdome and at the critical point, cp increases to very high values --> infinity, // within the vapourdome and at the critical point, cp increases to very high values --> infinity,
// this would decrease the stability, so cp will be limited to 20 times the cp @ STD // this would decrease the stability, so cp will be limited to 20 times the cp @ STD
return return
min min
( (
cp_std*20, cp_std*20,
@ -196,7 +196,7 @@ inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::cp
this->cv(rho,T) this->cv(rho,T)
- T*pow((this->dpdT(rho, T)), 2)/min(this->dpdv(rho, T), -1) - T*pow((this->dpdT(rho, T)), 2)/min(this->dpdv(rho, T), -1)
) )
); );
} }
@ -206,10 +206,10 @@ template<class equationOfState>
inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::cp_nonLimited inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::cp_nonLimited
( (
const scalar rho, const scalar rho,
const scalar T const scalar T
) const ) const
{ {
return return
fabs(this->cv(rho, T) fabs(this->cv(rho, T)
- T*pow((this->dpdT(rho, T)), 2)/min(this->dpdv(rho, T), -1)); - T*pow((this->dpdT(rho, T)), 2)/min(this->dpdv(rho, T), -1));
} }
@ -222,7 +222,6 @@ inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::cv
( (
const scalar rho, const scalar rho,
const scalar T const scalar T
) const ) const
{ {
return this->cv0(T) + T*this->integral_d2pdT2_dv(rho, T); return this->cv0(T) + T*this->integral_d2pdT2_dv(rho, T);
@ -232,9 +231,9 @@ inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::cv
//function to calculate real gas enthalpy //function to calculate real gas enthalpy
template<class equationOfState> template<class equationOfState>
inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::h inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::h
( (
const scalar rho, const scalar rho,
const scalar T const scalar T
) const ) const
{ {
return return
@ -249,12 +248,12 @@ inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::h
// equation: du= cv0 dT +[T*dp/dT -p]dv // equation: du= cv0 dT +[T*dp/dT -p]dv
template<class equationOfState> template<class equationOfState>
inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::e inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::e
( (
const scalar rho, const scalar rho,
const scalar T const scalar T
) const ) const
{ {
return return
- this->Tstd()*integral_dpdT_dv_std - this->Tstd()*integral_dpdT_dv_std
+ integral_p_dv_std + integral_p_dv_std
+ this->e0(T) + this->e0(T)
@ -273,7 +272,6 @@ inline Foam::scalar Foam::constantHeatCapacity<equationOfState>::s
( (
const scalar rho, const scalar rho,
const scalar T const scalar T
) const ) const
{ {
return return
@ -293,7 +291,6 @@ inline void Foam::constantHeatCapacity<equationOfState>::operator+=
const constantHeatCapacity<equationOfState>& np const constantHeatCapacity<equationOfState>& np
) )
{ {
scalar molr1 = this->nMoles(); scalar molr1 = this->nMoles();
equationOfState::operator+=(np); equationOfState::operator+=(np);
@ -378,8 +375,8 @@ inline Foam::constantHeatCapacity<equationOfState> Foam::operator*
const constantHeatCapacity<equationOfState>& np const constantHeatCapacity<equationOfState>& np
) )
{ {
//CL: values at STD don't need to be recalculated, //CL: values at STD don't need to be recalculated,
//CL: therefore, providing the values in the constructor //CL: therefore, providing the values in the constructor
return constantHeatCapacity<equationOfState> return constantHeatCapacity<equationOfState>
( (
s*static_cast<const equationOfState&>(np), s*static_cast<const equationOfState&>(np),

View file

@ -54,7 +54,7 @@ Foam::nasaHeatCapacityPolynomial<equationOfState>::nasaHeatCapacityPolynomial(Is
//cp @ STD (needed to limit cp for stability //cp @ STD (needed to limit cp for stability
cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd())) cp_std(this->cp_nonLimited(this->rhostd(),this->Tstd()))
{ {
is.check("nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial(Istream& is)"); is.check("nasaHeatCapacityPolynomial::nasaHeatCapacityPolynomial(Istream& is)");
} }

View file

@ -97,7 +97,7 @@ inline Foam::nasaHeatCapacityPolynomial<equationOfState>::nasaHeatCapacityPolyno
s0_std(s0_std_), s0_std(s0_std_),
integral_p_dv_std(integral_p_dv_std_), integral_p_dv_std(integral_p_dv_std_),
integral_dpdT_dv_std(integral_dpdT_dv_std_), integral_dpdT_dv_std(integral_dpdT_dv_std_),
cp_std(cp_std_) cp_std(cp_std_)
{} {}

View file

@ -18,86 +18,85 @@ convertToMeters 0.001;
vertices vertices
( (
(0 0 0) //0 (0 0 0) //0
(120 0 0) //1 (120 0 0) //1
(280 0 0) //2 (280 0 0) //2
(600 0 0) //3 (600 0 0) //3
(2500 0 0) //4 (2500 0 0) //4
(0 120 0) //5 (0 120 0) //5
(120 120 0) //6 (120 120 0) //6
(280 120 0)//7 (280 120 0)//7
(600 120 0) //8 (600 120 0) //8
(2500 120 0) //9 (2500 120 0) //9
(164.6447 164.6447 0)//10 (164.6447 164.6447 0)//10
(235.3553 164.6447 0)//11 (235.3553 164.6447 0)//11
(248.9898 190 0) //12 (248.9898 190 0) //12
(299.5733 190 0) //13 (299.5733 190 0) //13
(600 190 0) //14 (600 190 0) //14
(2500 190 0) //15 (2500 190 0) //15
(164.6447 235.355 0) //16 (164.6447 235.355 0) //16
(235.3553 235.355 0) //17 (235.3553 235.355 0) //17
(248.9898 210 0) //18 (248.9898 210 0) //18
(299.5733 210 0) //19 (299.5733 210 0) //19
(600 210 0) //20 (600 210 0) //20
(2500 210 0) //21 (2500 210 0) //21
(0 280 0) //22 (0 280 0) //22
(120 280 0) //23 (120 280 0) //23
(280 280 0)//24 (280 280 0)//24
(600 280 0) //25 (600 280 0) //25
(2500 280 0) //26 (2500 280 0) //26
(0 410 0) //27 (0 410 0) //27
(120 410 0) //28 (120 410 0) //28
(280 410 0) //29 (280 410 0) //29
(600 410 0) //30 (600 410 0) //30
(2500 410 0) //31 (2500 410 0) //31
(0 0 15) //32 (0 0 15) //32
(120 0 15) //33 (120 0 15) //33
(280 0 15) //34 (280 0 15) //34
(600 0 15) //35 (600 0 15) //35
(2500 0 15) //36 (2500 0 15) //36
(0 120 15) //37 (0 120 15) //37
(120 120 15) //38 (120 120 15) //38
(280 120 15)//39 (280 120 15)//39
(600 120 15) //40 (600 120 15) //40
(2500 120 15) //41 (2500 120 15) //41
(164.6447 164.6447 15)//42 (164.6447 164.6447 15)//42
(235.3553 164.6447 15)//43 (235.3553 164.6447 15)//43
(248.9898 190 15) //44 (248.9898 190 15) //44
(299.5733 190 15) //45 (299.5733 190 15) //45
(600 190 15) //46 (600 190 15) //46
(2500 190 15) //47 (2500 190 15) //47
(164.6447 235.355 15) //48 (164.6447 235.355 15) //48
(235.3553 235.355 15) //49 (235.3553 235.355 15) //49
(248.9898 210 15) //50 (248.9898 210 15) //50
(299.5733 210 15) //51 (299.5733 210 15) //51
(600 210 15) //52 (600 210 15) //52
(2500 210 15) //53 (2500 210 15) //53
(0 280 15) //54 (0 280 15) //54
(120 280 15) //55 (120 280 15) //55
(280 280 15)//56 (280 280 15)//56
(600 280 15) //57 (600 280 15) //57
(2500 280 15) //58 (2500 280 15) //58
(0 410 15) //59 (0 410 15) //59
(120 410 15) //60 (120 410 15) //60
(280 410 15) //61 (280 410 15) //61
(600 410 15) //62 (600 410 15) //62
(2500 410 15) //63 (2500 410 15) //63
(1000 0 0) //64 (1000 0 0) //64
(1000 120 0) //65 (1000 120 0) //65
(1000 190 0) //66 (1000 190 0) //66
(1000 210 0) //67 (1000 210 0) //67
(1000 280 0) //68 (1000 280 0) //68
(1000 410 0) //69 (1000 410 0) //69
(1000 0 15) //70
(1000 120 15) //71
(1000 190 15) //72
(1000 210 15) //73
(1000 280 15) //74
(1000 410 15) //75
(1000 0 15) //70
(1000 120 15) //71
(1000 190 15) //72
(1000 210 15) //73
(1000 280 15) //74
(1000 410 15) //75
); );
blocks blocks
@ -159,116 +158,114 @@ edges
arc 13 7 (288.2725 141.3043 0) arc 13 7 (288.2725 141.3043 0)
arc 45 39 (288.2725 141.3043 15) arc 45 39 (288.2725 141.3043 15)
); );
patches patches
( (
patch plate patch plate
( (
(19 18 50 51) (19 18 50 51)
(20 19 51 52) (20 19 51 52)
(20 52 46 14) (20 52 46 14)
(13 14 46 45) (13 14 46 45)
(12 13 45 44) (12 13 45 44)
) )
patch outlet patch outlet
( (
(63 31 26 58) (63 31 26 58)
(58 26 21 53) (58 26 21 53)
(53 21 15 47) (53 21 15 47)
(47 15 9 41) (47 15 9 41)
(41 9 4 36) (41 9 4 36)
) )
patch inlet patch inlet
( (
(27 59 54 22) (27 59 54 22)
(22 54 37 5) (22 54 37 5)
(5 37 32 0) (5 37 32 0)
) )
patch cylinder patch cylinder
( (
(16 48 49 17) (16 48 49 17)
(17 49 50 18) (17 49 50 18)
(10 42 48 16) (10 42 48 16)
(11 43 42 10) (11 43 42 10)
(12 44 43 11) (12 44 43 11)
) )
patch bottom patch bottom
( (
(1 0 32 33) (1 0 32 33)
(2 1 33 34) (2 1 33 34)
(3 2 34 35) (3 2 34 35)
(64 3 35 70) (64 3 35 70)
(4 64 70 36) (4 64 70 36)
) )
patch top patch top
( (
(27 28 60 59) (27 28 60 59)
(28 29 61 60) (28 29 61 60)
(29 30 62 61) (29 30 62 61)
(30 69 75 62) (30 69 75 62)
(69 31 63 75) (69 31 63 75)
) )
empty frontAndBackPlanes empty frontAndBackPlanes
( (
(22 23 28 27) (22 23 28 27)
(23 24 29 28) (23 24 29 28)
(24 25 30 29) (24 25 30 29)
(25 68 69 30) (25 68 69 30)
(68 26 31 69) (68 26 31 69)
(5 6 23 22) (5 6 23 22)
(6 10 16 23) (6 10 16 23)
(16 17 24 23) (16 17 24 23)
(18 19 24 17) (18 19 24 17)
(19 20 25 24) (19 20 25 24)
(20 67 68 25) (20 67 68 25)
(67 21 26 68) (67 21 26 68)
(6 7 11 10) (6 7 11 10)
(7 13 12 11) (7 13 12 11)
(7 8 14 13) (7 8 14 13)
(8 65 66 14) (8 65 66 14)
(65 9 15 66) (65 9 15 66)
(0 1 6 5) (0 1 6 5)
(1 2 7 6) (1 2 7 6)
(2 3 8 7) (2 3 8 7)
(3 64 65 8) (3 64 65 8)
(64 4 9 65) (64 4 9 65)
(14 66 67 20) (14 66 67 20)
(66 15 21 67) (66 15 21 67)
(33 32 37 38)
(34 33 38 39)
(35 34 39 40)
(70 35 40 71)
(36 70 71 41)
(38 37 54 55)
(42 38 55 48)
(39 38 42 43)
(45 39 43 44)
(40 39 45 46)
(71 40 46 72)
(41 71 72 47)
(49 48 55 56)
(51 50 49 56)
(52 51 56 57)
(73 52 57 74)
(53 73 74 58)
(55 54 59 60)
(56 55 60 61)
(57 56 61 62)
(74 57 62 75)
(58 74 75 63)
(72 46 52 73)
(47 72 73 53)
)
(33 32 37 38)
(34 33 38 39)
(35 34 39 40)
(70 35 40 71)
(36 70 71 41)
(38 37 54 55)
(42 38 55 48)
(39 38 42 43)
(45 39 43 44)
(40 39 45 46)
(71 40 46 72)
(41 71 72 47)
(49 48 55 56)
(51 50 49 56)
(52 51 56 57)
(73 52 57 74)
(53 73 74 58)
(55 54 59 60)
(56 55 60 61)
(57 56 61 62)
(74 57 62 75)
(58 74 75 63)
(72 46 52 73)
(47 72 73 53)
)
); );
mergePatchPairs mergePatchPairs

View file

@ -18,86 +18,85 @@ convertToMeters 0.001;
vertices vertices
( (
(0 0 0) //0 (0 0 0) //0
(129.289 0 0) //1 (129.289 0 0) //1
(270.7106 0 0) //2 (270.7106 0 0) //2
(600 0 0) //3 (600 0 0) //3
(2500 0 0) //4 (2500 0 0) //4
(0 129.289 0) //5 (0 129.289 0) //5
(129.289 129.289 0) //6 (129.289 129.289 0) //6
(270.7106 129.289 0)//7 (270.7106 129.289 0)//7
(600 129.289 0) //8 (600 129.289 0) //8
(2500 129.289 0) //9 (2500 129.289 0) //9
(164.6447 164.6447 0)//10 (164.6447 164.6447 0)//10
(235.3553 164.6447 0)//11 (235.3553 164.6447 0)//11
(248.9898 190 0) //12 (248.9898 190 0) //12
(299.4987 190 0) //13 (299.4987 190 0) //13
(600 190 0) //14 (600 190 0) //14
(2500 190 0) //15 (2500 190 0) //15
(164.6447 235.355 0) //16 (164.6447 235.355 0) //16
(235.3553 235.355 0) //17 (235.3553 235.355 0) //17
(248.9898 210 0) //18 (248.9898 210 0) //18
(299.4987 210 0) //19 (299.4987 210 0) //19
(600 210 0) //20 (600 210 0) //20
(2500 210 0) //21 (2500 210 0) //21
(0 270.7107 0) //22 (0 270.7107 0) //22
(129.289 270.7107 0) //23 (129.289 270.7107 0) //23
(270.7106 270.7107 0)//24 (270.7106 270.7107 0)//24
(600 270.7107 0) //25 (600 270.7107 0) //25
(2500 270.7107 0) //26 (2500 270.7107 0) //26
(0 410 0) //27 (0 410 0) //27
(129.289 410 0) //28 (129.289 410 0) //28
(270.7106 410 0) //29 (270.7106 410 0) //29
(600 410 0) //30 (600 410 0) //30
(2500 410 0) //31 (2500 410 0) //31
(0 0 0.05067) //32 (0 0 0.05067) //32
(129.289 0 0.05067) //33 (129.289 0 0.05067) //33
(270.7106 0 0.05067) //34 (270.7106 0 0.05067) //34
(600 0 0.05067) //35 (600 0 0.05067) //35
(2500 0 0.05067) //36 (2500 0 0.05067) //36
(0 129.289 0.05067) //37 (0 129.289 0.05067) //37
(129.289 129.289 0.05067) //38 (129.289 129.289 0.05067) //38
(270.7106 129.289 0.05067)//39 (270.7106 129.289 0.05067)//39
(600 129.289 0.05067) //40 (600 129.289 0.05067) //40
(2500 129.289 0.05067) //41 (2500 129.289 0.05067) //41
(164.6447 164.6447 0.05067)//42 (164.6447 164.6447 0.05067)//42
(235.3553 164.6447 0.05067)//43 (235.3553 164.6447 0.05067)//43
(248.9898 190 0.05067) //44 (248.9898 190 0.05067) //44
(299.4987 190 0.05067) //45 (299.4987 190 0.05067) //45
(600 190 0.05067) //46 (600 190 0.05067) //46
(2500 190 0.05067) //47 (2500 190 0.05067) //47
(164.6447 235.355 0.05067) //48 (164.6447 235.355 0.05067) //48
(235.3553 235.355 0.05067) //49 (235.3553 235.355 0.05067) //49
(248.9898 210 0.05067) //50 (248.9898 210 0.05067) //50
(299.4987 210 0.05067) //51 (299.4987 210 0.05067) //51
(600 210 0.05067) //52 (600 210 0.05067) //52
(2500 210 0.05067) //53 (2500 210 0.05067) //53
(0 270.7107 0.05067) //54 (0 270.7107 0.05067) //54
(129.289 270.7107 0.05067) //55 (129.289 270.7107 0.05067) //55
(270.7106 270.7107 0.05067)//56 (270.7106 270.7107 0.05067)//56
(600 270.7107 0.05067) //57 (600 270.7107 0.05067) //57
(2500 270.7107 0.05067) //58 (2500 270.7107 0.05067) //58
(0 410 0.05067) //59 (0 410 0.05067) //59
(129.289 410 0.05067) //60 (129.289 410 0.05067) //60
(270.7106 410 0.05067) //61 (270.7106 410 0.05067) //61
(600 410 0.05067) //62 (600 410 0.05067) //62
(2500 410 0.05067) //63 (2500 410 0.05067) //63
(1000 0 0) //64 (1000 0 0) //64
(1000 129.289 0) //65 (1000 129.289 0) //65
(1000 190 0) //66 (1000 190 0) //66
(1000 210 0) //67 (1000 210 0) //67
(1000 270.7107 0) //68 (1000 270.7107 0) //68
(1000 410 0) //69 (1000 410 0) //69
(1000 0 0.05067) //70
(1000 129.289 0.05067) //71
(1000 190 0.05067) //72
(1000 210 0.05067) //73
(1000 270.7107 0.05067) //74
(1000 410 0.05067) //75
(1000 0 0.05067) //70
(1000 129.289 0.05067) //71
(1000 190 0.05067) //72
(1000 210 0.05067) //73
(1000 270.7107 0.05067) //74
(1000 410 0.05067) //75
); );
blocks blocks
@ -159,116 +158,114 @@ edges
arc 13 7 (286.6025 150 0) arc 13 7 (286.6025 150 0)
arc 45 39 (286.6025 150 0.05067) arc 45 39 (286.6025 150 0.05067)
); );
patches patches
( (
patch plate patch plate
( (
(19 18 50 51) (19 18 50 51)
(12 13 45 44) (12 13 45 44)
(20 19 51 52) (20 19 51 52)
(13 14 46 45) (13 14 46 45)
(20 52 46 14) (20 52 46 14)
) )
patch outlet patch outlet
( (
(63 31 26 58) (63 31 26 58)
(58 26 21 53) (58 26 21 53)
(53 21 15 47) (53 21 15 47)
(47 15 9 41) (47 15 9 41)
(41 9 4 36) (41 9 4 36)
) )
patch inlet patch inlet
( (
(27 59 54 22) (27 59 54 22)
(22 54 37 5) (22 54 37 5)
(5 37 32 0) (5 37 32 0)
) )
patch cylinder patch cylinder
( (
(16 48 49 17) (16 48 49 17)
(17 49 50 18) (17 49 50 18)
(10 42 48 16) (10 42 48 16)
(11 43 42 10) (11 43 42 10)
(12 44 43 11) (12 44 43 11)
) )
patch bottom patch bottom
( (
(1 0 32 33) (1 0 32 33)
(2 1 33 34) (2 1 33 34)
(3 2 34 35) (3 2 34 35)
(64 3 35 70) (64 3 35 70)
(4 64 70 36) (4 64 70 36)
) )
patch top patch top
( (
(27 28 60 59) (27 28 60 59)
(28 29 61 60) (28 29 61 60)
(29 30 62 61) (29 30 62 61)
(30 69 75 62) (30 69 75 62)
(69 31 63 75) (69 31 63 75)
) )
empty frontAndBackPlanes empty frontAndBackPlanes
( (
(22 23 28 27) (22 23 28 27)
(23 24 29 28) (23 24 29 28)
(24 25 30 29) (24 25 30 29)
(25 68 69 30) (25 68 69 30)
(68 26 31 69) (68 26 31 69)
(5 6 23 22) (5 6 23 22)
(6 10 16 23) (6 10 16 23)
(16 17 24 23) (16 17 24 23)
(18 19 24 17) (18 19 24 17)
(19 20 25 24) (19 20 25 24)
(20 67 68 25) (20 67 68 25)
(67 21 26 68) (67 21 26 68)
(6 7 11 10) (6 7 11 10)
(7 13 12 11) (7 13 12 11)
(7 8 14 13) (7 8 14 13)
(8 65 66 14) (8 65 66 14)
(65 9 15 66) (65 9 15 66)
(0 1 6 5) (0 1 6 5)
(1 2 7 6) (1 2 7 6)
(2 3 8 7) (2 3 8 7)
(3 64 65 8) (3 64 65 8)
(64 4 9 65) (64 4 9 65)
(14 66 67 20) (14 66 67 20)
(66 15 21 67) (66 15 21 67)
(33 32 37 38)
(34 33 38 39)
(35 34 39 40)
(70 35 40 71)
(36 70 71 41)
(38 37 54 55)
(42 38 55 48)
(39 38 42 43)
(45 39 43 44)
(40 39 45 46)
(71 40 46 72)
(41 71 72 47)
(49 48 55 56)
(51 50 49 56)
(52 51 56 57)
(73 52 57 74)
(53 73 74 58)
(55 54 59 60)
(56 55 60 61)
(57 56 61 62)
(74 57 62 75)
(58 74 75 63)
(72 46 52 73)
(47 72 73 53)
)
(33 32 37 38)
(34 33 38 39)
(35 34 39 40)
(70 35 40 71)
(36 70 71 41)
(38 37 54 55)
(42 38 55 48)
(39 38 42 43)
(45 39 43 44)
(40 39 45 46)
(71 40 46 72)
(41 71 72 47)
(49 48 55 56)
(51 50 49 56)
(52 51 56 57)
(73 52 57 74)
(53 73 74 58)
(55 54 59 60)
(56 55 60 61)
(57 56 61 62)
(74 57 62 75)
(58 74 75 63)
(72 46 52 73)
(47 72 73 53)
)
); );
mergePatchPairs mergePatchPairs

View file

@ -18,15 +18,15 @@ convertToMeters 0.001;
vertices vertices
( (
(248.9898 190 0) //0=12 (248.9898 190 0) //0=12
(600 190 0) //1=14 (600 190 0) //1=14
(600 210 0) //2=20 (600 210 0) //2=20
(248.9898 210 0) //3=18 (248.9898 210 0) //3=18
(248.9898 190 15) //4=44 (248.9898 190 15) //4=44
(600 190 15) //5=46 (600 190 15) //5=46
(600 210 15) //6=52 (600 210 15) //6=52
(248.9898 210 15) //7=50 (248.9898 210 15) //7=50
); );
blocks blocks
@ -40,24 +40,23 @@ edges
patches patches
( (
patch plateFix patch plateFix
( (
(3 7 4 0) (3 7 4 0)
) )
patch plate patch plate
( (
(3 2 6 7) (3 2 6 7)
(6 2 1 5) (6 2 1 5)
(1 0 4 5) (1 0 4 5)
) )
empty frontAndBackPlanes
(
(0 1 2 3)
(7 6 5 4)
)
empty frontAndBackPlanes
(
(0 1 2 3)
(7 6 5 4)
)
); );
mergePatchPairs mergePatchPairs

View file

@ -16,7 +16,7 @@ FoamFile
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//CL: List of possible real gas models //CL: List of possible real gas models
thermoType realGasHThermo<pureMixture<sutherlandTransport<realGasSpecieThermo<nasaHeatCapacityPolynomial<redlichKwong>>>>>; thermoType realGasHThermo<pureMixture<sutherlandTransport<realGasSpecieThermo<nasaHeatCapacityPolynomial<redlichKwong>>>>>;
mixture CO2 1 44.01 73.773e5 304.13 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; mixture CO2 1 44.01 73.773e5 304.13 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116;
@ -53,16 +53,16 @@ mixture CO2 1 44.01 73.773e5 304.13 49436.5054 -626.411601 5.30172524 0.
//CL: description of coefficients //CL: description of coefficients
// *********************************************************************************************************************** // // *********************************************************************************************************************** //
// Coefficient: // Coefficient:
// CO2 --> Name // CO2 --> Name
// 1 // 1
// 44.01 --> Molar Volume // 44.01 --> Molar Volume
// 77.773e5 --> critical pressure // 77.773e5 --> critical pressure
// 304.13 --> critical temperatur // 304.13 --> critical temperatur
// 0.22394 --> acentric factor (not needed for redlich kwong) // 0.22394 --> acentric factor (not needed for redlich kwong)
// 467.6 --> critical density (only for aungier redlich kwong) // 467.6 --> critical density (only for aungier redlich kwong)
// 49436.5054 --> 2.849677801e-13 --> 7 heat capacity polynomial coefficent's // 49436.5054 --> 2.849677801e-13 --> 7 heat capacity polynomial coefficent's
// .... --> two coefficent's for sutherlandTransport or for the constRealGasTransport model // .... --> two coefficent's for sutherlandTransport or for the constRealGasTransport model
// 839 --> perfect gas heat capacity Cp0 (J/kgK), needed for constantHeatCapacity // 839 --> perfect gas heat capacity Cp0 (J/kgK), needed for constantHeatCapacity
// *********************************************************************************************************************** // // *********************************************************************************************************************** //

View file

@ -23,12 +23,12 @@ solvers
tolerance 1e-14; tolerance 1e-14;
relTol 0.001; relTol 0.001;
smoother GaussSeidel; smoother GaussSeidel;
minIter 4; minIter 4;
//maxIter 100; //maxIter 100;
cacheAgglomeration true; cacheAgglomeration true;
nPreSweeps 1; nPreSweeps 1;
nPostSweeps 3; nPostSweeps 3;
nFinestSweeps 3; nFinestSweeps 3;
nCellsInCoarsestLevel 20; nCellsInCoarsestLevel 20;
agglomerator faceAreaPair; agglomerator faceAreaPair;
mergeLevels 1; mergeLevels 1;

View file

@ -17,7 +17,7 @@ FoamFile
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//CL: this is all //CL: this is all
thermoType IAPWSThermo; thermoType IAPWSThermo;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View file

@ -23,12 +23,12 @@ solvers
tolerance 1e-14; tolerance 1e-14;
relTol 0.001; relTol 0.001;
smoother GaussSeidel; smoother GaussSeidel;
minIter 4; minIter 4;
//maxIter 100; //maxIter 100;
cacheAgglomeration true; cacheAgglomeration true;
nPreSweeps 1; nPreSweeps 1;
nPostSweeps 3; nPostSweeps 3;
nFinestSweeps 3; nFinestSweeps 3;
nCellsInCoarsestLevel 20; nCellsInCoarsestLevel 20;
agglomerator faceAreaPair; agglomerator faceAreaPair;
mergeLevels 1; mergeLevels 1;

View file

@ -17,7 +17,7 @@ FoamFile
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//CL: this is all //CL: this is all
thermoType IAPWSThermo; thermoType IAPWSThermo;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View file

@ -23,8 +23,8 @@ solvers
tolerance 1e-14; tolerance 1e-14;
relTol 0.001; relTol 0.001;
smoother GaussSeidel; smoother GaussSeidel;
minIter 4; minIter 4;
//maxIter 100; //maxIter 100;
cacheAgglomeration true; cacheAgglomeration true;
nPreSweeps 1; nPreSweeps 1;
nPostSweeps 3; nPostSweeps 3;

View file

@ -119,11 +119,11 @@ boundary
faces faces
( (
(0 1 2 3) (0 1 2 3)
(10 11 12 13) (10 11 12 13)
(8 2 5 9) (8 2 5 9)
(18 12 15 19) (18 12 15 19)
(1 4 5 2) (1 4 5 2)
(11 14 15 12) (11 14 15 12)
(1 6 7 4) (1 6 7 4)
(11 16 17 14) (11 16 17 14)
(6 16 11 1) (6 16 11 1)

View file

@ -16,7 +16,7 @@ FoamFile
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//CL: List of possible real gas models //CL: List of possible real gas models
thermoType realGasHThermo<pureMixture<sutherlandTransport<realGasSpecieThermo<nasaHeatCapacityPolynomial<redlichKwong>>>>>; thermoType realGasHThermo<pureMixture<sutherlandTransport<realGasSpecieThermo<nasaHeatCapacityPolynomial<redlichKwong>>>>>;
mixture CO2 1 44.01 73.773e5 304.13 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116; mixture CO2 1 44.01 73.773e5 304.13 49436.5054 -626.411601 5.30172524 0.002503813816 -0.0000002127308728 -0.000000000768998878 2.849677801e-13 1.4792e-06 116;
@ -53,16 +53,16 @@ mixture CO2 1 44.01 73.773e5 304.13 49436.5054 -626.411601 5.30172524 0.
//CL: description of coefficients //CL: description of coefficients
// *********************************************************************************************************************** // // *********************************************************************************************************************** //
// Coefficient: // Coefficient:
// CO2 --> Name // CO2 --> Name
// 1 // 1
// 44.01 --> Molar Volume // 44.01 --> Molar Volume
// 77.773e5 --> critical pressure // 77.773e5 --> critical pressure
// 304.13 --> critical temperatur // 304.13 --> critical temperatur
// 0.22394 --> acentric factor (not needed for redlich kwong) // 0.22394 --> acentric factor (not needed for redlich kwong)
// 467.6 --> critical density (only for aungier redlich kwong) // 467.6 --> critical density (only for aungier redlich kwong)
// 49436.5054 --> 2.849677801e-13 --> 7 heat capacity polynomial coefficent's // 49436.5054 --> 2.849677801e-13 --> 7 heat capacity polynomial coefficent's
// .... --> two coefficent's for sutherlandRealGasTransport or for the constRealGasTransport model // .... --> two coefficent's for sutherlandRealGasTransport or for the constRealGasTransport model
// 839 --> perfect gas heat capacity Cp0 (J/kgK), needed for constantHeatCapacity // 839 --> perfect gas heat capacity Cp0 (J/kgK), needed for constantHeatCapacity
// *********************************************************************************************************************** // // *********************************************************************************************************************** //

View file

@ -24,12 +24,12 @@ p
tolerance 1e-14; tolerance 1e-14;
relTol 0.001; relTol 0.001;
smoother GaussSeidel; smoother GaussSeidel;
minIter 4; minIter 4;
//maxIter 100; //maxIter 100;
cacheAgglomeration true; cacheAgglomeration true;
nPreSweeps 1; nPreSweeps 1;
nPostSweeps 3; nPostSweeps 3;
nFinestSweeps 3; nFinestSweeps 3;
nCellsInCoarsestLevel 20; nCellsInCoarsestLevel 20;
agglomerator faceAreaPair; agglomerator faceAreaPair;
mergeLevels 1; mergeLevels 1;

View file

@ -313,111 +313,111 @@ convertToMeters 0.1;
vertices vertices
( (
(0.2 0 0) // Vertex r0b = 0 (0.2 0 0) // Vertex r0b = 0
(0.2 0 0) // Vertex r0sb = 1 (0.2 0 0) // Vertex r0sb = 1
(0.141421356364228 -0.141421356110391 0) // Vertex r1b = 2 (0.141421356364228 -0.141421356110391 0) // Vertex r1b = 2
(3.58979347393082e-10 -0.2 0) // Vertex r2b = 3 (3.58979347393082e-10 -0.2 0) // Vertex r2b = 3
(3.58979347393082e-10 -0.2 0) // Vertex r2sb = 4 (3.58979347393082e-10 -0.2 0) // Vertex r2sb = 4
(-0.141421355856554 -0.141421356618065 0) // Vertex r3b = 5 (-0.141421355856554 -0.141421356618065 0) // Vertex r3b = 5
(-0.2 7.17958694786164e-10 0) // Vertex r4b = 6 (-0.2 7.17958694786164e-10 0) // Vertex r4b = 6
(-0.2 7.17958694786164e-10 0) // Vertex r4sb = 7 (-0.2 7.17958694786164e-10 0) // Vertex r4sb = 7
(-0.141421355856554 0.141421356618065 0) // Vertex r5b = 8 (-0.141421355856554 0.141421356618065 0) // Vertex r5b = 8
(3.58979347393082e-10 0.2 0) // Vertex r6b = 9 (3.58979347393082e-10 0.2 0) // Vertex r6b = 9
(3.58979347393082e-10 0.2 0) // Vertex r6sb = 10 (3.58979347393082e-10 0.2 0) // Vertex r6sb = 10
(0.141421356364228 0.141421356110391 0) // Vertex r7b = 11 (0.141421356364228 0.141421356110391 0) // Vertex r7b = 11
(0.5 0 0) // Vertex rb0b = 12 (0.5 0 0) // Vertex rb0b = 12
(0.353553390910569 -0.353553390275978 0) // Vertex rb1b = 13 (0.353553390910569 -0.353553390275978 0) // Vertex rb1b = 13
(8.97448368482705e-10 -0.5 0) // Vertex rb2b = 14 (8.97448368482705e-10 -0.5 0) // Vertex rb2b = 14
(-0.353553389641386 -0.353553391545162 0) // Vertex rb3b = 15 (-0.353553389641386 -0.353553391545162 0) // Vertex rb3b = 15
(-0.5 1.79489673696541e-09 0) // Vertex rb4b = 16 (-0.5 1.79489673696541e-09 0) // Vertex rb4b = 16
(-0.353553389641386 0.353553391545162 0) // Vertex rb5b = 17 (-0.353553389641386 0.353553391545162 0) // Vertex rb5b = 17
(8.97448368482705e-10 0.5 0) // Vertex rb6b = 18 (8.97448368482705e-10 0.5 0) // Vertex rb6b = 18
(0.353553390910569 0.353553390275978 0) // Vertex rb7b = 19 (0.353553390910569 0.353553390275978 0) // Vertex rb7b = 19
(0.6 0 0) // Vertex ri0b = 20 (0.6 0 0) // Vertex ri0b = 20
(0.424264069092683 -0.424264068331174 0) // Vertex ri1b = 21 (0.424264069092683 -0.424264068331174 0) // Vertex ri1b = 21
(1.07693804217925e-09 -0.6 0) // Vertex ri2b = 22 (1.07693804217925e-09 -0.6 0) // Vertex ri2b = 22
(-0.424264067569663 -0.424264069854194 0) // Vertex ri3b = 23 (-0.424264067569663 -0.424264069854194 0) // Vertex ri3b = 23
(-0.6 2.15387608435849e-09 0) // Vertex ri4b = 24 (-0.6 2.15387608435849e-09 0) // Vertex ri4b = 24
(-0.424264067569663 0.424264069854194 0) // Vertex ri5b = 25 (-0.424264067569663 0.424264069854194 0) // Vertex ri5b = 25
(1.07693804217925e-09 0.6 0) // Vertex ri6b = 26 (1.07693804217925e-09 0.6 0) // Vertex ri6b = 26
(0.424264069092683 0.424264068331174 0) // Vertex ri7b = 27 (0.424264069092683 0.424264068331174 0) // Vertex ri7b = 27
(0.7 0 0) // Vertex Rb0b = 28 (0.7 0 0) // Vertex Rb0b = 28
(0.494974747274797 -0.494974746386369 0) // Vertex Rb1b = 29 (0.494974747274797 -0.494974746386369 0) // Vertex Rb1b = 29
(1.25642771587579e-09 -0.7 0) // Vertex Rb2b = 30 (1.25642771587579e-09 -0.7 0) // Vertex Rb2b = 30
(-0.49497474549794 -0.494974748163226 0) // Vertex Rb3b = 31 (-0.49497474549794 -0.494974748163226 0) // Vertex Rb3b = 31
(-0.7 2.51285543175157e-09 0) // Vertex Rb4b = 32 (-0.7 2.51285543175157e-09 0) // Vertex Rb4b = 32
(-0.49497474549794 0.494974748163226 0) // Vertex Rb5b = 33 (-0.49497474549794 0.494974748163226 0) // Vertex Rb5b = 33
(1.25642771587579e-09 0.7 0) // Vertex Rb6b = 34 (1.25642771587579e-09 0.7 0) // Vertex Rb6b = 34
(0.494974747274797 0.494974746386369 0) // Vertex Rb7b = 35 (0.494974747274797 0.494974746386369 0) // Vertex Rb7b = 35
(1 0 0) // Vertex R0b = 36 (1 0 0) // Vertex R0b = 36
(0.707106781821139 -0.707106780551956 0) // Vertex R1b = 37 (0.707106781821139 -0.707106780551956 0) // Vertex R1b = 37
(0.707106781821139 -0.707106780551956 0) // Vertex R1sb = 38 (0.707106781821139 -0.707106780551956 0) // Vertex R1sb = 38
(1.79489673696541e-09 -1 0) // Vertex R2b = 39 (1.79489673696541e-09 -1 0) // Vertex R2b = 39
(-0.707106779282772 -0.707106783090323 0) // Vertex R3b = 40 (-0.707106779282772 -0.707106783090323 0) // Vertex R3b = 40
(-0.707106779282772 -0.707106783090323 0) // Vertex R3sb = 41 (-0.707106779282772 -0.707106783090323 0) // Vertex R3sb = 41
(-1 3.58979347393082e-09 0) // Vertex R4b = 42 (-1 3.58979347393082e-09 0) // Vertex R4b = 42
(-0.707106779282772 0.707106783090323 0) // Vertex R5b = 43 (-0.707106779282772 0.707106783090323 0) // Vertex R5b = 43
(-0.707106779282772 0.707106783090323 0) // Vertex R5sb = 44 (-0.707106779282772 0.707106783090323 0) // Vertex R5sb = 44
(1.79489673696541e-09 1 0) // Vertex R6b = 45 (1.79489673696541e-09 1 0) // Vertex R6b = 45
(0.707106781821139 0.707106780551956 0) // Vertex R7b = 46 (0.707106781821139 0.707106780551956 0) // Vertex R7b = 46
(0.707106781821139 0.707106780551956 0) // Vertex R7sb = 47 (0.707106781821139 0.707106780551956 0) // Vertex R7sb = 47
(0.2 0 0.1) // Vertex r0t = 48 (0.2 0 0.1) // Vertex r0t = 48
(0.2 0 0.1) // Vertex r0st = 49 (0.2 0 0.1) // Vertex r0st = 49
(0.141421356364228 -0.141421356110391 0.1) // Vertex r1t = 50 (0.141421356364228 -0.141421356110391 0.1) // Vertex r1t = 50
(3.58979347393082e-10 -0.2 0.1) // Vertex r2t = 51 (3.58979347393082e-10 -0.2 0.1) // Vertex r2t = 51
(3.58979347393082e-10 -0.2 0.1) // Vertex r2st = 52 (3.58979347393082e-10 -0.2 0.1) // Vertex r2st = 52
(-0.141421355856554 -0.141421356618065 0.1) // Vertex r3t = 53 (-0.141421355856554 -0.141421356618065 0.1) // Vertex r3t = 53
(-0.2 7.17958694786164e-10 0.1) // Vertex r4t = 54 (-0.2 7.17958694786164e-10 0.1) // Vertex r4t = 54
(-0.2 7.17958694786164e-10 0.1) // Vertex r4st = 55 (-0.2 7.17958694786164e-10 0.1) // Vertex r4st = 55
(-0.141421355856554 0.141421356618065 0.1) // Vertex r5t = 56 (-0.141421355856554 0.141421356618065 0.1) // Vertex r5t = 56
(3.58979347393082e-10 0.2 0.1) // Vertex r6t = 57 (3.58979347393082e-10 0.2 0.1) // Vertex r6t = 57
(3.58979347393082e-10 0.2 0.1) // Vertex r6st = 58 (3.58979347393082e-10 0.2 0.1) // Vertex r6st = 58
(0.141421356364228 0.141421356110391 0.1) // Vertex r7t = 59 (0.141421356364228 0.141421356110391 0.1) // Vertex r7t = 59
(0.5 0 0.1) // Vertex rb0t = 60 (0.5 0 0.1) // Vertex rb0t = 60
(0.353553390910569 -0.353553390275978 0.1) // Vertex rb1t = 61 (0.353553390910569 -0.353553390275978 0.1) // Vertex rb1t = 61
(8.97448368482705e-10 -0.5 0.1) // Vertex rb2t = 62 (8.97448368482705e-10 -0.5 0.1) // Vertex rb2t = 62
(-0.353553389641386 -0.353553391545162 0.1) // Vertex rb3t = 63 (-0.353553389641386 -0.353553391545162 0.1) // Vertex rb3t = 63
(-0.5 1.79489673696541e-09 0.1) // Vertex rb4t = 64 (-0.5 1.79489673696541e-09 0.1) // Vertex rb4t = 64
(-0.353553389641386 0.353553391545162 0.1) // Vertex rb5t = 65 (-0.353553389641386 0.353553391545162 0.1) // Vertex rb5t = 65
(8.97448368482705e-10 0.5 0.1) // Vertex rb6t = 66 (8.97448368482705e-10 0.5 0.1) // Vertex rb6t = 66
(0.353553390910569 0.353553390275978 0.1) // Vertex rb7t = 67 (0.353553390910569 0.353553390275978 0.1) // Vertex rb7t = 67
(0.6 0 0.1) // Vertex ri0t = 68 (0.6 0 0.1) // Vertex ri0t = 68
(0.424264069092683 -0.424264068331174 0.1) // Vertex ri1t = 69 (0.424264069092683 -0.424264068331174 0.1) // Vertex ri1t = 69
(1.07693804217925e-09 -0.6 0.1) // Vertex ri2t = 70 (1.07693804217925e-09 -0.6 0.1) // Vertex ri2t = 70
(-0.424264067569663 -0.424264069854194 0.1) // Vertex ri3t = 71 (-0.424264067569663 -0.424264069854194 0.1) // Vertex ri3t = 71
(-0.6 2.15387608435849e-09 0.1) // Vertex ri4t = 72 (-0.6 2.15387608435849e-09 0.1) // Vertex ri4t = 72
(-0.424264067569663 0.424264069854194 0.1) // Vertex ri5t = 73 (-0.424264067569663 0.424264069854194 0.1) // Vertex ri5t = 73
(1.07693804217925e-09 0.6 0.1) // Vertex ri6t = 74 (1.07693804217925e-09 0.6 0.1) // Vertex ri6t = 74
(0.424264069092683 0.424264068331174 0.1) // Vertex ri7t = 75 (0.424264069092683 0.424264068331174 0.1) // Vertex ri7t = 75
(0.7 0 0.1) // Vertex Rb0t = 76 (0.7 0 0.1) // Vertex Rb0t = 76
(0.494974747274797 -0.494974746386369 0.1) // Vertex Rb1t = 77 (0.494974747274797 -0.494974746386369 0.1) // Vertex Rb1t = 77
(1.25642771587579e-09 -0.7 0.1) // Vertex Rb2t = 78 (1.25642771587579e-09 -0.7 0.1) // Vertex Rb2t = 78
(-0.49497474549794 -0.494974748163226 0.1) // Vertex Rb3t = 79 (-0.49497474549794 -0.494974748163226 0.1) // Vertex Rb3t = 79
(-0.7 2.51285543175157e-09 0.1) // Vertex Rb4t = 80 (-0.7 2.51285543175157e-09 0.1) // Vertex Rb4t = 80
(-0.49497474549794 0.494974748163226 0.1) // Vertex Rb5t = 81 (-0.49497474549794 0.494974748163226 0.1) // Vertex Rb5t = 81
(1.25642771587579e-09 0.7 0.1) // Vertex Rb6t = 82 (1.25642771587579e-09 0.7 0.1) // Vertex Rb6t = 82
(0.494974747274797 0.494974746386369 0.1) // Vertex Rb7t = 83 (0.494974747274797 0.494974746386369 0.1) // Vertex Rb7t = 83
(1 0 0.1) // Vertex R0t = 84 (1 0 0.1) // Vertex R0t = 84
(0.707106781821139 -0.707106780551956 0.1) // Vertex R1t = 85 (0.707106781821139 -0.707106780551956 0.1) // Vertex R1t = 85
(0.707106781821139 -0.707106780551956 0.1) // Vertex R1st = 86 (0.707106781821139 -0.707106780551956 0.1) // Vertex R1st = 86
(1.79489673696541e-09 -1 0.1) // Vertex R2t = 87 (1.79489673696541e-09 -1 0.1) // Vertex R2t = 87
(-0.707106779282772 -0.707106783090323 0.1) // Vertex R3t = 88 (-0.707106779282772 -0.707106783090323 0.1) // Vertex R3t = 88
(-0.707106779282772 -0.707106783090323 0.1) // Vertex R3st = 89 (-0.707106779282772 -0.707106783090323 0.1) // Vertex R3st = 89
(-1 3.58979347393082e-09 0.1) // Vertex R4t = 90 (-1 3.58979347393082e-09 0.1) // Vertex R4t = 90
(-0.707106779282772 0.707106783090323 0.1) // Vertex R5t = 91 (-0.707106779282772 0.707106783090323 0.1) // Vertex R5t = 91
(-0.707106779282772 0.707106783090323 0.1) // Vertex R5st = 92 (-0.707106779282772 0.707106783090323 0.1) // Vertex R5st = 92
(1.79489673696541e-09 1 0.1) // Vertex R6t = 93 (1.79489673696541e-09 1 0.1) // Vertex R6t = 93
(0.707106781821139 0.707106780551956 0.1) // Vertex R7t = 94 (0.707106781821139 0.707106780551956 0.1) // Vertex R7t = 94
(0.707106781821139 0.707106780551956 0.1) // Vertex R7st = 95 (0.707106781821139 0.707106780551956 0.1) // Vertex R7st = 95
); );
blocks blocks

View file

@ -24,14 +24,14 @@ boundaryField
GVINLET GVINLET
{ {
type fixedValue; type fixedValue;
value uniform 305.66; value uniform 305.66;
} }
GVOUTLET GVOUTLET
{ {
type ggiEnthalpyJump; type ggiEnthalpyJump;
patchType ggi; patchType ggi;
rotating false; rotating false;
value uniform 305.66; value uniform 305.66;
} }
GVCYCLIC GVCYCLIC
{ {
@ -52,16 +52,16 @@ boundaryField
RUINLET RUINLET
{ {
type ggiEnthalpyJump; type ggiEnthalpyJump;
patchType ggi; patchType ggi;
rotating true; rotating true;
value uniform 305.66; value uniform 305.66;
} }
RUOUTLET RUOUTLET
{ {
type ggiEnthalpyJump; type ggiEnthalpyJump;
patchType ggi; patchType ggi;
rotating true; rotating true;
value uniform 305.66; value uniform 305.66;
} }
RUCYCLIC1 RUCYCLIC1
{ {
@ -86,9 +86,9 @@ boundaryField
DTINLET DTINLET
{ {
type ggiEnthalpyJump; type ggiEnthalpyJump;
patchType ggi; patchType ggi;
rotating false; rotating false;
value uniform 305.66; value uniform 305.66;
} }
DTOUTLET DTOUTLET
{ {

View file

@ -28,7 +28,7 @@ boundaryField
GVOUTLET GVOUTLET
{ {
type ggi; type ggi;
value uniform (0 0 -1); value uniform (0 0 -1);
} }
GVCYCLIC GVCYCLIC
{ {
@ -52,12 +52,12 @@ boundaryField
RUINLET RUINLET
{ {
type ggi; type ggi;
value uniform (0 0 -1); value uniform (0 0 -1);
} }
RUOUTLET RUOUTLET
{ {
type ggi; type ggi;
value uniform (0 0 -1); value uniform (0 0 -1);
} }
RUCYCLIC1 RUCYCLIC1
{ {
@ -85,7 +85,7 @@ boundaryField
DTINLET DTINLET
{ {
type ggi; type ggi;
value uniform (0 0 -1); value uniform (0 0 -1);
} }
DTOUTLET DTOUTLET
{ {

View file

@ -139,56 +139,56 @@ convertToMeters 1;
vertices //(radial [m], tangential [radians], axial [m]) vertices //(radial [m], tangential [radians], axial [m])
( (
//Guide vane hub: //Guide vane hub:
(0.05 -0.0691150383 0.07) // Vertex GV0lb = 0 (0.05 -0.0691150383 0.07) // Vertex GV0lb = 0
(0.05 -0.00628318530000001 0.07) // Vertex GV0rb = 1 (0.05 -0.00628318530000001 0.07) // Vertex GV0rb = 1
(0.05 -0.062831853 0.09) // Vertex GV1lb = 2 (0.05 -0.062831853 0.09) // Vertex GV1lb = 2
(0.05 0 0.09) // Vertex GV1rb = 3 (0.05 0 0.09) // Vertex GV1rb = 3
(0.05 -0.0314159265 0.19) // Vertex GV2lb = 4 (0.05 -0.0314159265 0.19) // Vertex GV2lb = 4
(0.05 0.0314159265 0.19) // Vertex GV2rb = 5 (0.05 0.0314159265 0.19) // Vertex GV2rb = 5
(0.05 -0.0314159265 0.29) // Vertex GV3lb = 6 (0.05 -0.0314159265 0.29) // Vertex GV3lb = 6
(0.05 0.0314159265 0.29) // Vertex GV3rb = 7 (0.05 0.0314159265 0.29) // Vertex GV3rb = 7
//Guide vane shroud: //Guide vane shroud:
(0.1 -0.0691150383 0.07) // Vertex GV0lt = 8 (0.1 -0.0691150383 0.07) // Vertex GV0lt = 8
(0.1 -0.00628318530000001 0.07) // Vertex GV0rt = 9 (0.1 -0.00628318530000001 0.07) // Vertex GV0rt = 9
(0.1 -0.062831853 0.09) // Vertex GV1lt = 10 (0.1 -0.062831853 0.09) // Vertex GV1lt = 10
(0.1 0 0.09) // Vertex GV1rt = 11 (0.1 0 0.09) // Vertex GV1rt = 11
(0.1 -0.0314159265 0.19) // Vertex GV2lt = 12 (0.1 -0.0314159265 0.19) // Vertex GV2lt = 12
(0.1 0.0314159265 0.19) // Vertex GV2rt = 13 (0.1 0.0314159265 0.19) // Vertex GV2rt = 13
(0.1 -0.0314159265 0.29) // Vertex GV3lt = 14 (0.1 -0.0314159265 0.29) // Vertex GV3lt = 14
(0.1 0.0314159265 0.29) // Vertex GV3rt = 15 (0.1 0.0314159265 0.29) // Vertex GV3rt = 15
//Runner hub: //Runner hub:
(0.05 -0.0062831853 -0.07) // Vertex RU0lb = 16 (0.05 -0.0062831853 -0.07) // Vertex RU0lb = 16
(0.05 0.0565486677 -0.07) // Vertex RU0rb = 17 (0.05 0.0565486677 -0.07) // Vertex RU0rb = 17
(0.05 -0.0125663706 -0.05) // Vertex RU1lb = 18 (0.05 -0.0125663706 -0.05) // Vertex RU1lb = 18
(0.05 0.0502654824 -0.05) // Vertex RU1rb = 19 (0.05 0.0502654824 -0.05) // Vertex RU1rb = 19
(0.05 -0.062831853 0.05) // Vertex RU2lb = 20 (0.05 -0.062831853 0.05) // Vertex RU2lb = 20
(0.05 0 0.05) // Vertex RU2rb = 21 (0.05 0 0.05) // Vertex RU2rb = 21
(0.05 -0.0691150383 0.07) // Vertex RU3lb = 22 (0.05 -0.0691150383 0.07) // Vertex RU3lb = 22
(0.05 -0.00628318530000001 0.07) // Vertex RU3rb = 23 (0.05 -0.00628318530000001 0.07) // Vertex RU3rb = 23
//Runner shroud: //Runner shroud:
(0.1 -0.0062831853 -0.07) // Vertex RU0lt = 24 (0.1 -0.0062831853 -0.07) // Vertex RU0lt = 24
(0.1 0.0565486677 -0.07) // Vertex RU0rt = 25 (0.1 0.0565486677 -0.07) // Vertex RU0rt = 25
(0.1 -0.0125663706 -0.05) // Vertex RU1lt = 26 (0.1 -0.0125663706 -0.05) // Vertex RU1lt = 26
(0.1 0.0502654824 -0.05) // Vertex RU1rt = 27 (0.1 0.0502654824 -0.05) // Vertex RU1rt = 27
(0.1 -0.062831853 0.05) // Vertex RU2lt = 28 (0.1 -0.062831853 0.05) // Vertex RU2lt = 28
(0.1 0 0.05) // Vertex RU2rt = 29 (0.1 0 0.05) // Vertex RU2rt = 29
(0.1 -0.0691150383 0.07) // Vertex RU3lt = 30 (0.1 -0.0691150383 0.07) // Vertex RU3lt = 30
(0.1 -0.00628318530000001 0.07) // Vertex RU3rt = 31 (0.1 -0.00628318530000001 0.07) // Vertex RU3rt = 31
//Draft tube hub: //Draft tube hub:
(0.05 -0.0062831853 -0.14) // Vertex DT0lb = 32 (0.05 -0.0062831853 -0.14) // Vertex DT0lb = 32
(0.05 0.0565486677 -0.14) // Vertex DT0rb = 33 (0.05 0.0565486677 -0.14) // Vertex DT0rb = 33
(0.05 -0.0062831853 -0.07) // Vertex DT1lb = 34 (0.05 -0.0062831853 -0.07) // Vertex DT1lb = 34
(0.05 0.0565486677 -0.07) // Vertex DT1rb = 35 (0.05 0.0565486677 -0.07) // Vertex DT1rb = 35
//Draft tube shroud: //Draft tube shroud:
(0.1 -0.0062831853 -0.14) // Vertex DT0lt = 36 (0.1 -0.0062831853 -0.14) // Vertex DT0lt = 36
(0.1 0.0565486677 -0.14) // Vertex DT0rt = 37 (0.1 0.0565486677 -0.14) // Vertex DT0rt = 37
(0.1 -0.0062831853 -0.07) // Vertex DT1lt = 38 (0.1 -0.0062831853 -0.07) // Vertex DT1lt = 38
(0.1 0.0565486677 -0.07) // Vertex DT1rt = 39 (0.1 0.0565486677 -0.07) // Vertex DT1rt = 39
); );
blocks blocks

View file

@ -24,14 +24,14 @@ boundaryField
GVINLET GVINLET
{ {
type fixedValue; type fixedValue;
value uniform 305.66; value uniform 305.66;
} }
GVOUTLET GVOUTLET
{ {
type ggiEnthalpyJump; type ggiEnthalpyJump;
patchType ggi; patchType ggi;
rotating false; rotating false;
value uniform 305.66; value uniform 305.66;
} }
GVCYCLIC GVCYCLIC
{ {
@ -52,16 +52,16 @@ boundaryField
RUINLET RUINLET
{ {
type ggiEnthalpyJump; type ggiEnthalpyJump;
patchType ggi; patchType ggi;
rotating true; rotating true;
value uniform 305.66; value uniform 305.66;
} }
RUOUTLET RUOUTLET
{ {
type ggiEnthalpyJump; type ggiEnthalpyJump;
patchType ggi; patchType ggi;
rotating true; rotating true;
value uniform 305.66; value uniform 305.66;
} }
RUCYCLIC1 RUCYCLIC1
{ {
@ -86,9 +86,9 @@ boundaryField
DTINLET DTINLET
{ {
type ggiEnthalpyJump; type ggiEnthalpyJump;
patchType ggi; patchType ggi;
rotating false; rotating false;
value uniform 305.66; value uniform 305.66;
} }
DTOUTLET DTOUTLET
{ {

View file

@ -28,7 +28,7 @@ boundaryField
GVOUTLET GVOUTLET
{ {
type ggi; type ggi;
value uniform (0 0 -1); value uniform (0 0 -1);
} }
GVCYCLIC GVCYCLIC
{ {
@ -52,12 +52,12 @@ boundaryField
RUINLET RUINLET
{ {
type ggi; type ggi;
value uniform (0 0 -1); value uniform (0 0 -1);
} }
RUOUTLET RUOUTLET
{ {
type ggi; type ggi;
value uniform (0 0 -1); value uniform (0 0 -1);
} }
RUCYCLIC1 RUCYCLIC1
{ {
@ -85,7 +85,7 @@ boundaryField
DTINLET DTINLET
{ {
type ggi; type ggi;
value uniform (0 0 -1); value uniform (0 0 -1);
} }
DTOUTLET DTOUTLET
{ {

View file

@ -22,7 +22,7 @@ ddtSchemes
// ddt(rho,U) steadyInertial phi rho 0.25; // ddt(rho,U) steadyInertial phi rho 0.25;
ddt(rho,h) steadyState; ddt(rho,h) steadyState;
ddt(rho,i) steadyState; ddt(rho,i) steadyState;
// ddt(rho,h) steadyInertial phi rho 0.25; // ddt(rho,h) steadyInertial phi rho 0.25;
ddt(psi,p) steadyInertial phi rho 1; ddt(psi,p) steadyInertial phi rho 1;
// ddt(psi,p) steadyState; // ddt(psi,p) steadyState;
@ -44,7 +44,7 @@ divSchemes
default none; default none;
div(phi,U) Gauss upwind; div(phi,U) Gauss upwind;
div(phi,h) Gauss upwind; div(phi,h) Gauss upwind;
div(phi,i) Gauss upwind; div(phi,i) Gauss upwind;
div(phid,p) Gauss upwind; div(phid,p) Gauss upwind;
div(phi,k) Gauss upwind; div(phi,k) Gauss upwind;
@ -74,10 +74,10 @@ snGradSchemes
mixingPlane mixingPlane
{ {
default areaAveraging; default areaAveraging;
U areaAveraging; U areaAveraging;
k fluxAveraging; k fluxAveraging;
omega areaAveraging; omega areaAveraging;
} }
// ************************************************************************* // // ************************************************************************* //

View file

@ -57,7 +57,8 @@ solvers
tolerance 1e-7; tolerance 1e-7;
relTol 0.1; relTol 0.1;
} }
T
T
{ {
solver smoothSolver; solver smoothSolver;
smoother GaussSeidel; smoother GaussSeidel;
@ -65,7 +66,8 @@ solvers
tolerance 1e-7; tolerance 1e-7;
relTol 0.1; relTol 0.1;
} }
i
i
{ {
solver smoothSolver; solver smoothSolver;
smoother GaussSeidel; smoother GaussSeidel;
@ -97,9 +99,9 @@ relaxationFactors
U 0.1; U 0.1;
p 0.1; p 0.1;
h 0.1; h 0.1;
i 0.1; i 0.1;
rho 0.1; rho 0.1;
T 0.1; T 0.1;
k 0.1; k 0.1;
epsilon 0.1; epsilon 0.1;
@ -107,10 +109,10 @@ relaxationFactors
fieldBounds fieldBounds
{ {
p 50 1e8; p 50 1e8;
T 100 1000; T 100 1000;
U 1000; U 1000;
epsilon 0 1e6; epsilon 0 1e6;
} }

View file

@ -28,7 +28,7 @@ boundaryField
GVOUTLET GVOUTLET
{ {
type mixingPlane; type mixingPlane;
value uniform (0 0 -1); value uniform (0 0 -1);
} }
GVCYCLIC GVCYCLIC
{ {
@ -52,12 +52,12 @@ boundaryField
RUINLET RUINLET
{ {
type mixingPlane; type mixingPlane;
value uniform (0 0 -1); value uniform (0 0 -1);
} }
RUOUTLET RUOUTLET
{ {
type mixingPlane; type mixingPlane;
value uniform (0 0 -1); value uniform (0 0 -1);
} }
RUCYCLIC1 RUCYCLIC1
{ {
@ -85,7 +85,7 @@ boundaryField
DTINLET DTINLET
{ {
type mixingPlane; type mixingPlane;
value uniform (0 0 -1); value uniform (0 0 -1);
} }
DTOUTLET DTOUTLET
{ {

View file

@ -48,13 +48,13 @@ boundaryField
{ {
type gradientEnthalpy; type gradientEnthalpy;
gradient uniform 0; gradient uniform 0;
value uniform 307494; value uniform 307494;
} }
GVSHROUD GVSHROUD
{ {
type gradientEnthalpy; type gradientEnthalpy;
gradient uniform 0; gradient uniform 0;
value uniform 307494; value uniform 307494;
} }
RUINLET RUINLET
{ {
@ -68,32 +68,32 @@ boundaryField
type mixingPlaneEnthalpyJump; type mixingPlaneEnthalpyJump;
patchType mixingPlane; patchType mixingPlane;
rotating true; rotating true;
value uniform 307494; value uniform 307494;
} }
RUCYCLIC1 RUCYCLIC1
{ {
type cyclicGgi; type cyclicGgi;
value uniform 307494; value uniform 307494;
} }
RUCYCLIC2 RUCYCLIC2
{ {
type cyclicGgi; type cyclicGgi;
value uniform 307494; value uniform 307494;
} }
RUBLADE RUBLADE
{ {
type gradientEnthalpy; type gradientEnthalpy;
gradient uniform 307494; gradient uniform 307494;
} }
RUHUB RUHUB
{ {
type gradientEnthalpy; type gradientEnthalpy;
gradient uniform 307494; gradient uniform 307494;
} }
RUSHROUD RUSHROUD
{ {
type gradientEnthalpy; type gradientEnthalpy;
gradient uniform 307494; gradient uniform 307494;
} }
DTINLET DTINLET
@ -107,30 +107,30 @@ boundaryField
{ {
type gradientEnthalpy; type gradientEnthalpy;
gradient uniform 0; gradient uniform 0;
value uniform 307494; value uniform 307494;
} }
DTCYCLIC1 DTCYCLIC1
{ {
type cyclicGgi; type cyclicGgi;
value uniform 307494; value uniform 307494;
} }
DTCYCLIC2 DTCYCLIC2
{ {
type cyclicGgi; type cyclicGgi;
value uniform 307494; value uniform 307494;
} }
DTHUB DTHUB
{ {
type gradientEnthalpy; type gradientEnthalpy;
gradient uniform 0; gradient uniform 0;
value uniform 307494; value uniform 307494;
} }
DTSHROUD DTSHROUD
{ {
type gradientEnthalpy; type gradientEnthalpy;
gradient uniform 0; gradient uniform 0;
value uniform 307494; value uniform 307494;
} }
} }

View file

@ -139,56 +139,56 @@ convertToMeters 1;
vertices //(radial [m], tangential [radians], axial [m]) vertices //(radial [m], tangential [radians], axial [m])
( (
//Guide vane hub: //Guide vane hub:
(0.05 -0.0691150383 0.07) // Vertex GV0lb = 0 (0.05 -0.0691150383 0.07) // Vertex GV0lb = 0
(0.05 -0.00628318530000001 0.07) // Vertex GV0rb = 1 (0.05 -0.00628318530000001 0.07) // Vertex GV0rb = 1
(0.05 -0.062831853 0.09) // Vertex GV1lb = 2 (0.05 -0.062831853 0.09) // Vertex GV1lb = 2
(0.05 0 0.09) // Vertex GV1rb = 3 (0.05 0 0.09) // Vertex GV1rb = 3
(0.05 -0.0314159265 0.19) // Vertex GV2lb = 4 (0.05 -0.0314159265 0.19) // Vertex GV2lb = 4
(0.05 0.0314159265 0.19) // Vertex GV2rb = 5 (0.05 0.0314159265 0.19) // Vertex GV2rb = 5
(0.05 -0.0314159265 0.29) // Vertex GV3lb = 6 (0.05 -0.0314159265 0.29) // Vertex GV3lb = 6
(0.05 0.0314159265 0.29) // Vertex GV3rb = 7 (0.05 0.0314159265 0.29) // Vertex GV3rb = 7
//Guide vane shroud: //Guide vane shroud:
(0.1 -0.0691150383 0.07) // Vertex GV0lt = 8 (0.1 -0.0691150383 0.07) // Vertex GV0lt = 8
(0.1 -0.00628318530000001 0.07) // Vertex GV0rt = 9 (0.1 -0.00628318530000001 0.07) // Vertex GV0rt = 9
(0.1 -0.062831853 0.09) // Vertex GV1lt = 10 (0.1 -0.062831853 0.09) // Vertex GV1lt = 10
(0.1 0 0.09) // Vertex GV1rt = 11 (0.1 0 0.09) // Vertex GV1rt = 11
(0.1 -0.0314159265 0.19) // Vertex GV2lt = 12 (0.1 -0.0314159265 0.19) // Vertex GV2lt = 12
(0.1 0.0314159265 0.19) // Vertex GV2rt = 13 (0.1 0.0314159265 0.19) // Vertex GV2rt = 13
(0.1 -0.0314159265 0.29) // Vertex GV3lt = 14 (0.1 -0.0314159265 0.29) // Vertex GV3lt = 14
(0.1 0.0314159265 0.29) // Vertex GV3rt = 15 (0.1 0.0314159265 0.29) // Vertex GV3rt = 15
//Runner hub: //Runner hub:
(0.05 -0.0062831853 -0.07) // Vertex RU0lb = 16 (0.05 -0.0062831853 -0.07) // Vertex RU0lb = 16
(0.05 0.0565486677 -0.07) // Vertex RU0rb = 17 (0.05 0.0565486677 -0.07) // Vertex RU0rb = 17
(0.05 -0.0125663706 -0.05) // Vertex RU1lb = 18 (0.05 -0.0125663706 -0.05) // Vertex RU1lb = 18
(0.05 0.0502654824 -0.05) // Vertex RU1rb = 19 (0.05 0.0502654824 -0.05) // Vertex RU1rb = 19
(0.05 -0.062831853 0.05) // Vertex RU2lb = 20 (0.05 -0.062831853 0.05) // Vertex RU2lb = 20
(0.05 0 0.05) // Vertex RU2rb = 21 (0.05 0 0.05) // Vertex RU2rb = 21
(0.05 -0.0691150383 0.07) // Vertex RU3lb = 22 (0.05 -0.0691150383 0.07) // Vertex RU3lb = 22
(0.05 -0.00628318530000001 0.07) // Vertex RU3rb = 23 (0.05 -0.00628318530000001 0.07) // Vertex RU3rb = 23
//Runner shroud: //Runner shroud:
(0.1 -0.0062831853 -0.07) // Vertex RU0lt = 24 (0.1 -0.0062831853 -0.07) // Vertex RU0lt = 24
(0.1 0.0565486677 -0.07) // Vertex RU0rt = 25 (0.1 0.0565486677 -0.07) // Vertex RU0rt = 25
(0.1 -0.0125663706 -0.05) // Vertex RU1lt = 26 (0.1 -0.0125663706 -0.05) // Vertex RU1lt = 26
(0.1 0.0502654824 -0.05) // Vertex RU1rt = 27 (0.1 0.0502654824 -0.05) // Vertex RU1rt = 27
(0.1 -0.062831853 0.05) // Vertex RU2lt = 28 (0.1 -0.062831853 0.05) // Vertex RU2lt = 28
(0.1 0 0.05) // Vertex RU2rt = 29 (0.1 0 0.05) // Vertex RU2rt = 29
(0.1 -0.0691150383 0.07) // Vertex RU3lt = 30 (0.1 -0.0691150383 0.07) // Vertex RU3lt = 30
(0.1 -0.00628318530000001 0.07) // Vertex RU3rt = 31 (0.1 -0.00628318530000001 0.07) // Vertex RU3rt = 31
//Draft tube hub: //Draft tube hub:
(0.05 -0.0062831853 -0.14) // Vertex DT0lb = 32 (0.05 -0.0062831853 -0.14) // Vertex DT0lb = 32
(0.05 0.0565486677 -0.14) // Vertex DT0rb = 33 (0.05 0.0565486677 -0.14) // Vertex DT0rb = 33
(0.05 -0.0062831853 -0.07) // Vertex DT1lb = 34 (0.05 -0.0062831853 -0.07) // Vertex DT1lb = 34
(0.05 0.0565486677 -0.07) // Vertex DT1rb = 35 (0.05 0.0565486677 -0.07) // Vertex DT1rb = 35
//Draft tube shroud: //Draft tube shroud:
(0.1 -0.0062831853 -0.14) // Vertex DT0lt = 36 (0.1 -0.0062831853 -0.14) // Vertex DT0lt = 36
(0.1 0.0565486677 -0.14) // Vertex DT0rt = 37 (0.1 0.0565486677 -0.14) // Vertex DT0rt = 37
(0.1 -0.0062831853 -0.07) // Vertex DT1lt = 38 (0.1 -0.0062831853 -0.07) // Vertex DT1lt = 38
(0.1 0.0565486677 -0.07) // Vertex DT1rt = 39 (0.1 0.0565486677 -0.07) // Vertex DT1rt = 39
); );
blocks blocks

View file

@ -30,7 +30,7 @@ FoamFile
startFace 11840; startFace 11840;
shadowPatch RUINLET; shadowPatch RUINLET;
zone GVOUTLETZone; zone GVOUTLETZone;
coordinateSystem coordinateSystem
{ {
type cylindrical; type cylindrical;
name mixingCS; name mixingCS;
@ -39,7 +39,7 @@ FoamFile
e3 (0 0 1); e3 (0 0 1);
inDegrees true; inDegrees true;
} }
ribbonPatch ribbonPatch
{ {
sweepAxis Theta; sweepAxis Theta;
stackAxis R; stackAxis R;
@ -91,7 +91,7 @@ FoamFile
startFace 12920; startFace 12920;
shadowPatch DTINLET; shadowPatch DTINLET;
zone RUOUTLETZone; zone RUOUTLETZone;
coordinateSystem coordinateSystem
{ {
type cylindrical; type cylindrical;
name mixingCS; name mixingCS;
@ -100,7 +100,7 @@ FoamFile
e3 (0 0 1); e3 (0 0 1);
inDegrees true; inDegrees true;
} }
ribbonPatch ribbonPatch
{ {
sweepAxis Theta; sweepAxis Theta;
stackAxis R; stackAxis R;

View file

@ -28,7 +28,7 @@ boundaryField
GVOUTLET GVOUTLET
{ {
type mixingPlane; type mixingPlane;
value uniform (0 0 -1); value uniform (0 0 -1);
} }
GVCYCLIC GVCYCLIC
{ {
@ -52,12 +52,12 @@ boundaryField
RUINLET RUINLET
{ {
type mixingPlane; type mixingPlane;
value uniform (0 0 -1); value uniform (0 0 -1);
} }
RUOUTLET RUOUTLET
{ {
type mixingPlane; type mixingPlane;
value uniform (0 0 -1); value uniform (0 0 -1);
} }
RUCYCLIC1 RUCYCLIC1
{ {
@ -85,7 +85,7 @@ boundaryField
DTINLET DTINLET
{ {
type mixingPlane; type mixingPlane;
value uniform (0 0 -1); value uniform (0 0 -1);
} }
DTOUTLET DTOUTLET
{ {

View file

@ -48,13 +48,13 @@ boundaryField
{ {
type gradientEnthalpy; type gradientEnthalpy;
gradient uniform 0; gradient uniform 0;
value uniform 307494; value uniform 307494;
} }
GVSHROUD GVSHROUD
{ {
type gradientEnthalpy; type gradientEnthalpy;
gradient uniform 0; gradient uniform 0;
value uniform 307494; value uniform 307494;
} }
RUINLET RUINLET
{ {
@ -68,32 +68,32 @@ boundaryField
type mixingPlaneEnthalpyJump; type mixingPlaneEnthalpyJump;
patchType mixingPlane; patchType mixingPlane;
rotating true; rotating true;
value uniform 307494; value uniform 307494;
} }
RUCYCLIC1 RUCYCLIC1
{ {
type cyclicGgi; type cyclicGgi;
value uniform 307494; value uniform 307494;
} }
RUCYCLIC2 RUCYCLIC2
{ {
type cyclicGgi; type cyclicGgi;
value uniform 307494; value uniform 307494;
} }
RUBLADE RUBLADE
{ {
type gradientEnthalpy; type gradientEnthalpy;
gradient uniform 307494; gradient uniform 307494;
} }
RUHUB RUHUB
{ {
type gradientEnthalpy; type gradientEnthalpy;
gradient uniform 307494; gradient uniform 307494;
} }
RUSHROUD RUSHROUD
{ {
type gradientEnthalpy; type gradientEnthalpy;
gradient uniform 307494; gradient uniform 307494;
} }
DTINLET DTINLET
@ -107,30 +107,30 @@ boundaryField
{ {
type gradientEnthalpy; type gradientEnthalpy;
gradient uniform 0; gradient uniform 0;
value uniform 307494; value uniform 307494;
} }
DTCYCLIC1 DTCYCLIC1
{ {
type cyclicGgi; type cyclicGgi;
value uniform 307494; value uniform 307494;
} }
DTCYCLIC2 DTCYCLIC2
{ {
type cyclicGgi; type cyclicGgi;
value uniform 307494; value uniform 307494;
} }
DTHUB DTHUB
{ {
type gradientEnthalpy; type gradientEnthalpy;
gradient uniform 0; gradient uniform 0;
value uniform 307494; value uniform 307494;
} }
DTSHROUD DTSHROUD
{ {
type gradientEnthalpy; type gradientEnthalpy;
gradient uniform 0; gradient uniform 0;
value uniform 307494; value uniform 307494;
} }
} }

View file

@ -22,7 +22,7 @@ ddtSchemes
// ddt(rho,U) steadyInertial phi rho 0.25; // ddt(rho,U) steadyInertial phi rho 0.25;
ddt(rho,h) steadyState; ddt(rho,h) steadyState;
ddt(rho,i) steadyState; ddt(rho,i) steadyState;
// ddt(rho,h) steadyInertial phi rho 0.25; // ddt(rho,h) steadyInertial phi rho 0.25;
ddt(psi,p) steadyInertial phi rho 1; ddt(psi,p) steadyInertial phi rho 1;
// ddt(psi,p) steadyState; // ddt(psi,p) steadyState;
@ -44,7 +44,7 @@ divSchemes
default none; default none;
div(phi,U) Gauss upwind; div(phi,U) Gauss upwind;
div(phi,h) Gauss upwind; div(phi,h) Gauss upwind;
div(phi,i) Gauss upwind; div(phi,i) Gauss upwind;
div(phid,p) Gauss upwind; div(phid,p) Gauss upwind;
div(phi,k) Gauss upwind; div(phi,k) Gauss upwind;
@ -74,10 +74,10 @@ snGradSchemes
mixingPlane mixingPlane
{ {
default areaAveraging; default areaAveraging;
U areaAveraging; U areaAveraging;
k fluxAveraging; k fluxAveraging;
omega areaAveraging; omega areaAveraging;
} }

View file

@ -1,76 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default steadyState;
}
gradSchemes
{
default Gauss linear;
grad(p) Gauss linear;
grad(U) Gauss linear;
}
divSchemes
{
default none;
div(phi,U) Gauss limitedLinearV 1;
div(phi,k) Gauss limitedLinear 1;
div(phi,i) Gauss limitedLinear 1;
div(phid,p) Gauss limitedLinear 1;
div(phi,epsilon) Gauss limitedLinear 1;
div((nuEff*dev(grad(U).T()))) Gauss linear;
div((muEff*dev2(grad(U).T()))) Gauss linear;
}
laplacianSchemes
{
default none;
laplacian(nuEff,U) Gauss linear corrected;
laplacian((rho*(1|A(U))),p) Gauss linear corrected;
laplacian(DkEff,k) Gauss linear corrected;
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
laplacian(muEff,U) Gauss linear corrected;
laplacian(alphaEff,i) Gauss linear corrected;
}
interpolationSchemes
{
default linear;
interpolate(U) linear;
}
snGradSchemes
{
default corrected;
}
fluxRequired
{
default no;
p;
}
mixingPlane
{
default areaAveraging;
//U fluxAveragingAdjustMassFlow;
//p zeroGradientAreaAveragingMix;
}
// ************************************************************************* //

View file

@ -47,7 +47,8 @@ solvers
tolerance 1e-7; tolerance 1e-7;
relTol 0.1; relTol 0.1;
} }
T
T
{ {
solver smoothSolver; solver smoothSolver;
smoother GaussSeidel; smoother GaussSeidel;
@ -55,7 +56,8 @@ solvers
tolerance 1e-7; tolerance 1e-7;
relTol 0.1; relTol 0.1;
} }
i
i
{ {
solver smoothSolver; solver smoothSolver;
smoother GaussSeidel; smoother GaussSeidel;
@ -87,9 +89,9 @@ relaxationFactors
U 0.1; U 0.1;
p 0.1; p 0.1;
h 0.1; h 0.1;
i 0.1; i 0.1;
rho 0.1; rho 0.1;
T 0.1; T 0.1;
k 0.1; k 0.1;
epsilon 0.1; epsilon 0.1;
@ -97,10 +99,10 @@ relaxationFactors
fieldBounds fieldBounds
{ {
p 50 1e8; p 50 1e8;
T 100 1000; T 100 1000;
U 1000; U 1000;
epsilon 0 1e6; epsilon 0 1e6;
} }

View file

@ -53,8 +53,8 @@ maxCo 0.2;
libs libs
( (
"liblduSolvers.so" "liblduSolvers.so"
"libimmersedBoundary.so" "libimmersedBoundary.so"
"libimmersedBoundaryDynamicFvMesh.so" "libimmersedBoundaryDynamicFvMesh.so"
); );
functions functions

Some files were not shown because too many files have changed in this diff Show more