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]) # Initialize a superbeam ID SBID = 1 # Next we need to initialize the number of elements the superbeam should mesh: noe = 40 # Now let's make the superbeam sbeam1 = SuperBeam(SBID, x1, x2, xsect_Lay3, noe) model = Model() # Easy right? Now let's add the superbeam to the model. model.addElements([sbeam1])
# 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. # We can apply a force to the face of this cross-section at the reference axis # (which in this case is at x,y = 0,0) and see what the stresses look like. In # this case we'll apply [Fx,Fy,Fz,Mx,My,Mz]=[0.,0.,0.,100.,0.,0.] as if the # beam belonging to this cross-section were in pure bending. force1 = np.array([0., 100., 0., 10., 0., 0.])
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]) # Initialize a superbeam ID SBID = 1 # Next we need to initialize the number of elements the superbeam should mesh: noe = 40 # Now let's make the superbeam sbeam1 = SuperBeam(SBID, x1, x2, xsect_Lay3, noe) model = Model() # Easy right? Now let's add the superbeam to the model. model.addElements([sbeam1])
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. # We can apply a force to the face of this cross-section at the reference axis # (which in this case is at x,y = 0,0) and see what the stresses look like. In # this case we'll apply [Fx,Fy,Fz,Mx,My,Mz]=[0.,0.,0.,100.,0.,0.] as if the # beam belonging to this cross-section were in pure bending. force1 = np.array([0.,100.,0.,10.,0.,0.])