From 526ecfecf46dee149e284092ecb6b85faf12f40f Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@Germany> Date: Thu, 2 Jun 2016 17:39:19 +0200 Subject: [PATCH] ENH: group info about particle output with "{}" etc - The only reasonable means of mirroring the data layout. The '{}' delimiters mark the extent of the binary writes. The primitives 'label' and 'scalar' are directly supported and correspond to known byte widths. Using "List<scalar>" was a bad choice, since this triggers unpleasant tokenizing behaviour. Instead use 'scalars' as a provisional placeholder to indicates a list of scalar values. However, there is currently no support for actually handling lists of scalars, for several reasons: * The information is not available at compile-time. The cloud or parcel must be queried. And it must be guaranteed that this value is consistent for the entire cloud. * Binary output of lists is currently not great for determining the the encoded width: - A zero-size list is a single '0'. - The leading size is a non-constant number of digits. - There are prefix/suffix newlines need to be tagged and skipped. The special '*' (glob) token indicates that the remaining content has a dynamic variable length and nothing reasonable can be known about their sizes. This is exemplified by the collision records. --- src/lagrangian/basic/particle/particle.H | 2 +- src/lagrangian/basic/particle/particleMacros.H | 2 ++ .../Templates/CollidingParcel/CollidingParcel.H | 11 +++++------ .../Templates/KinematicParcel/KinematicParcel.H | 4 ++-- .../parcels/Templates/MPPICParcel/MPPICParcel.H | 2 +- .../ReactingMultiphaseParcel.H | 4 +--- .../parcels/Templates/ReactingParcel/ReactingParcel.H | 3 +-- .../parcels/Templates/ThermoParcel/ThermoParcel.H | 3 +-- .../spray/parcels/Templates/SprayParcel/SprayParcel.H | 4 ++-- 9 files changed, 16 insertions(+), 19 deletions(-) diff --git a/src/lagrangian/basic/particle/particle.H b/src/lagrangian/basic/particle/particle.H index ea0cc38a364..e4a6f6516a4 100644 --- a/src/lagrangian/basic/particle/particle.H +++ b/src/lagrangian/basic/particle/particle.H @@ -322,7 +322,7 @@ public: //- String representation of property types DefinePropertyTypes ( - "vector label label scalar label label label label" + "{vector label label scalar label label label label}" ); //- Cumulative particle counter - used to provode unique ID diff --git a/src/lagrangian/basic/particle/particleMacros.H b/src/lagrangian/basic/particle/particleMacros.H index 8bb09dd1338..d54b9621163 100644 --- a/src/lagrangian/basic/particle/particleMacros.H +++ b/src/lagrangian/basic/particle/particleMacros.H @@ -66,6 +66,7 @@ namespace Foam //- Define a static 'propertyTypes' for the types of particle properties +// Brace brackets are used to delimit binary write groups // \sa AddToPropertyTypes #define DefinePropertyTypes(str) \ \ @@ -78,6 +79,7 @@ namespace Foam //- Add to existing static 'propertyTypes' for the types of particle properties +// Brace brackets are used to delimit binary write groups // \sa AddToPropertyTypes #define AddToPropertyTypes(ParcelType, str) \ \ diff --git a/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcel.H b/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcel.H index 0e43224e8f6..338c3186d9a 100644 --- a/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcel.H +++ b/src/lagrangian/intermediate/parcels/Templates/CollidingParcel/CollidingParcel.H @@ -162,12 +162,11 @@ public: ); //- String representation of property types - static string propertyTypes() - { - // TODO: collision information types - NotImplemented; - return string::null; - } + AddToPropertyTypes + ( + ParcelType, + "{vector vector vector} *" + ); // Constructors diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H index 2ec40a105f9..fe3d1cbf997 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H @@ -325,7 +325,7 @@ public: AddToPropertyTypes ( ParcelType, - " label" + "{label" + " label" + " scalar" + " scalar" @@ -334,7 +334,7 @@ public: + " scalar" + " scalar" + " scalar" - + " vector" + + " vector}" ); diff --git a/src/lagrangian/intermediate/parcels/Templates/MPPICParcel/MPPICParcel.H b/src/lagrangian/intermediate/parcels/Templates/MPPICParcel/MPPICParcel.H index 7ebd84fee8b..22d48d5d030 100644 --- a/src/lagrangian/intermediate/parcels/Templates/MPPICParcel/MPPICParcel.H +++ b/src/lagrangian/intermediate/parcels/Templates/MPPICParcel/MPPICParcel.H @@ -184,7 +184,7 @@ public: AddToPropertyTypes ( ParcelType, - " vector" + "{vector}" ); diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.H b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.H index f443f14b58d..44245693838 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.H +++ b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.H @@ -272,9 +272,7 @@ public: AddToPropertyTypes ( ParcelType, - " List<scalar>" - + " List<scalar>" - + " List<Scalar>" + " scalars scalars scalars" ); diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H index 8223ce22305..fda45e5f224 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H +++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H @@ -226,8 +226,7 @@ public: AddToPropertyTypes ( ParcelType, - " scalar" - + " List<scalar>" + "{scalar} scalars" ); diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H index 9178fbcd120..9e20ea8c0c3 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H +++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H @@ -282,8 +282,7 @@ public: AddToPropertyTypes ( ParcelType, - " scalar" - + " scalar" + "{scalar scalar}" ); diff --git a/src/lagrangian/spray/parcels/Templates/SprayParcel/SprayParcel.H b/src/lagrangian/spray/parcels/Templates/SprayParcel/SprayParcel.H index 76210b20c0b..c62a9924ecc 100644 --- a/src/lagrangian/spray/parcels/Templates/SprayParcel/SprayParcel.H +++ b/src/lagrangian/spray/parcels/Templates/SprayParcel/SprayParcel.H @@ -201,7 +201,7 @@ public: AddToPropertyTypes ( ParcelType, - " scalar" + "{scalar" + " vector" + " scalar" + " scalar" @@ -213,7 +213,7 @@ public: + " scalar" + " scalar" + " scalar" - + " scalar" + + " scalar}" ); -- GitLab