Esempio n. 1
0
    def write_element_transient(self, element_name, nnodes, eids, dt, header, msg, f, is_mag_phase):
        dtLine = ' %14s = %12.5E\n' % (self.data_code['name'], dt)
        header[1] = dtLine
        msg = header + msg

        f.write('\n'.join(msg))
        for eid in eids:
            node_ids = self.exx[dt][eid].keys()
            node_ids.remove('CENTER')
            cid = 10
            f.write('0 %12i %11sGRID CS %2i GP\n' % (eid, 0, nnodes))
            for inode in ['CENTER'] + sorted(node_ids):
                # cid
                oxx = self.exx[dt][eid][inode]
                oyy = self.eyy[dt][eid][inode]
                ozz = self.ezz[dt][eid][inode]
                txy = self.exy[dt][eid][inode]
                tyz = self.eyz[dt][eid][inode]
                txz = self.exz[dt][eid][inode]
                ([oxxr, oyyr, ozzr, txyr, tyzr, txzr,
                  oxxi, oyyi, ozzi, txyi, tyzi, txzi,], is_all_zeros) = writeImagFloats13E([oxx, oyy, ozz,
                                                                                          txy, tyz, txz], is_mag_phase)

                f.write('0   %22s    %-13s  %-13s  %-13s    %-13s  %-13s  %s\n' % (inode, oxxr, oyyr, ozzr, txyr, tyzr, txzr))
                f.write('    %22s    %-13s  %-13s  %-13s    %-13s  %-13s  %s\n' % ('',    oxxi, oyyi, ozzi, txyi, tyzi, txzi))
Esempio n. 2
0
    def write_f06(self, header, pageStamp, page_num=1, f=None, is_mag_phase=False):
        msg = []
        #print self.data_code
        hasCycle = hasattr(self, 'mode_cycle')
        for i, (iMode, eigVals) in enumerate(sorted(iteritems(self.translations))):
            msg += header
            freq = self.eigrs[i]
            #freq = 0.0
            msg.append('%16s = %12E\n' % ('EIGENVALUE', freq))
            if hasCycle:
                msg.append('%16s = %12E          C O M P L E X   E I G E N V E C T O R   N O . %10i\n \n' % ('CYCLES', self.mode_cycle, iMode))
            else:
                msg.append('                                         C O M P L E X   E I G E N V E C T O R   N O . %10i\n \n' % (iMode))
            msg.append('      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3\n')
            for nodeID, displacement in sorted(iteritems(eigVals)):
                rotation = self.rotations[iMode][nodeID]
                grid_type = self.gridTypes[nodeID]
                (dx, dy, dz) = displacement
                (rx, ry, rz) = rotation

                vals = [dx, dy, dz, rx, ry, rz]
                (vals2, is_all_zeros) = writeImagFloats13E(vals, is_mag_phase)
                [dxr, dyr, dzr, rxr, ryr, rzr,
                 dxi, dyi, dzi, rxi, ryi, rzi] = vals2
                msg.append('%14i %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %s\n' % (nodeID, grid_type, dxr, dyr, dzr, rxr, ryr, rzr))
                msg.append('%14s %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %s\n' % ('', '', dxi, dyi, dzi, rxi, ryi, rzi))

            msg.append(pageStamp % page_num)
            f.write(''.join(msg))
            msg = ['']
            page_num += 1
        return page_num - 1
Esempio n. 3
0
    def write_f06(self, header, pageStamp, page_num=1, f=None, is_mag_phase=False):
        msg = []
        #print self.data_code
        hasCycle = hasattr(self, 'mode_cycle')
        for i, (iMode, eigVals) in enumerate(sorted(self.translations.iteritems())):
            msg += header
            freq = self.eigrs[i]
            #freq = 0.0
            msg.append('%16s = %12E\n' % ('EIGENVALUE', freq))
            if hasCycle:
                msg.append('%16s = %12E          C O M P L E X   E I G E N V E C T O R   N O . %10i\n \n' % ('CYCLES', self.mode_cycle, iMode))
            else:
                msg.append('                                         C O M P L E X   E I G E N V E C T O R   N O . %10i\n \n' % (iMode))
            msg.append('      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3\n')
            for nodeID, displacement in sorted(eigVals.iteritems()):
                rotation = self.rotations[iMode][nodeID]
                grid_type = self.gridTypes[nodeID]
                (dx, dy, dz) = displacement
                (rx, ry, rz) = rotation

                vals = [dx, dy, dz, rx, ry, rz]
                (vals2, is_all_zeros) = writeImagFloats13E(vals, is_mag_phase)
                [dxr, dyr, dzr, rxr, ryr, rzr,
                 dxi, dyi, dzi, rxi, ryi, rzi] = vals2
                msg.append('%14i %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %s\n' % (nodeID, grid_type, dxr, dyr, dzr, rxr, ryr, rzr))
                msg.append('%14s %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %s\n' % ('', '', dxi, dyi, dzi, rxi, ryi, rzi))

            msg.append(pageStamp % page_num)
            f.write(''.join(msg))
            msg = ['']
            page_num += 1
        return page_num - 1
Esempio n. 4
0
    def _write_f06_transient(self,
                             header,
                             pageStamp,
                             page_num=1,
                             f=None,
                             is_mag_phase=False):
        """
        .. todo:: improve formatting
        """
        words = [
            '                         C O M P L E X   F O R C E S   I N   S C A L A R   S P R I N G S   ( C E L A S 1 )\n',
            '                                                          (REAL/IMAGINARY)\n',
            ' \n',
            '                ELEMENT                                                   ELEMENT\n',
            '                  ID.                    FORCE                              ID.                    FORCE\n'
        ]
        #                   1001       1.537879E+01 /  0.0                            1002       1.537879E+01 /  0.0
        #                   1003       1.537879E+01 /  0.0                            1004       1.537879E+01 /  0.0
        #                   1005       1.537879E+01 /  0.0                            1006       1.537879E+01 /  0.0
        #                   1007       7.689395E+00 /  0.0                            1008       7.689395E+00 /  0.0
        #                   1009       7.689395E+00 /  0.0                            1010       7.689395E+00 /  0.0
        msg = []
        is_mag_phase = False
        for dt, Stress in sorted(iteritems(self.stress)):
            if isinstance(dt, float):  # fix
                header[1] = ' %s = %10.4E float %s\n' % (
                    self.data_code['name'], dt, self.analysis_code)
            else:
                header[1] = ' %s = %10i integer %s\n' % (
                    self.data_code['name'], dt, self.analysis_code)
            msg += header + words

            i = 0
            for elementID, stress in sorted(iteritems(Stress)):

                if is_mag_phase:
                    stressr = abs(stressr)
                    stressi = angle(stress, deg=True)
                else:
                    stressr = stress.real
                    stressi = stress.imag

                (vals2, is_all_zeros) = writeImagFloats13E([stress],
                                                           is_mag_phase)
                if i == 0:
                    elementID1 = elementID
                    [stress1Real, stress1Imag] = vals2
                if i == 1:
                    elementID2 = elementID
                    [stress2Real, stress2Imag] = vals2
                    msg.append('%14i %-13s / %-13s  %14i %-13s / %s\n' %
                               (elementID1, stress1Real, stress1Imag,
                                elementID2, stress2Real, stress2Imag))
                    i = -1
                i += 1
            msg.append(pageStamp % page_num)
            f.write(''.join(msg))
            msg = ['']
            page_num += 1
        return page_num - 1
Esempio n. 5
0
    def _write_f06_transient(self, header, pageStamp, page_num=1, f=None, is_mag_phase=False):
        words = [
            '                                 S T R E S S E S   I N   B A R   E L E M E N T S          ( C B A R )\n',
            '  ELEMENT        SA1            SA2            SA3            SA4           AXIAL          SA-MAX         SA-MIN     M.S.-T\n',
            '    ID.          SB1            SB2            SB3            SB4           STRESS         SB-MAX         SB-MIN     M.S.-C\n',
        ]
        msg = []
        for dt, S1s in sorted(iteritems(self.s1)):
            header[1] = ' %s = %10.4E\n' % (self.data_code['name'], dt)
            msg += header + words
            for eid, S1 in sorted(iteritems(S1s)):
                eType = self.eType[eid]
                axial = self.axial[dt][eid]
                s1 = self.s1[dt][eid]
                s2 = self.s2[dt][eid]
                s3 = self.s3[dt][eid]
                s4 = self.s4[dt][eid]
                vals = [s1[0], s2[0], s3[0], s4[0], axial,
                        s1[1], s2[1], s3[1], s4[1], ]
                (vals2, is_all_zeros) = writeImagFloats13E(vals, is_mag_phase)
                [s1ar, s2ar, s3ar, s4ar, axialr,
                 s1br, s2br, s3br, s4br,
                 s1ai, s2ai, s3ai, s4ai, axiali,
                 s1bi, s2bi, s3bi, s4bi, ] = vals2
                msg.append('0%8i   %-13s  %-13s  %-13s  %-13s  %s\n' % (eid, s1ar, s2ar, s3ar, s4ar, axialr))
                msg.append(' %8s   %-13s  %-13s  %-13s  %-13s  %s\n' % ('', s1ai, s2ai, s3ai, s4ai, axiali))

                msg.append(' %8s   %-13s  %-13s  %-13s  %s\n' % ('', s1br, s2br, s3br, s4br))
                msg.append(' %8s   %-13s  %-13s  %-13s  %s\n' % ('', s1bi, s2bi, s3bi, s4bi))

            msg.append(pageStamp % page_num)
            f.write(''.join(msg))
            msg = ['']
            page_num += 1
        return page_num - 1
Esempio n. 6
0
    def _write_f06_transient(self, header, pageStamp, pageNum=1, f=None, is_mag_phase=False):
        words = ['                         C O M P L E X   F O R C E S   O F   M U L T I   P O I N T   C O N S T R A I N T\n',
                 '                                                          (REAL/IMAGINARY)\n',
                 ' \n',
                 '      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3\n']
        msg = []
        for dt, translations in sorted(self.translations.items()):
            header[1] = ' %s = %10.4E\n' % (self.data_code['name'], dt)
            msg += header + words
            for nodeID, translation in sorted(translations.items()):
                rotation = self.rotations[dt][nodeID]
                gridType = self.gridTypes[nodeID]

                (dx, dy, dz) = translation
                (rx, ry, rz) = rotation

                vals = [dx, dy, dz, rx, ry, rz]
                (vals2, isAllZeros) = writeImagFloats13E(vals, is_mag_phase)
                if not isAllZeros:
                    [v1r, v2r, v3r, v4r, v5r, v6r, v1i,
                        v2i, v3i, v4i, v5i, v6i] = vals2
                    msg.append('0%13i %6s     %13s  %13s  %13s  %13s  %13s  %-s\n' % (nodeID, gridType, v1r, v2r, v3r, v4r, v5r, v6r.rstrip()))
                    msg.append(' %13i %6s     %13s  %13s  %13s  %13s  %13s  %-s\n' % (nodeID, gridType, v1i, v2i, v3i, v4i, v5i, v6i.rstrip()))

            msg.append(pageStamp + str(pageNum) + '\n')
            if f is not None:
                f.write(''.join(msg))
                msg = ['']
            pageNum += 1
        return (''.join(msg), pageNum - 1)
Esempio n. 7
0
    def _write_f06_block(self, words, header, pageStamp, page_num=1, f=None, is_mag_phase=False):
        raise RuntimeError('is this function used???')
        #words += self.getTableMarker()
        if is_mag_phase:
            words += ['                                                         (MAGNITUDE/PHASE)\n', ]
        else:
            words += ['                                                          (REAL/IMAGINARY)\n', ]

        words += [' \n', '      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3\n']

        msg = words
        for node_id, translation in sorted(self.translations.iteritems()):
            rotation = self.rotations[node_id]
            grid_type = self.gridTypes[node_id]

            (dx, dy, dz) = translation
            (rx, ry, rz) = rotation

            vals = [dx, dy, dz, rx, ry, rz]
            (vals2, is_all_zeros) = writeImagFloats13E(vals, is_mag_phase)
            [dxr, dyr, dzr, rxr, ryr, rzr,
             dxi, dyi, dzi, rxi, ryi, rzi] = vals2
            f.write('0 %12i %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %s\n'
                    '  %12s %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %s\n'
                      % (node_id, grid_type, dxr, dyr, dzr, rxr, ryr, rzr,
                                    '', '', dxi, dyi, dzi, rxi, ryi, rzi))

        f.write(pageStamp % page_num)
        msg = ['']
        return page_num
    def _write_f06_transient(self, header, pageStamp, pageNum=1, f=None, is_mag_phase=False):

        words = ['                             C O M P L E X   F O R C E S   I N   B A R   E L E M E N T S   ( C B A R )\n',
                 '                                                          (REAL/IMAGINARY)\n',
                 '0    ELEMENT         BEND-MOMENT END-A            BEND-MOMENT END-B                - SHEAR -               AXIAL\n',
                 '       ID.         PLANE 1       PLANE 2        PLANE 1       PLANE 2        PLANE 1       PLANE 2         FORCE         TORQUE\n']

        msg = []
        for dt, bendA in sorted(self.bendingMomentA.items()):
            header[1] = ' %s = %10.4E\n' % (self.data_code['name'], dt)
            msg += header + words
            for eid in sorted(bendA):
                bm1a, bm2a = self.bendingMomentA[dt][eid]
                bm1b, bm2b = self.bendingMomentB[dt][eid]
                ts1, ts2 = self.shear[dt][eid]
                af = self.axial[dt][eid]
                trq = self.torque[dt][eid]
                (vals2, isAllZeros) = writeImagFloats13E([bm1a, bm2a, bm1b, bm2b, ts1, ts2, af, trq], is_mag_phase)
                [bm1ar, bm2ar, bm1br, bm2br, ts1r, ts2r, afr, trqr,
                 bm1ai, bm2ai, bm1bi, bm2bi, ts1i, ts2i, afi, trqi] = vals2
                msg.append('     %8i    %13s %13s  %13s %13s  %13s %13s  %13s  %-s\n' % (eid, bm1ar, bm2ar, bm1br, bm2br, ts1r, ts2r, afr, trqr))
                msg.append('     %8s    %13s %13s  %13s %13s  %13s %13s  %13s  %-s\n' % ('', bm1ai, bm2ai, bm1bi, bm2bi, ts1i, ts2i, afi, trqi))
            msg.append(pageStamp + str(pageNum) + '\n')
            if f is not None:
                f.write(''.join(msg))
                msg = ['']
            pageNum += 1
        return (''.join(msg), pageNum - 1)
Esempio n. 9
0
    def _write_f06_transient(self, header, page_stamp, page_num=1, f=None, is_mag_phase=False):
        assert f is not None
        words = ['                         C O M P L E X   F O R C E S   O F   M U L T I   P O I N T   C O N S T R A I N T\n',
                 '                                                          (REAL/IMAGINARY)\n',
                 ' \n',
                 '      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3\n']
        msg = []
        for dt, translations in sorted(iteritems(self.translations)):
            header[1] = ' %s = %10.4E\n' % (self.data_code['name'], dt)
            msg += header + words
            for nodeID, translation in sorted(iteritems(translations)):
                rotation = self.rotations[dt][nodeID]
                grid_type = self.gridTypes[nodeID]

                (dx, dy, dz) = translation
                (rx, ry, rz) = rotation

                vals = [dx, dy, dz, rx, ry, rz]
                (vals2, is_all_zeros) = writeImagFloats13E(vals, is_mag_phase)
                #if not is_all_zeros:
                [v1r, v2r, v3r, v4r, v5r, v6r, v1i,
                    v2i, v3i, v4i, v5i, v6i] = vals2
                msg.append('0%13i %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %s\n' % (nodeID, grid_type, v1r, v2r, v3r, v4r, v5r, v6r.rstrip()))
                msg.append(' %13i %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %s\n' % (nodeID, grid_type, v1i, v2i, v3i, v4i, v5i, v6i.rstrip()))

            msg.append(page_stamp % page_num)
            f.write(''.join(msg))
            page_num += 1
        return page_num - 1
Esempio n. 10
0
    def _write_f06_transient(self, header, pageStamp, page_num=1, f=None, is_mag_phase=False):
        words = [
            '                                 S T R E S S E S   I N   B A R   E L E M E N T S          ( C B A R )\n',
            '  ELEMENT        SA1            SA2            SA3            SA4           AXIAL          SA-MAX         SA-MIN     M.S.-T\n',
            '    ID.          SB1            SB2            SB3            SB4           STRESS         SB-MAX         SB-MIN     M.S.-C\n',
        ]
        msg = []
        for dt, S1s in sorted(self.s1.iteritems()):
            header[1] = ' %s = %10.4E\n' % (self.data_code['name'], dt)
            msg += header + words
            for eid, S1 in sorted(S1s.iteritems()):
                eType = self.eType[eid]
                axial = self.axial[dt][eid]
                s1 = self.s1[dt][eid]
                s2 = self.s2[dt][eid]
                s3 = self.s3[dt][eid]
                s4 = self.s4[dt][eid]
                vals = [s1[0], s2[0], s3[0], s4[0], axial,
                        s1[1], s2[1], s3[1], s4[1], ]
                (vals2, is_all_zeros) = writeImagFloats13E(vals, is_mag_phase)
                [s1ar, s2ar, s3ar, s4ar, axialr,
                 s1br, s2br, s3br, s4br,
                 s1ai, s2ai, s3ai, s4ai, axiali,
                 s1bi, s2bi, s3bi, s4bi, ] = vals2
                msg.append('0%8i   %-13s  %-13s  %-13s  %-13s  %s\n' % (eid, s1ar, s2ar, s3ar, s4ar, axialr))
                msg.append(' %8s   %-13s  %-13s  %-13s  %-13s  %s\n' % ('', s1ai, s2ai, s3ai, s4ai, axiali))

                msg.append(' %8s   %-13s  %-13s  %-13s  %s\n' % ('', s1br, s2br, s3br, s4br))
                msg.append(' %8s   %-13s  %-13s  %-13s  %s\n' % ('', s1bi, s2bi, s3bi, s4bi))

            msg.append(pageStamp % page_num)
            f.write(''.join(msg))
            msg = ['']
            page_num += 1
        return page_num - 1
Esempio n. 11
0
    def _write_f06_block(self, words, header, pageStamp, pageNum=1, f=None, is_mag_phase=False):
        #words += self.getTableMarker()
        if is_mag_phase:
            words += ['                                                         (MAGNITUDE/PHASE)\n', ]
        else:
            words += ['                                                          (REAL/IMAGINARY)\n', ]

        words += [' \n', '      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3\n']

        msg = words
        for nodeID, translation in sorted(self.translations.items()):
            rotation = self.rotations[nodeID]
            gridType = self.gridTypes[nodeID]

            (dx, dy, dz) = translation
            (rx, ry, rz) = rotation

            vals = [dx, dy, dz, rx, ry, rz]
            (vals2, isAllZeros) = writeImagFloats13E(vals)
            [dxr, dyr, dzr, rxr, ryr, rzr, dxi, dyi, dzi, rxi,
                ryi, rzi] = vals2
            msg.append('0 %12i %6s     %13s  %13s  %13s  %13s  %13s  %-s\n' % (nodeID, gridType, dxr, dyr, dzr, rxr, ryr, rzr.rstrip()))
            msg.append('  %12s %6s     %13s  %13s  %13s  %13s  %13s  %-s\n' %
                       ('', '', dxi, dyi, dzi, rxi, ryi, rzi.rstrip()))

        msg.append(pageStamp + str(pageNum) + '\n')
        if f is not None:
            f.write(''.join(msg))
            msg = ['']
        return (''.join(msg), pageNum)
Esempio n. 12
0
    def write_f06(self, header, pageStamp, page_num=1, f=None, is_mag_phase=False):
        raise NotImplementedError('CBUSH1D')
        if self.nonlinear_factor is not None:
            return self._write_f06_transient(header, pageStamp, page_num, f, is_mag_phase)

        msg = header + [
            '                                 S T R E S S E S   I N   B A R   E L E M E N T S          ( C B A R )\n',
            '  ELEMENT        SA1            SA2            SA3            SA4           AXIAL          SA-MAX         SA-MIN     M.S.-T\n',
            '    ID.          SB1            SB2            SB3            SB4           STRESS         SB-MAX         SB-MIN     M.S.-C\n',
        ]

        for eid, S1s in sorted(iteritems(self.s1)):
            eType = self.eType[eid]
            axial = self.axial[eid]
            s1 = self.s1[eid]
            s2 = self.s2[eid]
            s3 = self.s3[eid]
            s4 = self.s4[eid]

            vals = [s1[0], s2[0], s3[0], s4[0], axial,
                    s1[1], s2[1], s3[1], s4[1], ]
            (vals2, is_all_zeros) = writeImagFloats13E(vals, is_mag_phase)
            [s1ar, s2ar, s3ar, s4ar, axialr,
             s1br, s2br, s3br, s4br,
             s1ai, s2ai, s3ai, s4ai, axiali,
             s1bi, s2bi, s3bi, s4bi, ] = vals2
            msg.append('0%8i   %-13s  %-13s  %-13s  %-13s  %s\n' % (eid, s1ar, s2ar, s3ar, s4ar, axialr))
            msg.append(' %8s   %-13s  %-13s  %-13s  %-13s  %s\n' % ('', s1ai, s2ai, s3ai, s4ai, axiali))

            msg.append(' %8s   %-13s  %-13s  %-13s  %s\n' % ('', s1br, s2br, s3br, s4br))
            msg.append(' %8s   %-13s  %-13s  %-13s  %s\n' % ('', s1bi, s2bi, s3bi, s4bi))

        msg.append(pageStamp % page_num)
        f.write(''.join(msg))
        return page_num
Esempio n. 13
0
    def _write_f06_transient(self, header, pageStamp, page_num=1, f=None, is_mag_phase=False):
        words = ['                             C O M P L E X   F O R C E S   I N   B A R   E L E M E N T S   ( C B A R )\n',
                 '                                                          (REAL/IMAGINARY)\n',
                 '0    ELEMENT         BEND-MOMENT END-A            BEND-MOMENT END-B                - SHEAR -               AXIAL\n',
                 '       ID.         PLANE 1       PLANE 2        PLANE 1       PLANE 2        PLANE 1       PLANE 2         FORCE         TORQUE\n']

        msg = []
        for dt, bendA in sorted(self.bendingMomentA.iteritems()):
            header[1] = ' %s = %10.4E\n' % (self.data_code['name'], dt)
            msg += header + words
            for eid in sorted(bendA):
                bm1a, bm2a = self.bendingMomentA[dt][eid]
                bm1b, bm2b = self.bendingMomentB[dt][eid]
                ts1, ts2 = self.shear[dt][eid]
                af = self.axial[dt][eid]
                trq = self.torque[dt][eid]
                (vals2, is_all_zeros) = writeImagFloats13E([bm1a, bm2a, bm1b, bm2b, ts1, ts2, af, trq], is_mag_phase)
                [bm1ar, bm2ar, bm1br, bm2br, ts1r, ts2r, afr, trqr,
                 bm1ai, bm2ai, bm1bi, bm2bi, ts1i, ts2i, afi, trqi] = vals2
                msg.append('     %8i    %-13s %-13s  %-13s %-13s  %-13s %-13s  %-13s  %s\n' % (eid, bm1ar, bm2ar, bm1br, bm2br, ts1r, ts2r, afr, trqr))
                msg.append('     %8s    %-13s %-13s  %-13s %-13s  %-13s %-13s  %-13s  %s\n' % ('', bm1ai, bm2ai, bm1bi, bm2bi, ts1i, ts2i, afi, trqi))
            msg.append(pageStamp % page_num)
            f.write(''.join(msg))
            msg = ['']
            page_num += 1
        return page_num - 1
Esempio n. 14
0
    def _write_f06_quad4_bilinear_transient(self, dt, eid, n, is_mag_phase, cen):
        """
        CQUAD4 bilinear
        CQUAD8
        CTRIAR
        CTRIA6
        """
        msg = ''
        nids = sorted(self.exx[dt][eid].keys())
        for node_id in nids:
            for ilayer in range(len(self.exx[dt][eid][node_id])):
                fdr = self.fiberCurvature[eid][node_id][ilayer]
                exx = self.exx[dt][eid][node_id][ilayer]
                eyy = self.eyy[dt][eid][node_id][ilayer]
                exy = self.exy[dt][eid][node_id][ilayer]
                ([fdr, exxr, eyyr, exyr,
                  fdi, exxi, eyyi, exyi], is_all_zeros) = writeImagFloats13E([fdr, exx, eyy, exy], is_mag_phase)

                if node_id == 0 and ilayer == 0:
                    msg += '0  %8i %8s  %-13s   %-13s / %-13s   %-13s / %-13s   %-13s /   %s\n' % (eid, cen, fdr, exxr, exxi, eyyr, eyyi, exyr, exyi)
                elif ilayer == 0:
                    msg += '   %8s %8i  %-13s   %-13s / %-13s   %-13s / %-13s   %-13s /   %s\n' % ('', node_id, fdr, exxr, exxi, eyyr, eyyi, exyr, exyi)
                elif ilayer == 1:
                    msg += '   %8s %8s  %-13s   %-13s / %-13s   %-13s / %-13s   %-13s /   %s\n\n' % ('', '', fdr, exxr, exxi, eyyr, eyyi, exyr, exyi)
                else:
                    raise RuntimeError('Invalid option for cquad4')
        return msg
Esempio n. 15
0
    def _write_f06_quad4_bilinear_transient(self, f, itime, n, is_magnitude_phase, cen):
        """
        CQUAD4 bilinear
        CQUAD8
        CTRIAR
        CTRIA6
        """
        fds = self.fiberCurvature[:, 0]
        oxx = self.data[itime, :, 0]
        oyy = self.data[itime, :, 1]
        txy = self.data[itime, :, 2]

        eids = self.element_node[:, 0]
        nodes = self.element_node[:, 1]

        ilayer0 = True
        for eid, node, fd, doxx, doyy, dtxy in zip(eids, nodes, fds, oxx, oyy, txy):
            vals, is_all_zeros = writeFloats13E([fd])
            fdr = vals[0]
            ([oxxr, oyyr, txyr,
              oxxi, oyyi, txyi,], is_all_zeros) = writeImagFloats13E([doxx, doyy, dtxy], is_magnitude_phase)

            if node == 0 and ilayer0:
                f.write('0  %8i %8s  %-13s   %-13s / %-13s   %-13s / %-13s   %-13s / %s\n' % (eid, cen, fdr, oxxr, oxxi, oyyr, oyyi, txyr, txyi))
            elif ilayer0:    # TODO: assuming 2 layers?
                f.write('   %8s %8i  %-13s   %-13s / %-13s   %-13s / %-13s   %-13s / %s\n' % ('', node, fdr, oxxr, oxxi, oyyr, oyyi, txyr, txyi))
            else:
                f.write('   %8s %8s  %-13s   %-13s / %-13s   %-13s / %-13s   %-13s / %s\n\n' % ('', '', fdr, oxxr, oxxi, oyyr, oyyi, txyr, txyi))
            ilayer0 = not ilayer0
Esempio n. 16
0
    def write_f06(self, header, pageStamp, page_num=1, f=None, is_mag_phase=False):
        if self.nonlinear_factor is not None:
            return self._write_f06_transient(header, pageStamp, page_num, f, is_mag_phase)

        msg = header + [
            '                                 S T R E S S E S   I N   B A R   E L E M E N T S          ( C B A R )\n',
            '  ELEMENT        SA1            SA2            SA3            SA4           AXIAL          SA-MAX         SA-MIN     M.S.-T\n',
            '    ID.          SB1            SB2            SB3            SB4           STRESS         SB-MAX         SB-MIN     M.S.-C\n',
        ]

        for eid, S1s in sorted(self.s1.iteritems()):
            eType = self.eType[eid]
            axial = self.axial[eid]
            s1 = self.s1[eid]
            s2 = self.s2[eid]
            s3 = self.s3[eid]
            s4 = self.s4[eid]

            vals = [s1[0], s2[0], s3[0], s4[0], axial,
                    s1[1], s2[1], s3[1], s4[1], ]
            (vals2, is_all_zeros) = writeImagFloats13E(vals, is_mag_phase)
            [s1ar, s2ar, s3ar, s4ar, axialr,
             s1br, s2br, s3br, s4br,
             s1ai, s2ai, s3ai, s4ai, axiali,
             s1bi, s2bi, s3bi, s4bi, ] = vals2
            msg.append('0%8i   %-13s  %-13s  %-13s  %-13s  %s\n' % (eid, s1ar, s2ar, s3ar, s4ar, axialr))
            msg.append(' %8s   %-13s  %-13s  %-13s  %-13s  %s\n' % ('', s1ai, s2ai, s3ai, s4ai, axiali))

            msg.append(' %8s   %-13s  %-13s  %-13s  %s\n' % ('', s1br, s2br, s3br, s4br))
            msg.append(' %8s   %-13s  %-13s  %-13s  %s\n' % ('', s1bi, s2bi, s3bi, s4bi))

        msg.append(pageStamp % page_num)
        f.write(''.join(msg))
        return page_num
Esempio n. 17
0
    def _write_f06_transient_block(self,
                                   words,
                                   header,
                                   pageStamp,
                                   pageNum=1,
                                   f=None,
                                   is_mag_phase=False):
        if is_mag_phase:
            words += [
                '                                                         (MAGNITUDE/PHASE)\n',
            ]
        else:
            words += [
                '                                                          (REAL/IMAGINARY)\n',
            ]

        words += [
            ' \n',
            '      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3\n'
        ]
        #words += self.getTableMarker()

        msg = []
        #assert f is not None
        for dt, translations in sorted(self.translations.items()):
            #print "dt = ",dt
            #sys.stdout.flush()
            header[2] = ' %s = %10.4E\n' % (self.data_code['name'], dt)
            msg += header + words
            for nodeID, translation in sorted(translations.items()):
                rotation = self.rotations[dt][nodeID]
                gridType = self.gridTypes[nodeID]

                (dx, dy, dz) = translation
                (rx, ry, rz) = rotation

                vals = [dx, dy, dz, rx, ry, rz]
                (vals2, isAllZeros) = writeImagFloats13E(vals, is_mag_phase)
                [dxr, dyr, dzr, rxr, ryr, rzr, dxi, dyi, dzi, rxi, ryi,
                 rzi] = vals2
                if not isAllZeros:
                    msg.append(
                        '0 %12i %6s     %13s  %13s  %13s  %13s  %13s  %-s\n' %
                        (nodeID, gridType, dxr, dyr, dzr, rxr, ryr,
                         rzr.rstrip()))
                    msg.append(
                        '  %12s %6s     %13s  %13s  %13s  %13s  %13s  %-s\n' %
                        ('', '', dxi, dyi, dzi, rxi, ryi, rzi.rstrip()))

            msg.append(pageStamp + str(pageNum) + '\n')
            if f is not None:
                f.write(''.join(msg))
                msg = ['']
            pageNum += 1
        return (''.join(msg), pageNum - 1)
Esempio n. 18
0
    def _write_f06_transient(self, header, page_stamp, page_num=1, f=None, is_mag_phase=False, is_sort1=True):
        """
        .. todo:: improve formatting
        """
        words = [
            "                         C O M P L E X   F O R C E S   I N   S C A L A R   S P R I N G S   ( C E L A S 1 )\n",
            "                                                          (REAL/IMAGINARY)\n",
            " \n",
            "                ELEMENT                                                   ELEMENT\n",
            "                  ID.                    FORCE                              ID.                    FORCE\n",
        ]
        #                   1001       1.537879E+01 /  0.0                            1002       1.537879E+01 /  0.0
        #                   1003       1.537879E+01 /  0.0                            1004       1.537879E+01 /  0.0
        #                   1005       1.537879E+01 /  0.0                            1006       1.537879E+01 /  0.0
        #                   1007       7.689395E+00 /  0.0                            1008       7.689395E+00 /  0.0
        #                   1009       7.689395E+00 /  0.0                            1010       7.689395E+00 /  0.0
        msg = []
        is_mag_phase = False
        for dt, Stress in sorted(iteritems(self.stress)):
            if isinstance(dt, float):  # fix
                header[1] = " %s = %10.4E float %s\n" % (self.data_code["name"], dt, self.analysis_code)
            else:
                header[1] = " %s = %10i integer %s\n" % (self.data_code["name"], dt, self.analysis_code)
            msg += header + words

            i = 0
            for elementID, stress in sorted(iteritems(Stress)):

                if is_mag_phase:
                    stressr = abs(stress)
                    stressi = angle(stress, deg=True)
                else:
                    stressr = stress.real
                    stressi = stress.imag

                (vals2, is_all_zeros) = writeImagFloats13E([stress], is_mag_phase)
                if i == 0:
                    elementID1 = elementID
                    [stress1Real, stress1Imag] = vals2
                if i == 1:
                    elementID2 = elementID
                    [stress2Real, stress2Imag] = vals2
                    msg.append(
                        "%14i %-13s / %-13s  %14i %-13s / %s\n"
                        % (elementID1, stress1Real, stress1Imag, elementID2, stress2Real, stress2Imag)
                    )
                    i = -1
                i += 1
            msg.append(page_stamp % page_num)
            f.write("".join(msg))
            msg = [""]
            page_num += 1
        return page_num - 1
Esempio n. 19
0
    def _write_f06_transient_block(self,
                                   words,
                                   header,
                                   pageStamp,
                                   page_num=1,
                                   f=None,
                                   is_mag_phase=False):
        if is_mag_phase:
            words += [
                '                                                         (MAGNITUDE/PHASE)\n',
            ]
        else:
            words += [
                '                                                          (REAL/IMAGINARY)\n',
            ]

        words += [
            ' \n',
            '      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3\n'
        ]
        #words += self.getTableMarker()

        msg = []
        if not len(header) >= 3:
            header.append('')
        #assert f is not None
        for dt, translations in sorted(iteritems(self.translations)):
            header[2] = ' %s = %10.4E\n' % (self.data_code['name'], dt)
            msg += header + words
            for node_id, translation in sorted(iteritems(translations)):
                rotation = self.rotations[dt][node_id]
                grid_type = self.gridTypes[node_id]

                (dx, dy, dz) = translation
                (rx, ry, rz) = rotation

                vals = [dx, dy, dz, rx, ry, rz]
                (vals2, is_all_zeros) = writeImagFloats13E(vals, is_mag_phase)
                [dxr, dyr, dzr, rxr, ryr, rzr, dxi, dyi, dzi, rxi, ryi,
                 rzi] = vals2
                #if not is_all_zeros:
                msg.append(
                    '0 %12i %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %s\n' %
                    (node_id, grid_type, dxr, dyr, dzr, rxr, ryr, rzr))
                msg.append(
                    '  %12s %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %s\n' %
                    ('', '', dxi, dyi, dzi, rxi, ryi, rzi))

            msg.append(pageStamp % page_num)
            f.write(''.join(msg))
            msg = ['']
            page_num += 1
        return page_num - 1
    def _write_f06_transient(self, header, page_stamp, page_num=1, f=None, is_mag_phase=False):
        words = [
            "                             C O M P L E X   F O R C E S   I N   B A R   E L E M E N T S   ( C B A R )\n",
            "                                                          (REAL/IMAGINARY)\n",
            "0    ELEMENT         BEND-MOMENT END-A            BEND-MOMENT END-B                - SHEAR -               AXIAL\n",
            "       ID.         PLANE 1       PLANE 2        PLANE 1       PLANE 2        PLANE 1       PLANE 2         FORCE         TORQUE\n",
        ]

        msg = []
        for dt, bendA in sorted(iteritems(self.bendingMomentA)):
            header[1] = " %s = %10.4E\n" % (self.data_code["name"], dt)
            msg += header + words
            for eid in sorted(bendA):
                bm1a, bm2a = self.bendingMomentA[dt][eid]
                bm1b, bm2b = self.bendingMomentB[dt][eid]
                ts1, ts2 = self.shear[dt][eid]
                af = self.axial[dt][eid]
                trq = self.torque[dt][eid]
                (vals2, is_all_zeros) = writeImagFloats13E([bm1a, bm2a, bm1b, bm2b, ts1, ts2, af, trq], is_mag_phase)
                [
                    bm1ar,
                    bm2ar,
                    bm1br,
                    bm2br,
                    ts1r,
                    ts2r,
                    afr,
                    trqr,
                    bm1ai,
                    bm2ai,
                    bm1bi,
                    bm2bi,
                    ts1i,
                    ts2i,
                    afi,
                    trqi,
                ] = vals2
                msg.append(
                    "     %8i    %-13s %-13s  %-13s %-13s  %-13s %-13s  %-13s  %s\n"
                    % (eid, bm1ar, bm2ar, bm1br, bm2br, ts1r, ts2r, afr, trqr)
                )
                msg.append(
                    "     %8s    %-13s %-13s  %-13s %-13s  %-13s %-13s  %-13s  %s\n"
                    % ("", bm1ai, bm2ai, bm1bi, bm2bi, ts1i, ts2i, afi, trqi)
                )
            msg.append(page_stamp % page_num)
            f.write("".join(msg))
            msg = [""]
            page_num += 1
        return page_num - 1
Esempio n. 21
0
    def _write_f06_transient_block(self, words, header, page_stamp, page_num,
                                   f, is_mag_phase):
        if is_mag_phase:
            words += [
                '                                                         (MAGNITUDE/PHASE)\n',
            ]
        else:
            words += [
                '                                                          (REAL/IMAGINARY)\n',
            ]

        words += [
            ' \n',
            '      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3\n'
        ]
        #words += self.getTableMarker()

        if not len(header) >= 3:
            header.append('')
        for itime in range(self.ntimes):
            node = self.node_gridtype[:, 0]
            gridtype = self.node_gridtype[:, 1]
            t1 = self.data[itime, :, 0]
            t2 = self.data[itime, :, 1]
            t3 = self.data[itime, :, 2]
            r1 = self.data[itime, :, 3]
            r2 = self.data[itime, :, 4]
            r3 = self.data[itime, :, 5]

            dt = self._times[itime]
            header[2] = ' %s = %10.4E\n' % (self.data_code['name'], dt)
            f.write(''.join(header + words))
            for node_id, gridtypei, t1i, t2i, t3i, r1i, r2i, r3i in zip(
                    node, gridtype, t1, t2, t3, r1, r2, r3):
                sgridtype = self.recast_gridtype_as_string(gridtypei)
                vals = [t1i, t2i, t3i, r1i, r2i, r3i]
                (vals2, is_all_zeros) = writeImagFloats13E(vals, is_mag_phase)
                [dxr, dyr, dzr, rxr, ryr, rzr, dxi, dyi, dzi, rxi, ryi,
                 rzi] = vals2
                #if not is_all_zeros:
                f.write(
                    '0 %12i %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %-s\n'
                    '  %12s %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %-s\n' %
                    (node_id, sgridtype, dxr, dyr, dzr, rxr, ryr, rzr, '', '',
                     dxi, dyi, dzi, rxi, ryi, rzi))
            f.write(page_stamp % page_num)
            page_num += 1
        return page_num - 1
    def write_f06(self, header, page_stamp, page_num=1, f=None, is_mag_phase=False):
        if self.nonlinear_factor is not None:
            return self._write_f06_transient(header, page_stamp, page_num, f, is_mag_phase)
        msg = header + [
            "                             C O M P L E X   F O R C E S   I N   B A R   E L E M E N T S   ( C B A R )\n",
            "                                                          (REAL/IMAGINARY)\n",
            "0    ELEMENT         BEND-MOMENT END-A            BEND-MOMENT END-B                - SHEAR -               AXIAL\n",
            "       ID.         PLANE 1       PLANE 2        PLANE 1       PLANE 2        PLANE 1       PLANE 2         FORCE         TORQUE\n",
        ]

        for eid in sorted(self.bendingMomentA):
            bm1a, bm2a = self.bendingMomentA[eid]
            bm1b, bm2b = self.bendingMomentB[eid]
            ts1, ts2 = self.shear[eid]
            af = self.axial[eid]
            trq = self.torque[eid]
            (vals2, is_all_zeros) = writeImagFloats13E([bm1a, bm2a, bm1b, bm2b, ts1, ts2, af, trq], is_mag_phase)
            [
                bm1ar,
                bm2ar,
                bm1br,
                bm2br,
                ts1r,
                ts2r,
                afr,
                trqr,
                bm1ai,
                bm2ai,
                bm1bi,
                bm2bi,
                ts1i,
                ts2i,
                afi,
                trqi,
            ] = vals2
            msg.append(
                "     %8i    %-13s %-13s  %-13s %-13s  %-13s %-13s  %-13s  %s\n"
                % (eid, bm1ar, bm2ar, bm1br, bm2br, ts1r, ts2r, afr, trqr)
            )
            msg.append(
                "     %8s    %-13s %-13s  %-13s %-13s  %-13s %-13s  %-13s  %s\n"
                % ("", bm1ai, bm2ai, bm1bi, bm2bi, ts1i, ts2i, afi, trqi)
            )
        msg.append(page_stamp % page_num)
        f.write("".join(msg))
        return page_num
Esempio n. 23
0
    def write_f06(self, header, page_stamp, page_num=1, f=None, is_mag_phase=False, is_sort1=True):
        msg = []
        #print self.data_code
        hasCycle = hasattr(self, 'mode_cycle')
        assert len(self.eigis) == len(self.translations)
        for i, (iMode, eigVals) in enumerate(sorted(iteritems(self.translations))):
            msg += header
            eigr = self.eigrs[i]
            eigi = self.eigis[i]
            eigr = 0. if eigr == -0. else eigr
            eigi = 0. if eigi == -0. else eigi

            f.write(''.join(header))
            f.write('      %16s = %12E, %12E\n' % ('COMPLEX EIGENVALUE', eigr, eigi))
            if hasCycle:
                f.write('%16s = %12E          C O M P L E X   E I G E N V E C T O R   N O . %10i\n \n' % ('CYCLES', self.mode_cycle, iMode))
            else:
                # TODO: should there be an extra ' \n'???
                f.write('                                       C O M P L E X   E I G E N V E C T O R   NO. %10i\n' % (iMode))

            if is_mag_phase:
                f.write('                                                         (MAGNITUDE/PHASE)\n \n')
            else:
                f.write('                                                          (REAL/IMAGINARY)\n \n')
            f.write('      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3\n')
            for nodeID, displacement in sorted(iteritems(eigVals)):
                rotation = self.rotations[iMode][nodeID]
                grid_type = self.gridTypes[nodeID]
                (dx, dy, dz) = displacement
                (rx, ry, rz) = rotation

                vals = [dx, dy, dz, rx, ry, rz]
                (vals2, is_all_zeros) = writeImagFloats13E(vals, is_mag_phase)
                [dxr, dyr, dzr, rxr, ryr, rzr,
                 dxi, dyi, dzi, rxi, ryi, rzi] = vals2
                if grid_type == 'S':
                    f.write('0%13i %6s     %-13s\n' % (nodeID, grid_type, dxr))
                    f.write(' %13s %6s     %-13s\n' % ('', '', dxi))
                else:
                    f.write('0%13i %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %s\n' % (nodeID, grid_type, dxr, dyr, dzr, rxr, ryr, rzr))
                    f.write(' %13s %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %s\n' % ('', '', dxi, dyi, dzi, rxi, ryi, rzi))

            f.write(page_stamp % page_num)
            msg = ['']
            page_num += 1
        return page_num - 1
Esempio n. 24
0
    def _write_f06_tri3_transient(self, dt, eid, n, is_mag_phase):
        msg = ''
        nids = sorted(self.exx[dt][eid].keys())
        for node_id in nids:
            for ilayer in range(len(self.exx[dt][eid][node_id])):
                fdr = self.fiberCurvature[eid][node_id][ilayer]
                exx = self.exx[dt][eid][node_id][ilayer]
                eyy = self.eyy[dt][eid][node_id][ilayer]
                exy = self.exy[dt][eid][node_id][ilayer]

                ([fdr, exxr, eyyr, exyr,
                  fdi, exxi, eyyi, exyi], is_all_zeros) = writeImagFloats13E([fdr, exx, eyy, exy], is_mag_phase)
                if ilayer == 0:
                    msg += '0  %6i   %-13s     %-13s / %-13s     %-13s / %-13s     %-13s / %s\n' % (eid, fdr, exxr, exxi, eyyr, eyyi, exyr, exyi)
                else:
                    msg += '   %6s   %-13s     %-13s / %-13s     %-13s / %-13s     %-13s / %s\n' % ('', fdr, exxr, exxi, eyyr, eyyi, exyr, exyi)
        return msg
Esempio n. 25
0
    def _write_f06_block(self,
                         words,
                         header,
                         pageStamp,
                         pageNum=1,
                         f=None,
                         is_mag_phase=False):
        #words += self.getTableMarker()
        if is_mag_phase:
            words += [
                '                                                         (MAGNITUDE/PHASE)\n',
            ]
        else:
            words += [
                '                                                          (REAL/IMAGINARY)\n',
            ]

        words += [
            ' \n',
            '      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3\n'
        ]

        msg = words
        for nodeID, translation in sorted(self.translations.items()):
            rotation = self.rotations[nodeID]
            gridType = self.gridTypes[nodeID]

            (dx, dy, dz) = translation
            (rx, ry, rz) = rotation

            vals = [dx, dy, dz, rx, ry, rz]
            (vals2, isAllZeros) = writeImagFloats13E(vals)
            [dxr, dyr, dzr, rxr, ryr, rzr, dxi, dyi, dzi, rxi, ryi,
             rzi] = vals2
            msg.append(
                '0 %12i %6s     %13s  %13s  %13s  %13s  %13s  %-s\n' %
                (nodeID, gridType, dxr, dyr, dzr, rxr, ryr, rzr.rstrip()))
            msg.append('  %12s %6s     %13s  %13s  %13s  %13s  %13s  %-s\n' %
                       ('', '', dxi, dyi, dzi, rxi, ryi, rzi.rstrip()))

        msg.append(pageStamp + str(pageNum) + '\n')
        if f is not None:
            f.write(''.join(msg))
            msg = ['']
        return (''.join(msg), pageNum)
Esempio n. 26
0
    def write_f06(self, header, page_stamp, page_num=1, f=None, is_mag_phase=False, is_sort1=True):
        f.write('%s write_f06 not implemented...\n' % self.__class__.__name__)
        return page_num

        if self.nonlinear_factor is not None:
            return self._write_f06_transient(header, page_stamp, page_num, f, is_mag_phase, is_sort1=is_sort1)

        msg = header + [
            '                                  S T R A I N S    I N   B A R   E L E M E N T S          ( C B A R )\n',
            '  ELEMENT        SA1            SA2            SA3            SA4           AXIAL          SA-MAX         SA-MIN     M.S.-T\n',
            '    ID.          SB1            SB2            SB3            SB4           STRAIN         SB-MAX         SB-MIN     M.S.-C\n',
        ]
        for eid, E1s in sorted(iteritems(self.e1)):
            eType = self.eType[eid]
            axial = self.axial[eid]

            e1 = self.e1[eid]
            e2 = self.e2[eid]
            e3 = self.e3[eid]
            e4 = self.e4[eid]
            vals = [e1[0], e2[0], e3[0], e4[0], axial,
                    e1[1], e2[1], e3[1], e4[1]]
            #(vals2, is_all_zeros) = writeFloats13E(vals)
            #[e10, e20, e30, e40, axial,
             #e11, e21, e31, e41] = vals2

            #vals = (s1ai, s2ai, s3ai, s4ai, axiali,
                    #s2ai, s2bi, s2ci, s2di)
            (vals2, is_all_zeros) = writeImagFloats13E(vals, is_mag_phase)
            (s1ar, s2ar, s3ar, s4ar, axialr,
             s1br, s2br, s3br, s4br,
             s1ai, s2ai, s3ai, s4ai, axiali,
             s1bi, s2bi, s3bi, s4bi) = vals2

            msg.append('0%8i   %-13s  %-13s  %-13s  %-13s  %s\n' % (eid, s1ar, s2ar, s3ar, s4ar, axialr))
            msg.append(' %8s   %-13s  %-13s  %-13s  %-13s  %s\n' % ('', s1ai, s2ai, s3ai, s4ai, axiali))

            msg.append(' %8s   %-13s  %-13s  %-13s  %s\n' % ('', s1br, s2br, s3br, s4br))
            msg.append(' %8s   %-13s  %-13s  %-13s  %s\n' % ('', s1bi, s2bi, s3bi, s4bi))

            #msg.append('0%8i   %-13s  %-13s  %-13s  %-13s  %-13s  %-13s  %-13s %s\n' % (eid, e10, e20, e30, e40, axial))
            #msg.append(' %8s   %-13s  %-13s  %-13s  %-13s  %-13s  %-13s  %-13s %s\n' % ('', e11, e21, e31, e41))
        msg.append(page_stamp % page_num)
        f.write(''.join(msg))
        return page_num
Esempio n. 27
0
    def _write_f06_transient_block(self, words, header, page_stamp, page_num, f, is_mag_phase):
        if is_mag_phase:
            words += ['                                                         (MAGNITUDE/PHASE)\n', ]
        else:
            words += ['                                                          (REAL/IMAGINARY)\n', ]

        words += [' \n', '      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3\n']
        #words += self.getTableMarker()

        if not len(header) >= 3:
            header.append('')
        for itime in range(self.ntimes):
            node = self.node_gridtype[:, 0]
            gridtype = self.node_gridtype[:, 1]
            t1 = self.data[itime, :, 0]
            t2 = self.data[itime, :, 1]
            t3 = self.data[itime, :, 2]
            r1 = self.data[itime, :, 3]
            r2 = self.data[itime, :, 4]
            r3 = self.data[itime, :, 5]

            dt = self._times[itime]
            header[2] = ' %s = %10.4E\n' % (self.data_code['name'], dt)
            f.write(''.join(header + words))
            for node_id, gridtypei, t1i, t2i, t3i, r1i, r2i, r3i in zip(node, gridtype, t1, t2, t3, r1, r2, r3):
                sgridtype = self.recast_gridtype_as_string(gridtypei)
                vals = [t1i, t2i, t3i, r1i, r2i, r3i]
                (vals2, is_all_zeros) = writeImagFloats13E(vals, is_mag_phase)
                [dxr, dyr, dzr, rxr, ryr, rzr,
                 dxi, dyi, dzi, rxi, ryi, rzi] = vals2
                #if not is_all_zeros:
                if sgridtype == 'S':
                    f.write('0 %12i %6s     %-s\n'
                            '  %12s %6s     %-s\n' % (
                                node_id, sgridtype, dxr,
                                '', '', dxi))
                else:
                    f.write('0 %12i %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %-s\n'
                            '  %12s %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %-s\n' % (
                                node_id, sgridtype, dxr, dyr, dzr, rxr, ryr, rzr,
                                            '', '', dxi, dyi, dzi, rxi, ryi, rzi))
            f.write(page_stamp % page_num)
            page_num += 1
        return page_num - 1
Esempio n. 28
0
    def write_f06(self, header, page_stamp, page_num=1, f=None, is_mag_phase=False, is_sort1=True):
        msg_temp, nnodes = get_f06_header(self, is_mag_phase, is_sort1)

        # write the f06
        ntimes = self.data.shape[0]

        cid = 0
        for itime in range(ntimes):
            dt = self._times[itime]

            #print('eids=', eids)

            dt_line = ' %14s = %12.5E\n' % (self.data_code['name'], dt)
            header[1] = dt_line
            msg = header + msg_temp
            f.write('\n'.join(msg))

            # TODO: can I get this without a reshape?
            oxx = self.data[itime, :, 0]
            oyy = self.data[itime, :, 1]
            ozz = self.data[itime, :, 2]
            txy = self.data[itime, :, 3]
            tyz = self.data[itime, :, 4]
            txz = self.data[itime, :, 5]

            eids2 = self.element_node[:, 0]
            nodes = self.element_node[:, 1]

            # loop over all the elements and nodes
            for deid, node, doxx, doyy, dozz, dtxy, dtyz, dtxz in zip(eids2, nodes, oxx, oyy, ozz, txy, tyz, txz):
                # TODO: cid not supported
                ([oxxr, oyyr, ozzr, txyr, tyzr, txzr,
                  oxxi, oyyi, ozzi, txyi, tyzi, txzi,], is_all_zeros) = writeImagFloats13E([doxx, doyy, dozz,
                                                                                            dtxy, dtyz, dtxz], is_mag_phase)
                if node == 0:  # CENTER
                    f.write('0 %12i %11sGRID CS %2i GP\n' % (deid, cid, nnodes))
                    f.write('0   %22s    %-13s  %-13s  %-13s    %-13s  %-13s  %s\n' % ('CENTER', oxxr, oyyr, ozzr, txyr, tyzr, txzr))
                    f.write('    %22s    %-13s  %-13s  %-13s    %-13s  %-13s  %s\n' % ('', oxxi, oyyi, ozzi, txyi, tyzi, txzi))
                else:
                    f.write('0   %22s    %-13s  %-13s  %-13s    %-13s  %-13s  %s\n' % (node, oxxr, oyyr, ozzr, txyr, tyzr, txzr))
                    f.write('    %22s    %-13s  %-13s  %-13s    %-13s  %-13s  %s\n' % ('', oxxi, oyyi, ozzi, txyi, tyzi, txzi))
            f.write(page_stamp % page_num)
            page_num += 1
        return page_num - 1
Esempio n. 29
0
    def _write_f06_block(self,
                         words,
                         header,
                         pageStamp,
                         page_num=1,
                         f=None,
                         is_mag_phase=False):
        raise RuntimeError('is this function used???')
        #words += self.getTableMarker()
        if is_mag_phase:
            words += [
                '                                                         (MAGNITUDE/PHASE)\n',
            ]
        else:
            words += [
                '                                                          (REAL/IMAGINARY)\n',
            ]

        words += [
            ' \n',
            '      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3\n'
        ]

        msg = words
        for node_id, translation in sorted(iteritems(self.translations)):
            rotation = self.rotations[node_id]
            grid_type = self.gridTypes[node_id]

            (dx, dy, dz) = translation
            (rx, ry, rz) = rotation

            vals = [dx, dy, dz, rx, ry, rz]
            (vals2, is_all_zeros) = writeImagFloats13E(vals, is_mag_phase)
            [dxr, dyr, dzr, rxr, ryr, rzr, dxi, dyi, dzi, rxi, ryi,
             rzi] = vals2
            f.write('0 %12i %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %s\n'
                    '  %12s %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %s\n' %
                    (node_id, grid_type, dxr, dyr, dzr, rxr, ryr, rzr, '', '',
                     dxi, dyi, dzi, rxi, ryi, rzi))

        f.write(pageStamp % page_num)
        msg = ['']
        return page_num
Esempio n. 30
0
    def write_element_transient(self, element_name, nnodes, eids, dt, header,
                                msg, f, is_mag_phase):
        dtLine = ' %14s = %12.5E\n' % (self.data_code['name'], dt)
        header[1] = dtLine
        msg = header + msg

        f.write('\n'.join(msg))
        for eid in eids:
            node_ids = self.exx[dt][eid].keys()
            node_ids.remove('CENTER')
            cid = 10
            f.write('0 %12i %11sGRID CS %2i GP\n' % (eid, 0, nnodes))
            for inode in ['CENTER'] + sorted(node_ids):
                # cid
                oxx = self.exx[dt][eid][inode]
                oyy = self.eyy[dt][eid][inode]
                ozz = self.ezz[dt][eid][inode]
                txy = self.exy[dt][eid][inode]
                tyz = self.eyz[dt][eid][inode]
                txz = self.exz[dt][eid][inode]
                ([
                    oxxr,
                    oyyr,
                    ozzr,
                    txyr,
                    tyzr,
                    txzr,
                    oxxi,
                    oyyi,
                    ozzi,
                    txyi,
                    tyzi,
                    txzi,
                ], is_all_zeros) = writeImagFloats13E(
                    [oxx, oyy, ozz, txy, tyz, txz], is_mag_phase)

                f.write(
                    '0   %22s    %-13s  %-13s  %-13s    %-13s  %-13s  %s\n' %
                    (inode, oxxr, oyyr, ozzr, txyr, tyzr, txzr))
                f.write(
                    '    %22s    %-13s  %-13s  %-13s    %-13s  %-13s  %s\n' %
                    ('', oxxi, oyyi, ozzi, txyi, tyzi, txzi))
Esempio n. 31
0
    def _write_sort1_as_sort1(self, f, name, header, page_stamp, msg_temp, page_num,
                              is_mag_phase=False):
        ntimes = self.data.shape[0]
        for itime in range(ntimes):
            dt = self._times[itime]

            dt_line = ' %14s = %12.5E\n' % (name, dt)
            header[1] = dt_line
            msg = header + msg_temp
            f.write('\n'.join(msg))

            # TODO: can I get this without a reshape?
            sa1 = self.data[itime, :, 0]
            sa2 = self.data[itime, :, 1]
            sa3 = self.data[itime, :, 2]
            sa4 = self.data[itime, :, 3]
            axial = self.data[itime, :, 4]
            sb1 = self.data[itime, :, 5]
            sb2 = self.data[itime, :, 6]
            sb3 = self.data[itime, :, 7]
            sb4 = self.data[itime, :, 8]
            #[sa1, sa2, sa3, sa4, axial, sb1, sb2, sb3, sb4]

            eids = self.element
            for eid, s1ai, s2ai, s3ai, s4ai, axiali, s2ai, s2bi, s2ci, s2di in zip(eids, sa1, sa2, sa3, sa4, axial, sb1, sb2, sb3, sb4):
                vals = (s1ai, s2ai, s3ai, s4ai, axiali,
                        s2ai, s2bi, s2ci, s2di)
                (vals2, is_all_zeros) = writeImagFloats13E(vals, is_mag_phase)
                (s1ar, s2ar, s3ar, s4ar, axialr,
                 s1br, s2br, s3br, s4br,
                 s1ai, s2ai, s3ai, s4ai, axiali,
                 s1bi, s2bi, s3bi, s4bi) = vals2

                msg.append('0%8i   %-13s  %-13s  %-13s  %-13s  %s\n' % (eid, s1ar, s2ar, s3ar, s4ar, axialr))
                msg.append(' %8s   %-13s  %-13s  %-13s  %-13s  %s\n' % ('', s1ai, s2ai, s3ai, s4ai, axiali))

                msg.append(' %8s   %-13s  %-13s  %-13s  %s\n' % ('', s1br, s2br, s3br, s4br))
                msg.append(' %8s   %-13s  %-13s  %-13s  %s\n' % ('', s1bi, s2bi, s3bi, s4bi))
            f.write(page_stamp % page_num)
            page_num += 1
        return page_num
Esempio n. 32
0
    def _write_f06_transient(self, header, page_stamp, page_num=1, f=None, is_mag_phase=False):
        if self.element_type == 1:
            element_header = '                           C O M P L E X    S T R A I N S    I N   R O D   E L E M E N T S   ( C R O D )\n'
        elif self.element_type == 3:
            element_header = '                          C O M P L E X    S T R A I N S    I N   R O D   E L E M E N T S   ( C T U B E )\n'
        elif self.element_type == 10:
            element_header = '                         C O M P L E X    S T R A I N S    I N   R O D   E L E M E N T S   ( C O N R O D )\n'
        else:
            raise NotImplementedError('element_name=%r element_type=%s' % (self.element_name, self.element_type))

        if is_mag_phase:
            mag_phase = '                                                          (MAG/PHASE)\n'  # not tested
        else:
            mag_phase = '                                                          (REAL/IMAGINARY)\n'

        words = [element_header,
                    mag_phase,
                    ' \n',
                    '                 ELEMENT                             AXIAL                                         TORQUE\n',
                    '                   ID.                               FORCE\n',
                    '                       1                 -2.459512E+05 /  3.377728E+04                  0.0          /  0.0\n',]
        words = ['                                       S T R A I N S   I N   R O D   E L E M E N T S      ( C R O D )\n',
                 '       ELEMENT       AXIAL       SAFETY      TORSIONAL     SAFETY       ELEMENT       AXIAL       SAFETY      TORSIONAL     SAFETY\n',
                 '         ID.        STRAIN       MARGIN        STRAIN      MARGIN         ID.        STRAIN       MARGIN        STRAIN      MARGIN\n']
        msg = []
        for dt, axials in sorted(iteritems(self.axial)):
            dtLine = '%14s = %12.5E\n' % (self.data_code['name'], dt)
            header[2] = dtLine
            msg += header + words
            out = []
            for eid in sorted(axials):
                axial = self.axial[dt][eid]
                torsion = self.torsion[dt][eid]
                ([axialr, torsionr, axiali, torsioni], is_all_zeros) = writeImagFloats13E([axial, torsion], is_mag_phase)
                f.write('                %8i                 %-13s / %-13s                 %-13s / %s\n' % (eid, axialr, axiali, torsionr, torsioni))
            msg.append(page_stamp % page_num)
            page_num += 1
            f.write(''.join(msg))
        return page_num - 1
Esempio n. 33
0
    def write_f06(self, header, pageStamp, page_num=1, f=None, is_mag_phase=False):
        if self.nonlinear_factor is not None:
            return self._write_f06_transient(header, pageStamp, page_num, f, is_mag_phase)
        msg = header + ['                             C O M P L E X   F O R C E S   I N   B A R   E L E M E N T S   ( C B A R )\n',
                        '                                                          (REAL/IMAGINARY)\n',
                        '0    ELEMENT         BEND-MOMENT END-A            BEND-MOMENT END-B                - SHEAR -               AXIAL\n',
                        '       ID.         PLANE 1       PLANE 2        PLANE 1       PLANE 2        PLANE 1       PLANE 2         FORCE         TORQUE\n']

        for eid in sorted(self.bendingMomentA):
            bm1a, bm2a = self.bendingMomentA[eid]
            bm1b, bm2b = self.bendingMomentB[eid]
            ts1, ts2 = self.shear[eid]
            af = self.axial[eid]
            trq = self.torque[eid]
            (vals2, is_all_zeros) = writeImagFloats13E([bm1a, bm2a, bm1b, bm2b, ts1, ts2, af, trq], is_mag_phase)
            [bm1ar, bm2ar, bm1br, bm2br, ts1r, ts2r, afr, trqr,
             bm1ai, bm2ai, bm1bi, bm2bi, ts1i, ts2i, afi, trqi] = vals2
            msg.append('     %8i    %-13s %-13s  %-13s %-13s  %-13s %-13s  %-13s  %s\n' % (eid, bm1ar, bm2ar, bm1br, bm2br, ts1r, ts2r, afr, trqr))
            msg.append('     %8s    %-13s %-13s  %-13s %-13s  %-13s %-13s  %-13s  %s\n' % ('', bm1ai, bm2ai, bm1bi, bm2bi, ts1i, ts2i, afi, trqi))
        msg.append(pageStamp % page_num)
        f.write(''.join(msg))
        return page_num
Esempio n. 34
0
    def _write_f06_transient(self, header, pageStamp, pageNum=1, f=None, is_mag_phase=False):
        raise NotImplementedError('CBUSH1D')
        words = [
            '                                 S T R E S S E S   I N   B A R   E L E M E N T S          ( C B A R )\n',
            '  ELEMENT        SA1            SA2            SA3            SA4           AXIAL          SA-MAX         SA-MIN     M.S.-T\n',
            '    ID.          SB1            SB2            SB3            SB4           STRESS         SB-MAX         SB-MIN     M.S.-C\n',
        ]
        msg = []
        for dt, S1s in sorted(self.s1.items()):
            header[1] = ' %s = %10.4E\n' % (self.data_code['name'], dt)
            msg += header + words
            for eid, S1 in sorted(S1s.items()):
                eType = self.eType[eid]
                axial = self.axial[dt][eid]
                s1 = self.s1[dt][eid]
                s2 = self.s2[dt][eid]
                s3 = self.s3[dt][eid]
                s4 = self.s4[dt][eid]
                vals = [s1[0], s2[0], s3[0], s4[0], axial,
                        s1[1], s2[1], s3[1], s4[1], ]
                (vals2, isAllZeros) = writeImagFloats13E(vals, is_mag_phase)
                [s1ar, s2ar, s3ar, s4ar, axialr,
                 s1br, s2br, s3br, s4br,
                 s1ai, s2ai, s3ai, s4ai, axiali,
                 s1bi, s2bi, s3bi, s4bi, ] = vals2
                msg.append('0%8i   %13s  %13s  %13s  %13s  %-s\n' % (eid,
                                                                     s1ar, s2ar, s3ar, s4ar, axialr.rstrip()))
                msg.append(' %8s   %13s  %13s  %13s  %13s  %-s\n' % ('',
                                                                     s1ai, s2ai, s3ai, s4ai, axiali.rstrip()))

                msg.append(' %8s   %13s  %13s  %13s  %-s\n' %
                           ('', s1br, s2br, s3br, s4br.rstrip()))
                msg.append(' %8s   %13s  %13s  %13s  %-s\n' %
                           ('', s1bi, s2bi, s3bi, s4bi.rstrip()))

            msg.append(pageStamp + str(pageNum) + '\n')
            pageNum += 1
        return (''.join(msg), pageNum - 1)
Esempio n. 35
0
    def write_f06(self, header, pageStamp, pageNum=1, f=None, is_mag_phase=False):
        raise NotImplementedError('CBUSH1D')
        if self.nonlinear_factor is not None:
            return self._write_f06_transient(header, pageStamp, pageNum, f, is_mag_phase)

        msg = header + [
            '                                 S T R E S S E S   I N   B A R   E L E M E N T S          ( C B A R )\n',
            '  ELEMENT        SA1            SA2            SA3            SA4           AXIAL          SA-MAX         SA-MIN     M.S.-T\n',
            '    ID.          SB1            SB2            SB3            SB4           STRESS         SB-MAX         SB-MIN     M.S.-C\n',
        ]

        for eid, S1s in sorted(self.s1.items()):
            eType = self.eType[eid]
            axial = self.axial[eid]
            s1 = self.s1[eid]
            s2 = self.s2[eid]
            s3 = self.s3[eid]
            s4 = self.s4[eid]

            vals = [s1[0], s2[0], s3[0], s4[0], axial,
                    s1[1], s2[1], s3[1], s4[1], ]
            (vals2, isAllZeros) = writeImagFloats13E(vals, is_mag_phase)
            [s1ar, s2ar, s3ar, s4ar, axialr,
             s1br, s2br, s3br, s4br,
             s1ai, s2ai, s3ai, s4ai, axiali,
             s1bi, s2bi, s3bi, s4bi, ] = vals2
            msg.append('0%8i   %13s  %13s  %13s  %13s  %-s\n' %
                       (eid, s1ar, s2ar, s3ar, s4ar, axialr.rstrip()))
            msg.append(' %8s   %13s  %13s  %13s  %13s  %-s\n' %
                       ('', s1ai, s2ai, s3ai, s4ai, axiali.rstrip()))

            msg.append(' %8s   %13s  %13s  %13s  %-s\n' % (
                '', s1br, s2br, s3br, s4br.rstrip()))
            msg.append(' %8s   %13s  %13s  %13s  %-s\n' % (
                '', s1bi, s2bi, s3bi, s4bi.rstrip()))

        msg.append(pageStamp + str(pageNum) + '\n')
        return (''.join(msg), pageNum)
Esempio n. 36
0
    def _write_f06_transient_block(self, words, header, pageStamp, pageNum=1, f=None, is_mag_phase=False):
        if is_mag_phase:
            words += ['                                                         (MAGNITUDE/PHASE)\n', ]
        else:
            words += ['                                                          (REAL/IMAGINARY)\n', ]

        words += [' \n', '      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3\n']
        #words += self.getTableMarker()

        msg = []
        #assert f is not None
        for dt, translations in sorted(self.translations.items()):
            #print "dt = ",dt
            #sys.stdout.flush()
            header[2] = ' %s = %10.4E\n' % (self.data_code['name'], dt)
            msg += header + words
            for nodeID, translation in sorted(translations.items()):
                rotation = self.rotations[dt][nodeID]
                gridType = self.gridTypes[nodeID]

                (dx, dy, dz) = translation
                (rx, ry, rz) = rotation

                vals = [dx, dy, dz, rx, ry, rz]
                (vals2, isAllZeros) = writeImagFloats13E(vals, is_mag_phase)
                [dxr, dyr, dzr, rxr, ryr, rzr, dxi, dyi,
                    dzi, rxi, ryi, rzi] = vals2
                if not isAllZeros:
                    msg.append('0 %12i %6s     %13s  %13s  %13s  %13s  %13s  %-s\n' % (nodeID, gridType, dxr, dyr, dzr, rxr, ryr, rzr.rstrip()))
                    msg.append('  %12s %6s     %13s  %13s  %13s  %13s  %13s  %-s\n' % ('', '', dxi, dyi, dzi, rxi, ryi, rzi.rstrip()))

            msg.append(pageStamp + str(pageNum) + '\n')
            if f is not None:
                f.write(''.join(msg))
                msg = ['']
            pageNum += 1
        return (''.join(msg), pageNum - 1)
Esempio n. 37
0
    def _write_f06_transient(self, header, page_stamp, page_num=1, f=None, is_mag_phase=False, is_sort1=True):
        words = [
            '                                  S T R A I N S    I N   B A R   E L E M E N T S           ( C B A R )\n',
            '  ELEMENT        SA1            SA2            SA3            SA4           AXIAL          SA-MAX         SA-MIN     M.S.-T\n',
            '    ID.          SB1            SB2            SB3            SB4           STRAIN         SB-MAX         SB-MIN     M.S.-C\n',
        ]
        msg = []
        for dt, E1s in sorted(iteritems(self.e1)):
            header[1] = ' %s = %10.4E\n' % (self.data_code['name'], dt)
            msg += header + words
            for eid, e1s in sorted(iteritems(E1s)):
                eType = self.eType[eid]
                axial = self.axial[eid]

                e1 = self.e1[eid]
                e2 = self.e2[eid]
                e3 = self.e3[eid]
                e4 = self.e4[eid]
                vals = [e1[0], e2[0], e3[0], e4[0], axial,
                        e1[1], e2[1], e3[1], e4[1]]
                (vals2, is_all_zeros) = writeImagFloats13E(vals, is_mag_phase)
                (s1ar, s2ar, s3ar, s4ar, axialr,
                 s1br, s2br, s3br, s4br,
                 s1ai, s2ai, s3ai, s4ai, axiali,
                 s1bi, s2bi, s3bi, s4bi) = vals2

                msg.append('0%8i   %-13s  %-13s  %-13s  %-13s  %s\n' % (eid, s1ar, s2ar, s3ar, s4ar, axialr))
                msg.append(' %8s   %-13s  %-13s  %-13s  %-13s  %s\n' % ('', s1ai, s2ai, s3ai, s4ai, axiali))

                msg.append(' %8s   %-13s  %-13s  %-13s  %s\n' % ('', s1br, s2br, s3br, s4br))
                msg.append(' %8s   %-13s  %-13s  %-13s  %s\n' % ('', s1bi, s2bi, s3bi, s4bi))

            msg.append(page_stamp % page_num)
            f.write(''.join(msg))
            msg = ['']
            page_num += 1
        return page_num - 1
    def write_f06(self, header, pageStamp, pageNum=1, f=None, is_mag_phase=False):
        if self.nonlinear_factor is not None:
            return self._write_f06_transient(header, pageStamp, pageNum, f, is_mag_phase)
        msg = header + ['                             C O M P L E X   F O R C E S   I N   B A R   E L E M E N T S   ( C B A R )\n',
                        '                                                          (REAL/IMAGINARY)\n',
                        '0    ELEMENT         BEND-MOMENT END-A            BEND-MOMENT END-B                - SHEAR -               AXIAL\n',
                        '       ID.         PLANE 1       PLANE 2        PLANE 1       PLANE 2        PLANE 1       PLANE 2         FORCE         TORQUE\n']

        for eid in sorted(self.bendingMomentA):
            bm1a, bm2a = self.bendingMomentA[eid]
            bm1b, bm2b = self.bendingMomentB[eid]
            ts1, ts2 = self.shear[eid]
            af = self.axial[eid]
            trq = self.torque[eid]
            (vals2, isAllZeros) = writeImagFloats13E([bm1a, bm2a, bm1b, bm2b, ts1, ts2, af, trq], is_mag_phase)
            [bm1ar, bm2ar, bm1br, bm2br, ts1r, ts2r, afr, trqr,
             bm1ai, bm2ai, bm1bi, bm2bi, ts1i, ts2i, afi, trqi] = vals2
            msg.append('     %8i    %13s %13s  %13s %13s  %13s %13s  %13s  %-s\n' % (eid, bm1ar, bm2ar, bm1br, bm2br, ts1r, ts2r, afr, trqr))
            msg.append('     %8s    %13s %13s  %13s %13s  %13s %13s  %13s  %-s\n' % ('', bm1ai, bm2ai, bm1bi, bm2bi, ts1i, ts2i, afi, trqi))
        msg.append(pageStamp + str(pageNum) + '\n')
        if f is not None:
            f.write(''.join(msg))
            msg = ['']
        return (''.join(msg), pageNum)
Esempio n. 39
0
    def _write_f06_transient_block(self, words, header, pageStamp, page_num=1, f=None, is_mag_phase=False):
        if is_mag_phase:
            words += ['                                                         (MAGNITUDE/PHASE)\n', ]
        else:
            words += ['                                                          (REAL/IMAGINARY)\n', ]

        words += [' \n', '      POINT ID.   TYPE          T1             T2             T3             R1             R2             R3\n']
        #words += self.getTableMarker()

        msg = []
        if not len(header) >= 3:
            header.append('')
        #assert f is not None
        for dt, translations in sorted(self.translations.iteritems()):
            header[2] = ' %s = %10.4E\n' % (self.data_code['name'], dt)
            msg += header + words
            for node_id, translation in sorted(translations.iteritems()):
                rotation = self.rotations[dt][node_id]
                grid_type = self.gridTypes[node_id]

                (dx, dy, dz) = translation
                (rx, ry, rz) = rotation

                vals = [dx, dy, dz, rx, ry, rz]
                (vals2, is_all_zeros) = writeImagFloats13E(vals, is_mag_phase)
                [dxr, dyr, dzr, rxr, ryr, rzr, dxi, dyi,
                    dzi, rxi, ryi, rzi] = vals2
                #if not is_all_zeros:
                msg.append('0 %12i %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %s\n' % (node_id, grid_type, dxr, dyr, dzr, rxr, ryr, rzr))
                msg.append('  %12s %6s     %-13s  %-13s  %-13s  %-13s  %-13s  %s\n' % ('', '', dxi, dyi, dzi, rxi, ryi, rzi))

            msg.append(pageStamp % page_num)
            f.write(''.join(msg))
            msg = ['']
            page_num += 1
        return page_num - 1
Esempio n. 40
0
    def write_f06(self,
                  header,
                  pageStamp,
                  pageNum=1,
                  f=None,
                  is_mag_phase=False):
        if self.nonlinear_factor is not None:
            return self._write_f06_transient(header, pageStamp, pageNum, f,
                                             is_mag_phase)

        msg = header + [
            '                                 S T R E S S E S   I N   B A R   E L E M E N T S          ( C B A R )\n',
            '  ELEMENT        SA1            SA2            SA3            SA4           AXIAL          SA-MAX         SA-MIN     M.S.-T\n',
            '    ID.          SB1            SB2            SB3            SB4           STRESS         SB-MAX         SB-MIN     M.S.-C\n',
        ]

        for eid, S1s in sorted(self.s1.items()):
            eType = self.eType[eid]
            axial = self.axial[eid]
            s1 = self.s1[eid]
            s2 = self.s2[eid]
            s3 = self.s3[eid]
            s4 = self.s4[eid]

            vals = [
                s1[0],
                s2[0],
                s3[0],
                s4[0],
                axial,
                s1[1],
                s2[1],
                s3[1],
                s4[1],
            ]
            (vals2, isAllZeros) = writeImagFloats13E(vals, is_mag_phase)
            [
                s1ar,
                s2ar,
                s3ar,
                s4ar,
                axialr,
                s1br,
                s2br,
                s3br,
                s4br,
                s1ai,
                s2ai,
                s3ai,
                s4ai,
                axiali,
                s1bi,
                s2bi,
                s3bi,
                s4bi,
            ] = vals2
            msg.append('0%8i   %13s  %13s  %13s  %13s  %-s\n' %
                       (eid, s1ar, s2ar, s3ar, s4ar, axialr.rstrip()))
            msg.append(' %8s   %13s  %13s  %13s  %13s  %-s\n' %
                       ('', s1ai, s2ai, s3ai, s4ai, axiali.rstrip()))

            msg.append(' %8s   %13s  %13s  %13s  %-s\n' %
                       ('', s1br, s2br, s3br, s4br.rstrip()))
            msg.append(' %8s   %13s  %13s  %13s  %-s\n' %
                       ('', s1bi, s2bi, s3bi, s4bi.rstrip()))

        msg.append(pageStamp + str(pageNum) + '\n')
        return (''.join(msg), pageNum)
Esempio n. 41
0
    def write_f06(self, header, page_stamp, page_num=1, f=None, is_mag_phase=False):
        (msg_temp, nnodes) = self.get_f06_header(is_mag_phase)

        # write the f06
        (ntimes, ntotal, six) = self.data.shape
        for itime in range(ntimes):
            dt = self.times[itime]  ## TODO: rename this...

            #print('eids=', eids)

            dtLine = ' %14s = %12.5E\n' % (self.data_code['name'], dt)
            header[1] = dtLine
            msg = header + msg_temp
            f.write('\n'.join(msg))

            # we know all the CTETRA eids, so let's
            # get all the CTETRA indicies that we're going to write
            #ieids = ieids_map[Type]  # faster way...
            #ieids = self.eid_to_element_node_index(eids)

            #ieids = self.get_element_index(eids)
            #eid = self.element_node[:, 0]
            #grid = self.element_node[:, 1]
            #print('ieids=', ieids)
            #print('eid=', eid)
            #print('grid=', grid)
            #print('**', self.element_node[ieids, 0])
            #oxx, oyy, ozz, txy, tyz, txz = self.data[itime, ieids, :]
            #n = len(ieids)
            #print('itime=', itime)

            # TODO: can I get this without a reshape?
            oxx = self.data[itime, :, 0]
            oyy = self.data[itime, :, 1]
            ozz = self.data[itime, :, 2]
            txy = self.data[itime, :, 3]
            tyz = self.data[itime, :, 4]
            txz = self.data[itime, :, 5]

            eids2 = self.element_node[:, 0]
            nodes = self.element_node[:, 1]
            #print('eids2 =', eids2, eids2.shape)
            #print('nodes =', nodes, nodes.shape)
            #print('oxx =', oxx)
            # loop over all the elements and nodes
            for deid, node, doxx, doyy, dozz, dtxy, dtyz, dtxz in zip(eids2, nodes, oxx, oyy, ozz, txy, tyz, txz):
                #print("oxx =", oxx)
                #print("oxx.shape =", oxx.shape)

                # TODO: cid not supported
                ([oxxr, oyyr, ozzr, txyr, tyzr, txzr,
                  oxxi, oyyi, ozzi, txyi, tyzi, txzi,], is_all_zeros) = writeImagFloats13E([doxx, doyy, dozz,
                                                                                          dtxy, dtyz, dtxz], is_mag_phase)
                #print("node =", node)
                if node == 0:  # CENTER
                    f.write('0 %12i %11sGRID CS %2i GP\n' % (deid, 0, nnodes))
                    f.write('0   %22s    %-13s  %-13s  %-13s    %-13s  %-13s  %s\n' % ('CENTER', oxxr, oyyr, ozzr, txyr, tyzr, txzr))
                    f.write('    %22s    %-13s  %-13s  %-13s    %-13s  %-13s  %s\n' % ('',       oxxi, oyyi, ozzi, txyi, tyzi, txzi))
                else:
                    f.write('0   %22s    %-13s  %-13s  %-13s    %-13s  %-13s  %s\n' % (node, oxxr, oyyr, ozzr, txyr, tyzr, txzr))
                    f.write('    %22s    %-13s  %-13s  %-13s    %-13s  %-13s  %s\n' % ('',   oxxi, oyyi, ozzi, txyi, tyzi, txzi))
                    #self.element_types3[ielem]
            f.write(page_stamp % page_num)
            page_num += 1
        return page_num - 1
Esempio n. 42
0
    def _write_f06_transient(self,
                             header,
                             pageStamp,
                             pageNum=1,
                             f=None,
                             is_mag_phase=False):
        raise NotImplementedError('CBUSH1D')
        words = [
            '                                 S T R E S S E S   I N   B A R   E L E M E N T S          ( C B A R )\n',
            '  ELEMENT        SA1            SA2            SA3            SA4           AXIAL          SA-MAX         SA-MIN     M.S.-T\n',
            '    ID.          SB1            SB2            SB3            SB4           STRESS         SB-MAX         SB-MIN     M.S.-C\n',
        ]
        msg = []
        for dt, S1s in sorted(self.s1.items()):
            header[1] = ' %s = %10.4E\n' % (self.data_code['name'], dt)
            msg += header + words
            for eid, S1 in sorted(S1s.items()):
                eType = self.eType[eid]
                axial = self.axial[dt][eid]
                s1 = self.s1[dt][eid]
                s2 = self.s2[dt][eid]
                s3 = self.s3[dt][eid]
                s4 = self.s4[dt][eid]
                vals = [
                    s1[0],
                    s2[0],
                    s3[0],
                    s4[0],
                    axial,
                    s1[1],
                    s2[1],
                    s3[1],
                    s4[1],
                ]
                (vals2, isAllZeros) = writeImagFloats13E(vals, is_mag_phase)
                [
                    s1ar,
                    s2ar,
                    s3ar,
                    s4ar,
                    axialr,
                    s1br,
                    s2br,
                    s3br,
                    s4br,
                    s1ai,
                    s2ai,
                    s3ai,
                    s4ai,
                    axiali,
                    s1bi,
                    s2bi,
                    s3bi,
                    s4bi,
                ] = vals2
                msg.append('0%8i   %13s  %13s  %13s  %13s  %-s\n' %
                           (eid, s1ar, s2ar, s3ar, s4ar, axialr.rstrip()))
                msg.append(' %8s   %13s  %13s  %13s  %13s  %-s\n' %
                           ('', s1ai, s2ai, s3ai, s4ai, axiali.rstrip()))

                msg.append(' %8s   %13s  %13s  %13s  %-s\n' %
                           ('', s1br, s2br, s3br, s4br.rstrip()))
                msg.append(' %8s   %13s  %13s  %13s  %-s\n' %
                           ('', s1bi, s2bi, s3bi, s4bi.rstrip()))

            msg.append(pageStamp + str(pageNum) + '\n')
            pageNum += 1
        return (''.join(msg), pageNum - 1)
Esempio n. 43
0
    def write_f06(self,
                  header,
                  page_stamp,
                  page_num=1,
                  f=None,
                  is_mag_phase=False):
        (msg_temp, nnodes) = self.get_f06_header(is_mag_phase)

        # write the f06
        (ntimes, ntotal, six) = self.data.shape
        for itime in range(ntimes):
            dt = self.times[itime]  ## TODO: rename this...

            #print('eids=', eids)

            dtLine = ' %14s = %12.5E\n' % (self.data_code['name'], dt)
            header[1] = dtLine
            msg = header + msg_temp
            f.write('\n'.join(msg))

            # we know all the CTETRA eids, so let's
            # get all the CTETRA indicies that we're going to write
            #ieids = ieids_map[Type]  # faster way...
            #ieids = self.eid_to_element_node_index(eids)

            #ieids = self.get_element_index(eids)
            #eid = self.element_node[:, 0]
            #grid = self.element_node[:, 1]
            #print('ieids=', ieids)
            #print('eid=', eid)
            #print('grid=', grid)
            #print('**', self.element_node[ieids, 0])
            #oxx, oyy, ozz, txy, tyz, txz = self.data[itime, ieids, :]
            #n = len(ieids)
            #print('itime=', itime)

            # TODO: can I get this without a reshape?
            oxx = self.data[itime, :, 0]
            oyy = self.data[itime, :, 1]
            ozz = self.data[itime, :, 2]
            txy = self.data[itime, :, 3]
            tyz = self.data[itime, :, 4]
            txz = self.data[itime, :, 5]

            eids2 = self.element_node[:, 0]
            nodes = self.element_node[:, 1]
            #print('eids2 =', eids2, eids2.shape)
            #print('nodes =', nodes, nodes.shape)
            #print('oxx =', oxx)
            # loop over all the elements and nodes
            for deid, node, doxx, doyy, dozz, dtxy, dtyz, dtxz in zip(
                    eids2, nodes, oxx, oyy, ozz, txy, tyz, txz):
                #print("oxx =", oxx)
                #print("oxx.shape =", oxx.shape)

                # TODO: cid not supported
                ([
                    oxxr,
                    oyyr,
                    ozzr,
                    txyr,
                    tyzr,
                    txzr,
                    oxxi,
                    oyyi,
                    ozzi,
                    txyi,
                    tyzi,
                    txzi,
                ], is_all_zeros) = writeImagFloats13E(
                    [doxx, doyy, dozz, dtxy, dtyz, dtxz], is_mag_phase)
                #print("node =", node)
                if node == 0:  # CENTER
                    f.write('0 %12i %11sGRID CS %2i GP\n' % (deid, 0, nnodes))
                    f.write(
                        '0   %22s    %-13s  %-13s  %-13s    %-13s  %-13s  %s\n'
                        % ('CENTER', oxxr, oyyr, ozzr, txyr, tyzr, txzr))
                    f.write(
                        '    %22s    %-13s  %-13s  %-13s    %-13s  %-13s  %s\n'
                        % ('', oxxi, oyyi, ozzi, txyi, tyzi, txzi))
                else:
                    f.write(
                        '0   %22s    %-13s  %-13s  %-13s    %-13s  %-13s  %s\n'
                        % (node, oxxr, oyyr, ozzr, txyr, tyzr, txzr))
                    f.write(
                        '    %22s    %-13s  %-13s  %-13s    %-13s  %-13s  %s\n'
                        % ('', oxxi, oyyi, ozzi, txyi, tyzi, txzi))
                    #self.element_types3[ielem]
            f.write(page_stamp % page_num)
            page_num += 1
        return page_num - 1