Bug fixes to the IO.

This commit is contained in:
henry
2008-08-13 16:18:58 +01:00
parent 09f5d38fb4
commit 99ad8e1d99
4 changed files with 45 additions and 32 deletions

View File

@ -158,7 +158,7 @@ public:
//- Return velocity
inline const vector& U() const;
//- The nearest distance to a wall that
//- The nearest distance to a wall that
// the particle can be in the n direction
inline scalar wallImpactDistance(const vector& n) const;
@ -226,6 +226,14 @@ public:
const vector& separation
);
// I-O
static void readFields(Cloud<solidParticle>& c);
static void writeFields(const Cloud<solidParticle>& c);
// Ostream Operator
friend Ostream& operator<<(Ostream&, const solidParticle&);
@ -238,12 +246,6 @@ inline bool contiguous<solidParticle>()
return true;
}
template<>
void Cloud<solidParticle>::readFields();
template<>
void Cloud<solidParticle>::writeFields() const;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -58,7 +58,9 @@ Foam::solidParticleCloud::solidParticleCloud(const fvMesh& mesh)
rhop_(dimensionedScalar(particleProperties_.lookup("rhop")).value()),
e_(dimensionedScalar(particleProperties_.lookup("e")).value()),
mu_(dimensionedScalar(particleProperties_.lookup("mu")).value())
{}
{
solidParticle::readFields(*this);
}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
@ -82,4 +84,10 @@ void Foam::solidParticleCloud::move(const dimensionedVector& g)
}
void Foam::solidParticleCloud::writeFields() const
{
solidParticle::writeFields(*this);
}
// ************************************************************************* //

View File

@ -97,13 +97,17 @@ public:
inline scalar mu() const;
// Check
// Edit
//- Move the particles under the influence of the given
// gravitational acceleration
void move(const dimensionedVector& g);
//- Move the particles under the influence of the given
// gravitational acceleration
void move(const dimensionedVector& g);
// I-O
//- Write fields
void writeFields() const;
};

View File

@ -36,7 +36,7 @@ Foam::solidParticle::solidParticle
bool readFields
)
:
Particle<solidParticle>(cloud, is)
Particle<solidParticle>(cloud, is, readFields)
{
if (readFields)
{
@ -60,20 +60,20 @@ Foam::solidParticle::solidParticle
}
namespace Foam
void Foam::solidParticle::readFields(Cloud<solidParticle>& c)
{
if (!c.size())
{
return;
}
IOField<scalar> d(c.fieldIOobject("d"));
c.checkFieldIOobject(c, d);
template<>
void Cloud<solidParticle>::readFields()
{
IOField<scalar> d(fieldIOobject("d"));
checkFieldIOobject(*this, d);
IOField<vector> U(fieldIOobject("U"));
checkFieldIOobject(*this, U);
IOField<vector> U(c.fieldIOobject("U"));
c.checkFieldIOobject(c, U);
label i = 0;
forAllIter(Cloud<solidParticle>::iterator, *this, iter)
forAllIter(Cloud<solidParticle>::iterator, c, iter)
{
solidParticle& p = iter();
@ -84,16 +84,17 @@ void Cloud<solidParticle>::readFields()
}
template<>
void Cloud<solidParticle>::writeFields() const
void Foam::solidParticle::writeFields(const Cloud<solidParticle>& c)
{
label np = size();
Particle<solidParticle>::writeFields(c);
IOField<scalar> d(fieldIOobject("d"), np);
IOField<vector> U(fieldIOobject("U"), np);
label np = c.size();
IOField<scalar> d(c.fieldIOobject("d"), np);
IOField<vector> U(c.fieldIOobject("U"), np);
label i = 0;
forAllConstIter(Cloud<solidParticle>, *this, iter)
forAllConstIter(Cloud<solidParticle>, c, iter)
{
const solidParticle& p = iter();
@ -106,8 +107,6 @@ void Cloud<solidParticle>::writeFields() const
U.write();
}
};
// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * //