ENH: lagrangian - moved poissionsRatio and youngsModulus to CollidingCloud

This commit is contained in:
andy
2013-11-05 15:57:33 +00:00
parent f8c6a5e538
commit 959d769fa3
7 changed files with 153 additions and 47 deletions

View File

@ -92,6 +92,7 @@ Foam::CollidingCloud<CloudType>::CollidingCloud
)
:
CloudType(cloudName, rho, U, mu, g, false),
constProps_(this->particleProperties()),
collisionModel_(NULL)
{
if (this->solution().steadyState())
@ -246,4 +247,5 @@ void Foam::CollidingCloud<CloudType>::info()
<< rotationalKineticEnergy << nl;
}
// ************************************************************************* //

View File

@ -97,6 +97,10 @@ protected:
// Protected data
//- Thermo parcel constant properties
typename parcelType::constantProperties constProps_;
// References to the cloud sub-models
//- Collision model
@ -180,6 +184,11 @@ public:
//- Return a reference to the cloud copy
inline const CollidingCloud& cloudCopy() const;
//- Return the constant properties
inline const typename parcelType::constantProperties&
constProps() const;
//- If the collision model controls the wall interaction,
// then the wall impact distance should be zero.
// Otherwise, it should be allowed to be the value from

View File

@ -33,6 +33,14 @@ Foam::CollidingCloud<CloudType>::cloudCopy() const
}
template<class CloudType>
inline const typename CloudType::particleType::constantProperties&
Foam::CollidingCloud<CloudType>::constProps() const
{
return constProps_;
}
template<class CloudType>
inline const Foam::CollisionModel<Foam::CollidingCloud<CloudType> >&
Foam::CollidingCloud<CloudType>::collision() const

View File

@ -74,6 +74,58 @@ class CollidingParcel
:
public ParcelType
{
public:
//- Class to hold thermo particle constant properties
class constantProperties
:
public ParcelType::constantProperties
{
// Private data
//- Young's modulus [N/m2]
demandDrivenEntry<scalar> youngsModulus_;
//- Poisson's ratio
demandDrivenEntry<scalar> poissonsRatio_;
public:
// Constructors
//- Null constructor
constantProperties();
//- Copy constructor
constantProperties(const constantProperties& cp);
//- Construct from dictionary
constantProperties(const dictionary& parentDict);
//- Construct from components
constantProperties
(
const label parcelTypeId,
const scalar rhoMin,
const scalar rho0,
const scalar minParticleMass,
const scalar youngsModulus,
const scalar poissonsRatio
);
// Member functions
//- Return const access to Young's Modulus
inline scalar youngsModulus() const;
//- Return const access to Poisson's ratio
inline scalar poissonsRatio() const;
};
protected:
// Protected data

View File

@ -25,6 +25,63 @@ License
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
template<class ParcelType>
inline Foam::CollidingParcel<ParcelType>::constantProperties::
constantProperties()
:
ParcelType::constantProperties(),
youngsModulus_(this->dict_, 0.0),
poissonsRatio_(this->dict_, 0.0)
{}
template<class ParcelType>
inline Foam::CollidingParcel<ParcelType>::constantProperties::constantProperties
(
const constantProperties& cp
)
:
ParcelType::constantProperties(cp),
youngsModulus_(cp.youngsModulus_),
poissonsRatio_(cp.poissonsRatio_)
{}
template<class ParcelType>
inline Foam::CollidingParcel<ParcelType>::constantProperties::constantProperties
(
const dictionary& parentDict
)
:
ParcelType::constantProperties(parentDict),
youngsModulus_(this->dict_, "youngsModulus"),
poissonsRatio_(this->dict_, "poissonsRatio")
{}
template<class ParcelType>
inline Foam::CollidingParcel<ParcelType>::constantProperties::constantProperties
(
const label parcelTypeId,
const scalar rhoMin,
const scalar rho0,
const scalar minParticleMass,
const scalar youngsModulus,
const scalar poissonsRatio
)
:
ParcelType::constantProperties
(
parcelTypeId,
rhoMin,
rho0,
minParticleMass
),
youngsModulus_(this->dict_, youngsModulus),
poissonsRatio_(this->dict_, poissonsRatio)
{}
template<class ParcelType>
inline Foam::CollidingParcel<ParcelType>::CollidingParcel
(
@ -83,7 +140,25 @@ inline Foam::CollidingParcel<ParcelType>::CollidingParcel
{}
// * * * * * * * CollidingParcel Member Functions * * * * * * * //
// * * * * * * * * * constantProperties Member Functions * * * * * * * * * * //
template<class ParcelType>
inline Foam::scalar
Foam::CollidingParcel<ParcelType>::constantProperties::youngsModulus() const
{
return youngsModulus_.value();
}
template<class ParcelType>
inline Foam::scalar
Foam::CollidingParcel<ParcelType>::constantProperties::poissonsRatio() const
{
return poissonsRatio_.value();
}
// * * * * * * * * * * CollidingParcel Member Functions * * * * * * * * * * //
template<class ParcelType>
inline const Foam::vector& Foam::CollidingParcel<ParcelType>::f() const

View File

@ -108,12 +108,6 @@ public:
//- Minimum particle mass [kg]
demandDrivenEntry<scalar> minParticleMass_;
//- Young's modulus [N/m2]
demandDrivenEntry<scalar> youngsModulus_;
//- Poisson's ratio
demandDrivenEntry<scalar> poissonsRatio_;
public:
@ -134,9 +128,7 @@ public:
const label parcelTypeId,
const scalar rhoMin,
const scalar rho0,
const scalar minParticleMass,
const scalar youngsModulus,
const scalar poissonsRatio
const scalar minParticleMass
);
@ -156,12 +148,6 @@ public:
//- Return const access to the minimum particle mass
inline scalar minParticleMass() const;
//- Return const access to Young's Modulus
inline scalar youngsModulus() const;
//- Return const access to Poisson's ratio
inline scalar poissonsRatio() const;
};

View File

@ -37,9 +37,7 @@ Foam::KinematicParcel<ParcelType>::constantProperties::constantProperties()
parcelTypeId_(dict_, -1),
rhoMin_(dict_, 0.0),
rho0_(dict_, 0.0),
minParticleMass_(dict_, 0.0),
youngsModulus_(dict_, 0.0),
poissonsRatio_(dict_, 0.0)
minParticleMass_(dict_, 0.0)
{}
@ -53,9 +51,7 @@ inline Foam::KinematicParcel<ParcelType>::constantProperties::constantProperties
parcelTypeId_(cp.parcelTypeId_),
rhoMin_(cp.rhoMin_),
rho0_(cp.rho0_),
minParticleMass_(cp.minParticleMass_),
youngsModulus_(cp.youngsModulus_),
poissonsRatio_(cp.poissonsRatio_)
minParticleMass_(cp.minParticleMass_)
{}
@ -69,9 +65,7 @@ inline Foam::KinematicParcel<ParcelType>::constantProperties::constantProperties
parcelTypeId_(dict_, "parcelTypeId", 1),
rhoMin_(dict_, "rhoMin", 1e-15),
rho0_(dict_, "rho0"),
minParticleMass_(dict_, "minParticleMass", 1e-15),
youngsModulus_(dict_, "youngsModulus"),
poissonsRatio_(dict_, "poissonsRatio")
minParticleMass_(dict_, "minParticleMass", 1e-15)
{}
@ -81,18 +75,14 @@ inline Foam::KinematicParcel<ParcelType>::constantProperties::constantProperties
const label parcelTypeId,
const scalar rhoMin,
const scalar rho0,
const scalar minParticleMass,
const scalar youngsModulus,
const scalar poissonsRatio
const scalar minParticleMass
)
:
dict_(dictionary::null),
parcelTypeId_(dict_, parcelTypeId),
rhoMin_(dict_, rhoMin),
rho0_(dict_, rho0),
minParticleMass_(dict_, minParticleMass),
youngsModulus_(dict_, youngsModulus),
poissonsRatio_(dict_, poissonsRatio)
minParticleMass_(dict_, minParticleMass)
{}
@ -198,22 +188,6 @@ Foam::KinematicParcel<ParcelType>::constantProperties::minParticleMass() const
}
template<class ParcelType>
inline Foam::scalar
Foam::KinematicParcel<ParcelType>::constantProperties::youngsModulus() const
{
return youngsModulus_.value();
}
template<class ParcelType>
inline Foam::scalar
Foam::KinematicParcel<ParcelType>::constantProperties::poissonsRatio() const
{
return poissonsRatio_.value();
}
// * * * * * * * KinematicParcel Member Functions * * * * * * * //
template<class ParcelType>