From 75fabe3666cafac4be735b40c250ddd647ee2d41 Mon Sep 17 00:00:00 2001 From: andy <a.heather@opencfd.co.uk> Date: Wed, 20 Oct 2010 12:10:56 +0100 Subject: [PATCH] ENH: Added copy/clone functionality to solids and solidMixture classes --- .../solidMixture/solidMixture/solidMixture.C | 12 ++++++++++++ .../solidMixture/solidMixture/solidMixture.H | 15 ++++++++++++++- src/thermophysicalModels/solids/C/C.C | 6 ++++++ src/thermophysicalModels/solids/C/C.H | 13 +++++++++++-- src/thermophysicalModels/solids/CaCO3/CaCO3.C | 6 ++++++ src/thermophysicalModels/solids/CaCO3/CaCO3.H | 13 +++++++++++-- src/thermophysicalModels/solids/ash/ash.C | 6 ++++++ src/thermophysicalModels/solids/ash/ash.H | 13 +++++++++++-- src/thermophysicalModels/solids/solid/solid.C | 10 ++++++++++ src/thermophysicalModels/solids/solid/solid.H | 12 ++++++++++++ 10 files changed, 99 insertions(+), 7 deletions(-) diff --git a/src/thermophysicalModels/solidMixture/solidMixture/solidMixture.C b/src/thermophysicalModels/solidMixture/solidMixture/solidMixture.C index 1132a9e870a..bacc517e0e1 100644 --- a/src/thermophysicalModels/solidMixture/solidMixture/solidMixture.C +++ b/src/thermophysicalModels/solidMixture/solidMixture/solidMixture.C @@ -54,6 +54,18 @@ Foam::solidMixture::solidMixture } +Foam::solidMixture::solidMixture(const solidMixture& s) +: + components_(s.components_), + properties_(s.properties_.size()) +{ + forAll(properties_, i) + { + properties_.set(i, s.properties_(i)->clone()); + } +} + + // * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // Foam::autoPtr<Foam::solidMixture> Foam::solidMixture::New diff --git a/src/thermophysicalModels/solidMixture/solidMixture/solidMixture.H b/src/thermophysicalModels/solidMixture/solidMixture/solidMixture.H index f7dc730920f..17f491e0318 100644 --- a/src/thermophysicalModels/solidMixture/solidMixture/solidMixture.H +++ b/src/thermophysicalModels/solidMixture/solidMixture/solidMixture.H @@ -59,7 +59,6 @@ namespace Foam class solidMixture { - // Private data //- The names of the solids @@ -76,6 +75,20 @@ public: //- Construct from dictionary solidMixture(const dictionary&); + //- Construct copy + solidMixture(const solidMixture& lm); + + //- Construct and return a clone + virtual autoPtr<solidMixture> clone() const + { + return autoPtr<solidMixture>(new solidMixture(*this)); + } + + + //- Destructor + virtual ~solidMixture() + {} + // Selectors diff --git a/src/thermophysicalModels/solids/C/C.C b/src/thermophysicalModels/solids/C/C.C index 85dab6090dd..49d180550f3 100644 --- a/src/thermophysicalModels/solids/C/C.C +++ b/src/thermophysicalModels/solids/C/C.C @@ -69,6 +69,12 @@ Foam::C::C(const dictionary& dict) {} +Foam::C::C(const C& s) +: + solid(s) +{} + + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // void Foam::C::writeData(Ostream& os) const diff --git a/src/thermophysicalModels/solids/C/C.H b/src/thermophysicalModels/solids/C/C.H index 5dc2e2b350c..5b23b217566 100644 --- a/src/thermophysicalModels/solids/C/C.H +++ b/src/thermophysicalModels/solids/C/C.H @@ -46,8 +46,8 @@ class C; Ostream& operator<< ( - Ostream&, - const C& + Ostream&, + const C& ); @@ -79,6 +79,15 @@ public: //- Construct from dictionary C(const dictionary& dict); + //- Construct copy + C(const C& s); + + //- Construct and return clone + virtual autoPtr<solid> clone() const + { + return autoPtr<solid>(new C(*this)); + } + // I-O diff --git a/src/thermophysicalModels/solids/CaCO3/CaCO3.C b/src/thermophysicalModels/solids/CaCO3/CaCO3.C index 3e200895555..24917758562 100644 --- a/src/thermophysicalModels/solids/CaCO3/CaCO3.C +++ b/src/thermophysicalModels/solids/CaCO3/CaCO3.C @@ -69,6 +69,12 @@ Foam::CaCO3::CaCO3(const dictionary& dict) {} +Foam::CaCO3::CaCO3(const CaCO3& s) +: + solid(s) +{} + + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // void Foam::CaCO3::writeData(Ostream& os) const diff --git a/src/thermophysicalModels/solids/CaCO3/CaCO3.H b/src/thermophysicalModels/solids/CaCO3/CaCO3.H index d5d725d938a..794ba828a44 100644 --- a/src/thermophysicalModels/solids/CaCO3/CaCO3.H +++ b/src/thermophysicalModels/solids/CaCO3/CaCO3.H @@ -46,8 +46,8 @@ class CaCO3; Ostream& operator<< ( - Ostream&, - const CaCO3& + Ostream&, + const CaCO3& ); @@ -80,6 +80,15 @@ public: //- Construct from dictionary CaCO3(const dictionary& dict); + //- Construct copy + CaCO3(const CaCO3& s); + + //- Construct and return clone + virtual autoPtr<solid> clone() const + { + return autoPtr<solid>(new CaCO3(*this)); + } + // I-O diff --git a/src/thermophysicalModels/solids/ash/ash.C b/src/thermophysicalModels/solids/ash/ash.C index e75119b8a7a..e7f337e60bd 100644 --- a/src/thermophysicalModels/solids/ash/ash.C +++ b/src/thermophysicalModels/solids/ash/ash.C @@ -69,6 +69,12 @@ Foam::ash::ash(const dictionary& dict) {} +Foam::ash::ash(const ash& s) +: + solid(s) +{} + + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // void Foam::ash::writeData(Ostream& os) const diff --git a/src/thermophysicalModels/solids/ash/ash.H b/src/thermophysicalModels/solids/ash/ash.H index 0769ffff830..bb39c14c6af 100644 --- a/src/thermophysicalModels/solids/ash/ash.H +++ b/src/thermophysicalModels/solids/ash/ash.H @@ -46,8 +46,8 @@ class ash; Ostream& operator<< ( - Ostream&, - const ash& + Ostream&, + const ash& ); @@ -80,6 +80,15 @@ public: //- Construct from dictionary ash(const dictionary& dict); + //- Construct copy + ash(const ash& s); + + //- Construct and return clone + virtual autoPtr<solid> clone() const + { + return autoPtr<solid>(new ash(*this)); + } + // I-O diff --git a/src/thermophysicalModels/solids/solid/solid.C b/src/thermophysicalModels/solids/solid/solid.C index cda24449622..83b85eb6879 100644 --- a/src/thermophysicalModels/solids/solid/solid.C +++ b/src/thermophysicalModels/solids/solid/solid.C @@ -74,6 +74,16 @@ Foam::solid::solid(const dictionary& dict) {} +Foam::solid::solid(const solid& s) +: + rho_(s.rho_), + Cp_(s.Cp_), + K_(s.K_), + Hf_(s.Hf_), + emissivity_(s.emissivity_) +{} + + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // void Foam::solid::writeData(Ostream& os) const diff --git a/src/thermophysicalModels/solids/solid/solid.H b/src/thermophysicalModels/solids/solid/solid.H index 1adb26e4d90..83ac6894ae3 100644 --- a/src/thermophysicalModels/solids/solid/solid.H +++ b/src/thermophysicalModels/solids/solid/solid.H @@ -133,6 +133,18 @@ public: //- Construct from dictionary solid(const dictionary& dict); + //- Construct copy + solid(const solid& s); + + //- Construct and return clone + virtual autoPtr<solid> clone() const + { + return autoPtr<solid>(new solid(*this)); + } + + + // Selectors + //- Return a pointer to a new solid created from input static autoPtr<solid> New(Istream& is); -- GitLab