PointCloudReduction
select/mark MESHFREE points by reducing the point cloud
PointCloudReduction(n) = ( f_Integration, f_Target,
OPTIONAL:%PointCloudReduction_UseOldTimeStep% )
The
PointCloudReduction algorithm performs a domain decomposition of the complete pointcloud and selects one
MESHFREE point
per subdomain (=cluster). Subdomains of the decomposition are connected and respect a certain target quantity:
\begin{align} f_{\text{Target}} \leq \sum\limits_{i \in \Omega_{\text{sub}}(j)} f_{\text{Integration},i}\end{align}
Example:
Each
MESHFREE point will be integrated with the weight 1 and the target quantity is 10, that implies that the maximum size
of a subdomain is 10.
Finally, exactly one point out of the subdomain \( j\) is marked and the result of the
PointCloudReduction can be
requested by the
reduct()-functionality in
Equations:
-
- marked MESHFREE point in a cluster represents the value of the integral \( \sum\limits_{i \in \Omega_{\text{sub}}(j)} f_{\text{Integration},i}\)
- marked MESHFREE point represents the cluster index \( j\) of \( \Omega_{\text{sub}}(j)\)
%PointCloudReduction_UseOldTimeStep%: MESHFREE tries to use the reduction results of the previous
time step first (i.e. keep the selection status of points from the previous time step if possible). Then, it runs the reduction on top of it.
Under this option, the reduction results are stored on the point cloud (in order to keep this info for the next time cycle),
which requires additional memory for each
PointCloudReduction which is subject to this option.
Examples:
PointCloudReduction(1) = ( [1], [10] )
# mark every 10-th MESHFREE point
SAVE_ITEM = ( %SAVE_scalar%, [reduct(1,%EQN_Reduct_Accumulated%)], "PCR1_nbPointsRepresented" )
# how many points are represented by the marked point
SAVE_ITEM = ( %SAVE_scalar%, [reduct(1,%EQN_Reduct_iCluster%)], "PCR1_numberingClusteringIndex" )
# display the cluster index (index of fish scale) produced by the PointCloudReduction
PointCloudReduction(2) = ( [Y
%ind_Vi%], [(1.0*
&Hmax&)^2] )
# mark MESHFREE points that represent a volume approximately equal to &Hmax&^3
SAVE_ITEM = ( %SAVE_scalar%, [reduct(2,%EQN_Reduct_Accumulated%)], "PCR2_volumeRepresented" )
# how many points are represented by the selected point
SAVE_ITEM = ( %SAVE_scalar%, [reduct(2,%EQN_Reduct_iCluster%)], "PCR2_volumeClusteringIndex" )
# display the cluster index (index of fish scale) produced by the PointCloudReduction
PointCloudReduction(3) = ( [reduct(1,%EQN_Reduct_Accumulated%)>0.5], [10] )
# mark every 10-th MESHFREE point out of the PointCloudReduction(1), i.e. every 100-th point
SAVE_ITEM = ( %SAVE_scalar%, [reduct(3,%EQN_Reduct_Accumulated%)], "PCR3_nbPoints100Represented" )
# how many points are represented by the marked point
SAVE_ITEM = ( %SAVE_scalar%, [reduct(3,%EQN_Reduct_iCluster%)], "PCR3_nbPoint100ClusteringIndex" )
# display the cluster index (index of fish scale) produced by the PointCloudReduction
result of
PointCloudReduction(1):

result of
PointCloudReduction(2):

result of
PointCloudReduction(3):