From 58dae2de43ab706ee8725208414d2c4af7614a58 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Sat, 24 Nov 2018 13:14:57 +0100 Subject: [PATCH] ENH: improvements for dataCloud function object (issue #1044) - now supports a parcel selection mechanism like vtkCloud, giving the ability to select a subset of parcels. For example, a given stride, or removal of parcels with a small diameter. Eg, dataCloud output Time: 3.2 Applying parcel filtering to 994 parcels - add stride 4 - subtract field U : (less 0.2) After filtering using 214/994 parcels - add output precision control for dataCloud --- src/functionObjects/lagrangian/Make/files | 2 +- .../lagrangian/cloudInfo/cloudInfo.C | 51 +++-- .../lagrangian/cloudInfo/cloudInfo.H | 14 +- .../parcelSelectionDetail.C | 0 .../parcelSelectionDetail.H | 0 .../lagrangian/dataCloud/dataCloud.C | 28 ++- .../lagrangian/dataCloud/dataCloud.H | 74 ++++++- .../lagrangian/dataCloud/dataCloudTemplates.C | 187 +++++++++++++----- .../simplifiedSiwek/system/dataCloud | 1 + .../filter/system/controlDict | 1 + .../filter/system/dataCloud | 42 ++++ .../reactingParcelFoam/filter/system/vtkCloud | 1 + 12 files changed, 302 insertions(+), 99 deletions(-) rename src/functionObjects/lagrangian/{vtkCloud => common}/parcelSelectionDetail.C (100%) rename src/functionObjects/lagrangian/{vtkCloud => common}/parcelSelectionDetail.H (100%) create mode 100644 tutorials/lagrangian/reactingParcelFoam/filter/system/dataCloud diff --git a/src/functionObjects/lagrangian/Make/files b/src/functionObjects/lagrangian/Make/files index 8a65315b9a..e349d4f545 100644 --- a/src/functionObjects/lagrangian/Make/files +++ b/src/functionObjects/lagrangian/Make/files @@ -1,9 +1,9 @@ +common/parcelSelectionDetail.C dataCloud/dataCloud.C cloudInfo/cloudInfo.C icoUncoupledKinematicCloud/icoUncoupledKinematicCloud.C dsmcFields/dsmcFields.C vtkCloud/vtkCloud.C -vtkCloud/parcelSelectionDetail.C LIB = $(FOAM_LIBBIN)/liblagrangianFunctionObjects diff --git a/src/functionObjects/lagrangian/cloudInfo/cloudInfo.C b/src/functionObjects/lagrangian/cloudInfo/cloudInfo.C index d1d379b817..3bbe4a132f 100644 --- a/src/functionObjects/lagrangian/cloudInfo/cloudInfo.C +++ b/src/functionObjects/lagrangian/cloudInfo/cloudInfo.C @@ -78,12 +78,6 @@ Foam::functionObjects::cloudInfo::cloudInfo } -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::functionObjects::cloudInfo::~cloudInfo() -{} - - // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // bool Foam::functionObjects::cloudInfo::read(const dictionary& dict) @@ -96,10 +90,10 @@ bool Foam::functionObjects::cloudInfo::read(const dictionary& dict) if (writeToFile() && names().size()) { Info<< "applying to clouds:" << nl; - forAll(names(), i) + forAll(names(), cloudi) { - Info<< " " << names()[i] << nl; - writeFileHeader(files(i)); + Info<< " " << names()[cloudi] << nl; + writeFileHeader(files(cloudi)); } Info<< endl; } @@ -107,8 +101,6 @@ bool Foam::functionObjects::cloudInfo::read(const dictionary& dict) { Info<< "no clouds to be processed" << nl << endl; } - - return true; } return true; @@ -123,24 +115,26 @@ bool Foam::functionObjects::cloudInfo::execute() bool Foam::functionObjects::cloudInfo::write() { - forAll(names(), i) + forAll(names(), cloudi) { - const word& cloudName = names()[i]; + const word& cloudName = names()[cloudi]; const kinematicCloud& cloud = obr_.lookupObject(cloudName); - label nParcels = returnReduce(cloud.nParcels(), sumOp