mirror of
https://github.com/OpenFOAM/OpenFOAM-6.git
synced 2025-12-08 06:57:46 +00:00
Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev
This commit is contained in:
@ -121,13 +121,7 @@ forAll(fluidRegions, i)
|
||||
)
|
||||
);
|
||||
|
||||
dimensionedScalar ghRef
|
||||
(
|
||||
mag(gFluid[i].value()) > small
|
||||
? gFluid[i]
|
||||
& (cmptMag(gFluid[i].value())/mag(gFluid[i].value()))*hRefFluid[i]
|
||||
: dimensionedScalar("ghRef", gFluid[i].dimensions()*dimLength, 0)
|
||||
);
|
||||
dimensionedScalar ghRef(- mag(gFluid[i])*hRefFluid[i]);
|
||||
|
||||
Info<< " Adding to ghFluid\n" << endl;
|
||||
ghFluid.set
|
||||
|
||||
@ -26,7 +26,7 @@ License
|
||||
#include "twoPhaseMixtureThermo.H"
|
||||
#include "gradientEnergyFvPatchScalarField.H"
|
||||
#include "mixedEnergyFvPatchScalarField.H"
|
||||
|
||||
#include "collatedFileOperation.H"
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
@ -50,6 +50,12 @@ Foam::twoPhaseMixtureThermo::twoPhaseMixtureThermo
|
||||
thermo1_(nullptr),
|
||||
thermo2_(nullptr)
|
||||
{
|
||||
// Note: we're writing files to be read in immediately afterwards.
|
||||
// Avoid any thread-writing problems.
|
||||
float bufSz =
|
||||
fileOperations::collatedFileOperation::maxThreadFileBufferSize;
|
||||
fileOperations::collatedFileOperation::maxThreadFileBufferSize = 0;
|
||||
|
||||
{
|
||||
volScalarField T1
|
||||
(
|
||||
@ -80,6 +86,10 @@ Foam::twoPhaseMixtureThermo::twoPhaseMixtureThermo
|
||||
T2.write();
|
||||
}
|
||||
|
||||
fileOperations::collatedFileOperation::maxThreadFileBufferSize =
|
||||
bufSz;
|
||||
|
||||
|
||||
thermo1_ = rhoThermo::New(U.mesh(), phase1Name());
|
||||
thermo2_ = rhoThermo::New(U.mesh(), phase2Name());
|
||||
|
||||
|
||||
@ -24,7 +24,7 @@ License
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "phasePair.H"
|
||||
#include "surfaceTensionModel.H"
|
||||
#include "phaseSystem.H"
|
||||
|
||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||
|
||||
@ -165,15 +165,7 @@ Foam::tmp<Foam::volScalarField> Foam::phasePair::EoH2() const
|
||||
|
||||
Foam::tmp<Foam::volScalarField> Foam::phasePair::sigma() const
|
||||
{
|
||||
return
|
||||
phase1().mesh().lookupObject<surfaceTensionModel>
|
||||
(
|
||||
IOobject::groupName
|
||||
(
|
||||
surfaceTensionModel::typeName,
|
||||
phasePair::name()
|
||||
)
|
||||
).sigma();
|
||||
return phase1().fluid().sigma(phasePair(phase1(), phase2()));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -626,6 +626,15 @@ class vtkPVFoam
|
||||
const wordHashSet&
|
||||
);
|
||||
|
||||
//- Get the list of selected objects
|
||||
IOobjectList getObjects
|
||||
(
|
||||
const wordHashSet& selected,
|
||||
const fvMesh& mesh,
|
||||
const fileName& instance,
|
||||
const fileName& local = ""
|
||||
);
|
||||
|
||||
//- Retrieve the current selections
|
||||
static wordHashSet getSelected(vtkDataArraySelection*);
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -23,37 +23,53 @@ License
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "vtkPVFoam.H"
|
||||
|
||||
// OpenFOAM includes
|
||||
#include "IOobjectList.H"
|
||||
#include "vtkPVFoamReader.h"
|
||||
|
||||
// VTK includes
|
||||
#include "vtkDataArraySelection.h"
|
||||
#include "vtkPolyData.h"
|
||||
#include "vtkUnstructuredGrid.h"
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
// OpenFOAM includes
|
||||
#include "IOobjectList.H"
|
||||
#include "vtkPVFoam.H"
|
||||
#include "vtkPVFoamReader.h"
|
||||
#include "vtkPVFoamVolFields.H"
|
||||
#include "vtkPVFoamPointFields.H"
|
||||
#include "vtkPVFoamLagrangianFields.H"
|
||||
|
||||
|
||||
void Foam::vtkPVFoam::pruneObjectList
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
Foam::IOobjectList Foam::vtkPVFoam::getObjects
|
||||
(
|
||||
IOobjectList& objects,
|
||||
const wordHashSet& selected
|
||||
const wordHashSet& selected,
|
||||
const fvMesh& mesh,
|
||||
const fileName& instance,
|
||||
const fileName& local
|
||||
)
|
||||
{
|
||||
// hash all the selected field names
|
||||
// If nothing is selected then return an empty list
|
||||
if (selected.empty())
|
||||
{
|
||||
objects.clear();
|
||||
return IOobjectList(0);
|
||||
}
|
||||
|
||||
// only keep selected fields
|
||||
// Create the list of objects at the instance
|
||||
IOobjectList objects(mesh, instance, local);
|
||||
|
||||
// Add any objects from constant that are not already present
|
||||
IOobjectList objectsConstant(mesh, dbPtr_().constant(), local);
|
||||
forAllIter(IOobjectList, objectsConstant, iter)
|
||||
{
|
||||
if (!objects.found(iter.key()))
|
||||
{
|
||||
objects.add
|
||||
(
|
||||
*objectsConstant.HashPtrTable<IOobject>::remove(iter)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Remove everything that is not selected
|
||||
forAllIter(IOobjectList, objects, iter)
|
||||
{
|
||||
if (!selected.found(iter()->name()))
|
||||
@ -61,6 +77,8 @@ void Foam::vtkPVFoam::pruneObjectList
|
||||
objects.erase(iter);
|
||||
}
|
||||
}
|
||||
|
||||
return objects;
|
||||
}
|
||||
|
||||
|
||||
@ -83,8 +101,15 @@ void Foam::vtkPVFoam::convertVolFields
|
||||
|
||||
// Get objects (fields) for this time - only keep selected fields
|
||||
// the region name is already in the mesh db
|
||||
IOobjectList objects(mesh, dbPtr_().timeName());
|
||||
pruneObjectList(objects, selectedFields);
|
||||
IOobjectList objects
|
||||
(
|
||||
getObjects
|
||||
(
|
||||
selectedFields,
|
||||
mesh,
|
||||
dbPtr_().timeName()
|
||||
)
|
||||
);
|
||||
|
||||
if (objects.empty())
|
||||
{
|
||||
@ -174,8 +199,15 @@ void Foam::vtkPVFoam::convertPointFields
|
||||
|
||||
// Get objects (fields) for this time - only keep selected fields
|
||||
// the region name is already in the mesh db
|
||||
IOobjectList objects(mesh, dbPtr_().timeName());
|
||||
pruneObjectList(objects, selectedFields);
|
||||
IOobjectList objects
|
||||
(
|
||||
getObjects
|
||||
(
|
||||
selectedFields,
|
||||
mesh,
|
||||
dbPtr_().timeName()
|
||||
)
|
||||
);
|
||||
|
||||
if (objects.empty())
|
||||
{
|
||||
@ -267,11 +299,14 @@ void Foam::vtkPVFoam::convertLagrangianFields
|
||||
// the region name is already in the mesh db
|
||||
IOobjectList objects
|
||||
(
|
||||
getObjects
|
||||
(
|
||||
selectedFields,
|
||||
mesh,
|
||||
dbPtr_().timeName(),
|
||||
cloud::prefix/cloudName
|
||||
)
|
||||
);
|
||||
pruneObjectList(objects, selectedFields);
|
||||
|
||||
if (objects.empty())
|
||||
{
|
||||
|
||||
@ -859,7 +859,7 @@ bool Foam::decomposedBlockData::writeBlocks
|
||||
label startProc = 1;
|
||||
label nSendProcs = nProcs-1;
|
||||
|
||||
while (nSendProcs > 0)
|
||||
while (nSendProcs > 0 && startProc < nProcs)
|
||||
{
|
||||
nSendProcs = calcNumProcs
|
||||
(
|
||||
@ -873,7 +873,7 @@ bool Foam::decomposedBlockData::writeBlocks
|
||||
startProc
|
||||
);
|
||||
|
||||
if (startProc == nProcs || nSendProcs == 0)
|
||||
if (nSendProcs == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
@ -265,7 +265,11 @@ void Foam::OFstreamCollator::waitForBufferSpace(const off_t wantedSize) const
|
||||
}
|
||||
}
|
||||
|
||||
if (totalSize == 0 || (totalSize+wantedSize) <= maxBufferSize_)
|
||||
if
|
||||
(
|
||||
totalSize == 0
|
||||
|| (wantedSize >= 0 && (totalSize+wantedSize) <= maxBufferSize_)
|
||||
)
|
||||
{
|
||||
break;
|
||||
}
|
||||
@ -354,7 +358,8 @@ bool Foam::OFstreamCollator::write
|
||||
IOstream::streamFormat fmt,
|
||||
IOstream::versionNumber ver,
|
||||
IOstream::compressionType cmp,
|
||||
const bool append
|
||||
const bool append,
|
||||
const bool useThread
|
||||
)
|
||||
{
|
||||
// Determine (on master) sizes to receive. Note: do NOT use thread
|
||||
@ -374,7 +379,7 @@ bool Foam::OFstreamCollator::write
|
||||
Pstream::scatter(maxLocalSize, Pstream::msgType(), localComm_);
|
||||
}
|
||||
|
||||
if (maxBufferSize_ == 0 || maxLocalSize > maxBufferSize_)
|
||||
if (!useThread || maxBufferSize_ == 0 || maxLocalSize > maxBufferSize_)
|
||||
{
|
||||
if (debug)
|
||||
{
|
||||
@ -589,4 +594,20 @@ bool Foam::OFstreamCollator::write
|
||||
}
|
||||
|
||||
|
||||
void Foam::OFstreamCollator::waitAll()
|
||||
{
|
||||
// Wait for all buffer space to be available i.e. wait for all jobs
|
||||
// to finish
|
||||
if (Pstream::master(localComm_))
|
||||
{
|
||||
if (debug)
|
||||
{
|
||||
Pout<< "OFstreamCollator : waiting for thread to have consumed all"
|
||||
<< endl;
|
||||
}
|
||||
waitForBufferSpace(-1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -206,8 +206,12 @@ public:
|
||||
IOstream::streamFormat,
|
||||
IOstream::versionNumber,
|
||||
IOstream::compressionType,
|
||||
const bool append
|
||||
const bool append,
|
||||
const bool useThread = true
|
||||
);
|
||||
|
||||
//- Wait for all thread actions to have finished
|
||||
void waitAll();
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -556,14 +556,32 @@ bool Foam::fileOperations::collatedFileOperation::writeObject
|
||||
}
|
||||
else
|
||||
{
|
||||
// Re-check static maxThreadFileBufferSize variable to see
|
||||
// if needs to use threading
|
||||
bool useThread = (maxThreadFileBufferSize > 0);
|
||||
|
||||
if (debug)
|
||||
{
|
||||
Pout<< "collatedFileOperation::writeObject :"
|
||||
<< " For object : " << io.name()
|
||||
<< " starting collating output to " << pathName << endl;
|
||||
<< " starting collating output to " << pathName
|
||||
<< " useThread:" << useThread << endl;
|
||||
}
|
||||
|
||||
threadedCollatedOFstream os(writer_, pathName, fmt, ver, cmp);
|
||||
if (!useThread)
|
||||
{
|
||||
writer_.waitAll();
|
||||
}
|
||||
|
||||
threadedCollatedOFstream os
|
||||
(
|
||||
writer_,
|
||||
pathName,
|
||||
fmt,
|
||||
ver,
|
||||
cmp,
|
||||
useThread
|
||||
);
|
||||
|
||||
// If any of these fail, return (leave error handling to Ostream
|
||||
// class)
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2017 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2017-2018 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -35,13 +35,15 @@ Foam::threadedCollatedOFstream::threadedCollatedOFstream
|
||||
const fileName& pathName,
|
||||
streamFormat format,
|
||||
versionNumber version,
|
||||
compressionType compression
|
||||
compressionType compression,
|
||||
const bool useThread
|
||||
)
|
||||
:
|
||||
OStringStream(format, version),
|
||||
writer_(writer),
|
||||
pathName_(pathName),
|
||||
compression_(compression)
|
||||
compression_(compression),
|
||||
useThread_(useThread)
|
||||
{}
|
||||
|
||||
|
||||
@ -57,7 +59,8 @@ Foam::threadedCollatedOFstream::~threadedCollatedOFstream()
|
||||
IOstream::BINARY,
|
||||
version(),
|
||||
compression_,
|
||||
false // append
|
||||
false, // append
|
||||
useThread_
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2017 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2017-2018 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -60,6 +60,8 @@ class threadedCollatedOFstream
|
||||
|
||||
const IOstream::compressionType compression_;
|
||||
|
||||
const bool useThread_;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
@ -72,7 +74,8 @@ public:
|
||||
const fileName& pathname,
|
||||
streamFormat format=ASCII,
|
||||
versionNumber version=currentVersion,
|
||||
compressionType compression=UNCOMPRESSED
|
||||
compressionType compression=UNCOMPRESSED,
|
||||
const bool useThread = true
|
||||
);
|
||||
|
||||
|
||||
|
||||
@ -1,9 +1,4 @@
|
||||
Info<< "Calculating field g.h\n" << endl;
|
||||
dimensionedScalar ghRef
|
||||
(
|
||||
mag(g.value()) > small
|
||||
? g & (cmptMag(g.value())/mag(g.value()))*hRef
|
||||
: dimensionedScalar("ghRef", g.dimensions()*dimLength, 0)
|
||||
);
|
||||
dimensionedScalar ghRef(- mag(g)*hRef);
|
||||
volScalarField gh("gh", (g & mesh.C()) - ghRef);
|
||||
surfaceScalarField ghf("ghf", (g & mesh.Cf()) - ghRef);
|
||||
|
||||
@ -118,12 +118,7 @@ updateCoeffs()
|
||||
const uniformDimensionedScalarField& hRef =
|
||||
this->db().template lookupObject<uniformDimensionedScalarField>("hRef");
|
||||
|
||||
dimensionedScalar ghRef
|
||||
(
|
||||
mag(g.value()) > small
|
||||
? g & (cmptMag(g.value())/mag(g.value()))*hRef
|
||||
: dimensionedScalar("ghRef", g.dimensions()*dimLength, 0)
|
||||
);
|
||||
const dimensionedScalar ghRef(- mag(g)*hRef);
|
||||
|
||||
this->operator==
|
||||
(
|
||||
|
||||
@ -140,12 +140,7 @@ void Foam::uniformDensityHydrostaticPressureFvPatchScalarField::updateCoeffs()
|
||||
const uniformDimensionedScalarField& hRef =
|
||||
db().lookupObject<uniformDimensionedScalarField>("hRef");
|
||||
|
||||
ghRef =
|
||||
(
|
||||
mag(g.value()) > small
|
||||
? (g & (cmptMag(g.value())/mag(g.value()))*hRef).value()
|
||||
: 0
|
||||
);
|
||||
ghRef = - mag(g.value())*hRef.value();
|
||||
}
|
||||
|
||||
operator==
|
||||
|
||||
@ -51,12 +51,7 @@ void Foam::fv::tabulatedAccelerationSource::addSup
|
||||
|
||||
g = g0_ - dimensionedVector("a", dimAcceleration, acceleration.x());
|
||||
|
||||
dimensionedScalar ghRef
|
||||
(
|
||||
mag(g.value()) > small
|
||||
? g & (cmptMag(g.value())/mag(g.value()))*hRef
|
||||
: dimensionedScalar("ghRef", g.dimensions()*dimLength, 0)
|
||||
);
|
||||
dimensionedScalar ghRef(- mag(g)*hRef);
|
||||
|
||||
mesh_.lookupObjectRef<volScalarField>("gh") = (g & mesh_.C()) - ghRef;
|
||||
|
||||
|
||||
@ -520,6 +520,10 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calcDevolatilisation
|
||||
// Check that model is active
|
||||
if (!cloud.devolatilisation().active())
|
||||
{
|
||||
if (canCombust != -1)
|
||||
{
|
||||
canCombust = 1;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user