From 98a30bc98c96ad931887f6d3cdda10ff602ed5a9 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Thu, 17 Apr 2025 02:41:36 +0330 Subject: [PATCH] keepHistory for integration to automatically remove the fields related to integration. The default is no save on the disk --- .../AdamsBashforth2/AdamsBashforth2.cpp | 7 ++++--- .../AdamsBashforth2/AdamsBashforth2.hpp | 3 ++- .../AdamsBashforth3/AdamsBashforth3.cpp | 7 ++++--- .../AdamsBashforth3/AdamsBashforth3.hpp | 3 ++- .../AdamsBashforth4/AdamsBashforth4.cpp | 7 ++++--- .../AdamsBashforth4/AdamsBashforth4.hpp | 3 ++- .../AdamsBashforth5/AdamsBashforth5.cpp | 7 ++++--- .../AdamsBashforth5/AdamsBashforth5.hpp | 3 ++- src/Integration/integration/integration.cpp | 11 +++++++---- src/Integration/integration/integration.hpp | 19 +++++++++++++++---- .../grainParticles/grainParticles.cpp | 3 ++- .../sphereParticles/sphereParticles.cpp | 3 ++- .../dynamicPointStructure.cpp | 8 +++++--- .../systemControl/systemControl.cpp | 15 ++++++++++++--- .../systemControl/systemControl.hpp | 1 + src/phasicFlow/types/quadruple/quadruple.hpp | 2 +- 16 files changed, 69 insertions(+), 33 deletions(-) diff --git a/src/Integration/AdamsBashforth2/AdamsBashforth2.cpp b/src/Integration/AdamsBashforth2/AdamsBashforth2.cpp index 0eaa4bdb..9f457fe8 100644 --- a/src/Integration/AdamsBashforth2/AdamsBashforth2.cpp +++ b/src/Integration/AdamsBashforth2/AdamsBashforth2.cpp @@ -97,10 +97,11 @@ pFlow::AdamsBashforth2::AdamsBashforth2 const word& baseName, pointStructure& pStruct, const word& method, - const realx3Field_D& initialValField + const realx3Field_D& initialValField, + bool keepHistory ) : - integration(baseName, pStruct, method, initialValField), + integration(baseName, pStruct, method, initialValField, keepHistory), realx3PointField_D ( objectFile @@ -108,7 +109,7 @@ pFlow::AdamsBashforth2::AdamsBashforth2 groupNames(baseName,"dy1"), pStruct.time().integrationFolder(), objectFile::READ_IF_PRESENT, - objectFile::WRITE_ALWAYS + keepHistory?objectFile::WRITE_ALWAYS:objectFile::WRITE_NEVER ), pStruct, zero3, diff --git a/src/Integration/AdamsBashforth2/AdamsBashforth2.hpp b/src/Integration/AdamsBashforth2/AdamsBashforth2.hpp index a8218465..0241bb8e 100644 --- a/src/Integration/AdamsBashforth2/AdamsBashforth2.hpp +++ b/src/Integration/AdamsBashforth2/AdamsBashforth2.hpp @@ -81,7 +81,8 @@ public: const word& baseName, pointStructure& pStruct, const word& method, - const realx3Field_D& initialValField); + const realx3Field_D& initialValField, + bool keepHistory); /// Destructor ~AdamsBashforth2()override = default; diff --git a/src/Integration/AdamsBashforth3/AdamsBashforth3.cpp b/src/Integration/AdamsBashforth3/AdamsBashforth3.cpp index e728e533..c15b5ff2 100644 --- a/src/Integration/AdamsBashforth3/AdamsBashforth3.cpp +++ b/src/Integration/AdamsBashforth3/AdamsBashforth3.cpp @@ -109,10 +109,11 @@ pFlow::AdamsBashforth3::AdamsBashforth3 const word& baseName, pointStructure& pStruct, const word& method, - const realx3Field_D& initialValField + const realx3Field_D& initialValField, + bool keepHistory ) : - AdamsBashforth2(baseName, pStruct, method, initialValField), + AdamsBashforth2(baseName, pStruct, method, initialValField, keepHistory), dy2_ ( objectFile @@ -120,7 +121,7 @@ pFlow::AdamsBashforth3::AdamsBashforth3 groupNames(baseName,"dy2"), pStruct.time().integrationFolder(), objectFile::READ_IF_PRESENT, - objectFile::WRITE_ALWAYS + keepHistory ? objectFile::WRITE_ALWAYS : objectFile::WRITE_NEVER ), pStruct, zero3, diff --git a/src/Integration/AdamsBashforth3/AdamsBashforth3.hpp b/src/Integration/AdamsBashforth3/AdamsBashforth3.hpp index e71166ae..50a23c39 100644 --- a/src/Integration/AdamsBashforth3/AdamsBashforth3.hpp +++ b/src/Integration/AdamsBashforth3/AdamsBashforth3.hpp @@ -71,7 +71,8 @@ public: const word& baseName, pointStructure& pStruct, const word& method, - const realx3Field_D& initialValField); + const realx3Field_D& initialValField, + bool keepHistory); /// Destructor diff --git a/src/Integration/AdamsBashforth4/AdamsBashforth4.cpp b/src/Integration/AdamsBashforth4/AdamsBashforth4.cpp index a0d5c4a1..24461282 100644 --- a/src/Integration/AdamsBashforth4/AdamsBashforth4.cpp +++ b/src/Integration/AdamsBashforth4/AdamsBashforth4.cpp @@ -115,10 +115,11 @@ pFlow::AdamsBashforth4::AdamsBashforth4 const word& baseName, pointStructure& pStruct, const word& method, - const realx3Field_D& initialValField + const realx3Field_D& initialValField, + bool keepHistory ) : - AdamsBashforth3(baseName, pStruct, method, initialValField), + AdamsBashforth3(baseName, pStruct, method, initialValField, keepHistory), dy3_ ( objectFile @@ -126,7 +127,7 @@ pFlow::AdamsBashforth4::AdamsBashforth4 groupNames(baseName,"dy3"), pStruct.time().integrationFolder(), objectFile::READ_IF_PRESENT, - objectFile::WRITE_ALWAYS + keepHistory?objectFile::WRITE_ALWAYS:objectFile::WRITE_NEVER ), pStruct, zero3, diff --git a/src/Integration/AdamsBashforth4/AdamsBashforth4.hpp b/src/Integration/AdamsBashforth4/AdamsBashforth4.hpp index fc2b913b..a9bb9a43 100644 --- a/src/Integration/AdamsBashforth4/AdamsBashforth4.hpp +++ b/src/Integration/AdamsBashforth4/AdamsBashforth4.hpp @@ -69,7 +69,8 @@ public: const word& baseName, pointStructure& pStruct, const word& method, - const realx3Field_D& initialValField); + const realx3Field_D& initialValField, + bool keepHistory); diff --git a/src/Integration/AdamsBashforth5/AdamsBashforth5.cpp b/src/Integration/AdamsBashforth5/AdamsBashforth5.cpp index 3fde7276..dd1503e2 100644 --- a/src/Integration/AdamsBashforth5/AdamsBashforth5.cpp +++ b/src/Integration/AdamsBashforth5/AdamsBashforth5.cpp @@ -123,10 +123,11 @@ pFlow::AdamsBashforth5::AdamsBashforth5 const word &baseName, pointStructure &pStruct, const word &method, - const realx3Field_D &initialValField + const realx3Field_D &initialValField, + bool keepHistory ) : - AdamsBashforth4(baseName, pStruct, method, initialValField), + AdamsBashforth4(baseName, pStruct, method, initialValField, keepHistory), dy4_ ( objectFile @@ -134,7 +135,7 @@ pFlow::AdamsBashforth5::AdamsBashforth5 groupNames(baseName,"dy4"), pStruct.time().integrationFolder(), objectFile::READ_IF_PRESENT, - objectFile::WRITE_ALWAYS + keepHistory?objectFile::WRITE_ALWAYS:objectFile::WRITE_NEVER ), pStruct, zero3, diff --git a/src/Integration/AdamsBashforth5/AdamsBashforth5.hpp b/src/Integration/AdamsBashforth5/AdamsBashforth5.hpp index ed16d99c..939f96a3 100644 --- a/src/Integration/AdamsBashforth5/AdamsBashforth5.hpp +++ b/src/Integration/AdamsBashforth5/AdamsBashforth5.hpp @@ -68,7 +68,8 @@ public: const word& baseName, pointStructure& pStruct, const word& method, - const realx3Field_D& initialValField); + const realx3Field_D& initialValField, + bool keepHistory); diff --git a/src/Integration/integration/integration.cpp b/src/Integration/integration/integration.cpp index d9fc8ba8..710df9ad 100644 --- a/src/Integration/integration/integration.cpp +++ b/src/Integration/integration/integration.cpp @@ -51,10 +51,12 @@ pFlow::integration::integration( const word &baseName, pointStructure &pStruct, const word &, - const realx3Field_D &) + const realx3Field_D &, + bool keepHistory) : owner_(*pStruct.owner()), pStruct_(pStruct), - baseName_(baseName) + baseName_(baseName), + keepHistory_(keepHistory) {} @@ -64,12 +66,13 @@ pFlow::uniquePtr const word& baseName, pointStructure& pStruct, const word& method, - const realx3Field_D& initialValField + const realx3Field_D& initialValField, + bool keepHistory ) { if( wordvCtorSelector_.search(method) ) { - return wordvCtorSelector_[method] (baseName, pStruct, method, initialValField); + return wordvCtorSelector_[method] (baseName, pStruct, method, initialValField, keepHistory); } else { diff --git a/src/Integration/integration/integration.hpp b/src/Integration/integration/integration.hpp index fb0d84df..1161bd1e 100644 --- a/src/Integration/integration/integration.hpp +++ b/src/Integration/integration/integration.hpp @@ -24,6 +24,7 @@ Licence: #include "virtualConstructor.hpp" #include "pointFields.hpp" +#include "Logical.hpp" namespace pFlow @@ -63,6 +64,8 @@ private: /// The base name for integration const word baseName_; + bool keepHistory_; + protected: bool insertValues( @@ -83,7 +86,8 @@ public: const word& baseName, pointStructure& pStruct, const word& method, - const realx3Field_D& initialValField); + const realx3Field_D& initialValField, + bool keepHistory); /// Copy constructor integration(const integration&) = default; @@ -109,9 +113,10 @@ public: const word& baseName, pointStructure& pStruct, const word& method, - const realx3Field_D& initialValField + const realx3Field_D& initialValField, + bool keepHistory ), - (baseName, pStruct, method, initialValField) + (baseName, pStruct, method, initialValField, keepHistory) ); @@ -138,6 +143,11 @@ public: return owner_; } + bool keepHistory()const + { + return keepHistory_; + } + virtual void updateBoundariesSlaveToMasterIfRequested() = 0; /// return integration method @@ -164,7 +174,8 @@ public: const word& baseName, pointStructure& pStruct, const word& method, - const realx3Field_D& initialValField); + const realx3Field_D& initialValField, + bool keepHistory); }; // integration diff --git a/src/Particles/GrainParticles/grainParticles/grainParticles.cpp b/src/Particles/GrainParticles/grainParticles/grainParticles.cpp index 1e6cc065..d4d5bf05 100644 --- a/src/Particles/GrainParticles/grainParticles/grainParticles.cpp +++ b/src/Particles/GrainParticles/grainParticles/grainParticles.cpp @@ -248,7 +248,8 @@ pFlow::grainParticles::grainParticles( "rVelocity", dynPointStruct(), intMethod, - rAcceleration_.field() + rAcceleration_.field(), + control.keepIntegrationHistory() ); if( !rVelIntegration_ ) diff --git a/src/Particles/SphereParticles/sphereParticles/sphereParticles.cpp b/src/Particles/SphereParticles/sphereParticles/sphereParticles.cpp index f63177b1..ffb73e3c 100644 --- a/src/Particles/SphereParticles/sphereParticles/sphereParticles.cpp +++ b/src/Particles/SphereParticles/sphereParticles/sphereParticles.cpp @@ -229,7 +229,8 @@ pFlow::sphereParticles::sphereParticles( "rVelocity", dynPointStruct(), intMethod, - rAcceleration_.field() + rAcceleration_.field(), + control.keepIntegrationHistory() ); if( !rVelIntegration_ ) diff --git a/src/Particles/dynamicPointStructure/dynamicPointStructure.cpp b/src/Particles/dynamicPointStructure/dynamicPointStructure.cpp index fb465bcb..cdc8472a 100644 --- a/src/Particles/dynamicPointStructure/dynamicPointStructure.cpp +++ b/src/Particles/dynamicPointStructure/dynamicPointStructure.cpp @@ -58,13 +58,14 @@ pFlow::dynamicPointStructure::dynamicPointStructure { REPORT(1)<< "Creating integration method "<< Green_Text(integrationMethod_)<<" for dynamicPointStructure."<