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
|
dimensionedScalar ghRef(- mag(gFluid[i])*hRefFluid[i]);
|
||||||
(
|
|
||||||
mag(gFluid[i].value()) > small
|
|
||||||
? gFluid[i]
|
|
||||||
& (cmptMag(gFluid[i].value())/mag(gFluid[i].value()))*hRefFluid[i]
|
|
||||||
: dimensionedScalar("ghRef", gFluid[i].dimensions()*dimLength, 0)
|
|
||||||
);
|
|
||||||
|
|
||||||
Info<< " Adding to ghFluid\n" << endl;
|
Info<< " Adding to ghFluid\n" << endl;
|
||||||
ghFluid.set
|
ghFluid.set
|
||||||
|
|||||||
@ -26,7 +26,7 @@ License
|
|||||||
#include "twoPhaseMixtureThermo.H"
|
#include "twoPhaseMixtureThermo.H"
|
||||||
#include "gradientEnergyFvPatchScalarField.H"
|
#include "gradientEnergyFvPatchScalarField.H"
|
||||||
#include "mixedEnergyFvPatchScalarField.H"
|
#include "mixedEnergyFvPatchScalarField.H"
|
||||||
|
#include "collatedFileOperation.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -50,6 +50,12 @@ Foam::twoPhaseMixtureThermo::twoPhaseMixtureThermo
|
|||||||
thermo1_(nullptr),
|
thermo1_(nullptr),
|
||||||
thermo2_(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
|
volScalarField T1
|
||||||
(
|
(
|
||||||
@ -80,6 +86,10 @@ Foam::twoPhaseMixtureThermo::twoPhaseMixtureThermo
|
|||||||
T2.write();
|
T2.write();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fileOperations::collatedFileOperation::maxThreadFileBufferSize =
|
||||||
|
bufSz;
|
||||||
|
|
||||||
|
|
||||||
thermo1_ = rhoThermo::New(U.mesh(), phase1Name());
|
thermo1_ = rhoThermo::New(U.mesh(), phase1Name());
|
||||||
thermo2_ = rhoThermo::New(U.mesh(), phase2Name());
|
thermo2_ = rhoThermo::New(U.mesh(), phase2Name());
|
||||||
|
|
||||||
|
|||||||
@ -24,7 +24,7 @@ License
|
|||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "phasePair.H"
|
#include "phasePair.H"
|
||||||
#include "surfaceTensionModel.H"
|
#include "phaseSystem.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -165,15 +165,7 @@ Foam::tmp<Foam::volScalarField> Foam::phasePair::EoH2() const
|
|||||||
|
|
||||||
Foam::tmp<Foam::volScalarField> Foam::phasePair::sigma() const
|
Foam::tmp<Foam::volScalarField> Foam::phasePair::sigma() const
|
||||||
{
|
{
|
||||||
return
|
return phase1().fluid().sigma(phasePair(phase1(), phase2()));
|
||||||
phase1().mesh().lookupObject<surfaceTensionModel>
|
|
||||||
(
|
|
||||||
IOobject::groupName
|
|
||||||
(
|
|
||||||
surfaceTensionModel::typeName,
|
|
||||||
phasePair::name()
|
|
||||||
)
|
|
||||||
).sigma();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -626,6 +626,15 @@ class vtkPVFoam
|
|||||||
const wordHashSet&
|
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
|
//- Retrieve the current selections
|
||||||
static wordHashSet getSelected(vtkDataArraySelection*);
|
static wordHashSet getSelected(vtkDataArraySelection*);
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -23,37 +23,53 @@ License
|
|||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "vtkPVFoam.H"
|
|
||||||
|
|
||||||
// OpenFOAM includes
|
|
||||||
#include "IOobjectList.H"
|
|
||||||
#include "vtkPVFoamReader.h"
|
|
||||||
|
|
||||||
// VTK includes
|
// VTK includes
|
||||||
#include "vtkDataArraySelection.h"
|
#include "vtkDataArraySelection.h"
|
||||||
#include "vtkPolyData.h"
|
#include "vtkPolyData.h"
|
||||||
#include "vtkUnstructuredGrid.h"
|
#include "vtkUnstructuredGrid.h"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// OpenFOAM includes
|
||||||
|
#include "IOobjectList.H"
|
||||||
|
#include "vtkPVFoam.H"
|
||||||
|
#include "vtkPVFoamReader.h"
|
||||||
#include "vtkPVFoamVolFields.H"
|
#include "vtkPVFoamVolFields.H"
|
||||||
#include "vtkPVFoamPointFields.H"
|
#include "vtkPVFoamPointFields.H"
|
||||||
#include "vtkPVFoamLagrangianFields.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())
|
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)
|
forAllIter(IOobjectList, objects, iter)
|
||||||
{
|
{
|
||||||
if (!selected.found(iter()->name()))
|
if (!selected.found(iter()->name()))
|
||||||
@ -61,6 +77,8 @@ void Foam::vtkPVFoam::pruneObjectList
|
|||||||
objects.erase(iter);
|
objects.erase(iter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return objects;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -83,8 +101,15 @@ void Foam::vtkPVFoam::convertVolFields
|
|||||||
|
|
||||||
// Get objects (fields) for this time - only keep selected fields
|
// Get objects (fields) for this time - only keep selected fields
|
||||||
// the region name is already in the mesh db
|
// the region name is already in the mesh db
|
||||||
IOobjectList objects(mesh, dbPtr_().timeName());
|
IOobjectList objects
|
||||||
pruneObjectList(objects, selectedFields);
|
(
|
||||||
|
getObjects
|
||||||
|
(
|
||||||
|
selectedFields,
|
||||||
|
mesh,
|
||||||
|
dbPtr_().timeName()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
if (objects.empty())
|
if (objects.empty())
|
||||||
{
|
{
|
||||||
@ -174,8 +199,15 @@ void Foam::vtkPVFoam::convertPointFields
|
|||||||
|
|
||||||
// Get objects (fields) for this time - only keep selected fields
|
// Get objects (fields) for this time - only keep selected fields
|
||||||
// the region name is already in the mesh db
|
// the region name is already in the mesh db
|
||||||
IOobjectList objects(mesh, dbPtr_().timeName());
|
IOobjectList objects
|
||||||
pruneObjectList(objects, selectedFields);
|
(
|
||||||
|
getObjects
|
||||||
|
(
|
||||||
|
selectedFields,
|
||||||
|
mesh,
|
||||||
|
dbPtr_().timeName()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
if (objects.empty())
|
if (objects.empty())
|
||||||
{
|
{
|
||||||
@ -267,11 +299,14 @@ void Foam::vtkPVFoam::convertLagrangianFields
|
|||||||
// the region name is already in the mesh db
|
// the region name is already in the mesh db
|
||||||
IOobjectList objects
|
IOobjectList objects
|
||||||
(
|
(
|
||||||
|
getObjects
|
||||||
|
(
|
||||||
|
selectedFields,
|
||||||
mesh,
|
mesh,
|
||||||
dbPtr_().timeName(),
|
dbPtr_().timeName(),
|
||||||
cloud::prefix/cloudName
|
cloud::prefix/cloudName
|
||||||
|
)
|
||||||
);
|
);
|
||||||
pruneObjectList(objects, selectedFields);
|
|
||||||
|
|
||||||
if (objects.empty())
|
if (objects.empty())
|
||||||
{
|
{
|
||||||
|
|||||||
@ -859,7 +859,7 @@ bool Foam::decomposedBlockData::writeBlocks
|
|||||||
label startProc = 1;
|
label startProc = 1;
|
||||||
label nSendProcs = nProcs-1;
|
label nSendProcs = nProcs-1;
|
||||||
|
|
||||||
while (nSendProcs > 0)
|
while (nSendProcs > 0 && startProc < nProcs)
|
||||||
{
|
{
|
||||||
nSendProcs = calcNumProcs
|
nSendProcs = calcNumProcs
|
||||||
(
|
(
|
||||||
@ -873,7 +873,7 @@ bool Foam::decomposedBlockData::writeBlocks
|
|||||||
startProc
|
startProc
|
||||||
);
|
);
|
||||||
|
|
||||||
if (startProc == nProcs || nSendProcs == 0)
|
if (nSendProcs == 0)
|
||||||
{
|
{
|
||||||
break;
|
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;
|
break;
|
||||||
}
|
}
|
||||||
@ -354,7 +358,8 @@ bool Foam::OFstreamCollator::write
|
|||||||
IOstream::streamFormat fmt,
|
IOstream::streamFormat fmt,
|
||||||
IOstream::versionNumber ver,
|
IOstream::versionNumber ver,
|
||||||
IOstream::compressionType cmp,
|
IOstream::compressionType cmp,
|
||||||
const bool append
|
const bool append,
|
||||||
|
const bool useThread
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// Determine (on master) sizes to receive. Note: do NOT use thread
|
// 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_);
|
Pstream::scatter(maxLocalSize, Pstream::msgType(), localComm_);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (maxBufferSize_ == 0 || maxLocalSize > maxBufferSize_)
|
if (!useThread || maxBufferSize_ == 0 || maxLocalSize > maxBufferSize_)
|
||||||
{
|
{
|
||||||
if (debug)
|
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::streamFormat,
|
||||||
IOstream::versionNumber,
|
IOstream::versionNumber,
|
||||||
IOstream::compressionType,
|
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
|
else
|
||||||
{
|
{
|
||||||
|
// Re-check static maxThreadFileBufferSize variable to see
|
||||||
|
// if needs to use threading
|
||||||
|
bool useThread = (maxThreadFileBufferSize > 0);
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
Pout<< "collatedFileOperation::writeObject :"
|
Pout<< "collatedFileOperation::writeObject :"
|
||||||
<< " For object : " << io.name()
|
<< " 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
|
// If any of these fail, return (leave error handling to Ostream
|
||||||
// class)
|
// class)
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2017 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2017-2018 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -35,13 +35,15 @@ Foam::threadedCollatedOFstream::threadedCollatedOFstream
|
|||||||
const fileName& pathName,
|
const fileName& pathName,
|
||||||
streamFormat format,
|
streamFormat format,
|
||||||
versionNumber version,
|
versionNumber version,
|
||||||
compressionType compression
|
compressionType compression,
|
||||||
|
const bool useThread
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
OStringStream(format, version),
|
OStringStream(format, version),
|
||||||
writer_(writer),
|
writer_(writer),
|
||||||
pathName_(pathName),
|
pathName_(pathName),
|
||||||
compression_(compression)
|
compression_(compression),
|
||||||
|
useThread_(useThread)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -57,7 +59,8 @@ Foam::threadedCollatedOFstream::~threadedCollatedOFstream()
|
|||||||
IOstream::BINARY,
|
IOstream::BINARY,
|
||||||
version(),
|
version(),
|
||||||
compression_,
|
compression_,
|
||||||
false // append
|
false, // append
|
||||||
|
useThread_
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2017 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2017-2018 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -60,6 +60,8 @@ class threadedCollatedOFstream
|
|||||||
|
|
||||||
const IOstream::compressionType compression_;
|
const IOstream::compressionType compression_;
|
||||||
|
|
||||||
|
const bool useThread_;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -72,7 +74,8 @@ public:
|
|||||||
const fileName& pathname,
|
const fileName& pathname,
|
||||||
streamFormat format=ASCII,
|
streamFormat format=ASCII,
|
||||||
versionNumber version=currentVersion,
|
versionNumber version=currentVersion,
|
||||||
compressionType compression=UNCOMPRESSED
|
compressionType compression=UNCOMPRESSED,
|
||||||
|
const bool useThread = true
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,9 +1,4 @@
|
|||||||
Info<< "Calculating field g.h\n" << endl;
|
Info<< "Calculating field g.h\n" << endl;
|
||||||
dimensionedScalar ghRef
|
dimensionedScalar ghRef(- mag(g)*hRef);
|
||||||
(
|
|
||||||
mag(g.value()) > small
|
|
||||||
? g & (cmptMag(g.value())/mag(g.value()))*hRef
|
|
||||||
: dimensionedScalar("ghRef", g.dimensions()*dimLength, 0)
|
|
||||||
);
|
|
||||||
volScalarField gh("gh", (g & mesh.C()) - ghRef);
|
volScalarField gh("gh", (g & mesh.C()) - ghRef);
|
||||||
surfaceScalarField ghf("ghf", (g & mesh.Cf()) - ghRef);
|
surfaceScalarField ghf("ghf", (g & mesh.Cf()) - ghRef);
|
||||||
|
|||||||
@ -118,12 +118,7 @@ updateCoeffs()
|
|||||||
const uniformDimensionedScalarField& hRef =
|
const uniformDimensionedScalarField& hRef =
|
||||||
this->db().template lookupObject<uniformDimensionedScalarField>("hRef");
|
this->db().template lookupObject<uniformDimensionedScalarField>("hRef");
|
||||||
|
|
||||||
dimensionedScalar ghRef
|
const dimensionedScalar ghRef(- mag(g)*hRef);
|
||||||
(
|
|
||||||
mag(g.value()) > small
|
|
||||||
? g & (cmptMag(g.value())/mag(g.value()))*hRef
|
|
||||||
: dimensionedScalar("ghRef", g.dimensions()*dimLength, 0)
|
|
||||||
);
|
|
||||||
|
|
||||||
this->operator==
|
this->operator==
|
||||||
(
|
(
|
||||||
|
|||||||
@ -140,12 +140,7 @@ void Foam::uniformDensityHydrostaticPressureFvPatchScalarField::updateCoeffs()
|
|||||||
const uniformDimensionedScalarField& hRef =
|
const uniformDimensionedScalarField& hRef =
|
||||||
db().lookupObject<uniformDimensionedScalarField>("hRef");
|
db().lookupObject<uniformDimensionedScalarField>("hRef");
|
||||||
|
|
||||||
ghRef =
|
ghRef = - mag(g.value())*hRef.value();
|
||||||
(
|
|
||||||
mag(g.value()) > small
|
|
||||||
? (g & (cmptMag(g.value())/mag(g.value()))*hRef).value()
|
|
||||||
: 0
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
operator==
|
operator==
|
||||||
|
|||||||
@ -51,12 +51,7 @@ void Foam::fv::tabulatedAccelerationSource::addSup
|
|||||||
|
|
||||||
g = g0_ - dimensionedVector("a", dimAcceleration, acceleration.x());
|
g = g0_ - dimensionedVector("a", dimAcceleration, acceleration.x());
|
||||||
|
|
||||||
dimensionedScalar ghRef
|
dimensionedScalar ghRef(- mag(g)*hRef);
|
||||||
(
|
|
||||||
mag(g.value()) > small
|
|
||||||
? g & (cmptMag(g.value())/mag(g.value()))*hRef
|
|
||||||
: dimensionedScalar("ghRef", g.dimensions()*dimLength, 0)
|
|
||||||
);
|
|
||||||
|
|
||||||
mesh_.lookupObjectRef<volScalarField>("gh") = (g & mesh_.C()) - ghRef;
|
mesh_.lookupObjectRef<volScalarField>("gh") = (g & mesh_.C()) - ghRef;
|
||||||
|
|
||||||
|
|||||||
@ -520,6 +520,10 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calcDevolatilisation
|
|||||||
// Check that model is active
|
// Check that model is active
|
||||||
if (!cloud.devolatilisation().active())
|
if (!cloud.devolatilisation().active())
|
||||||
{
|
{
|
||||||
|
if (canCombust != -1)
|
||||||
|
{
|
||||||
|
canCombust = 1;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user