Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e29811f5df | |||
| d93375f714 | |||
| 6b3f9c0b97 | |||
| 0d4d30aa29 | |||
| 039d77aae4 | |||
| bdc14dcd3d | |||
| 96e04780bf |
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2012-2018 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2012-2019 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -29,6 +29,7 @@ License
|
||||
#include "stringIOList.H"
|
||||
#include "cellModeller.H"
|
||||
#include "vectorIOField.H"
|
||||
#include "stringOps.H"
|
||||
|
||||
/* * * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * * */
|
||||
|
||||
@ -907,6 +908,19 @@ void Foam::vtkUnstructuredReader::read(ISstream& inFile)
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (tag == "METADATA")
|
||||
{
|
||||
// Read rest of the line
|
||||
string line;
|
||||
inFile.getLine(line);
|
||||
|
||||
// Skip until an empty line is found
|
||||
inFile.getLine(line);
|
||||
while (!stringOps::trim(line).empty())
|
||||
{
|
||||
inFile.getLine(line);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
FatalIOErrorInFunction(inFile)
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2018 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2018-2019 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -60,7 +60,6 @@ public:
|
||||
wordRe name;
|
||||
scalar absTol;
|
||||
scalar relTol;
|
||||
label solveIndex;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2018 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2018-2019 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -96,7 +96,6 @@ bool Foam::singleRegionCorrectorConvergenceControl::readCorrResidualControls()
|
||||
rd.name = fName.c_str();
|
||||
rd.absTol = readScalar(fieldDict.lookup("tolerance"));
|
||||
rd.relTol = readScalar(fieldDict.lookup("relTol"));
|
||||
rd.solveIndex = 0;
|
||||
data.append(rd);
|
||||
}
|
||||
else
|
||||
@ -177,11 +176,11 @@ corrCriteriaSatisfied() const
|
||||
const dictionary& solverDict = mesh_.solverPerformanceDict();
|
||||
forAllConstIter(dictionary, solverDict, iter)
|
||||
{
|
||||
const word& variableName = iter().keyword();
|
||||
const word& fieldName = iter().keyword();
|
||||
const label fieldi =
|
||||
convergenceControl::residualControlIndex
|
||||
(
|
||||
variableName,
|
||||
fieldName,
|
||||
corrResidualControl_
|
||||
);
|
||||
if (fieldi != -1)
|
||||
@ -190,8 +189,8 @@ corrCriteriaSatisfied() const
|
||||
convergenceControl::getInitialResiduals
|
||||
(
|
||||
mesh_,
|
||||
variableName,
|
||||
corrResidualControl_[fieldi].solveIndex,
|
||||
fieldName,
|
||||
solveIndex_.found(fieldName) ? solveIndex_[fieldName] : 0,
|
||||
iter().stream(),
|
||||
firstResidual,
|
||||
residual
|
||||
@ -209,7 +208,7 @@ corrCriteriaSatisfied() const
|
||||
|
||||
if (control_.debug)
|
||||
{
|
||||
Info<< control_.algorithmSpace() << " " << variableName
|
||||
Info<< control_.algorithmSpace() << " " << fieldName
|
||||
<< ": tolerance " << residual << " ("
|
||||
<< corrResidualControl_[fieldi].absTol << ")"
|
||||
<< ", relTol " << relativeResidual << " ("
|
||||
@ -225,10 +224,7 @@ corrCriteriaSatisfied() const
|
||||
|
||||
void Foam::singleRegionCorrectorConvergenceControl::resetCorrSolveIndex()
|
||||
{
|
||||
forAll(corrResidualControl_, i)
|
||||
{
|
||||
corrResidualControl_[i].solveIndex = 0;
|
||||
}
|
||||
solveIndex_.clear();
|
||||
}
|
||||
|
||||
|
||||
@ -237,23 +233,14 @@ void Foam::singleRegionCorrectorConvergenceControl::updateCorrSolveIndex()
|
||||
const dictionary& solverDict = mesh_.solverPerformanceDict();
|
||||
forAllConstIter(dictionary, solverDict, iter)
|
||||
{
|
||||
const word& variableName = iter().keyword();
|
||||
const label fieldi =
|
||||
convergenceControl::residualControlIndex
|
||||
(
|
||||
variableName,
|
||||
corrResidualControl_
|
||||
);
|
||||
if (fieldi != -1)
|
||||
{
|
||||
getNSolves
|
||||
(
|
||||
mesh_,
|
||||
variableName,
|
||||
iter().stream(),
|
||||
corrResidualControl_[fieldi].solveIndex
|
||||
);
|
||||
}
|
||||
const word& fieldName = iter().keyword();
|
||||
getNSolves
|
||||
(
|
||||
mesh_,
|
||||
fieldName,
|
||||
iter().stream(),
|
||||
solveIndex_(fieldName)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2018 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2018-2019 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -62,6 +62,11 @@ protected:
|
||||
//- List of residual data per field
|
||||
List<corrResidualData> corrResidualControl_;
|
||||
|
||||
//- The index of the solution at the start of the corrector loop, for
|
||||
// each field. If the field name is not in the table then the index is
|
||||
// assumed to be zero; i.e, the first solution.
|
||||
HashTable<label> solveIndex_;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -131,13 +131,39 @@ void Foam::freestreamPressureFvPatchScalarField::updateCoeffs()
|
||||
UName_
|
||||
);
|
||||
|
||||
const Field<scalar> magUp(mag(Up));
|
||||
|
||||
const Field<vector>& nf = patch().nf();
|
||||
|
||||
Field<scalar>& vf = valueFraction();
|
||||
|
||||
if (supersonic_)
|
||||
{
|
||||
valueFraction() = 0.5 - 0.5*(Up & patch().nf())/mag(Up);
|
||||
forAll(vf, i)
|
||||
{
|
||||
if (magUp[i] > vSmall)
|
||||
{
|
||||
vf[i] = 0.5 - 0.5*(Up[i] & nf[i])/magUp[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
vf[i] = 0.5;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
valueFraction() = 0.5 + 0.5*(Up & patch().nf())/mag(Up);
|
||||
forAll(vf, i)
|
||||
{
|
||||
if (magUp[i] > vSmall)
|
||||
{
|
||||
vf[i] = 0.5 + 0.5*(Up[i] & nf[i])/magUp[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
vf[i] = 0.5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mixedFvPatchField<scalar>::updateCoeffs();
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2018 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2018-2019 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -107,8 +107,23 @@ void Foam::freestreamVelocityFvPatchVectorField::updateCoeffs()
|
||||
}
|
||||
|
||||
const Field<vector>& Up = *this;
|
||||
const Field<scalar> magUp(mag(Up));
|
||||
|
||||
valueFraction() = 0.5 - 0.5*(Up & patch().nf())/mag(Up);
|
||||
const Field<vector>& nf = patch().nf();
|
||||
|
||||
Field<scalar>& vf = valueFraction();
|
||||
|
||||
forAll(vf, i)
|
||||
{
|
||||
if (magUp[i] > vSmall)
|
||||
{
|
||||
vf[i] = 0.5 - 0.5*(Up[i] & nf[i])/magUp[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
vf[i] = 0.5;
|
||||
}
|
||||
}
|
||||
|
||||
mixedFvPatchField<vector>::updateCoeffs();
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -564,6 +564,16 @@ public:
|
||||
trackingData& td
|
||||
);
|
||||
|
||||
//- As above, but does not change the master patch. Needed in order for
|
||||
// ACMI to be able to delegate a hit to the non-overlap patch.
|
||||
template<class TrackCloudType>
|
||||
void hitFaceNoChangeToMasterPatch
|
||||
(
|
||||
const vector& displacement,
|
||||
TrackCloudType& cloud,
|
||||
trackingData& td
|
||||
);
|
||||
|
||||
//- Convenience function. Cobines trackToFace and hitFace
|
||||
template<class TrackCloudType>
|
||||
void trackToAndHitFace
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -108,6 +108,33 @@ void Foam::particle::hitFace
|
||||
trackingData& td
|
||||
)
|
||||
{
|
||||
if (debug)
|
||||
{
|
||||
Info << "Particle " << origId() << nl << FUNCTION_NAME << nl << endl;
|
||||
}
|
||||
|
||||
if (onBoundaryFace())
|
||||
{
|
||||
changeToMasterPatch();
|
||||
}
|
||||
|
||||
hitFaceNoChangeToMasterPatch(direction, cloud, td);
|
||||
}
|
||||
|
||||
|
||||
template<class TrackCloudType>
|
||||
void Foam::particle::hitFaceNoChangeToMasterPatch
|
||||
(
|
||||
const vector& direction,
|
||||
TrackCloudType& cloud,
|
||||
trackingData& td
|
||||
)
|
||||
{
|
||||
if (debug)
|
||||
{
|
||||
Info << "Particle " << origId() << nl << FUNCTION_NAME << nl << endl;
|
||||
}
|
||||
|
||||
typename TrackCloudType::particleType& p =
|
||||
static_cast<typename TrackCloudType::particleType&>(*this);
|
||||
typename TrackCloudType::particleType::trackingData& ttd =
|
||||
@ -123,8 +150,6 @@ void Foam::particle::hitFace
|
||||
}
|
||||
else if (onBoundaryFace())
|
||||
{
|
||||
changeToMasterPatch();
|
||||
|
||||
if (!p.hitPatch(cloud, ttd))
|
||||
{
|
||||
const polyPatch& patch = mesh_.boundaryMesh()[p.patch()];
|
||||
@ -392,7 +417,7 @@ void Foam::particle::hitCyclicACMIPatch
|
||||
// Move to the face associated with the non-overlap patch and redo the
|
||||
// face interaction.
|
||||
tetFacei_ = facei_ = cpp.nonOverlapPatch().start() + localFacei;
|
||||
hitFace(direction, cloud, td);
|
||||
hitFaceNoChangeToMasterPatch(direction, cloud, td);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Website: https://openfoam.org
|
||||
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -83,7 +83,7 @@ Foam::N2::N2()
|
||||
2873563218390.8,
|
||||
-165274505604341.0
|
||||
),
|
||||
mu_(32.165, 496.9, 3.9069, -1.08e-21, 10.0),
|
||||
mu_(-32.165, 496.9, 3.9069, -1.08e-21, 10.0),
|
||||
mug_(7.632e-07, 0.58823, 67.75, 0.0),
|
||||
kappa_(0.7259, -0.016728, 0.00016215, -5.7605e-07, 0.0, 0.0),
|
||||
kappag_(0.000351, 0.7652, 25.767, 0.0),
|
||||
|
||||
@ -33,7 +33,8 @@ EulerImplicitCoeffs
|
||||
odeCoeffs
|
||||
{
|
||||
solver seulex;
|
||||
eps 0.05;
|
||||
absTol 1e-8;
|
||||
relTol 1e-1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -17,6 +17,8 @@ reactions
|
||||
A 7e+06;
|
||||
beta 0;
|
||||
Ta 10063.8;
|
||||
Thigh 2500;
|
||||
Tlow 300;
|
||||
}
|
||||
hydrogenReaction
|
||||
{
|
||||
@ -25,6 +27,7 @@ reactions
|
||||
A 4.74342e+12;
|
||||
beta 0;
|
||||
Ta 10063.8;
|
||||
Thigh 2500;
|
||||
Tlow 300;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user