In [1]:
%pylab inline
import pylab as pl
import numpy as np
import matplotlib.pyplot as plt
import math
rmax = 0.8333333 # maximum radius of the suboff
xb = 3.333333 # bow
xm = 10.645833 # parallel plate
xa = 13.979167 # afterbody
xc = 14.291667 # after cap
cb1 = 1.126395101
cb2 = 0.442874707
cb3 = 1.0/2.1
rh = 0.1175
k0 = 10.0
k1 = 44.6244
iDx_offset = 0.01 # offset
idx = 1000# number of points
idy = 1000 # number of points
total_length = 14.291666
#***************************************************************************
# CREATE THE CURVATURE OF THE BOW
#***************************************************************************
x_le_bow = 0.0
x_tr_bow = 3.333333
#x_tr_bow = 14.291666
x_bow = np.zeros(idx + 1)
y_bow = np.zeros(idx + 1)
a_bow = np.zeros(idx + 1)
b_bow = np.zeros(idx + 1)
fun = np.zeros(idx+1)
#boundary conditions
x_bow[0] = x_le_bow
a_bow[0] = -1.0
b_bow[0] = 1.0
y_bow[0] = 0.0
for i in range(1,idx + 1):
x_bow[i] = x_bow[i-1] + x_tr_bow/idx
a_bow[i] = 0.3 * x_bow[i] - 1.0
b_bow[i] = 1.2 * x_bow[i] + 1.0
y_bow[i] = rmax*(cb1 * x_bow[i] * a_bow[i]**4.0 + cb2 * x_bow[i]**2.0 * a_bow[i]**3.0 + 1.0 - (a_bow[i]**4 * b_bow[i]))**(1.0/2.1)
#bow[i,0] = x_bow[i]
#bow[i,1] = y_bow[i]
# if 3.333333<=x_bow[i]<=10.645833:
# y_parralel[i] = rmax
#print y_parralel[i]
#if 10.645833<=x[i]<=
#***************************************************************************
# CREATE THE PARALLEL BODY
#***************************************************************************
x_le_parallel_midBody = 3.333333
x_tr_parallel_midBody = 10.645833-3.333333
idx_parallel = 50
x_parallel_midBody = np.zeros(idx_parallel+1)
y_parallel_midBody = np.zeros(idx_parallel+1)
# boundary conditions
x_parallel_midBody[0] = 3.333333
y_parallel_midBody[0] = rmax
for i in range(1,len(x_parallel_midBody)):
x_parallel_midBody[i] = x_parallel_midBody[i-1] + x_tr_parallel_midBody/idx_parallel
y_parallel_midBody[i] = rmax
# store the vector + the the offset 3.333333
#***************************************************************************
# CREATE THE AFTER BODY
#***************************************************************************
idx_after_body = 1000
x_le_after_body = 10.645833
x_tr_after_body = 13.979167 - x_le_after_body
x_after_body = np.zeros(idx_after_body+ 1)
y_after_body = np.zeros(idx_after_body + 1)
#boundary conditions
x_after_body[0] = x_le_after_body
y_after_body[0] = rmax
# construct the axial coordinate
for i in range(1,len(x_after_body)):
x_after_body[i] = x_after_body[i-1] + x_tr_after_body/idx_after_body
# constants
rh= 0.1175
k0 = 10.0
kl = 44.6244
a_0 = rh**2
a_1 = rh * k0
a_2 = 20.0 - (20.0 * math.pow(rh,2.0)) - (4.0 * rh * k0) - ( 0.333333 * kl)
a_3 = -45.0 + (45.0 * math.pow(rh,2.0)) + (6.0 * rh * k0) + (kl)
a_4 = ( 36.0 - (36.0 * math.pow(rh,2.0)) - (4.0 * rh * k0) - (kl) )
a_5 = -10.0 + (10.0 * math.pow(rh,2.0)) + (rh * k0) + (0.333333 * kl)
# assign the xi function and the first entry in the vector
xi = np.zeros(idx_after_body + 1)
#xi[0] = (13.979167-x_after_body[0])/3.333333
#calculate the y_afterbody functions
#print x_after_body
for i in range(0,len(x_after_body)):
xi[i] = (13.979167-x_after_body[i])/3.333333
for i in range(0,len(y_after_body)):
y_after_body[i] = rmax*(a_0 + a_1*xi[i]**2.0 + a_2*xi[i]**3.0 + a_3*xi[i]**4.0 + a_4*xi[i]**5.0 + a_5*xi[i]**6.0 )**1.0/2.0
#***************************************************************************
# CREATE THE AFTERBODY CAP
#***************************************************************************
idx_after_body_cap = 100
x_le_afterbody_cap = 13.979167
x_tr_afterbody_cap = 14.291666 - x_le_afterbody_cap
x_after_body_cap = np.zeros(idx_after_body_cap+1)
y_after_body_cap = np.zeros(idx_after_body_cap+1)
# boundary conditions
x_after_body_cap[0] = x_le_afterbody_cap
for i in range(1,len(x_after_body_cap)):
x_after_body_cap[i] = x_after_body_cap[i-1] + x_tr_afterbody_cap/idx_after_body_cap
for i in range(0,len(y_after_body_cap)):
y_after_body_cap[i] = 0.1175 * rmax * (1.0 - (3.2 * x_after_body_cap[i] - 44.733333)**2.0)**0.5
fig = plt.figure(figsize=(30, 2),dpi=1200, facecolor='w', edgecolor='k')
plt.plot(x_bow,y_bow,'x',linestyle='-',linewidth = '2',marker='o',markersize=5)
plt.plot(x_parallel_midBody,y_parallel_midBody,'x',linestyle='-',linewidth = '2',marker='o',markersize=5)
plt.plot(x_after_body,2.0*y_after_body,'x',linestyle='-',linewidth = '2',marker='o',markersize=5)
plt.plot(x_after_body_cap,2.0*y_after_body_cap/17.0212765957 ,'x',linestyle='-',linewidth = '2',marker='o',markersize=5)
plt.show()
In [62]:
print max(x_after_body), min(x_after_body_cap)
print min(y_after_body), max(y_after_body_cap)
print max(2.0*y_after_body_cap/17.0212765957)
print min(2.0*y_after_body)
In [ ]:
In [30]:
#bow_function = np.zeros(shape=(idx,2))
#np.savetxt('bow.txt',bow,delimiter=' ')