updating local lagrangian updates

This commit is contained in:
andy
2008-05-06 11:48:51 +01:00
parent 617c8e3e5b
commit 8ff2789ac0
15 changed files with 165 additions and 401 deletions

View File

@ -298,26 +298,29 @@ void Foam::KinematicCloud<ParcelType>::resetSourceTerms()
template<class ParcelType> template<class ParcelType>
void Foam::KinematicCloud<ParcelType>::evolve() void Foam::KinematicCloud<ParcelType>::evolve()
{ {
autoPtr<interpolation<scalar> > rhoInterpolator = interpolation<scalar>::New autoPtr<interpolation<scalar> > rhoInterpolator =
( interpolation<scalar>::New
interpolationSchemes_, (
vpi_, interpolationSchemes_,
rho_ vpi_,
); rho_
);
autoPtr<interpolation<vector> > UInterpolator = interpolation<vector>::New autoPtr<interpolation<vector> > UInterpolator =
( interpolation<vector>::New
interpolationSchemes_, (
vpi_, interpolationSchemes_,
U_ vpi_,
); U_
);
autoPtr<interpolation<scalar> > muInterpolator = interpolation<scalar>::New autoPtr<interpolation<scalar> > muInterpolator =
( interpolation<scalar>::New
interpolationSchemes_, (
vpi_, interpolationSchemes_,
mu_ vpi_,
); mu_
);
typename ParcelType::trackData td typename ParcelType::trackData td
( (

View File

@ -244,6 +244,25 @@ protected:
const scalar pVolume const scalar pVolume
); );
//- Inject more parcels
template<class TrackingData>
void inject(TrackingData& td);
//- Inject parcel if it is valid - delete otherwise
template<class TrackingData>
void injectParcel
(
TrackingData& td,
ParcelType* p
);
//- Move the parcels
template<class TrackingData>
void move(TrackingData& td);
//- Post-injection checks
void postInjectCheck();
public: public:
@ -264,7 +283,7 @@ public:
); );
// Destructors // Destructor
virtual ~KinematicCloud(); virtual ~KinematicCloud();
@ -375,9 +394,6 @@ public:
// Check // Check
//- Post-injection checks
void postInjectCheck();
//- Total mass injected //- Total mass injected
inline const scalar massInjected() const; inline const scalar massInjected() const;
@ -411,35 +427,13 @@ public:
inline const tmp<volScalarField> alpha() const; inline const tmp<volScalarField> alpha() const;
// Edit // Cloud evolution functions
//- Reset the spray source terms //- Reset the spray source terms
void resetSourceTerms(); void resetSourceTerms();
//- Evolve the spray (move, inject) //- Evolve the spray (move, inject)
void evolve(); void evolve();
//- Move the parcels
template<class TrackingData>
void move
(
TrackingData& td
);
//- Inject parcel if it is valid - delete otherwise
template<class TrackingData>
void injectParcel
(
TrackingData& td,
ParcelType* p
);
//- Inject more parcels
template<class TrackingData>
void inject
(
TrackingData& td
);
}; };

View File

@ -185,22 +185,7 @@ void Foam::ReactingCloud<ParcelType>::evolve()
inject(td); inject(td);
move(td); this->move(td);
}
template<class ParcelType>
template<class TrackingData>
void Foam::ReactingCloud<ParcelType>::move
(
TrackingData& td
)
{
if (this->coupled())
{
resetSourceTerms();
}
Cloud<ParcelType>::move(td);
} }
@ -226,7 +211,7 @@ void Foam::ReactingCloud<ParcelType>::inject
// Return if no parcels are required // Return if no parcels are required
if (!nParcels) if (!nParcels)
{ {
postInjectCheck(); this->postInjectCheck();
return; return;
} }
@ -322,11 +307,11 @@ void Foam::ReactingCloud<ParcelType>::inject
pPtr->stepFraction() = (this->db().time().deltaT().value() - dt) pPtr->stepFraction() = (this->db().time().deltaT().value() - dt)
/this->db().time().deltaT().value(); /this->db().time().deltaT().value();
injectParcel(td, pPtr); this->injectParcel(td, pPtr);
} }
} }
postInjectCheck(); this->postInjectCheck();
if (debug) if (debug)
{ {
@ -335,23 +320,4 @@ void Foam::ReactingCloud<ParcelType>::inject
} }
template<class ParcelType>
template<class TrackingData>
void Foam::ReactingCloud<ParcelType>::injectParcel
(
TrackingData& td,
ParcelType* p
)
{
ThermoCloud<ParcelType>::injectParcel(td, p);
}
template<class ParcelType>
void Foam::ReactingCloud<ParcelType>::postInjectCheck()
{
ThermoCloud<ParcelType>::postInjectCheck();
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -114,6 +114,13 @@ class ReactingCloud
void operator=(const ReactingCloud&); void operator=(const ReactingCloud&);
protected:
//- Inject more parcels
template<class TrackingData>
void inject(TrackingData& td);
public: public:
//- Runtime type information //- Runtime type information
@ -135,7 +142,7 @@ public:
); );
// Destructors // Destructor
virtual ~ReactingCloud(); virtual ~ReactingCloud();
@ -192,41 +199,13 @@ public:
Srho1() const; Srho1() const;
// Check // Cloud evolution functions
//- Post-injection checks
void postInjectCheck();
// Edit
//- Reset the spray source terms //- Reset the spray source terms
void resetSourceTerms(); void resetSourceTerms();
//- Evolve the spray (move, inject) //- Evolve the spray (move, inject)
void evolve(); void evolve();
//- Move the parcels
template<class TrackingData>
void move
(
TrackingData& td
);
//- Inject parcel if it is valid - delete otherwise
template<class TrackingData>
void injectParcel
(
TrackingData& td,
ParcelType* p
);
//- Inject more parcels
template<class TrackingData>
void inject
(
TrackingData& td
);
}; };

View File

@ -176,22 +176,7 @@ void Foam::ThermoCloud<ParcelType>::evolve()
inject(td); inject(td);
move(td); this->move(td);
}
template<class ParcelType>
template<class TrackingData>
void Foam::ThermoCloud<ParcelType>::move
(
TrackingData& td
)
{
if (this->coupled())
{
resetSourceTerms();
}
Cloud<ParcelType>::move(td);
} }
@ -207,23 +192,4 @@ void Foam::ThermoCloud<ParcelType>::inject
} }
template<class ParcelType>
template<class TrackingData>
void Foam::ThermoCloud<ParcelType>::injectParcel
(
TrackingData& td,
ParcelType* p
)
{
KinematicCloud<ParcelType>::injectParcel(td, p);
}
template<class ParcelType>
void Foam::ThermoCloud<ParcelType>::postInjectCheck()
{
KinematicCloud<ParcelType>::postInjectCheck();
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -116,6 +116,13 @@ class ThermoCloud
void operator=(const ThermoCloud&); void operator=(const ThermoCloud&);
protected:
//- Inject more parcels
template<class TrackingData>
void inject(TrackingData& td);
public: public:
//- Runtime type information //- Runtime type information
@ -136,7 +143,7 @@ public:
); );
// Destructors // Destructor
virtual ~ThermoCloud(); virtual ~ThermoCloud();
@ -200,48 +207,13 @@ public:
inline tmp<volScalarField> sigmap() const; inline tmp<volScalarField> sigmap() const;
// Check // Cloud evolution functions
//- Post-injection checks
void postInjectCheck();
// Edit
//- Reset the spray source terms
void resetSourceTerms();
//- Evolve the spray (move, inject) //- Evolve the spray (move, inject)
void evolve(); void evolve();
//- Reset the spray source terms
// Tracking void resetSourceTerms();
//- Move the particles under the influence of the given
// gravitational acceleration
template<class TrackingData>
void move
(
TrackingData& td
);
// Injection
//- Inject parcel if it is valid - delete otherwise
template<class TrackingData>
void injectParcel
(
TrackingData& td,
ParcelType* p
);
//- Inject more parcels
template<class TrackingData>
void inject
(
TrackingData& td
);
}; };

View File

@ -60,34 +60,9 @@ Foam::basicKinematicCloud::~basicKinematicCloud()
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void Foam::basicKinematicCloud::evolve()
{
KinematicCloud<basicKinematicParcel>::evolve();
}
void Foam::basicKinematicCloud::move
(
KinematicParcel<basicKinematicParcel>::trackData& td
)
{
KinematicCloud<basicKinematicParcel>::move(td);
}
void Foam::basicKinematicCloud::inject
(
KinematicParcel<basicKinematicParcel>::trackData& td
)
{
KinematicCloud<basicKinematicParcel>::inject(td);
}
void Foam::basicKinematicCloud::writeFields() const void Foam::basicKinematicCloud::writeFields() const
{ {
basicKinematicParcel::writeFields(*this); basicKinematicParcel::writeFields(*this);
} }
// ************************************************************************* // // ************************************************************************* //

View File

@ -82,35 +82,15 @@ public:
); );
// Destructors //- Destructor
~basicKinematicCloud(); ~basicKinematicCloud();
// Member functions // Member functions
// Edit //- Write fields
void writeFields() const;
//- Evolve the spray (move, inject)
void evolve();
//- Move the parcels
void move
(
KinematicParcel<basicKinematicParcel>::trackData& td
);
//- Inject more parcels
void inject
(
KinematicParcel<basicKinematicParcel>::trackData& td
);
// I-O
//- Write fields
void writeFields() const;
}; };
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -62,33 +62,14 @@ Foam::basicReactingCloud::basicReactingCloud
} }
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam::basicReactingCloud::~basicReactingCloud()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void Foam::basicReactingCloud::evolve()
{
ReactingCloud<basicReactingParcel>::evolve();
}
void Foam::basicReactingCloud::move
(
ReactingParcel<basicReactingParcel>::trackData& td
)
{
ReactingCloud<basicReactingParcel>::move(td);
}
void Foam::basicReactingCloud::inject
(
ReactingParcel<basicReactingParcel>::trackData& td
)
{
ReactingCloud<basicReactingParcel>::inject(td);
}
void Foam::basicReactingCloud::writeFields() const void Foam::basicReactingCloud::writeFields() const
{ {
basicReactingParcel::writeFields(*this); basicReactingParcel::writeFields(*this);

View File

@ -66,6 +66,7 @@ public:
//- Runtime type information //- Runtime type information
TypeName("basicReactingCloud"); TypeName("basicReactingCloud");
// Constructors // Constructors
//- Construct given carrier gas fields //- Construct given carrier gas fields
@ -81,30 +82,15 @@ public:
); );
//- Destructor
~basicReactingCloud();
// Member Functions // Member Functions
// Edit //- Write fields
void writeFields() const;
//- Evolve the spray (move, inject)
void evolve();
//- Move the parcels
void move
(
ReactingParcel<basicReactingParcel>::trackData& td
);
//- Inject more parcels
void inject
(
ReactingParcel<basicReactingParcel>::trackData& td
);
// I-O
//- Write fields
void writeFields() const;
}; };

View File

@ -52,33 +52,14 @@ Foam::basicThermoCloud::basicThermoCloud
} }
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam::basicThermoCloud::~basicThermoCloud()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void Foam::basicThermoCloud::evolve()
{
ThermoCloud<basicThermoParcel>::evolve();
}
void Foam::basicThermoCloud::move
(
ThermoParcel<basicThermoParcel>::trackData& td
)
{
// Move the parcels
ThermoCloud<basicThermoParcel>::move(td);
}
void Foam::basicThermoCloud::inject
(
ThermoParcel<basicThermoParcel>::trackData& td
)
{
ThermoCloud<basicThermoParcel>::inject(td);
}
void Foam::basicThermoCloud::writeFields() const void Foam::basicThermoCloud::writeFields() const
{ {
basicThermoParcel::writeFields(*this); basicThermoParcel::writeFields(*this);

View File

@ -84,30 +84,15 @@ public:
); );
//- Destructor
~basicThermoCloud();
// Member Functions // Member Functions
// Edit //- Write fields
void writeFields() const;
//- Evolve the spray (move, inject)
void evolve();
//- Move the parcels
void move
(
ThermoParcel<basicThermoParcel>::trackData& td
);
//- Inject more parcels
void inject
(
ThermoParcel<basicThermoParcel>::trackData& td
);
// I-O
//- Write fields
void writeFields() const;
}; };

View File

@ -96,17 +96,14 @@ public:
public: public:
//- Constructor //- Constructor
constantProperties constantProperties(const dictionary& dict);
(
const dictionary& dict
);
// Member functions // Member functions
// Access //- Return const access to the particle density
inline const scalar rho0() const; inline const scalar rho0() const;
//- Return const access to the minimum particle mass
inline const scalar minParticleMass() const; inline const scalar minParticleMass() const;
}; };
@ -125,10 +122,16 @@ public:
//- Particle constant properties //- Particle constant properties
const constantProperties& constProps_; const constantProperties& constProps_;
//- Interpolators for continuous phase fields
// Interpolators for continuous phase fields
//- Density interpolator
const interpolation<scalar>& rhoInterp_; const interpolation<scalar>& rhoInterp_;
//- Velocity interpolator
const interpolation<vector>& UInterp_; const interpolation<vector>& UInterp_;
//- Dynamic viscosity interpolator
const interpolation<scalar>& muInterp_; const interpolation<scalar>& muInterp_;
//- Local gravitational or other body-force acceleration //- Local gravitational or other body-force acceleration
@ -137,13 +140,10 @@ public:
public: public:
bool switchProcessor;
bool keepParticle;
// Constructors // Constructors
inline trackData //- Construct from components
inline trackData
( (
KinematicCloud<ParcelType>& cloud, KinematicCloud<ParcelType>& cloud,
const constantProperties& constProps, const constantProperties& constProps,
@ -156,16 +156,25 @@ public:
// Member functions // Member functions
//- Return access to the owner cloud
inline KinematicCloud<ParcelType>& cloud(); inline KinematicCloud<ParcelType>& cloud();
//- Return const access to the constant properties
inline const constantProperties& constProps() const; inline const constantProperties& constProps() const;
//- Return conat access to the interpolator for continuous
// phase density field
inline const interpolation<scalar>& rhoInterp() const; inline const interpolation<scalar>& rhoInterp() const;
//- Return conat access to the interpolator for continuous
// phase velocity field
inline const interpolation<vector>& UInterp() const; inline const interpolation<vector>& UInterp() const;
//- Return conat access to the interpolator for continuous
// phase dynamic viscosity field
inline const interpolation<scalar>& muInterp() const; inline const interpolation<scalar>& muInterp() const;
// Return const access to the gravitational acceleration vector
inline const vector& g() const; inline const vector& g() const;
}; };
@ -200,13 +209,13 @@ protected:
// Cell-based quantities // Cell-based quantities
// - Density // - Density [kg/m3]
scalar rhoc_; scalar rhoc_;
// - Velocity // - Velocity [m/s]
vector Uc_; vector Uc_;
// - Viscosity // - Viscosity [Pa.s]
scalar muc_; scalar muc_;
@ -351,10 +360,7 @@ public:
//- Move the parcel //- Move the parcel
template<class TrackData> template<class TrackData>
bool move bool move(TrackData& td);
(
TrackData& td
);
// Patch interactions // Patch interactions
@ -410,24 +416,18 @@ public:
//- Transform the physical properties of the particle //- Transform the physical properties of the particle
// according to the given transformation tensor // according to the given transformation tensor
virtual void transformProperties(const tensor& T); void transformProperties(const tensor& T);
//- Transform the physical properties of the particle //- Transform the physical properties of the particle
// according to the given separation vector // according to the given separation vector
virtual void transformProperties(const vector& separation); void transformProperties(const vector& separation);
// I-O // I-O
static void readFields static void readFields(KinematicCloud<ParcelType>& c);
(
KinematicCloud<ParcelType>& c
);
static void writeFields static void writeFields(const KinematicCloud<ParcelType>& c);
(
const KinematicCloud<ParcelType>& c
);
// Ostream Operator // Ostream Operator

View File

@ -83,27 +83,23 @@ public:
// Private data // Private data
//- Vapourisation temperature //- Vapourisation temperature [K]
const scalar Tvap_; const scalar Tvap_;
//- Boiling point //- Boiling point [K]
const scalar Tbp_; const scalar Tbp_;
public: public:
// Constructors //- Constructor
constantProperties constantProperties(const dictionary& dict);
(
const dictionary& dict
);
// Member functions //- Return const access to the vapourisation temperature
inline const scalar Tvap() const;
// Access //- Return const access to the boiling point
inline const scalar Tbp() const;
inline const scalar Tvap() const;
inline const scalar Tbp() const;
}; };
@ -121,14 +117,15 @@ public:
//- Particle constant properties //- Particle constant properties
const constantProperties& constProps_; const constantProperties& constProps_;
//- Interpolators for continuous phase fields //- Interpolator for continuous phase pressure field
const interpolation<scalar>& pInterp_;
const interpolation<scalar>& pInterp_;
public: public:
// Constructors // Constructors
//- Construct from components
inline trackData inline trackData
( (
ReactingCloud<ParcelType>& cloud, ReactingCloud<ParcelType>& cloud,
@ -145,10 +142,14 @@ public:
// Member functions // Member functions
//- Return access to the owner cloud
inline ReactingCloud<ParcelType>& cloud(); inline ReactingCloud<ParcelType>& cloud();
//- Return const access to the constant properties
inline const constantProperties& constProps() const; inline const constantProperties& constProps() const;
//- Return conat access to the interpolator for continuous
// phase pressure field
inline const interpolation<scalar>& pInterp() const; inline const interpolation<scalar>& pInterp() const;
}; };
@ -159,19 +160,19 @@ protected:
// Parcel properties // Parcel properties
//- Initial particle mass //- Initial particle mass [kg]
scalar mass0_; scalar mass0_;
//- Mass fractions of mixture //- Mass fractions of mixture []
scalarField YMixture_; scalarField YMixture_;
//- Mass fractions of gases //- Mass fractions of gases []
scalarField YGas_; scalarField YGas_;
//- Mass fractions of liquids //- Mass fractions of liquids []
scalarField YLiquid_; scalarField YLiquid_;
//- Mass fractions of solids //- Mass fractions of solids []
scalarField YSolid_; scalarField YSolid_;
//- Flag to say that the particle is allowed to combust //- Flag to say that the particle is allowed to combust
@ -181,7 +182,7 @@ protected:
// Cell-based quantities // Cell-based quantities
//- Pressure //- Pressure [Pa]
scalar pc_; scalar pc_;
@ -311,15 +312,9 @@ public:
// I-O // I-O
static void readFields static void readFields(ReactingCloud<ParcelType>& c);
(
ReactingCloud<ParcelType>& c
);
static void writeFields static void writeFields(const ReactingCloud<ParcelType>& c);
(
const ReactingCloud<ParcelType>& c
);
}; };

View File

@ -99,10 +99,7 @@ public:
public: public:
// Constructors // Constructors
constantProperties constantProperties(const dictionary& dict);
(
const dictionary& dict
);
// Member functions // Member functions
@ -129,9 +126,12 @@ public:
//- Particle constant properties //- Particle constant properties
const constantProperties& constProps_; const constantProperties& constProps_;
//- Interpolators for continuous phase fields // Interpolators for continuous phase fields
//- Temperature field interpolator
const interpolation<scalar>& TInterp_; const interpolation<scalar>& TInterp_;
//- Scpecific heat capacity field interpolator
const interpolation<scalar>& cpInterp_; const interpolation<scalar>& cpInterp_;
@ -139,6 +139,7 @@ public:
// Constructors // Constructors
//- Construct from components
inline trackData inline trackData
( (
ThermoCloud<ParcelType>& cloud, ThermoCloud<ParcelType>& cloud,
@ -154,12 +155,18 @@ public:
// Member functions // Member functions
//- Return access to the owner cloud
inline ThermoCloud<ParcelType>& cloud(); inline ThermoCloud<ParcelType>& cloud();
//- Return const access to the owner cloud
inline const constantProperties& constProps() const; inline const constantProperties& constProps() const;
//- Return conat access to the interpolator for continuous
// phase temperature field
inline const interpolation<scalar>& TInterp() const; inline const interpolation<scalar>& TInterp() const;
//- Return conat access to the interpolator for continuous
// phase specific heat capacity field
inline const interpolation<scalar>& cpInterp() const; inline const interpolation<scalar>& cpInterp() const;
}; };
@ -179,10 +186,10 @@ protected:
// Call-based quantities // Call-based quantities
//- Temperature //- Temperature [K]
scalar Tc_; scalar Tc_;
//- Specific heat capacity //- Specific heat capacity [J/(kg.K)]
scalar cpc_; scalar cpc_;
@ -283,15 +290,9 @@ public:
// I-O // I-O
static void readFields static void readFields(ThermoCloud<ParcelType>& c);
(
ThermoCloud<ParcelType>& c
);
static void writeFields static void writeFields(const ThermoCloud<ParcelType>& c);
(
const ThermoCloud<ParcelType>& c
);
}; };