Go to the documentation of this file.
42 namespace functionObjects
52 void Foam::functionObjects::vtkCloud::writeVerts
54 autoPtr<vtk::formatter>&
format,
55 const label nTotParcels
62 const uint64_t payLoad = vtk::sizeofData<label>(nTotParcels);
72 format().writeSize(payLoad);
86 format().writeSize(payLoad);
98 bool Foam::functionObjects::vtkCloud::writeCloud
100 const fileName& file,
104 const auto* objPtr = mesh_.findObject<cloud>(
cloudName);
110 objectRegistry obrTmp
115 mesh_.time().constant(),
123 objPtr->writeObjects(obrTmp);
133 applyFilter_ = calculateFilter(obrTmp,
log);
134 reduce(applyFilter_, orOp<bool>());
138 label nParcels = (applyFilter_ ? parcelAddr_.count() : pointsPtr->size());
141 const label nTotParcels =
returnReduce(nParcels, sumOp<label>());
146 Log <<
"After filtering using " << nTotParcels <<
'/'
151 if (pruneEmpty_ && !nTotParcels)
157 autoPtr<vtk::formatter>
format;
159 if (!file.hasExt(
"vtp"))
162 <<
type() <<
" File missing .vtp extension!" <<
nl <<
endl
171 format = writeOpts_.newFormatter(
os);
180 "case='" + time_.globalCaseName()
182 +
"' time='" + time_.timeName()
192 .writeTimeValue(time_.value())
221 const uint64_t payLoad = vtk::sizeofData<float,3>(nTotParcels);
226 format().writeSize(payLoad);
249 writeVerts(
format, nTotParcels);
259 return k.starts_with(
"position") ||
k.starts_with(
"coordinate");
265 if (selectFields_.size())
267 obrTmp.filterKeys(selectFields_);
281 format().beginPointData();
285 DynamicList<word> written(obrTmp.size());
287 written.append(writeFields<label>(
format, obrTmp, nTotParcels));
288 written.append(writeFields<scalar>(
format, obrTmp, nTotParcels));
289 written.append(writeFields<vector>(
format, obrTmp, nTotParcels));
324 time_.relativePath(file,
true)
336 Foam::functionObjects::vtkCloud::vtkCloud
388 writeOpts_.append(
false);
389 writeOpts_.legacy(
false);
399 const int padWidth =
dict.getOrDefault<
int>(
"width", 8);
402 if (padWidth < 1 || padWidth > 31)
408 printf_ =
"%0" + std::to_string(padWidth) +
"d";
413 useVerts_ =
dict.getOrDefault(
"cellData",
false);
414 pruneEmpty_ =
dict.getOrDefault(
"prune",
false);
416 selectClouds_.clear();
417 dict.readIfPresent(
"clouds", selectClouds_);
419 if (selectClouds_.empty())
421 selectClouds_.resize(1);
422 selectClouds_.first() =
426 selectFields_.clear();
427 dict.readIfPresent(
"fields", selectFields_);
428 selectFields_.uniq();
431 parcelSelect_ =
dict.subOrEmptyDict(
"selection");
436 dict.readIfPresent(
"directory", directory_);
438 if (directory_.size())
442 if (!directory_.isAbsolute())
444 directory_ = time_.globalPath()/directory_;
466 const wordList cloudNames(mesh_.sortedNames<
cloud>(selectClouds_));
468 if (cloudNames.empty())
473 const scalar timeValue = time_.value();
475 const word timeDesc =
"_" +
482 Log <<
name() <<
" output Time: " << time_.timeName() <<
nl;
513 series.
load(seriesName,
true, timeValue);
517 series.
write(seriesName);
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
A class for handling words, derived from Foam::string.
const word cloudName(propsDict.get< word >("cloud"))
A class for handling file names.
T returnReduce(const T &Value, const BinaryOp &bop, const int tag=Pstream::msgType(), const label comm=UPstream::worldComm)
static fileName base(const fileName &outputName, char sep='_')
virtual bool read(const dictionary &dict)
bool read(const char *buf, int32_t &val)
void writeIdentity(vtk::formatter &fmt, const label len, label start=0)
static bool master(const label communicator=worldComm)
Ostream & endl(Ostream &os)
Specialization of Foam::functionObject for an Foam::fvMesh, providing a reference to the Foam::fvMesh...
word outputName("finiteArea-edges.obj")
word format(conversionProperties.get< word >("format"))
void reduce(const List< UPstream::commsStruct > &comms, T &Value, const BinaryOp &bop, const int tag, const label comm)
@ NUMBER_OF_POINTS
"NumberOfPoints"
IOdictionary propsDict(IOobject("particleTrackProperties", runTime.constant(), mesh, IOobject::MUST_READ_IF_MODIFIED))
label load(const fileName &seriesName, const bool checkFiles=false, const scalar restartTime=ROOTVGREAT)
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
virtual bool read(const dictionary &dict)
dimensionedScalar log(const dimensionedScalar &ds)
OBJstream os(runTime.globalPath()/outputName)
Macros for easy insertion into run-time selection tables.
@ INLINE_BASE64
XML inline base64, base64Formatter.
Provides a means of accumulating and generating VTK file series.
static void write(const fileName &base, const UList< instant > &series, const char sep='_')
errorManipArg< error, int > exit(error &err, const int errNo=1)
static unsigned int defaultPrecision() noexcept
A cloud is a registry collection of lagrangian particles.
@ ASCII
"ascii" (normal default)
#define FatalErrorInFunction
addToRunTimeSelectionTable(functionObject, ObukhovLength, dictionary)
static streamFormat formatEnum(const word &formatName, const streamFormat deflt=streamFormat::ASCII)
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
bool empty() const noexcept
fileName::Type type(const fileName &name, const bool followLink=true)
defineTypeNameAndDebug(ObukhovLength, 0)
static const IOField< point > * findIOPosition(const objectRegistry &obr)
@ CONNECTIVITY
"connectivity"
@ NUMBER_OF_VERTS
"NumberOfVerts"
word name(const expressions::valueTypeCode typeCode)
static word printf(const char *fmt, const PrimitiveType &val)
bool append(const fileNameInstant &inst)
void writeListParallel(vtk::formatter &fmt, const UList< Type > &values)
bool mkDir(const fileName &pathName, mode_t mode=0777)