Esempio n. 1
0
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')
Esempio n. 2
0
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)