Connectivity
- plot3d.connectivity.combinations_of_nearest_blocks(blocks: List[Block], nearest_nblocks: int = 4)[source]
Returns the indices of the nearest 6 blocks based on their centroid
- plot3d.connectivity.connectivity(blocks: List[Block])[source]
Returns a dictionary outlining the connectivity of the blocks along with any exterior surfaces
- Parameters:
blocks (List[Block]) – List of all blocks in multi-block plot3d mesh
- Returns:
All matching faces formatted as a list of { ‘block1’: {‘block_index’, ‘IMIN’, ‘JMIN’,’KMIN’, ‘IMAX’,’JMAX’,’KMAX’} } (List[Dict]): All exterior surfaces formatted as a list of { ‘block_index’, ‘surfaces’: [{‘IMIN’, ‘JMIN’,’KMIN’, ‘IMAX’,’JMAX’,’KMAX’, ‘ID’}] }
- Return type:
(List[Dict])
- plot3d.connectivity.connectivity_fast(blocks: List[Block])[source]
Reduces the size of the blocks by a factor of the minimum gcd. This speeds up finding the connectivity
- Parameters:
blocks (List[Block]) – Lists of blocks you want to find the connectivity for
- Returns:
All matching faces formatted as a list of { ‘block1’: {‘block_index’, ‘IMIN’, ‘JMIN’,’KMIN’, ‘IMAX’,’JMAX’,’KMAX’} } (List[Dict]): All exterior surfaces formatted as a list of { ‘block_index’, ‘surfaces’: [{‘IMIN’, ‘JMIN’,’KMIN’, ‘IMAX’,’JMAX’,’KMAX’, ‘ID’}] }
- Return type:
(List[Dict])
- plot3d.connectivity.face_matches_to_dict(face1: Face, face2: Face, block1: Block, block2: Block)[source]
Makes sure the diagonal of face 1 match the diagonal of face 2
- plot3d.connectivity.find_matching_blocks(block1: Block, block2: Block, block1_outer: List[Face], block2_outer: List[Face], tol: float = 1e-06)[source]
Takes two blocks and finds all matching pairs
- Parameters:
Note
This function was changed to be given an input of outer faces for block 1 and block 2. Outer faces can change and we should use the updated value
- Returns:
- containing
df (pandas.DataFrame): corners of matching pair as block1_corners,block2_corners ([imin,jmin,kmin],[imax,jmax,kmax]), ([imin,jmin,kmin],[imax,jmax,kmax])
block1_outer (List[Face]):
block2_outer (List[Face]):
- Return type:
(tuple)
- plot3d.connectivity.get_face_intersection(face1: Face, face2: Face, block1: Block, block2: Block, tol: float = 1e-06)[source]
- Get the index of the intersection between two faces located on two different blocks
Face1 needs to be the smaller face.
- Parameters:
- Returns:
containing
(pandas.DataFrame): dataframe with matches. Columns = I1, J1, K1, I2, J2, K2
(List[Face]): any split faces from block 1
(List[Face]): any split faces from block 2
- Return type:
(Tuple)
- plot3d.connectivity.select_multi_dimensional(T: ndarray, dim1: tuple, dim2: tuple, dim3: tuple)[source]
- Takes a block (T) and selects X,Y,Z from the block given a face’s dimensions
theres really no good way to do this in python
- Parameters:
T (np.ndarray) – arbitrary array so say a full matrix containing X
dim1 (tuple) – 20,50 this selects X in the i direction from i=20 to 50
dim2 (tuple) – 40,60 this selects X in the j direction from j=40 to 60
dim3 (tuple) – 10,20 this selects X in the k direction from k=10 to 20
- Returns:
returns X or Y or Z given some range of I,J,K
- Return type:
np.ndarray
- plot3d.connectivity.verify_connectivity(blocks: List[Block], face_matches: list, tol: float = 1e-06)[source]
Verifies that the diagonal corners of face_matches are spatially consistent.
For each face_match, checks that block1’s lower corner coordinates match block2’s lower corner coordinates (and similarly for upper corners) within the specified tolerance. If the stored diagonal doesn’t match, tries all permutations of block2’s face corners. If a valid permutation is found, the face_match is corrected and added to the verified list.
Uses GCD reduction (same as connectivity_fast) for efficient coordinate lookups.
- Parameters:
blocks (List[Block]) – List of all blocks (original full-resolution)
face_matches (list) – List of face_match dicts from connectivity or periodicity
tol (float, optional) – Euclidean distance tolerance. Defaults to 1E-6.
- Returns:
verified face_matches whose diagonals are confirmed or corrected (list): mismatched face_matches where no corner permutation matched
- Return type:
(list)