Hello Steven,
Wonderful, thank you so much! I just pip installed it from the source under the main branch and it works great - commenting out some trim tables that are giving me trouble skips them without a problem, and I'm able to read the OP2. Looking forward to the new release!
About the troublesome trim tables: this is probably low on your priority list but I'll leave it here either way: I believe OAEROHMD is being read with a slightly incorrect order, at least for Simcenter NASTRAN which is what I have access to. Please do correct me if I'm wrong (I'm a student and therefore quite new to pyNastran and for that matter NASTRAN in general) but OAEROHMD is throwing me an AssertionError here (lines 5322-5326 in op2_reader.py):
allowed = [
(1, 1),
(1, 0),
]
assert (one_a, one_b) in allowed, f'Allowed={allowed}; actual=({one_a:d} ,{one_b:d})'
And the outputs of the table are in the following order (lines 5307-5310 in op2_reader.py):
(acode, tcode, method_int, subcase_id,
point_device, mach, q, aerosg2d_bytes, numwide, symxy, symxz,
cs_name_bytes, one_a, one_b, *outi,
title, subtitle, subcase) = out
However, this is the OAEROHMD table from Simcenter's DMAP QRG:
So is it not the case that after symxy and symxz we expect the reference chord, span, and area would be there instead of cs_name_bytes, one_a, and one_b? It also does seem that some of the outputs to the log.debug that I'm seeing indicate that the order of outputs is slightly off. Additionally, later in the same file the following lines are present:
chord = 0.
span = 0.
sref = 0.
derivs = HingeMomentDerivatives(
mach, q, chord, span, sref,
cs_name, names, values, subcase=subcase_id,
title=title, subtitle=subtitle, label=label)
Overwriting the chord, span, and Sref.
Just wanted to check if this is on purpose, or perhaps due to an NX vs MSC NASTRAN issue. Either way, if I comment the table name in the mapping dictionary, table skipping works just fine so not a big issue.
Thank you once again for the awesome codebase!
Best,
David