Source code for plot3d.differencing

'''
    This code computes all the edges of a block or block face 
'''
import numpy as np 
import pandas as pd 

[docs] def find_face_edges(X:np.ndarray,Y:np.ndarray,Z:np.ndarray): """Check if the edges of both faces to see if they are parallel. Face can be in any direction (I,J) (I,K) etc. if edges are parallel then their vertices might intersect Find edges will always deal with faces and not something that is in 3D Args: X (np.ndarray): Multi-dimensional array (2 dimensions PMAX,QMAX ) representing values of X for the block domain Y (np.ndarray): Multi-dimensional array (2 dimensions PMAX,QMAX ) representing values of Y for the block domain Z (np.ndarray): Multi-dimensional array (2 dimensions PMAX,QMAX ) representing values of Z for the block domain Returns: pandas.DataFrame: with columns p,q,dp,dq where dp, dq are each tuples containing (dx_b,dy_b,dz_b),(dx_f,dy_f,dz_f) """ (PMAX,QMAX) = X.shape diffArray = list() for p in range(0,PMAX): for q in range(0,QMAX): dx_b = 0; dy_b = 0; dz_b = 0 # Preset to 0 if p!=0: dx_b = X[p-1,q]- X[p,q] dy_b = Y[p-1,q]- Y[p,q] dz_b = Z[p-1,q]- Z[p,q] dx_f = 0; dy_f = 0; dz_f = 0 # Preset to 0 if p!=PMAX-1: dx_f = X[p+1,q]- X[p,q] dy_f = Y[p+1,q] - Y[p,q] dz_f = Z[p+1,q] - Z[p,q] dp = ((dx_b,dy_b,dz_b),(dx_f,dy_f,dz_f)) if q!=0: dx_b = X[p,q-1] - X[p,q] dy_b = Y[p,q-1] - Y[p,q] dz_b = Z[p,q-1] - Z[p,q] if q!=QMAX-1: dx_f = X[p,q+1] - X[p,q] dy_f = Y[p,q+1] - Y[p,q] dz_f = Z[p,q+1] - Z[p,q] dq = ((dx_b,dy_b,dz_b),(dx_f,dy_f,dz_f)) diffArray.append({"p":p,"q":q,'dp':dp,'dq':dq}) df = pd.DataFrame(data = diffArray) return df
[docs] def find_edges(X:np.ndarray,Y:np.ndarray,Z:np.ndarray): """Check if the edges of both blocks that are parallel. Takes into account the whole block and not a single face if edges are parallel then their vertices might intersect. Args: X (np.ndarray): Multi-dimensional array (3 dimensions IMAX,JMAX,KMAX ) representing values of X for the block/face domain Y (np.ndarray): Multi-dimensional array (3 dimensions IMAX,JMAX,KMAX ) representing values of Y for the block/face domain Z (np.ndarray): Multi-dimensional array (3 dimensions IMAX,JMAX,KMAX ) representing values of Z for the block/face domain Returns: pandas.DataFrame: Dataframe with columns i,j,k,di,dj,dk where di,dj,dk are each tuples containing (dx_b,dy_b,dz_b),(dx_f,dy_f,dz_f) _f = forward differencing """ (IMAX,JMAX, KMAX) = X.shape diffArray = list() for i in range(0,IMAX): for j in range(0,JMAX): for k in range(0,KMAX): dx_b = 0; dy_b = 0; dz_b = 0 # Preset to 0 if i!=0: # Backward Differencing i dx_b = X[i-1,j,k]- X[i,j,k] dy_b = Y[i-1,j,k]- Y[i,j,k] dz_b = Z[i-1,j,k]- Z[i,j,k] dx_f = 0; dy_f = 0; dz_f = 0 # Preset to 0 if i!=IMAX-1: # Forward Differencing i dx_f = X[i,j,k] - X[i+1,j,k] dy_f = Y[i,j,k] - Y[i+1,j,k] dz_f = Z[i,j,k] - Z[i+1,j,k] di = ((dx_b,dy_b,dz_b),(dx_f,dy_f,dz_f)) if j!=0: # Backward Differencing j dx_b = X[i,j-1,k]- X[i,j,k] dy_b = Y[i,j-1,k]- Y[i,j,k] dz_b = Z[i,j-1,k]- Z[i,j,k] if j!=JMAX-1: # Forward Differencing j dx_f = X[i,j,k] - X[i,j+1,k] dy_f = Y[i,j,k] - Y[i,j+1,k] dz_f = Z[i,j,k] - Z[i,j+1,k] dj = ((dx_b,dy_b,dz_b),(dx_f,dy_f,dz_f)) dx_f = 0; dy_f = 0; dz_f = 0 # Preset to 0 if k!=0: # Backward Differencing k dx_b = X[i,j,k-1]- X[i,j,k] dy_b = Y[i,j,k-1]- Y[i,j,k] dz_b = Z[i,j,k-1]- Z[i,j,k] if k!=KMAX-1: # Forward Differencing k dx_f = X[i,j,k] - X[i,j,k+1] dy_f = Y[i,j,k] - Y[i,j,k+1] dz_f = Z[i,j,k] - Z[i,j,k+1] dk = ((dx_b,dy_b,dz_b),(dx_f,dy_f,dz_f)) diffArray.append({"i":i,"j":j,"k":k,'di':di,'dj':dj,'dk':dk}) df = pd.DataFrame(data =diffArray) return df