def write_op2_header(model: OP2, op2_file, fop2_ascii, struct_3i: Struct, post: int=-1, endian: bytes=b'<'): """writes the op2 header""" is_nx = model.is_nx is_msc = model.is_msc #is_nasa95 = model.is_nasa95 is_optistruct = model.is_optistruct if model.date == (1, 1, 2000): # (7, 24, 2020) today = datetime.datetime.today() model.date = (today.month, today.day, today.year) if post == -1: #_write_markers(op2_file, op2_ascii, [3, 0, 7]) op2_file.write(struct_3i.pack(*[4, 3, 4,])) tape_code = b'NASTRAN FORT TAPE ID CODE - ' if is_nx: op2_file.write(pack(endian + b'7i 28s i', *[4, 1, 4, 4, 7, 4, 28, tape_code, 28])) nastran_version = b'NX8.5 ' elif is_msc or is_optistruct: day, month, year = model.date op2_file.write(pack(endian + b'9i 28s i', *[12, day, month, year - 2000, 12, 4, 7, 4, 28, tape_code, 28])) nastran_version = b'XXXXXXXX' else: raise NotImplementedError(model._nastran_format) op2_file.write(pack(endian + b'4i 8s i', *[4, 2, 4, #4, 2, 4, #4, 1, 4, #4, 8, 4, 8, nastran_version, 8])) op2_file.write(pack(endian + b'6i', *[4, -1, 4, 4, 0, 4,])) elif post == -2: _write_markers(op2_file, fop2_ascii, [2, 4]) else: raise RuntimeError(f'post = {post:d}; use -1 or -2')
def write_op2_header(obj: OP2, fop2, fop2_ascii, struct_3i, post: int = -1, endian: bytes = b'<'): """writes the op2 header""" is_nx = obj.is_nx if obj.date == (1, 1, 2000): # (7, 24, 2020) today = datetime.datetime.today() obj.date = (today.month, today.day, today.year) if post == -1: #_write_markers(op2, op2_ascii, [3, 0, 7]) fop2.write(struct_3i.pack(*[ 4, 3, 4, ])) tape_code = b'NASTRAN FORT TAPE ID CODE - ' if is_nx: fop2.write( pack(endian + b'7i 28s i', *[4, 1, 4, 4, 7, 4, 28, tape_code, 28])) nastran_version = b'NX8.5 ' else: day, month, year = obj.date fop2.write( pack( endian + b'9i 28s i', *[ 12, day, month, year - 2000, 12, 4, 7, 4, 28, tape_code, 28 ])) nastran_version = b'XXXXXXXX' fop2.write( pack( endian + b'4i 8s i', *[ 4, 2, 4, #4, 2, 4, #4, 1, 4, #4, 8, 4, 8, nastran_version, 8 ])) fop2.write(pack(endian + b'6i', *[ 4, -1, 4, 4, 0, 4, ])) elif post == -2: _write_markers(fop2, fop2_ascii, [2, 4]) else: raise RuntimeError('post = %r; use -1 or -2' % post)