ORNL-CEES / DataTransferKit

A library for multiphysics solution transfer. ARCHIVED
https://datatransferkit.readthedocs.io/en/dtk-3.0/
BSD 3-Clause "New" or "Revised" License
48 stars 26 forks source link

Implement and Test Parallel Search #2

Closed sslattery closed 10 years ago

sslattery commented 10 years ago

Implement and unit test the ParallelSearch class under the defined interface.

Tests:

  1. Search the domain entities with their centroids and ensure the CrsGraph gives the pattern for the identity matrix (search the domain with itself).
  2. Axis aligned mesh with random points
  3. Rotated and translated axis aligned mesh with random points
sslattery commented 10 years ago

Splitting the search up into three smaller implementations:

CoarseGlobalSearch: This search will take in a set of range entities on a given process, search through the bounding boxes of the domain entities on each process, and send the range centroid coordinates to their destinations in the domain entity decomposition.

CoarseLocalSearch: This search will take the local set of domain entity centroids and construct a static (kD-Tree). The search returns a list of entities in the leaf of the tree where the input range centroid was found. Parameters for this tree are leaf size for construction and kNN for the search.

FineLocalSearch: This search will take a range centroid and a domain entity found in the CoarseLocalSearch and drive the infrastructure defined in EntityLocalMap to map the range centroid to the space of the domain entity. If there is a mapping, the parametric coordinates will be returned.

A high level ParallelSearch object will combine these individual pieces to produce the desired output. Parameters for this class include whether or not one would like to have multiple possible domain entities returned for a given range centroid or if the first domain entity containing a range centroid is satisfactory.

sslattery commented 10 years ago

FineLocalSearch and CoarseLocalSearch have been completed and currently working on CoarseGlobalSearch. For now, this search will only redistribute the range points into the parallel decomposition of the domain. If we want to use rendezvous for this piece, we will need to redistribute the full description of the domain entities. We don't have this in the API now so we just move the points.

sslattery commented 10 years ago

Finished CoarseGlobalSearch with some 3D tests. Need the following additional tests:

1) All-to-all communication pattern 2) Many-to-many communication pattern 3) Some procs have no domain entities 3) Some procs have no range entities

sslattery commented 10 years ago

Finished extra CoarseGlobalSearch including an extra test where points were distributed to multiple processes. Next is a basic implement ion of the ParallelSearch interface that constructs the parallel CrsGraph as well as MultiVector objects containing the parametric coordinates of the mappings.

sslattery commented 10 years ago

The basic implementation of ParallelSearch is complete with a wide variety of test configurations spanning the same parallel configurations as the CoarseGlobalSearch tests. We should use these same configurations for the interpolation operators.