diff --git a/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.C b/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.C index 11f09d9697b7640a3aaa0dddbe23cbbae9886012..7075f2152a872ea51aa53f256a4f85ce292bd078 100644 --- a/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.C +++ b/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.C @@ -39,6 +39,13 @@ Foam::Analytical<Type>::Analytical {} +template<class Type> +Foam::Analytical<Type>::Analytical(const Analytical& is) +: + IntegrationScheme<Type>(is) +{} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // template<class Type> @@ -59,8 +66,11 @@ Foam::Analytical<Type>::integrate ) const { typename IntegrationScheme<Type>::integrationResult retValue; - retValue.average() = alpha + (phi - alpha)*(1 - exp(-beta*dt))/(beta*dt); - retValue.value() = alpha + (phi - alpha)*exp(-beta*dt); + + const scalar expTerm = exp(min(50, -beta*dt)); + + retValue.average() = alpha + (phi - alpha)*(1 - expTerm)/(beta*dt); + retValue.value() = alpha + (phi - alpha)*expTerm; return retValue; } diff --git a/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.H b/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.H index e18af027f9cc9c90e37b9161642066b8b23797e9..39c6b3f8230118e83d9913e8811e4674b2ac64e2 100644 --- a/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.H +++ b/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.H @@ -59,6 +59,18 @@ public: //- Construct from components Analytical(const word& phiName, const dictionary& dict); + //- Copy constructor + Analytical(const Analytical& is); + + //- Construct and return clone + virtual autoPtr<IntegrationScheme<Type> > clone() const + { + return autoPtr<IntegrationScheme<Type> > + ( + new Analytical<Type>(*this) + ); + } + //- Destructor virtual ~Analytical(); diff --git a/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.C b/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.C index e065b54780c2bd1a24ee7a34f8b7b21ab1955aab..0ae13e16e833f7e6a4943d1178f45e8f091859f8 100644 --- a/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.C +++ b/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.C @@ -39,6 +39,13 @@ Foam::Euler<Type>::Euler {} +template<class Type> +Foam::Euler<Type>::Euler(const Euler& is) +: + IntegrationScheme<Type>(is) +{} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // template<class Type> diff --git a/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.H b/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.H index 39989c22e6ad173de9059446c603703058380688..b0ffb86ef22134ad66525fefde24da44a673b4df 100644 --- a/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.H +++ b/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.H @@ -59,6 +59,15 @@ public: //- Construct from components Euler(const word& phiName, const dictionary& dict); + //- Copy constructor + Euler(const Euler& is); + + //- Construct and return clone + virtual autoPtr<IntegrationScheme<Type> > clone() const + { + return autoPtr<IntegrationScheme<Type> >(new Euler<Type>(*this)); + } + //- Destructor virtual ~Euler(); diff --git a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.C b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.C index 0388788c8e2a9e1aec62b1a11191e3ca6b332570..33efb86687b5dca72dcc79fa30ac4c93faab31f7 100644 --- a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.C +++ b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.C @@ -39,6 +39,14 @@ Foam::IntegrationScheme<Type>::IntegrationScheme {} +template<class Type> +Foam::IntegrationScheme<Type>::IntegrationScheme(const IntegrationScheme& is) +: + phiName_(is.phiName_), + dict_(is.dict_) +{} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * // template<class Type> @@ -48,6 +56,38 @@ Foam::IntegrationScheme<Type>::~IntegrationScheme() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +template<class Type> +typename Foam::IntegrationScheme<Type>::integrationResult +Foam::IntegrationScheme<Type>::integrate +( + const Type phi, + const scalar dt, + const Type alpha, + const scalar beta +) const +{ + notImplemented + ( + "Foam::IntegrationScheme<Type>::integrationResult" + "Foam::IntegrationScheme<Type>::integrate" + "(" + "const Type, " + "const scalar, " + "const Type, " + "const scalar" + ") const" + ); + + typename IntegrationScheme<Type>::integrationResult retValue; + retValue.average() = pTraits<Type>::zero; + retValue.value() = pTraits<Type>::zero; + + return retValue; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + #include "IntegrationSchemeNew.C" // ************************************************************************* // diff --git a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H index 6bf976d081f3546ec6768bdda5dd3da3245439ab..3558bdc83be1b6e8ed1a7db1dbd0847a3de71906 100644 --- a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H +++ b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H @@ -121,9 +121,6 @@ private: // Private Member Functions - //- Disallow default bitwise copy construct - IntegrationScheme(const IntegrationScheme&); - //- Disallow default bitwise assignment void operator=(const IntegrationScheme&); @@ -154,6 +151,18 @@ public: //- Construct from components IntegrationScheme(const word& phiName, const dictionary& dict); + //- Copy constructor + IntegrationScheme(const IntegrationScheme& is); + + //- Construct and return clone + virtual autoPtr<IntegrationScheme<Type> > clone() const + { + return autoPtr<IntegrationScheme<Type> > + ( + new IntegrationScheme<Type>(*this) + ); + } + // Selectors @@ -178,7 +187,7 @@ public: const scalar dt, const Type alpha, const scalar beta - ) const = 0; + ) const; };