pyNastranでop2を読む

以下、CQUAD4のFORCEを読むサンプルです。

from pyNastran.op2.op2 import OP2

op2 = OP2(debug = False)
op2.read_op2('test.op2')

vectors = getattr(op2, 'cquad4_force')

icase = 0
for subcase, vector in vectors.items():
    eids = getattr(vector, 'element', None)
    print(len(eids))
    forces = getattr(vector, 'data', None)
    print('SUBCASE', subcase)
    ielem = 0
    print('ID,FX,FY,FXY,MX,MY,MXY,QX,QY')
    for e in eids:
        print(e, end=' ')
        for val in forces[icase][ielem]:
            print(',', val, end=' ')
        print()
        ielem += 1
    icase += 1

pyNastranを試す

pyNastranはNastranの入出力ファイルにアクセスするパッケージです。GUIも備え、PatranやFEMAPを補完するソフトウェアとしても使用することができます。

pyNastranを使ってBDFにアクセスし、節点と要素の情報にアクセスするサンプルは以下です。

from pyNastran.bdf.bdf import BDF
model = BDF(debug=True)
model.read_bdf('work.nas')
print(model.get_bdf_stats())
for nid,node in sorted(model.nodes.items()):
    print('GRID', nid,node.xyz[0], node.xyz[1], node.xyz[2])
for eid,elem in sorted(model.elements.items()):
    print('ELEM', eid, elem.type, elem.Pid(), elem.Mid(), elem.Thickness(), end = ' ')
    for n in elem.node_ids:
        print(n, end = ' ')
    print()

Nastranを使うpythonistaなら知っていて損はないと思います。
pyNastraのサイトは以下です。
https://pynastran-git.readthedocs.io/en/latest/