Removing trailing whitespace, tabs and DOS CR & Fixing some indentation
This commit is contained in:
parent
d838b666f6
commit
a224c64812
110 changed files with 1957 additions and 2039 deletions
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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));
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -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_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -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;
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -11,4 +11,4 @@ EXE_LIBS = \
|
||||||
-lspecie \
|
-lspecie \
|
||||||
-lcompressibleTurbulenceModel \
|
-lcompressibleTurbulenceModel \
|
||||||
-lcompressibleRASModels \
|
-lcompressibleRASModels \
|
||||||
-lcompressibleLESModels
|
-lcompressibleLESModels
|
||||||
|
|
|
@ -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));
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
icoDyMIbFoam.C
|
icoDyMIbFoam.C
|
||||||
|
|
||||||
EXE = $(FOAM_APPBIN)/icoDyMIbFoam
|
EXE = $(FOAM_APPBIN)/icoDyMIbFoam
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ public:
|
||||||
//- Construct from mesh
|
//- Construct from mesh
|
||||||
numericFluxBase(const fvMesh& mesh)
|
numericFluxBase(const fvMesh& mesh)
|
||||||
:
|
:
|
||||||
basicNumericFlux(mesh)
|
basicNumericFlux(mesh)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -420,7 +420,7 @@ void Foam::decompositionMethod::fixCyclics
|
||||||
) << "Fixed " << nFixedCyclics << " disconnected cyclic faces";
|
) << "Fixed " << nFixedCyclics << " disconnected cyclic faces";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (nFixedCyclics > 0);
|
while (nFixedCyclics > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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_;
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)");
|
||||||
|
|
|
@ -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&);
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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_;
|
||||||
|
|
|
@ -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*
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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),
|
||||||
|
|
|
@ -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)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
// *********************************************************************************************************************** //
|
// *********************************************************************************************************************** //
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -17,7 +17,7 @@ FoamFile
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
//CL: this is all
|
//CL: this is all
|
||||||
thermoType IAPWSThermo;
|
thermoType IAPWSThermo;
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -17,7 +17,7 @@ FoamFile
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
//CL: this is all
|
//CL: this is all
|
||||||
thermoType IAPWSThermo;
|
thermoType IAPWSThermo;
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
// *********************************************************************************************************************** //
|
// *********************************************************************************************************************** //
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
Reference in a new issue