From 959d769fa32eea0c7a113d9e422ae3b22d372747 Mon Sep 17 00:00:00 2001 From: andy <andy> Date: Tue, 5 Nov 2013 15:57:33 +0000 Subject: [PATCH] ENH: lagrangian - moved poissionsRatio and youngsModulus to CollidingCloud --- .../Templates/CollidingCloud/CollidingCloud.C | 2 + .../Templates/CollidingCloud/CollidingCloud.H | 9 +++ .../CollidingCloud/CollidingCloudI.H | 8 ++ .../CollidingParcel/CollidingParcel.H | 52 +++++++++++++ .../CollidingParcel/CollidingParcelI.H | 77 ++++++++++++++++++- .../KinematicParcel/KinematicParcel.H | 16 +--- .../KinematicParcel/KinematicParcelI.H | 36 ++------- 7 files changed, 153 insertions(+), 47 deletions(-) diff --git a/src/lagrangian/intermediate/clouds/Templates/CollidingCloud/CollidingCloud.C b/src/lagrangian/intermediate/clouds/Templates/CollidingCloud/CollidingCloud.C index 8292b9712b1..3ad01176c08 100644 --- a/src/lagrangian/intermediate/clouds/Templates/CollidingCloud/CollidingCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/CollidingCloud/CollidingCloud.C @@ -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; } + // ************************************************************************* // diff --git a/src/lagrangian/intermediate/clouds/Templates/CollidingCloud/CollidingCloud.H b/src/lagrangian/intermediate/clouds/Templates/CollidingCloud/CollidingCloud.H index 3b42061bf43..ceac587e933 100644 --- a/src/lagrangian/intermediate/clouds/Templates/CollidingCloud/CollidingCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/CollidingCloud/CollidingCloud.H @@ -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 diff --git a/src/lagrangian/intermediate/clouds/Templates/CollidingCloud/CollidingCloudI.H b/src/lagrangian/intermediate/clouds/Templates/CollidingCloud/CollidingCloudI.H index 1dedd5da9ce..f22610f9674 100644 --- a/src/lagrangian/intermediate/clouds/Templates/CollidingCloud/CollidingCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/CollidingCloud/CollidingCloudI.H @@ -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 diff --git a/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcel.H b/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcel.H index 00cadb13ed4..6fd579cd7bf 100644 --- a/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcel.H +++ b/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcel.H @@ -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 diff --git a/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcelI.H b/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcelI.H index cb8fb964fee..9490aba9c7e 100644 --- a/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcelI.H +++ b/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcelI.H @@ -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 diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H index 929d24bdf2c..b7b24059a3d 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H @@ -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; }; diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H index dafcf471ebb..19dc18c1301 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H @@ -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> -- GitLab