ENH: collisionRecord IO.

This commit is contained in:
graham
2010-05-24 13:50:24 +01:00
parent 619d3e24fc
commit fed2e54dfa
4 changed files with 63 additions and 8 deletions

View File

@ -33,7 +33,7 @@ Description
- drag
- turbulent dispersion
- wall interactions
- many-body collisions
- many-body collisions, including memory of data from previous collision
SourceFiles
KinematicParcelI.H
@ -59,6 +59,9 @@ SourceFiles
namespace Foam
{
typedef CollisionRecordList<vector, vector> collisionRecordList;
typedef IOList<collisionRecordList> collisionRecordIOList;
template<class ParcelType>
class KinematicParcel;
@ -268,7 +271,7 @@ protected:
vector UTurb_;
//- Particle collision records
CollisionRecordList<vector, vector> collisionRecords_;
collisionRecordList collisionRecords_;
// Cell-based quantities
@ -400,8 +403,7 @@ public:
inline const vector& UTurb() const;
//- Return const access to the collision records
inline const CollisionRecordList<vector, vector>&
collisionRecords() const;
inline const collisionRecordList& collisionRecords() const;
// Edit
@ -440,7 +442,7 @@ public:
inline vector& UTurb();
//- Return access to collision records
inline CollisionRecordList<vector, vector>& collisionRecords();
inline collisionRecordList& collisionRecords();
// Helper functions

View File

@ -348,7 +348,7 @@ inline bool& Foam::KinematicParcel<ParcelType>::active()
template <class ParcelType>
inline const Foam::CollisionRecordList<Foam::vector, Foam::vector>&
inline const Foam::collisionRecordList&
Foam::KinematicParcel<ParcelType>::collisionRecords() const
{
return collisionRecords_;
@ -426,7 +426,7 @@ inline Foam::vector& Foam::KinematicParcel<ParcelType>::UTurb()
template <class ParcelType>
inline Foam::CollisionRecordList<Foam::vector, Foam::vector>&
inline Foam::collisionRecordList&
Foam::KinematicParcel<ParcelType>::collisionRecords()
{
return collisionRecords_;

View File

@ -43,7 +43,8 @@ Foam::string Foam::KinematicParcel<ParcelType>::propHeader =
+ " (torquex torquey torquez)"
+ " rho"
+ " tTurb"
+ " (UTurbx UTurby UTurbz)";
+ " (UTurbx UTurby UTurbz)"
+ " pairCollisions wallCollisions";
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
@ -167,6 +168,31 @@ void Foam::KinematicParcel<ParcelType>::readFields(Cloud<ParcelType>& c)
IOField<vector> UTurb(c.fieldIOobject("UTurb", IOobject::MUST_READ));
c.checkFieldIOobject(c, UTurb);
collisionRecordIOList collisionRecords
(
IOobject
(
"collisionRecords",
c.time().timeName(),
c,
IOobject::MUST_READ,
IOobject::NO_WRITE,
false
)
);
if (collisionRecords.size() != c.size())
{
FatalErrorIn
(
"void Foam::KinematicParcel<ParcelType>::readFields"
"(Cloud<ParcelType>& c)"
) << "Size of " << collisionRecords.name()
<< " field " << collisionRecords.size()
<< " does not match the number of particles " << c.size()
<< abort(FatalError);
}
label i = 0;
forAllIter(typename Cloud<ParcelType>, c, iter)
{
@ -182,6 +208,7 @@ void Foam::KinematicParcel<ParcelType>::readFields(Cloud<ParcelType>& c)
p.rho_ = rho[i];
p.tTurb_ = tTurb[i];
p.UTurb_ = UTurb[i];
p.collisionRecords_ = collisionRecords[i];
i++;
}
}
@ -213,7 +240,22 @@ void Foam::KinematicParcel<ParcelType>::writeFields(const Cloud<ParcelType>& c)
IOField<scalar> tTurb(c.fieldIOobject("tTurb", IOobject::NO_READ), np);
IOField<vector> UTurb(c.fieldIOobject("UTurb", IOobject::NO_READ), np);
collisionRecordIOList collisionRecords
(
IOobject
(
"collisionRecords",
c.time().timeName(),
c,
IOobject::NO_READ,
IOobject::NO_WRITE,
false
),
np
);
label i = 0;
forAllConstIter(typename Cloud<ParcelType>, c, iter)
{
const KinematicParcel<ParcelType>& p = iter();
@ -229,6 +271,7 @@ void Foam::KinematicParcel<ParcelType>::writeFields(const Cloud<ParcelType>& c)
rho[i] = p.rho();
tTurb[i] = p.tTurb();
UTurb[i] = p.UTurb();
collisionRecords[i] = p.collisionRecords();
i++;
}
@ -243,6 +286,7 @@ void Foam::KinematicParcel<ParcelType>::writeFields(const Cloud<ParcelType>& c)
rho.write();
tTurb.write();
UTurb.write();
collisionRecords.write();
}

View File

@ -25,14 +25,23 @@ License
#include "basicKinematicParcel.H"
#include "KinematicCloud.H"
#include "KinematicParcel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
defineTemplateTypeNameAndDebug(Cloud<basicKinematicParcel>, 0);
defineParcelTypeNameAndDebug(KinematicCloud<basicKinematicParcel>, 0);
defineTemplateTypeNameAndDebugWithName
(
collisionRecordIOList,
"collisionRecordList",
0
);
};