Package: abdbeam
Abdbeam : composites cross section analysisA Python package for the cross section analysis of composite material beams of any shape.Main featuresThese are a few things you can do withAbdbeam:Use a fast thin-walled anisotropic composite beam theory including closed cells, open branches, shear connectors and booms (discrete stiffeners containing axial and torsional stiffnesses);Recover replacement stiffnesses (EA, EIyy, EIzz, EIyz, GJ) and/or a full 4 x 4 stiffness matrix for beams with arbitrary layups and shapes;Recover centroid and shear center locations;Obtain internal load distributions (Nx, Nxy, Mx, My, Mxy for segments; Px and Tx for booms) for a large number of cross section load cases (defined by Px, My, Mz, Tz, Vy and Vz section loads);Plot cross sections, their properties and internal loads.InstallingInstall using PyPI (Python package index) :pipinstallabdbeamSource and DocumentationThe source code is hosted on GitHub athttps://github.com/victorazzo/abdbeamand the documentation can be found athttps://docs.abdbeam.org.DependenciesNumPyPandasMatplotlibExampleLet's useAbdbeamto analyze the cross section with two closed cells below:Start creating the section materials, its points and segments (we'll also calculate the section properties and request a summary at the end):importabdbeamasabsc=ab.Section()# Create a materials dictionary:mts=dict()mts[1]=ab.Laminate()ply_mat=ab.PlyMaterial(0.166666,148000,9650,4550,0.3)mts[1].ply_materials[1]=ply_matmts[1].plies=[[0,1]]*6+[[45,1]]*6# Create a points dictionary based on Y and Z point coordinates:pts=dict()pts[1]=ab.Point(0,-35)pts[2]=ab.Point(-50,-35)pts[3]=ab.Point(-50,35)pts[4]=ab.Point(0,35)pts[5]=ab.Point(50,35)pts[6]=ab.Point(50,-35)# Create a segments dictionary referencing point and material ids:sgs=dict()sgs[1]=ab.Segment(1,2,1)sgs[2]=ab.Segment(2,3,1)sgs[3]=ab.Segment(3,4,1)sgs[4]=ab.Segment(4,1,1)sgs[5]=ab.Segment(4,5,1)sgs[6]=ab.Segment(5,6,1)sgs[7]=ab.Segment(6,1,1)# Point the dictionaries to the sectionsc.materials=mtssc.points=ptssc.segments=sgs# Calculate and output section propertiessc.calculate_properties()sc.summary()Which prints:SectionSummary===============Numberofpoints:6Numberofsegments:7Numberofcells:2Centroid
--------yc=-2.67780636e-01zc=0.00000000e+00

ShearCenter
------------ys=2.35301214e-03zs=-1.45758049e-03

ReplacementStiffnesses
-----------------------EA=6.80329523e+07EIyy=5.24834340e+10EIzz=8.36408748e+10EIyz=0.00000000e+00GJ=1.23762317e+10EImax=8.36408748e+10EImin=5.24834340e+10Angle=0.00000000e+00[P_c]-BeamStiffnessMatrixattheCentroid
---------------------------------------------[[6.80329523e+070.00000000e+002.46320132e+05-1.43701515e+08][0.00000000e+005.24834340e+100.00000000e+000.00000000e+00][2.46320132e+050.00000000e+008.36408748e+10-2.12142163e+07][-1.43701515e+080.00000000e+00-2.12142163e+071.23762317e+10]][W_c]-BeamComplianceMatrixattheCentroid
----------------------------------------------[[1.50683149e-080.00000000e+001.66286490e-281.74959530e-10][0.00000000e+001.90536313e-110.00000000e+000.00000000e+00][1.57282135e-250.00000000e+001.19558821e-112.04936911e-14][1.74959530e-100.00000000e+002.04936911e-148.28315446e-11]][P]-BeamStiffnessMatrixattheOrigin
-----------------------------------------[[6.80329523e+070.00000000e+00-1.79715871e+07-1.43701515e+08][0.00000000e+005.24834340e+100.00000000e+000.00000000e+00][-1.79715871e+070.00000000e+008.36456213e+101.72662667e+07][-1.43701515e+080.00000000e+001.72662667e+071.23762317e+10]][W]-BeamComplianceMatrixattheOrigin
------------------------------------------[[1.50691722e-080.00000000e+003.20155371e-121.74965018e-10][0.00000000e+001.90536313e-110.00000000e+000.00000000e+00][3.20155371e-120.00000000e+001.19558821e-112.04936911e-14][1.74965018e-100.00000000e+002.04936911e-148.28315446e-11]]Now let's create two load cases (101 and 102) and calculate their internal loads:sc.loads=dict()sc.loads[101]=ab.Load(My=5e6)sc.loads[102]=ab.Load(Tx=250000,Vz=5000.0)sc.calculate_internal_loads()Next print all internal loads (which outputs a lot of data we'll not show here):sc.print_internal_loads()Or access the Pandas dataframe containing these internal loads directly:df=sc.sgs_int_lds_dfNext plot the cross section and its properties (we'll show the segment orientations, hide legends, change the centroid , shear center and principal axis colors and use a custom figure size):ab.plot_section(sc,segment_coord=True,title='Abdbeam - Example',legend=False,prop_color='#471365',figsize=(5.12,3.84))Finally, plot Nx and Nxy for load case 101 (we'll change the matplotlib contour palette, reduce the internal load diagram scale, and use a custom figure size):ab.plot_section_loads(sc,101,contour_color='viridis',diagram_scale=0.7,int_load_list=['Nx','Nxy'],figsize=(5.12,3.84))LicenseBSD-3ContributeAbdbeamis at its early development stages and we encourage you to pitch in andcontribute on GitHub. Guidelines for contributors are in the works, so stay tuned.TheoryFor the theory behind Abdbeam, the most complete reference is:Victorazzo DS, De Jesus A. A KollÃ¡r and Pluzsik anisotropic composite beam theory for arbitrary multicelled cross sections. Journal of Reinforced Plastics and Composites. 2016 Dec;35(23):1696-711.These are also great references on its originating theory:KollÃ¡r LP, Springer GS. Mechanics of composite structures. Cambridge university press; 2003 Feb 17.KollÃ¡r LP and Pluzsik A. Analysis of thin-walled composite beams with arbitrary layup. J Reinf Plast Compos 2002; 21: 1423â€“1465.Note: the effects of shear deformation and restrained warping are assumed negligible inAbdbeam. Check the references above for more details.