32 template<
class ParcelType>
33 Foam::string Foam::CollidingParcel<ParcelType>::propertyList_ =
36 template<
class ParcelType>
39 offsetof(CollidingParcel<ParcelType>, collisionRecords_)
40 - offsetof(CollidingParcel<ParcelType>, f_)
46 template<
class ParcelType>
54 ParcelType(mesh, is, readFields),
56 angularMomentum_(
Zero),
62 if (is.
format() == IOstream::ASCII)
65 is >> angularMomentum_;
70 is.
read(reinterpret_cast<char*>(&f_), sizeofFields_);
73 is >> collisionRecords_;
79 "CollidingParcel<ParcelType>::Collisions" 80 "(const polyMesh&, Istream&, bool)" 85 template<
class ParcelType>
86 template<
class CloudType>
110 c.
fieldIOobject(
"collisionRecordsPairAccessed", IOobject::MUST_READ)
118 "collisionRecordsPairOrigProcOfOther",
128 "collisionRecordsPairOrigIdOfOther",
136 c.
fieldIOobject(
"collisionRecordsPairData", IOobject::MUST_READ)
142 c.
fieldIOobject(
"collisionRecordsWallAccessed", IOobject::MUST_READ)
148 c.
fieldIOobject(
"collisionRecordsWallPRel", IOobject::MUST_READ)
154 c.
fieldIOobject(
"collisionRecordsWallData", IOobject::MUST_READ)
170 collisionRecordsPairAccessed[i],
171 collisionRecordsPairOrigProcOfOther[i],
172 collisionRecordsPairOrigIdOfOther[i],
173 collisionRecordsPairData[i],
174 collisionRecordsWallAccessed[i],
175 collisionRecordsWallPRel[i],
176 collisionRecordsWallData[i]
184 template<
class ParcelType>
185 template<
class CloudType>
188 ParcelType::writeFields(c);
202 c.
fieldIOobject(
"collisionRecordsPairAccessed", IOobject::NO_READ),
209 "collisionRecordsPairOrigProcOfOther",
216 c.
fieldIOobject(
"collisionRecordsPairOrigIdOfOther", IOobject::NO_READ),
221 c.
fieldIOobject(
"collisionRecordsPairData", IOobject::NO_READ),
226 c.
fieldIOobject(
"collisionRecordsWallAccessed", IOobject::NO_READ),
231 c.
fieldIOobject(
"collisionRecordsWallPRel", IOobject::NO_READ),
236 c.
fieldIOobject(
"collisionRecordsWallData", IOobject::NO_READ),
251 collisionRecordsPairOrigProcOfOther[i] =
253 collisionRecordsPairOrigIdOfOther[i] =
264 angularMomentum.write();
267 collisionRecordsPairAccessed.write();
268 collisionRecordsPairOrigProcOfOther.write();
269 collisionRecordsPairOrigIdOfOther.write();
270 collisionRecordsPairData.write();
271 collisionRecordsWallAccessed.write();
272 collisionRecordsWallPRel.write();
273 collisionRecordsWallData.write();
279 template<
class ParcelType>
286 if (os.format() == IOstream::ASCII)
288 os << static_cast<const ParcelType&>(
p)
289 << token::SPACE <<
p.f_
290 << token::SPACE <<
p.angularMomentum_
291 << token::SPACE <<
p.torque_
292 << token::SPACE <<
p.collisionRecords_;
296 os << static_cast<const ParcelType&>(
p);
299 reinterpret_cast<const char*>(&
p.f_),
302 os <<
p.collisionRecords();
308 "Ostream& operator<<(Ostream&, const CollidingParcel<ParcelType>&)" const vector & torque() const
Return const access to torque.
streamFormat format() const
Return current stream format.
vector f_
Force on particle due to collisions [N].
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
void checkFieldIOobject(const Cloud< ParticleType > &c, const IOField< DataType > &data) const
Check lagrangian data field.
CollisionRecordList< vector, vector > collisionRecordList
Wrapper around kinematic parcel types to add collision modelling.
void checkFieldFieldIOobject(const Cloud< ParticleType > &c, const CompactIOField< Field< DataType >, DataType > &data) const
Check lagrangian data fieldfield.
#define forAllIter(Container, container, iter)
Iterate across all elements in the container object of type.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
virtual bool check(const char *operation) const
Check IOstream status for given operation.
static void writeFields(const CloudType &c)
Write.
const vector & f() const
Return const access to force.
collisionRecordList collisionRecords_
Particle collision records.
void readFields(const typename GeoFieldType::Mesh &mesh, const IOobjectList &objects, const HashSet< word > &selectedFields, LIFOStack< regIOobject * > &storedObjects)
Read the selected GeometricFields of the specified type.
Useful combination of include files which define Sin, Sout and Serr and the use of IO streams general...
const collisionRecordList & collisionRecords() const
Return const access to the collision records.
virtual Istream & read(token &)=0
Return next token from stream.
CollidingParcel(const polyMesh &mesh, const vector &position, const label celli, const label tetFacei, const label tetPtI)
Construct from owner, position, and cloud owner.
forAllConstIter(PtrDictionary< phaseModel >, mixture.phases(), phase)
An Ostream is an abstract base class for all output systems (streams, files, token lists...
vector angularMomentum_
Angular momentum of Parcel in global reference frame [kg m2/s].
vector torque_
Torque on particle due to collisions in global.
const vector & angularMomentum() const
Return const access to angular momentum.
A Field of objects of type <T> with automated input and output using a compact storage. Behaves like IOField except when binary output in case it writes a CompactListList.
const dimensionedScalar c
Speed of light in a vacuum.
Mesh consisting of general polyhedral cells.
IOobject fieldIOobject(const word &fieldName, const IOobject::readOption r) const
Helper to construct IOobject for field and current time.
A class for handling character strings derived from std::string.
Templated base class for dsmc cloud.
static void readFields(CloudType &c)
Read.