47 os <<
tab << binPoints[pointi].x();
54 os <<
tab << binPoints[pointi].y();
61 os <<
tab << binPoints[pointi].z();
68 for (label i = 0; i <
nBin_; ++i)
96 const word& fieldName = fieldNames_[fieldi];
100 const VolFieldType* fieldPtr = mesh_.findObject<VolFieldType>(fieldName);
107 if (writeToFile() && !writtenHeader_)
109 writeFileHeader<Type>(filePtrs_[fieldi]);
112 const VolFieldType&
fld = *fieldPtr;
125 if (decomposePatchValues_)
130 List<List<Type>> data(nField);
131 for (
auto& binList : data)
133 binList.setSize(nBin_,
Zero);
136 for (
const label zonei : cellZoneIDs_)
138 const cellZone& cZone = mesh_.cellZones()[zonei];
140 for (
const label celli : cZone)
142 const scalar dd = mesh_.C()[celli] & binDir_;
144 if (dd < binMin_ || dd > binMax_)
151 min(
max(floor((dd - binMin_)/binDx_), 0), nBin_ - 1);
153 data[0][bini] +=
fld[celli];
159 const label patchi = iter();
160 const polyPatch& pp = mesh_.boundaryMesh()[patchi];
161 const vectorField np(mesh_.boundary()[patchi].nf());
168 if (dd[facei] < binMin_ || dd[facei] > binMax_)
175 min(
max(floor((dd[facei] - binMin_)/binDx_), 0), nBin_ - 1);
177 const Type& v =
fld.boundaryField()[patchi][facei];
179 if (!decomposePatchValues(data, bini, v, np[facei]))
186 for (
auto& binList : data)
188 reduce(binList, sumOp<List<Type>>());
193 writeBinnedData(data, filePtrs_[fieldi]);
virtual void writeHeader(Ostream &os, const string &str) const
Write a commented header to stream.
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
Output to file stream, using an OSstream.
constexpr char nl
The newline '\n' character (0x0a)
Ostream & endl(Ostream &os)
Add newline and flush stream.
bool decomposePatchValues_
Decompose patch values into normal and tangential components.
label nBin_
Total number of bins.
constexpr char tab
The tab '\t' character(0x09)
Generic GeometricField class.
#define forAll(list, i)
Loop across all elements in list.
virtual void writeCommented(Ostream &os, const string &str) const
Write a commented string to stream.
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
A class for handling words, derived from Foam::string.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
#define forAllIters(container, iter)
Iterate across all elements in the container object.
label min(const labelHashSet &set, label minValue=labelMax)
Find the min value in labelHashSet, optionally limited by second argument.
void writeHeaderValue(Ostream &os, const string &property, const Type &value) const
Write a (commented) header property and value pair.
OBJstream os(runTime.globalPath()/outputName)
gmvFile<< "tracers "<< particles.size()<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().x()<< ' ';}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().y()<< ' ';}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().z()<< ' ';}gmvFile<< nl;for(const word &name :lagrangianScalarNames){ IOField< scalar > fld(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
void reduce(const List< UPstream::commsStruct > &comms, T &value, const BinaryOp &bop, const int tag, const label comm)
Reduce inplace (cf. MPI Allreduce) using specified communication schedule.
Field< vector > vectorField
Specialisation of Field<T> for vector.
static constexpr const zero Zero
Global zero (0)
virtual void writeTabbed(Ostream &os, const string &str) const
Write a tabbed string to stream.