35 template<
class ParcelType>
39 template<
class ParcelType>
42 offsetof(CollidingParcel<ParcelType>, collisionRecords_)
43 - offsetof(CollidingParcel<ParcelType>, f_)
49 template<
class ParcelType>
60 angularMomentum_(
Zero),
66 if (is.
format() == IOstream::ASCII)
69 is >> angularMomentum_;
78 readRawScalar(is, f_.data(), vector::nComponents);
79 readRawScalar(is, angularMomentum_.data(), vector::nComponents);
80 readRawScalar(is, torque_.data(), vector::nComponents);
86 is.
read(
reinterpret_cast<char*
>(&f_), sizeofFields);
89 is >> collisionRecords_;
96 template<
class ParcelType>
97 template<
class CloudType>
100 const bool valid =
c.size();
105 c.checkFieldIOobject(
c,
f);
109 c.fieldIOobject(
"angularMomentum", IOobject::MUST_READ),
112 c.checkFieldIOobject(
c, angularMomentum);
116 c.fieldIOobject(
"torque", IOobject::MUST_READ),
119 c.checkFieldIOobject(
c, torque);
123 c.fieldIOobject(
"collisionRecordsPairAccessed", IOobject::MUST_READ),
126 c.checkFieldFieldIOobject(
c, collisionRecordsPairAccessed);
132 "collisionRecordsPairOrigProcOfOther",
137 c.checkFieldFieldIOobject(
c, collisionRecordsPairOrigProcOfOther);
143 "collisionRecordsPairOrigIdOfOther",
148 c.checkFieldFieldIOobject(
c, collisionRecordsPairOrigProcOfOther);
152 c.fieldIOobject(
"collisionRecordsPairData", IOobject::MUST_READ),
155 c.checkFieldFieldIOobject(
c, collisionRecordsPairData);
159 c.fieldIOobject(
"collisionRecordsWallAccessed", IOobject::MUST_READ),
162 c.checkFieldFieldIOobject(
c, collisionRecordsWallAccessed);
166 c.fieldIOobject(
"collisionRecordsWallPRel", IOobject::MUST_READ),
169 c.checkFieldFieldIOobject(
c, collisionRecordsWallPRel);
173 c.fieldIOobject(
"collisionRecordsWallData", IOobject::MUST_READ),
176 c.checkFieldFieldIOobject(
c, collisionRecordsWallData);
183 p.angularMomentum_ = angularMomentum[i];
184 p.torque_ = torque[i];
188 collisionRecordsPairAccessed[i],
189 collisionRecordsPairOrigProcOfOther[i],
190 collisionRecordsPairOrigIdOfOther[i],
191 collisionRecordsPairData[i],
192 collisionRecordsWallAccessed[i],
193 collisionRecordsWallPRel[i],
194 collisionRecordsWallData[i]
202 template<
class ParcelType>
203 template<
class CloudType>
208 const label np =
c.size();
209 const bool valid = np;
215 c.fieldIOobject(
"angularMomentum", IOobject::NO_READ),
222 c.fieldIOobject(
"collisionRecordsPairAccessed", IOobject::NO_READ),
229 "collisionRecordsPairOrigProcOfOther",
236 c.fieldIOobject(
"collisionRecordsPairOrigIdOfOther", IOobject::NO_READ),
241 c.fieldIOobject(
"collisionRecordsPairData", IOobject::NO_READ),
246 c.fieldIOobject(
"collisionRecordsWallAccessed", IOobject::NO_READ),
251 c.fieldIOobject(
"collisionRecordsWallPRel", IOobject::NO_READ),
256 c.fieldIOobject(
"collisionRecordsWallData", IOobject::NO_READ),
264 angMom[i] =
p.angularMomentum();
265 torque[i] =
p.torque();
267 collisionRecordsPairAccessed[i] =
p.collisionRecords().pairAccessed();
268 collisionRecordsPairOrigProcOfOther[i] =
269 p.collisionRecords().pairOrigProcOfOther();
270 collisionRecordsPairOrigIdOfOther[i] =
271 p.collisionRecords().pairOrigIdOfOther();
272 collisionRecordsPairData[i] =
p.collisionRecords().pairData();
273 collisionRecordsWallAccessed[i] =
p.collisionRecords().wallAccessed();
274 collisionRecordsWallPRel[i] =
p.collisionRecords().wallPRel();
275 collisionRecordsWallData[i] =
p.collisionRecords().wallData();
284 collisionRecordsPairAccessed.write(valid);
285 collisionRecordsPairOrigProcOfOther.write(valid);
286 collisionRecordsPairOrigIdOfOther.write(valid);
287 collisionRecordsPairData.write(valid);
288 collisionRecordsWallAccessed.write(valid);
289 collisionRecordsWallPRel.write(valid);
290 collisionRecordsWallData.write(valid);
294 template<
class ParcelType>
303 ParcelType::writeProperties(os, filters, delim, namesOnly);
306 #define writeProp(Name, Value) \
307 ParcelType::writeProperty(os, Name, Value, namesOnly, delim, filters)
310 writeProp(
"angularMomentum", angularMomentum_);
318 template<
class ParcelType>
319 template<
class CloudType>
326 ParcelType::readObjects(
c, obr);
328 if (!
c.size())
return;
330 const auto&
f = cloud::lookupIOField<vector>(
"f", obr);
331 const auto& angMom = cloud::lookupIOField<vector>(
"angularMomentum", obr);
332 const auto& torque = cloud::lookupIOField<vector>(
"torque", obr);
338 p.angularMomentum_ = angMom[i];
339 p.torque_ = torque[i];
346 template<
class ParcelType>
347 template<
class CloudType>
354 ParcelType::writeObjects(
c, obr);
356 const label np =
c.size();
358 auto&
f = cloud::createIOField<vector>(
"f", np, obr);
359 auto& angMom = cloud::createIOField<vector>(
"angularMomentum", np, obr);
360 auto& torque = cloud::createIOField<vector>(
"torque", np, obr);
366 angMom[i] =
p.angularMomentum();
367 torque[i] =
p.torque();
376 template<
class ParcelType>
383 if (os.format() == IOstream::ASCII)
385 os << static_cast<const ParcelType&>(
p)
386 << token::SPACE <<
p.f_
387 << token::SPACE <<
p.angularMomentum_
388 << token::SPACE <<
p.torque_
389 << token::SPACE <<
p.collisionRecords_;
393 os << static_cast<const ParcelType&>(
p);
396 reinterpret_cast<const char*
>(&
p.f_),
397 CollidingParcel<ParcelType>::sizeofFields
399 os <<
p.collisionRecords();