Exemplo n.º 1
0
# Layup 1 Box beam (0.5 x 0.923 in^2 box with laminate schedule [0]_6)

# Before we make a beam, we must first make the cross-section of that beam. We
# are going to start with a cross-section we used in the third tutorial.
c2 = 0.53
# Establish the non-dimensional starting and stopping points of the cross-
# section.
xdim2 = [-.953/(c2*2),.953/(c2*2)]
# Generate the airfoil box:
af2 = Airfoil(c2,name='box')
# Now let's make all of the laminate objects we will need for the box beam. In
# this case it's 4:
n_i_Lay1 = [6]
m_i_Lay1 = [2]
th_Lay1 = [0.]
lam1_Lay1 = Laminate(n_i_Lay1, m_i_Lay1, matLib, th=th_Lay1)
lam2_Lay1 = Laminate(n_i_Lay1, m_i_Lay1, matLib, th=th_Lay1)
lam3_Lay1 = Laminate(n_i_Lay1, m_i_Lay1, matLib, th=th_Lay1)
lam4_Lay1 = Laminate(n_i_Lay1, m_i_Lay1, matLib, th=th_Lay1)
# Assemble the laminates into an array.
laminates_Lay1 = [lam1_Lay1,lam2_Lay1,lam3_Lay1,lam4_Lay1]
# Create the cross-section vector:
xsect_Lay1 = XSect(2,af2,xdim2,laminates_Lay1,matLib,typeXSect='rectBox',\
    meshSize=2)
# Create the cross-section object.
xsect_Lay1.xSectionAnalysis()
# Having created the cross-section, we can now generate a superbeam. A
# superbeam is just a collection of beam elements. In other words, a superbeam
# is just there to fascilitate beam meshing and other pre/post processing
# benefits. In order to make a superbeam, we need to initialize a few things.
# First, let's initialize the starting and stopping location of the beam:
Exemplo n.º 2
0
# Convert it back to a stiffness matrix
Cp = np.linalg.inv(Sp)
print('The rotated stiffness matrix:')
print(tabulate(np.around(Cp-C,decimals=3),tablefmt="fancy_grid"))

# =============================================================================
# CLT VALIDATION
# =============================================================================
# Initialize the number of plies per each orientation
n_i = [1,1,1,1]
# Initialize the materials to be used at each orientation
m_i = [4,4,4,4]
# Initialize the angle orientations for the plies
th = [30,-30,0,45]
# Create a laminate with default orientations (for 4 orientations, this will
# default to th_defalt = [0,45,90,-45])
lam1 = Laminate(n_i,m_i,matlib)
# Print a summary of laminate 1
print('Laminate 1 summary:')
lam1.printSummary(decimals=3)
# Create a laminate with default orientations (for more or less than 4
# orientations, th_default = [0]*len(n_i))
lam2 = Laminate(n_i+n_i,m_i+m_i,matlib)
# Print summary of laminate 2
print('Laminate 2 summary:')
lam2.printSummary(decimals=3)
# Create a laminate using the above rotation orientations
lam3 = Laminate(n_i,m_i,matlib,th=th)
# Print Summary of laminate 3
print('Laminate 3 summary:')
lam3.printSummary(decimals=3)
Exemplo n.º 3
0
# Convert it back to a stiffness matrix
Cp = np.linalg.inv(Sp)
print('The rotated stiffness matrix:')
print(tabulate(np.around(Cp - C, decimals=3), tablefmt="fancy_grid"))

# =============================================================================
# CLT VALIDATION
# =============================================================================
# Initialize the number of plies per each orientation
n_i = [1, 1, 1, 1]
# Initialize the materials to be used at each orientation
m_i = [4, 4, 4, 4]
# Initialize the angle orientations for the plies
th = [30, -30, 0, 45]
# Create a laminate with default orientations (for 4 orientations, this will
# default to th_defalt = [0,45,90,-45])
lam1 = Laminate(n_i, m_i, matlib)
# Print a summary of laminate 1
print('Laminate 1 summary:')
lam1.printSummary(decimals=3)
# Create a laminate with default orientations (for more or less than 4
# orientations, th_default = [0]*len(n_i))
lam2 = Laminate(n_i + n_i, m_i + m_i, matlib)
# Print summary of laminate 2
print('Laminate 2 summary:')
lam2.printSummary(decimals=3)
# Create a laminate using the above rotation orientations
lam3 = Laminate(n_i, m_i, matlib, th=th)
# Print Summary of laminate 3
print('Laminate 3 summary:')
lam3.printSummary(decimals=3)
Exemplo n.º 4
0
# meshing routines for this. This is the less restrictive than the 'rectBox'
# routine, and has different laminate mesh interfaces. This time we will also
# make a slightly more interesting mesh using unbalanced and unsymetric
# laminates. First let's initialize the airfoil shape:
# Initialize a chord length of four inches
c3 = 17.68515
# Initialize the non-dimesional locations for the airfoil points to be
# generated:
xdim3 = [.19, .582]
# Create the airfoil object:
af3 = Airfoil(c3, name='NACA2412')
# Create the laminates to make up the cross-section
n_i_1 = [8]
m_i_1 = [1]
th_1 = [10]
lam1 = Laminate(n_i_1, m_i_1, matLib, th=th_1)
n_i_2 = [1, 1, 1, 1]
m_i_2 = [1, 1, 1, 1]
th_2 = [45, -45, 45, -45]
lam2 = Laminate(n_i_2, m_i_2, matLib, th=th_2)
n_i_3 = [8]
m_i_3 = [1]
th_3 = [-10]
lam3 = Laminate(n_i_3, m_i_3, matLib, th=th_3)
n_i_4 = [1, 1, 1, 1]
m_i_4 = [1, 1, 1, 1]
th_4 = [45, -45, 45, -45]
lam4 = Laminate(n_i_4, m_i_4, matLib, th=th_4)
# Organize the laminates into an array
laminates_Lay3 = [lam1, lam2, lam3, lam4]
# Create the cross-section object and mesh it
Exemplo n.º 5
0
lam2 = Laminate(n_i_2, m_i_2, matLib, th=th_2)
n_i_3 = [1,1,1,1,1,1]
m_i_3 = [2,2,2,2,2,2]
th_3 = [15,15,15,15,15,15]
lam3 = Laminate(n_i_3, m_i_3, matLib, th=th_3)
n_i_4 = [1,1,1,1,1,1]
m_i_4 = [2,2,2,2,2,2]
th_4 = [-15,15,-15,15,-15,15]
lam4 = Laminate(n_i_4, m_i_4, matLib, th=th_4)
'''

# AL Box Beam
n_i_1 = [1,1,1,1,1,1]
m_i_1 = [2,2,2,2,2,2]
th_1 = [-15,-15,-15,-15,-15,-15]
lam1 = Laminate(n_i_1, m_i_1, matLib, th=th_1)
n_i_2 = [1,1,1,1,1,1]
m_i_2 = [2,2,2,2,2,2]
th_2 = [15,-15,15,-15,15,-15]
lam2 = Laminate(n_i_2, m_i_2, matLib, th=th_2)
n_i_3 = [1,1,1,1,1,1]
m_i_3 = [2,2,2,2,2,2]
th_3 = [15,15,15,15,15,15]
lam3 = Laminate(n_i_3, m_i_3, matLib, th=th_3)
n_i_4 = [1,1,1,1,1,1]
m_i_4 = [2,2,2,2,2,2]
th_4 = [-15,15,-15,15,-15,15]
lam4 = Laminate(n_i_4, m_i_4, matLib, th=th_4)
'''
laminates_Lay3 = [lam1,lam2,lam3,lam4]
xsect_Lay3 = XSect(4,af2,xdim2,laminates_Lay3,matLib,typeXsect='box',meshSize=1)
Exemplo n.º 6
0
c1 = 1.
# Initialize the non-dimensional starting and stopping points of the cross-
# section. These bounds when dimensionalized will determine the overall
# dimesions of the cross-section. Therefore the total width of the laminate is:
# xdim[1]*c1-xdim[0]*c1. In this case, the total width is 2!
xdim1 = [-1., 1.]
af1 = Airfoil(c1, name='box')
# Create a layup schedule for the laminate. In this case, we will select a
# layup schedule of [0_2/45/90/3]_s
th_1 = [0, 45, 90]
n_1 = [2, 1, 3]
m_1 = [1, 1, 1]
# Notice how the orientations are stored in the 'th_1' array, the subscripts are
# stored in the 'n_1' array, and the material information is held in 'm_1'.
# Create the laminate object:
lam1 = Laminate(n_1, m_1, matLib, th=th_1, sym=True)
# In order to make a cross-section, we must add all of the laminates to be used
# to an array:
laminates1 = [lam1]
# We now have all the information necessary to make a laminate beam cross-
# section:
xsect1 = XSect(1,
               af1,
               xdim1,
               laminates1,
               matLib,
               typeXSect='laminate',
               meshSize=2)
# With the cross-section object initialized, let's run the cross-sectional
# analysis to get cross-section stiffnesses, etc.
xsect1.xSectionAnalysis()
Exemplo n.º 7
0
# ==================
# Now let's mesh a NACA2412 box beam. We will use the last of the supported
# meshing routines for this. This is the less restrictive than the 'rectBox'
# routine, and has different laminate mesh interfaces. This time we will also
# make a slightly more interesting mesh using unbalanced and unsymetric
# laminates. First let's initialize the airfoil shape:
# Initialize a chord length of four inches
# Initialize the non-dimesional locations for the airfoil points to be
# generated:
a = 0.91
b = 0.75
r = 0.437 * 2 / 3
xdim3 = [a, b, r]
n_i_1 = [1]
m_i_1 = [1]
lam1 = Laminate(n_i_1, m_i_1, matLib)
# Organize the laminates into an array
laminates_Lay3 = [lam1]
af3 = Airfoil(1., name='NACA2412')
# Create the cross-section object and mesh it
xsect_Lay3 = XSect(4,
                   af3,
                   xdim3,
                   laminates_Lay3,
                   matLib,
                   typeXSect='rectHole',
                   nelem=40)
# Run the cross-sectional analysis. Since this is an airfoil and for this,
# symmetric airfoils the AC is at the 1/c chord, we will put the reference axis
# here
xsect_Lay3.xSectionAnalysis()  #ref_ax=[0.25*c3,0.])