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.
PointCloudReduction(1) = ( [1], [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: %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): Here should be a picture result of PointCloudReduction(2): Here should be a picture result of PointCloudReduction(3): Here should be a picture