def DInner_discrete(x): # initialize insert diameter array DInner_dis = np.zeros_like(x) # get the step size between grid points dx = x[1] - x[0] # begin loop to calculate insert diameters cnt = 0 for X in x: # write all diameter between each length interval to the same diameter of the step if np.sum(X > np.array(disX)) < len(disD): DInner_dis[cnt] = disD[np.sum(X > np.array(disX))] cnt = cnt + 1 # begin loop to insert smoothed profile between diameter steps for d in range(0, len(disX)): # find range of smoothing function LowBond = sum(disX[d] > x) - delta UpBond = sum(disX[d] > x) + delta x_loc = x[LowBond:UpBond] try: DInner_dis[LowBond:UpBond] = smoothingFunction( x_loc, disX[d], 2 * delta * dx, disD[d], disD[d + 1]) except: # when the loop forwards to the last insert, set the final diameter to zero DInner_dis[LowBond:UpBond] = smoothingFunction( x_loc, disX[d], 2 * delta * dx, disD[d], 0) return DInner_dis
def DInner(x): diameter = np.zeros(nX) diameter += smoothingFunction(x, xLower + LInnerInsert, DeltaSmoothingFunction, DInnerInsert, 0.0) diameter += smoothingFunction(x, xLower + LOuterInsert, DeltaSmoothingFunction, DOuterInsertFront - DInnerInsert, 0.0) diameter += smoothingFunction(x, xLower + LOuterInsert / 2.0, LOuterInsert, DOuterInsertBack - DOuterInsertFront, 0.0) return diameter
def DInner_discrete(x): DInner_dis = np.zeros(x.shape) cnt = 0 for X in x: if np.sum(X > np.array(disX)) < len(disD): DInner_dis[cnt] = disD[np.sum(X > np.array(disX))] cnt = cnt + 1 for d in range(0, int(np.floor(len(x) / x_step)) - 1): LowBond = int(d * x_step - delta) UpBond = int(d * x_step + delta) x_loc = x[LowBond:UpBond] DInner_dis[LowBond:UpBond] = smoothingFunction( x_loc, disX[d], 2 * delta * dx, disD[d], disD[d + 1]) return DInner_dis
def DOuter(x): return smoothingFunction(x, xShock, Delta, DDriver, DDriven)