示例#1
0
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
xsect_Lay3 = XSect(4, af3, xdim3, laminates_Lay3, matLib, typeXSect="box", meshSize=4)
# 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.])
K_tmp = xsect_Lay3.K
F_tmp = xsect_Lay3.F
xs_tmp = xsect_Lay3.xs
ys_tmp = xsect_Lay3.ys
# Let's see what the rigid cross-section looks like:
xsect_Lay3.plotRigid()
# Print the stiffness matrix
xsect_Lay3.printSummary(stiffMat=True)

x1 = np.array([0, 0, 0])
x2 = np.array([0, 0, 160.5337])
nodes = [n1, n2, n3, n4, n5, n6, n7, n8, n9]

elem1 = CQUADX9(1, nodes, 3, matLib)

N1 = Node(1, [0., 0., 0.])
N2 = Node(2, [1., 0., 0.])
N3 = Node(3, [1., 1., 0.])
N4 = Node(4, [0., 1., 0.])
nodes1 = [N1, N2, N3, N4]
elem2 = CQUADX(2, nodes1, 3, matLib)

b = 1
h = 1
elemX = 24
elemY = elemX
xsect1 = XSect(1,None,[b,h],None,matLib,elemX=elemX,elemY=elemY,typeXSect='solidBox',\
    MID=3,elemOrder=1)
xsect1.xSectionAnalysis()
xsect2 = XSect(1,None,[b,h],None,matLib,elemX=elemX,elemY=elemY,typeXSect='solidBox',\
    MID=3,elemOrder=2)
xsect2.xSectionAnalysis()

E = 71.7e9
nu = .33
G = E / (2 * (1 + nu))
A = 1
k = 5. / 6
I = b * h**3 / 12.
Ktrue = np.array([[G*A*k,0,0,0,0,0],[0,G*A*k,0,0,0,0],[0,0,E*A,0,0,0],\
    [0,0,0,E*I,0,0],[0,0,0,0,E*I,0],[0,0,0,0,0,G*2.25*(b/2.)**4]])
Kapprox1 = xsect1.K
Kapprox2 = xsect2.K
示例#3
0
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:
x1 = np.array([0,0,0])
x2 = np.array([0,0,4])
# Initialize a superbeam ID
SBID = 1
# Next we need to initialize the number of elements the superbeam should mesh:
noe = 20
# Now let's make the superbeam
sbeam1 = SuperBeam(SBID,x1,x2,xsect_Lay1,noe)
示例#4
0
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
xsect_Lay3 = XSect(4,
                   af3,
                   xdim3,
                   laminates_Lay3,
                   matLib,
                   typeXSect='box',
                   meshSize=4)
# 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.])
K_tmp = xsect_Lay3.K
F_tmp = xsect_Lay3.F
xs_tmp = xsect_Lay3.xs
ys_tmp = xsect_Lay3.ys
# Let's see what the rigid cross-section looks like:
xsect_Lay3.plotRigid()
# Print the stiffness matrix
xsect_Lay3.printSummary(stiffMat=True)
示例#5
0
nodes = [n1,n2,n3,n4,n5,n6,n7,n8,n9]

elem1 = CQUADX9(1,nodes,3,matLib)

N1 = Node(1,[0.,0.,0.])
N2 = Node(2,[1.,0.,0.])
N3 = Node(3,[1.,1.,0.])
N4 = Node(4,[0.,1.,0.])
nodes1 = [N1,N2,N3,N4]
elem2 = CQUADX(2,nodes1,3,matLib)

b = 1
h = 1
elemX = 24
elemY = elemX
xsect1 = XSect(1,None,[b,h],None,matLib,elemX=elemX,elemY=elemY,typeXSect='solidBox',\
    MID=3,elemOrder=1)
xsect1.xSectionAnalysis()
xsect2 = XSect(1,None,[b,h],None,matLib,elemX=elemX,elemY=elemY,typeXSect='solidBox',\
    MID=3,elemOrder=2)
xsect2.xSectionAnalysis()

E = 71.7e9
nu = .33
G = E/(2*(1+nu))
A = 1
k = 5./6
I = b*h**3/12.
Ktrue = np.array([[G*A*k,0,0,0,0,0],[0,G*A*k,0,0,0,0],[0,0,E*A,0,0,0],\
    [0,0,0,E*I,0,0],[0,0,0,0,E*I,0],[0,0,0,0,0,G*2.25*(b/2.)**4]])
Kapprox1 = xsect1.K
Kapprox2 = xsect2.K
# 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.])
# Let's see what the rigid cross-section looks like:
xsect_Lay3.plotRigid()
# Print the stiffness matrix
xsect_Lay3.printSummary(stiffMat=True)

force3 = np.array([0.,0.,0.,0.,0.,216.])
# Calculate the force resultant effects
xsect_Lay3.calcWarpEffects(force=force3)
# This time let's plot the max principle stress:
xsect_Lay3.plotWarped(figName='sigma_xz',\
    warpScale=10,contour='sig_13',colorbar=True)
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)
# Organize the laminates into an array
laminates_Lay3 = [lam1,lam2,lam3,lam4]
# Create the cross-section object and mesh it
xsect_Lay3 = XSect(4,af3,xdim3,laminates_Lay3,matLib,typeXSect='box',meshSize=2)
# 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.])
# Let's see what the rigid cross-section looks like:
xsect_Lay3.plotRigid()
# Print the stiffness matrix
xsect_Lay3.printSummary(stiffMat=True)
# Create an applied force vector. For a wing shape such as this, let's apply a
# semi-realistic set of loads:
force3 = np.array([10.,100.,0.,10.,1.,0.])
# Calculate the force resultant effects
xsect_Lay3.calcWarpEffects(force=force3)
# This time let's plot the max principle stress:
xsect_Lay3.plotWarped(figName='NACA2412 Box Beam Max Principle Stress',\
示例#8
0
xsect_Lay3.calcWarpEffects(force=force)
xsect_Lay3.plotWarped(figName='Warping Displacement My',warpScale=0,contour='none')
xsect_Lay3.plotWarped(figName='Warping Displacement My',warpScale=1e9,contLim=[0,1e-9])

force = np.array([0,0,0,0,0,1.])
xsect_Lay3.calcWarpEffects(force=force)
xsect_Lay3.plotWarped(figName='Warping Displacement Mz',warpScale=0,contour='none')
xsect_Lay3.plotWarped(figName='Warping Displacement Mz',warpScale=5e8,contLim=[0,1e-9])
'''

lam1.printSummary()
lam2.printSummary()
lam3.printSummary()
lam4.printSummary()
laminates_Lay3 = [lam1,lam2,lam3,lam4]
xsect_Lay3 = XSect(4,af2,xdim2,laminates_Lay3,matLib,typeXSect='rectBox',meshSize=1.87)
xsect_Lay3.xSectionAnalysis()
xsect_Lay3.printSummary(stiffMat=True)
xsect_Lay3.calcWarpEffects(force=force)

#import mayavi.mlab as mlab

#xsect_Lay3.plotWarped(figName='Stress sig_11',warpScale=1,contLim=[-500,500],contour='sig_11')
xsect_Lay3.plotWarped(figName='Stress sig_11',warpScale=0,contour='sig_11')
#xsect_Lay3.plotRigid(figName='Stress sig_11')
#mlab.colorbar()

#xsect_Lay3.plotWarped(figName='Stress sig_22',warpScale=1,contLim=[-5075,9365],contour='sig_22')
xsect_Lay3.plotWarped(figName='Stress sig_22',warpScale=0,contour='sig_22')
#mlab.colorbar()
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()
# Let's see what our rigid cross-section looks like when plotted in 3D:
xsect1.plotRigid(mesh=True)
# Note that while it might look like the cross-section is made of triangular
# elements, it's actually made of quadrilaterals. This is an artifact of how
# the visualizer mayavi works. Let's get a summary of the cross-section's
# stiffnesses, ect.
xsect1.printSummary(stiffMat=True)
# Notice that from the command line output, all of the important cross-
# sectional geometric properties are located at the origin. By observing the
示例#10
0
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()
# Let's see what our rigid cross-section looks like when plotted in 3D:
xsect1.plotRigid(mesh=True)
# Note that while it might look like the cross-section is made of triangular
# elements, it's actually made of quadrilaterals. This is an artifact of how
# the visualizer mayavi works. Let's get a summary of the cross-section's
# stiffnesses, ect.
xsect1.printSummary(stiffMat=True)
# Notice that from the command line output, all of the important cross-
# sectional geometric properties are located at the origin. By observing the
# cross-section stiffness matrix, it can be seen by the 1,3 entry that there
# is shear-axial coupling. From the non-zero 4,6 entry, we can also tell that
# the cross-section has bending-torsion coupling.
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)
# Organize the laminates into an array
laminates_Lay3 = [lam1, lam2, lam3, lam4]
# Create the cross-section object and mesh it
xsect_Lay3 = XSect(4,
                   af3,
                   xdim3,
                   laminates_Lay3,
                   matLib,
                   typeXSect='box',
                   meshSize=2)
# 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.])
# Let's see what the rigid cross-section looks like:
xsect_Lay3.plotRigid()
# Print the stiffness matrix
xsect_Lay3.printSummary(stiffMat=True)
# Create an applied force vector. For a wing shape such as this, let's apply a
# semi-realistic set of loads:
force3 = np.array([10., 100., 0., 10., 1., 0.])
# Calculate the force resultant effects
示例#12
0
# 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.])
# Let's see what the rigid cross-section looks like:
xsect_Lay3.plotRigid()
# Print the stiffness matrix
xsect_Lay3.printSummary(stiffMat=True)

force3 = np.array([0., 0., 0., 0., 0., 216.])
# Calculate the force resultant effects
xsect_Lay3.calcWarpEffects(force=force3)