Converting Latex stacking sequence into NASTRAN PCOMP

In this example we will convert the stacking sequences writed in Latex format into a PCOMP NASTRAN card.

The following laminates are taken from table 12 of article [1].

panel_10 = $[\pm45_{12}/90_4/0_2/(90_2/0_2)_5/(0_2/90_4)_2/0_4/90_2/0_2]s $

panel_11 = $ [\pm45_{15}/0_2/\pm45/0_4/(90_4/0_2)_3/90_2]s $

panel_12 = \([\pm45_{12}/(0_2/90_4)_2/0_2/90_2]s\)

panel_13 = \([\pm45_{12}/0_2/\pm45/0_4/(90_4/0_2)_2/90_2]s\)

panel_14 = \([\pm45_16/0_2/\pm45/0_2/(0_2/90_4)_4/0_2/90_2]s\)

panel_15 = \([\pm45_{11}/90_2/\pm45_2/90_2/±45/90_2/(90_2/0_2)3/(0_2/90_2/0_2)_6]s\)

panel_16 = \([\pm45_16/(90_2/\pm45)2/(90_4/0_2)_3/(90_2/02)_2/(0_2/90_2/0_2)_3]s\)

panel_17 = \([\pm45_{20}/0_2/\pm45/0_4/(90_4/0_2)_3/90_2]s\)

panel_18 = \([\pm45_{15}/0_4/(90_2/0_2)_2/90_4/0_2/90_2]s\)

Reference

[1] - Liu, B., Haftka, R. T., and Akgun, M. A., “Two-Level CompositeWing Structural Optimization Using Response Surface,” Structural and Multidisciplinary Optimization, Vol. 20, 2000, pp. 87–96. doi:10.1007/s001580050140

Coding

[7]:
from composipy.nastranapi import build_pcomp, build_sequence
[14]:
# Table 12 - Stacking sequences of upper skin panels for the adjusted design
# These stackings are writen in Latex raw format.
panel_10 = '[\pm45_{12}/90_4/0_2/(90_2/0_2)_5/(0_2/90_4)_2/0_4/90_2/0_2]s'
panel_11 = '[\pm45_{15}/0_2/\pm45/0_4/(90_4/0_2)_3/90_2]s'
panel_12 = '[\pm45_{12}/(0_2/90_4)_2/0_2/90_2]s'
panel_13 = '[\pm45_{12}/0_2/\pm45/0_4/(90_4/0_2)_2/90_2]s'
panel_14 = '[\pm45_16/0_2/\pm45/0_2/(0_2/90_4)_4/0_2/90_2]s'
panel_15 = '[\pm45_{11}/90_2/\pm45_2/90_2/\pm45/90_2/(90_2/0_2)3/(0_2/90_2/0_2)_6]s'
panel_16 = '[\pm45_16/(90_2/\pm45)2/(90_4/0_2)_3/(90_2/02)_2/(0_2/90_2/0_2)_3]s'
panel_17 = '[\pm45_{20}/0_2/\pm45/0_4/(90_4/0_2)_3/90_2]s'
panel_18 = '[\pm45_{15}/0_4/(90_2/0_2)_2/90_4/0_2/90_2]s'
[10]:
# We build a list with the Latex raw format (see build_sequence reference documentation)
seq_panel_10 = build_sequence(panel_10)
seq_panel_11 = build_sequence(panel_11)
seq_panel_12 = build_sequence(panel_12)
seq_panel_13 = build_sequence(panel_13)
seq_panel_14 = build_sequence(panel_14)
seq_panel_15 = build_sequence(panel_15)
seq_panel_16 = build_sequence(panel_16)
seq_panel_17 = build_sequence(panel_17)
seq_panel_18 = build_sequence(panel_18)
[11]:
# Finally, we build the PCOMP NASTRAN cards. See the build_pcomp documentation for full information
# build_pcomp function allows the user to build costum PCOMP cards.

midi = 1
ti = 0.127

pcomp_panel_10 = build_pcomp(seq_panel_10, midi, ti, pid=10)
pcomp_panel_11 = build_pcomp(seq_panel_11, midi, ti, pid=11)
pcomp_panel_12 = build_pcomp(seq_panel_12, midi, ti, pid=12)
pcomp_panel_13 = build_pcomp(seq_panel_13, midi, ti, pid=13)
pcomp_panel_14 = build_pcomp(seq_panel_14, midi, ti, pid=14)
pcomp_panel_15 = build_pcomp(seq_panel_15, midi, ti, pid=15)
pcomp_panel_16 = build_pcomp(seq_panel_16, midi, ti, pid=16)
pcomp_panel_17 = build_pcomp(seq_panel_17, midi, ti, pid=17)
pcomp_panel_18 = build_pcomp(seq_panel_18, midi, ti, pid=18)
[13]:
# Then just copy and past to a .bdf file.
# It really saves me a lot of time!!!

print(pcomp_panel_18)
PCOMP,18,,,,,,+
+,1,0.127,45.0,YES,1,0.127,-45.0,NO+
+,1,0.127,45.0,NO,1,0.127,-45.0,NO+
+,1,0.127,45.0,NO,1,0.127,-45.0,NO+
+,1,0.127,45.0,NO,1,0.127,-45.0,NO+
+,1,0.127,45.0,NO,1,0.127,-45.0,NO+
+,1,0.127,45.0,NO,1,0.127,-45.0,NO+
+,1,0.127,45.0,NO,1,0.127,-45.0,NO+
+,1,0.127,45.0,NO,1,0.127,0.0,NO+
+,1,0.127,0.0,NO,1,0.127,0.0,NO+
+,1,0.127,0.0,NO,1,0.127,90.0,NO+
+,1,0.127,90.0,NO,1,0.127,0.0,NO+
+,1,0.127,0.0,NO,1,0.127,90.0,NO+
+,1,0.127,90.0,NO,1,0.127,0.0,NO+
+,1,0.127,0.0,NO,1,0.127,90.0,NO+
+,1,0.127,90.0,NO,1,0.127,90.0,NO+
+,1,0.127,90.0,NO,1,0.127,0.0,NO+
+,1,0.127,0.0,NO,1,0.127,90.0,NO+
+,1,0.127,90.0,NO,1,0.127,90.0,NO+
+,1,0.127,90.0,NO,1,0.127,0.0,NO+
+,1,0.127,0.0,NO,1,0.127,90.0,NO+
+,1,0.127,90.0,NO,1,0.127,90.0,NO+
+,1,0.127,90.0,NO,1,0.127,0.0,NO+
+,1,0.127,0.0,NO,1,0.127,90.0,NO+
+,1,0.127,90.0,NO,1,0.127,0.0,NO+
+,1,0.127,0.0,NO,1,0.127,90.0,NO+
+,1,0.127,90.0,NO,1,0.127,0.0,NO+
+,1,0.127,0.0,NO,1,0.127,0.0,NO+
+,1,0.127,0.0,NO,1,0.127,45.0,NO+
+,1,0.127,-45.0,NO,1,0.127,45.0,NO+
+,1,0.127,-45.0,NO,1,0.127,45.0,NO+
+,1,0.127,-45.0,NO,1,0.127,45.0,NO+
+,1,0.127,-45.0,NO,1,0.127,45.0,NO+
+,1,0.127,-45.0,NO,1,0.127,45.0,NO+
+,1,0.127,-45.0,NO,1,0.127,45.0,NO+
+,1,0.127,-45.0,NO,1,0.127,45.0,YES+

[ ]: